Ce qui change dans Rocket.Chat 9.0
La version 8.8.0, publiée le 3 septembre 2026, fait encore tourner LDAP et SAML sur les instances Community — mais elle introduit des avertissements explicites dans l'administration : à partir de la version 9.0, ces deux modules exigeront un module de licence ldap-enterprise ou saml-enterprise. Les journaux système commencent dès maintenant à signaler les espaces de travail non licenciés qui authentifient leurs utilisateurs par ces méthodes.
> Source : [Notes de version 8.8.0 — GitHub Releases](https://github.com/RocketChat/Rocket.Chat/releases/tag/8.8.0) — le changelog cite explicitement ldap-enterprise et saml-enterprise dans la section *"Enterprise features"* de la mise à jour de plans.
Concrètement : si votre annuaire d'entreprise (Active Directory, OpenLDAP) ou votre fournisseur d'identité (Okta, Azure AD, Keycloak) est branché sur votre Rocket.Chat Community actuel, cette connexion cessera de fonctionner lors du passage en 9.0 sans souscription au plan Premium. Pour les équipes qui ont construit leur workflow sur cette authentification, la fenêtre de migration est ouverte.
Pourquoi Mattermost Community est une alternative solide
- LDAP et SAML inclus sans licence — Mattermost distribue l'authentification Active Directory et SAML dans son édition open source, sous licence MIT pour le serveur (Apache 2.0 pour les contributions), sans condition de plan payant.
- PostgreSQL natif — Mattermost s'appuie sur PostgreSQL, bien documenté, facile à sauvegarder avec
pg_dumpet plus courant que MongoDB dans les environnements Docker self-hosted. - mmetl, un outil officiel de migration — l'outil
mmetlde l'équipe Mattermost transforme unmongodumpde Rocket.Chat en fichier d'import JSONL compatible avecmmctl import, incluant canaux, utilisateurs et messages. - Empreinte mémoire plus basse — Mattermost peut démarrer avec 2 Go de RAM pour une équipe de moins de cinquante utilisateurs ; Rocket.Chat exige un replica set MongoDB qui consomme davantage à volume équivalent.
- Applications desktop et mobiles officielles — les clients iOS, Android, macOS et Windows pointent vers votre propre domaine dès l'installation.
- Historique complet, fichiers joints sans quota — aucune fenêtre glissante, aucune coupure à un volume de messages, tout est stocké sur votre disque ou votre bucket S3.
Prérequis chiffrés
> Changement de base de données : MongoDB → PostgreSQL. Rocket.Chat stocke ses données dans MongoDB ; Mattermost utilise PostgreSQL. mmetl se charge de la conversion — vous n'effectuez pas vous-même de migration de schéma. La base MongoDB existante n'est pas modifiée et reste disponible jusqu'à la validation complète de l'import Mattermost. Vous pouvez laisser votre Rocket.Chat en place en lecture seule pendant toute la phase de migration.
Avant de commencer, vérifiez que vous disposez des éléments suivants.
Pour le serveur Mattermost : un VPS avec 2 vCPU et 4 Go de RAM minimum — 2 Go suffisent techniquement pour Mattermost seul, mais PostgreSQL tourne sur le même hôte pendant la migration, ce qui rend 4 Go plus confortable. Prévoyez 40 Go de SSD minimum, davantage si votre Rocket.Chat historique contient des fichiers joints volumineux. Docker et Docker Compose doivent être installés. Une IPv4 dédiée et un sous-domaine chat.yourdomain.com avec enregistrement A sont nécessaires.
Pour la migration : un accès SSH à votre serveur Rocket.Chat existant, les outils mongodump installés sur ce serveur (ou depuis Docker), et mmetl v0.6.0 (publié le 11 septembre 2026) installé sur votre poste ou sur le nouveau VPS. Un certificat TLS valide pour le domaine cible (Let's Encrypt via Certbot ou Caddy).
Sauvegarder Rocket.Chat
Mettre Rocket.Chat en lecture seule
Avant toute sauvegarde, prévenez vos utilisateurs et passez l'instance en mode maintenance. Dans l'administration Rocket.Chat, allez dans Administration → Généralités → Mode maintenance et activez le mode lecture seule. Cela évite que des messages soient écrits après le dump et perdus à la bascule.
Alternativement, si vous ne disposez pas de ce mode, arrêtez simplement le conteneur Rocket.Chat :
docker compose stop rocketchatExporter la base MongoDB avec mongodump
mmetl attend un répertoire produit par
mongodump, pas un fichier compressé. Lancez le dump depuis l'hôte ou depuis l'intérieur du conteneur MongoDB :# depuis l'hôte, si mongodump est installé mongodump --uri="mongodb://localhost:27017/rocketchat" --out /tmp/rc-dump # ou depuis le conteneur Docker docker exec <mongo-container> mongodump \ --db rocketchat --out /dump docker cp <mongo-container>:/dump /tmp/rc-dumpVérifiez que
/tmp/rc-dump/rocketchat/contient bien des fichiers.bsonet.jsonpour les collectionsrocketchat_message,users,rocketchat_room, etc.Exporter les fichiers joints (uploads)
Les fichiers joints stockés dans GridFS ou dans le système de fichiers local ne font pas partie du dump MongoDB — ils doivent être copiés séparément.
Si vous utilisez le stockage local (option par défaut) :
docker cp <rocketchat-container>:/app/uploads /tmp/rc-uploadsSi vous utilisez un bucket S3 compatible, notez les paramètres de connexion — vous les reconfigurerez dans Mattermost. mmetl référence les fichiers joints mais ne les transfère pas : vous les pousserez manuellement ou via
mmctl importavec l'option--attachments-dir.Exporter les utilisateurs via l'API REST (optionnel)
Pour un inventaire des comptes avant migration, l'API Rocket.Chat permet d'exporter la liste des utilisateurs actifs. Cela facilite la vérification croisée après import Mattermost :
curl -H "X-Auth-Token: <token>" \ -H "X-User-Id: <admin-id>" \ "https://chat.yourdomain.com/api/v1/users.list?count=200" \ | python3 -c "import sys,json; [print(u['username'], u.get('emails',[{}])[0].get('address','')) for u in json.load(sys.stdin)['users']]"Gardez cette liste : elle sert à vérifier que tous les comptes sont bien créés dans Mattermost après le bulk import.
Installer Mattermost sur votre VPS
Récupérer la configuration Docker Compose officielle
L'équipe Mattermost maintient un dépôt
dockeravec une configuration Compose prête à l'emploi :git clone https://github.com/mattermost/docker /opt/mattermost cd /opt/mattermost cp env.example .envOuvrez
.envet renseignez au minimum :DOMAIN=chat.yourdomain.com MM_SERVICESETTINGS_SITEURL=https://chat.yourdomain.com POSTGRES_USER=mmuser POSTGRES_PASSWORD=<mot-de-passe-fort> POSTGRES_DB=mattermostMonter les volumes et démarrer la stack
Créez les répertoires de volumes avant le premier démarrage :
mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes} sudo chown -R 2000:2000 ./volumes/app/mattermostDémarrez la stack complète (Mattermost + PostgreSQL + nginx avec certificat Let's Encrypt intégré) :
docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -dAttendez que le conteneur Mattermost soit
healthyavant de continuer :docker compose psCréer le compte administrateur
Ouvrez
https://chat.yourdomain.comdans votre navigateur. À la première connexion, Mattermost propose la création du compte administrateur. Renseignez l'e-mail, le nom d'utilisateur et le mot de passe de l'administrateur initial — ce compte sera distinct des comptes importés depuis Rocket.Chat.Une fois connecté, allez dans System Console → Environment → Site URL et vérifiez que l'URL correspond exactement à celle déclarée dans
.env.
Migrer l'historique et les utilisateurs avec mmetl
Installer mmetl
Téléchargez le binaire mmetl v0.6.0 (publié le 11 septembre 2026) depuis les releases GitHub :
curl -L https://github.com/mattermost/mmetl/releases/download/v0.6.0/mmetl-linux-amd64 \ -o /usr/local/bin/mmetl chmod +x /usr/local/bin/mmetl mmetl versionChangement de syntaxe v0.6.0 : la sous-commande
mmetl checka été supprimée. Utilisez désormaismmetl transform ... --dry-runpour valider le dump avant de produire le fichier d'import.Transformer le dump Rocket.Chat en fichier d'import Mattermost
Lancez la transformation en indiquant le répertoire contenant les collections BSON exportées (le sous-dossier
rocketchatdu dump) et le nom de l'équipe Mattermost cible :mmetl transform rocketchat \ --team mon-equipe \ --dump-dir /tmp/rc-dump/rocketchat \ --output /tmp/mattermost-importmmetl génère un fichier
import.jsonlet un répertoirebulk-export-attachments/. Pour tester sans générer d'output :mmetl transform rocketchat \ --team mon-equipe \ --dump-dir /tmp/rc-dump/rocketchat \ --dry-runVérifiez les avertissements : les messages de canaux privés sans membre reconnu sont sautés, les pièces jointes absentes du répertoire d'uploads sont référencées mais non transférées.
Lancer l'import dans Mattermost via mmctl
Copiez le fichier d'import dans le répertoire de données Mattermost, puis lancez le bulk import :
# copier dans le conteneur docker cp /tmp/mattermost-import/import.jsonl \ <mattermost-container>:/mattermost/data/import.jsonl # lancer l'import depuis mmctl (dans le conteneur) docker exec <mattermost-container> mmctl import bulk \ /mattermost/data/import.jsonl --bypass-uploadPour suivre l'avancement, consultez les jobs d'import dans System Console → Bulk Import. Les erreurs sont logguées ligne par ligne — un import partiel ne bloque pas le reste.
Vérifier le résultat et les limites connues
Après l'import, vérifiez les points suivants :
- Les canaux publics et privés doivent être présents dans Mattermost avec leur historique.
- Les noms d'utilisateurs sont importés mais les mots de passe ne le sont pas — chaque utilisateur doit réinitialiser son mot de passe ou se connecter via LDAP si l'annuaire est configuré.
- Les pièces jointes nécessitent un second passage avec--attachments-dirpointant vers le répertoire copié depuis Rocket.Chat.
- Les threads de discussion (fils imbriqués) sont aplatis si la structure n'est pas reconnue.
Configurer LDAP dans Mattermost Community
Activer LDAP dans la System Console
Dans System Console → Authentication → AD/LDAP, activez LDAP et renseignez les paramètres de connexion :
LDAP Server: ldap.yourdomain.com (ou l'IP de votre contrôleur de domaine) Port: 389 (LDAP) ou 636 (LDAPS) Bind Username: cn=mattermost-svc,ou=serviceaccounts,dc=yourdomain,dc=com Bind Password: <mot-de-passe-du-compte-de-service> Base DN: ou=users,dc=yourdomain,dc=comActivez LDAP over TLS (LDAPS) ou StartTLS si votre infrastructure le permet — ne transmettez pas les identifiants en clair sur un réseau non chiffré.
LDAP et SAML sont inclus dans l'édition Community de Mattermost sans condition de plan payant — documenté dans la [Documentation officielle Mattermost AD/LDAP](https://docs.mattermost.com/onboard/ad-ldap.html) qui couvre l'édition Team/open source.
Configurer les mappings d'attributs
Mattermost lit les attributs LDAP pour peupler les profils. Les mappings courants pour Active Directory :
ID Attribute: objectGUID (ou sAMAccountName si l'GUID n'est pas disponible) Username Attribute: sAMAccountName Email Attribute: mail First Name: givenName Last Name: snPour OpenLDAP, remplacez
sAMAccountNameparuidetobjectGUIDparentryUUID.Dans User Filter, restreignez la synchronisation aux membres du groupe voulu :
(memberOf=cn=mattermost-users,ou=groups,dc=yourdomain,dc=com)Tester la connexion et synchroniser
Cliquez sur AD/LDAP Test en bas de la page pour valider la connexion et le bind. En cas d'erreur
LDAP Result Code 49 'Invalid Credentials', vérifiez le DN du compte de service et son mot de passe.Déclenchez une première synchronisation manuelle via AD/LDAP Synchronize Now. Les utilisateurs dont l'attribut e-mail correspond à un compte déjà importé via mmetl seront liés automatiquement — ils se connecteront ensuite avec leurs identifiants LDAP sans avoir à réinitialiser leur mot de passe.
Plan de bascule : Rocket.Chat en lecture seule pendant la migration
Ne coupez pas Rocket.Chat avant d'avoir validé l'import Mattermost en conditions réelles. La stratégie recommandée est de faire tourner les deux instances en parallèle pendant 48 à 72 heures :
1. Activez le mode maintenance / lecture seule sur Rocket.Chat dès que le dump est réalisé.
2. Configurez Mattermost sur un sous-domaine distinct (chat-new.yourdomain.com) le temps de la validation.
3. Invitez un groupe pilote (5 à 10 personnes) à utiliser Mattermost et à signaler les canaux ou messages manquants.
4. Une fois validé, basculez le DNS de chat.yourdomain.com vers le nouveau VPS Mattermost.
5. Conservez l'instance Rocket.Chat en lecture seule encore 30 jours pour que les utilisateurs récupèrent les liens partagés antérieurs.
Le DNS Cloudflare bascule en quelques secondes avec un TTL court (60 s) — préparez la modification à l'avance pour ne pas travailler sous pression.
Dépannage courant
mmetl : unexpected end of JSON input — le répertoire passé à --dump-dir doit être le sous-dossier rocketchat/ contenant les fichiers .bson, pas le répertoire parent du dump. Vérifiez avec ls /tmp/rc-dump/rocketchat/*.bson.
Import partiel, canaux manquants — mmetl saute les canaux privés dont le propriétaire n'est pas trouvé dans la collection users. Vérifiez que les utilisateurs concernés sont bien présents dans le dump avec bsondump /tmp/rc-dump/rocketchat/users.bson | grep '<username>'.
LDAP Bind Failure (code 49) — l'erreur la plus fréquente est un DN mal formé pour le compte de service. Testez la connexion depuis le VPS avec ldapsearch avant de configurer Mattermost :
ldapsearch -x -H ldap://ldap.yourdomain.com \
-D "cn=mattermost-svc,ou=serviceaccounts,dc=yourdomain,dc=com" \
-W -b "ou=users,dc=yourdomain,dc=com" "(uid=testuser)"Connexions WebSocket instables — si Mattermost affiche des disconnexions fréquentes, vérifiez que votre reverse proxy transmet bien les en-têtes Upgrade et Connection. Nginx doit porter :
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";Pièces jointes absentes — la commande mmctl import bulk sans --attachments-dir crée les messages mais laisse les fichiers joints en erreur. Relancez avec le répertoire bulk-export-attachments/ produit par mmetl.
Rocket.Chat Community 9.0 vs Mattermost Community
Faites défiler le tableau
| Critère | Rocket.Chat Community 9.0 | Mattermost Community |
|---|---|---|
| LDAP / Active Directory | Premium (depuis 9.0) | Inclus sans restriction |
| SAML SSO | Premium (depuis 9.0) | Inclus sans restriction |
| Base de données | MongoDB (replica set requis) | PostgreSQL |
| RAM minimum | 4 Go (replica set MongoDB) | 2 Go (équipe < 50 users) |
| Licence | AGPL-3.0 | MIT (serveur) / Apache 2.0 |
| Outil de migration | Export JSON/CSV natif | mmetl + mmctl bulk import |
| Historique complet | Oui | Oui |
| Omnicanal (livechat, email) | Oui (natif) | Limité (extensions) |
Mattermost Community, une plateforme stable pour le long terme
La migration de Rocket.Chat vers Mattermost est une décision structurelle, pas un contournement. En déplaçant l'authentification LDAP et SAML derrière une licence Premium, Rocket.Chat signale où va son modèle commercial — ce qui est son droit. Mattermost a fait un choix inverse en maintenant ces fonctionnalités dans son édition open source, y compris pour les organisations sans budget d'abonnement.
Sur un VPS avec PostgreSQL, Mattermost offre un socle prévisible : les sauvegardes sont de simples pg_dump, les mises à jour passent par Docker Compose, et l'API REST documentée permet d'intégrer les outils de votre infrastructure — CI, monitoring, alertes — sans contrainte de plan. L'historique de communication de votre équipe reste sur votre disque, exportable et auditable à tout moment.
Voir aussi : guide d'installation Mattermost sur VPS, comparatif Mattermost vs Rocket.Chat 2026 et héberger Rocket.Chat sur VPS.