How to use
Adjust your WebRTC configuration to include this server:
{
"iceServers": [{
"urls": [
"turn:turn.evan-brass.net",
"turn:turn.evan-brass.net?transport=tcp",
"turns:turn.evan-brass.net:443?transport=tcp"
],
"username": "user",
"credential": "password"
}]
}
Apps
-
rainboots — a retro chat client. Server side:
dtls-proxy,swbrd-ext-puddle.
Test pages
-
vpn.html —
Conn.to_deter()into the SCTP/DataChannel VPN. Server side:dtls-proxy,swbrd. -
p2p.html — two
Conns connecting to each other through the relay. Server side:turnserver. -
audio.html — the fixed opus / telephone-event
m-section with a microphone attached. Server side:
dtls-proxy. -
rainboots.html — two identities join a
Puddle, claim a nick, and build a relay-only DM out of candidates it
relayed. Server side:
dtls-proxy,swbrd-ext-puddle. - refuse.html — declining a connection by ending your candidates without sending any. No server needed.
-
relay.html — stock
RTCPeerConnectionwith munged ICE credentials. Server side:ice-dissolve. Legacy: Chrome is removing credential munging, so this one is expected to stop working.
Relay stats
Aggregate byte/packet counters straight from nftables, re-rendered every minute — no per-client data, nothing leaves the box. Left: what's actually being relayed, classified per RFC 7983's STUN/DTLS/SRTP demux. Right: which listener TURN clients arrived on.
Service status
One RTCPeerConnection per URL above, so a browser that hides
url on icecandidateerror still shows which one failed.