Guide de déploiement

Héberger Matrix (Synapse) et Element sur votre propre VPS

Déployer sur un VPS Cloud →

Tutoriel

Héberger Matrix (Synapse) et Element sur votre propre VPS

Self-hosting9 min de lecture7 étapes

Matrix est le protocole de messagerie fédérée et chiffrée de bout en bout le plus abouti du logiciel libre. L'héberger sur votre VPS vous donne une messagerie à votre nom de domaine, capable de dialoguer avec le reste du réseau Matrix, et dont ni le contenu ni les métadonnées ne passent par un tiers. Voici un déploiement Docker complet — Synapse, PostgreSQL, Element Web et reverse proxy — avec le piège qu'il faut connaître avant de commencer : le nom de domaine est IMMUABLE.

Sommaire· Pourquoi héberger son propre serveur Matrix1/12
  1. 01Pourquoi héberger son propre serveur Matrix
  2. 02Ce que vous gagnez avec un Matrix auto-hébergé
  3. 03Element self-hosted vs. app.element.io : la différence concrète
  4. 04Le point à comprendre AVANT d'installer : le nom de domaine
  5. 05Prérequis matériels
  6. 06Déployer Matrix avec Docker, PostgreSQL et Element
  7. 07Administrer Synapse après l'installation
  8. 08Purge de l'historique et maîtrise de l'espace disque
  9. 09Bridges : connecter Matrix à Telegram, Signal et WhatsApp
  10. 10Matrix / Synapse vs. alternatives de messagerie self-hosted
  11. 11Fermez les inscriptions, et gardez-les fermées
  12. 12La documentation officielle

Pourquoi héberger son propre serveur Matrix

Les messageries d'équipe classiques — Slack, Teams, et même leurs alternatives auto-hébergées — partagent une limite : on n'y parle qu'entre membres du même serveur. Matrix renverse cela. C'est un protocole FÉDÉRÉ : votre serveur dialogue avec tous les autres serveurs Matrix du monde, exactement comme une adresse e-mail joint n'importe quel autre domaine. Vos utilisateurs gardent un identifiant à vous (@alice:votre-domaine.com) tout en discutant avec des interlocuteurs hébergés ailleurs. À cela s'ajoute le chiffrement de bout en bout, activable salon par salon : même vous, administrateur du serveur, ne pouvez pas lire le contenu d'un salon chiffré. C'est le point qui distingue Matrix d'une messagerie simplement auto-hébergée — la souveraineté ne repose pas sur la confiance envers l'hébergeur, mais sur la cryptographie.

Ce que vous gagnez avec un Matrix auto-hébergé

  • Fédération : vos utilisateurs joignent ceux de n'importe quel autre serveur Matrix, sans compte supplémentaire.
  • Chiffrement de bout en bout par salon, indépendant de la confiance envers l'hébergeur.
  • Identifiants à votre nom de domaine, qui deviennent une adresse durable.
  • Element Web self-hosted : l'interface reste sous votre contrôle, sans dépendance à app.element.io.
  • Applications officielles Element sur mobile, bureau et web — toutes pointées sur votre serveur.
  • Historique et fichiers stockés sur votre machine, sans limite de rétention imposée.
  • Passerelles possibles vers d'autres réseaux (Telegram, Signal, IRC, XMPP…) via des bridges.
  • Absence de collecte publicitaire ou de profilage : les métadonnées restent dans votre périmètre.

Element self-hosted vs. app.element.io : la différence concrète

Element Web est une application web open source — vous pouvez l'héberger sur votre propre domaine au lieu d'utiliser app.element.io. Ce choix est souvent négligé, mais il compte. Quand vos utilisateurs ouvrent app.element.io, leur navigateur charge du JavaScript depuis les serveurs d'Element HQ : cela n'affecte pas la confidentialité des messages (le chiffrement reste local), mais cela crée une dépendance externe.

Héberger Element Web vous-même — typiquement derrière chat.votre-domaine.com — supprime cette dépendance. Vous maîtrisez la version déployée, vous pouvez personnaliser config.json pour que l'interface soit pré-configurée sur votre homeserver, et vos utilisateurs n'ont qu'une seule URL à retenir.

Point d'attention : Element Web lit config.<domaine>.json AVANT config.json. Si votre configuration n'est pas servie correctement, l'interface s'affiche parfaitement — et connecte vos utilisateurs au serveur public au lieu du vôtre. Vérifiez que les deux fichiers répondent votre configuration avant d'inviter des utilisateurs.

Le point à comprendre AVANT d'installer : le nom de domaine

