So installierst du Mattermost unter Debian 11

Mattermost ist eine kostenlose und quelloffene Plattform für Zusammenarbeit und Nachrichtenaustausch, die mit Blick auf die Sicherheit entwickelt wurde. Sie ist eine Alternative zu Discord oder Slack und bietet viele nützliche Funktionen wie One-to-One-Messaging, unbegrenzte Suchhistorie und Dateifreigabe, Zwei-Faktor-Autorisierung und Benachrichtigungen. Es handelt sich um einen selbst gehosteten Online-Chatdienst, der in Golang und React geschrieben wurde. Er wurde speziell für Organisationen und Unternehmen entwickelt und ermöglicht es Teams, von überall aus sicher zu kommunizieren.

In diesem Tutorial zeigen wir dir, wie du den Mattermost Chat Server auf Debian 11 installierst.

Voraussetzungen

  • Ein Server, auf dem Debian 11 läuft.
  • Ein gültiger Domainname, der auf die IP deines Servers zeigt.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Installiere und konfiguriere den MariaDB Datenbankserver

Mattermost verwendet MySQL oder MariaDB als Datenbank-Backend. Daher musst du den MariaDB Server auf deinem Server installieren. Du kannst ihn mit dem folgenden Befehl installieren:

apt-get install mariadb-server -y

Sobald MariaDB installiert ist, starte den MariaDB-Dienst und aktiviere ihn so, dass er beim Neustart des Systems gestartet wird:

systemctl start mariadb
systemctl enable mariadb

Als Nächstes verbindest du dich mit der MariaDB-Shell mit folgendem Befehl:

mysql

Sobald du verbunden bist, erstelle eine Datenbank und einen Benutzer mit dem folgenden Befehl:

MariaDB [(none)]> create database mattermost;
MariaDB [(none)]> create user mattermost@localhost identified by 'password';

Erteile der Mattermost-Datenbank mit folgendem Befehl alle Berechtigungen:

MariaDB [(none)]> grant all privileges on mattermost.* to mattermost@localhost;

Lösche die Berechtigungen und verlasse die MariaDB-Shell mit folgendem Befehl:

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Mattermost installieren

Erstelle zunächst mit dem folgenden Befehl einen eigenen Benutzer für Mattermost:

useradd --system --user-group mattermost

Als Nächstes lädst du die neueste Version von Mattermost mit dem folgenden Befehl herunter:

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

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

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

Verschiebe das entpackte Verzeichnis mit folgendem Befehl in das Verzeichnis /opt:

mv mattermost /opt

Als Nächstes erstellst du mit folgendem Befehl ein Datenverzeichnis für mattermost:

mkdir /opt/mattermost/data

Ändere den Eigentümer des mattermost-Verzeichnisses mit folgendem Befehl:

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

Als Nächstes bearbeitest du die Datei config.json mit dem folgenden Befehl:

nano /opt/mattermost/config/config.json

Finde die folgenden Zeilen:

    "DriverName": "postgres",
    "DataSource": "postgres://mmuser:mostest@localhost/mattermost_test?sslmode=disable\u0026connect_timeout=10",

Ersetze sie durch die folgenden Zeilen, die deinen Datenbankeinstellungen entsprechen:

"DriverName": "mysql",
"DataSource": "mattermost:password@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",

Speichere und schließe die Datei, wenn du fertig bist.

Erstelle eine Systemd-Dienstdatei für Mattermost

Als Nächstes musst du eine systemd-Dienstdatei für Mattermost erstellen. Du kannst sie mit dem folgenden Befehl erstellen:

nano /etc/systemd/system/mattermost.service

Füge die folgenden Zeilen ein:

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

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

[Install]
WantedBy=multi-user.target

Speichere und schließe die Datei und lade den systemd-Daemon neu, damit die Änderungen übernommen werden:

systemctl daemon-reload

Als Nächstes startest du Mattermost und aktivierst es so, dass es beim Neustart des Systems gestartet wird:

systemctl start mattermost
systemctl enable mattermost

Als Nächstes überprüfst du den Status von Mattermost mit dem folgenden Befehl:

systemctl status mattermost

Du erhältst die folgende Ausgabe:

