This repository is a multi-packages repository. See Modules for details.
ToM server enhances a Matrix Synapse server with several features:
- first, Tom is a Matrix Identity Server but with additional features:
- inside an organization, it adds some search APIs that allows to find internal users like do the mail clients, for autocompletion for example
- it extends also Matrix Identity Service search responses by adding inactive users
- it provide also an "application service" that allows administrator to create channels with automatic join
- it implements also the federated identity mechanism that extend the Matrix Identity Service to join Matrix identity services to provide a better search
Here is the architecture principle:
REST API Endpoints documentation is available on https://linagora.github.io/ToM-server/
npm run build
: build all packagesnpm run test
: test all packages
- @twake/matrix-identity-server: Matrix Identity Service implementation for Node.js
- @twake/matrix-client-server: Matrix Client-Server implementation for Node.js
- @twake/matrix-invite: matrix invitation web application
- @twake/server: the main Twake Chat Server, extends @twake/matrix-identity-server
- @twake/federated-identity-service: Twake Federated Identity Service
- @twake/config-parser: simple file parser that uses also environment variables
- @twake/crypto: cryptographic methods for Twake Chat
- @twake/logger: logger for Twake
- @twake/utils: utilitary methods for Twake Chat
- @twake/matrix-application-server: implements Matrix Application Service API
- matrix-resolve: resolve a Matrix "server name" into base URL following Matrix specification
- @twake/retry-promise: simple module extending javascript Promise with retry strategy
This repository provides different docker images. The main is Tom Server itself. Here are its environment variables:
- Required:
BASE_URL
: Public URL- Database:
DATABASE_ENGINE
(pg
orsqlite
)DATABASE_HOST
(path forsqlite
)DATABASE_NAME
DATABASE_USER
DATABASE_PASSWORD
DATABASE_SSL
OIDC_ISSUER
: URL of SSO server- LDAP service:
LDAP_BASE
LDAP_FILTER
LDAP_USER
LDAP_PASSWORD
LDAP_URI
- Matrix server:
SERVER_NAME
(same value than in Matrix's homeserver.yaml)MATRIX_SERVER
(real Matrix server)
TEMPLATE_DIR
(default:node_modules/@twake/server/templates
)
- Recommended:
ADDITIONAL_FEATURES
: set true to have all search features; false for a public instance- Cron service:
CRON_SERVICE
(default: true): enable cron tasksPEPPER_CRON
(default:9 1 * * *
)UPDATE_USERS_CRON
(default:*/15 * * * *
)UPDATE_FEDERATED_IDENTITY_HASHES_CRON
(default:3 3 * * *
)
- Logs:
LOG_TRANSPORTS
: set toConsole
LOG_LEVEL
: default to "error", possible values: "error", "warn", "info", "http", "verbose", "debug", "silly"
TRUSTED_PROXIES
: IP list of server allowed to setX-Frowarded-For
header- Rate limits (see express-rate-limit):
RATE_LIMITING_WINDOW
RATE_LIMITING_NB_REQUESTS
- Optional:
FEDERATED_IDENTITY_SERVICES
: list of federated identity services- Use a CrowdSec service:
CROWDSEC_URI
CROWDSEC_KEY
- Add Jitsi into metadata:
JITSI_BASE_URL
JITSI_JWT_ALGORITHM
JITSI_JWT_ISSUER
JITSI_SECRET
JITSI_PREFERRED_DOMAIN
JITSI_USE_JWT
- Matrix database (for automatic channels):
MATRIX_DATABASE_ENGINE
MATRIX_DATABASE_HOST
MATRIX_DATABASE_NAME
MATRIX_DATABASE_PASSWORD
MATRIX_DATABASE_SSL
MATRIX_DATABASE_USER
- Opensearch features:
OPENSEARCH_CA_CERT_PATH
OPENSEARCH_HOST
OPENSEARCH_IS_ACTIVATED
OPENSEARCH_MAX_RETRIES
OPENSEARCH_NUMBER_OF_SHARDS
OPENSEARCH_NUMBER_OF_REPLICAS
OPENSEARCH_PASSWORD
OPENSEARCH_SSL
OPENSEARCH_USER
OPENSEARCH_WAIT_FOR_ACTIVE_SHARDS
Copyright (c) 2023-present Linagora https://linagora.com
License: GNU AFFERO GENERAL PUBLIC LICENSE