Files
sbbb/base/media/livekit-values.yaml
Sienna Meridian Satterwhite 632099893a feat(media): deploy Element Call fork + optimize LiveKit quality
- Deploy self-hosted Element Call at call.sunbeam.pt with SSO login
- LiveKit: VP9 > AV1 > H.264 codec preferences, Opus stereo
- LiveKit: congestion_control.allow_pause=false, larger NACK buffers
- LiveKit: resources bumped to 2Gi/4CPU for VP9 SVC
- Proxy: add call.* route, TLS cert SAN for call.sunbeam.pt
2026-03-26 09:38:53 +00:00

93 lines
2.9 KiB
YAML

# Base LiveKit Helm values (chart: livekit/livekit-server).
# DOMAIN_SUFFIX is replaced by overlay patches.
# API keys/secrets come from the livekit-keys Secret (loaded via extraEnv or config file).
# Reference: https://github.com/livekit/livekit-helm/blob/master/server-sample.yaml
livekit:
port: 7880
log_level: info
prometheus_port: 6789
# ── Codec preferences (order matters — first match wins) ────────────
room:
enabled_codecs:
- mime: audio/opus
- mime: audio/red
# VP9: ~2x quality-per-bit over H.264, built-in SVC.
- mime: video/vp9
# AV1: best compression, limited HW decode support still.
- mime: video/av1
# H.264: broadest HW accel, fallback for constrained clients.
- mime: video/h264
# VP8: widest compatibility baseline (Element Call default).
- mime: video/vp8
# Receiver-side jitter buffer. Tight values for a small team.
playout_delay:
enabled: true
min: 100
max: 500
sync_streams: true
empty_timeout: 300
departure_timeout: 20
# ── RTC / transport ─────────────────────────────────────────────────
rtc:
port_range_start: 49152
port_range_end: 49252
tcp_port: 7881
use_external_ip: true
allow_tcp_fallback: true
# Request keyframes faster after quality drops.
pli_throttle:
low_quality: 300ms
mid_quality: 500ms
high_quality: 500ms
# Larger NACK retransmission buffers for loss recovery.
packet_buffer_size_video: 1000
packet_buffer_size_audio: 500
# Never pause video tracks due to congestion — we have the bandwidth.
congestion_control:
enabled: true
allow_pause: false
# ── TURN ────────────────────────────────────────────────────────────
turn:
enabled: true
domain: meet.DOMAIN_SUFFIX
tls_port: 5349
udp_port: 3478
external_tls: true
relay_range_start: 13333
relay_range_end: 23333
redis:
address: valkey.data.svc.cluster.local:6379
key_file: keys.yaml
storeKeysInSecret:
enabled: true
existingSecret: livekit-api-credentials
# ServiceMonitor created as standalone resource (livekit-servicemonitor.yaml) —
# chart template requires livekit.prometheus_port which conflicts with hostNetwork.
deployment:
hostNetwork: true
resources:
limits:
memory: 2048Mi
cpu: 4000m
requests:
memory: 512Mi
cpu: 500m
# Recreate strategy: hostPorts (TURN UDP relay range) block RollingUpdate —
# the new pod cannot schedule while the old one still holds the host ports.
deploymentStrategy:
type: Recreate