Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
deployer_un_serveur_mattermost [2023/11/01 15:01] superadmindeployer_un_serveur_mattermost [2023/11/01 20:14] (Version actuelle) – [Gestion des utilisateurs] superadmin
Ligne 3: Ligne 3:
 ===== Introduction ===== ===== Introduction =====
  
-Mattermost est un système de messagerie instantanée open source conçu pour un usage privé. Ce tutoriel explique le mettre en place un afin d'échanger des messages au sein d'un même réseau local.+Mattermost est un système de messagerie instantanée open source conçu pour un usage privé. Ce tutoriel explique le mettre en place un afin d'échanger des messages au sein d'un même réseau local ou via Internet.
  
 Contrairement à Microsoft Teams ou Slack, Mattermost ne supporte que les messages texte, et non les appels audio ou vidéo. Il a néanmoins l'avantage de pouvoir être personnalisé grâce à l'intégration d'applications tierces, et de permettre l'authentification via LDAP dans la version //Entreprise//. Contrairement à Microsoft Teams ou Slack, Mattermost ne supporte que les messages texte, et non les appels audio ou vidéo. Il a néanmoins l'avantage de pouvoir être personnalisé grâce à l'intégration d'applications tierces, et de permettre l'authentification via LDAP dans la version //Entreprise//.
Ligne 18: Ligne 18:
  
 Nous aurons besoin de : Nous aurons besoin de :
-  * Une machine (virtuelle ou physique) sous Linux (de préférence Debian 12 qui sera utilisé dans ce tutoriel)+  * Une machine (virtuelle ou physique) sous Linux (de préférence Debian 12 qui sera utilisé dans ce tutoriel) avec au moins 2Go de RAM.
   * Deux machines (virtuelles ou physiques) sous n'importe quel OS compatible avec le client lourd Mattermost et connectées au même réseau local que la première machine.   * Deux machines (virtuelles ou physiques) sous n'importe quel OS compatible avec le client lourd Mattermost et connectées au même réseau local que la première machine.
  
Ligne 46: Ligne 46:
 </code> </code>
  
-:!: Attention à bien remplacer ''MyPassword!dans les commandes ci-dessus par le mot de passe qui sera utilisé pour la connexion à la BDD+:!: Attention à bien remplacer ''MyPassword!'' dans les commandes ci-dessus par le mot de passe qui sera utilisé pour la connexion à la BDD
  
-=== Sous-étape 1.1 ===+Taper ''quit'' pour sortir de la CLI mariadb.
  
-=== Sous-étape 1.2 ===+La configuration de la base de données est réalisée. Passons à l'installation du serveur Mattermost.
  
-==== Etape 2 ====+==== Installation et configuration du serveur ====
  
-=== Sous-étape 2.1 ===+=== Installation ===
  
-=== Sous-étape 2.2 ===+Télécharger Mattermost sur le serveur au format tarball : 
  
-==== Etape 3 ====+<code>wget https://releases.mattermost.com/9.1.1/mattermost-9.1.1-linux-amd64.tar.gz</code>
  