? mattermost.service - Mattermost
     Loaded: loaded (/etc/systemd/system/mattermost.service; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-11-12 13:56:25 UTC; 4s ago
   Main PID: 2888 (mattermost)
      Tasks: 31 (limit: 4679)
     Memory: 273.3M
        CPU: 12.191s
     CGroup: /system.slice/mattermost.service
             ??2888 /opt/mattermost/bin/mattermost
             ??2915 plugins/com.mattermost.plugin-channel-export/server/dist/plugin-linux-amd64
             ??2925 plugins/playbooks/server/dist/plugin-linux-amd64
             ??2931 plugins/focalboard/server/dist/plugin-linux-amd64

Nov 12 13:56:24 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:24.681 Z","level":"info","msg":"Scheduling next survey for Dec 3, 2>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.064 Z","level":"info","msg":"Post.Message has size restrictions">
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.084 Z","level":"info","msg":"info [2021-11-12 13:56:25.083 Z] co>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.131 Z","level":"info","msg":"\n    -- collation of mattermost's >
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.491 Z","level":"info","msg":"debug [2021-11-12 13:56:25.488 Z] i>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.777 Z","level":"info","msg":"info [2021-11-12 13:56:25.777 Z] Se>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.963 Z","level":"info","msg":"Starting Server...","caller":"app/s>
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.964 Z","level":"info","msg":"Server is listening on [::]:8065",">
Nov 12 13:56:25 debian11 mattermost[2888]: {"timestamp":"2021-11-12 13:56:25.964 Z","level":"info","msg":"Sending systemd READY notification.>
Nov 12 13:56:25 debian11 systemd[1]: Started Mattermost.

Nginx als Reverse Proxy für Mattermost konfigurieren

Standardmäßig lauscht Mattermost auf Port 8065. Daher ist es eine gute Idee, Nginx als Reverse Proxy zu installieren und zu konfigurieren, um auf Mattermost über Port 80 zuzugreifen. Installiere zunächst Nginx mit dem folgenden Befehl:

apt-get install nginx -y

Sobald Nginx installiert ist, erstelle eine Nginx-Konfigurationsdatei für virtuelle Hosts mit dem folgenden Befehl:

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

Füge die folgenden Zeilen hinzu:

upstream mattermost {
   server localhost: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;
   }
}

Speichere und schließe die Datei und überprüfe die Nginx-Konfiguration mit dem folgenden Befehl auf Syntaxfehler:

nginx -t

Du solltest die folgende Ausgabe sehen:

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

Starte anschließend den Nginx-Dienst, um die Änderungen zu übernehmen:

systemctl start nginx

Du kannst den Status von Nginx auch mit dem folgenden Befehl überprüfen:

systemctl status nginx

Du solltest die folgende Ausgabe erhalten:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-11-12 13:57:02 UTC; 1min 12s ago
       Docs: man:nginx(8)
    Process: 3384 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 3392 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 3602 (nginx)
      Tasks: 3 (limit: 4679)
     Memory: 6.6M
        CPU: 55ms
     CGroup: /system.slice/nginx.service
             ??3602 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??3604 nginx: worker process
             ??3605 nginx: worker process

Nov 12 13:57:01 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 12 13:57:02 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Nov 12 13:57:02 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Jetzt ist Nginx installiert und als Reverse-Proxy für Mattermost konfiguriert. Du kannst jetzt mit dem nächsten Schritt fortfahren.

Zugriff auf das Mattermost-Webinterface

Öffne nun deinen Webbrowser und rufe das Mattermost-Webinterface über die URL http://mattermost.example.com auf. Du wirst auf die folgende Seite weitergeleitet:

Mattermost Anmeldung

Gib deine Admin-E-Mail-Adresse, deinen Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche Konto erstellen. Du solltest die folgende Seite sehen:

Mattermost

Klicke jetzt auf die Schaltfläche Zur Systemkonsole gehen. Du wirst zum Mattermost-Dashboard weitergeleitet, wie unten abgebildet:

Mattermost Dashboard

Fazit

Herzlichen Glückwunsch! Du hast Mattermost mit Nginx als Reverse Proxy unter Debian 11 erfolgreich installiert. Jetzt kannst du Mattermost in deinem Unternehmen einführen und es Teams ermöglichen, von überall aus miteinander zu kommunizieren.

Das könnte dich auch interessieren …