Installer Mattermost avec PostgreSQL et Nginx sur Ubuntu 16.04

Pré-requis
- Ubuntu 16.04 64 bits (les commandes s’appliquent à cette version).
- Accès root ou sudo sur le serveur.
- Nom de domaine pointant vers le serveur (recommandé pour TLS).
Important: adaptez les chemins et les noms d’utilisateur à votre politique interne. Choisissez des mots de passe forts et stockez-les dans un gestionnaire de secrets.
Étape 1 - Installer et configurer PostgreSQL
Mattermost supporte MySQL et PostgreSQL. Ce tutoriel utilise PostgreSQL.
Connectez-vous au serveur via SSH et mettez à jour les paquets :
ssh [email protected]
sudo apt-get update
Installez PostgreSQL :
sudo apt-get install postgresql postgresql-contrib
Passez à l’utilisateur postgres et ouvrez le shell psql :
su - postgres
psql
Changez le mot de passe du compte postgres :
\password postgres
Enter new password:
Créez une base de données et un utilisateur pour Mattermost. Dans cet exemple : base de données mattermostdb
, utilisateur matteruser
, mot de passe matterpassword
. Remplacez par des valeurs sécurisées :
CREATE DATABASE mattermostdb;
CREATE USER matteruser WITH PASSWORD 'matterpassword';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb TO matteruser;
\q
Conseils rapides :
- Activez les sauvegardes régulières (pg_dump/pg_basebackup) et testez les restaurations.
- Limitez l’accès réseau à PostgreSQL via des règles de pare-feu (ufw/iptables).
- Pour les systèmes en production, ajustez
shared_buffers
etwork_mem
selon la RAM disponible.
Fact box — paramètres clés
- Port PostgreSQL par défaut : 5432
- Utilisateur recommandé : dédié à Mattermost (ex. matteruser)
- Sauvegardes : au moins quotidiennes
Étape 2 - Installer et configurer Mattermost
Créez un utilisateur système non privilégié pour exécuter Mattermost (ici matter
) :
useradd -m -s /bin/bash matter
passwd matter
Connectez-vous en tant que matter
et téléchargez l’archive Mattermost (conservez la commande d’origine ou adaptez la version) :
su - matter
wget https://releases.mattermost.com/3.4.0/mattermost-3.4.0-linux-amd64.tar.gz
Extrayez l’archive et entrez dans le dossier :
tar -xzvf mattermost-3.4.0-linux-amd64.tar.gz
cd mattermost/
Créez le dossier de données et éditez la configuration :
mkdir data/
vim config/config.json
Pour exécuter Mattermost derrière Nginx, configurez-le pour écouter en local. Dans le bloc ServiceSettings, définissez :
"ListenAddress": "127.0.0.1:8065",
Dans le bloc SqlSettings, paramétrez PostgreSQL :
"DriverName": "postgres",
"DataSource": "postgres://matteruser:[email protected]:5432/mattermostdb?sslmode=disable&connect_timeout=10",
Remarques :
matteruser
= utilisateur PostgreSQL créé précédemment.matterpassword
= mot de passe choisi.mattermostdb
= nom de la base de données.
Sauvegardez et quittez l’éditeur.
Lancez Mattermost depuis le répertoire bin
pour un test :
cd bin/
./platform
Appuyez sur Ctrl+C pour arrêter le processus si vous l’avez lancé en foreground.
Important: assurez-vous des permissions des dossiers (/home/matter/mattermost
et data/
) : l’utilisateur matter
doit en être propriétaire.
Étape 3 - Configurer le service systemd
Créez un fichier de service systemd pour exécuter Mattermost en tant que service :
cd /etc/systemd/system/
vim mattermost.service
Collez la configuration suivante :
[Unit]
Description=Mattermost is an open source, self-hosted Slack-alternative
After=syslog.target network.target
[Service]
Type=simple
User=matter
Group=matter
ExecStart=/home/matter/mattermost/bin/platform
PrivateTmp=yes
WorkingDirectory=/home/matter/mattermost
Restart=always
RestartSec=30
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
Rechargez systemd et démarrez le service :
systemctl daemon-reload
systemctl start mattermost
Vérifiez l’état et l’absence d’erreur :
netstat -plntu
systemctl status mattermost
Note: adaptez LimitNOFILE
si vous prévoyez de nombreux utilisateurs simultanés.
Étape 4 - Installer et configurer Nginx
Installez Nginx :
sudo apt-get install nginx
Créez ensuite un répertoire pour les certificats SSL :
cd /etc/nginx/
mkdir ssl/; cd ssl/
Générez un certificat auto-signé pour les tests (en production, utilisez Let’s Encrypt ou un certificat valide) :
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/mattermost.crt -keyout /etc/nginx/ssl/mattermost.key
chmod 400 mattermost.key
Créez le fichier de configuration du site :
cd /etc/nginx/sites-available/
vim mattermost
Collez la configuration suivante et remplacez mattermost.mydomain.com
par votre domaine :
server {
listen 80;
server_name mattermost.mydomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name mattermost.mydomain.com;
ssl on;
ssl_certificate /etc/nginx/ssl/mattermost.crt;
ssl_certificate_key /etc/nginx/ssl/mattermost.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
location / {
gzip off;
proxy_set_header X-Forwarded-Ssl on;
client_max_body_size 50M;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://127.0.0.1:8065;
}
}
Activez le site et testez la configuration :
ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Conseil de sécurité TLS :
- En production, utilisez des certificats validés (Let’s Encrypt) au lieu d’auto-signés.
- Désactivez TLSv1 et TLSv1.1 si vos clients le supportent, privilégiez TLS 1.2+ et ciphers modernes.
Étape 5 - Tests fonctionnels
Ouvrez un navigateur sur https://mattermost.mydomain.com
. Vous serez redirigé vers HTTPS.
- Créez un compte via “Create Account”.
- Accédez à la Console Système (“Go to System Console”) pour configurer l’instance.
- Créez une équipe et vérifiez que les canaux et le chat fonctionnent.
Sécurisation et bonnes pratiques
- Réalisez des sauvegardes régulières et testez les restaurations.
- Séparez les services (DB et application) si possible, pour isoler les ressources.
- Surveillez les logs (systemd, Mattermost, PostgreSQL, Nginx) avec un outil centralisé (rsyslog, ELK, Prometheus + Grafana).
- Minimisez les droits des comptes : Mattermost et PostgreSQL doivent utiliser des comptes dédiés.
- Chiffrez les sauvegardes et limitez l’accès aux clés privées.
Mesures spécifiques :
- Utilisez Let’s Encrypt pour TLS en production : automatisation avec certbot.
- Activez la rotation des clés et mots de passe périodiquement.
- Configurez un pare-feu pour n’autoriser que les ports nécessaires (80, 443, SSH restreint).
Privacy / GDPR notes
- Si vous traitez des données personnelles, documentez les flux et la durée de conservation.
- Prévoyez un plan de suppression des comptes et des backups en conformité avec la législation.
Migration et compatibilité
- Si vous migrez depuis une autre version d’Ubuntu, testez la compatibilité des paquets et des chemins (systemd, chemins utilisateur).
- Pour mettre à jour Mattermost, suivez la procédure officielle de mise à jour pour éviter la corruption de la base.
- Vérifiez la compatibilité de la version de PostgreSQL avec la version de Mattermost utilisée.
Critères d’acceptation
Avant mise en production, vérifiez :
- L’instance répond sur HTTPS pour votre domaine.
- L’authentification fonctionne et la console admin est accessible.
- Les messages sont persistés et récupérables après redémarrage du service.
- Les sauvegardes fonctionnent et une restauration testée a réussi.
- Les logs n’affichent pas d’erreurs critiques au démarrage.
Checklist par rôle
Sysadmin:
- Mettre en place les sauvegardes et la surveillance.
- Configurer le pare-feu et l’alerte.
DevOps:
- Automatiser le déploiement (Ansible/Chef/Puppet).
- Tester la montée en charge et le redémarrage automatique.
Sécurité:
- Valider la configuration TLS et les permissions.
- Effectuer un scan vulnérabilité et corriger les failles.
Utilisateur final:
- Vérifier la création de compte et l’accès aux fonctionnalités de base (canal, message privé, notifications).
Méthodologie rapide (mini-playbook)
- Préparer le serveur (mise à jour, firewall).
- Installer PostgreSQL et créer la base/utilisateur.
- Installer Mattermost sous un utilisateur dédié.
- Configurer systemd et démarrer le service.
- Installer Nginx et configurer TLS.
- Tester, monitorer, sauvegarder.
Scénarios de test et cas limites
- Test de montée en charge basique : plusieurs connexions simultanées, envoi de fichiers jusqu’à la limite
client_max_body_size
. - Test de défaillance : redémarrer PostgreSQL, vérifier que Mattermost gère correctement la reconnection.
- Test de restauration : restaurer une sauvegarde sur un serveur de test et valider l’intégrité des messages.
Dépannage rapide
- Si Mattermost ne démarre pas : consultez
journalctl -u mattermost
et/home/matter/mattermost/logs
. - Erreur de connexion DB : vérifiez
DataSource
dansconfig/config.json
et la connectivité réseau vers PostgreSQL. - Erreur Nginx :
nginx -t
fournit des diagnostics précis.
Résumé
Ce guide couvre l’installation complète de Mattermost avec PostgreSQL et Nginx sur Ubuntu 16.04 : création des comptes système et base de données, configuration de Mattermost, service systemd, reverse proxy TLS et vérifications. Appliquez les bonnes pratiques de sécurité et automatisez les sauvegardes avant mise en production.
Références
Matériaux similaires

Indemnisation Apple Siri : qui est éligible

Photo de profil Facebook en GIF — guide rapide

Erreur Centipede Destiny 2 — Guide de résolution

Télécharger des images depuis Google Docs

Sauvegarder vos Memories Snapchat sans payer
