Business Digital

Mattermost 2026 : guide complet (Slack auto-hébergé pour PME francophone)

12 دقائق للقراءة

Slack à 8,75 USD par utilisateur et par mois sur le plan Pro, Microsoft Teams inclus dans Microsoft 365 Business à 6 USD par utilisateur et par mois. Pour une PME de 25 personnes en Côte d’Ivoire, comptez 1 800 à 2 600 USD par an pour la messagerie d’équipe. Et toutes vos discussions stratégiques, mots de passe partagés, comptes-rendus client transitent par les serveurs américains. Mattermost est l’alternative open source qui s’est imposée en 2026 (informations vérifiées en avril 2026, susceptibles d’évoluer) chez les PME francophones d’Afrique de l’Ouest et du Maghreb : interface 95% identique à Slack, channels, threads, mentions, recherche, app mobile officielle, intégrations Forgejo/Jenkins/Grafana, plugins, audio/vidéo. Auto-hébergé sur Hetzner CX23 à 4,51 €/mois pour 100 utilisateurs.

Sommaire

Pourquoi Mattermost domine en 2026

Cinq raisons concrètes expliquent l’adoption massive.

Coût. Mattermost Team Edition (open source) gratuit illimité. Sur Hetzner CX23 : 4,51 €/mois pour 100 utilisateurs, 50 channels, historique illimité. Slack Pro : 1 800 USD/an pour la même équipe.

Souveraineté. Discussions stratégiques, plans de produit, secrets tech, retours clients restent sur vos serveurs européens (Hetzner Falkenstein). Pas de NSA, pas de CLOUD Act, pas de fuites accidentelles via paramètres entreprise mal configurés.

UX similaire à Slack. Interface React identique, raccourcis clavier identiques, app mobile officielle iOS/Android. Migration depuis Slack : 1 jour de transition pour une équipe de 25 personnes.

Performance. Mattermost en Go + React tient 100 utilisateurs sur CX23 sans lag. Recherche full-text instantanée. App desktop native (Electron) plus légère que Slack.

Intégrations. 200+ intégrations natives : GitHub, GitLab, Forgejo, Jenkins, Grafana, Prometheus, Jira, Linear, Trello, Outline, Plausible. Slash commands, webhooks entrants/sortants, plugins custom.

Concepts fondamentaux

Teams, channels, threads

Une instance Mattermost héberge un ou plusieurs teams (généralement un par PME). Chaque team contient des channels (publics ou privés). Conversations en threads (réponses inline) pour ne pas polluer le channel.

Direct messages et groupes

DM 1-1 ou groupes (jusqu’à 8 personnes). Pour conversations confidentielles ou ad-hoc.

Mentions et notifications

@user, @channel, @here. Notifications configurables par utilisateur : mobile push, email, son. Mode Do Not Disturb pour focus.

Slash commands et integrations

Slash commands : /giphy, /jira, /poll, /standup. Webhooks entrants pour recevoir notifications externes (Forgejo build status, alerts Grafana). Webhooks sortants pour déclencher actions externes.

Plugins

50+ plugins officiels : Calls (audio/vidéo), MS Teams Sync, GitLab, Jira, Welcome Bot, Polls. Plugins custom en Go ou JavaScript.

Recherche full-text

Indexation Elasticsearch ou PostgreSQL FTS. Recherche par mot, channel, user, date. Filtres puissants. Permet de retrouver rapidement une décision prise il y a 6 mois.

Vue d’ensemble pratique

1. Déploiement Hetzner + Coolify

Voir Déployer Mattermost sur Coolify.

2. Migration depuis Slack

Outil officiel mattermost-import lit l’export Slack ZIP. Voir Migrer de Slack vers Mattermost.

3. Apps mobile et desktop

Apps officielles iOS, Android, Mac, Windows, Linux. Tous configurables vers votre instance custom.

4. Intégrations Forgejo, Grafana, etc.

Webhooks entrants par channel. Voir Intégrations webhooks et bots Mattermost.

5. SSO et conformité

Brancher sur Authentik via OIDC. Voir SSO Authentik avec Mattermost.

Tutoriels du cluster Mattermost

Cas d’usage

Agence digitale 12 personnes

