fix: finish VereinsChat->TalkTime rename in synapse docs, harden defaults
- Fixed leftover chat.vereinschat.local defaults in docker-compose.yml and homeserver.yaml.sample that the earlier bulk rename missed (placeholders weren't plain "VereinsChat" text) - Generalized example prod domain from chat.verein.de to chat.example.org - Disabled federation by default in homeserver.yaml.sample (client-only resources, empty federation_domain_whitelist) since TalkTime runs a private homeserver per deployment, not a public Matrix participant - Added concrete nginx TLS reverse-proxy config and a federation-enable note to the Synapse README instead of a stale "see deployment.md" pointer Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TBf3yfnnHzMQ5qhLV2285A
This commit is contained in:
1 parent
b5ac041c32
commit
51426a944c
3 files changed
+37
-15
No files matched your search
+27
-7
@@ -12,7 +12,7 @@ Für volle Kontrolle (kein extra nginx/Element, schlankeres Setup) weiter mit Op
|
|||||||
|
|
||||||
## Voraussetzungen (beide Varianten)
|
## Voraussetzungen (beide Varianten)
|
||||||
|
|
||||||
- Eine Domain oder lokaler Hostname (z. B. `chat.vereinschat.local` für Dev, `chat.verein.de` für Prod) — das ist `SYNAPSE_SERVER_NAME`, später Teil jeder Matrix-ID, danach nicht mehr änderbar ohne Neuaufsetzen
|
- Eine Domain oder lokaler Hostname (z. B. `chat.talktime.local` für Dev, `chat.example.org` für Prod) — das ist `SYNAPSE_SERVER_NAME`, später Teil jeder Matrix-ID, danach nicht mehr änderbar ohne Neuaufsetzen
|
||||||
- PostgreSQL 13+ (SQLite reicht nur für allerkleinste Tests, nicht produktiv)
|
- PostgreSQL 13+ (SQLite reicht nur für allerkleinste Tests, nicht produktiv)
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -29,15 +29,15 @@ mkdir -p synapse/data
|
|||||||
|
|
||||||
### 2. docker-compose.yml
|
### 2. docker-compose.yml
|
||||||
|
|
||||||
Liegt bereits als [`docker-compose.yml`](docker-compose.yml) in diesem Ordner. Server-Name und DB-Passwort per `.env` neben der Datei überschreiben (sonst greifen die Defaults `chat.vereinschat.local` / `changeme`):
|
Liegt bereits als [`docker-compose.yml`](docker-compose.yml) in diesem Ordner. Server-Name und DB-Passwort per `.env` neben der Datei überschreiben (sonst greifen die Defaults `chat.talktime.local` / `changeme`):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# synapse/.env (nicht committen)
|
# synapse/.env (nicht committen)
|
||||||
SYNAPSE_SERVER_NAME=chat.verein.de
|
SYNAPSE_SERVER_NAME=chat.example.org
|
||||||
SYNAPSE_DB_PASSWORD=<starkes-passwort>
|
SYNAPSE_DB_PASSWORD=<starkes-passwort>
|
||||||
```
|
```
|
||||||
|
|
||||||
`SYNAPSE_SERVER_NAME` ist der Homeserver-Name — später Teil jeder Matrix-ID (`@user:chat.verein.de`). Danach nicht mehr änderbar, ohne den Server neu aufzusetzen.
|
`SYNAPSE_SERVER_NAME` ist der Homeserver-Name — später Teil jeder Matrix-ID (`@user:chat.example.org`). Danach nicht mehr änderbar, ohne den Server neu aufzusetzen.
|
||||||
|
|
||||||
### 3. Konfiguration generieren
|
### 3. Konfiguration generieren
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ cp homeserver.yaml.sample data/homeserver.yaml
|
|||||||
```
|
```
|
||||||
|
|
||||||
Danach in `data/homeserver.yaml` die Platzhalter `<...>` ersetzen:
|
Danach in `data/homeserver.yaml` die Platzhalter `<...>` ersetzen:
|
||||||
- `server_name` / Pfade zur `.signing.key` — Name aus Schritt 3 (Standard: `chat.vereinschat.local`)
|
- `server_name` / Pfade zur `.signing.key` — Name aus Schritt 3 (Standard: `chat.talktime.local`)
|
||||||
- `database.args.password` — dasselbe Passwort wie `SYNAPSE_DB_PASSWORD`
|
- `database.args.password` — dasselbe Passwort wie `SYNAPSE_DB_PASSWORD`
|
||||||
- `registration_shared_secret`, `macaroon_secret_key`, `form_secret` — je ein langer Zufalls-String (`openssl rand -hex 32`)
|
- `registration_shared_secret`, `macaroon_secret_key`, `form_secret` — je ein langer Zufalls-String (`openssl rand -hex 32`)
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ python3 -m venv /opt/synapse/venv
|
|||||||
```bash
|
```bash
|
||||||
cd /opt/synapse
|
cd /opt/synapse
|
||||||
./venv/bin/python -m synapse.app.homeserver \
|
./venv/bin/python -m synapse.app.homeserver \
|
||||||
--server-name=chat.vereinschat.local \
|
--server-name=chat.talktime.local \
|
||||||
--config-path=homeserver.yaml \
|
--config-path=homeserver.yaml \
|
||||||
--generate-config \
|
--generate-config \
|
||||||
--report-stats=no
|
--report-stats=no
|
||||||
@@ -196,7 +196,27 @@ SYNAPSE_ADMIN_TOKEN=<access_token aus Admin-Setup>
|
|||||||
|
|
||||||
### Reverse Proxy + TLS (Produktion)
|
### Reverse Proxy + TLS (Produktion)
|
||||||
|
|
||||||
Für Produktivbetrieb Synapse hinter nginx mit TLS terminieren (Port 8008 nicht direkt exponieren). Beispiel-nginx-Config und nötige `.well-known`-Delegation folgen in `docs/deployment.md`, sobald das Gesamt-Deployment steht.
|
Für Produktivbetrieb Synapse hinter nginx mit TLS terminieren (Port 8008 nicht direkt exponieren). `homeserver.yaml.sample` deaktiviert Föderation standardmäßig (`resources: [client]`, `federation_domain_whitelist: []`) — TalkTime betreibt einen privaten Homeserver, kein öffentliches Matrix-Netz-Mitglied:
|
||||||
|
|
||||||
|
```nginx
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name chat.example.org;
|
||||||
|
|
||||||
|
ssl_certificate /etc/letsencrypt/live/chat.example.org/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/chat.example.org/privkey.pem;
|
||||||
|
|
||||||
|
location ~ ^(/_matrix|/_synapse/client) {
|
||||||
|
proxy_pass http://127.0.0.1:8008;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
client_max_body_size 50M;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Föderation aktivieren** (nur falls mit anderen Matrix-Homeservern föderiert werden soll): in `homeserver.yaml` `resources.names` um `federation` ergänzen und `federation_domain_whitelist` entfernen, zusätzlich Port 8448 (TLS, gleiches Proxy-Ziel wie oben) freischalten und `.well-known/matrix/server` unter `https://chat.example.org/.well-known/matrix/server` mit `{"m.server": "chat.example.org:443"}` bereitstellen.
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- synapse-db
|
- synapse-db
|
||||||
environment:
|
environment:
|
||||||
SYNAPSE_SERVER_NAME: ${SYNAPSE_SERVER_NAME:-chat.vereinschat.local}
|
SYNAPSE_SERVER_NAME: ${SYNAPSE_SERVER_NAME:-chat.talktime.local}
|
||||||
SYNAPSE_REPORT_STATS: "no"
|
SYNAPSE_REPORT_STATS: "no"
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/data
|
- ./data:/data
|
||||||
|
|||||||
@@ -8,10 +8,13 @@
|
|||||||
#
|
#
|
||||||
# NIE mit echten Secrets committen — nur diese .sample-Datei liegt im Repo.
|
# NIE mit echten Secrets committen — nur diese .sample-Datei liegt im Repo.
|
||||||
|
|
||||||
server_name: "<chat.vereinschat.local>"
|
server_name: "<chat.talktime.local>"
|
||||||
pid_file: /data/homeserver.pid
|
pid_file: /data/homeserver.pid
|
||||||
signing_key_path: "/data/<chat.vereinschat.local>.signing.key"
|
signing_key_path: "/data/<chat.talktime.local>.signing.key"
|
||||||
|
|
||||||
|
# Standard: keine Föderation mit dem öffentlichen Matrix-Netz — TalkTime betreibt
|
||||||
|
# einen privaten Homeserver pro Deployment. Für Föderation "federation" wieder in
|
||||||
|
# resources.names aufnehmen und trusted_key_servers/well-known einrichten (siehe README).
|
||||||
listeners:
|
listeners:
|
||||||
- port: 8008
|
- port: 8008
|
||||||
tls: false
|
tls: false
|
||||||
@@ -19,9 +22,11 @@ listeners:
|
|||||||
x_forwarded: true
|
x_forwarded: true
|
||||||
bind_addresses: ['0.0.0.0']
|
bind_addresses: ['0.0.0.0']
|
||||||
resources:
|
resources:
|
||||||
- names: [client, federation]
|
- names: [client]
|
||||||
compress: false
|
compress: false
|
||||||
|
|
||||||
|
federation_domain_whitelist: []
|
||||||
|
|
||||||
database:
|
database:
|
||||||
name: psycopg2
|
name: psycopg2
|
||||||
args:
|
args:
|
||||||
@@ -33,7 +38,7 @@ database:
|
|||||||
cp_min: 5
|
cp_min: 5
|
||||||
cp_max: 10
|
cp_max: 10
|
||||||
|
|
||||||
log_config: "/data/<chat.vereinschat.local>.log.config"
|
log_config: "/data/<chat.talktime.local>.log.config"
|
||||||
media_store_path: /data/media_store
|
media_store_path: /data/media_store
|
||||||
max_upload_size: 50M
|
max_upload_size: 50M
|
||||||
|
|
||||||
@@ -45,6 +50,3 @@ report_stats: false
|
|||||||
|
|
||||||
macaroon_secret_key: "<langer-zufalls-string>"
|
macaroon_secret_key: "<langer-zufalls-string>"
|
||||||
form_secret: "<langer-zufalls-string>"
|
form_secret: "<langer-zufalls-string>"
|
||||||
|
|
||||||
trusted_key_servers:
|
|
||||||
- server_name: "matrix.org"
|
|
||||||
Reference in new issue
Block a user