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:
patrickandClaude Sonnet 5 committed 2026-09-11 15:34:25 +02:00
1 parent b5ac041c32
commit 51426a944c
3 files changed
+37 -15

No files matched your search

+27 -7
View File
@@ -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
+1 -1
View File
@@ -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
+9 -7
View File
@@ -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"