« Mattermost » : différence entre les versions
(Page créée avec « Category:Service communication Mattermost est un service de chat collaboratif auto-hébergeable. Il met à disposition une interface WEB permettant l'inscription et l... ») |
(→Post version 6 : Ajout d'une méthode pour supprimer un utilisateur) |
||
(7 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:Service communication]] | [[Category:Service communication]] | ||
Mattermost est un service de chat collaboratif auto-hébergeable. Il met à disposition une interface WEB permettant l'inscription et la connexion des utilisateurs. Il se présente sous la forme de salons de discutions permettant l'échange de texte, d'images, de sons et de vidéos entre les personnes d'un même groupe. | ''Mattermost'' est un service de chat collaboratif auto-hébergeable. Il met à disposition une interface ''WEB'' permettant l'inscription et la connexion des utilisateurs. Il se présente sous la forme de salons de discutions permettant l'échange de texte, d'images, de sons et de vidéos entre les personnes d'un même groupe. | ||
Ce programme étant écrit en Go, il partage avec ses pairs le fait d'être qualitatif et facile à installer. | Ce programme étant écrit en ''Go'', il partage avec ses pairs le fait d'être qualitatif et facile à installer. | ||
=Installation= | =Installation= | ||
==Base de donnée== | ==Base de donnée== | ||
Mattermost a besoin d'une base de donnée relationnelle pour fonctionner. L'outil prend en charge MySQL/MariaDB et PostgreSQL. Je vais partir sur MariaDB | ''Mattermost'' a besoin d'une base de donnée relationnelle pour fonctionner. L'outil prend en charge ''MySQL/MariaDB'' et ''PostgreSQL''. Je vais partir sur ''MariaDB'' car c'est ce que j'utilise généralement. Je vous renvois à la documentation officielle en source (très bien faite) si vous voulez explorer d'autres options. | ||
===Installation de MariaDB=== | ===Installation de MariaDB=== | ||
apt install mariadb-server | apt install --no-install-recommends mariadb-server | ||
===Sécurisation de l'installation=== | ===Sécurisation de l'installation=== | ||
Par défaut, MariaDB | Par défaut, ''MariaDB'' a quelques lacunes sécuritaires (c'est bien pour les tests mais pas la production). Il faut utiliser le script intégré au paquet pour régler ça | ||
mysql_secure_installation | mysql_secure_installation | ||
Suivez les étapes en faisant les bons choix (ils sont | Suivez les étapes en faisant les bons choix (ils sont plutôt évidents). | ||
===Configuration des bases de données=== | ===Configuration des bases de données=== | ||
Se connecter à l'utilisateur root de MariaDB | Se connecter à l'utilisateur ''root'' de ''MariaDB'' | ||
mariadb -u root -p | mariadb -u root -p | ||
Ligne 35 : | Ligne 35 : | ||
==Mattermost== | ==Mattermost== | ||
===Téléchargement de l'application=== | ===Téléchargement de l'application=== | ||
Le lien de la dernière version est disponible à [https://mattermost.com/download/ cette adresse]. Pour ma part il s'agit de la version 5.16. | Le lien de la dernière version est disponible à [https://mattermost.com/download/ cette adresse]. Pour ma part il s'agit de la version 5.16.1. | ||
wget https://releases.mattermost.com/5. | |||
{{attention|Il existe deux branches de cet outil. Une "Entreprise" et une "Communautaire". La première dispose de fonctions supplémentaires monnayant une licence alors que la seconde n'impose aucune restriction mais est introuvable sur leur site (il y avait autrefois un onglet dédié il me semble mais il a disparu). Pour pouvoir la télécharger, il faut ajouter le mot '''''team''''' entre '''mattermost''' et le '''numéro de version''' comme dans le lien qui suit.}} | |||
wget https://releases.mattermost.com/5.19.1/mattermost-team-5.19.1-linux-amd64.tar.gz -P /tmp/ | |||
Décompression de l'archive | Décompression de l'archive | ||
tar -xvzf /tmp/mattermost*.gz -C /opt/ | tar -xvzf /tmp/mattermost*.gz -C /opt/ | ||
Création du répertoire de données | Création du répertoire de données (il contiendra les pièces jointes des conversations) | ||
mkdir /opt/mattermost/data | mkdir /opt/mattermost/data | ||
Ligne 47 : | Ligne 50 : | ||
vim /opt/mattermost/config/config.json | vim /opt/mattermost/config/config.json | ||
* Dans la section | * Dans la section '''DriverName''' (ligne 131), mettre '''mysql''' | ||
* Dans la section | * Dans la section '''DataSource''' (juste en dessous), adapter les directives ''utilisateurs:motdepasse'' et ''BDD'' (juste avant le point d'interrogation) avec les informations adéquates | ||
{{info|J'ai constaté qu'à chaque mise à jour, cette ligne changeait dans le fichier fournit par défaut et cerise sur le gâteau, celle présente dans la version 6.3.1 ne fonctionne pas (franchement ils abusent) ! Si vous n'avez jamais configuré d'instance sur laquelle vous pourrez vous appuyer en guise d'exemple vous l'aurez dans l'os ! Donc voici une ligne qui fonctionne : <source lang="bash" inline>"DataSource": "UTILISATEUR:MOTDEPASSE@localhost/BASEDEDONNEE?sslmode=disable\u0026connect_timeout=10",</source>. Inspirez-vous en pour votre configuration.}} | |||
* Passer l'interface en Français en mettant '''fr''' dans les trois sections de '''LocalizationSettings''' | |||
* Désactiver la [https://docs.mattermost.com/administration/telemetry.html télémétrie] en passant la section '''EnableDiagnostics''' à '''false''' | |||
Je vous recommandes de plus d'aller faire un tour dans chaque onglets de la ''console système'' de l'interface ''WEB'' afin de vous assurer que les paramètres correspondent à vos souhaits. | |||
==Posix== | ==Posix== | ||
Création d'un utilisateur Posix pour Mattermost | Création d'un utilisateur Posix pour Mattermost | ||
useradd --system --user-group mattermost | useradd --system --home-dir /opt/mattermost/ --user-group mattermost | ||
Attribution des droits à l'application | Attribution des droits à l'application | ||
Ligne 59 : | Ligne 67 : | ||
==Création d'utilisateurs Mattermost== | ==Création d'utilisateurs Mattermost== | ||
Pour créer un utilisateur Mattermost, il est possible de passer soit par l'interface WEB, soit par la ligne de commande (cette dernière permettant également de créer des utilisateurs administrateurs). | Pour créer un utilisateur ''Mattermost'', il est possible de passer soit par l'interface ''WEB'', soit par la ligne de commande (cette dernière permettant également de créer des utilisateurs administrateurs). | ||
===Pré version 6=== | |||
{{attention|N'est plus valable depuis la version 6.}} | |||
Création d'un utilisateur | Création d'un utilisateur administrateur | ||
su - mattermost -c '/opt/mattermost/bin/mattermost user create --firstname Toto --system_admin --email toto@example.com --username toto --password LeMotDePasseDeToto' | su - mattermost -c '/opt/mattermost/bin/mattermost user create --firstname Toto --system_admin --email toto@example.com --username toto --password LeMotDePasseDeToto' | ||
Ligne 68 : | Ligne 79 : | ||
{{Attention|Mattermost est très casse couille concernant les mots de passes à utiliser (genre les développeurs savent mieux que nous ce qu'est un bon mot de passe...), du coup, ceux utilisés en exemples ne sont pas acceptés par l'outil. Il faut mettre au minimum 10 caractères avec au moins un en minuscule, un en majuscule, un chiffre et un caractère spécial '''"~!@#$%^&*()").,''' (histoire de bien faire chier).}} | {{Attention|Mattermost est très casse couille concernant les mots de passes à utiliser (genre les développeurs savent mieux que nous ce qu'est un bon mot de passe...), du coup, ceux utilisés en exemples ne sont pas acceptés par l'outil. Il faut mettre au minimum 10 caractères avec au moins un en minuscule, un en majuscule, un chiffre et un caractère spécial '''"~!@#$%^&*()").,''' (histoire de bien faire chier).}} | ||
===Post version 6=== | |||
Depuis la version 6, ''Mattermost'' utilise la commande <syntaxhighlight lang="bash" inline>mmctl</syntaxhighlight>. L'outil requière d'ajouter une [https://docs.mattermost.com/manage/mmctl-command-line-tool.html?highlight=mmctl#mmctl-auth connexion] au socket dans sa base avant d'être utilisé (ayant fait une migration depuis la version 5, je n'ai aucune idée de comment faire lors d'une installation propre en 6). Pour se faire : | |||
Il est impératif de mettre le mot de passe de votre utilisateur dans un fichier texte (ce fichier pourra être supprimé après la commande) | |||
echo 'MonSuperMotDeP@sse123' > /tmp/mdp.txt | |||
Création d'une connexion (crée le fichier <syntaxhighlight lang="bash" inline>~/.config/mmctl/config</syntaxhighlight>) | |||
su - mattermost -c '/opt/mattermost/bin/mmctl auth login http://localhost:8065 --name un.nom.quelconque --username votreAdmin --password-file /tmp/mdp.txt' | |||
Il est possible de lister les connexions enregistrées | |||
su - mattermost -c '/opt/mattermost/bin/mmctl auth current' | |||
Pour supprimer une connexion, la [https://docs.mattermost.com/manage/mmctl-command-line-tool.html documentation officielle] décrit la commande suivante | |||
su - mattermost -c '/opt/mattermost/bin/mmctl auth delete le.nom.quelconque.de.votre.connexion' | |||
Il est alors possible de créer un [https://docs.mattermost.com/manage/mmctl-command-line-tool.html?highlight=mmctl#mmctl-user utilisateur] en utilisant les mêmes paramètres que pour la version 5 | |||
su - mattermost -c '/opt/mattermost/bin/mmctl user create --email tata@example.com --username tata --password LeMotDePasseDeTata' | |||
La désactivation d'un utilisateur s'effectue comme suit (utilisateur ''mattermost-advisor'') | |||
su - mattermost -c '/opt/mattermost/bin/mmctl user deactivate mattermost-advisor' | |||
Pour supprimer un utilisateur, il faut d'abord le permettre dans la configuration [https://forum.mattermost.com/t/error-when-deleting-user-using-mmctl/10847/2 comme suit] | |||
su - mattermost -c '/opt/mattermost/bin/mmctl config set ServiceSettings.EnableAPIUserDeletion true' | |||
Il devient alors possible de supprimer l'utilisateur | |||
su - mattermost -c '/opt/mattermost/bin/mmctl user delete --confirm mattermost-advisor' | |||
==Tester l'installation== | ==Tester l'installation== | ||
Ligne 75 : | Ligne 113 : | ||
{{Info|Cette commande ne rend pas la main. Le service écoute sur le port TCP 8065. Ceci est visible avec la commande <source lang="bash" inline>ss -ltn</source>.}} | {{Info|Cette commande ne rend pas la main. Le service écoute sur le port TCP 8065. Ceci est visible avec la commande <source lang="bash" inline>ss -ltn</source>.}} | ||
Une fois votre configuration validée, faites un <source lang="bash" inline><ctrl+c></source> et passez à l'étape de création d'un service [[Systemd]]. | Une fois votre configuration validée, faites un <source lang="bash" inline><ctrl+c></source> et passez à l'étape de création d'un service [[:Category:Systemd|Systemd]]. | ||
==Création d'un service Systemd== | ==Création d'un service Systemd== | ||
Ligne 115 : | Ligne 153 : | ||
Activer le service au démarrage | Activer le service au démarrage | ||
systemctl enable mattermost.service | systemctl enable mattermost.service | ||
=Mises à jours= | |||
Afin de mettre à jour le service, il convient de réaliser quelques opérations après avoir '''sauvegardé''' votre machine (une mise à jour peut toujours devoir occasionner un retour en arrière). | |||
Éteindre le service | |||
systemctl stop mattermost.service | |||
Télécharger la nouvelle version (n'oubliez pas la présence du mot clé ''team'' dans l'''URL'') | |||
wget https://releases.mattermost.com/5.34.1/mattermost-team-5.34.1-linux-amd64.tar.gz -P /tmp | |||
Extraire la nouvelle version | |||
cd /tmp | |||
tar -xf mattermost*.gz --transform='s,^[^/]\+,\0-upgrade,' | |||
Sauvegarder l'ancienne version | |||
cd /opt/ | |||
cp -ra mattermost/ mattermost-back-$(date +'%F-%H-%M')/ | |||
Suppression des fichiers impersonnels | |||
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 | xargs rm -r | |||
{{info|Ceci aura pour effet de vider le répertoire des données de structure de l'application. Seules les informations personnalisées (configurations, pièces jointes, images de profils...) seront conservées et subsisteront après la fusion de la nouvelle version avec l’ancienne.}} | |||
Application des bons droits au répertoire | |||
chown -hR mattermost:mattermost /tmp/mattermost-upgrade/ | |||
Fusion des modifications entre les versions (mise à jour) | |||
cp -an /tmp/mattermost-upgrade/. mattermost/ | |||
rm -r /tmp/mattermost-upgrade/ | |||
==Source de la section== | |||
* https://docs.mattermost.com/administration/upgrade.html | |||
=Sources= | =Sources= | ||
* https://docs.mattermost.com/install/install-ubuntu-1604.html | * https://docs.mattermost.com/install/install-ubuntu-1604.html | ||
* https://docs.mattermost.com/administration/command-line-tools.html#mattermost-user-create | * https://docs.mattermost.com/administration/command-line-tools.html#mattermost-user-create |
Dernière version du 14 mars 2022 à 20:19
Mattermost est un service de chat collaboratif auto-hébergeable. Il met à disposition une interface WEB permettant l'inscription et la connexion des utilisateurs. Il se présente sous la forme de salons de discutions permettant l'échange de texte, d'images, de sons et de vidéos entre les personnes d'un même groupe.
Ce programme étant écrit en Go, il partage avec ses pairs le fait d'être qualitatif et facile à installer.
Installation
Base de donnée
Mattermost a besoin d'une base de donnée relationnelle pour fonctionner. L'outil prend en charge MySQL/MariaDB et PostgreSQL. Je vais partir sur MariaDB car c'est ce que j'utilise généralement. Je vous renvois à la documentation officielle en source (très bien faite) si vous voulez explorer d'autres options.
Installation de MariaDB
apt install --no-install-recommends mariadb-server
Sécurisation de l'installation
Par défaut, MariaDB a quelques lacunes sécuritaires (c'est bien pour les tests mais pas la production). Il faut utiliser le script intégré au paquet pour régler ça
mysql_secure_installation
Suivez les étapes en faisant les bons choix (ils sont plutôt évidents).
Configuration des bases de données
Se connecter à l'utilisateur root de MariaDB
mariadb -u root -p
Créer l'utilisateur de l'application
create user 'mattermost'@'%' identified by 'QOkBjKheLCjzbyLFggXxg23IV5IuLN28';
ASTUCE
Vous pouvez utiliser la commandecat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
pour générer un mot de passe similaire. Une documentation existe à ce sujet.Créer la base de données pour l'application
create database mattermost;
Donner les privilèges à l'utilisateur précédemment créé sur cette base
GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON mattermost.* TO 'mattermost'@'%';
Mattermost
Téléchargement de l'application
Le lien de la dernière version est disponible à cette adresse. Pour ma part il s'agit de la version 5.16.1.
ATTENTION
Il existe deux branches de cet outil. Une "Entreprise" et une "Communautaire". La première dispose de fonctions supplémentaires monnayant une licence alors que la seconde n'impose aucune restriction mais est introuvable sur leur site (il y avait autrefois un onglet dédié il me semble mais il a disparu). Pour pouvoir la télécharger, il faut ajouter le mot team entre mattermost et le numéro de version comme dans le lien qui suit.wget https://releases.mattermost.com/5.19.1/mattermost-team-5.19.1-linux-amd64.tar.gz -P /tmp/
Décompression de l'archive
tar -xvzf /tmp/mattermost*.gz -C /opt/
Création du répertoire de données (il contiendra les pièces jointes des conversations)
mkdir /opt/mattermost/data
Configuration de l'application
vim /opt/mattermost/config/config.json
- Dans la section DriverName (ligne 131), mettre mysql
- Dans la section DataSource (juste en dessous), adapter les directives utilisateurs:motdepasse et BDD (juste avant le point d'interrogation) avec les informations adéquates
INFORMATION
J'ai constaté qu'à chaque mise à jour, cette ligne changeait dans le fichier fournit par défaut et cerise sur le gâteau, celle présente dans la version 6.3.1 ne fonctionne pas (franchement ils abusent) ! Si vous n'avez jamais configuré d'instance sur laquelle vous pourrez vous appuyer en guise d'exemple vous l'aurez dans l'os ! Donc voici une ligne qui fonctionne :"DataSource": "UTILISATEUR:MOTDEPASSE@localhost/BASEDEDONNEE?sslmode=disable\u0026connect_timeout=10",
. Inspirez-vous en pour votre configuration.- Passer l'interface en Français en mettant fr dans les trois sections de LocalizationSettings
- Désactiver la télémétrie en passant la section EnableDiagnostics à false
Je vous recommandes de plus d'aller faire un tour dans chaque onglets de la console système de l'interface WEB afin de vous assurer que les paramètres correspondent à vos souhaits.
Posix
Création d'un utilisateur Posix pour Mattermost
useradd --system --home-dir /opt/mattermost/ --user-group mattermost
Attribution des droits à l'application
chown -R mattermost:mattermost /opt/mattermost chmod -R g+w /opt/mattermost
Création d'utilisateurs Mattermost
Pour créer un utilisateur Mattermost, il est possible de passer soit par l'interface WEB, soit par la ligne de commande (cette dernière permettant également de créer des utilisateurs administrateurs).
Pré version 6
ATTENTION
N'est plus valable depuis la version 6.Création d'un utilisateur administrateur
su - mattermost -c '/opt/mattermost/bin/mattermost user create --firstname Toto --system_admin --email toto@example.com --username toto --password LeMotDePasseDeToto'
Création d'un utilisateur standard
su - mattermost -c '/opt/mattermost/bin/mattermost user create --email tata@example.com --username tata --password LeMotDePasseDeTata'
ATTENTION
Mattermost est très casse couille concernant les mots de passes à utiliser (genre les développeurs savent mieux que nous ce qu'est un bon mot de passe...), du coup, ceux utilisés en exemples ne sont pas acceptés par l'outil. Il faut mettre au minimum 10 caractères avec au moins un en minuscule, un en majuscule, un chiffre et un caractère spécial "~!@#$%^&*()")., (histoire de bien faire chier).Post version 6
Depuis la version 6, Mattermost utilise la commande mmctl
. L'outil requière d'ajouter une connexion au socket dans sa base avant d'être utilisé (ayant fait une migration depuis la version 5, je n'ai aucune idée de comment faire lors d'une installation propre en 6). Pour se faire :
Il est impératif de mettre le mot de passe de votre utilisateur dans un fichier texte (ce fichier pourra être supprimé après la commande)
echo 'MonSuperMotDeP@sse123' > /tmp/mdp.txt
Création d'une connexion (crée le fichier ~/.config/mmctl/config
)
su - mattermost -c '/opt/mattermost/bin/mmctl auth login http://localhost:8065 --name un.nom.quelconque --username votreAdmin --password-file /tmp/mdp.txt'
Il est possible de lister les connexions enregistrées
su - mattermost -c '/opt/mattermost/bin/mmctl auth current'
Pour supprimer une connexion, la documentation officielle décrit la commande suivante
su - mattermost -c '/opt/mattermost/bin/mmctl auth delete le.nom.quelconque.de.votre.connexion'
Il est alors possible de créer un utilisateur en utilisant les mêmes paramètres que pour la version 5
su - mattermost -c '/opt/mattermost/bin/mmctl user create --email tata@example.com --username tata --password LeMotDePasseDeTata'
La désactivation d'un utilisateur s'effectue comme suit (utilisateur mattermost-advisor)
su - mattermost -c '/opt/mattermost/bin/mmctl user deactivate mattermost-advisor'
Pour supprimer un utilisateur, il faut d'abord le permettre dans la configuration comme suit
su - mattermost -c '/opt/mattermost/bin/mmctl config set ServiceSettings.EnableAPIUserDeletion true'
Il devient alors possible de supprimer l'utilisateur
su - mattermost -c '/opt/mattermost/bin/mmctl user delete --confirm mattermost-advisor'
Tester l'installation
Nous allons exécuter Mattermost avec l'utilisateur Posix précédemment créé afin de tester l'ensemble de la configuration.
su - mattermost -c '/opt/mattermost/bin/mattermost'
INFORMATION
Cette commande ne rend pas la main. Le service écoute sur le port TCP 8065. Ceci est visible avec la commandess -ltn
.Une fois votre configuration validée, faites un <ctrl+c>
et passez à l'étape de création d'un service Systemd.
Création d'un service Systemd
vim /lib/systemd/system/mattermost.service
[Unit]
Description=Mattermost
After=network.target
After=mariadb.service
Requires=mariadb.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=mariadb.service
Recharger la configuration de Systemd
systemctl daemon-reload
Démarrer le service
systemctl start mattermost.service
Vérifier son bon fonctionnement
systemctl status mattermost.service
Si l'état est à "active", c'est bon. De plus, le port TCP 8065 doit être en écoute à ce stade.
Activer le service au démarrage
systemctl enable mattermost.service
Mises à jours
Afin de mettre à jour le service, il convient de réaliser quelques opérations après avoir sauvegardé votre machine (une mise à jour peut toujours devoir occasionner un retour en arrière).
Éteindre le service
systemctl stop mattermost.service
Télécharger la nouvelle version (n'oubliez pas la présence du mot clé team dans l'URL)
wget https://releases.mattermost.com/5.34.1/mattermost-team-5.34.1-linux-amd64.tar.gz -P /tmp
Extraire la nouvelle version
cd /tmp tar -xf mattermost*.gz --transform='s,^[^/]\+,\0-upgrade,'
Sauvegarder l'ancienne version
cd /opt/ cp -ra mattermost/ mattermost-back-$(date +'%F-%H-%M')/
Suppression des fichiers impersonnels
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 | xargs rm -r
INFORMATION
Ceci aura pour effet de vider le répertoire des données de structure de l'application. Seules les informations personnalisées (configurations, pièces jointes, images de profils...) seront conservées et subsisteront après la fusion de la nouvelle version avec l’ancienne.Application des bons droits au répertoire
chown -hR mattermost:mattermost /tmp/mattermost-upgrade/
Fusion des modifications entre les versions (mise à jour)
cp -an /tmp/mattermost-upgrade/. mattermost/ rm -r /tmp/mattermost-upgrade/