Choisir le protocole avant de louer le serveur
Une discussion récente sur Hacker News a rappelé une évidence que les administrateurs oublient : la difficulté d'une messagerie privée est d'abord sociale. Le serveur se monte en une soirée ; convaincre une famille, une association ou une équipe d'installer une autre application prend des semaines. Le choix du protocole décide pourtant de ce que vous allez maintenir pendant des années, du nombre d'enregistrements DNS, de ports et de certificats à comprendre, et de ce que vos proches verront sur leur téléphone. Trois familles se partagent l'usage privé : Matrix avec Synapse et Element, XMPP avec Snikket, et chatmail avec l'application Delta Chat. Elles ne résolvent pas le même problème.
Les sept critères qui décident
- Ressources serveur — ce que la pile consomme au repos, et ce qu'elle réclame quand la communauté grandit.
- Maintenance — le nombre de composants à mettre à jour, les sauvegardes à tester, les comptes à gérer.
- Domaine, DNS et TLS — les enregistrements à créer, les certificats, et ce qui se passe si le nom doit changer.
- Ports — ce qu'il faut ouvrir, et si le VPS peut partager les ports 80 et 443 avec un autre site.
- Fédération — parler à des personnes hébergées ailleurs, ou rester entre soi.
- Chiffrement — appliqué par défaut, ou à activer salon par salon.
- Applications mobiles et notifications — ce que vos proches installent, et si le téléphone sonne quand l'application est fermée.
Matrix : Synapse et Element, la pile polyvalente
Matrix est un protocole fédéré : votre serveur, Synapse, dialogue avec les autres serveurs Matrix, et les utilisateurs se connectent avec Element sur mobile, bureau ou navigateur. C'est le plus polyvalent des trois, avec des salons publics et privés, des équipes et des passerelles vers d'autres réseaux. Il en a le coût. Notre mesure sur une installation neuve donne environ 300 Mo au repos pour la pile complète (Synapse, PostgreSQL, Element et reverse proxy), et un VPS de 2 Go de RAM et 2 vCPU convient à une équipe, une association ou une famille. La documentation de Synapse recommande PostgreSQL pour tout serveur de production, réserve SQLite aux essais et conseille au moins 1 Go de RAM libre pour rejoindre de grands salons publics. Côté réseau, il faut un reverse proxy en HTTPS, le port 8448 pour la fédération (ou une délégation vers le 443) et un fichier .well-known pour que les applications trouvent le serveur. Le piège : le nom du serveur est définitif, car il est inscrit dans chaque identifiant d'utilisateur, et la documentation demande de le choisir avant d'installer. Pour l'installation pas à pas, notre guide « Héberger Matrix (Synapse) et Element sur votre propre VPS » détaille chaque étape.
Snikket : XMPP pensé pour un groupe de proches
Snikket est une distribution XMPP conçue pour les familles, les amis, les clubs et les petites organisations, sans numéro de téléphone ni carnet d'adresses à téléverser. Vous décidez qui entre en envoyant un lien d'invitation : le compte administrateur initial se crée depuis le serveur avec docker exec snikket create-invite --admin --group default, puis les invitations suivantes se gèrent depuis un tableau de bord web. Les prérequis documentés sont un Linux avec Docker (version 20.10.10 ou plus récente) et le plugin Compose, un domaine sur lequel créer des sous-domaines, un enregistrement A (AAAA facultatif) et deux CNAME, groups et share, vers le domaine principal. Le port 80 doit rester joignable, car Let's Encrypt y valide le domaine. La documentation ne donne pas de RAM minimale : plutôt que d'en inventer une, mesurez-la pendant un pilote. Snikket s'attend à être le seul serveur web de la machine. S'il partage le VPS avec un site, il faut déplacer ses ports HTTP et HTTPS (SNIKKET_TWEAK_HTTP_PORT et SNIKKET_TWEAK_HTTPS_PORT) et faire relayer le trafic web par votre proxy, sachant que XMPP, STUN et TURN ne passent pas par un proxy HTTP. Un VPS dédié évite cette gymnastique.
chatmail et Delta Chat : du courrier chiffré par défaut
chatmail n'est pas un nouveau protocole de messagerie instantanée : c'est un relais de courrier électronique réduit à l'essentiel, que l'application Delta Chat utilise comme messagerie. Le relais, bâti sur Postfix, Dovecot et OpenDKIM, refuse les messages non chiffrés, ne demande ni numéro de téléphone ni donnée privée, et ne garde les messages que le temps de les remettre ; les anciens messages et les boîtes inactives sont supprimés selon vos réglages. Les prérequis de la documentation sont un serveur Debian 12, 1 Go de RAM, un CPU et environ 10 Go de stockage pour quelques milliers d'adresses actives, un domaine, un enregistrement A (AAAA conseillé), des CNAME www et mta-sts, et les ports SMTP, SUBMISSIONS, IMAPS et HTTPS joignables. Le déploiement se pilote depuis un poste Linux ou Unix avec scripts/cmdeploy run, et scripts/cmdeploy dns vérifie les enregistrements. Comme la machine exécute elle-même un serveur de courrier, une VM dédiée est le choix prudent. Delta Chat est pensé pour des conversations et des groupes entre contacts, pas pour remplacer une plateforme d'équipe à salons et intégrations.
Matrix, Snikket et chatmail côte à côte
Faites défiler le tableau
| Matrix (Synapse + Element) | Snikket (XMPP) | chatmail + Delta Chat |
|---|---|---|
| Ressources : environ 300 Mo au repos (mesure ServOrbit), VPS 2 Go / 2 vCPU | Ressources : aucun minimum chiffré dans la documentation, à mesurer sur un pilote | Ressources : 1 Go de RAM, 1 CPU, environ 10 Go pour quelques milliers d'adresses actives (documentation) |
| Maintenance : plusieurs composants (Synapse, PostgreSQL, Element, proxy) et des montées de version à suivre | Maintenance : `docker compose pull` puis `docker compose up -d`, invitations gérées depuis le tableau de bord | Maintenance : mise à jour en rejouant `scripts/cmdeploy run` depuis le poste de déploiement, purge des boîtes inactives réglable |
| DNS et TLS : domaine définitif, enregistrement A, `.well-known`, certificat servi par le reverse proxy | DNS et TLS : A, CNAME `groups` et `share`, Let's Encrypt géré par Snikket avec le port 80 ouvert | DNS et TLS : A, AAAA conseillé, CNAME `www` et `mta-sts`, certificat valide avec chaîne complète |
| Ports : 443 derrière un proxy, 8448 pour la fédération sauf délégation | Ports : TCP 80, 443, 5222, 5269, 5000, 3478, 3479, 5349, 5350 et UDP 49152-65535 pour les appels | Ports : 25, 587, 465, 143, 993, 443 et 80, plus 3478 en UDP pour les appels |
| Fédération : oui, avec l'ensemble du réseau Matrix | Fédération : port 5269 pour le dialogue de serveur à serveur, mais l'usage visé reste le groupe fermé | Fédération : le relais échange du courrier avec d'autres relais, les messages non chiffrés sont bloqués |
| Chiffrement : de bout en bout, à activer salon par salon, irréversible une fois activé | Chiffrement : TLS vers le serveur ; le chiffrement de bout en bout se vérifie dans la documentation du client avant de le promettre | Chiffrement : OpenPGP obligatoire, aucun message en clair sur un relais chatmail par défaut |
| Applications : Element sur mobile, bureau et web, notifications à tester sur vos téléphones | Applications : appli Snikket (dont une version iOS) et Conversations, compatible, push iOS via le service Snikket | Applications : Delta Chat sur mobile et bureau, sans client web, push Apple et Google sans exposer le contenu |
Qui devrait choisir quoi
Une famille de huit personnes qui veut surtout échanger des photos et passer des appels : Snikket ou chatmail, parce que l'administration tient en un lien d'invitation. Snikket si vous voulez une application unique avec groupes et partage de fichiers ; chatmail si le critère est la confidentialité par défaut et l'absence de compte à créer. Une association avec des salons par commission, des invités extérieurs et des passerelles vers d'autres outils : Matrix, plus lourd mais plus polyvalent. Une petite équipe qui remplace Slack : Matrix, ou une messagerie d'équipe comme Mattermost ou Rocket.Chat, que compare notre article dédié. Dans tous les cas, le serveur n'est pas ce qui échoue : c'est l'adoption. Choisissez donc d'abord le protocole dont l'application plaît à la personne la plus réticente du groupe, puis dimensionnez le VPS.
Décider en sept étapes avant de louer le VPS
Compter et qualifier les utilisateurs
Notez combien de personnes, sur quels téléphones (iPhone, Android) et si des invités extérieurs devront rejoindre. Un groupe fermé de proches oriente vers Snikket ou chatmail ; des salons et des invités orientent vers Matrix.
Faire installer l'application avant le serveur
Installez Element, l'application Snikket et Delta Chat sur le téléphone de deux proches, dont le moins à l'aise avec la technique. Leur réaction pèse plus que n'importe quelle ligne du tableau.
Fixer le nom de domaine
Choisissez un sous-domaine définitif, par exemple
chat.votre-domaine.com. Pour Matrix, il est inscrit dans chaque identifiant et ne se change plus. Vérifiez qu'il pointe vers le futur serveur avecdig +short A chat.votre-domaine.com.Vérifier que les ports sont libres
Sur un serveur existant,
ss -tlnp | grep -E ':(25|80|443)\b'montre ce qui occupe déjà ces ports. Snikket et chatmail veulent 80 et 443 pour eux ; Matrix se place derrière un reverse proxy. Si les ports sont pris, prévoyez un VPS dédié.Dimensionner le VPS
Pour Matrix, partez de 2 Go de RAM et 2 vCPU. Pour chatmail, la documentation indique 1 Go et un CPU. Pour Snikket, partez de 2 Go et mesurez la consommation pendant le pilote avec
docker stats.Désigner qui maintient
Écrivez le nom de la personne qui applique les mises à jour et teste les sauvegardes. Si personne ne veut ce rôle, l'option administration VPS permet de le confier à un administrateur.
Lancer un pilote de deux semaines
Montez le serveur choisi avec trois à cinq personnes, puis comptez qui écrit encore à la fin. Snikket :
docker exec snikket create-invite --admin --group defaultcrée le compte administrateur. chatmail :scripts/cmdeploy dnsvérifie le DNS. Matrix : suivez le guide d'installation, puis passez le serveur à l'outil de test de fédération de matrix.org.
Adoption : les proches et les notifications
Un serveur impeccable que personne n'utilise ne sert à rien, et le critère décisif est ce que vos proches voient sur leur téléphone. Sur iPhone, Apple n'offre pas d'alternative pour la remise instantanée : Delta Chat active le push automatiquement pour les profils chatmail, et sa documentation précise que ni l'adresse IP, ni les données de profil, ni le contenu ne sont exposés à Apple ou Google. Sur Android, les notifications reposent sur un service de push disponible (FCM ou microG) ; à défaut, la remise peut être retardée. Snikket indique que sur iOS, le contenu des notifications est chiffré avec une clé connue de l'application et de votre serveur seulement. Avec Matrix, testez les notifications d'Element sur chaque modèle de téléphone avant de décider : nous n'en donnons aucune garantie ici. Deux autres frictions comptent : Snikket et Delta Chat ne demandent pas de numéro de téléphone, ce qui rassure certains proches, et Delta Chat n'a pas de client web, ce qui gêne ceux qui travaillent sur un poste partagé.
Durcissement : fermer l'inscription, n'ouvrir que le nécessaire
Quel que soit le choix, trois gestes. Fermez l'inscription libre : enable_registration: false sur Synapse, invitations seules sur Snikket, et touch /etc/chatmail-nocreate sur chatmail une fois le groupe constitué (les adresses existantes ne sont pas touchées). N'ouvrez dans le pare-feu du VPS que les ports de la pile choisie, plus SSH, par exemple ufw allow 5222/tcp pour la connexion des clients Snikket. Sauvegardez enfin ce qui ne se reconstruit pas : la clé de signature et la base PostgreSQL de Synapse, les volumes de Snikket, les boîtes de votre relais chatmail.
Dépannage : les erreurs qui reviennent
Les symptômes ci-dessous viennent des pages de dépannage officielles de chaque projet. Dans la plupart des cas, on commence par le DNS et les ports, avant de toucher à la configuration.
Symptômes, causes probables et remèdes
- Snikket : la page « Snikket is starting » ne disparaît pas — c'est en général un problème de certificat. Vérifiez les trois enregistrements DNS, le port 80 ouvert chez l'hébergeur et dans
ufw, puis lisez/var/log/letsencrypt/errors.logdans le conteneursnikket_certs. Évitez les relances en boucle : Let's Encrypt applique des limites strictes. - Snikket : tous les liens d'invitation apparaissent expirés — vérifiez que l'URL est complète, qu'aucun autre service n'utilise le port 5280 et que le reverse proxy relaie bien vers Snikket.
- Snikket : l'application signale que le serveur n'est pas responsable du domaine — un autre serveur XMPP occupe les ports de Snikket, ou d'anciens enregistrements SRV d'une installation précédente traînent. Attendez ensuite l'expiration des caches DNS.
- Snikket : les gros fichiers échouent — un reverse proxy limite la taille des envois, il doit accepter au moins 100 Mo. Au-delà, le transfert est direct d'appareil à appareil, entre deux personnes en ligne, et n'est pas pris en charge depuis ou vers iOS.
- Matrix :
M_UNKNOWNou401 Unauthorizeden fédération — selon la documentation de Synapse, les serveurs fédérés ne suivent pas les redirections HTTP 308 ; une redirection 301 règle le cas. Testez ensuite avec l'outil de fédération de matrix.org. - Matrix : les utilisateurs d'autres serveurs ne peuvent pas rejoindre vos salons — le port 8448 n'est pas joignable, la délégation est absente ou le reverse proxy est mal configuré. Reprenez le test de fédération avant de changer quoi que ce soit.
- chatmail : les messages n'arrivent pas — le composant de filtrage exige un certificat TLS valide avec sa chaîne complète. Lancez
scripts/cmdeploy dnspour contrôler les enregistrements, puis vérifiez que les ports 25, 465 et 993 sont joignables de l'extérieur. - chatmail :
cmdeployne se connecte pas en SSH — la clé du poste de déploiement doit être de type ed25519, protégée par une passphrase et chargée dans ssh-agent, avec un accès SSH à l'utilisateur root du serveur.
Quelle méthode retenir
Aucun des trois n'est le bon en soi : le bon est celui que vos proches ouvriront encore dans six mois. Pour un groupe fermé qui veut le moins d'administration possible, regardez Snikket ou chatmail ; pour des salons, des invités et des intégrations, Matrix. Matrix (Synapse) est l'application disponible comme template VPS sur ServOrbit : un environnement prêt à l'emploi sur un VPS, avec un domaine à rattacher. Snikket et chatmail se déploient sur un VPS Cloud classique, avec accès root et IPv4 dédiée ; la page VPS Cloud détaille les offres. Ces trois logiciels sont open source et vous les administrez vous-même : ServOrbit fournit le serveur, pas l'outil.