Guide de déploiement

Migrer Rocket.Chat vers Mattermost sur VPS

Déployer sur un VPS Cloud →

Tutoriel

Migrer Rocket.Chat vers Mattermost sur VPS

Self-hosting11 min de lecture14 étapes

Depuis les notes de version 8.8.0 publiées le 3 septembre 2026, Rocket.Chat annonce officiellement que LDAP et SAML passeront en Premium à partir de la version 9.0. Si vous administrez une instance Community self-hosted avec authentification entreprise, le compteur est lancé. Ce guide couvre la sauvegarde de votre Rocket.Chat existant, l'installation de Mattermost sur votre VPS, la migration de l'historique et des utilisateurs via mmetl, et la configuration LDAP dans Mattermost Community — qui l'inclut sans restriction de plan.

Sommaire· Ce qui change dans Rocket.Chat 9.01/11
  1. 01Ce qui change dans Rocket.Chat 9.0
  2. 02Pourquoi Mattermost Community est une alternative solide
  3. 03Prérequis chiffrés
  4. 04Sauvegarder Rocket.Chat
  5. 05Installer Mattermost sur votre VPS
  6. 06Migrer l'historique et les utilisateurs avec mmetl
  7. 07Configurer LDAP dans Mattermost Community
  8. 08Plan de bascule : Rocket.Chat en lecture seule pendant la migration
  9. 09Dépannage courant
  10. 10Rocket.Chat Community 9.0 vs Mattermost Community
  11. 11Mattermost Community, une plateforme stable pour le long terme

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_dump et plus courant que MongoDB dans les environnements Docker self-hosted.
  • mmetl, un outil officiel de migration — l'outil mmetl de l'équipe Mattermost transforme un mongodump de Rocket.Chat en fichier d'import JSONL compatible avec mmctl 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

  1. 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 rocketchat
  2. Exporter 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-dump

    Vérifiez que /tmp/rc-dump/rocketchat/ contient bien des fichiers .bson et .json pour les collections rocketchat_message, users, rocketchat_room, etc.

  3. 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-uploads

    Si 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 import avec l'option --attachments-dir.

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

  1. Récupérer la configuration Docker Compose officielle

    L'équipe Mattermost maintient un dépôt docker avec une configuration Compose prête à l'emploi :

    git clone https://github.com/mattermost/docker /opt/mattermost
    cd /opt/mattermost
    cp env.example .env

    Ouvrez .env et 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=mattermost
  2. Monter 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/mattermost

    Dé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 -d

    Attendez que le conteneur Mattermost soit healthy avant de continuer :

    docker compose ps
  3. Créer le compte administrateur

    Ouvrez https://chat.yourdomain.com dans 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

  1. 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 version

    Changement de syntaxe v0.6.0 : la sous-commande mmetl check a été supprimée. Utilisez désormais mmetl transform ... --dry-run pour valider le dump avant de produire le fichier d'import.

  2. 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 rocketchat du dump) et le nom de l'équipe Mattermost cible :

    mmetl transform rocketchat \
      --team mon-equipe \
      --dump-dir /tmp/rc-dump/rocketchat \
      --output /tmp/mattermost-import

    mmetl génère un fichier import.jsonl et un répertoire bulk-export-attachments/. Pour tester sans générer d'output :

    mmetl transform rocketchat \
      --team mon-equipe \
      --dump-dir /tmp/rc-dump/rocketchat \
      --dry-run

    Vé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.

  3. 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-upload

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

  4. 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-dir pointant 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

  1. 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=com

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

  2. 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:           sn

    Pour OpenLDAP, remplacez sAMAccountName par uid et objectGUID par entryUUID.

    Dans User Filter, restreignez la synchronisation aux membres du groupe voulu :

    (memberOf=cn=mattermost-users,ou=groups,dc=yourdomain,dc=com)
  3. 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èreRocket.Chat Community 9.0Mattermost Community
LDAP / Active DirectoryPremium (depuis 9.0)Inclus sans restriction
SAML SSOPremium (depuis 9.0)Inclus sans restriction
Base de donnéesMongoDB (replica set requis)PostgreSQL
RAM minimum4 Go (replica set MongoDB)2 Go (équipe < 50 users)
LicenceAGPL-3.0MIT (serveur) / Apache 2.0
Outil de migrationExport JSON/CSV natifmmetl + mmctl bulk import
Historique completOuiOui
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.

Déployez Mattermost sur un VPS Cloud ServOrbit

Un VPS avec accès root, IPv4 dédiée et SSD NVMe — le socle pour héberger Mattermost avec PostgreSQL et gérer vous-même l'authentification LDAP de votre équipe.

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