docs(issues): #0060 - price the federation decision instead of debating it

The question sat open since July because nobody knew what closing would cost. It is
now measured: zero. No destinations, no remote users, no rooms with outside
participation, across four months of operation - while the federation API answers
HTTP 200 from the public internet, since the well-known delegation routes federation
over 443 and port 8448 being shut changes nothing.

So the trade is not reach against safety but an unused capability against Synapse's
largest remote-facing surface. Recommended B, an empty federation_domain_whitelist:
one line, versioned, reversible in minutes, and honest about what it does not do -
the endpoints keep answering, so the server becomes unengaged rather than invisible.

Decision remains sorb's.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Thore Cimbal
2026-08-19 12:00:00 +00:00
co-authored by Claude Opus 5
parent 23378c41b7
commit 7a14adb015
@@ -19,3 +19,63 @@ Decide: open federation with all public Matrix servers (current default, larger
---
*Migriert aus Gitea `sorb/axion1337.chat-gitops#17` — dort erstellt am 2026-07-28 von sorb.*
<!-- gitea-migration: sorb/axion1337.chat-gitops#17 -->
## Entscheidungsgrundlage 2026-08-19 — gemessen statt geschätzt
Die Frage war seit dem 2026-07-28 offen, weil niemand wusste, was eine Schließung
kosten würde. Jetzt ist es beziffert.
**Föderation ist offen und öffentlich erreichbar.** In `synapse-values.yaml` steht zu
Föderation **nichts** — es gelten die Synapse-Vorgaben. Von außen gemessen:
```
https://matrix.axion1337.chat/_matrix/federation/v1/version -> HTTP 200
https://matrix.axion1337.chat/_matrix/key/v2/server -> HTTP 200
```
Port 8448 ist zwar zu, das ändert nichts: Die Delegation
(`/.well-known/matrix/server``matrix.axion1337.chat:443`) führt die Föderation über
den regulären HTTPS-Port, und der ist offen.
**Benutzt wurde sie noch nie.** Aus der Synapse-Datenbank, über die gesamte Betriebszeit
(Erstkonto 2026-04-21):
| | |
|---|---|
| Zielserver in `destinations` | **0** |
| davon je erfolgreich kontaktiert | **0** |
| fremde Nutzer in unseren Räumen | **0** |
| Räume mit fremder Beteiligung | **0** |
| eigene Räume | 31 |
Nicht „wenig genutzt" — **null**, in vier Monaten. Damit kostet eine Schließung heute
nichts Messbares; sie nimmt nur eine Möglichkeit weg, die niemand wahrgenommen hat.
**Was dagegen bezahlt wird:** Die Föderations-Schnittstelle ist die größte
fremdzugewandte Angriffsfläche, die Synapse hat, und historisch die, in der seine CVEs
sitzen. Jeder Matrix-Server der Welt darf derzeit Beitritts- und Ereignisverkehr
versuchen.
### Optionen mit ihren Folgen
**A — offen lassen (Ist-Zustand).** Kein Aufwand. Wir bezahlen dauerhaft
Angriffsfläche für eine Fähigkeit mit null nachgewiesenem Bedarf.
**B — `federation_domain_whitelist` mit leerer Liste.** Föderation nur mit
ausdrücklich genannten Servern; leer heißt: mit keinem. Eine Zeile Konfiguration,
über GitOps versioniert, in Minuten rückgängig durch Eintragen einer Domain.
⚠️ **Was es NICHT tut:** Die Endpunkte antworten weiterhin (`key/v2/server`,
`federation/v1/version`) — der Server ist also nicht unsichtbar, nur unbeteiligt.
**C — Föderations-Listener ganz abschalten.** Kleinste Fläche, aber Eingriff in das
ESS-Chart und schwerer zurückzudrehen.
**Empfehlung: B.** Sie kostet heute nichts, ist eine Zeile, ist versioniert und hält die
Tür offen, ohne Miete dafür zu zahlen. C lohnt erst, wenn feststeht, dass Föderation
dauerhaft unerwünscht ist — dann als eigene Entscheidung mit ADR.
**Getrennt davon** nennt das Issue `allow_public_rooms_without_join_rules`: Das steuert
nur, ob das Raumverzeichnis über Föderation sichtbar ist, und ist unabhängig von der
Grundsatzfrage.
**Entscheidung sorb steht aus.**