Agence à Dakar : channels par client, channels internes (#general, #dev, #marketing, #random). Intégration Forgejo pour notifications PR. Direct messages pour 1-1 manager-employé.

Cabinet d’avocats 25 personnes

Cabinet à Casablanca : channels privés par dossier client, confidentialité absolue garantie par self-hosted. Threads pour ne pas perdre le fil.

ESN multi-clients

ESN à Abidjan : team Mattermost dédié + channels invités client. Workflow review code via Forgejo intégration.

Médias et journalistes terrain

Rédaction à Tunis : channel par enquête, app mobile pour journalistes terrain au Sahel, photos uploadées en temps réel.

DevOps et incident response

Channel #incidents pour toute coupure. Webhook Grafana → channel. SLO breach trigger Mattermost notification → on-call.

Application au contexte économique sous-régional

Quatre adaptations spécifiques.

Coût. 25 personnes sur Slack Pro = 2 600 USD/an. Mattermost auto-hébergé : 54 €/an de VPS + 12 € de domaine = 66 €/an. Économie de 2 540 USD/an.

Connectivité intermittente. Mode hors-ligne : app mobile garde les 200 derniers messages par channel localement. Reprise sync au retour réseau. Crucial pour collaborateurs au Burkina Faso, Niger, Mali.

Multilingue interface. Mattermost UI traduit en français, en arabe, en anglais. Configuration locale par utilisateur.

Recherche multilingue. Index Elasticsearch tokenize correctement français + arabe. Recherche par texte arabe ou français équivalente.

Erreurs fréquentes

Erreur Cause Solution
Push notifications mobile ne marchent pas Push proxy non configuré Configurer Push Notification Service (gratuit jusqu’à 100 users)
Recherche lente Pas d’Elasticsearch Ajouter Elasticsearch (RAM dédiée)
Calls audio/vidéo échec Plugin Calls non installé System Console → Plugins → Calls → Enable
Webhook Forgejo ignoré Channel ID mal collé Vérifier URL webhook entrant
Disk plein Fichiers uploadés non purgés Configurer S3 storage + retention
Sauvegarde manquante Postgres pas dump quotidien Cron pg_dump + restic

FAQ

Mattermost vs Slack en 2026 ? Mattermost 90% des features Slack, 10% manquantes (huddles spontanés moins fluides, certaines apps tierces). Pour 95% des PME, suffisant.

Capacité Hetzner CX23 ? 100 users actifs + 50 channels + 100 messages/jour confortable. Au-delà CCX13.

Apps mobile gratuites ? Oui. Configurer URL serveur custom au premier login.

Audio/vidéo calls ? Plugin Calls inclus dans Team Edition depuis 2024. Jusqu’à 8 participants.

Migration vers Enterprise plus tard ? Possible. Données conservées, fonctionnalités supplémentaires activées.

Intégrations Slack importables ? La majorité des intégrations Slack ont équivalent Mattermost. Webhooks compatibles.

End-to-end encryption ? Pas natif (comme Slack). Pour secrets, utiliser Vaultwarden + lien temporaire.

À lire ensuite

Étape 1 : décider si Mattermost convient à votre PME francophone

Mattermost est un Slack auto-hébergé, écrit en Go côté serveur et React côté client. Édition Team gratuite (open source, fonctionnalités essentielles), édition Enterprise payante (SSO SAML, compliance). Pour une PME de 10 à 100 personnes à Dakar, Abidjan ou Yaoundé, l’édition Team suffit largement et coûte zéro licence.

Comparé à Slack à 7,25 USD/utilisateur/mois (~4 760 FCFA), une équipe de 30 personnes économise environ 200 000 FCFA/mois sur Mattermost auto-hébergé. Comparé à Discord, vous gardez vos données chez vous et vous bénéficiez d’une vraie hiérarchie d’équipes. Le compromis : il faut opérer un VPS et faire des sauvegardes.

Mattermost n’est pas adapté si : votre équipe veut absolument la voix/visio intégrée (préférez Element + Jitsi), vous n’avez personne pour opérer un Linux, ou vous publiez fortement vers des clients externes (Slack reste meilleur pour le support client BtoB).

Étape 2 : provisionner le VPS et préparer Docker

Cible recommandée : VPS 4 vCPU / 8 Go RAM / 80 Go SSD, Debian 12 ou Ubuntu 24.04 LTS. Hetzner CX32 (~7 EUR/mois soit ~4 590 FCFA) ou Scaleway DEV1-M conviennent. Évitez les VPS sous 4 Go : la JVM PostgreSQL et Mattermost ensemble saturent vite.

# Préparation du serveur (Debian 12)
apt update && apt upgrade -y
apt install -y docker.io docker-compose-plugin git
systemctl enable --now docker
usermod -aG docker $USER
# Ouvrez les ports 80 et 443 dans le firewall
ufw allow 80,443/tcp
ufw enable

Résultat attendu : docker --version retourne la version 24.x ou 27.x. Si vous opérez derrière un NAT (rare en VPS, fréquent en on-premise au bureau), prévoyez un reverse proxy public ou un tunnel Cloudflare.

Étape 3 : déployer Mattermost 10 LTS via Docker Compose

Mattermost 10.5 est la version LTS publiée fin 2025, supportée jusqu’en 2027. Préférez-la à la 9.x sortante. Récupérez le compose officiel et adaptez-le.

git clone https://github.com/mattermost/docker mattermost-docker
cd mattermost-docker
cp env.example .env
# Éditez .env pour fixer DOMAIN, TZ, et les mots de passe

Variables clés à modifier dans .env : DOMAIN=chat.votre-domaine.io, TZ=Africa/Dakar, POSTGRES_PASSWORD à un mot de passe fort, MM_SQLSETTINGS_DRIVERNAME=postgres. Démarrez ensuite :

mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
chown -R 2000:2000 ./volumes/app/mattermost
docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d

Sortie attendue : trois conteneurs up (postgres, mattermost, nginx). Vérifiez avec docker compose ps. Si mattermost redémarre en boucle, vérifiez que le dossier volumes appartient bien à l’UID 2000.

Étape 4 : configurer HTTPS Let’s Encrypt automatique

Le compose officiel inclut un Nginx avec support certbot. Initialisez le certificat :

# Première émission (interactive)
bash ./scripts/issue-certificate.sh -d chat.votre-domaine.io -o ${PWD}/certs
docker compose -f docker-compose.yml -f docker-compose.nginx.yml restart nginx

Sortie de référence : un fichier fullchain.pem et privkey.pem dans certs/etc/letsencrypt/live/chat.votre-domaine.io/. Testez l’accès HTTPS depuis un autre poste : curl -I https://chat.votre-domaine.io doit retourner 200 ou 302. Le renouvellement automatique se fait via un cron embarqué.

Étape 5 : créer le compte System Admin et la première équipe

À la première connexion sur https://chat.votre-domaine.io, le tout premier utilisateur enregistré devient System Admin. Créez immédiatement ce compte avec un email de service (admin@votre-domaine.io) et un mot de passe long stocké dans votre coffre.

Créez ensuite votre première équipe (Team) — par exemple « ITSkillsCenter ». Une instance Mattermost peut héberger plusieurs équipes isolées. Pour une PME mono-entité, une seule équipe suffit. Pour un groupe avec plusieurs filiales, créez une équipe par filiale.

Désactivez immédiatement l’inscription ouverte : System Console → Authentication → Signup → Enable Account Creation = false. Les comptes seront créés par invitation uniquement, ce qui évite les comptes parasites.

Étape 6 : structurer les canaux pour une équipe francophone

Le piège classique : créer 50 canaux dès le départ. Démarrez avec 5 à 8 canaux maximum, vous en ajouterez selon le besoin réel. Pour une PME tech ouest-africaine, structure éprouvée :

# Structure recommandée
#general          (annonces, accueil — lecture seule sauf admins)
#aleatoire        (off-topic, blagues, photos)
#tech-dev         (questions techniques, code review)
#tech-ops         (incidents production, alertes)
#commercial       (deals, suivi clients)
#rh-admin         (paie, congés, contrats — privé)

Convention de nommage : tout en minuscules, séparateurs par tiret. Les canaux privés se reconnaissent au cadenas. Pour un sujet sensible (paie, juridique), utilisez Private Channel et invitez nominativement les personnes concernées.

Étape 7 : intégrer SSO via OIDC (Keycloak ou Authentik)

L’édition Team supporte GitLab OAuth gratuitement. Pour OIDC générique (Keycloak, Authentik, Entra ID), l’édition Enterprise (10 USD/utilisateur/mois ~6 560 FCFA) est requise sauf astuce : l’OAuth2 GitLab générique peut être détourné pour pointer vers Keycloak en mode compatible. Documenté officiellement depuis 10.0.

# System Console → Authentication → GitLab → Enable
# GitLab Site URL: https://auth.votre-domaine.io/realms/votre-realm
# Application ID: mattermost
# Application Secret: (généré dans Keycloak)
# User API Endpoint: .../protocol/openid-connect/userinfo
# Auth Endpoint: .../protocol/openid-connect/auth
# Token Endpoint: .../protocol/openid-connect/token

Côté Keycloak, créez un Client public avec redirect URI https://chat.votre-domaine.io/signup/gitlab/complete. Activez le mapping email et username. Résultat attendu : le bouton « GitLab » apparaît sur l’écran de login Mattermost et un clic vous redirige vers Keycloak.

Étape 8 : sauvegarder PostgreSQL et le dossier data

Mattermost stocke deux choses : la base PostgreSQL (messages, utilisateurs, métadonnées) et le dossier data (fichiers uploadés, avatars). Il faut sauvegarder les deux en cohérence.

# /etc/cron.daily/mattermost-backup
#!/bin/bash
set -e
DATE=$(date +%Y%m%d)
DIR=/var/backups/mattermost
mkdir -p $DIR
# Dump PostgreSQL
docker exec mattermost-postgres-1 pg_dump -U mmuser mattermost \
  | gzip > $DIR/db-$DATE.sql.gz
# Snapshot data (tar)
tar czf $DIR/data-$DATE.tar.gz \
  -C /opt/mattermost-docker/volumes/app/mattermost data
# Synchronisation hors-site
rclone copy $DIR b2:mes-backups/mattermost/ --max-age 24h
find $DIR -mtime +14 -delete

Vous devriez obtenir : un fichier db-AAAAMMJJ.sql.gz de quelques Mo à quelques centaines de Mo selon l’usage, et data-AAAAMMJJ.tar.gz proportionnel aux fichiers uploadés. Testez la restauration tous les trimestres sur un VPS de staging.

Étape 9 : durcir la sécurité de l’instance

Quatre durcissements obligatoires avant d’inviter vos utilisateurs.

D’abord, exigez le MFA : System Console → Authentication → MFA → Enforce Multi-factor Authentication = true. Tout utilisateur sera contraint d’activer TOTP à la prochaine connexion.

Ensuite, activez la stratégie de mot de passe forte : longueur minimale 14, requiert chiffres, majuscules, symboles. Désactivez la récupération par email si vous avez SSO actif (sinon c’est un vecteur de phishing).

Activez la rétention : System Console → Compliance → Data Retention Policy. Pour une PME, 365 jours pour les messages publics, 90 jours pour les fichiers volumineux suffisent. Cela limite la croissance de la base et le risque RGPD.

Enfin, activez les logs d’audit dans /var/log/mattermost/audit.log et synchronisez-les vers un stockage externe append-only (Backblaze B2 avec versioning, par exemple).

Étape 10 : intégrer Mattermost à votre quotidien (webhooks, mobile, slash commands)

Une fois l’instance stable, branchez vos outils. Webhooks entrants pour recevoir les alertes Grafana, GitLab CI, Sentry. Webhooks sortants pour déclencher des scripts. Slash commands pour interagir avec vos services internes.

# Exemple : webhook entrant pour alertes Grafana
# 1. Mattermost → Integrations → Incoming Webhook → Add
# 2. Copier l'URL générée
# 3. Dans Grafana → Alerting → Contact points → New
#    Type: Webhook, URL: l'URL Mattermost
# 4. Tester depuis Grafana, vérifier que le message arrive

# Exemple de payload manuel
curl -X POST -H 'Content-Type: application/json' \
  -d '{"text":"Test depuis le serveur de prod"}' \
  https://chat.votre-domaine.io/hooks/xxxxxxxxx

Installez l’application mobile Mattermost (iOS/Android) sur les téléphones de l’équipe et configurez-la sur votre instance. Vérifiez la consommation data : Mattermost mobile reste léger (~50 Mo/mois en usage standard), compatible avec les forfaits Mixx by Yas et Orange Sénégal data limitée.

Pour creuser ce sujet sur la communication d’équipe sans Slack, lisez notre tutoriel Element/Matrix pour PME et le guide Jitsi Meet auto-hébergé. Vous pouvez ensuite combiner les deux pour avoir chat + visio entièrement souverains.

مشاركة