108 lines
4.6 KiB
Markdown
108 lines
4.6 KiB
Markdown
# 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:
|
|
1. **`matrix_synapse`**: Der eigentliche Matrix Homeserver (Synapse), vorkonfiguriert für das Domain-Routing unter `mischlabs.de` und die technische Bereitstellung auf `matrix.mischlabs.de`.
|
|
2. **`matrix_synapse_db`**: Eine dedizierte PostgreSQL 16 Datenbank für maximale Performance und Zuverlässigkeit.
|
|
3. **`matrix_element`**: Der Web-Client **Element**, erreichbar unter `chat.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:
|
|
1. Wähle den Realm **`mischlabs`**.
|
|
2. Gehe auf **Clients** -> **Create client**.
|
|
3. Einstellungen:
|
|
* **Client type:** `OpenID Connect`
|
|
* **Client ID:** `matrix`
|
|
* **Name:** `Matrix Synapse`
|
|
4. Klicke auf **Next** und aktiviere:
|
|
* **Client authentication:** `ON` (Confidential Client, erfordert ein Secret)
|
|
* **Authorization:** `OFF`
|
|
* **Authentication flow:** Standard Flow aktiviert (`Authorization Code Flow`)
|
|
5. Klicke auf **Save**.
|
|
6. Unter **Settings** -> **Capability config** folgende URIs einpflegen:
|
|
* **Valid Redirect URIs:** `https://matrix.mischlabs.de/_synapse/client/oidc/callback`
|
|
* **Web Origins:** `https://matrix.mischlabs.de`
|
|
7. Gehe auf den Reiter **Credentials** und kopiere das **Client Secret**.
|
|
|
|
### 3. Konfiguration anpassen
|
|
1. Öffne die `.env`-Datei auf der NAS und trage dein Keycloak-Secret bei `KEYCLOAK_CLIENT_SECRET` ein.
|
|
2. Öffne `/data/homeserver.yaml` und ersetze `DEIN_KEYCLOAK_CLIENT_SECRET` durch 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-IP `192.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:
|
|
```nginx
|
|
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-IP `192.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:
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
### Logs prüfen
|
|
Stelle sicher, dass Synapse und die Datenbank sauber starten:
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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).
|