Skip to content
Learni
Voir tous les tutoriels
Outils collaboratifs

Comment installer Mattermost avec Docker en 2026

Read in English

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 --version et docker 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

docker-compose.yml
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

terminal
#!/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 :

  1. DB Setup : URL postgres://mmuser:mmuser_password@db:5432/mattermost?sslmode=disable&connect_timeout=10.
  2. Site URL : http://localhost:8065.
  3. 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)

config/config.json
{
  "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é

backup.sh
#!/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.sh

Ce 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)

install-plugin.sh
#!/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 -d mensuel ; testez en staging.
  • Backup 3-2-1 : 3 copies, 2 médias, 1 offsite.

Erreurs courantes à éviter

  • Port occupé : lsof -i:8065 et kill avant 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