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.
Ü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.
Ü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
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;
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.
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„\conninfo„ausführst. Vergewissere dich, dass du als Benutzer„mmuser“ bei der Datenbank„mattermostdb“ eingeloggt bist.
\conninfo
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.
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
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.
- 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.
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.