Outils pour utilisateurs

Outils du site


mattermost_un_container_lxc

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

mattermost_un_container_lxc.txt · Dernière modification: 2021/02/24 17:10 de n1c0