jitsi-meet/infra/k3s/10-config.yaml
Dennis Paradzinski 8e76a96668
All checks were successful
deploy / deploy (push) Successful in 4s
feat: switch Prosody to JWT auth (HS256, Embertime as issuer)
Replaces the anonymous-OK setup with JWT-gated joins. Only participants
that Embertime invited get a valid token — random URL-guessers can no
longer enter rooms even if they discover the slug.

- ConfigMap: ENABLE_AUTH=1 + AUTH_TYPE=jwt + JWT_APP_ID=embertime
- 20-secrets.yaml.example: JWT_APP_SECRET placeholder with docs
- CLAUDE.md: documents the new auth model + rotation flow

Pipeline rolls config out; the secret itself stays out-of-band — admin
copies it from Embertime UI (Settings → Meeting-Server) or queries the
embertime DB directly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:19:00 +02:00

54 lines
1.9 KiB
YAML

# Non-sensitive env shared across all jitsi components. Sensitive values
# (XMPP component passwords) live in the 20-secrets.yaml that is NOT
# committed to git — see scripts/generate-secrets.sh.
apiVersion: v1
kind: ConfigMap
metadata:
name: jitsi-config
namespace: jitsi
data:
# === Public-facing config ===
PUBLIC_URL: "https://meet.it.financeflow.de"
TZ: "Europe/Berlin"
# === XMPP topology (internal hostnames — do not change without
# updating all 4 components in lockstep) ===
XMPP_DOMAIN: "meet.jitsi"
XMPP_AUTH_DOMAIN: "auth.meet.jitsi"
XMPP_INTERNAL_MUC_DOMAIN: "internal-muc.meet.jitsi"
XMPP_MUC_DOMAIN: "muc.meet.jitsi"
XMPP_GUEST_DOMAIN: "guest.meet.jitsi"
XMPP_RECORDER_DOMAIN: "recorder.meet.jitsi"
XMPP_SERVER: "prosody.jitsi.svc.cluster.local"
XMPP_BOSH_URL_BASE: "http://prosody.jitsi.svc.cluster.local:5280"
# === JWT-based auth — Prosody validates HS256 tokens signed by
# Embertime. Only invited participants get a valid token (with
# context.user populated, optional moderator flag). The shared HMAC
# secret lives in the Kubernetes Secret as JWT_APP_SECRET. Guests are
# disabled — a missing/invalid token means no entry. ===
ENABLE_AUTH: "1"
AUTH_TYPE: "jwt"
ENABLE_GUESTS: "0"
JWT_APP_ID: "embertime"
JWT_ACCEPTED_ISSUERS: "embertime"
JWT_ACCEPTED_AUDIENCES: "embertime"
TOKEN_AUTH_URL: ""
# === TLS handled by ingress cert-manager, not by the jitsi/web container ===
ENABLE_LETSENCRYPT: "0"
ENABLE_HTTP_REDIRECT: "0"
DISABLE_HTTPS: "1"
# === Videobridge brewery (where jicofo finds JVBs over XMPP) ===
JVB_BREWERY_MUC: "jvbbrewery"
# === STUN — default Jitsi-hosted STUN servers; ok for getting started ===
JVB_STUN_SERVERS: "meet-jit-si-turnrelay.jitsi.net:443"
# === Minor UX tweaks ===
ENABLE_PREJOIN_PAGE: "1"
ENABLE_WELCOME_PAGE: "1"
ENABLE_TRANSCRIPTIONS: "0"
ENABLE_RECORDING: "0"