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:
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:
Klicke jetzt auf die Schaltfläche Zur Systemkonsole gehen. Du wirst zum Mattermost-Dashboard weitergeleitet, wie unten abgebildet:
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.