OffshoreVps
Tutoriels3 oct. 20267 min de lecturePar l’équipe OffshoreVps

Comment héberger un serveur Matrix (Synapse) sur un VPS

Faites tourner votre propre homeserver Matrix avec Synapse, PostgreSQL et Docker : configuration, HTTPS, délégation de fédération, utilisateurs et inscription.

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.

Fenêtre de terminal sur un VPS montrant les commandes utilisées pour héberger un serveur Matrix, à commencer par « mkdir -p ~/synapse && cd ~/synapse »
Le type de commandes que vous exécuterez sur votre serveur dans ce guide.

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
Les étapes de ce guide dans l’ordre : 1. Ce qu’il faut savoir d’abord ; 2. générer la configuration ; 3. passer à PostgreSQL ; 4. HTTPS et fédération ; 5. créer des utilisateurs et verrouiller les inscriptions ; 6. Clients et précautions
Les étapes de ce guide, dans l’ordre.

É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.