Comment installer et configurer Mattermost sur CentOS 8

Mattermost est un système de messagerie de collaboration d’équipe d’entreprise gratuit, open-source et auto-hébergé. Il est écrit en Golang et React, et utilise MySQL/MariaDB/PostgreSQL comme backend de base de données. Il propose des clients de bureau pour Windows, macOS et Linux et des applications mobiles pour iOS et Android Il est très similaire à Slack et rassemble toute ta communication d’équipe en un seul endroit. Il offre des fonctionnalités très utiles, notamment la messagerie individuelle et de groupe, le partage de fichiers, les appels vidéo, les emojis personnalisés, les webhooks et les commandes, et bien plus encore.

Dans ce tutoriel, nous allons te montrer comment installer Mattermost sur CentOS 8.

Conditions préalables

  • Un serveur exécutant CentOS 8.
  • Un mot de passe root est configuré sur ton serveur.

Installe et configure la base de données MariaDB

Mattermost utilise MariaDB/MySQL comme backend de base de données. Donc MariaDB doit être installé sur ton serveur. Si elle n’est pas installée, tu peux l’installer avec la commande suivante :

dnf install mariadb-server -y

Une fois installé, démarre le service MariaDB et active-le pour qu’il démarre après le redémarrage du système avec la commande suivante :

systemctl start mariadb
systemctl enable mariadb

Par défaut, MariaDB n’est pas sécurisé et le mot de passe root n’est pas défini dans CentOS 8. Tu peux donc le définir avec la commande suivante :

mysql_secure_installation

Réponds à toutes les questions comme indiqué ci-dessous :

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Une fois que tu as terminé, connecte-toi à MariaDB avec l’utilisateur root :

mysql -u root -p

Donne ton mot de passe root puis crée une base de données et un utilisateur pour Mattermost avec la commande suivante :

MariaDB [(none)]> CREATE DATABASE mattermostdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermostdb.* TO [email protected] IDENTIFIED BY 'password';

Ensuite, vide les privilèges et quitte le shell MariaDB avec la commande suivante :

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Installer Mattermost

Tout d’abord, tu dois créer un utilisateur distinct pour exécuter Mattermost. Tu peux le créer avec la commande suivante :

useradd -d /opt/mattermost -U -M mattermost

Ensuite, télécharge la dernière version de Mattermost avec la commande suivante :

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

Une fois le téléchargement terminé, extrais le fichier téléchargé avec la commande suivante :

tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz

Ensuite, déplace le répertoire extrait dans le /opt avec la commande suivante :

mv mattermost /opt/

Ensuite, crée un répertoire de données à l’intérieur de mattermost et donne les permissions appropriées à mattermost avec la commande suivante :

mkdir /opt/mattermost/data
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer Mattermost

Ensuite, tu devras définir ta base de données dans Mattermost. Tu peux le faire en modifiant le fichier config.json :

nano /opt/mattermost/config/config.json

Change les lignes suivantes en fonction des paramètres de ta base de données :

  "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "mattermost:[email protected](localhost:3306)/mattermostdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, change le répertoire en /opt/mattermost et démarre le serveur Mattermost avec la commande suivante :

cd /opt/mattermost
sudo -u mattermost bin/mattermost

Une fois que le serveur a été lancé avec succès, tu devrais obtenir la sortie suivante :

{"level":"info","ts":1585379681.8383002,"caller":"utils/i18n.go:83","msg":"Loaded system translations","for locale":"en","from locale":"/opt/mattermost/i18n/en.json"}
{"level":"info","ts":1585379681.83874,"caller":"app/server_app_adapters.go:58","msg":"Server is initializing..."}
{"level":"info","ts":1585379681.8470004,"caller":"sqlstore/supplier.go:221","msg":"Pinging SQL","database":"master"}
{"level":"info","ts":1585379684.7858346,"caller":"sqlstore/upgrade.go:112","msg":"The database schema version has been set","version":"5.21.0"}
{"level":"error","ts":1585379690.8182986,"caller":"app/server_app_adapters.go:129","msg":"SiteURL must be set. Some features will operate incorrectly if the SiteURL is not set. See documentation for details: http://about.mattermost.com/default-site-url"}
{"level":"info","ts":1585379690.821083,"caller":"app/license.go:39","msg":"License key from https://mattermost.com required to unlock enterprise features."}

Ensuite, appuie sur CTRL + C pour arrêter le serveur Mattermost.

Crée un fichier de service Systemd pour Mattermost

Ensuite, tu devras créer un fichier de service systemd pour gérer le service Mattermost. Tu peux le créer avec la commande suivante :

nano /etc/systemd/system/mattermost.service

