Mattermost hinter einem OPNsense Reverse Proxy installieren

Mattermost and OPNsense konfigurieren um einen Mattermost Server zu betreiben

Dieser Artikel beschreibt die Installation von Mattermost hinter einem OPNsense Reverse Proxy mit Ubuntu 22 (Jammy) LTS und der offiziellen Omnibus Deployment Methode von Mattermost.

Voraussetzungen

  • Ein neuer Ubuntu Server 22.04 (Jammy) (mind. 1 CPU und 2 GB RAM). Zum Zeitpunkt der Erstellung dieses Artikels wird Ubuntu Server 23 (Mantic) nicht von Omnibus unterstützt.
  • Alle Betriebssystem-Updates installiert
  • Eine (Sub-)Domain, unter der Mattermost erreichbar sein wird (z.B. mattermost.reukauff.eu).
  • OPNsense mit dem Nginix und Let’s Encrypt Plugin vor dem neuen Ubuntu Server installiert.

Mattermost installieren

Dies ist der einfachste Teil der gesamten Einrichtung. Führe diesen Befehl aus, um das Mattermost-Repository zu den lokalen Repositories hinzuzufügen und die Installation zu starten. Der zweite Befehl installiert Mattermost ohne Let’s Encrypt, da wir OPNsense für die HTTPS-Zertifikate verwenden werden:

curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash
sudo MMO_HTTPS=false apt install mattermost-omnibusrr

Während der Installation fragt Omnibus nach einem Domänennamen. Gib den Domänennamen ein, der für Mattermost verwenden werden soll (z. B. mattermost.reukauff.eu). Es wird auch nach der Mailadresse für Let’s Encrypt gefragt. Gib eine Mailadresse ein, aber ein Zertifikat wird nicht angefordert, da wir das Setup ohne HTTPS-Einrichtung durchführen.

Führe nach Abschluss der Einrichtung den folgenden Befehl aus, um die Konfiguration zu öffnen:

sudo mmctl --local config edit

Ein vi-Editor öffnet sich. Suche nach der Zeile AllowCorsFrom. Drücke i, um in den Bearbeitungsmodus des vi-Editors zu wechseln. Ändere den Wert in “*”.

"AllowCorsFrom":"*"

Drücke Strg+C und gib dann :wq ein. Drücke Enter. Der Editor schließt sich und es sollte nach einigen Sekunden die Zeile Config updated successfully zu sehen sein. Jetzt müssen wir die Plugin-Uploads aktivieren. Führe folgenden Befehl aus:

sudo nano /etc/mattermost/mmomni.yml

Ändere den Wert für enable_plugin_uploads auf true und speicher die Datei mit Ctrl+O und beende sie mit Ctrl+X. Schließlich muss Mattermost einmal neu geladen werden:

sudo mmomni reconfigure

Mattermost ist jetzt eingerichtet und kann bereits intern über http://yourserver:8065 erreicht werden.

OPNsense einrichten

Jetzt beginnt die eigentliche Schwierigkeit, da Mattermost viele spezielle Einstellungen in der nginx-Konfiguration verwendet. Eine Übersicht über diese Einstellungen gibt es hier in der Mattermost-Dokumentation: Set up an NGINX proxy — Mattermost documentation

