Mattermost : Slack sans payer par utilisateur ni exporter vos données
Une messagerie d'équipe open-source, compatible avec l'écosystème Slack, qui tourne sur votre infrastructure et ne facture jamais au siège.
Slack facture par utilisateur actif, tronque l'historique gratuit à 90 jours, et stocke vos conversations d'équipe sur une infrastructure que vous ne contrôlez pas. Pour une entreprise qui a des contraintes de conformité, ou simplement qui préfère ne pas dépendre d'un tiers pour sa communication interne, Mattermost couvre le même besoin sans ces trois contraintes.
Mattermost est un logiciel de messagerie d'équipe : canaux publics et privés, messages directs, threads, réactions, recherche, appels audio/vidéo, intégrations webhook. L'interface ressemble volontairement à Slack — la courbe d'apprentissage pour une équipe qui migre est proche de zéro. La différence est en dessous : c'est un serveur Go + PostgreSQL que vous déployez et dont vous possédez les données.
Déploiement avec Docker Compose
services:
mattermost:
image: mattermost/mattermost-team-edition:latest
restart: always
depends_on:
- postgres
environment:
MM_SQLSETTINGS_DRIVERNAME: postgres
MM_SQLSETTINGS_DATASOURCE: "postgres://mmuser:mmpass@postgres:5432/mattermost?sslmode=disable"
MM_SERVICESETTINGS_SITEURL: "https://chat.mondomaine.fr"
volumes:
- ./mm-data:/mattermost/data
- ./mm-logs:/mattermost/logs
- ./mm-config:/mattermost/config
ports:
- "8065:8065"
postgres:
image: postgres:16-alpine
restart: always
environment:
POSTGRES_USER: mmuser
POSTGRES_PASSWORD: mmpass
POSTGRES_DB: mattermost
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:MM_SERVICESETTINGS_SITEURL doit correspondre exactement à l'URL publique — Mattermost s'en sert pour générer les liens dans les notifications et les redirections OAuth. Une fois les containers démarrés, la première visite sur https://chat.mondomaine.fr déclenche l'assistant de création du compte administrateur.
Team Edition vs Enterprise
Mattermost a deux éditions. La confusion classique : penser qu'il faut payer pour un usage sérieux.
| Fonctionnalité | Team Edition (gratuit) | Enterprise |
|---|---|---|
| Canaux, threads, DM | Oui | Oui |
| Appels audio/vidéo | Oui | Oui |
| Intégrations webhook | Oui | Oui |
| Historique illimité | Oui | Oui |
| SSO SAML / LDAP | Non | Oui |
| Compliance export | Non | Oui |
| Support SLA | Non | Oui |
Pour une équipe de moins de 50 personnes sans exigence de conformité réglementaire (banque, santé), Team Edition couvre tout. Enterprise devient pertinent quand LDAP/SAML sont imposés par la DSI ou que des obligations légales exigent l'export d'audit des conversations.
Intégrations : webhooks entrants et sortants
Mattermost parle le même format de webhook que Slack pour l'essentiel — un script qui poste dans Slack fonctionne souvent sur Mattermost avec juste l'URL changée.
curl -X POST -H 'Content-Type: application/json' \
-d '{"text": "Déploiement terminé sur production ✅"}' \
https://chat.mondomaine.fr/hooks/xxxxxxxxxxxxxxxxxxxxxxxxxxxxCréer un webhook entrant : Paramètres > Intégrations > Webhooks entrants. Ça branche directement les notifications de GitHub Actions — un job qui poste dans un canal #déploiements à chaque merge sur main prend cinq lignes de YAML.
- name: Notifier Mattermost
if: always()
run: |
curl -X POST -H 'Content-Type: application/json' \
-d "{\"text\": \"Build ${{ job.status }} sur ${{ github.ref_name }}\"}" \
${{ secrets.MATTERMOST_WEBHOOK_URL }}Slash commands et bots
Au-delà des webhooks, Mattermost expose une API REST complète pour construire des bots — un compte spécial qui poste, réagit, répond à des commandes slash (/deploy, /oncall). Utile pour brancher un bot de monitoring qui alerte directement dans le canal d'astreinte plutôt que par email.
Reverse proxy et WebSocket
Comme tout service temps réel, Mattermost utilise WebSocket pour pousser les nouveaux messages sans polling. Le reverse proxy doit explicitement autoriser l'upgrade de connexion :
server {
listen 443 ssl http2;
server_name chat.mondomaine.fr;
ssl_certificate /etc/letsencrypt/live/chat.mondomaine.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/chat.mondomaine.fr/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8065;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Sans Upgrade/Connection: upgrade, les messages arrivent en retard — le client bascule silencieusement sur un fallback en polling, et l'expérience se dégrade sans erreur visible.
Sauvegardes
Trois choses à sauvegarder : la base PostgreSQL, le dossier data (fichiers uploadés), et config.json.
docker exec postgres pg_dump -U mmuser mattermost > mm-backup-$(date +%F).sql
tar czf mm-files-$(date +%F).tar.gz ./mm-data ./mm-configMigrer une équipe depuis Slack
Mattermost fournit un outil d'import natif pour les exports Slack (format ZIP téléchargeable depuis l'admin Slack). Il recrée les canaux, réimporte l'historique de messages et les fichiers. La commande tourne côté serveur :
mattermost import slack /chemin/vers/export.zip --team mon-equipeComptez une migration propre en une session pour une équipe de taille moyenne — la plupart du travail est de vérifier le mapping des utilisateurs Slack vers les comptes Mattermost.
Slack reste plus simple à démarrer — zéro serveur, zéro maintenance. Mais dès qu'une équipe dépasse la dizaine de personnes ou qu'un budget ligne "communication interne" apparaît, l'écart se creuse vite. Mattermost demande un peu d'huile de coude au départ — sur un serveur qui tourne déjà Docker et PostgreSQL, c'est une fin d'après-midi, pas un projet.