15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
01.11.2024
1 +1

Comment installer Mattermost sur Ubuntu : Guide complet étape par étape

Mattermost est une plateforme puissante et open-source de messagerie et de collaboration d’équipe qui donne aux organisations un contrôle total sur leur infrastructure de communication. En tant qu’alternative auto-hébergée à Slack et Microsoft Teams, Mattermost offre une sécurité de niveau entreprise, une propriété complète des données et une personnalisation extensive — le tout sans frais d’abonnement SaaS récurrents.

Ce guide complet vous guide à travers chaque étape de l’installation et de la configuration de Mattermost sur un serveur Ubuntu, y compris la configuration de la base de données PostgreSQL, la configuration du proxy inverse Nginx et l’intégration des certificats SSL.

Table des matières

  1. Prérequis
  2. Mettre à jour votre système
  3. Installer les dépendances requises
  4. Télécharger et installer Mattermost
  5. Configurer la base de données PostgreSQL
  6. Configurer Mattermost
  7. Créer un service Systemd
  8. Configurer Nginx en tant que proxy inverse
  9. Sécuriser Mattermost avec SSL (HTTPS)
  10. Vérification finale

1. Prérequis

Avant de commencer, assurez-vous que les conditions suivantes sont en place :

  • Un serveur exécutant Ubuntu 20.04 ou Ubuntu 22.04 LTS (Ubuntu 18.04 est en fin de vie et non recommandé pour la production)
  • Privilèges sudo ou root sur le serveur
  • Un nom de domaine pointant vers l’adresse IP de votre serveur (fortement recommandé pour les déploiements en production)
  • Matériel minimum : 1 vCPU, 2 GB RAM, 10 GB d’espace disque (pour les petites équipes) ; augmentez pour les déploiements plus importants

> Conseil d’hébergement : Pour un déploiement fluide de Mattermost, envisagez un plan VPS Hosting fiable d’AlexHost. Avec le stockage SSD, l’accès root complet et le temps d’activité garanti, les instances VPS d’AlexHost sont idéales pour les outils de collaboration auto-hébergés.

2. Mettre à jour votre système

Commencez toujours par actualiser votre index de paquets et appliquer toutes les mises à jour de sécurité et système en attente :

sudo apt update
sudo apt upgrade -y

Redémarrez le serveur si une mise à jour du noyau a été appliquée :

sudo reboot

3. Installer les dépendances requises

Mattermost dépend de trois composants clés : PostgreSQL (base de données), Nginx (proxy inverse) et Certbot (gestion des certificats SSL).

Installez tous les paquets requis en une seule étape :

sudo apt install -y postgresql postgresql-contrib
sudo apt install -y nginx
sudo apt install -y certbot python3-certbot-nginx

Vérifiez que PostgreSQL et Nginx sont en cours d’exécution :

sudo systemctl status postgresql
sudo systemctl status nginx

Les deux services doivent afficher active (running).

4. Télécharger et installer Mattermost

Étape 1 : Télécharger la dernière version de Mattermost

Visitez la page officielle des versions de Mattermost pour trouver la dernière version stable. Utilisez wget pour la télécharger directement sur votre serveur :

wget https://releases.mattermost.com/9.5.0/mattermost-team-9.5.0-linux-amd64.tar.gz

> Remarque : Remplacez 9.5.0 par le numéro de version stable le plus récent disponible. Utilisez toujours la version stable la plus récente pour les correctifs de sécurité et les nouvelles fonctionnalités.

Étape 2 : Extraire l’archive

tar -xvzf mattermost-team-9.5.0-linux-amd64.tar.gz

Étape 3 : Déplacer Mattermost vers le répertoire système

Déplacez le dossier extrait vers /opt, qui est l’emplacement standard Linux pour les logiciels tiers optionnels :

sudo mv mattermost /opt/mattermost

Étape 4 : Créer un utilisateur système Mattermost dédié

L’exécution de Mattermost en tant qu’utilisateur dédié et non privilégié est une meilleure pratique de sécurité critique :

sudo useradd -r -m -d /opt/mattermost -s /bin/false mattermost

Étape 5 : Créer le répertoire de données et définir les permissions

sudo mkdir -p /opt/mattermost/data
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R 750 /opt/mattermost

5. Configurer la base de données PostgreSQL

Mattermost nécessite une base de données PostgreSQL et un utilisateur dédiés. Suivez ces étapes attentivement.

Étape 1 : Basculer vers l’utilisateur système PostgreSQL

sudo -i -u postgres

Étape 2 : Ouvrir le shell interactif PostgreSQL

psql

Étape 3 : Créer la base de données, l’utilisateur et accorder les privilèges

Exécutez les commandes SQL suivantes une par une :

CREATE DATABASE mattermost_db;
CREATE USER mattermost WITH PASSWORD 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON DATABASE mattermost_db TO mattermost;

> Remarque de sécurité : Remplacez YourStrongPassword123! par un mot de passe fort et unique. Utilisez un gestionnaire de mots de passe pour le générer et le stocker en toute sécurité.

Pour PostgreSQL 15 et versions ultérieures, vous devez également accorder les privilèges de schéma :

c mattermost_db
GRANT ALL ON SCHEMA public TO mattermost;

Étape 4 : Quitter le shell PostgreSQL et revenir à votre utilisateur

q
exit

6. Configurer Mattermost

Étape 1 : Ouvrir le fichier de configuration Mattermost

sudo nano /opt/mattermost/config/config.json

