So installierst du Mattermost auf Rocky Linux 9

Mattermost ist ein quelloffenes und selbstgehostetes Messaging-System für dein Unternehmen. Es ist eine Alternative zu Diensten wie Slack und Microsoft Teams. Mattermost kombiniert mehrere Funktionen, darunter Dateifreigabe, Suche, Automatisierung und zahlreiche Integrationen von Drittanbietern. Es ist eine Plattform für die Zusammenarbeit und ein Nachrichtensystem für deine interne Organisation und Unternehmen.

In dieser Anleitung lernst du, wie du Mattermost auf dem Rocky Linux 9 Server installierst. Du richtest Mattermost mit PostgreSQL als Datenbank und Nginx als Reverse Proxy ein und erstellst dann den ersten Arbeitsbereich in Mattermost.

Voraussetzungen

Stelle sicher, dass du die folgenden Voraussetzungen erfüllst:

  • Ein Rocky Linux 9 Server
  • Ein Nicht-Root-Benutzer mit Administrator-Rechten
  • Ein Domainname, der auf die IP-Adresse des Servers zeigt
  • SELinux mit dem Status permissive
  • Firewalld aktiviert

Installation von PostgreSQL und Nginx

In diesem Abschnitt installierst du die Abhängigkeiten für Mattermost, d.h. den PostgreSQL-Server, den Nginx-Webserver und Certbot. Außerdem fügst du das EPEL-Repository hinzu und aktivierst das Repository-Modul für PostgreSQL 16.

Führe zunächst den Befehl„dnf“ aus, um das EPEL-Repository zu deinem System hinzuzufügen.

sudo dnf install epel-release -y

Epel hinzufügen

Aktiviere dann das PostgreSQL 16 Repository-Modul mit dem folgenden Befehl.

sudo dnf module enable postgresql:16

enable postgresql 16 repo

Installiere nun Abhängigkeiten wie PostgreSQL, Nginx Webserver und Certbot als Abhängigkeiten für Mattermost. Gib„Y“ ein, um die Installation zu bestätigen.

sudo dnf install postgresql-server postgresql-contrib nginx certbot wget curl

deps installieren

Um den PostgreSQL-Server zum Laufen zu bringen, führe den folgenden Befehl aus, um das PostgreSQL-Datenverzeichnis zu initialisieren.

sudo /usr/bin/postgresql-setup --initdb

Als nächstes führst du den Befehl„systemctl“ aus, um den Dienst „postgresql“ zu starten und zu aktivieren. Überprüfe anschließend, ob PostgreSQL läuft.

sudo systemctl enable --now postgresql
sudo systemctl status postgresql

Die folgende Ausgabe zeigt, dass der PostgreSQL-Server aktiviert ist und läuft.

start enable verify postgresql

Starte und aktiviere den Nginx-Webserver mit dem unten stehenden Befehl. Überprüfe dann den Nginx-Dienst.

sudo systemctl enable --now nginx
sudo systemctl status nginx

Wie im Folgenden zu sehen ist, läuft Nginx und ist aktiviert.

start enable verifynginx

Öffnen der HTTP- und HTTPS-Ports

Nachdem die Abhängigkeiten installiert sind, musst du sowohl HTTP- als auch HTTPS-Ports auf deinem System öffnen. Unter Rocky Linux verwendest du firewalld, das mit dem Dienstprogramm „firewall-cmd“ verwaltet wird.

Öffne sowohl den HTTP- als auch den HTTPS-Dienst in der Firewalld mit dem Befehl„firewall-cmd„. Sobald du sie hinzugefügt hast, siehst du die Ausgabe„Erfolg„.

sudo firewall-cmd --add-service={http,https} --permanent

Lade nun die Firewalld mit dem folgenden Befehl neu, um die neuen Regeln anzuwenden.

sudo firewall-cmd --reload

Überprüfe die Regeln in deiner Firewalld mit dem unten stehenden Befehl. Du wirst sehen, dass sowohl HTTP- als auch HTTPS-Dienste in der Firewalld aktiviert sind.

sudo firewall-cmd --list-all

firewalld einrichten

PostgreSQL-Benutzer und -Datenbank anlegen

In diesem Abschnitt richtest du die PostgreSQL-Authentifizierungsmethode „scram-sha-256“ ein und erstellst dann eine neue Datenbank und einen neuen Benutzer, die von Mattermost über „psql“ oder die PostgreSQL-Shell verwendet werden sollen.

Um die Standard-Passwort-Authentifizierungsmethode zu ändern, öffne die PostgreSQL-Konfiguration„/var/lib/pgsql/data/pg_hba.conf“ mit dem Editor „nano“.

sudo nano /var/lib/pgsql/data/pg_hba.conf

Ändere die Standard-Authentifizierungsmethode für Localhost-Verbindungen mit„scram-sha-256“ wie folgt:

# TYPE DATABASE USER ADDRESS METHOD

# „local“ is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256

Speichere die Datei und beende den Editor.

Führe nun den Befehl„systemctl“ aus, um PostgreSQL neu zu starten und deine Änderungen zu übernehmen.

