Selective Forwarding Unit for the Gryt voice & video platform.
High-performance Go media server built with Pion WebRTC.
Forwards audio, camera, and screen-share tracks with RTCP relay and VP9 preference.
docker pull ghcr.io/gryt-chat/sfu:latest
docker run -p 5005:5005 -p 443:443/udp -p 10000-10019:10000-10019/udp --env-file .env ghcr.io/gryt-chat/sfu:latestBrowse tags at ghcr.io/gryt-chat/sfu.
cp env.example .env
go run ./cmd/sfuStarts on http://localhost:5005.
See env.example for all options. Key variables:
| Variable | Default | Description |
|---|---|---|
PORT |
5005 |
HTTP/WebSocket port |
STUN_SERVERS |
stun:stun.l.google.com:19302 |
Comma-separated STUN servers |
ICE_UDP_MUX_PORT |
— | Enable ICE UDP mux on a single UDP port (e.g. 443) |
ICE_UDP_PORT_MIN |
— | Min UDP port for WebRTC media |
ICE_UDP_PORT_MAX |
— | Max UDP port for WebRTC media |
ICE_ADVERTISE_IP |
— | Advertised IP for NAT traversal |
Full docs at docs.gryt.chat/docs/sfu:
- SFU Overview — architecture, track management, connection states
- Voice Debugging — troubleshooting audio issues
- Deployment — Docker Compose, Kubernetes
Please report bugs and request features in the main Gryt repository.