Ajoute les lignes suivantes :

[Unit]
Description=Mattermost
After=syslog.target network.target mariadb.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/run/mattermost.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, recharge le démon systemd avec la commande suivante :

systemctl daemon-reload

Ensuite, démarre le service Mattermost et active-le pour qu’il démarre après le redémarrage du système avec la commande suivante :

systemctl start mattermost
systemctl enable mattermost

Tu peux aussi vérifier l’état du service Mattermost avec la commande suivante :

systemctl status mattermost

Tu devrais obtenir le résultat suivant :

? mattermost.service - Mattermost
   Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-03-28 03:17:07 EDT; 14s ago
 Main PID: 15204 (mattermost)
    Tasks: 21 (limit: 25028)
   Memory: 120.8M
   CGroup: /system.slice/mattermost.service
           ??15204 /opt/mattermost/bin/mattermost
           ??15214 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64

Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131086,"caller":"app/server.go:247","msg":"Printing current workin>
Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131282,"caller":"app/server.go:248","msg":"Loaded config","source">

À ce stade, le serveur Mattermost est en cours d’exécution et écoute sur le port 8065. Tu peux le vérifier avec la commande suivante :

netstat -antup | grep 8065

Tu devrais obtenir le résultat suivant :

tcp6       0      0 :::8065                 :::*                    LISTEN      15204/mattermost 

Configurer Nginx en tant que Reverse Proxy pour Mattermost

C’est une bonne idée d’installer et de configurer Nginx comme un proxy inverse pour de meilleures performances et une meilleure sécurité.

Tout d’abord, installe le serveur web Nginx avec la commande suivante :

dnf install nginx -y

Après avoir installé le serveur Web Nginx, démarre le service Nginx et active-le pour qu’il démarre après le redémarrage du système avec la commande suivante :

systemctl start nginx
systemctl enable nginx

Ensuite, crée un nouveau fichier d’hôte virtuel Nginx pour Mattermost avec la commande suivante :

nano /etc/nginx/conf.d/mattermost.conf

Ajoute les lignes suivantes :

upstream mattermost {
   server 127.0.0.1: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    mattermost.example.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;
       client_body_timeout 60;
       send_timeout 300;
       lingering_timeout 5;
       proxy_connect_timeout 90;
       proxy_send_timeout 300;
       proxy_read_timeout 90s;
       proxy_pass http://mattermost;
   }
   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_http_version 1.1;
       proxy_pass http://mattermost;
   }
}

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, vérifie que Nginx n’a pas d’erreur de syntaxe avec la commande suivante :

nginx -t

Tu devrais obtenir la sortie suivante :

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

Enfin, redémarre le service Nginx pour appliquer les modifications :

systemctl restart nginx

À ce stade, le serveur Web Nginx est configuré pour servir Mattermost. Tu peux maintenant passer à l’étape suivante.

Configurer SELinux et Firewalld

Par défaut, SELinux est activé dans CentOS 8. Il est recommandé de le désactiver pour Mattermost. Tu peux le désactiver en éditant le fichier /etc/selinux/config :

nano /etc/selinux/config

Trouve la ligne suivante :

SELINUX=enforcing

Et, remplace-la par la ligne suivante :

SELINUX=permissive

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, redémarre ton système pour appliquer les modifications.

Ensuite, tu devras autoriser le port 80 via firewalld. Tu peux l’autoriser avec la commande suivante :

firewall-cmd --add-service=http --permanent

Ensuite, recharge le firewalld pour appliquer les changements :

firewall-cmd --reload

Accéder à l’interface Web de Mattermost

Maintenant, ouvre ton navigateur Web et tape l’URL http://mattermost.example.com. Tu devrais voir la page de création d’un utilisateur Mattermost :

Installateur Mattermost

Indique ton adresse e-mail, ton nom d’utilisateur, ton mot de passe et clique sur le bouton Créer un compte. Tu devrais voir la page suivante :

Création d'une équipe

Ensuite, clique sur le bouton Créer une nouvelle équipe pour créer ton équipe. Tu devrais voir la page suivante :

Saisis le nom de l'équipe

Indique le nom de ton équipe et clique sur le bouton Suivant. La page suivante devrait s’afficher :

URL de l'équipe

Indique l’URL de ton équipe et clique sur le bouton Terminer pour terminer l’installation. Tu devrais voir le tableau de bord Mattermost à la page suivante :

Tableau de bord de Mattermost

Conclusion

Félicitations ! Tu as réussi à installer et à configurer Mattermost sur le serveur CentOS 8. Tu peux maintenant créer une équipe pour ton organisation et commencer à collaborer avec ton équipe.

Vous aimerez aussi...