Outils pour utilisateurs

Outils du site


mattermost_un_container_lxc

Ceci est une ancienne révision du document !


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.200 -    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": "mm.mondomaine.org",
        "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 mm.mondomaine.org --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/mm.mondomaine.org-le-ssl.conf
mm.mondomaine.org-le-ssl.conf
<IfModule mod_ssl.c>
 
        <VirtualHost *:443>
 
                ServerAdmin     moi@mondomaine.org
                ServerName      mm.mondomaine.org
 
                # Headers for security
                <IfModule mod_headers.c>
                        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
                        Header set X-XSS-Protection "1; mode=block"
                        Header set X-Frame-Options "sameorigin"
                        Header set X-Content-Type-Options "nosniff"
                </IfModule>
 
                # SSL config
                SSLEngine on
                SSLProxyEngine On
                # ajout suite a default ssl handshake et suite à AH01097: pass request body failed
                SSLProxyVerify none
                SSLProxyCheckPeerCN off
                SSLProxyCheckPeerName off
                SSLProxyCheckPeerExpire off
 
                # SSL certificates
                SSLCertificateFile /etc/letsencrypt/live/mm.mondomaine.org/fullchain.pem
                SSLCertificateKeyFile /etc/letsencrypt/live/mm.mondomaine.org/privkey.pem
                Include /etc/letsencrypt/options-ssl-apache.conf
 
                # Proxy base parameters
                ProxyPreserveHost On
                ProxyRequests Off
 
                # 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.200:8065%{REQUEST_URI} [P,QSA,L]
 
                # Proxy to container
                ProxyPass / http://10.0.3.200:8065/
                ProxyPassReverse / http://10.0.3.200:8065/
                ProxyPassReverseCookieDomain 10.0.3.200 mm.mondomaine.org
 
                # Logs
                ErrorLog /var/log/apache2/mm.mondomaine.org.error.log
                LogLevel error
                CustomLog /var/log/apache2/mm.mondomaine.org.access.log vhost_combined
 
        </VirtualHost>
 
</IfModule>

Ajouter ensuite ce vhost ainsi que celui pour port 80 et reload

a2ensite mm.mondomaine.org.conf mm.mondomaine.org-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

Configurer les Headers pour la CSP Content-Security Policy

Supprimer un canal à la main

/opt/mattermost/bin # ./mattermost channel delete zhkxa9qnc7yx7pspdbrt138nuc
/opt/mattermost/bin # ./mattermost channel delete tierslieux:transition-numerique

Supprimer une Team à la main

/opt/mattermost/bin # ./mattermost team list
/opt/mattermost/bin # ./mattermost team delete ateliersenfants

Intégrer les nouveaux utilisateurs dans les canaux publics

Modifier en utilisant l'url du canal

nano /opt/mattermost/config/config.json
        "ExperimentalDefaultChannels": [
          "chantier-formation-professionnelle",
          "chantier-accompagnement-de-projet-essis",
          "chantier-transition-numerique",
          "chantier-formation-des-facilitateurs-de-tiers-lieux",
          "chantier-formation-professionnelle",
          "chantier-formation",
          "appel-a-projets",
          "cest-quoi-un-tiers-lieux",
          "culture-du-faire"
      ]

Désactiver les messages système (annonce de qui a rejoint le canal ...)

Voir cette documentation, à voir si cela ne s'applique qu'au canal centre ville

nano /opt/mattermost/config/config.json
"ExperimentalEnableDefaultChannelLeaveJoinMessages": false

Activer / Désactiver le plug-in Jitsi si marche plus

Essayer ceci si le plug-in jitsi ne marche plus

Chaque utilisateur a la possibiltié de désactiver ces messages dans les paramètres avancés de son compte :

Mise à jour de Mattermost

mattermost_un_container_lxc.1648503094.txt.gz · Dernière modification : 2022/03/28 21:31 de Labomedia