Wie man Mattermost unter CentOS 8 installiert und konfiguriert

Mattermost ist ein kostenloses, quelloffenes und selbst gehostetes Nachrichtensystem für die Zusammenarbeit von Unternehmensteams. Es ist in Golang und React geschrieben und verwendet MySQL/MariaDB/PostgreSQL als Datenbank-Backend. Es bietet Desktop-Clients für Windows, MacOS und Linux sowie mobile Anwendungen für iOS und Android. Es ist Slack sehr ähnlich und bringt Ihre gesamte Teamkommunikation an einen Ort. Es bietet sehr nützliche Funktionen, darunter Einzel- und Gruppennachrichten, Dateifreigabe, Videoanrufe, benutzerdefinierte Emojis, Webhooks und Befehle und vieles mehr.

In diesem Tutorial zeigen wir Ihnen, wie Sie Mattermost unter CentOS 8 installieren.

Voraussetzungen

  • Ein Server, auf dem CentOS 8 läuft.
  • Auf Ihrem Server ist ein Root-Passwort konfiguriert.

Installieren und Konfigurieren der MariaDB-Datenbank

Mattermost verwendet MariaDB/MySQL als Datenbank-Backend. MariaDB muss also auf Ihrem Server installiert sein. Wenn es nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:

dnf install mariadb-server -y

Starten Sie nach der Installation den MariaDB-Dienst und aktivieren Sie ihn nach dem Systemneustart mit dem folgenden Befehl:

systemctl start mariadb
 systemctl enable mariadb

Standardmäßig ist MariaDB nicht gesichert und das Root-Passwort ist in CentOS 8 nicht gesetzt. Sie können es also mit dem folgenden Befehl setzen:

mysql_secure_installation

Beantworten Sie alle Fragen wie unten gezeigt:

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Wenn Sie fertig sind, loggen Sie sich mit dem Benutzer root in die MariaDB ein:

mysql -u root -p

Geben Sie Ihr Root-Passwort ein und erstellen Sie dann eine Datenbank und einen Benutzer für Mattermost mit folgendem Befehl:

MariaDB [(none)]> CREATE DATABASE mattermostdb;
 MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermostdb.* TO [email protected] IDENTIFIED BY 'password';

Als nächstes müssen Sie die Privilegien aufheben und die MariaDB-Shell mit dem folgenden Befehl verlassen:

MariaDB [(none)]> FLUSH PRIVILEGES;
 MariaDB [(none)]> EXIT;

Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Mattermost installieren

Zuerst müssen Sie einen separaten Benutzer erstellen, um Mattermost auszuführen. Sie können ihn mit dem folgenden Befehl erstellen:

useradd -d /opt/mattermost -U -M mattermost

Laden Sie dann die neueste Version von Mattermost mit folgendem Befehl herunter:

wget https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz

Sobald der Download abgeschlossen ist, extrahieren Sie die heruntergeladene Datei mit dem folgenden Befehl:

tar -xvzf mattermost-5.21.0-linux-amd64.tar.gz

Als nächstes verschieben Sie das extrahierte Verzeichnis mit dem folgenden Befehl nach /opt:

mv mattermost /opt/

Als nächstes erstellen Sie ein Datenverzeichnis innerhalb von mattermost und geben Sie dem mattermost mit dem folgenden Befehl die richtigen Berechtigungen:

mkdir /opt/mattermost/data
 chown -R mattermost:mattermost /opt/mattermost
 chmod -R g+w /opt/mattermost

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Materie konfigurieren

Als nächstes müssen Sie Ihre Datenbank in Mattermost definieren. Sie können dies tun, indem Sie die Datei config.json bearbeiten:

nano /opt/mattermost/config/config.json

Ändern Sie die folgenden Zeilen gemäß Ihren Datenbankeinstellungen:

  "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "mattermost:[email protected](localhost:3306)/mattermostdb?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Ändern Sie dann das Verzeichnis in /opt/mattermost und starten Sie den Mattermost-Server mit dem folgenden Befehl:

cd /opt/mattermost
 sudo -u mattermost bin/mattermost

Sobald der Server erfolgreich gestartet wurde, sollten Sie die folgende Ausgabe erhalten:

{"level":"info","ts":1585379681.8383002,"caller":"utils/i18n.go:83","msg":"Loaded system translations","for locale":"en","from locale":"/opt/mattermost/i18n/en.json"}
{"level":"info","ts":1585379681.83874,"caller":"app/server_app_adapters.go:58","msg":"Server is initializing..."}
{"level":"info","ts":1585379681.8470004,"caller":"sqlstore/supplier.go:221","msg":"Pinging SQL","database":"master"}
{"level":"info","ts":1585379684.7858346,"caller":"sqlstore/upgrade.go:112","msg":"The database schema version has been set","version":"5.21.0"}
{"level":"error","ts":1585379690.8182986,"caller":"app/server_app_adapters.go:129","msg":"SiteURL must be set. Some features will operate incorrectly if the SiteURL is not set. See documentation for details: http://about.mattermost.com/default-site-url"}
{"level":"info","ts":1585379690.821083,"caller":"app/license.go:39","msg":"License key from https://mattermost.com required to unlock enterprise features."}

Drücken Sie dann CTRL + C, um den Mattermost-Server zu stoppen.

Erstellen einer Systemdienstdatei für Mattermost

Als nächstes müssen Sie eine Dienstdatei systemd erstellen, um den Mattermost-Dienst zu verwalten. Sie können sie mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/mattermost.service

Fügen Sie die folgenden Zeilen hinzu:

[Unit]
Description=Mattermost
After=syslog.target network.target mariadb.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/run/mattermost.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Dann laden Sie den systemd-Daemon mit folgendem Befehl neu:

