Pourquoi migrer depuis Slack devient urgent
En 2024, Hack Club a reçu une demande de Slack : 50 000 $ immédiatement, puis 200 000 $ par an, sous peine de suppression de onze ans d'historique communautaire. Ce n'est pas un cas isolé — c'est la logique d'un éditeur qui sait que votre historique est un actif stratégique, et qui en a fait le levier de son plan Enterprise. Deux mécanismes de verrouillage se cumulent. Le premier est l'historique : sur les plans gratuit et Pro, Slack n'expose qu'une fenêtre glissante ; accéder à l'intégralité réclame le plan Business+ ou Enterprise Grid. Le second est le SSO : la connexion via votre fournisseur d'identité (Okta, Azure AD, Google Workspace) est réservée au plan Enterprise, facturé autour de 20 $ par utilisateur et par mois. Pour une équipe de cinquante personnes, c'est 12 000 $ par an pour une fonctionnalité que Mattermost et Rocket.Chat offrent nativement dès l'installation. La question qui se pose n'est donc pas « est-ce que Slack est bon ? » — il l'est — mais « à quel prix acceptons-nous de dépendre d'un éditeur pour accéder à nos propres échanges clients ? ».
Les bénéfices concrets de l'auto-hébergement d'une messagerie d'équipe
- Historique sans limite — tous vos échanges, canaux et fichiers joints restent accessibles indéfiniment sans surcoût.
- SSO et LDAP natifs et gratuits — connectez votre annuaire d'entreprise sans débloquer un plan enterprise chez l'éditeur.
- Données sous votre contrôle — les échanges clients, les contrats discutés en DM et les fichiers partagés restent sur votre infrastructure.
- Coût prévisible — un VPS mensuel fixe, pas un abonnement indexé sur la croissance de votre équipe.
- Intégrations sur mesure — webhooks, bots et API accessibles sans restrictions de plan.
- Conformité facilitée — rétention configurable, export sur demande et audit log pour répondre aux exigences légales ou contractuelles.
- Indépendance vis-à-vis des décisions d'éditeur — pas de changement de tarif surprise, pas de fenêtre de 30 jours pour s'adapter.
Mattermost vs Rocket.Chat vs Slack Enterprise
| Critère | Mattermost (self-hosted) | Rocket.Chat (self-hosted) | Slack Enterprise Grid |
|---|---|---|---|
| Licence | MIT (serveur) / Apache 2.0 | AGPL-3.0 | Propriétaire |
| RAM minimum | 2 Go (équipe < 50) | 4 Go (replica set MongoDB requis) | SaaS, pas de serveur à gérer |
| SSO / SAML / LDAP | Gratuit en self-hosted | Gratuit en self-hosted | ~20 $/user/mois (plan Enterprise) |
| Historique complet | Complet, sur votre disque | Complet, sur votre disque | Conditionné au plan payant |
| Omnicanal (live chat, email, WhatsApp…) | Limité (extensions communautaires) | Natif et complet | Non (messagerie interne uniquement) |
| Import depuis Slack | Outil officiel `mattermost import slack` | Import Slack via l'interface admin | Non applicable |
Prérequis serveur avant de commencer
Le choix entre Mattermost et Rocket.Chat se joue dès les prérequis matériels. Mattermost utilise PostgreSQL et peut démarrer avec 2 Go de RAM pour une équipe de moins de cinquante personnes — un VPS d'entrée de gamme suffit pour une migration initiale. Rocket.Chat s'appuie sur MongoDB en mode replica set : même avec un seul nœud, le replica set est obligatoire dès la version 6, ce qui porte les besoins à 4 Go de RAM minimum. Sur le plan logiciel, les deux requièrent Docker et Docker Compose installés, un sous-domaine dédié (par exemple chat.votredomaine.com) avec un certificat SSL valide, et un serveur SMTP pour les notifications par email et les invitations. Ouvrez le port 443 en entrée et vérifiez que WebSocket n'est pas filtré par votre pare-feu ou votre proxy — c'est le premier point de blocage rencontré après l'installation. Enfin, prévoyez de l'espace disque proportionnel au volume de fichiers partagés que vous comptez importer : l'historique Slack peut peser plusieurs gigaoctets si votre équipe partage régulièrement des pièces jointes.
Exporter l'historique Slack
Accéder à l'export depuis l'administration Slack
Connectez-vous en tant qu'administrateur de l'espace de travail, rendez-vous dans Paramètres et administration > Gestion de l'espace de travail > Import/Export de données. L'onglet Export est disponible sur le plan Pro et au-dessus.
Choisir la plage de dates et lancer l'export
Sélectionnez « Tous les messages » pour exporter l'intégralité de l'historique accessible. Slack génère une archive ZIP contenant un fichier JSON par canal public, les métadonnées des utilisateurs et la liste des canaux. Les canaux privés et les DM ne sont inclus que si vous disposez d'un plan Business+ ou Enterprise.
Télécharger l'archive et vérifier son contenu
Une fois l'export prêt (quelques minutes à quelques heures selon le volume), téléchargez le fichier ZIP. Dézippez-le localement et vérifiez la présence des dossiers de canaux, du fichier users.json et de channels.json. Ce sont les trois fichiers que l'outil d'import Mattermost attend.
Transférer l'archive sur le VPS
Copiez l'archive sur votre serveur avec scp slack_export.zip user@votre-vps:/opt/mattermost/imports/. Évitez de la dézipper côté serveur avant l'import — l'outil Mattermost travaille directement sur le ZIP.
Déployer Mattermost sur VPS avec Docker
Créer la structure de dossiers
Sur le VPS, créez le répertoire de travail : mkdir -p /opt/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes,imports}. Ces dossiers seront montés en volumes Docker et contiendront la configuration, les données utilisateurs et les fichiers importés.
Écrire le docker-compose.yml
Définissez deux services : postgres (image postgres:15) avec un volume nommé pour les données, et mattermost (image mattermost/mattermost-team-edition:latest). Reliez-les via un réseau interne Docker et montez les cinq dossiers créés à l'étape précédente. Passez la variable MM_SQLSETTINGS_DATASOURCE pointant vers le service postgres. N'exposez que le port 8065 en loopback (127.0.0.1:8065:8065).
Configurer le reverse proxy avec Caddy
Créez un fichier Caddyfile avec l'entrée suivante : chat.votredomaine.com { reverse_proxy localhost:8065 }. Caddy obtient et renouvelle automatiquement le certificat Let's Encrypt. Redémarrez Caddy après avoir vérifié que le sous-domaine pointe bien sur l'IP du VPS.
Démarrer la stack et créer l'administrateur
Lancez docker compose up -d, attendez une trentaine de secondes et vérifiez les logs avec docker compose logs -f mattermost. Ouvrez https://chat.votredomaine.com dans votre navigateur pour créer le compte administrateur initial via l'assistant de configuration.
Configurer le SMTP et les notifications
Dans Système > Notifications > Email, renseignez votre serveur SMTP (hôte, port, identifiants). Envoyez un email de test avant de continuer : les invitations utilisateurs et les notifications de message dépendent de cette configuration.
Activer le SSO ou LDAP
Dans Système > Authentification, activez LDAP ou SAML selon votre annuaire. Les deux sont disponibles gratuitement en auto-hébergé, sans restriction de plan. Testez la connexion avec un compte de service avant d'inviter vos utilisateurs.
Importer l'historique Slack dans Mattermost
Préparer l'import avec l'outil officiel
L'outil mattermost import slack est intégré au binaire Mattermost. Depuis le conteneur Docker, exécutez : docker compose exec mattermost mattermost import slack /mattermost/imports/slack_export.zip --team nomdevotreequipe. L'outil convertit le format JSON Slack en format Bulk Import Mattermost et signale les éventuelles incompatibilités.
Lancer le Bulk Import
Une fois la conversion effectuée, Mattermost génère un fichier d'import au format JSONL. Lancez l'import réel avec docker compose exec mattermost mattermost import bulk /mattermost/imports/mattermost_import.jsonl --workers 1. L'option --workers 1 évite les conflits d'écriture sur les bases de données de taille modeste.
Vérifier les canaux et utilisateurs importés
Une fois l'import terminé, connectez-vous à l'interface Mattermost et vérifiez que les canaux publics apparaissent dans l'équipe, que les messages historiques sont visibles avec les bons auteurs, et que les utilisateurs importés peuvent se connecter (ils recevront un email d'invitation pour définir leur mot de passe).
Corriger les pièces jointes manquantes
L'export Slack standard n'inclut pas les fichiers joints sur les plans inférieurs à Business+. Si des pièces jointes manquent, les messages apparaissent avec un lien mort. Documentez les canaux concernés et informez vos utilisateurs : les fichiers critiques devront être rattachés manuellement.
Alternative : Rocket.Chat pour un support client unifié
Si votre besoin dépasse la messagerie interne et inclut un support client en temps réel, Rocket.Chat est un choix cohérent pour ce cas d'usage. Son module omnicanal permet de centraliser dans une même interface les conversations depuis un widget live chat sur votre site, les emails entrants, les messages WhatsApp Business et les canaux Telegram. Les agents de support voient une file de tickets unifiée, avec l'historique complet de chaque contact. Ce positionnement distingue clairement les deux outils : Mattermost est une messagerie d'équipe structurée, proche de Slack dans ses usages ; Rocket.Chat est une plateforme de communication qui absorbe aussi les canaux clients externes. La contrepartie est une complexité accrue à l'installation — le replica set MongoDB est obligatoire, les ressources minimales sont plus élevées, et la configuration omnicanal demande un paramétrage soigneux des routages et des agents. Pour une agence qui gère des échanges clients et veut consolider messagerie interne et support en une seule plateforme, Rocket.Chat est le candidat naturel. Pour une équipe technique qui cherche uniquement à remplacer Slack sans complexité supplémentaire, Mattermost est le chemin le plus direct.
SSO et authentification : profitez du self-hosting
En auto-hébergé, LDAP, SAML 2.0 et l'authentification par certificat client sont disponibles sans restriction de plan ni surcoût. Configurez dès le départ la connexion à votre annuaire (Active Directory, FreeIPA, ou votre fournisseur d'identité cloud) pour que vos utilisateurs n'aient pas à gérer un compte supplémentaire. Activez aussi l'authentification à deux facteurs (TOTP) dans les paramètres de sécurité — Mattermost comme Rocket.Chat l'intègrent nativement. Si vous passez par un proxy d'authentification comme Authelia ou Authentik, vérifiez que votre reverse proxy transmet correctement les en-têtes X-Forwarded-For et X-Real-IP avant de forcer l'authentification externe.
Dépannage : les erreurs les plus fréquentes
Quatre problèmes reviennent régulièrement après une installation réussie. Le premier concerne MongoDB et Rocket.Chat : si le conteneur démarre puis s'arrête avec l'erreur MongoServerError: not master, c'est que le replica set n'a pas été initialisé. Connectez-vous au shell MongoDB avec docker compose exec mongodb mongosh et lancez rs.initiate() — une seule fois, au premier démarrage. Le second problème touche les WebSockets : si Mattermost affiche « WebSocket connexion perdue » en boucle, vérifiez que votre reverse proxy transmet les en-têtes Upgrade et Connection. Avec Caddy, c'est automatique ; avec Nginx, ajoutez proxy_http_version 1.1, proxy_set_header Upgrade $http_upgrade et proxy_set_header Connection upgrade dans votre bloc location. Le troisième concerne les notifications mobiles : les apps iOS et Android de Mattermost se connectent par défaut au service de notification de Mattermost Inc. Si votre politique de sécurité l'interdit, compilez votre propre serveur de push ou désactivez les notifications mobiles dans les paramètres système. Le quatrième est lié au SMTP : un envoi de test qui fonctionne mais des invitations qui n'arrivent jamais indique souvent un problème de SPF ou de DKIM sur votre domaine d'expéditeur. Vérifiez vos enregistrements DNS et testez l'envoi avec mail-tester.com avant de migrer vos utilisateurs.