Matrix Synapse Docker mit Nginx Proxy Manager (NPM)

Version: 25.4.17

In dem folgenden Tutorial wollen wir Matrix Synapse inklusive SSL Zertifikate von Letsencrypt mit dem Nginx Proxy Manager auf einem VPS im Internet (in unserem Fall bei Hetzner.com) installieren.

Ein großes Dankeschön geht an Patrick von https://www.cleveradmin.de/ mit dem ich zusammen eine tolle Lösung erarbeitet habe!!

🛠 Voraussetzungen:
– VPS ist eingerichtet mit root Zugang (Ubuntu)
– Eine Domain ist vorhanden mit Zugriff auf die DNS Einträge

Hier reicht ein kleiner Server von z.B. Hetzner.com aus:

⚠️ Firewall: Bitte die Firewall bei Hetzner konfigurieren und nur folgende Ports zulassen:

TCP: 22, 80, 81, 443 (Matrix Synapse, NPM)
TCP: 7881-7882 und UDP 50100 – 50200 sind die Vorbereitungen für Element Call

⚠️ Der DNS Zugriff muss ebenfalls gegeben sein, bei einer vorhandenen Domain:

Wir starten und loggen uns auf dem Server ein:

Zuerst sorgen wir dafür das der Server auf dem neusten Stand ist mit folgendem Befehl:

Danach starten wir den Server neu und loggen uns dann erneut ein:

Wir erstellen die Ordner für unsere beiden Projekte (Synapse und Nginx Proxy Manager -NPM-)

Jetzt installieren wir erst einmal Docker indem wir im /home/ Verzeichnis eine Datei Namens „install.sh“ erstellen:

In die Datei kommt folgender Inhalt rein (Danke an Patrick Asmus: https://git.techniverse.net/scriptos/public-linux-docker-installer)

Anschließend führen wir die Datei aus:

Nach Abschluss des Skripts ist Docker und Docker-Compose installiert.

⚠️ Wichtig: Jetzt legen wir ein spezielles Netzwerk an, in welchem die einzelnen Container später gemeinsam tätig sind:

Wir fangen mit Matrix Synapse an und gehen dazu in den synapse Ordner und führen folgenden Befehl aus:

⚠️ „subdomain.deinedomain.de“ wird natürlich vorher mit der eigenen Domain abgeändert. z.b: matrix.deinedomain.de

Das Skript hat jetzt die sogenannte homeserver.yaml Datei im Ordner /synapse/data/ angelegt.

Diese öffnen wir mit:

Die Datei sollte wie folgt aussehen:

⚠️ Wichtig ist die Datenbankeinstellungen noch wie folgt abzuändern:

Dabei wird die SQL3 Datenbank deaktiviert und Postgres aktiviert.

Wir speichern die Datei (STRG+O) und schließen den Editor wieder (STRG+X) und legen nun die „docker-compose.yml“ Datei im Ordner Synapse an:

Dabei könnt ihr die folgende Compose-Datei verwenden und ändert diese mit euren Daten ab (Passwort für Postgres noch abändern):

Nun schauen wir, dass wir wieder in das Projektverzeichnis gehen und den Container starten:

Das Ergebnis können wir mit „docker ps“ in der Kommandozeile abfragen. Wir sollten sehen, dass die Container (Synapse und die Datenbank) als „Healthy“ läuft:

Den ersten Benutzer (Admin) legen wir mit folgendem Befehl an:

⚠️ Wichtig: wieder in das /home/synapse/ Verzeichnis wechseln!

Erklärung:

  • -u: gewünschter Benutzername
  • -p: Passwort
  • -a: macht den Benutzer zum Admin (optional)
  • -k: shared secret aus homeserver.yaml
  • http://localhost:8008: Synapse Admin-API-Endpunkt (achte auf korrekte Adresse, evtl. http://synapse:8008 innerhalb von Compose)

Fertig: Teil 1 ist erledigt. Matrix Synapse ist installiert. Herzlichen Glückwunsch ! Überprüft werden kann dies mit aufruf der URL:

http://server-ip:8008

Nächster Schritt: NPM – Nginx Proxy Manager als Docker installieren (SSL Zertifikat / HTTPS)

In die Datei fügen wir folgenden Code ein:

Nun sorgen wir dafür, dass neben dem NPM auch immer die Datenbank beim Systemstart mitgestartet wird. In der docker-compose.yml klappt das nämlich nicht immer und man kann sich dann nicht bei NPM einloggen auf dem Interface.

🛠 Die Lösung ist ein: „systemd-Service“

Service-Datei erstellen (z. B. /etc/systemd/system/npm-stack.service):

⚠️ Passe den Pfad bei WorkingDirectory an den Ordner an, in dem die docker-compose.yml liegt! (/home/npm)

Aktivieren und starten:

✅ Ergebnis

Jetzt wird der komplette NPM Stack – inklusive mariadb-aria – beim Booten des Systems automatisch gestartet, ohne dass manuell docker compose up ausgeführt werden muss.

Wir starten den NPM container indem wir in das Verzeichnis /home/npm/ gehen und dort den Befehl ausführen:

Nun öffnen wir die Admin-Oberflöche von NPM mittels: http://IP-ADRESSE:81 und bekommen folgendes Bild:

Wir loggen uns ein mit:
– admin@example.com
– changeme

Und können nun unsere eigenen Userdaten vergeben.

Wichtig ist jetzt, dass wir verschiedene Subdomains anlegen:
– npm.domain.de
– matrix.domain.de

Die Subdomains verweisen dabei in den DNS Einstellungen von Hetzner auf den VPS auf dem das alles installiert ist. Nachdem wir das gemacht haben, geht es beim NPM weiter:

Im NPM klicken wir jetzt auf „Hosts“ -> „Proxy Hosts“ -> „Add Proxy Host“ und fügen folgendes ein:

⚠️ Wichtig: Es werden zur Weiterleitung die internen Docker-IPs der Container verwendet. Das verhindert spätere Fehler. Dafür haben wir auch ganz am Anfang des Tutorials das spezielle Docker-Netzwerk eingerichtet. Alle Container sind im gleichen Netzwerk.

Weiter gehts: Dann auf den Reiter SSL klicken:

Nun auf Save klicken und ihr habt einen „Reverse Proxy“ eingerichtet. Eure Matrix Server ist nun per https:// erreichbar unter „matrix.domainname.de“.

Dasselbe macht ihr noch mit dem NPM, damit auch dieser über SSL abgesichert ist:

Und auch wieder unter SSL das SSL Zertifikat anfordern.

Im NPM unter „SSL Certificates“ können nun die SSL Zertifikate eingesehen werden:

✅ Fertig! Matrix Synapse mit NPM (beides im Docker Container) wurde auf einem VPS im Internet installiert.


Wer jetzt wissen möchte wie man Element Call installiert, der schaut sich das Tutorial von Patrick an:
https://www.cleveradmin.de/blog/2025/04/matrixrtc-element-call-backend-einrichten/


bc1q8dxp9mlt3mkvaklu2vn8j6jteqyv53kschc90v

Lightning: tom@blitz.cmdsrv.de

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert