Introduction
Mattermost est une plateforme de messagerie open-source auto-hébergée, conçue comme alternative sécurisée à Slack ou Microsoft Teams. En 2026, elle reste un choix privilégié pour les équipes DevOps, IT et entreprises soumises à des contraintes de souveraineté des données, grâce à sa conformité RGPD native et son support Kubernetes.
Ce tutoriel beginner vous guide pas à pas pour installer Mattermost en local avec Docker Compose, incluant une base PostgreSQL dédiée. Vous apprendrez à lancer le serveur, effectuer le setup initial via l'interface web, créer votre première équipe et inviter des membres. Pourquoi Docker ? Il simplifie l'installation sur n'importe quel OS (Linux, macOS, Windows), gère les dépendances automatiquement et permet une scalabilité future.
À la fin, vous aurez un Mattermost fonctionnel en 15 minutes, prêt pour 100+ utilisateurs. Analogie : comme assembler un Lego avec des instructions précises, sans outils complexes. Importance : réduire les coûts (gratuit vs. 10€/user/mois pour Slack) et contrôler vos données. (142 mots)
Prérequis
- Docker version 27+ et Docker Compose v2.29+ installés (vérifiez avec
docker --versionetdocker compose version). - Ports 8065 (HTTP Mattermost) et 5432 (Postgres, interne) libres.
- Au moins 4 Go RAM et 2 vCPU pour un usage test (8 Go recommandé en prod).
- Connaissances basiques de terminal (copier-coller suffit pour beginner).
- Un domaine ou IP locale pour accès (ex: localhost:8065).
Créer le fichier Docker Compose
version: '3.8'
services:
db:
build:
context: .
dockerfile: postgres/Dockerfile
restart: unless-stopped
volumes:
- ./volumes/db/var/lib/postgresql/data:/var/lib/postgresql/data:rw
environment:
POSTGRES_USER: mmuser
POSTGRES_PASSWORD: mmuser_password
POSTGRES_DB: mattermost
networks:
- mattermost
app:
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
depends_on:
- db
ports:
- '8065:8065'
volumes:
- ./volumes/app/mattermost/config:/mattermost/config:rw
- ./volumes/app/mattermost/data:/mattermost/data:rw
- ./volumes/app/mattermost/logs:/mattermost/logs:rw
- ./volumes/app/mattermost/plugins:/mattermost/plugins:rw
- ./volumes/app/mattermost/client/plugins:/mattermost/client/plugins:rw
environment:
- MM_USERNAME=mmuser
- MM_PASSWORD=mmuser_password
- MM_DATABASE=mattermost
- MM_SERVICESETTINGS_SITEURL=http://localhost:8065
- MM_SERVICESETTINGS_LISTENADDRESS=:8065
networks:
- mattermost
networks:
mattermost:
driver: bridge
volumes:
db_data:
app_data:Ce docker-compose.yml définit deux services : db (PostgreSQL personnalisé pour performance) et app (Mattermost officiel). Les volumes persistent les données hors conteneurs, évitant les pertes au redémarrage. Les variables d'environnement configurent la DB et l'URL d'accès. Piège : n'oubliez pas les :rw sur volumes pour écriture ; testez avec docker compose config avant up.
Lancer Mattermost
Placez le fichier dans un dossier vide (ex: mattermost-local/). Créez les sous-dossiers ./volumes/app/mattermost/ et ./volumes/db/var/lib/postgresql/data/ avec mkdir -p. Exécutez ensuite les commandes dans la section code suivante. Docker téléchargera ~1 Go d'images (première fois seulement). Attendez 2-3 min pour que la DB initialise (logs: docker compose logs -f). Accédez à http://localhost:8065 : l'assistant de setup apparaît.
Démarrer les conteneurs
#!/bin/bash
# Cloner le repo officiel des Dockerfiles (optionnel, pour builds custom)
git clone https://github.com/mattermost/docker.git .
# Créer volumes si absents
mkdir -p volumes/app/mattermost/{config,data,logs,plugins,client/plugins}
mkdir -p volumes/db/var/lib/postgresql/data
# Lancer en arrière-plan
./bin/docker compose up -d
# Vérifier statut
echo "Logs DB:"
docker compose logs db
echo "\nLogs App:"
docker compose logs app
# Attendre init (manuel ou sleep 120)
sleep 10
echo "Mattermost prêt sur http://localhost:8065"Ce script bash clone les Dockerfiles officiels (pour compatibilité 2026), crée les volumes et lance docker compose up -d en daemon. Les logs aident au debug. Piège : si erreur DB 'role does not exist', relancez up après 30s ; utilisez docker compose down -v pour reset complet.
Setup initial via interface web
Sur http://localhost:8065, suivez l'assistant :
- DB Setup : URL
postgres://mmuser:mmuser_password@db:5432/mattermost?sslmode=disable&connect_timeout=10. - Site URL :
http://localhost:8065. - Admin Account : Créez
admin@local/ mot de passe fort.
Validez : Mattermost redémarre automatiquement. Login avec admin. Analogie : comme configurer un routeur WiFi, mais avec persistance DB.
Configuration email (SMTP)
{
"ServiceSettings": {
"SMTPServer": "smtp.gmail.com",
"SMTPPort": "587",
"SMTPUsername": "votre.email@gmail.com",
"SMTPPassword": "votre-app-password",
"ConnectionSecurity": "TLS",
"SendEmailNotifications": true,
"FeedbackName": "Mattermost",
"FeedbackEmail": "feedback@local"
},
"EmailSettings": {
"EnableSignUpWithEmail": true,
"RequireEmailVerification": true
}
}Copiez ce JSON dans ./volumes/app/mattermost/config/config.json et redémarrez (docker compose restart app). Il active les notifications email via Gmail (utilisez App Password 2026). Piège : TLS obligatoire pour Gmail ; testez avec /admin_console/general/email dans Mattermost. Persiste les configs hors conteneurs.
Créer votre première équipe
Dans l'interface :
- Clic + Create Team > Nom
MaTeam> Description. - Invite Members : Email ou lien (ex: http://localhost:8065/signup_user_complete/?id=xxx).
Visuel : Équipe = canal Slack-like. Créez channels
#general, #random. Partagez fichiers (limite 50MB par défaut).Script de backup automatisé
#!/bin/bash
BACKUP_DIR="/path/to/backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p $BACKUP_DIR
# Backup DB
docker compose exec db pg_dump -U mmuser mattermost > $BACKUP_DIR/mattermost.sql
# Backup app data
cp -r volumes/app/mattermost/{config,data,logs,plugins} $BACKUP_DIR/
tar czf $BACKUP_DIR.tar.gz -C /path/to/backups $BACKUP_DIR
rm -rf $BACKUP_DIR
echo "Backup créé : $BACKUP_DIR.tar.gz"
# Cron : ajouter à crontab -e
# 0 2 * * * /path/to/backup.shCe script bash dump la DB Postgres et archive les volumes app. Exécutez chmod +x backup.sh. Ajoutez au cron pour nightly (2h). Piège : adaptez /path/to/backups ; testez restore avec docker compose down -v puis import SQL.
Installer un plugin (ex: Jira)
#!/bin/bash
PLUGIN_URL="https://github.com/mattermost/mattermost-plugin-jira/releases/download/v2.4.0/com.mattermost.jira.tar.gz"
PLUGIN_DIR="./volumes/app/mattermost/plugins"
# Télécharger et extraire
wget -O /tmp/jira.tar.gz $PLUGIN_URL
tar -xzf /tmp/jira.tar.gz -C $PLUGIN_DIR
rm /tmp/jira.tar.gz
# Redémarrer app
./bin/docker compose restart app
echo "Plugin Jira installé. Activez dans System Console > Plugins > Jira."Script pour installer le plugin Jira officiel (2026 compatible). Place dans ./plugins, redémarre auto. Piège : plugins signés seulement en prod ; vérifiez logs docker compose logs app pour erreurs. Étend Mattermost sans rebuild.
Bonnes pratiques
- Sécurité : Changez mots de passe DB par défaut ; activez HTTPS avec Let's Encrypt + Nginx reverse proxy.
- Scalabilité : Passez à Kubernetes pour >500 users ; utilisez Redis pour cache.
- Monitoring : Intégrez Prometheus (
docker compose exec app mattermost plugin add mattermost-prometheus). - Updates :
docker compose pull && up -dmensuel ; testez en staging. - Backup 3-2-1 : 3 copies, 2 médias, 1 offsite.
Erreurs courantes à éviter
- Port occupé :
lsof -i:8065etkillavant up ; ou changez port dans compose. - DB non init : Attendez 2 min ou
docker compose logs db | grep ready. - Config.json non lu : Vérifiez ownership
chown -R 2000:2000 volumes/app/mattermost/(UID Mattermost). - Email échoue : Vérifiez App Password Gmail (non mot de passe standard).
Pour aller plus loin
- Docs officielles : Mattermost Docker.
- Avancé : Helm Chart Kubernetes.
- Plugins marketplace : 100+ disponibles.
- Découvrez nos formations Learni sur DevOps et collaboration pour masteriser Mattermost en prod.