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 toutes les communications de votre é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 d'autres.
Dans ce tutoriel, nous allons vous montrer comment installer Mattermost sur CentOS 8.
Prérequis
- Un serveur exécutant CentOS 8.
- Un mot de passe root est configuré sur votre serveur.
Installer et configurer la base de données MariaDB
Mattermost utilise MariaDB/MySQL comme backend de base de données. MariaDB doit donc être installé sur votre serveur. S'il n'est pas installé, vous pouvez l'installer avec la commande suivante :
dnf install mariadb-server -y
Une fois installé, démarrez le service MariaDB et activez-le 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ée et le mot de passe root n'est pas défini dans CentOS 8. Vous pouvez donc le définir avec la commande suivante :
mysql_secure_installation
Répondez à 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 vous avez terminé, connectez-vous à MariaDB avec l'utilisateur root :
mysql -u root -p
Fournissez votre mot de passe root puis créez 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, videz les privilèges et quittez le shell MariaDB avec la commande suivante :
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer Mattermost
Tout d'abord, vous devrez créer un utilisateur distinct pour exécuter Mattermost. Vous pouvez le créer avec la commande suivante :
useradd -d /opt/mattermost -U -M mattermost
Ensuite, téléchargez 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é, extrayez le fichier téléchargé avec la commande suivante :
tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz
Ensuite, déplacez le répertoire extrait vers le /opt avec la commande suivante :
mv mattermost /opt/
Ensuite, créez un répertoire de données à l'intérieur de Mattermost et accordez les autorisations 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 vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Mattermost
Ensuite, vous devrez définir votre base de données dans Mattermost. Vous pouvez le faire en éditant le fichier config.json :
nano /opt/mattermost/config/config.json
Modifiez les lignes suivantes en fonction des paramètres de votre base de données :
"SqlSettings": { "DriverName": "mysql", "DataSource": "mattermost:[email protected](localhost:3306)/mattermostdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, changez le répertoire en /opt/mattermost et démarrez le serveur Mattermost avec la commande suivante :
cd /opt/mattermost
sudo -u mattermost bin/mattermost
Une fois le serveur démarré avec succès, vous devriez obtenir le résultat suivant :
{"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, appuyez sur CTRL + C pour arrêter le serveur Mattermost.
Créer un fichier de service Systemd pour Mattermost
Ensuite, vous devrez créer un fichier de service systemd pour gérer le service Mattermost. Vous pouvez le créer avec la commande suivante :
nano /etc/systemd/system/mattermost.service
Ajoutez 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
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, rechargez le démon systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, démarrez le service Mattermost et activez-le après le redémarrage du système avec la commande suivante :
systemctl start mattermost
systemctl enable mattermost
Vous pouvez également vérifier l'état du service Mattermost avec la commande suivante :
systemctl status mattermost
Vous devriez 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. Vous pouvez le vérifier avec la commande suivante :
netstat -antup | grep 8065
Vous devriez obtenir le résultat suivant :
tcp6 0 0 :::8065 :::* LISTEN 15204/mattermost
Configurer Nginx en tant que proxy inverse pour Mattermost
C'est une bonne idée d'installer et de configurer Nginx en tant que proxy inverse pour de meilleures performances et une meilleure sécurité.
Tout d'abord, installez le serveur Web Nginx avec la commande suivante :
dnf install nginx -y
Après avoir installé le serveur Web Nginx, démarrez le service Nginx et autorisez-le à démarrer après le redémarrage du système avec la commande suivante :
systemctl start nginx
systemctl enable nginx
Ensuite, créez un nouveau fichier d'hôte virtuel Nginx pour Mattermost avec la commande suivante :
nano /etc/nginx/conf.d/mattermost.conf
Ajoutez 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; } }
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vérifiez le Nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -t
Vous devriez obtenir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Enfin, redémarrez le service Nginx pour appliquer les modifications :
systemctl restart nginx
À ce stade, le serveur Web Nginx est configuré pour servir Mattermost. Vous pouvez 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. Vous pouvez le désactiver en éditant le fichier /etc/selinux/config :
nano /etc/selinux/config
Recherchez la ligne suivante :
SELINUX=enforcing
Et remplacez-le par la ligne suivante :
SELINUX=permissive
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez votre système pour appliquer les modifications.
Ensuite, vous devrez autoriser le port 80 via firewalld. Vous pouvez l'autoriser avec la commande suivante :
firewall-cmd --add-service=http --permanent
Ensuite, rechargez le pare-feu pour appliquer les modifications :
firewall-cmd --reload
Accéder à l'interface Web de Mattermost
Maintenant, ouvrez votre navigateur Web et tapez l'URL http://mattermost.example.com. Vous devriez voir la page de création d'utilisateur Mattermost :
Indiquez votre adresse e-mail, votre nom d'utilisateur, votre mot de passe et cliquez sur Créer Compte bouton. Vous devriez voir la page suivante :
Ensuite, cliquez sur Créer une nouvelle équipe pour créer votre équipe. Vous devriez voir la page suivante :
Indiquez le nom de votre équipe et cliquez sur Suivant bouton. Vous devriez voir la page suivante :
Indiquez l'URL de votre équipe et cliquez sur Terminer pour terminer l'installation. Vous devriez voir le tableau de bord Mattermost sur la page suivante :
Conclusion
Toutes nos félicitations! vous avez installé et configuré avec succès Mattermost sur le serveur CentOS 8. Vous pouvez maintenant créer une équipe pour votre organisation et commencer à collaborer avec votre équipe.