So installierst du Mattermost mit Nginx Proxy und kostenlosem Let’s Encrypt SSL unter Ubuntu 24.04

Mattermost ist eine Open-Source-Alternative zu Slack und Microsoft Teams. Es ermöglicht dir, selbst einen Online-Chat mit zahlreichen Funktionen wie Dateifreigabe, Suche, Automatisierung und Integration von Drittanbietern zu betreiben.

Mattermost ist eine Plattform für die Zusammenarbeit, die als interner Chat für Organisationen und Unternehmen konzipiert ist. Sie kombiniert Messaging-Systeme, Automatisierung, Integrationen und Sicherheit für wichtige Arbeitsabläufe.

In diesem Tutorial lernst du, wie du Mattermost auf einem Ubuntu 24.04 Server installierst. Du installierst Mattermost mit PostgreSQL als Datenbank und Nginx als Reverse Proxy. Außerdem sicherst du Mattermost mit HTTPS und erstellst dann deinen ersten Arbeitsbereich mit Mattermost.

Voraussetzungen

Um mit diesem Tutorial zu beginnen, musst du folgende Voraussetzungen erfüllen:

  • Einen Ubuntu 24.04 Server
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten
  • Einen Domainnamen, der auf die IP-Adresse des Servers zeigt

Installieren von Abhängigkeiten

Um Mattermost zu installieren, musst du Abhängigkeiten auf deinem Server installieren, darunter den PostgreSQL-Datenbankserver, den Nginx-Webserver und Certbot.

Führe zunächst den Befehl„apt“ aus, um deinen Ubuntu-Paketindex zu aktualisieren und Abhängigkeiten wie PostgreSQL, Nginx-Webserver und Certbot zu installieren. Der PostgreSQL-Server wird als Standarddatenbank für Mattermost verwendet und Nginx wird als Reverse Proxy eingesetzt.

sudo apt update && sudo apt install postgresql postgresql-contrib nginx certbot

Gib„Y“ ein, um die Installation zu bestätigen.

deps installieren

Überprüfe nach der Installation den Status des PostgreSQL-Dienstes, um sicherzustellen, dass er läuft.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Wie du unten siehst, ist der PostgreSQL-Server aktiviert und läuft.

postgresql prüfen

Überprüfe nun den Status des Nginx Webservers mit dem unten stehenden Befehl. Du wirst sehen, dass Nginx auf deinem Ubuntu-System ebenfalls läuft und aktiviert ist.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

nginx prüfen

Einrichten der PostgreSQL-Datenbank und des Benutzers

Nachdem du die Abhängigkeiten installiert hast, erstellst du eine PostgreSQL-Datenbank und einen Benutzer für Mattermost mit dem Befehl „psql“ oder der PostgreSQL-Shell. Schließlich überprüfst du auch die Authentifizierung bei PostgreSQL mit deinem neuen Benutzer.

Melde dich in der PostgreSQL-Shell mit dem Befehl„psql“ an.

sudo -u postgres psql

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

CREATE DATABASE mattermostdb;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb to mmuser;

Neuen Benutzer anlegen

Sobald du die Datenbank und den Benutzer erstellt hast, führe die folgende Abfrage aus, um die verfügbaren Datenbanken und Benutzer auf deinem PostgreSQL-Server aufzulisten.

\du
\l

In der folgenden Ausgabe kannst du sehen, dass die Datenbank„mattermostdb“ und der Benutzer„mmuser“ auf dem PostgreSQL-Server verfügbar sind.

Gib nun„quit“ ein, um PostgreSQL zu beenden.

Benutzer auflisten

Als Nächstes führst du den Befehl„psql“ aus, um dich bei der Datenbank„mattermostdb“ als Benutzer„mmuser“ anzumelden. Gib dein Passwort ein, wenn du dazu aufgefordert wirst.

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

Überprüfe schließlich deine Verbindung, indem du die Abfrage\conninfoausführst. Vergewissere dich, dass du als Benutzer„mmuser“ bei der Datenbank„mattermostdb“ eingeloggt bist.

\conninfo

Verbindung prüfen

Herunterladen von Mattermost

Nachdem du die Datenbank eingerichtet hast, lädst du Mattermost herunter, erstellst ein Datenverzeichnis, legst den Mattermost-Domainnamen und PostgreSQL als Datenbank fest und richtest die richtigen Berechtigungen und Eigentümer für Mattermost ein.

Führe zunächst den Befehl„useradd“ aus, um einen neuen Benutzer„mattermost“ auf deinem System anzulegen.

sudo useradd --system --user-group mattermost

Lade die Mattermost-Binärdatei mit dem unten stehenden Befehl„wget“ herunter. Entpacke dann Mattermost mit dem Befehl „tar“.

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 entpackte Verzeichnis mit dem unten stehenden Befehl in das Verzeichnis „/opt/mattermost„.

mv mattermost /opt/

