Appearance
Nightlink
Squad voice on a private link. No accounts. Production: nightlink.finluth.com. TURN is turn.finluth.com.
Run locally
bash
npm install
npm startOpen http://localhost:3001 in two browser tabs, enter a callsign, and click Join channel.
Production
The voice app and coturn run in Docker from /opt/nightlink. Deploy the latest main with:
bash
cd /opt/nightlink && git pull && sh deploy/deploy.shturn.finluth.com is a DNS-only A record to the server. Cloudflare must not proxy it.
TURN
Direct peer-to-peer audio often fails across different networks. Open UDP and TCP for TURN:
| Port | Protocol | Purpose |
|---|---|---|
| 3478 | UDP + TCP | TURN |
| 5349 | TCP | TURN over TLS |
| 49152–49252 | UDP | Media relay |
Without TURN, the app still works on the same network using public STUN. Cross-network calls may fail.
Roster
The yellow bar means someone is speaking. It is not a connection indicator.
- live — you are hearing them
- muted — their mic is off
- connecting or disconnected — the audio path is still negotiating
- no route — the path failed. Click it to try again
Works best with 2–6 people.