jitsi-meet/infra/k3s/20-secrets.yaml.example
Dennis Paradzinski cebcf4f567
All checks were successful
deploy / deploy (push) Successful in 42s
feat: coturn TURN-relay + bandwidth defaults for mobile
Adds a coturn pod that gives clients a relay path when direct UDP to
JVB:10001 doesn't make it through carrier NAT (the typical mobile-data
failure mode the user hit). Same domain as the rest — meet.it.financeflow.de
— because TURN ports (3478/5349) don't collide with the Ingress on 443.

- 80-coturn.yaml: hostNetwork Deployment binding STUN+TURN on 3478
  (UDP/TCP) and TURNS on 5349 (UDP/TCP), inline-templates turnserver.conf
  with PUBLIC_IP + TURN_CREDENTIALS_SECRET. TLS cert mounted from the
  same jitsi-tls Secret cert-manager already manages for the web Ingress.
  CronJob restarts coturn weekly so cert renewals propagate.
- 10-config.yaml: STUN now points at our own coturn; TURN_HOST/TURNS_HOST
  set so Prosody mod_external_services hands TURN endpoints to clients
  during XMPP session init. RESOLUTION capped at 480p,
  START_VIDEO_MUTED=5 keeps large rooms light on bandwidth.
- generate-secrets.sh + 20-secrets.yaml.example: TURN_CREDENTIALS_SECRET
  added so Prosody and coturn share the HMAC key (already pre-synced
  out-of-band into the cluster).
- deploy.yml: sed __PUBLIC_IP__ in coturn manifest, rollout-status coturn.

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

32 lines
1.4 KiB
Plaintext

# TEMPLATE — do NOT commit a filled-in copy. Generate the real secret
# via scripts/generate-secrets.sh and apply once out-of-band:
#
# ./scripts/generate-secrets.sh > infra/k3s/20-secrets.yaml
# kubectl apply -f infra/k3s/20-secrets.yaml
#
# Component passwords are only used cluster-internally between
# prosody/jicofo/jvb — clients (browsers) never see them.
apiVersion: v1
kind: Secret
metadata:
name: jitsi-secrets
namespace: jitsi
type: Opaque
stringData:
# Inter-component passwords — generate fresh via generate-secrets.sh
JICOFO_COMPONENT_SECRET: "REPLACE_WITH_32_RANDOM_CHARS"
JICOFO_AUTH_USER: "focus"
JICOFO_AUTH_PASSWORD: "REPLACE_WITH_32_RANDOM_CHARS"
JVB_AUTH_USER: "jvb"
JVB_AUTH_PASSWORD: "REPLACE_WITH_32_RANDOM_CHARS"
# HMAC key shared with Embertime — must match app_settings.meeting_jwt_secret
# in Embertime's DB. Get it from the Embertime UI (Settings → Meeting-Server
# → "Secret rotieren") OR query the DB directly with:
# kubectl -n embertime exec -it deploy/embertime-postgres -- \
# psql -U embertime -t -c "select meeting_jwt_secret from app_settings"
JWT_APP_SECRET: "REPLACE_WITH_VALUE_FROM_EMBERTIME"
# HMAC secret shared between coturn and Prosody. Prosody mints
# time-limited TURN credentials; coturn validates with the same key.
# Generate fresh via generate-secrets.sh.
TURN_CREDENTIALS_SECRET: "REPLACE_WITH_32_RANDOM_CHARS"