-==== Vérifications ====+:!: L'URL de l'archive à jour peut être trouvée sur la page suivante : [[https://docs.mattermost.com/install/install-tar.html]] 
 + 
 +Décompresser l'archive dans le répertoire ''/opt/'' qui sera le chemin d'installation de Mattermost : 
 + 
 +<code>tar xvzf mattermost-9.1.1-linux-amd64.tar.gz -C /opt/</code> 
 + 
 +Ajouter un répertoire ''data'' dans le répertoire de Mattermost afin de stocker les fichiers que les utilisateurs s'échangeront : 
 + 
 +<code>mkdir /opt/mattermost/data</code> 
 + 
 +Et créer un utilisateur système qui aura tous les droits sur le répertoire d'installation : 
 + 
 +<code>useradd --system --user-group mattermost 
 +chown -R mattermost:mattermost /opt/mattermost 
 +chmod -R g+w /opt/mattermost 
 +</code> 
 + 
 +=== Configuration === 
 + 
 +Maintenant que Mattermost est installé, éditer sa configuration : 
 + 
 +<code>nano /opt/mattermost/config/config.json</code> 
 + 
 +C'est là que sont stockés tous les paramètres du serveur. 
 + 
 +D'abord, modifier l'URL du serveur en mettant l'IP ou un nom de domaine associé à la machine : 
 + 
 +<code>"SiteURL": "https://192.168.1.201",</code> 
 + 
 +Changer les paramètres SQL pour correspondre à la BDD que l'on a préparée avant : 
 + 
 +<code>  "SqlSettings":
 +    "DriverName": "mysql", 
 +    "DataSource": "mattermost:MyPassword!@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s", 
 +</code> 
 + 
 +Puis adapter les autres paramètres comme nécessaire. 
 + 
 +__Explication de certains paramètres :__ 
 + 
 +      * __ServiceSettings__ 
 +          *   SiteURL : URL de votre application. Vous pouvez utiliser l'IP du serveur si vous ne disposez pas de domaine. 
 +      * __SqlSettings__ 
 +          *   DriverName : nous utilisons le driver mysql 
 +          *   DataSource : information de connexion à la base de données. Adaptez le nom de l'utilisateur et le mot de passe 
 +      * __FileSettings__ 
 +          *   Directory : adaptez si vous utilisez un emplacement spécifique pour le stockage des fichiers, sinon laisser la valeur par défaut. 
 +  * __PluginSettings__ 
 +          *   Directory : chemin des plugins, la valeur par défaut provoque chez moi des erreurs au démarrage du serveur, il semble préférable d'indiquer le chemin absolu. 
 +          *   ClientDirectory : chemin des plugins client, la valeur par défaut provoque chez moi des erreurs au démarrage du serveur, il semble préférable d'indiquer le chemin absolu. 
 + 
 +=== Création du service === 
 + 
 +On va désormais créer le service Linux qui exécutera Mattermost, via systemd : 
 + 
 +<code>nano /lib/systemd/system/mattermost.service</code> 
 + 
 +Y insérer ceci : 
 + 
 +<code>[Unit] 
 +Description=Mattermost 
 +After=network.target 
 +After=mysql.service 
 +Requires=mysql.service 
 + 
 +[Service] 
 +Type=notify 
 +User=mattermost 
 +Group=mattermost 
 +ExecStart=/opt/mattermost/bin/mattermost 
 +TimeoutStartSec=3600 
 +Restart=always 
 +RestartSec=10 
 +WorkingDirectory=/opt/mattermost 
 +LimitNOFILE=49152 
 + 
 +[Install] 
 +WantedBy=mariadb.service 
 +</code> 
 + 
 +Ensuite recharger systemd et activer le service au lancement de la machine : 
 + 
 +<code>systemctl daemon-reload 
 +systemctl enable mattermost</code> 
 + 
 +On peut enfin démarrer Mattermost par le biais de ce service : 
 +<code>systemctl start mattermost</code> 
 + 
 +Vérifier que le service a bien démarré : 
 + 
 +<code>systemctl status mattermost.service</code> 
 + 
 +Il doit être dans l'état ''Active : active (running)'', sinon c'est qu'il y a eu une erreur de commise lors des étapes précédentes. 
 + 
 +La configuration de Mattermost est terminée. Penser à configurer les enregistrements DNS nécessaire pour joindre le serveur via son nom de domaine (sauf si on utilise une IP). 
 + 
 +Pour vérifier que c'est fonctionnel, ouvrir un navigateur web sur un poste client et entrer l'adresse du serveur, suivi du port 8065 (port par défaut) : 
 +{{ ::mattermost_http.png |Interface Web de Mattermost}} 
 + 
 +Pour créer un instance, il faut s'inscrire sur l'interface web et suivre l'assistant. 
 +Pour la gestion des utilisateurs, voir plus bas. 
 + 
 +=== Configuration du serveur Web === 
 + 
 +Dans cette partie, on configure la réécriture d'URL pour sécuriser les usages extérieurs. Si l'installation de Mattermost en cours n'a pas destination à être utilisée en dehors du réseau local, passer cette étape.  
 + 
 +Ici, on utilisera Apache, mais il est possible d'en utiliser un autre (Caddy, Nginx...). 
 + 
 +Installer d'abord le paquet : 
 +<code>apt-get install apache2</code> 
 + 
 +Ensuite, on active les modules apache suivants : 
 +<code>a2enmod ssl 
 +a2enmod rewrite 
 +a2enmod expires 
 +a2enmod headers 
 +a2enmod http2 
 +a2enmod proxy 
 +a2enmod proxy_http 
 +a2enmod proxy_wstunnel 
 +</code> 
 + 
 +Puis, créer un nouveau VHost (site virtuel) : 
 +<code>nano /etc/apache2/sites-available/mattermost.conf</code> 
 + 
 +Insérer dans le fichier le code suivant, en prenant soin de modifier les directives ''ServerAdmin'', ''ServerName'', ''ProxyPassReverseCookieDomain'' et ''RewriteCond'' avec les bons paramètres (commentés) : 
 + 
 +<code> 
 +<VirtualHost *:80> 
 +    ServerAdmin webmaster@localhost #adresse mail administrateur 
 +    ServerName 192.168.1.201 #URL de l'appli 
 + 
 +    ProxyPreserveHost On 
 + 
 +    RewriteEngine On 
 +    RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC] 
 +    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] 
 +    RewriteCond %{HTTP:CONNECTION} \bUpgrade\b [NC] 
 +    RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L] 
 + 
 +    <Location /> 
 +        Require all granted 
 +        ProxyPass http://127.0.0.1:8065/ 
 +        ProxyPassReverse http://127.0.0.1:8065/ 
 +        ProxyPassReverseCookieDomain 127.0.0.1 192.168.1.201 #URL de l'appli (à la fin) 
 +    </Location> 
 + 
 +    RewriteCond %{SERVER_NAME} =192.168.1.201 #URL de l'appli (à la fin) 
 +    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] 
 +</VirtualHost> 
 +</code> 
 + 
 +Et activer le site comme ceci : 
 +<code>a2ensite mattermost 
 +systemctl reload apache2</code> 
 + 
 +On peut aussi installer Certbot pour activer SSL, dans le cas où on aurait besoin d'un certificat SSL pour un serveur accessible depuis l'extérieur avec un nom de domaine : 
 + 
 +<code>apt-get install certbot python3-certbot-apache</code> 
 + 
 +:!: Certbot ne permet de générer des certificats SSL que pour des noms de domaines. Le site doit être accessible depuis Internet pour que ça fonctionne. 
 + 
 +==== Rétention des données ==== 
 + 
 +Dans le cas où on Mattermost serait mis en place dans une entreprise, on peut automatiser la suppression des anciens messages à l'aide d'une requêtes SQL toute simple : 
 + 
 +<code>DELETE FROM Posts WHERE CreateAt > DATE_FORMAT(NOW() - INTERVAL 30 DAY, "%Y-%m-%d 00:00:00");</code> 
 + 
 +Ici, la commande supprime tous les messages de plus de 30 jours. Évidemment, c'est ajustable. 
 + 
 +==== Gestion des utilisateurs ==== 
 + 
 +La commande pour gérer les utilisateurs sous Mattermost est : 
 +<code>/opt/mattermost/bin/mmctl</code> 
 + 
 +Pour cela, il faut d'abord être connecté en tant qu'administrateur à Mattermost : 
 +<code>/opt/mattermost/bin/mmctl auth login http://localhost:8065</code> 
 + 
 +Indiquer un nom à la connexion (n'importe quoi) et ses identifiants de compte admin. 
 + 
 +Créer un utilisateur : 
 +<code>/opt/mattermost/bin/mmctl user create --email test2@gmail.com --username test2 --password Password2</code> 
 + 
 +:!: On peut rajouter les options suivantes si besoin : 
 +  * --system-admin : pour donner des droits d'administration sur le serveur à l'utilisateur 
 +  * --email-verified : pour ignorer la vérification de l'adresse mail
  
 ===== Sources ===== ===== Sources =====