doc:formations:hebergement:serveur:mattermost:installation
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
doc:formations:hebergement:serveur:mattermost:installation [2022/08/17 07:29] – supprimée - modification externe (Unknown date) 127.0.0.1 | doc:formations:hebergement:serveur:mattermost:installation [2025/03/29 17:41] (Version actuelle) – jeremie | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | Retour à [[doc: | ||
+ | ====== Installation d'un mattermost sur un serveur existant ====== | ||
+ | |||
+ | ([[https:// | ||
+ | |||
+ | Mattermost nécessite un serveur mysql (mariadb), ainsi qu'un serveur web nginx. Notez qu'il est possible d' | ||
+ | |||
+ | apt install mysql-server | ||
+ | |||
+ | ===== MySQL ===== | ||
+ | |||
+ | :!: début 2025, mysql n'est plus supporté. Voyez [[doc: | ||
+ | |||
+ | | ||
+ | mysql -u root | ||
+ | create database mattermost; | ||
+ | create user ' | ||
+ | grant all privileges on mattermost.* to ' | ||
+ | quit; | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | === Via dépot apt externe === | ||
+ | |||
+ | Note: nouveau (6/23), il est possible d' | ||
+ | |||
+ | curl -o- https:// | ||
+ | apt update | ||
+ | apt install mattermost -y | ||
+ | |||
+ | === Ou bien manuellement === | ||
+ | |||
+ | Aller sur [[https:// | ||
+ | |||
+ | :!: Attention à prendre le meme format exécutable que votre serveur (AMD vs Intel...). A ce jour il semblerait qu'ils ne supportent que la plateforme Intel! | ||
+ | |||
+ | cd /opt | ||
+ | wget https:// | ||
+ | tar xvzf mattermost*.tar.gz | ||
+ | rm mattermost*.tar.gz | ||
+ | |||
+ | mkdir / | ||
+ | |||
+ | Puis | ||
+ | |||
+ | useradd --system --user-group mattermost | ||
+ | chown -R mattermost: | ||
+ | chmod -R g+w / | ||
+ | |||
+ | === Configuration === | ||
+ | |||
+ | Modifiez alors la section '' | ||
+ | |||
+ | " | ||
+ | " | ||
+ | " | ||
+ | |||
+ | Vous pouvez aussi changer le '' | ||
+ | |||
+ | Enfin on démarre mattermost (sous l' | ||
+ | |||
+ | cd / | ||
+ | runuser -u mattermost ./ | ||
+ | |||
+ | Et observez le journal affiché. | ||
+ | |||
+ | === Service unix associé === | ||
+ | |||
+ | A ce stade on est censé voir un '' | ||
+ | |||
+ | <code -> | ||
+ | cat > / | ||
+ | [Unit] | ||
+ | Description=Mattermost | ||
+ | After=network.target | ||
+ | After=mysql.service | ||
+ | Requires=mysql.service | ||
+ | |||
+ | [Service] | ||
+ | Type=notify | ||
+ | ExecStart=/ | ||
+ | TimeoutStartSec=3600 | ||
+ | Restart=always | ||
+ | RestartSec=10 | ||
+ | WorkingDirectory=/ | ||
+ | User=mattermost | ||
+ | Group=mattermost | ||
+ | LimitNOFILE=49152 | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=mysql.service | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | On le lance et on vérifie le statut " | ||
+ | |||
+ | service mattermost start | ||
+ | service mattermost status | ||
+ | |||
+ | Dans ce cas on devrait voir du contenu HTML sur cette adresse (précisez le port configuré s'il a été changé): | ||
+ | |||
+ | curl http:// | ||
+ | |||
+ | On active alors le lancement automatique au démarrage: | ||
+ | |||
+ | systemctl enable mattermost.service | ||
+ | |||
+ | Note: pour lister tous les services actifs, '' | ||
+ | |||
+ | Et désormais, vous devriez avoir accès à la console mattermost via: | ||
+ | |||
+ | http:// | ||
+ | |||
+ | Si ce n'est pas le cas (accès local mais refus distant), vérifiez plutôt sur le serveur les règles de pare-feu, HSTS, etc. | ||
+ | |||
+ | De là on peut créer le premier utilisateur (qui aura le status d' | ||
+ | |||
+ | === Redirection extérieure === | ||
+ | |||
+ | Pour le moment on accède à Mattermost via une URL " | ||
+ | |||
+ | Une solution élégante est de recourir à un reverse proxy afin de corriger cette URL étrange, par exemple en lui dédiant [[https:// | ||
+ | |||
+ | Voir le site officiel pour [[https:// | ||
+ | |||
+ | Une fois fonctionnel, | ||
+ | |||
+ | * modifier ''/ | ||
+ | * ou ajouter une règle de pare-feu sur la console Scaleway ou sur le serveur lui-meme afin de bloquer le port associé | ||
+ | |||
+ | ===== Proxy de mattermost pour sécurisation par HTTPS ===== | ||
+ | |||
+ | Cas d' | ||
+ | * mattermost est installé pour écouter localement sur http:// | ||
+ | * votre serveur web Apache prééexiste sur le serveur | ||
+ | * et il est est déjà protégé par un certificat HTTPS (ex. sur https:// | ||
+ | * mattermost n'est pas affecté à un sous-domaine dédié (je le recommande!), | ||
+ | |||
+ | Alors: | ||
+ | * déjà, configurez aussi ce ''/ | ||
+ | * ensuite il va nous falloir configurer le proxy https-> | ||
+ | * et donc configurer le proxy aussi pour l' | ||
+ | |||
+ | > Le protocole websocket est un mécanisme utile et intéressant qui transforme une communication sous protocole HTTP initiale, vers le protocole websocket //tout en restant sur le meme port//. Le serveur et le client doivent coopérer pour cela. Dans notre cas, on doit aussi faire du proxy car on doit transformer les wss:// | ||
+ | |||
+ | Voila alors le bloc " | ||
+ | |||
+ | < | ||
+ | # Set web sockets: external | ||
+ | |||
+ | # Configuration du proxy pour le service websocket (wss-> | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{REQUEST_URI} / | ||
+ | RewriteCond %{HTTP: | ||
+ | RewriteCond %{HTTP: | ||
+ | RewriteRule .* ws:// | ||
+ | |||
+ | # Configuration habituelle du proxy pour le service HTTP | ||
+ | ProxyPass | ||
+ | ProxyPassreverse | ||
+ | </ | ||
+ | |||
+ | :!: Sur votre serveur vous aurez à activer quelques modules, notamment [[https:// | ||
+ | |||
+ | a2enmod proxy proxy_wstunnel proxy_http rewrite | ||
+ | |||
+ | Notez l' | ||
+ | |||
+ | ====== Log ====== | ||
+ | |||
+ | Pour séparer les logs verbeux de ce mattermost sur ''/ | ||
+ | |||
+ | < | ||
+ | SetEnvIf Request_URI /mm/ mattermostlog | ||
+ | CustomLog ${APACHE_LOG_DIR}/ | ||
+ | |||
+ | ErrorLog ${APACHE_LOG_DIR}/ | ||
+ | CustomLog ${APACHE_LOG_DIR}/ | ||
+ | </ | ||
+ | |||
+ | ====== Upgrade, mise à jour de mattermost ====== | ||
+ | |||
+ | < | ||
+ | #!/bin/bash -feu | ||
+ | # Seamlessly upgrade mattermost by reproducing the manual steps | ||
+ | # of https:// | ||
+ | |||
+ | # Check https:// | ||
+ | # Ex: wget https:// | ||
+ | |||
+ | # <input type=" | ||
+ | dl=$(curl -s https:// | ||
+ | |||
+ | echo "We will use this release: $dl" | ||
+ | echo -n "Is this OK (Y| )? " | ||
+ | read ans | ||
+ | if [[ $ans != ' | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | cd /tmp | ||
+ | wget $dl | ||
+ | mb=$(basename $dl) | ||
+ | tar -xf $mb --transform=' | ||
+ | rm /tmp/$mb | ||
+ | chown -hR mattermost: | ||
+ | |||
+ | |||
+ | systemctl stop mattermost | ||
+ | |||
+ | echo " | ||
+ | BAKD=$(date +' | ||
+ | |||
+ | cd /opt/ | ||
+ | |||
+ | # Back the SQL databse up (bypasses root password if any) | ||
+ | / | ||
+ | mkdir -p / | ||
+ | mysqld_safe --skip-grant-tables & | ||
+ | sleep 5 | ||
+ | mysqldump mattermost | gzip > mattermost-backup-for-upgrade-$BAKD.sql.tgz | ||
+ | kill %1 | ||
+ | service mysql start | ||
+ | |||
+ | echo " | ||
+ | tar czf mattermost-backup-for-upgrade-$BAKD.files.tgz mattermost | ||
+ | |||
+ | echo -n "Ready to override existing mattermost (Y| )? " | ||
+ | read ans | ||
+ | if [[ $ans != ' | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | |||
+ | find mattermost/ mattermost/ | ||
+ | |||
+ | cp -an / | ||
+ | |||
+ | # This provokes DB migration (better than restarting the service, wth?) | ||
+ | / | ||
+ | |||
+ | # You may check synchronously the (slow!) schema upgrades with: | ||
+ | # tail -F / | ||
+ | |||
+ | systemctl start mattermost | ||
+ | |||
+ | rm -r / | ||
+ | </ | ||
+ | |||
+ | :!: Il arrive souvent qu'on aie un problème de " | ||
+ | |||
+ | ALTER DATABASE `mattermost-dev` CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; | ||
+ | DROP PROCEDURE IF EXISTS RenameSolarizedThemeWithUnderscore; | ||
+ | ===== Plugins ===== | ||
+ | |||
+ | **TODO** | ||
+ | |||
+ | * [[https:// | ||
+ | * {{: | ||
+ | |||
+ | |||
+ | Suite sur [[doc: |