systemctl daemon-reload

Als nächstes starten Sie den Mattermost-Dienst und aktivieren ihn nach dem Systemneustart mit folgendem Befehl:

systemctl start mattermost
 systemctl enable mattermost

Sie können auch den Status des Mattermost-Dienstes mit dem folgenden Befehl überprüfen:

systemctl status mattermost

Sie sollten die folgende Ausgabe erhalten:

? mattermost.service - Mattermost
   Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-03-28 03:17:07 EDT; 14s ago
 Main PID: 15204 (mattermost)
    Tasks: 21 (limit: 25028)
   Memory: 120.8M
   CGroup: /system.slice/mattermost.service
           ??15204 /opt/mattermost/bin/mattermost
           ??15214 plugins/com.mattermost.nps/server/dist/plugin-linux-amd64

Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131086,"caller":"app/server.go:247","msg":"Printing current workin>
Mar 28 03:17:07 centos8 mattermost[15204]: {"level":"info","ts":1585379827.1131282,"caller":"app/server.go:248","msg":"Loaded config","source">

Zu diesem Zeitpunkt läuft und lauscht der Mattermost-Server auf Port 8065. Sie können ihn mit dem folgenden Befehl überprüfen:

netstat -antup | grep 8065

Sie sollten die folgende Ausgabe erhalten:

tcp6       0      0 :::8065                 :::*                    LISTEN      15204/mattermost 

Konfigurieren Sie Nginx als Reverse-Proxy für Mattermost

Es ist eine gute Idee, Nginx für eine bessere Leistung und Sicherheit als Reverse-Proxy zu installieren und zu konfigurieren.

Installieren Sie zunächst den Nginx-Webserver mit folgendem Befehl:

dnf install nginx -y

Starten Sie nach der Installation des Nginx-Webservers den Nginx-Dienst und aktivieren Sie ihn nach dem Systemneustart mit dem folgenden Befehl:

systemctl start nginx
 systemctl enable nginx

Als nächstes erstellen Sie eine neue virtuelle Nginx-Hostdatei für Mattermost mit dem folgenden Befehl:

nano /etc/nginx/conf.d/mattermost.conf

Fügen Sie die folgenden Zeilen hinzu:

upstream mattermost {
   server 127.0.0.1:8065;
   keepalive 32;
}

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;

server {
   listen 80;
   server_name    mattermost.example.com;

   location ~ /api/v[0-9]+/(users/)?websocket$ {
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       client_max_body_size 50M;
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       client_body_timeout 60;
       send_timeout 300;
       lingering_timeout 5;
       proxy_connect_timeout 90;
       proxy_send_timeout 300;
       proxy_read_timeout 90s;
       proxy_pass http://mattermost;
   }
   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 600s;
       proxy_cache mattermost_cache;
       proxy_cache_revalidate on;
       proxy_cache_min_uses 2;
       proxy_cache_use_stale timeout;
       proxy_cache_lock on;
       proxy_http_version 1.1;
       proxy_pass http://mattermost;
   }
}

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Überprüfen Sie dann Nginx mit dem folgenden Befehl auf einen Syntaxfehler:

nginx -t

Sie sollten die folgende Ausgabe erhalten: Sie sollten folgende Ausgabe erhalten:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Schließlich starten Sie den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Zu diesem Zeitpunkt ist der Nginx-Webserver so konfiguriert, dass er Mattermost bedient. Sie können nun mit dem nächsten Schritt fortfahren.

Konfigurieren Sie SELinux und Firewalld

Standardmäßig ist SELinux in CentOS 8 aktiviert. Es wird empfohlen, es für Mattermost zu deaktivieren. Sie können es deaktivieren, indem Sie die Datei /etc/selinux/config bearbeiten:

nano /etc/selinux/config

Suchen Sie die folgende Zeile:

SELINUX=enforcing

Und ersetzen Sie ihn durch die folgende Zeile:

SELINUX=permissive

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann Ihr System neu, um die Änderungen zu übernehmen.

Als nächstes müssen Sie Port 80 durch Firewalld zulassen. Sie können ihn mit dem folgenden Befehl zulassen:

firewall-cmd --add-service=http --permanent

Dann laden Sie die Firewall neu, um die Änderungen zu übernehmen:

firewall-cmd --reload

Zugang zur Mattermost-Webschnittstelle

Öffnen Sie nun Ihren Webbrowser und geben Sie die URL http://mattermost.example.com ein. Sie sollten die Seite zur Erstellung von Mattermost-Benutzern sehen:

Wichtigstes Installationsprogramm

Geben Sie Ihre E-Mail-Adresse, Ihren Benutzernamen und Ihr Passwort ein und klicken Sie auf die Schaltfläche Create Account. Sie sollten die folgende Seite sehen:

Ein Team erstellen

Klicken Sie als nächstes auf die Schaltfläche Create a new team, um Ihr Team zu erstellen. Sie sollten die folgende Seite sehen:

Teamname eingeben

Geben Sie Ihren Teamnamen ein und klicken Sie auf die Schaltfläche Next. Sie sollten die folgende Seite sehen:

Team-URL

Geben Sie Ihre Team-URL an und klicken Sie auf „Fertig stellen„, um die Installation abzuschließen. Sie sollten das Mattermost-Dashboard auf der folgenden Seite sehen:

Wichtigste Dashboard

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben Mattermost erfolgreich auf dem CentOS 8-Server installiert und konfiguriert. Sie können nun ein Team für Ihre Organisation erstellen und mit der Zusammenarbeit mit Ihrem Team beginnen.

Das könnte dich auch interessieren …