C'est la particularité de Matrix, et la source d'erreur la plus coûteuse. Le server_name de votre serveur — votre nom de domaine — n'est pas un réglage d'affichage : il est inscrit DANS l'identité de chaque objet que le serveur produit. Chaque identifiant d'utilisateur (@alice:votre-domaine.com), chaque identifiant de salon, chaque événement signé le contient. Le changer après coup ne se fait pas : il faut repartir d'un serveur vierge et recréer les comptes. Choisissez donc le sous-domaine définitif dès l'installation, et attachez-le au moment où vous installez l'application — pas après. Sur ServOrbit, l'installation refuse d'ailleurs volontairement de démarrer si aucun domaine n'est rattaché : mieux vaut un échec immédiat et clair qu'un serveur qu'il faudra refaire une fois les comptes créés.

Prérequis matériels

La pile complète — Synapse, PostgreSQL, Element Web et le reverse proxy — consomme environ 300 Mo au repos, mesure faite sur une installation neuve. Un VPS de 2 Go de RAM et 2 vCPU convient donc largement à une équipe, une association ou une famille.

La consommation dépend surtout des salons PUBLICS que vous rejoignez : Synapse conserve l'historique et l'état de chaque salon fédéré, et rejoindre quelques grands salons communautaires peut faire croître la base de plusieurs gigaoctets. Si c'est votre usage, visez 4 Go de RAM et surveillez l'espace disque.

PostgreSQL est indispensable — Synapse accepte SQLite, mais ne le recommande pas au-delà d'un serveur d'essai. Prévoir aussi un certificat TLS valide : sans HTTPS, la fédération et les applications mobiles refusent de se connecter.

Déployer Matrix avec Docker, PostgreSQL et Element

  1. Choisir et pointer le domaine

    Décidez du sous-domaine définitif (par exemple matrix.votre-domaine.com) et faites-le pointer vers votre VPS par un enregistrement A. C'est ce nom qui deviendra l'identité du serveur. Ajoutez un second sous-domaine pour Element Web si vous souhaitez l'héberger séparément (chat.votre-domaine.com). Les deux enregistrements A doivent être actifs avant de démarrer le conteneur.

  2. Générer la configuration et la clé de signature

    Le premier démarrage de l'image Synapse génère homeserver.yaml et surtout la CLÉ DE SIGNATURE du serveur, celle qui authentifie ses événements auprès des autres serveurs. Sauvegardez-la : la perdre revient à perdre l'identité du serveur sur le réseau fédéré. Conservez également homeserver.yaml dans votre système de sauvegarde — il contient les secrets partagés entre les composants.

  3. Basculer la base sur PostgreSQL

    L'image ne sait générer qu'une configuration SQLite. Ajoutez un fichier dans conf.d/ qui redéfinit le bloc database vers PostgreSQL — Synapse lit plusieurs --config-path et les clés répétées écrasent les précédentes. Créez la base avec un collationnement C : Synapse refuse de démarrer sur une base au collationnement différent, et ce choix ne se change pas après création.

  4. Placer un reverse proxy devant

    Servez Element Web à la racine de chat.votre-domaine.com et l'API Matrix sous /_matrix et /_synapse/client sur matrix.votre-domaine.com, derrière un seul certificat TLS par domaine. Relayez bien les en-têtes Upgrade et Connection : Matrix maintient des connexions longues (WebSocket), sans quoi le temps réel ne fonctionne pas. Augmentez aussi client_max_body_size à au moins 50 Mo pour les transferts de fichiers.

  5. Publier la délégation .well-known

    Exposez /.well-known/matrix/server et /.well-known/matrix/client sur votre domaine racine. C'est ce qui permet aux autres serveurs et aux applications mobiles de trouver votre homeserver sans configuration manuelle. Vérifiez ensuite sur federationtester.matrix.org : une fédération non vérifiée peut bloquer silencieusement les invitations vers l'extérieur.

  6. Configurer Element Web sur VOTRE serveur

    Créez un config.json qui pointe default_server_config vers votre homeserver. Element lit aussi config.<domaine>.json en priorité : servez les deux via votre reverse proxy. Testez en ouvrant l'interface dans un onglet privé — sans cookie ni session — et vérifiez que l'écran de connexion propose bien votre domaine par défaut, pas matrix.org.

  7. Créer le premier compte administrateur

    Synapse ne crée aucun compte tout seul et les inscriptions doivent rester fermées. Créez le compte administrateur avec register_new_matrix_user, puis connectez-vous sur https://chat.votre-domaine.com. Sur ServOrbit, ce compte admin est créé automatiquement au premier démarrage et son mot de passe généré est lisible dans votre espace client.