Mit dem folgenden Setup kommen wir der nginx-Konfiguration, die Mattermost in seiner Dokumentation beschreibt, so nahe wie möglich.

  • In OPNsense gehe zu Services > ACME Client > Settings > Accounts
  • Erstellen Sie einen neuen Eintrag. Gib zum Beispiel folgende Einstellungen ein:
    • Enabled: aktivieren
    • Name: die (Sub-)Domain, die für die Mattermost-Site verwendet werden soll. (z.B. mattermost.reukauff.eu)
    • Description: Jede Beschreibung, die dem Zweck entspricht (Freitext)
    • E-Mail Address: Eine gültige E-Mail Adresse
    • ACME CA: Let's Encrypt [default]
  • Speicher das neue Konto und klicke in der Verknüpfung des Kontos auf der rechten Seite auf die Schaltfläche Konto registrieren.
  • Nach einigen Sekunden sollte die Spalte Registration Date den aktuellen Zeitstempel enthalten. Das Konto ist nun registriert.
  • Gehe in OPNsense zu Services > ACME Client > Settings > Certificates. Erstelle einen neuen Eintrag mit den folgenden Einstellungen:
    • Enabled: aktivieren
    • Common Name: Die (Sub-)Domain von Mattermost
    • ACME Account: Der zuvor erstellte Account
    • Automations: Restart Nginx
  • Speicher den neuen Zertifikatsantrag und klicke auf die Schaltfläche Issue or renew certificate rechts neben dem neuen Zertifikat.
  • In OPNsense gehe zu Services>Nginx>Configuration
  • Wenn nicht bereits geschehen, aktiviere nginx auf der General Settings Seite den Cache Path. Erstelle einen neuen Eintrag mit folgenden Einstellungen:
    • Path: /var/cache/nginx
    • Size (MB): 10
    • Inactive Time (Minutes): 120
    • Use Temp Path: deaktivieren
    • Maximum Size (GB): 3
  • Jetzt das kleine Dreieck neben HTTP(S) im Tab-Titel anklicken und Security Headers auswählen. Einen neuen Eintrag mit folgendes Einstellungen im General Tab erstellen:
    • Description: HSTS Age 15768000 oder ähnlich
    • Time (Max Age): 15768000
  • Gehe auf Upstream Server indem auf den Upstream Tab geklickt wird. Erstelle einen neuen Upstream und lege eine Beschreibung an (d.h. den Servernamen des Mattermost-Servers), die Server-IP-Adresse und den Port 8065 fest. Der Port 8065 ist der Port, auf dem die Mattermost-Anwendung nativ über HTTP läuft:
  • Klicke auf das kleine Dreieck neben dem Titel der Registerkarte Upstream und wähle Upstream aus dem Menü. Füge einen neuen Upstream hinzu. Gib eine Beschreibung ein (z. B. Mattermost) und wähle den Upstream-Server in der Combobox unter Servereinträge aus. Speichere die Einstellungen.
  • Gehe zur Registerkarte HTTP(S). Erstelle einen neuen Eintrag auf dieser Registerkarte (auf der Seite “Standort”). Ganz oben aktiviere den “erweiterten Modus”. Lege die folgenden Einstellungen fest:
    • Description: Mattermost Main (oder ähnlich)
    • URL Pattern: /
    • Upstream Servers: Den zuvor erstellen Upstream Server
    • Cache: Directory: Das zuvor erstellte Cache Directory
    • Force HTTPS: aktivieren
    • Enable HTTP/2 Preloading: aktivieren
  • Erstelle einen weiteren Eintrag mit folgenden Einstellungen:
    • Description: Mattermost Websocket (oder ähnlich)
    • URL Pattern: api/v[0-9]+/(users/)?websocket$
    • Match Type: Case Sensitive Match ("~")
    • Upstream Servers: Mattermost
    • Force HTTPS: aktivieren
    • Enable HTTP/2 Preloading: aktivieren
  • Klicke nun auf das kleine Dreieck neben dem Titel der Registerkarte HTTP(S) und wähle HTTP-Server aus. Erstelle einen neuen Eintrag mit den folgenden Einstellungen:
    • Den advanced mode aktivieren
    • HTTP Listen Address: 80
    • HTTPS Listen Address: 443
    • Server Name: die (Sub-)Domain unter der Mattermost erreichbar ist (z.B. mattermost.reukauff.eu)
    • Locations: Mattermost Main und Mattermost Websocket (oder wie auch immer sie genannt wurden)
    • TLS Certificate: Das zuvor konfigurierte Zertifikat
    • Client CA Certificate: R3 (ACME Client)
    • Zero RTT: aktivieren
    • Enable Let’s Encrypt Plugin support: aktivieren
    • Prefer server ciphers: aktivieren
    • OCSP Stapling: aktivieren
    • OCSP Verify: aktivieren
    • Header Buffer Size (kB): 1
    • Count Of Large Header Buffers: 4
    • Size Of Large Header Buffers (kB): 8
    • Security Header: Der erstellte Security Header
  • Danach muss Port 80 und 443 in der Firewall zugelassen werden. Andernfalls werden sie blockiert und erreichen nicht einmal den Reverse-Proxy auf OPNsense.
  • Anschließend muss ein NAT (“Port forwarding”) für Port 8443 UDP und TCP zum Mattermost-Server konfiguriert werden. Dies ist erforderlich, um die Verbindungen für Anrufe zu ermöglichen.
  • Das war’s. Mattermost läuft jetzt und OPNsense fungiert als Reverse Proxy und verwaltet auch die Let’s Encrypt Zertifikate. Wir können nun auf Mattermost auf der konfigurierten (Sub-)Domain zugreifen, den ersten Benutzer anlegen und den Server konfigurieren.

