Ceci est une ancienne révision du document !
Table des matières
Mattermost ? Installation et configuration dans un container LXC
Installation de Mattermost dans un container LXC
On commence par installer un container sur le serveur hote
lxc-create -t download -n tlcvl -- -d debian -r buster -a amd64
On démarre le container et on regarde son IP :
lxc-start tlcvl lxc-ls -f NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED tlcvl RUNNING 0 - 10.0.3.235 - false
On fait en sorte que le container démarre tout seul en ajoutant à la fin du fichier
nano /var/lib/lxc/tlcvl/config # Autostart lxc.start.auto = 1
On rentre dans le container pour installer Mattermost
lxc-attach tlcvl root@tlcvl apt update apt install wget curl nano iotop nload htop locate curl gnupg
Installation bdd et Mattermost
Ensuite il s'agit de suivre la procédure d'installation décrite ici :
On crée un utilisateur spécifique
sudo useradd --system --user-group mattermost sudo usermod -a -G sudo mattermost
Installation du système de base de données
sudo apt-get install mariadb-server
Sécurisation
mysql_secure_installation
Configuration bdd et user
mysql -u root -p mysql> create user 'mmuser'@'localhost' identified by 'mmuser-password'; mysql> create database mattermost; mysql> grant all privileges on mattermost.* to 'mmuser'@'localhost'; mysql> exit
On télécharge la dernière version de Mattermost
wget https://releases.mattermost.com/5.32.1/mattermost-5.32.1-linux-amd64.tar.gz tar -xvzf mattermost*.gz sudo mv mattermost /opt sudo mkdir /opt/mattermost/data sudo chown -R mattermost:mattermost /opt/mattermost sudo chmod -R g+w /opt/mattermost
On opère des modifications dans le fichier de config
sudo nano /opt/mattermost/config/config.json
Il faut modifier le driver pour la base de données + accès à la bdd, informer un serveur smtp, activer les notifications par mail, indiquer des champs reply-to et autres pour que l'envoi de mail marche bien, cela donne :
- config.json
... "SqlSettings": { "DriverName": "mysql", "DataSource": "mmuser:*******************@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s", "DataSourceReplicas": [], "DataSourceSearchReplicas": [], "MaxIdleConns": 20, "ConnMaxLifetimeMilliseconds": 3600000, "MaxOpenConns": 300, "Trace": false, "AtRestEncryptKey": "*********************", "QueryTimeout": 30, "DisableDatabaseSearch": false }, ... "EmailSettings": { "EnableSignUpWithEmail": true, "EnableSignInWithEmail": true, "EnableSignInWithUsername": true, "SendEmailNotifications": true, "UseChannelInEmailNotifications": false, "RequireEmailVerification": false, "FeedbackName": "TL-CVL Gentil Robot", "FeedbackEmail": "febot@futuretic.fr", "ReplyToAddress": "febot@futuretic.fr", "FeedbackOrganization": "tl-cvl.futuretic.fr", "EnableSMTPAuth": true, "SMTPUsername": "febot@futuretic.fr", "SMTPPassword": "******************************", "SMTPServer": "mail.gandi.net", "SMTPPort": "465", "SMTPServerTimeout": 10, "ConnectionSecurity": "TLS", "SendPushNotifications": true, "PushNotificationServer": "https://push-test.mattermost.com", "PushNotificationContents": "full", "PushNotificationBuffer": 1000, "EnableEmailBatching": false, "EmailBatchingBufferSize": 256, "EmailBatchingInterval": 30, "EnablePreviewModeBanner": false, "SkipServerCertificateVerification": false, "EmailNotificationContentsType": "full", "LoginButtonColor": "#0000", "LoginButtonBorderColor": "#2389D7", "LoginButtonTextColor": "#2389D7" },
Test du mattermost
cd /opt/mattermost sudo -u mattermost bin/mattermost curl http://localhost:8065
Création d'un fichier systemd pour lancement automatique
nano /lib/systemd/system/mattermost.service
- mattermost.service
[Unit] Description=Mattermost After=network.target After=postgresql.service BindsTo=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
On lance mattermost automatiquement :
systemctl start mattermost.service systemctl status mattermost.service systemctl enable mattermost.service
On peut désormais sortir du container pour configurer le vhost proxy
root@tlcvl ~ #exit
Configuration du vhost sur le serveur hote pour proxy du traffic vers le container
On génère déjà un certificat avec certbot avec un vhost temporaire qui contient l'adresse du serveur et pointe vers /var/www/html
certbot certonly --http-01-address 135.181.129.123 -d tl-cvl.futuretic.fr --verbose
Une fois le certificat généré, config du vhost, on redirige les requêtes sur port 80 vers 443 et
nano /etc/apache2/sites-available/tl-cvl.futuretic.fr-le-ssl.conf
- tl-cvl.futuretic.fr-le-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin tech@futuretic.fr ServerName tl-cvl.futuretic.fr SSLEngine on SSLProxyEngine On SSLCertificateFile /etc/letsencrypt/live/tl-cvl.futuretic.fr/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/tl-cvl.futuretic.fr/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf ProxyPreserveHost On # proxy pour cetificat DocumentRoot /var/www/html ProxyPass /.well-known ! # Set web sockets RewriteEngine On RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC,OR] RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR] RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC] RewriteRule .* ws://10.0.3.235:8065%{REQUEST_URI} [P,QSA,L] <Location /> Require all granted ProxyPass http://10.0.3.235:8065/ ProxyPassReverse http://10.0.3.235:8065/ ProxyPassReverseCookieDomain 10.0.3.235 tl-cvl.futuretic.fr </Location> ErrorLog /var/log/apache2/tl-cvl.futuretic.fr.error.log LogLevel error CustomLog /var/log/apache2/tl-cvl.futuretic.fr.access.log vhost_combined </VirtualHost> </IfModule>
Ajouter ensuite ce vhost ainsi que celui pour port 80 et reload
a2ensite tl-cvl.futuretic.fr.conf tl-cvl.futuretic.fr-le-ssl.conf systemctl reload apache2
Configuration de Mattermost
On doit maintenant pouvoir se rendre à l'url pour accéder à l'interface de Mattermost et créer ainsi le premier utilisateur administrateur du site
Notamment la configuration SMTP pour que les mails soient bien envoyés Et configurer les notifications pour qu'elles aient un expéditeur, …
Configurations complémentaires
On règle les locales pour être en français par défaut
dpkg-reconfigure locales
Choisir FR UTF8 par défaut et régler dans l'interface d'amin de Mattermost le français par défaut
Ajout du plug-in jitsi pour permettre l'intégration de visioconf dans les canaux de discussion Mattermost
Désactiver la télémétrie de Mattermost qui envoie des datas anonymisés
Modifier à la ligne 168 dans
nano /opt/mattermost/config/config.json "EnableDiagnostics": false, "EnableSentry": false,
Voir https://docs.mattermost.com/administration/telemetry.html