sudo systemctl restart postgresql

Nachdem PostgreSQL konfiguriert ist, erstellst du eine neue Datenbank und einen neuen Benutzer für Mattermost.

Melde dich mit dem unten stehenden Befehl„psql“ am PostgreSQL-Server an.

sudo -u postgres psql

Führe nun die folgenden Abfragen aus, um eine neue Datenbank„mattermost“ und einen neuen Benutzer„mmuser“ mit dem Passwort„password“ zu erstellen.

CREATE DATABASE mattermost;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL ON DATABASE mattermost TO mmuser;
ALTER DATABASE mattermost OWNER TO mmuser;
GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mmuser;

Datenbank und Benutzer anlegen

Überprüfe die Liste der Datenbanken und Benutzer in deinem PostgreSQL mit folgendem Befehl – du wirst sehen, dass die Datenbank„mattermost“ und der Benutzer„mmuser“ erstellt wurden.

\l
\du

Gib„quit“ ein, um den PostgreSQL-Server zu verlassen.

Datenbank und Benutzer auflisten

Als Nächstes führst du den Befehl „psql“ aus, um dich mit dem Benutzer „mmuser“ bei der Datenbank „mattermost“ am PostgreSQL-Server anzumelden. Gib dein Passwort ein, wenn du dazu aufgefordert wirst.

sudo -u postgres psql --host=localhost --dbname=mattermost --username=mmuser --password

Wenn du erfolgreich bist, überprüfe den Verbindungsstatus mit der folgenden Abfrage. Du wirst sehen, dass du dich mit dem„mmuser“ mit der Datenbank„mattermost“ verbunden hast.

\conninfo

Gib zum Schluss„quit“ ein, um das Programm zu beenden.

Verbindung prüfen

Herunterladen von Mattermost

Nachdem du PostgreSQL konfiguriert hast, erstellst du einen neuen Benutzer, lädst den Mattermost-Quellcode herunter und konfigurierst das Mattermost-Installationsverzeichnis.

Bevor du Mattermost herunterlädst, führe den folgenden Befehl aus, um einen neuen Benutzer„mattermost“ auf deinem System anzulegen.

sudo useradd --system --user-group mattermost

Lade den Mattermost-Quellcode mit dem Befehl„wget“ herunter und entpacke ihn mit dem unten stehenden Befehl„tar„. Der Mattermost-Quellcode wird in das Verzeichnis „mattermost“ extrahiert.

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

Verschiebe das„mattermost„-Verzeichnis in das Verzeichnis „/opt“ und erstelle ein neues„data„-Verzeichnis auf diesem Verzeichnis. In diesem Fall wird Mattermost im Verzeichnis„/opt/mattermost“ installiert.

mv mattermost /opt/
mkdir -p /opt/mattermost/data

Zum Schluss führst du den folgenden Befehl aus, um den Eigentümer des Verzeichnisses„/opt/mattermost“ auf den Benutzer„mattermost“ zu ändern. Stelle außerdem sicher, dass die Gruppe„mattermost“ Lese- und Schreibrechte hat.

sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod g+rw /opt/mattermost

mattermost herunterladen

Mattermost mit PostgreSQL konfigurieren

In diesem Abschnitt wirst du Mattermost mit PostgreSQL konfigurieren. Du bearbeitest die Mattermost-Konfigurationsdatei„/opt/mattermost/config/config.json„, legst einen Domänennamen für Mattermost fest und fügst dann deine PostgreSQL-Datenbank zu Mattermost hinzu.

Öffne die Standardkonfiguration von Mattermost„/opt/mattermost/config/config.json“ mit dem Editor„nano„.

sudo nano /opt/mattermost/config/config.json

Ändere die Standard-„SiteURL“ durch deinen Mattermost-Domainnamen. In diesem Fall verwenden wir den Domainnamen„https://space.howtoforge.local“.