Als Nächstes erstellst du ein neues Datenverzeichnis„/var/mattermost/data„, in dem du die Benutzerdaten speicherst.

sudo mkdir -p /opt/mattermost/data

Danach bearbeitest du die Standardkonfiguration„/opt/mattermost/config/config.json“ mit dem Editor„nano„.

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

Im Abschnitt„ServiceSettings“ gibst du den Namen deiner Domain in die Zeile„SiteURL“ ein.

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

Im Abschnitt„SqlSettings“ änderst du die Details der Datenbank mit den Daten deiner PostgreSQL-Datenbank.

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

Speichere die Datei und beende sie, wenn du fertig bist.

Führe abschließend die folgenden Befehle aus, um den Eigentümer des Verzeichnisses„/opt/mattermost“ auf den Benutzer „mattermost“ zu ändern und den Schreibzugriff auf dieses Verzeichnis zu ermöglichen.

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

Zu Testzwecken kannst du Mattermost auch manuell mit dem unten stehenden Befehl starten.

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

Mattermost als systemd-Dienst starten

In diesem Abschnitt erstellst du eine neue systemd-Dienstdatei für Mattermost. Damit läuft Mattermost im Hintergrund und du kannst es ganz einfach mit dem Befehl „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 in die Datei ein.

[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 die Datei und beende den Editor, wenn du fertig bist.

Führe nun den Befehl„systemctl“ aus, um den systemd Manager neu zu laden.

sudo systemctl daemon-reload

Starte und aktiviere den Dienst„mattermost“ mit dem folgenden Befehl und überprüfe dann, ob er läuft.

sudo systemctl enable --now mattermost
sudo systemctl status mattermost

Wenn Mattermost läuft, siehst du die folgende Ausgabe auf deinem Bildschirm.

wichtigster Service

Nginx als Reverse Proxy einrichten

Jetzt läuft Mattermost und du kannst mit Certbot SSL/TLS-Zertifikate für Mattermost erstellen und Nginx als Reverse-Proxy einrichten. Stelle also sicher, dass dein Domainname auf eine Server-IP-Adresse zeigt.

Bevor du Nginx einrichtest, führe den unten stehenden Befehl„certbot“ aus, um SSL/TLS-Zertifikate für deine Mattermost-Installation zu generieren. Achte darauf, dass du die E-Mail-Adresse und den Domainnamen mit deinen Daten änderst.

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

Öffne nun die Standard-Nginx-Konfigurationsdatei„/etc/nginx/nginx.conf“ mit„nano„.

sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile„include /etc/nginx/conf.d/*.conf;“ ein.

server_names_hash_bucket_size 64;
include /etc/nginx/conf.d/*.conf;

Speichere und beende die Datei, wenn du fertig bist.

Als Nächstes erstellst du eine neue Nginx-Serverblockkonfiguration„/etc/nginx/sites-available/mattermost“ mit dem Editor„nano„.

sudo nano /etc/nginx/sites-available/mattermost

Füge die folgende Konfiguration ein und achte darauf, dass du den Domänennamen durch deine Angaben ersetzt.

upstream backend {
server 127.0.0.1:8065;
keepalive 32;
}
server {
listen 80 default_server;
server_name mattermost.howtoforge.local;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name mattermost.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 beende den Editor.

Führe nun den folgenden Befehl aus, um den „mattermost“-Serverblock zu aktivieren und deine Nginx-Syntax zu überprüfen. Wenn du eine korrekte Nginx-Syntax hast, siehst du eine Meldung wie„Syntax ist in Ordnung – Test ist erfolgreich„.

sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
sudo nginx -t

Führe abschließend den Befehl„systemctl“ aus, um den Nginx-Webserver neu zu starten. Damit ist die Mattermost-Installation fertig und HTTPS ist ebenfalls aktiviert.

sudo systemctl start nginx

nginx-Einrichtung

Zugriff auf Mattermost

Öffne deinen Webbrowser und besuche deinen Domainnamen https://mattermost.howtoforge.local/. Von hier aus kannst du deinen ersten Arbeitsbereich in Mattermost erstellen.

mattermost setup

  • Klicke auf die Schaltfläche„Im Browser anzeigen„, um Mattermost einzurichten.
  • Gib die Details deines Kontos ein und klicke auf„Konto erstellen„.
  • Gib den Namen deiner Organisation ein und klicke auf„Weiter„.
  • Klicke auf„Einrichtung beenden„, um die Konfiguration abzuschließen.

Jetzt siehst du das folgende Dashboard deines Arbeitsbereichs.

Das Wichtigste

Fazit

Herzlichen Glückwunsch! Du hast die Installation von Mattermost auf dem Ubuntu 24.04 Server abgeschlossen. Mattermost läuft mit PostgreSQL als Datenbank und Nginx als Reverse Proxy. Außerdem hast du Mattermost mit SSL von Let’s Encrypt abgesichert.

Das könnte dich auch interessieren …