Mattermost : Installation sur Debian/Ubuntu
Guide d'installation complet de Mattermost, une plateforme de messagerie collaborative open source, l'alternative self-hosted à Slack
Mattermost est une plateforme de collaboration open source conçue pour les environnements qui exigent le contrôle total des données et des communications. Utilisée comme messagerie instantanée interne en entreprise, elle offre messagerie persistante, canaux structurés, appels audio, automatisation de workflows et intégrations DevSecOps et ITSM avec GitHub, GitLab, Jira, PagerDuty ou ServiceNow, le tout déployé sur votre propre infrastructure. Adoptée par des organisations comme la NASA, l’US Air Force ou Samsung, c’est la référence pour les équipes techniques et les organisations soumises à des exigences de conformité et de souveraineté numérique.
Objectif
Déployer Mattermost Server sur Debian/Ubuntu avec PostgreSQL comme base de données.
Systèmes cibles : Debian 12 ou Ubuntu 22.04+
Niveau requis : Administrateur système (sudo)
Prérequis
Caractéristiques minimales du serveur
Données issues de la documentation officielle Mattermost. Les besoins en RAM peuvent augmenter selon l’activité de partage de fichiers (taille max par défaut : 50 Mo).
| Ressource | Jusqu’à 1 000 utilisateurs | Jusqu’à 2 000 utilisateurs |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 2 Go | 4 Go |
| Architecture | 64-bit x86 | 64-bit x86 |
| OS | Ubuntu 22.04+ / Debian Buster+ | Ubuntu 22.04+ / Debian Buster+ |
| Base de données | PostgreSQL 14.0+ | PostgreSQL 14.0+ |
| Stockage de base | 600 Mo à 800 Mo (OS + BDD) | 600 Mo à 800 Mo (OS + BDD) |
| Stockage fichiers | Selon usage (5 à 25 Mo/utilisateur/mois) | Selon usage (5 à 25 Mo/utilisateur/mois) |
Vérifications logicielles
| Prérequis | Commande de vérification |
|---|---|
| Accès sudo ou root | sudo -v |
| Connexion Internet active | ping -c 2 google.com |
| Port 8065 disponible | ss -tlnp | grep 8065 |
Mise à jour système
sudo apt update && sudo apt upgrade -y
Utilitaires requis
sudo apt install curl gnupg2 software-properties-common bash-completion nano -y
Dépôt officiel Mattermost
curl -sL https://deb.packages.mattermost.com/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/mattermost-archive-keyring.gpg > /dev/null
curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost
sudo apt update
Installation Mattermost
sudo apt install mattermost -y
Installation PostgreSQL
sudo apt install postgresql postgresql-contrib -y
Vérifier que le service est actif et activé au démarrage :
sudo systemctl status postgresql

PostgreSQL : création de la base
sudo -u postgres psql
@. Ce caractère est interprété comme séparateur dans les chaînes de connexion PostgreSQL et casse le DataSource silencieusement. Utilise un mot de passe robuste de ce type : Xk9#mP2vLq8nRt5wCréer la base de données et l’utilisateur :
CREATE DATABASE mattermost_db;
CREATE USER mattermost_user WITH PASSWORD 'VotreMotDePasse';
GRANT ALL PRIVILEGES ON DATABASE mattermost_db TO mattermost_user;
ALTER DATABASE mattermost_db OWNER TO mattermost_user;
mattermost_db, mattermost_user et VotreMotDePasse par les valeurs de ton choix. Ces trois éléments doivent rester cohérents dans toutes les étapes suivantes.Se connecter à la base, puis appliquer les privilèges sur le schéma :
\c mattermost_db
GRANT ALL ON SCHEMA public TO mattermost_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO mattermost_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO mattermost_user;
\q
mattermost_db et mattermost_user par les noms définis à l’étape précédente.systemd : dépendance PostgreSQL
Ne pas modifier /lib/systemd/system/mattermost.service directement. Utiliser un fichier d’override qui survit aux mises à jour :
sudo mkdir -p /etc/systemd/system/mattermost.service.d/
sudo tee /etc/systemd/system/mattermost.service.d/postgresql-dep.conf <<EOF
[Unit]
After=postgresql.service
BindsTo=postgresql.service
EOF
BindsTo force Mattermost à s’arrêter si PostgreSQL s’arrête. After garantit l’ordre de démarrage. Sans ça, Mattermost peut tenter de démarrer avant que la base soit prête et échouer silencieusement.sudo systemctl daemon-reload
Configuration Mattermost
sudo -u mattermost cp /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json
sudo chmod 600 /opt/mattermost/config/config.json
sudo nano /opt/mattermost/config/config.json
Rechercher DriverName avec Ctrl+W, vérifier que la valeur est postgres :
"DriverName": "postgres",
Rechercher DataSource et remplacer avec les identifiants créés plus haut :
"DataSource": "postgres://mattermost_user:VotreMotDePasse@localhost:5432/mattermost_db?sslmode=disable&connect_timeout=10",
mattermost_user, VotreMotDePasse et mattermost_db par les valeurs définies à l’étape PostgreSQL. Le nom d’utilisateur et le nom de la base doivent correspondre exactement à ce qui a été créé. Une simple faute de frappe ici cause une erreur silencieuse au démarrage.Rechercher SiteURL et définir l’adresse du serveur :
"SiteURL": "http://IP_SERVEUR:8065",
Sauvegarder : Ctrl+X, Y, Entrée.
Démarrage des services
sudo systemctl enable postgresql mattermost
sudo systemctl start postgresql mattermost
sudo systemctl status mattermost

Si le service échoue, consulter l’erreur exacte :
journalctl -xeu mattermost.service --no-pager | grep -E "error|Error|failed" | head -20
Accéder à Mattermost
http://IP_SERVEUR:8065
L’assistant de configuration s’affiche pour créer le compte administrateur et configurer l’équipe.
Démonstration : Mon déploiement complet
Enregistrement de la procédure complète réalisée sur un serveur Ubuntu 22.04.
▶ Voir mon déploiement complet sur asciinema.org
Captures post déploiement de l’interface de connexion





Dépannage
sudo: unknown user postgres : PostgreSQL n’est pas installé ou l’installation a échoué. Réinstaller avec sudo apt purge postgresql* -y && sudo apt install postgresql postgresql-contrib -y.
Service Mattermost ne démarre pas : Consulter les logs avec sudo journalctl -u mattermost -f. Vérifier le DataSource dans config.json. Le nom d’utilisateur, le mot de passe et le nom de la base doivent correspondre exactement à ce qui a été créé dans PostgreSQL.
Port 8065 inaccessible : Ouvrir le port avec sudo ufw allow 8065.
PostgreSQL ne démarre pas avant Mattermost : Vérifier que le fichier postgresql-dep.conf existe dans /etc/systemd/system/mattermost.service.d/.