TURN fix for remote/mobile connections (Tailscale users) #84
cmac86
announced in
00-Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
What changed
PR #83 fixes TURN relay for remote WebRTC connections. If you use
HTTPS_DOMAIN(Tailscale mode), this affects you.Three issues were fixed:
external_tlswas misconfigured — LiveKit's TURN server expected an external TLS terminator that didn't exist. TURN connections silently failed at the TLS handshake. This means TURN relay has been broken since it was introduced.TURN TLS moved from port 5349 to port 443 — iOS WebKit's WebRTC engine doesn't connect to TURN on non-standard ports. Port 443 is what LiveKit recommends for maximum client compatibility.
Added TURN/UDP on port 3478 as a fallback path.
Who's affected
Only users with
HTTPS_DOMAINset in.env(Tailscale or custom domain setups). LAN-only users are not affected — LAN connections don't use TURN.This went unnoticed because desktop browsers on macOS/Linux connect fine without TURN. Tailscale creates a network interface that Chrome/Firefox discover as a WebRTC candidate, allowing direct connection through the WireGuard tunnel. Mobile devices (iOS, Android) don't expose the Tailscale interface to the WebRTC stack, so they depend on TURN relay — which wasn't working.
How to update
Requirement: Port 443 must be available. If another service is using port 443, set
TURN_TLS_PORTin your.envto a different port — but note that non-443 ports won't work for iOS mobile clients.Symptoms this fixes
SignalJoinResponseEventtimeout in browser consoleremoving participant without connectionwith norelaycandidatesBeta Was this translation helpful? Give feedback.
All reactions