Outils pour utilisateurs

Outils du site


mattermost_un_container_lxc

Mattermost ? Installation et configuration dans un container LXC

Installer un container LXC 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, mais avant, on install quelques outils pratiques.

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

Utilitaire en ligne de commande pour supprimer un canal ou une équipe et plus

Depuis Mattermost 6, l'utilitaire mattermost a été complété par mmctl, voir la documentation

Pour faire marcher cet utilitaire mmctl, il faut faire plusieurs choses :

éditer Mattermost's config.json file,et mettre EnableLocalMode to “true”

nano /opt/mattermost/config/config.json

vérifier le chemin de la socket locale dans ce fichier et ajouter dans le /root/.bashrc

export PATH=$PATH:/opt/mattermost/bin/
export MMCTL_LOCAL=true
export MMCTL_LOCAL_SOCKET_PATH=/var/tmp/mattermost_local.socket

Se relogguer et relancer mattermost

systemctl restart mattermost

Gestion d'équipe

        mmctl team archive - Archive some teams
        mmctl team create - Create teams
        mmctl team delete - Delete teams
        mmctl team list - List teams
        mmctl team modify - Modify teams
        mmctl team rename - Rename teams
        mmctl team restore - Restore teams
        mmctl team search - Search teams
        mmctl team users - Manage team users

Intégrer les nouveaux utilisateurs dans les canaux publics

Modifier en utilisant l'url du canal : config supprimée le 1er juin 2022 car s'appliquait à toutes les équipes qui n'ont pas les mêmes noms de canaux

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

Voir la doc officielle.

En résumé :

Telecharger puis décompresser la version de Mattermost ESR désirée ou la toute dernière dans /tmp :

cd /tmp
wget https://releases.mattermost.com/7.9.1/mattermost-7.9.1-linux-amd64.tar.gz
tar -xf mattermost*.gz --transform='s,^[^/]\+,\0-upgrade,'

Arrêter Mattermost :

systemctl stop mattermost

Nettoyer le dossier du mattermost actuel :

cd /opt
find mattermost/ mattermost/client/ -mindepth 1 -maxdepth 1 \! \( -type d \( -path mattermost/client -o -path mattermost/client/plugins -o -path mattermost/config -o -path mattermost/logs -o -path mattermost/plugins -o -path mattermost/data \) -prune \) | sort | sudo xargs rm -r

Appliquer la mise à jour des fichiers et remettre les droits :

cp -an /tmp/mattermost-upgrade/. mattermost/
chown -R mattermost:mattermost /opt/mattermost

Redémarrer Mattermost :

systemctl start mattermost

Supprimer les fichiers temporaires :

rm -rf /tmp/mattermost-upgrade && rm -i /tmp/mattermost*.gz
mattermost_un_container_lxc.txt · Dernière modification : 2023/10/11 21:04 de Labomedia