Files
axion1337.chat-gitops/apps/production/element-server-suite.yaml
T
Thore Cimbal 07ffd0e86e ESS: 26.4.0 -> 26.8.0 (#0051)
The CVE gain is the smallest of today's steps: 17 critical findings become 6 and
217 high become 120 across Synapse, MAS, element-admin and lk-jwt-service.

The real reason is in the Synapse changelog rather than the CVE column. v1.157.0
fixes a bug introduced in v1.150.0 where reactivating a deactivated and erased
user did not restore their profile, breaking login, name changes and invitations.
We run v1.151.0, inside that range, and that is precisely what happened to an
account this morning.

Everything breaking in the span was checked against our state and none of it
applies: no Synapse workers, the stable auth integration already in use rather
than MSC3861, and no livekitAuth values set. Our elementWeb override to the fork
survives — both chart versions were rendered with our real values and compared.

Not 26.8.1: it appeared today. A fresh backup of the Synapse and MAS databases
plus media was taken by hand beforehand, and sorb holds a host snapshot.
2026-08-21 12:00:00 +00:00

200 lines
9.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: matrix-stack
namespace: matrix
spec:
# Shortened from 5m to match production-apps Kustomization's 1m interval - narrows the
# window between coturn (Kustomization-only, no Helm indirection) and synapse-main
# (behind this HelmRelease) picking up a rotated TURN secret after Issue #38's
# automated-rotation PR gets merged. Self-heals either way, just faster now.
interval: 1m
chart:
spec:
chart: matrix-stack
# 26.8.0 (management #0051). Bringt Synapse v1.158.0, MAS 1.22.0,
# element-admin 0.1.12, lk-jwt-service 0.4.4 und LiveKit-SFU v1.12.0.
#
# NICHT 26.8.1: die erschien am 2026-08-21, also am Tag dieses Sprungs.
#
# Der Grund steht nicht in der CVE-Spalte (17 -> 6 CRITICAL, 217 -> 120 HIGH),
# sondern in Synapse v1.157.0: 'Fix a bug introduced in Synapse v1.150.0 where
# reactivating a deactivated and erased user did not restore their profile,
# breaking login, name changes, and invitations.' Wir fuhren v1.151.0 - das war
# die Ursache des Vorfalls vom 2026-08-21 (AAR clark-calls-reset).
#
# Alle Bruchstellen der Spanne gegen unseren Stand geprueft und gegenstandslos:
# keine Synapse-Worker (v1.152, ESS 26.5.0), stabile MAS-Integration statt
# MSC3861 bereits in Gebrauch (v1.157), kein livekitAuth.keysYaml (26.8.1).
# Unsere elementWeb-Ueberschreibung auf threadnet-web ueberlebt - beide
# Chart-Fassungen wurden mit unseren echten Werten gerendert und verglichen.
version: "26.8.0"
sourceRef:
kind: HelmRepository
name: element-ess-oci
namespace: flux-system
# NEU: Hier zieht Flux deine Puzzleteile zusammen
valuesFrom:
- kind: ConfigMap
name: ess-synapse-custom
valuesKey: values.yaml
- kind: ConfigMap
name: ess-element-custom
valuesKey: values.yaml
- kind: Secret
name: ess-mas-values-secret
valuesKey: values.yaml
- kind: Secret
name: synapse-turn-secret
valuesKey: values.yaml
values:
# Top-Level: serverName das ist dein Matrix-Homeserver-Name
serverName: axion1337.chat
# Cert-Manager für automatische Zertifikatsgenerierung
certManager:
clusterIssuer: letsencrypt-prod
# Interner Postgres an (default ist eh true, hier nur zur Klarheit)
postgres:
enabled: true
# Synapse API auf matrix.axion1337.chat
synapse:
enabled: true
ingress:
host: matrix.axion1337.chat
additional:
oembed:
config: |
oembed_enabled: true
# Matrix Authentication Service braucht eine Subdomain
matrixAuthenticationService:
enabled: true
ingress:
host: account.axion1337.chat
# Matrix RTC (Element Call) braucht auch eine Subdomain
matrixRTC:
enabled: true
ingress:
host: mrtc.axion1337.chat
# Chart default (20Mi request+limit) OOM-killed the authorisation service after
# ~74 days of uptime (2026-07-28) - too tight for a long-running Go service.
resources:
requests:
memory: 64Mi
cpu: 50m
limits:
memory: 128Mi
# Client-IP erhalten statt sie wegzu-SNATten.
#
# Mit dem Chart-Default `Cluster` verteilt kube-proxy eingehende NodePort-Pakete
# selbst weiter und ersetzt dabei die Absenderadresse durch die des Knotens. Der
# SFU sieht den Client deshalb nie unter seiner echten Adresse: Am 2026-08-19 war
# das ausgewaehlte ICE-Paar `prflx 10.42.0.1` - eine peer-reflexive Adresse aus
# dem Cluster-Netz. Das macht die Kandidatenwahl unnoetig instabil und ist die
# dokumentierte LiveKit-Empfehlung fuer Kubernetes.
#
# `Local` ist hier ohne Nachteil, weil der Cluster aus EINEM Knoten besteht: Der
# uebliche Preis - nur Knoten mit laufendem Pod nehmen Verkehr an - kann nicht
# greifen. Bei einem zweiten Knoten waere das neu zu bewerten.
#
# Was es NICHT behebt: das schubweise ICE-Flappen (16.08. = 119 Wechsel, 18.08.
# = 0). Das ist aelter und stammt aus der Zahl der Netzwerkpfade auf Client-Seite.
sfu:
exposedServices:
rtcMuxedUdp:
externalTrafficPolicy: Local
rtcTcp:
externalTrafficPolicy: Local
# Element Web
elementWeb:
enabled: true
image:
registry: rohana.axion1337.de
repository: sorb/threadnet-web
# v0.6.0-rc.2 = Anschluss an Element Web v1.12.26 (ADR-0022). Ein echter
# Merge-Commit statt Cherry-Picks; die Fork-Patches mussten umziehen,
# weil Upstream MImageBody.tsx geloescht und den Raumlisten-Inhalt nach
# RoomListItemContent ausgelagert hat. Betroffen sind genau die zwei
# Stellen, die die Abnahme pruefen muss: die ClamAV-Fehlermeldung im
# Bild-Pfad (ImageBodyViewModel.computeErrorLabel) und die
# Call-Teilnehmerliste in der Raumliste.
# Am 19.08. ausgerollt und nach wenigen Minuten zurueckgenommen: die
# Raumliste stuerzte bei jedem Eintrag ab (react-soft-crash), weil in
# RoomListItemViewModel.ts eine getValue-Zeile auf den von Upstream
# entfernten Labs-Schalter feature_room_list_sections stehenblieb -
# Sektionen laufen dort inzwischen ueber RoomList.showSections. Eine
# Leiche aus der Merge-Aufloesung, die kein Build fangen konnte:
# getValue nimmt einen String und wirft erst zur Laufzeit.
# rc.3 = derselbe Merge ohne den Rest, plus ein typecheck-Job, den
# docker_web als needs fuehrt: kein Image mehr ohne Typpruefung. Der
# web-Job baut nur, webpack wirft Typen weg - tsc hatte den Fehler die
# ganze Zeit gemeldet, gefragt hatte ihn niemand. Massstab ist "kein
# Fehler ausserhalb von node_modules", weil Upstream v1.12.26 selbst
# nicht typrein ist (matrix-js-sdk 42.2.0, in einem sauberen Checkout
# gegengeprueft).
# v0.6.0 = Abnahme auf rc.3 bestanden (19.08.), derselbe Quellstand
# 8ca03fe unter Release-Nummer. Geprueft am laufenden System, nicht nur
# am Build: Raumliste laedt, ClamAV blockt beim Senden (ein Scan-Aufruf,
# kein Upload), abgewiesene Datei zeigt die Meldung, und das .png wurde
# zugestellt, beim Herunterladen abgewiesen und die Meldung gerendert -
# damit ist der portierte Bild-Pfad belegt, nicht nur vermutet. Auch die
# Call-Teilnehmerliste, der zweite umgezogene Patch, steht richtig drin.
# Rueckhebel bleibt der Tag-Revert auf v0.5.4.
# v0.5.4 = Sender-Verifikation (threadnet-call fee9866): auf Safari
# uebersprang LiveKit den Track-Tausch stumm (sender?.replaceTrack),
# das rohe Mikro blieb auf der Leitung. Der Fork prueft und erzwingt
# den Tausch jetzt; die Konsole weist den Sendepfad aus.
# v0.5.3 = KI-Geraeuschunterdrueckung freigeschaltet (threadnet-call
# e3f8a85): Abnahme im Call zu zweit bestanden 2026-08-17. Checkbox +
# Regler in den Call-Einstellungen (Audio-Reiter). Rueckhebel bei
# Regression: Feature-Tor im Fork schliessen, kein Deployment-Revert.
# v0.5.2 = KI-Filter-Anbindung Weg B (threadnet-call df4e5ee): Filter
# haengt sich NACH der Publikation an den Mikrofon-Track, eigener
# AudioContext nur dort - kein webAudioMix, kein processor-Schluessel in
# den Capture-Defaults in irgendeinem Zustand. Tor geschlossen: fuer
# alle Nutzer verhaltensgleich mit v0.5.1; Test-Client per zwei
# localStorage-Schluesseln. Tor-Oeffnung erst nach Abnahme im Call.
# v0.5.1 = Entmuten-Vorfall aus v0.5.0 behoben (threadnet-call dcc8643):
# Aus-Pfad der KI-Geraeuschunterdrueckung wieder identisch mit Upstream
# (kein processor-Schluessel), Feature hart stillgelegt bis zur
# webAudioMix-Entscheidung - neutralisiert auch Clients mit noch
# aktivierter Einstellung im localStorage. Regressionstests decken beide
# Faelle ab. Abnahme: Call zu zweit nach dem Rollout.
# Historie 2026-08-16: v0.5.0 brach das Entmuten beidseitig und wurde v0.5.0 brach das Entmuten - es wurde nie ein
# Audio-Track veroeffentlicht (SFU-Log: kein einziges "published"). Erstes
# Produktivimage mit dem KI-Filter im Audio-Pfad; v0.4.3 (embedded .7) ist
# der letzte Stand, mit dem Calls nachweislich liefen (09.-11.08.).
# Ursache offen - siehe #0054. NICHT wieder anheben ohne Call-Test zu zweit.
# v0.5.0 = KI-Geraeuschunterdrueckung im Call-Widget (ADR-0018): erste
# Funktionserweiterung seit dem Rebrand, daher Minor statt Patch. Das
# Image traegt jetzt 23 MB Modell-Assets unter
# /widgets/element-call/assets/dfn3/ - sie werden erst beim Einschalten
# des Filters geladen, nicht beim Seitenaufruf.
# v0.4.0 = Rebrand sichtbar: zentrierte Icons, Markenfarbe #ed4f4c,
# About-Attribution unter der Client-Version (ThreadNet-Web#10).
# Die Linie beginnt bei v0.3.0, dem ersten kanonischen CI-Build aus
# apps/web/Dockerfile - er loeste die Derivat-Images ab, deren
# Entrypoint ohne Exec-Bit /config.json still brach (ThreadNet-Web#8).
tag: v0.6.0
ingress:
host: axion1337.chat
# Element Admin
elementAdmin:
enabled: true
ingress:
host: admin.axion1337.chat
# Well-Known auf der Apex-Domain (axion1337.chat/.well-known/matrix/*)
# Aktiviert notwendig für MatrixRTC-Discovery
wellKnownDelegation:
enabled: true
ingress:
className: "none" # Deaktiviert den Chart-Ingress, wir erstellen einen eigenen