Mattermost est un service de discussion instantanée open source en auto-hébergement. Il est conçu comme un chat interne pour les organisations et les entreprises.
Nous allons voir ici comment l’installer et le rendre disponible rapidement.
Nous supposons ici que vous avez déjà créé votre serveur (https://docs.gandi.net/fr/cloud/gestion_serveur/creer.html), et que celui-ci a pour adresse IP 1.2.3.4 .
Connectez-vous à votre serveur :
$ ssh admin@1.2.3.4
Et mettez d’abord à jour les paquets existants :
# apt update
# apt upgrade
Installez ensuite Postgresql, sudo et Nginx, qui nous seront nécessaires au bon fonctionnement de Mattermost:
# apt-get install postgresql postgresql-contrib sudo nginx
Enfin, installez Node.js et npm : https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions
# curl -sL https://deb.nodesource.com/setup_13.x | bash -
# apt install -y nodejs
Il est également recommandé de créer un utilisateur dédié à l’exécution de Mattermost :
# /sbin/useradd --system --user-group mattermost
Le serveur est maintenant configuré, passons à la création de la base de données.
Il est possible d’utiliser Mysql ou Postgresql pour l’utilisation de Mattermost, nous ne traiterons ici que le cas de l’utilisation de Postgresql
Connectez-vous à l’utilisaliseur postgres et lancez psql:
# sudo --login --user postgres
$ psql
Créez ensuite la base de données mattermost avec l’utilisateur mmuser et le mot de passe mmuser-password, à adapter selon vos besoins
postgres=# CREATE DATABASE mattermost;
postgres=# CREATE USER mmuser WITH PASSWORD 'mmuser-password';
postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
postgres=# \q
postgres=# exit
La base de données est prête, il ne reste qu’à installer Mattemost, et le rendre accessible à l’adresse de votre choix.
Téléchargez la dernière version de Mattermost :
# wget https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz
Puis procédez à l’extraction du contenu de l’archive dans le répertoire /opt/
# tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz
# mv mattermost /opt
Créez le répertoire /opt/mattermost/data et donnez les droits sur ces répertoires à l’utilisateur système mattermost
# mkdir /opt/mattermost/data
# chown -R mattermost:mattermost /opt/mattermost
Modifiez le fichier de configuration afin de prendre en compte la base de données que vous avez créé précédemment en remplaçant dans le fichier /opt/mattermost/config/config.json
par
"DriverName": "postgres",
puis
"DataSource": "mmuser:mostest@tcp(localhost:3306)/mattermost_test?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
par
"DataSource": "postgres://mmuser:<mmuser-password>@<host-name-or-IP>:5432/mattermost?sslmode=disable&connect_timeout=10",
Placez vous dans le répertoire /opt/mattermost et testez le lancement de Mattermost :
# cd /opt/mattermost
# sudo -u mattermost ./bin/mattermost
Si tout est correct, vous devriez observer la sortie suivante :
{"level":"info","ts":1585299574.1884124,"caller":"app/server.go:538","msg":"Server is listening on [::]:8065","address":"[::]:8065"}
Mattermost est bien lancé et en écoute sur le port 8065.
Nous allons maintenant créer un service systemd afin de pouvoir gérer plus facilement les actions sur Mattermost :
# touch /lib/systemd/system/mattermost.service
# vim /lib/systemd/system/mattermost.service
Copier le contenu suivant dans le fichier et sauvegardez le :
[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
Requires=postgresql.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
Rechargez systemd et testons à présent cet unit systemd :
# systemctl daemon-reload
# systemctl status mattermost.service
# systemctl start mattermost.service
Vérifiez que Mattermost écoute bien sur le port 8065 :
# curl http://localhost:8065
Si tout est ok, activez-leservice Mattermost, celui-ci sera alors lancé automatiquement au démarrage de votre serveur
systemctl enable mattermost.service
Nous supposons ici que vous disposez d’un certificat SSL (https://docs.gandi.net/fr/ssl/index.html), et configurons Nginx pour que Mattermost soit accessible depuis l’adresse de votre choix.
En tant que root :
# vim /etc/nginx/sites-available/mattermost.example.com.conf
Contenu :
upstream backend {
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 default_server;
server_name mattermost.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name mattermost.example.com;
ssl on;
ssl_certificate /path/to/fullchain.cer;
ssl_certificate_key /path/to/mattermost.example.com.key ;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve sect571r1:secp521r1:brainpoolP512r1:secp384r1:prime256v1:X25519;
ssl_ciphers EECDH+AESGCM:EECDH+CHACHA20:EECDH+AES:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;
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://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_http_version 1.1;
proxy_pass http://backend;
}
}
Veillez à modifier les valeurs mattermost.example.com par votre nom de domaine ainsi que le chemin du certificat SSL.
Il ne vous reste plus qu’à activer le site :
# ln -s /etc/nginx/sites-available/mattermost.example.com.conf /etc/nginx/sites-enabled/mattermost.example.com
Vérifier que la configuration est correcte :
Et à redémarrer Nginx :
# systemctl restart nginx
Si tout s’est bien passé, votre installation de Mattermost est disponible à l’adresse https://ceci.estun.example.com, et vous pouvez accéder à l’interface d’administration à partir de https://pad.ceci.est-un.example.com/admin, félicitations !
Comment installer Mattermost sur un Serveur Gandi Cloud¶
Étape 1 : Installation des dépendances et préparation du serveur
Étape 2 : Préparation de la base de données
Étape 3 : Installation et configuration de Mattermost
Étape 4 : Configuration de Nginx
Mattermost est un service de discussion instantanée open source en auto-hébergement. Il est conçu comme un chat interne pour les organisations et les entreprises.
Nous allons voir ici comment l’installer et le rendre disponible rapidement.
Debian 10.3
Postgresql
Mattermost 5.21
Nginx 1.14.2
Selon les versions utilisées, les différentes étapes peuvent varier
Étape 1 : Installation des dépendances et préparation du serveur¶
Nous supposons ici que vous avez déjà créé votre serveur (https://docs.gandi.net/fr/cloud/gestion_serveur/creer.html), et que celui-ci a pour adresse IP 1.2.3.4 .
Connectez-vous à votre serveur : $ ssh admin@1.2.3.4
Et mettez d’abord à jour les paquets existants :
Installez ensuite Postgresql, sudo et Nginx, qui nous seront nécessaires au bon fonctionnement de Mattermost:
# apt-get install postgresql postgresql-contrib sudo nginx
Enfin, installez Node.js et npm : https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions
Il est également recommandé de créer un utilisateur dédié à l’exécution de Mattermost :
# /sbin/useradd --system --user-group mattermost
Le serveur est maintenant configuré, passons à la création de la base de données.
Étape 2 : Préparation de la base de données¶
Il est possible d’utiliser Mysql ou Postgresql pour l’utilisation de Mattermost, nous ne traiterons ici que le cas de l’utilisation de Postgresql
Connectez-vous à l’utilisaliseur postgres et lancez psql:
Créez ensuite la base de données mattermost avec l’utilisateur mmuser et le mot de passe mmuser-password, à adapter selon vos besoins
La base de données est prête, il ne reste qu’à installer Mattemost, et le rendre accessible à l’adresse de votre choix.
Étape 3 : Installation et configuration de Mattermost¶
Téléchargez la dernière version de Mattermost :
# wget https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz
Puis procédez à l’extraction du contenu de l’archive dans le répertoire /opt/
Créez le répertoire /opt/mattermost/data et donnez les droits sur ces répertoires à l’utilisateur système mattermost
Modifiez le fichier de configuration afin de prendre en compte la base de données que vous avez créé précédemment en remplaçant dans le fichier /opt/mattermost/config/config.json
"DriverName": "mysql",
par
"DriverName": "postgres",
puis
"DataSource": "mmuser:mostest@tcp(localhost:3306)/mattermost_test?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
par
"DataSource": "postgres://mmuser:<mmuser-password>@<host-name-or-IP>:5432/mattermost?sslmode=disable&connect_timeout=10",
Placez vous dans le répertoire /opt/mattermost et testez le lancement de Mattermost :
Si tout est correct, vous devriez observer la sortie suivante :
{"level":"info","ts":1585299574.1884124,"caller":"app/server.go:538","msg":"Server is listening on [::]:8065","address":"[::]:8065"}
Mattermost est bien lancé et en écoute sur le port 8065.
Nous allons maintenant créer un service systemd afin de pouvoir gérer plus facilement les actions sur Mattermost :
Copier le contenu suivant dans le fichier et sauvegardez le :
Rechargez systemd et testons à présent cet unit systemd :
Vérifiez que Mattermost écoute bien sur le port 8065 :
# curl http://localhost:8065
Si tout est ok, activez-leservice Mattermost, celui-ci sera alors lancé automatiquement au démarrage de votre serveur
systemctl enable mattermost.service
Étape 4 : Configuration de Nginx¶
Nous supposons ici que vous disposez d’un certificat SSL (https://docs.gandi.net/fr/ssl/index.html), et configurons Nginx pour que Mattermost soit accessible depuis l’adresse de votre choix.
En tant que root :
# vim /etc/nginx/sites-available/mattermost.example.com.conf
Contenu :
Veillez à modifier les valeurs mattermost.example.com par votre nom de domaine ainsi que le chemin du certificat SSL.
Il ne vous reste plus qu’à activer le site :
# ln -s /etc/nginx/sites-available/mattermost.example.com.conf /etc/nginx/sites-enabled/mattermost.example.com
Vérifier que la configuration est correcte :
nginx -t
Et à redémarrer Nginx :
# systemctl restart nginx
Si tout s’est bien passé, votre installation de Mattermost est disponible à l’adresse https://ceci.estun.example.com, et vous pouvez accéder à l’interface d’administration à partir de https://pad.ceci.est-un.example.com/admin, félicitations !