coturn nutzt HMAC-Auth mit einem statischen Shared Secret (siehe apps/production/coturn-secret.yaml, SOPS-verschluesselt). Bisher nie thematisiert, ob/wie oft dieses Secret rotiert werden sollte, und was der Rotationsprozess waere (Secret aendern -> coturn neu deployen -> alte Clients mit gecachten Tokens? TURN-Tokens sind idR kurzlebig, sollte unkritisch sein, aber noch nicht durchdacht/entschieden). Braucht noch ein Gespraech, keine fertige Entscheidung.
coturn nutzt HMAC-Auth mit einem statischen Shared Secret (siehe `apps/production/coturn-secret.yaml`, SOPS-verschluesselt). Bisher nie thematisiert, ob/wie oft dieses Secret rotiert werden sollte, und was der Rotationsprozess waere (Secret aendern -> coturn neu deployen -> alte Clients mit gecachten Tokens? TURN-Tokens sind idR kurzlebig, sollte unkritisch sein, aber noch nicht durchdacht/entschieden). Braucht noch ein Gespraech, keine fertige Entscheidung.
Vollstaendig umgesetzt und live end-to-end verifiziert.
Architektur-Fix (0242238, 62b05c5, d24dbf8, e53896e): TURN-Secret war dupliziert - korrekt SOPS-verschluesselt in coturn-secret.yaml, aber zusaetzlich im Klartext in synapse-values.yaml (git-Historie!). Ausgelagert in eine eigene synapse-turn-secret.yaml (SOPS), Wert rotiert. Nebenbei gefunden+gefixt: coturns hostNetwork-Deployment nutzte RollingUpdate, was auf Single-Node nie schedulen kann (neuer Pod braucht dieselben Ports wie der alte) - auf Recreate umgestellt.
Automatisierung (947eaab, c1c189d, 62d4bf6): Monatlicher CronJob (rohana.axion1337.de/sorb/axion-secret-rotation:v1), rotiert das Secret, committet/pusht mit einem dedizierten, gescopten age-Key (nur diese zwei Dateien entschluesselbar, nicht das Repo-Master-Secret) auf einen neuen Branch und oeffnet eine PR statt direkt nach main zu pushen - Mensch merged bewusst.
Job lief durch, PR mit exakt den 4 erwarteten Dateien geoeffnet, Diff sauber (nur Secret-Werte + Checksums)
Nach Merge: coturn restartete schnell (Kustomization-Ebene), Synapse aber verzoegert - Helm-Controller (eigenes Reconcile-Intervall, war 5m) braucht separat laenger als die Kustomization (1m) um das geaenderte Secret zu bemerken. Kurzes Fenster, in dem coturn+Synapse unterschiedliche Secrets haben (Anrufe waeren in dem Fenster fehlgeschlagen). Selbstheilend (keine manuelle Aktion noetig), aber verkuerzt: HelmRelease-Intervall auf 1m reduziert (22299b6), passend zu production-apps.
Danach: echter Call getestet, funktioniert.
Unterwegs gefunden+gefixt: Netzwerk-Erreichbarkeit zum Gitea-Host von Pods aus war zeitweise down (siehe #41) - hostAliases auf den Rotation-Job ergaenzt, damit er ueber das private Hetzner-Netz laeuft statt vom oeffentlichen Firewall-Status abhaengig zu sein.
Vollstaendig umgesetzt und live end-to-end verifiziert.
**Architektur-Fix (0242238, 62b05c5, d24dbf8, e53896e):** TURN-Secret war dupliziert - korrekt SOPS-verschluesselt in `coturn-secret.yaml`, aber zusaetzlich im Klartext in `synapse-values.yaml` (git-Historie!). Ausgelagert in eine eigene `synapse-turn-secret.yaml` (SOPS), Wert rotiert. Nebenbei gefunden+gefixt: coturns `hostNetwork`-Deployment nutzte `RollingUpdate`, was auf Single-Node nie schedulen kann (neuer Pod braucht dieselben Ports wie der alte) - auf `Recreate` umgestellt.
**Automatisierung (947eaab, c1c189d, 62d4bf6):** Monatlicher CronJob (`rohana.axion1337.de/sorb/axion-secret-rotation:v1`), rotiert das Secret, committet/pusht mit einem **dedizierten, gescopten age-Key** (nur diese zwei Dateien entschluesselbar, nicht das Repo-Master-Secret) auf einen neuen Branch und **oeffnet eine PR** statt direkt nach main zu pushen - Mensch merged bewusst.
**Live-Test (PR #42, gemerged):**
- Job lief durch, PR mit exakt den 4 erwarteten Dateien geoeffnet, Diff sauber (nur Secret-Werte + Checksums)
- Nach Merge: coturn restartete schnell (Kustomization-Ebene), **Synapse aber verzoegert** - Helm-Controller (eigenes Reconcile-Intervall, war 5m) braucht separat laenger als die Kustomization (1m) um das geaenderte Secret zu bemerken. Kurzes Fenster, in dem coturn+Synapse unterschiedliche Secrets haben (Anrufe waeren in dem Fenster fehlgeschlagen). Selbstheilend (keine manuelle Aktion noetig), aber verkuerzt: HelmRelease-Intervall auf 1m reduziert (22299b6), passend zu production-apps.
- Danach: echter Call getestet, funktioniert.
**Unterwegs gefunden+gefixt:** Netzwerk-Erreichbarkeit zum Gitea-Host von Pods aus war zeitweise down (siehe #41) - `hostAliases` auf den Rotation-Job ergaenzt, damit er ueber das private Hetzner-Netz laeuft statt vom oeffentlichen Firewall-Status abhaengig zu sein.
Migriert nach git.lab: axion1337.chat/axion1337.chat-gitops#38 (nur im Lab bzw. via VPN erreichbar — das Lab ist seit 2026-08-01 die Quelle der Wahrheit, siehe gitops#48). Weiterarbeit dort; dieses Gitea-Issue bleibt als Verweis stehen.
**Migriert nach git.lab**: [axion1337.chat/axion1337.chat-gitops#38](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/38) (nur im Lab bzw. via VPN erreichbar — das Lab ist seit 2026-08-01 die Quelle der Wahrheit, siehe gitops#48). Weiterarbeit dort; dieses Gitea-Issue bleibt als Verweis stehen.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
coturn nutzt HMAC-Auth mit einem statischen Shared Secret (siehe
apps/production/coturn-secret.yaml, SOPS-verschluesselt). Bisher nie thematisiert, ob/wie oft dieses Secret rotiert werden sollte, und was der Rotationsprozess waere (Secret aendern -> coturn neu deployen -> alte Clients mit gecachten Tokens? TURN-Tokens sind idR kurzlebig, sollte unkritisch sein, aber noch nicht durchdacht/entschieden). Braucht noch ein Gespraech, keine fertige Entscheidung.Vollstaendig umgesetzt und live end-to-end verifiziert.
Architektur-Fix (
0242238,62b05c5,d24dbf8,e53896e): TURN-Secret war dupliziert - korrekt SOPS-verschluesselt incoturn-secret.yaml, aber zusaetzlich im Klartext insynapse-values.yaml(git-Historie!). Ausgelagert in eine eigenesynapse-turn-secret.yaml(SOPS), Wert rotiert. Nebenbei gefunden+gefixt: coturnshostNetwork-Deployment nutzteRollingUpdate, was auf Single-Node nie schedulen kann (neuer Pod braucht dieselben Ports wie der alte) - aufRecreateumgestellt.Automatisierung (
947eaab,c1c189d,62d4bf6): Monatlicher CronJob (rohana.axion1337.de/sorb/axion-secret-rotation:v1), rotiert das Secret, committet/pusht mit einem dedizierten, gescopten age-Key (nur diese zwei Dateien entschluesselbar, nicht das Repo-Master-Secret) auf einen neuen Branch und oeffnet eine PR statt direkt nach main zu pushen - Mensch merged bewusst.Live-Test (PR #42, gemerged):
Unterwegs gefunden+gefixt: Netzwerk-Erreichbarkeit zum Gitea-Host von Pods aus war zeitweise down (siehe #41) -
hostAliasesauf den Rotation-Job ergaenzt, damit er ueber das private Hetzner-Netz laeuft statt vom oeffentlichen Firewall-Status abhaengig zu sein.Migriert nach git.lab: axion1337.chat/axion1337.chat-gitops#38 (nur im Lab bzw. via VPN erreichbar — das Lab ist seit 2026-08-01 die Quelle der Wahrheit, siehe gitops#48). Weiterarbeit dort; dieses Gitea-Issue bleibt als Verweis stehen.