Mattermost konfigurieren

Wenn man sich mit Mattermost verbindet und sich mit dem anfänglich erstellten Benutzer anmeldet, gibt es einige kleinere Dinge zu konfigurieren, die konfiguriert werden sollten, um eine voll funktionsfähige Umgebung zu haben.

Konfigurieren der Mail-Einstellungen

Klicke oben links auf den Kachelbutton und wähle System Console. In der Systemkonsole auf der linken Seite wähle SMTP. Konfiguriere die Mailserver-Einstellungen in diesem Dialog. Sie sind für jedes Setup individuell, daher kann ich keine Empfehlungen bezüglich der Einstellung geben, außer dass man eine dedizierte Mailadresse für Mattermost verwenden sollte.

Push-Benachrichtigungsserver

Standardmäßig sind Push-Benachrichtigungen für die Apps deaktiviert. Um sie zu aktivieren, gehe in der Systemkonsole zu Mobile Push Notifications. Wähle die Einstellung Use TPNS connection to send notifications to iOS and Android app. Hinweis: Dies wird nur für unkritische Umgebungen empfohlen, da der TPNS-Dienst (Test Push Notification Service) keine SLAs bietet. Im schlimmsten Fall werden die Benachrichtigungen mit einer großen Verzögerung oder gar nicht gesendet. Wenn eine kritische Umgebung vorliegt, prüfe den Hosted Push Notifications Service (HPNS) von Mattermost.

Lokalisierung

Wenn für Benutzer andere Sprachen als die Standardsprache zur Verfügung stehen soll, kann in der Systemkonsole unter Localization die Verfügbarkeit anderer Sprachen ausgewählt werden. Hier können die Standard-Server- und Client-Sprache sowie zusätzliche Sprachen für Ihre Clients ausgewählt werden. Hinweis: Wenn unter Verfügbare Sprachen nichts ausgewählt ist, sind alle Sprachen verfügbar!

Registrierung / Anmeldung

Standardmäßig kann jeder neue Konten auf dem Server erstellen, der eine Einladung von einem anderen Benutzer erhält. Unter Signup in der Systemkonsole kann dieses Verhalten strikter (d.h. Benutzer können nicht einladen oder die Registrierung auf bestimmte Domains beschränken) oder lockerer (jeder kann sich ohne Einladung registrieren) eingestellt werden.

References

Install Mattermost via Omnibus: Install Mattermost Omnibus — Mattermost documentation Mattermost Calls Dokumentation: Calls self-hosted deployment — Mattermost documentation Mattermost Mobile Push Dokumentation: Mobile push notifications — Mattermost documentation

Neuste Blogposts

Install Mattermost behind OPNsense Reverse Proxy

This article is about installing mattermost behind a OPNsense reverse proxy using Ubuntu and the official Omnibus deployment method of Mattermost.

Mattermost hinter einem OPNsense Reverse Proxy installieren

Dieser Artikel beschreibt die Installation von Mattermost hinter einem OPNsense Reverse Proxy mit Ubuntu und der offiziellen Omnibus Deployment Methode von Mattermost.

Cluster Shared Volume (CSV) has redirected access

Troubleshooting guide for cluster shared volumes (CSV). From easy to hard.