Matrix Homeserver Setup - mischlabs.de
Dieses Projekt stellt einen eigenen, föderierbaren Matrix Homeserver auf Basis von Synapse bereit, inklusive einer PostgreSQL-Datenbank und dem Web-Client Element Web.
🛠 Architektur & Dienste
Das Setup besteht aus drei Docker-Containern:
matrix_synapse: Der eigentliche Matrix Homeserver (Synapse), vorkonfiguriert für das Domain-Routing untermischlabs.deund die technische Bereitstellung aufmatrix.mischlabs.de.matrix_synapse_db: Eine dedizierte PostgreSQL 16 Datenbank für maximale Performance und Zuverlässigkeit.matrix_element: Der Web-Client Element, erreichbar unterchat.mischlabs.de.
Die Container binden sich an das Docker-Netzwerk npm-net an, damit sie vom Nginx Proxy Manager (oder Cloudflare Tunnel) auf der NAS direkt erreicht und mit SSL-Zertifikaten versorgt werden können.
🚀 Deployment auf der NAS
Da du Docker auf deiner UGREEN NAS betreibst, sind dies die Schritte zur Bereitstellung:
1. Dateien vorbereiten
Kopiere den gesamten Ordner D:\Vibecoding\Website\Matrix auf dein NAS in das entsprechende Docker-Verzeichnis (z. B. /volume2/docker/matrix/).
2. Keycloak Client einrichten
Melde dich in deiner Keycloak Admin-Konsole (https://auth.mischlabs.de) an:
- Wähle den Realm
mischlabs. - Gehe auf Clients -> Create client.
- Einstellungen:
- Client type:
OpenID Connect - Client ID:
matrix - Name:
Matrix Synapse
- Client type:
- Klicke auf Next und aktiviere:
- Client authentication:
ON(Confidential Client, erfordert ein Secret) - Authorization:
OFF - Authentication flow: Standard Flow aktiviert (
Authorization Code Flow)
- Client authentication:
- Klicke auf Save.
- Unter Settings -> Capability config folgende URIs einpflegen:
- Valid Redirect URIs:
https://matrix.mischlabs.de/_synapse/client/oidc/callback - Web Origins:
https://matrix.mischlabs.de
- Valid Redirect URIs:
- Gehe auf den Reiter Credentials und kopiere das Client Secret.
3. Konfiguration anpassen
- Öffne die
.env-Datei auf der NAS und trage dein Keycloak-Secret beiKEYCLOAK_CLIENT_SECRETein. - Öffne
/data/homeserver.yamlund ersetzeDEIN_KEYCLOAK_CLIENT_SECRETdurch dein Keycloak Client Secret.
4. Reverse Proxy einrichten (Nginx Proxy Manager)
Erstelle im Nginx Proxy Manager zwei neue Proxy Hosts:
Host 1: Matrix Server (matrix.mischlabs.de)
- Domain Names:
matrix.mischlabs.de - Scheme:
http - Forward Host IP:
matrix_synapse(oder die NAS-IP192.168.178.88) - Forward Port:
8008 - Block Common Exploits: Aktiviert
- SSL: Let's Encrypt Zertifikat aktivieren, Force SSL und HTTP/2 Support aktivieren.
- Advanced Config (Sehr Wichtig für Föderation):
Füge unter Custom Nginx Configuration Folgendes hinzu, damit große Datei-Uploads klappen:
client_max_body_size 100M;
Host 2: Element Web Client (chat.mischlabs.de)
- Domain Names:
chat.mischlabs.de - Scheme:
http - Forward Host IP:
matrix_element(oder die NAS-IP192.168.178.88) - Forward Port:
8088 - SSL: Let's Encrypt Zertifikat aktivieren, Force SSL und HTTP/2 Support aktivieren.
🏁 Container starten
Verbinde dich per SSH mit deinem NAS, navigiere in das Matrix-Verzeichnis und starte die Container:
docker compose up -d
Logs prüfen
Stelle sicher, dass Synapse und die Datenbank sauber starten:
docker compose logs -f synapse
docker compose logs -f synapse_db
Hinweis: Beim ersten Start generiert Synapse automatisch den Signierungsschlüssel /data/mischlabs.de.signing.key im Datenordner.
🌐 .well-known Domain-Delegierung aktivieren
Damit dein Server über @username:mischlabs.de föderieren kann und Clients die richtige Homeserver-URL finden, haben wir die nginx.conf deiner mischlabs Landingpage angepasst.
Wenn du das nächste Mal die Landingpage deployst (per Gitea Actions/Watchtower), werden die Pfade https://mischlabs.de/.well-known/matrix/server und https://mischlabs.de/.well-known/matrix/client automatisch korrekt ausgeliefert.
🔒 Administration & Wartung
Synapse-Admin (CLI)
Da die Standardregistrierung deaktiviert ist, werden neue Accounts ausschließlich über Keycloak erstellt. Solltest du jemals einen lokalen Admin-Account (ohne Keycloak) erstellen müssen, kannst du das über das Synapse CLI im Container tun:
docker exec -it matrix_synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
Folge den Eingabeaufforderungen (Admin-Rechte mit yes bestätigen).