Étape 2 : Mettre à jour les paramètres de connexion à la base de données

Localisez le bloc SqlSettings et mettez-le à jour avec vos identifiants PostgreSQL :

"SqlSettings": {
    "DriverName": "postgres",
    "DataSource": "postgres://mattermost:YourStrongPassword123!@localhost:5432/mattermost_db?sslmode=disable&connect_timeout=10",
    "DataSourceReplicas": [],
    "DataSourceSearchReplicas": [],
    "MaxIdleConns": 20,
    "ConnMaxLifetimeMilliseconds": 3600000,
    "MaxOpenConns": 300,
    "Trace": false,
    "AtRestEncryptKey": "",
    "QueryTimeout": 30
}

Étape 3 : Configurer l’URL du site

Trouvez le bloc ServiceSettings et définissez votre domaine :

"ServiceSettings": {
    "SiteURL": "https://your_domain.com",
    ...
}

Remplacez your_domain.com par votre nom de domaine réel.

Étape 4 : Enregistrer et quitter

Appuyez sur Ctrl+X, puis Y, puis Enter pour enregistrer et fermer le fichier.

7. Créer un service Systemd

L’exécution de Mattermost en tant que service systemd garantit qu’il démarre automatiquement au démarrage et redémarre en cas d’échec — essentiel pour tout déploiement en production.

Étape 1 : Créer le fichier de service

sudo nano /etc/systemd/system/mattermost.service

Étape 2 : Ajouter la configuration du service

Collez le contenu suivant :

[Unit]
Description=Mattermost Team Messaging Server
After=network.target postgresql.service
Wants=postgresql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Étape 3 : Activer et démarrer le service Mattermost

sudo systemctl daemon-reload
sudo systemctl enable mattermost
sudo systemctl start mattermost

Étape 4 : Vérifier que le service est en cours d’exécution

sudo systemctl status mattermost

Vous devriez voir active (running). Mattermost écoute sur le port 8065 par défaut.

8. Configurer Nginx en tant que proxy inverse

Nginx agit comme un proxy inverse, transférant le trafic HTTP/HTTPS entrant des ports 80/443 vers le port interne 8065 de Mattermost. Cela permet également le support WebSocket, que Mattermost nécessite pour la messagerie en temps réel.

Étape 1 : Créer le fichier de configuration Nginx

sudo nano /etc/nginx/sites-available/mattermost

Étape 2 : Ajouter la configuration du proxy inverse

upstream backend {
    server localhost:8065;
    keepalive 32;
}

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;

server {
    listen 80;
    server_name your_domain.com;

    location ~ /api/v[0-9]+/(users/)?websocket$ {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        client_max_body_size 50M;
        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_buffers 256 16k;
        proxy_buffer_size 16k;
        proxy_read_timeout 600s;
        proxy_pass http://backend;
    }

    location / {
        client_max_body_size 50M;
        proxy_set_header Connection "";
        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_buffers 256 16k;
        proxy_buffer_size 16k;
        proxy_read_timeout 600s;
        proxy_cache mattermost_cache;
        proxy_cache_revalidate on;
        proxy_cache_min_uses 2;
        proxy_cache_use_stale timeout;
        proxy_cache_lock on;
        proxy_pass http://backend;
    }
}

Remplacez your_domain.com par votre nom de domaine réel.

Étape 3 : Activer la configuration du site

sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/

Étape 4 : Tester la configuration Nginx pour les erreurs de syntaxe

sudo nginx -t

Résultat attendu :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Étape 5 : Redémarrer Nginx

sudo systemctl restart nginx

9. Sécuriser Mattermost avec SSL (HTTPS)

L’exécution de Mattermost sur HTTPS est obligatoire pour tout environnement de production. Il chiffre toutes les communications entre les utilisateurs et votre serveur, protégeant les identifiants et les messages contre l’interception.

> SSL facile : AlexHost offre des certificats SSL abordables pour tous les types de sites Web et d’applications. Sinon, utilisez la méthode Let’s Encrypt gratuite ci-dessous.

Étape 1 : Obtenir un certificat SSL gratuit avec Certbot

sudo certbot --nginx -d your_domain.com

Certbot effectuera automatiquement :

  • Vérifier la propriété du domaine
  • Émettre un certificat Let’s Encrypt
  • Modifier votre configuration Nginx pour activer HTTPS
  • Configurer le renouvellement automatique du certificat

Étape 2 : Vérifier le renouvellement automatique

sudo certbot renew --dry-run

Étape 3 : Redémarrer Nginx

sudo systemctl restart nginx

Votre instance Mattermost est maintenant accessible à https://your_domain.com.

10. Vérification finale

Vérifier que tous les services sont en cours d’exécution

sudo systemctl status postgresql
sudo systemctl status mattermost
sudo systemctl status nginx

Tester Mattermost directement sur le port 8065

curl -I http://localhost:8065

Vous devriez recevoir une réponse HTTP 200 OK ou une redirection.

Terminer la configuration basée sur le Web

  1. Ouvrez votre navigateur et accédez à https://your_domain.com
  2. Vous serez accueilli par l’assistant de configuration Mattermost
  3. Créez votre compte administrateur
  4. Configurez votre première équipe et espace de travail
  5. Invitez les membres de l’équipe et commencez à collaborer

Dépannage des problèmes courants

ProblèmeCause probableSolution
Le service Mattermost ne démarre pasIdentifiants de base de données incorrects dans config.json
15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer