Mattermost est une application de messagerie open source et auto-hébergée utilisée pour le chat, le partage de fichiers, la recherche et les intégrations. C'est une alternative au chat Slack qui rassemble toutes les communications de votre équipe en un seul endroit. Il est écrit en React et Golang et utilise la base de données PostgreSQL ou MySQL dans le backend. Il offre un riche ensemble de fonctionnalités, notamment des notifications push, un historique de recherche illimité, des emojis personnalisés, des webhooks et des commandes, un annuaire actif, une prise en charge du déploiement de bases de données multi-nœuds, un forum, un forum de discussion et bien d'autres.
Dans ce tutoriel, nous allons vous montrer comment installer Mattermost avec Nginx et Let's Encrypt SSL sur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
- Un mot de passe root est configuré sur le serveur.
Mise en route
Tout d'abord, il est recommandé de mettre à jour vos packages système avec la dernière version. Vous pouvez les mettre à jour en exécutant la commande suivante :
apt-get update -y
Une fois tous les packages mis à jour, installez les autres dépendances requises en exécutant la commande suivante :
apt-get install curl wget vim git unzip gnupg2 -y
Après avoir installé tous les packages requis, vous pouvez passer à l'étape suivante.
Installer et configurer MariaDB
Mattermost utilise MySQL/MariaDB comme backend de base de données. Le serveur MariaDB doit donc être installé sur votre serveur. S'il n'est pas installé, vous pouvez l'installer avec la commande suivante :
apt-get install mariadb-server -y
Après avoir installé le serveur MariaDB, connectez-vous à MariaDB avec la commande suivante :
mysql
Une fois connecté, créez une base de données et un utilisateur pour Mattermost avec la commande suivante :
MariaDB [(none)]> CREATE DATABASE mattermostdb;
MariaDB [(none)]> CREATE USER 'mattermost'@'%' IDENTIFIED BY 'password';
Ensuite, accordez tous les privilèges au Mattermost avec la commande suivante :
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermostdb.* TO 'mattermost'@'%';
Ensuite, videz les privilèges et quittez le shell MariaDB avec la commande suivante :
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Une fois votre base de données MariaDB configurée, vous pouvez passer à l'étape suivante.
Installer et configurer Mattermost
Tout d'abord, vous devrez télécharger la dernière version de Mattermost depuis son site officiel. Vous pouvez le télécharger avec la commande suivante :
wget https://releases.mattermost.com/5.24.2/mattermost-5.24.2-linux-amd64.tar.gz
Une fois téléchargé, extrayez le fichier téléchargé avec la commande suivante :
tar -xvzf mattermost-5.24.2-linux-amd64.tar.gz
Ensuite, copiez le répertoire extrait dans le /opt :
cp -r mattermost /opt
Créez ensuite un répertoire de données pour Mattermost :
mkdir /opt/mattermost/data
Ensuite, vous devrez créer un utilisateur distinct pour exécuter Mattermost. Vous pouvez le créer avec la commande suivante :
useradd --system --user-group mattermost
Ensuite, changez la propriété du répertoire le plus important en le plus important et accordez les autorisations appropriées avec la commande suivante :
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost
Ensuite, modifiez le fichier de configuration par défaut de Mattermost et définissez les paramètres de votre base de données et l'URL du site.
nano /opt/mattermost/config/config.json
Modifiez les lignes suivantes selon vos besoins :
"SiteURL": "https://mattermost.linuxbuz.com", "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é.
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 /lib/systemd/system/mattermost.service
Ajoutez les lignes suivantes :
[Unit] Description=Mattermost After=network.target After=mysql.service Requires=mysql.service [Service] Type=notify User=mattermost Group=mattermost ExecStart=/opt/mattermost/bin/mattermost TimeoutStartSec=3600 Restart=always RestartSec=10 WorkingDirectory=/opt/mattermost LimitNOFILE=49152 [Install] WantedBy=mariadb.service
Enregistrez et fermez le fichier puis relancez le démon systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, démarrez le service Mattermost et activez-le au redémarrage du système avec la commande suivante :
systemctl start mattermost
systemctl enable mattermost
Ensuite, vérifiez l'état du service Mattermost avec la commande suivante :
systemctl status mattermost
Vous devriez obtenir le résultat suivant :
? mattermost.service - Mattermost Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2020-08-01 09:12:52 UTC; 17s ago Main PID: 4106 (mattermost) Tasks: 20 (limit: 2353) Memory: 85.9M CGroup: /system.slice/mattermost.service ??4106 /opt/mattermost/bin/mattermost ??4198 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64 Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.131499,"caller":"mlog/sugar.go:19","msg":"Sent notification of ne> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.1841655,"caller":"jobs/workers.go:73","msg":"Starting workers"} Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.1842792,"caller":"bleveengine/bleve.go:267","msg":"UpdateConf Ble> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.1930475,"caller":"jobs/schedulers.go:74","msg":"Starting schedule> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.20063,"caller":"app/web_hub.go:83","msg":"Starting websocket hubs> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.2099638,"caller":"app/license.go:37","msg":"License key from http> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.2205582,"caller":"app/server.go:525","msg":"Starting Server..."} Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.2208374,"caller":"app/server.go:594","msg":"Server is listening o> Aug 01 09:12:52 ubuntu2004 mattermost[4106]: {"level":"info","ts":1596273172.2211802,"caller":"commands/server.go:106","msg":"Sending systemd > Aug 01 09:12:52 ubuntu2004 systemd[1]: Started Mattermost.
À ce stade, Mattermost s'exécute et écoute sur le port 8065.
Configurer Nginx en tant que proxy inverse
Ensuite, vous devrez configurer Nginxx en tant que proxy inverse pour Mattermost. Tout d'abord, installez le package Nginx avec la commande suivante :
apt-get install nginx -y
Une fois installé, créez un fichier de configuration d'hôte virtuel Nginx avec la commande suivante :
nano /etc/nginx/sites-available/mattermost.conf
Ajoutez les lignes suivantes :
upstream mattermost { 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 mattermost.linuxbuz.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 puis activez la configuration de l'hôte virtuel avec la commande suivante :
ln -s /etc/nginx/sites-available/mattermost.conf /etc/nginx/sites-enabled/mattermost.conf
Ensuite, vérifiez le Nginx pour toute erreur de configuration :
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
Sécuriser Mattermost avec Let's Encrypt SSL
Tout d'abord, vous devrez installer le client Certbot dans votre système pour gérer le SSL Let's Encrypt. Vous pouvez l'installer avec la commande suivante :
apt-get install python3-certbot-nginx -y
Après avoir installé Certbot, exécutez la commande suivante pour installer Let's Encrypt SSL pour votre site Web.
certbot --nginx -d mattermost.linuxbuz.com
Il vous sera demandé de fournir une adresse e-mail valide et d'accepter les conditions d'utilisation comme indiqué ci-dessous :
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for mattermost.linuxbuz.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/mattermost.conf
Ensuite, sélectionnez si vous souhaitez ou non rediriger le trafic HTTP vers HTTPS :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Tapez 2 et appuyez sur Entrée pour installer le SSL Let's Encrypt sur votre domaine. Une fois installé, vous devriez voir le résultat suivant :
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/mattermost.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://mattermost.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=mattermost.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/mattermost.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/mattermost.linuxbuz.com/privkey.pem Your cert will expire on 2020-10-30. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le - We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.
Accéder à l'interface Web de Mattermost
Maintenant, ouvrez votre navigateur Web et tapez l'URL https://mattermost.linuxbuz.com. Vous serez redirigé vers l'écran d'inscription de Mattermost :
Indiquez votre adresse e-mail, votre nom, votre mot de passe et cliquez sur Créer un compte bouton. Vous devriez voir l'écran suivant :
Cliquez sur Créer un équipe bouton. Vous devriez voir l'écran suivant :
Indiquez le nom de votre équipe et cliquez sur Suivant bouton. Vous devriez voir l'écran suivant :
Indiquez l'URL de votre équipe et cliquez sur Terminer bouton. Vous devriez voir l'écran de bienvenue de Mattermost :
Cliquez sur Ignorer Tutoriels bouton. Vous devriez voir le tableau de bord Mattermost dans l'écran suivant :
Conclusion
Dans ce guide, vous avez appris à installer l'application Mattermost Team Messaging sur le serveur Ubuntu 20.04. Vous avez également appris à configurer Nginx en tant que proxy inverse et à le sécuriser avec Let's Encrypt SSL. Vous pouvez désormais explorer les services Mattermost et travailler avec votre équipe.