docs: preserve coturn/TURN setup notes (rescued from the removed prod-fix worktree)
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# coturn + app config for TURN (remote.bizgaze.com)
|
||||
|
||||
Status: self-hosted **coturn** is working on **UDP 3478** (verified — a `relay`
|
||||
candidate was returned by the Trickle ICE test). This doc adds **TCP 3478** and
|
||||
optional **TLS 5349** for wider firewall coverage, and points the BizGaze Connect
|
||||
app at coturn.
|
||||
|
||||
TURN makes the WebRTC *connection* work across cellular / strict NATs. It does NOT
|
||||
let a phone share its screen in a browser — that is a separate platform limitation.
|
||||
|
||||
---
|
||||
|
||||
## 1. coturn — turnserver.conf
|
||||
|
||||
Verify the first block (already working) and ADD the TLS block.
|
||||
|
||||
```conf
|
||||
# --- core (already working on UDP 3478) ---
|
||||
listening-port=3478 # serves BOTH UDP and TCP on 3478
|
||||
fingerprint
|
||||
lt-cred-mech
|
||||
realm=remote.bizgaze.com
|
||||
external-ip=118.95.33.89 # coturn server's PUBLIC ip (from the relay result)
|
||||
user=USERNAME:PASSWORD # the TURN username:password
|
||||
|
||||
# --- ADD: TLS on 5349 (turns:) ---
|
||||
tls-listening-port=5349
|
||||
cert=/etc/letsencrypt/live/remote.bizgaze.com/fullchain.pem
|
||||
pkey=/etc/letsencrypt/live/remote.bizgaze.com/privkey.pem
|
||||
|
||||
# --- relay media port range (must be open in the firewall) ---
|
||||
min-port=49152
|
||||
max-port=65535
|
||||
```
|
||||
|
||||
Notes:
|
||||
- TLS needs a cert for `remote.bizgaze.com`. Nginx Proxy Manager already issues a
|
||||
Let's Encrypt cert for that host — point coturn at those `fullchain.pem` /
|
||||
`privkey.pem` (copy or mount them so coturn can read them).
|
||||
- TCP 3478 alone already widens coverage a lot; TLS/5349 can be added later.
|
||||
|
||||
Restart coturn after editing:
|
||||
```
|
||||
systemctl restart coturn # or: restart the coturn container
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Firewall / cloud security group — open these ports
|
||||
- UDP 3478 (already open — relay works)
|
||||
- TCP 3478 <- add
|
||||
- TCP 5349 <- add (only if doing TLS)
|
||||
- UDP 49152-65535 (relay media range; should already be open)
|
||||
|
||||
---
|
||||
|
||||
## 3. App .env (next to docker-compose.yml)
|
||||
|
||||
Point BizGaze Connect at coturn. Without TLS yet:
|
||||
```env
|
||||
TURN_URLS=turn:remote.bizgaze.com:3478,turn:remote.bizgaze.com:3478?transport=tcp
|
||||
TURN_USERNAME=your-coturn-username
|
||||
TURN_CREDENTIAL=your-coturn-password
|
||||
```
|
||||
|
||||
After TLS (5349) is confirmed working, use:
|
||||
```env
|
||||
TURN_URLS=turn:remote.bizgaze.com:3478,turn:remote.bizgaze.com:3478?transport=tcp,turns:remote.bizgaze.com:5349?transport=tcp
|
||||
TURN_USERNAME=your-coturn-username
|
||||
TURN_CREDENTIAL=your-coturn-password
|
||||
```
|
||||
|
||||
Reload the app:
|
||||
```
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Verify
|
||||
1. Open `https://remote.bizgaze.com/api/ice` — should show the
|
||||
`remote.bizgaze.com` TURN entry with the username.
|
||||
(The app only *sends* TURN to mobile clients by design, but /api/ice still lists it.)
|
||||
2. Trickle ICE test (https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/):
|
||||
- Add `turn:remote.bizgaze.com:3478?transport=tcp` + username + credential → expect a `relay` row.
|
||||
- If TLS is set up, also test `turns:remote.bizgaze.com:5349?transport=tcp`.
|
||||
A `relay` candidate = success. No relay row = TURN not reachable on that transport.
|
||||
Reference in New Issue
Block a user