"ServiceSettings": {
 "SiteURL": "https://mattermost.howtoforge.local",

Gehe zum Abschnitt„SqlSettings“ und ändere die Datenbankkonfiguration wie folgt. Achte darauf, dass du den Datenbanknamen, den Benutzer und das Passwort anpasst.

"SqlSettings": {
 "DriverName": "postgres",
 "DataSource": "postgres://mmuser:password@localhost/mattermost?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",

Wenn du fertig bist, speichere die Datei und beende den Editor.

Mattermost als systemd-Dienst ausführen

Jetzt, wo du Mattermost mit PostgreSQL integriert hast, erstellst du eine neue Dienstdatei für Mattermost. Damit kannst du Mattermost im Hintergrund laufen lassen und Mattermost einfach über die Kommandozeile „systemctl“ verwalten.

Erstelle eine neue systemd-Dienstdatei„/etc/systemd/system/mattermost.service“ mit dem Editor„nano„.

sudo nano /etc/systemd/system/mattermost.service

Füge die folgende Konfiguration ein, um Mattermost als systemd-Dienst auszuführen.

[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
BindsTo=postgresql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Speichere und beende die Datei.

Führe nun den Befehl„systemctl“ aus, um den systemd-Manager neu zu laden und den neuen Dienst „mattermost“ anzuwenden.

sudo systemctl daemon-reload

Sobald systemd neu geladen wurde, führe den folgenden„systemctl„-Befehl aus, um den„mattermost„-Dienst zu starten und zu aktivieren. Überprüfe anschließend, ob der Dienst auch wirklich läuft.

sudo systemctl enable --now mattermost
sudo systemctl status mattermost

Wenn alles klappt, siehst du eine Konfiguration wie die folgende, die besagt, dass der Dienst„mattermost“ läuft und aktiviert ist:

mattermost service einrichten

Nginx als Reverse Proxy einrichten

Jetzt läuft Mattermost auf deinem Rocky Linux Server. Damit du darauf zugreifen kannst, richtest du Nginx als Reverse-Proxy ein und aktivierst sicheres HTTPS.

Bevor du den Nginx-Webserver konfigurierst, führe den folgenden Befehl aus, um den Nginx-Dienst anzuhalten und SSL-Zertifikate von letsencrypt zu generieren. Achte darauf, dass du den Domainnamen und die E-Mail-Adresse mit deinen Daten änderst.

sudo systemctl stop nginx
sudo certbot --certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m alice@howtoforge.local -d space.howtoforge.local

Nachdem der Vorgang abgeschlossen ist, sind deine SSL-Zertifikate im Verzeichnis„/etc/letsencrypt/live/domain.com“ verfügbar.

Als nächstes erstellst du eine neue Nginx-Konfiguration „/etc/nginx/conf.d/mattermost.conf“ mit dem Editor „nano“.

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

Füge die folgende Konfiguration ein und achte darauf, dass du den Domainnamen und den Pfad der SSL-Zertifikate mit deinen Angaben änderst.

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

server {
listen 80;
server_name space.howtoforge.local;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name space.howtoforge.local;

http2_push_preload on; # Enable HTTP/2 Server Push

ssl_certificate /etc/letsencrypt/live/mattermost.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mattermost.howtoforge.local/privkey.pem;
ssl_session_timeout 1d;

# Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
ssl_protocols TLSv1.2 TLSv1.3;

# Enable TLSv1.3’s 0-RTT. Use $ssl_early_data when reverse proxying to
# prevent replay attacks.
#
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
ssl_early_data on;

ssl_ciphers ‚ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384‘;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = six months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling —
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

add_header X-Early-Data $tls1_3_early_data;

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 $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 60s;
send_timeout 300s;
lingering_timeout 5s;
proxy_connect_timeout 90s;
proxy_send_timeout 300s;
proxy_read_timeout 90s;
proxy_http_version 1.1;
proxy_pass http://backend;
}

location / {
client_max_body_size 100M;
proxy_set_header Connection „“;
proxy_set_header Host $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_http_version 1.1;
proxy_pass http://backend;
}
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the ‚$ssl_early_data‘ variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
„~.“ $ssl_early_data;
default „“;
}

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

Als Nächstes führst du den Befehl „nginx“ aus, um deine Nginx-Syntax zu überprüfen. Wenn du eine korrekte Syntax hast, bekommst du die Ausgabe„syntax is ok – test is successful„.

sudo nginx -t

Zum Schluss führst du den Befehl „systemctl“ aus, um den Nginx-Dienst neu zu starten und deine Änderungen zu übernehmen.

sudo systemctl restart nginx

nginx-Einrichtung

Den ersten Arbeitsbereich mit Mattermost erstellen

Öffne deinen Webbrowser und rufe deine Mattermost-Installation auf, z.B. „https://space.howtoforge.local“. Wenn die Installation erfolgreich war, siehst du den Installationsassistenten.

Klicke auf die Schaltfläche„Im Browser anzeigen„, um Mattermost über einen Webbrowser einzurichten.

Ansicht im Browser

Gib den neuen Admin-Benutzer, die E-Mail-Adresse und das Passwort ein und klicke dann auf„Konto erstellen„, um fortzufahren.

Konto erstellen

Gib den Namen deiner Organisation ein.

Organisationsname einrichten

Die Integration von Drittanbieter-Anwendungen kannst du vorerst auslassen.

Integration überspringen

Klicke jetzt auf„Installation beenden„, um die Installation von Mattermost abzuschließen.

Fertigstellung der Anlage

Sobald du fertig bist, wirst du zu deinem ersten Mattermost-Arbeitsbereich weitergeleitet.

wichtigster Arbeitsbereich

Fazit

Herzlichen Glückwunsch! Du hast die Installation von Mattermost auf dem Rocky Linux 9 Server abgeschlossen. Mattermost läuft jetzt im Hintergrund als systemd-Dienst mit PostgreSQL als Datenbank und Nginx als Reverse Proxy. Außerdem hast du Mattermost mit HTTPS gesichert und deinen ersten Arbeitsbereich in Mattermost erstellt. Von hier aus kannst du Mattermost mit Drittanbieter-Anwendungen wie GitHub, GitLab und Bitbucket integrieren.

Das könnte dich auch interessieren …