Pourquoi self-héberger Rocket.Chat sur un VPS
Rocket.Chat va plus loin qu'une simple messagerie d'équipe : il propose un module omnicanal (intégration de WhatsApp, e-mail, widgets de chat sur site web), des appels audio et vidéo, et une fédération via le protocole Matrix permettant de communiquer avec d'autres serveurs. Pour une agence qui veut centraliser à la fois la communication interne et le support client, l'auto-hébergement sur VPS évite de multiplier les abonnements et garde l'ensemble des échanges — y compris les conversations clients — sur une infrastructure que vous maîtrisez. Rocket.Chat s'appuie sur MongoDB, ce qui le rend un peu plus gourmand que Mattermost, mais ouvre la voie à de riches intégrations et à une marketplace d'extensions.
Bénéfices concrets d'un Rocket.Chat auto-hébergé
- Module omnicanal intégré pour traiter support web, e-mail et messageries depuis une seule interface.
- Appels audio/vidéo et partage d'écran sans dépendre d'un service tiers.
- Fédération Matrix pour interconnecter votre serveur avec d'autres organisations.
- Marketplace d'applications et large catalogue d'intégrations (webhooks, bots).
- Personnalisation poussée du thème et de l'image de marque de l'instance.
- Données de conversation et fichiers conservés sur votre propre VPS.
Prérequis matériels et logiciels
Rocket.Chat et MongoDB sont relativement exigeants en mémoire. Pour une équipe jusqu'à 50 utilisateurs, prévoyez un VPS de 2 à 4 vCPU et au moins 4 Go de RAM ; visez 8 Go pour une instance active avec omnicanal et appels vidéo. MongoDB doit impérativement tourner en mode replica set (même à un seul nœud) car Rocket.Chat utilise l'oplog pour le temps réel. Comptez 30 à 50 Go de SSD. Il vous faut Docker et Compose, un sous-domaine chat.votredomaine.ma avec enregistrement A, et un reverse proxy gérant les WebSockets.
Déployer Rocket.Chat avec Docker et SSL
Provisionner le VPS
Installez Docker et le plugin Compose, créez /opt/rocketchat. Vérifiez que la RAM disponible est suffisante : MongoDB et Rocket.Chat peuvent saturer un VPS 2 Go sous charge.
Configurer MongoDB en replica set
Déclarez un service mongodb (image bitnami/mongodb ou mongo) en activant le replica set : c'est obligatoire pour l'oplog. Sans cette étape, Rocket.Chat démarre mais le temps réel et certaines fonctions échouent. Persistez les données dans un volume dédié.
Définir le service Rocket.Chat
Ajoutez le service rocketchat (image registry.rocket.chat/rocketchat/rocket.chat) avec les variables MONGO_URL, MONGO_OPLOG_URL et ROOT_URL en HTTPS. Faites-le dépendre de MongoDB et exposez le port 3000 en interne uniquement.
Démarrer et vérifier
Lancez docker compose up -d puis docker compose logs -f rocketchat. Le premier démarrage migre le schéma MongoDB et peut prendre une à deux minutes. Attendez le message indiquant que le serveur est prêt sur le port 3000.
Mettre en place reverse proxy et SSL
Avec Caddy : chat.votredomaine.ma { reverse_proxy localhost:3000 }. Avec Nginx, proxifiez vers 127.0.0.1:3000 en transmettant les en-têtes Upgrade/Connection pour le WebSocket, puis générez le certificat via certbot.
Finaliser le setup admin
Ouvrez https://chat.votredomaine.ma, complétez l'assistant (compte admin, nom de l'organisation, configuration SMTP). Désactivez l'inscription publique si l'instance est privée et configurez le module omnicanal seulement si vous en avez besoin.
L'erreur la plus fréquente lors d'un déploiement Rocket.Chat est d'oublier d'initialiser le replica set MongoDB : sans rs.initiate(), l'oplog est indisponible et le chat en temps réel ne fonctionne pas. Si vous utilisez l'image Bitnami, passez MONGODB_REPLICA_SET_MODE=primary et MONGODB_REPLICA_SET_KEY. Surveillez aussi la RAM consommée par MongoDB via docker stats : sur un VPS contraint, plafonnez le cache WiredTiger avec --wiredTigerCacheSizeGB pour éviter que la base n'asphyxie le reste de la stack.
Rocket.Chat face à Mattermost
| Critère | Rocket.Chat | Mattermost |
|---|---|---|
| Base de données | MongoDB (replica set obligatoire) | PostgreSQL |
| Empreinte mémoire | Plus gourmand (MongoDB) | Plus sobre à charge égale |
| Omnicanal / support client | Module natif intégré | Via intégrations tierces |
| Appels audio/vidéo | Intégrés | Via plugins / Calls (édition payante) |
| Fédération | Matrix | Limitée |
| Marketplace d'apps | Riche et native | Plugins, catalogue plus restreint |
| Public cible | Communication + support client unifiés | Équipes techniques et ChatOps |
| Mise en place | Plus de paramétrage (replica set) | Plus directe avec PostgreSQL |