Matrix est un réseau de discussion ouvert. Quand vous faites tourner votre propre homeserver Matrix, vos messages et vos comptes vivent sur votre serveur, et vous pouvez toujours échanger avec les personnes d’autres serveurs Matrix. Ce guide installe Synapse, le homeserver de référence, avec Docker et PostgreSQL derrière HTTPS.
Ce qu’il faut savoir d’abord
- Fédération. Votre serveur peut dialoguer avec les autres, ce qui signifie qu’il utilise de la bande passante et du disque pour stocker les salons que vous rejoignez. Les petits serveurs privés sont légers. Rejoindre de très grands salons publics ne l’est pas.
- Taille. 2 vCPU et 4 Go de RAM conviennent à un petit groupe. Voir l’hébergement de serveurs Matrix.
- Domaine. Il vous faut un domaine. Le nom du serveur (par exemple
example.com) fait partie de chaque identifiant d’utilisateur et ne peut pas être modifié par la suite.
Étape 1 : générer la configuration
mkdir -p ~/synapse && cd ~/synapse
docker run -it --rm -v $(pwd)/data:/data \
-e SYNAPSE_SERVER_NAME=example.com \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:latest generate
Étape 2 : passer à PostgreSQL
SQLite est la valeur par défaut, mais PostgreSQL est préférable pour tout ce qui dépasse un test. Modifiez data/homeserver.yaml et remplacez le bloc database :
database:
name: psycopg2
args:
user: synapse
password: CHANGE_ME
database: synapse
host: db
cp_min: 5
cp_max: 10
Étape 3 : fichier Compose
services:
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: CHANGE_ME
POSTGRES_DB: synapse
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
volumes:
- ./pgdata:/var/lib/postgresql/data
synapse:
image: matrixdotorg/synapse:latest
restart: unless-stopped
depends_on: [db]
ports:
- "127.0.0.1:8008:8008"
volumes:
- ./data:/data
docker compose up -d
docker compose logs -f synapse
Étape 4 : HTTPS et fédération
Servez Synapse sur matrix.example.com et publiez un fichier de délégation pour que le nom de votre serveur reste example.com :
matrix.example.com {
reverse_proxy 127.0.0.1:8008
}
example.com {
handle /.well-known/matrix/server {
header Content-Type application/json
respond `{"m.server": "matrix.example.com:443"}`
}
handle /.well-known/matrix/client {
header Content-Type application/json
header Access-Control-Allow-Origin *
respond `{"m.homeserver": {"base_url": "https://matrix.example.com"}}`
}
}
Testez la fédération avec le Matrix Federation Tester une fois le DNS actif.
Étape 5 : créer des utilisateurs et verrouiller les inscriptions
docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
Gardez enable_registration à false dans homeserver.yaml, sauf si vous voulez des inscriptions ouvertes.
Clients et précautions
Utilisez Element ou n’importe quel client Matrix et connectez-vous avec le nom de votre serveur. Sauvegardez le dossier data et les données Postgres, et gardez Synapse à jour. Lisez d’abord le durcissement du serveur.