LiveKit's startup warning about UDP receive buffer being too small
(default 212992 bytes vs suggested 5000000) is easy to overlook, but
under load — especially when many clients are forced through the TURN
relay — it causes dtls timeouts on publisher transports and asymmetric
black-tile / no-media symptoms. The fix has to be on the host because
net.core.rmem_max / wmem_max are read when LiveKit opens its UDP sockets
and can't be raised from inside the container.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
docker-compose does not recursively expand nested `${...}` in `:-`
defaults, so `TURN_DOMAIN=${TURN_DOMAIN:-${LIVEKIT_DOMAIN}}` leaked the
literal string `${LIVEKIT_DOMAIN}` into the container, breaking TURN
and WebRTC connectivity. Set the default in .env.sample where abra
shell-expands it before docker-compose sees it.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>