Administrer Synapse après l'installation

Synapse expose une API d'administration sous /_synapse/admin/v1 — réservée aux comptes marqués admin. Via cette API, vous pouvez désactiver un compte, purger l'historique d'un salon, forcer la déconnexion de tous les appareils d'un utilisateur ou consulter les statistiques de fédération.

Synapse Admin (interface web open source, déployable en conteneur séparé) repose sur cette même API et offre une vue graphique : liste des utilisateurs, salons, appareils enregistrés et taille de la base par salon. Pratique pour repérer un salon fédéré qui gonfle la base de plusieurs gigaoctets.

Pour les mises à jour, Synapse publie ses images sur ghcr.io/element-hq/synapse. Vérifiez les notes de release avant chaque mise à jour majeure : certaines migrations de base sont irréversibles, et Synapse documente explicitement les versions minimum requises pour passer d'une branche à l'autre.

Purge de l'historique et maîtrise de l'espace disque

Un serveur fédéré accumule l'historique de tous les salons rejoints — y compris les grands salons publics. Sans purge régulière, la base PostgreSQL peut atteindre plusieurs dizaines de gigaoctets en quelques mois.

Synapse propose deux leviers. La purge d'historique via l'API admin (POST /_synapse/admin/v1/purge_history) supprime les événements antérieurs à une date dans un salon donné — sans affecter les autres salons ni les messages que vous n'avez pas encore lus. La commande synapse_auto_compressor compresse ensuite les groupes de state_groups dans PostgreSQL, ce qui peut diviser la taille de la base par deux ou trois sur un serveur actif depuis plusieurs mois.

Activez aussi gc_thresholds dans homeserver.yaml pour piloter le garbage collector Python de Synapse : sur un serveur fédéré actif, le GC par défaut est rarement optimal pour la mémoire résidente.

Bridges : connecter Matrix à Telegram, Signal et WhatsApp

L'un des avantages distinctifs de Matrix est son écosystème de bridges — des services qui font le lien entre votre homeserver et d'autres réseaux. Matterbridge, Beeper ou les bridges officiels du projet Matrix permettent de relayer des messages entre un salon Matrix et un groupe Telegram, un canal Slack ou une conversation WhatsApp.

Chaque bridge se déploie comme un service supplémentaire (un conteneur supplémentaire dans votre compose.yml) et s'enregistre auprès de Synapse via un fichier registration.yaml. Le bridge reçoit une portion de l'espace des identifiants (@telegram_*:votre-domaine.com) et traduit les messages dans les deux sens.

Pour Telegram, mautrix-telegram est le bridge le plus maintenu. Pour Signal, mautrix-signal. Ces deux bridges exigent un compte sur le réseau cible — pas de lecture sans compte. WhatsApp et Meta Messenger passent par mautrix-meta, qui utilise l'API non officielle : son fonctionnement dépend des décisions de Meta et peut être interrompu.

Matrix / Synapse vs. alternatives de messagerie self-hosted

Faites défiler le tableau

CritèreMatrix + SynapseMattermostRocket.Chat
Fédération inter-serveursOui, natifNonNon
Chiffrement de bout en boutOui, par salonEn option (bêta)Non (transit en clair)
Bridges vers d'autres réseauxOui (Telegram, Signal, Slack…)Partiel (Slack)Partiel
Consommation RAM (repos)~300 Mo (pile complète)~400 Mo~500 Mo
Client web self-hostableElement Web (open source)Oui (inclus)Oui (inclus)
Clients mobilesElement iOS/AndroidNatifs iOS/AndroidNatifs iOS/Android

Fermez les inscriptions, et gardez-les fermées

Un serveur Matrix dont les inscriptions sont ouvertes est rapidement découvert et utilisé comme relais par des tiers : comptes de spam, salons indésirables, et une base qui gonfle sans que vous ayez rien demandé. Laissez enable_registration à false et créez les comptes à la main, ou passez par une authentification externe (SSO, OIDC). Si vous ouvrez les inscriptions, exigez au minimum une vérification par e-mail et activez registration_requires_token.

La documentation officielle

Pour la configuration avancée — workers, bridges, modules d'authentification, purge d'historique — référez-vous à la documentation officielle de Synapse. Ce guide couvre la mise en ligne sur VPS ; la doc amont reste la référence pour les réglages fins et les montées de version majeures.

Montez votre serveur Matrix sur un VPS Cloud ServOrbit

Un VPS Cloud avec Docker préconfigué, un domaine rattaché et le certificat TLS posé automatiquement : Synapse, PostgreSQL et Element Web se déploient en une étape. Vos conversations restent chez vous.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet