Runbook — coturn (STUN/TURN) en el VPS
ICE propio (FOSS) vía coturn. Los iceServers salen de presets-sdk/env (resolveIceServers). Estado de verificación en VPS: estado del swarm.
Variables
bash
# STUN (UDP 3478 típico)
ZEUS_WEBRTC_STUN=stun:coturn.tu-dominio:3478
# TURN (relay) — opcional pero recomendado tras NAT agresivo
ZEUS_WEBRTC_TURN_URL=turn:coturn.tu-dominio:3478
ZEUS_WEBRTC_TURN_USER=zeus
ZEUS_WEBRTC_TURN_PASS=********
# Solo laboratorio / diagnóstico (fuera de prod):
# ZEUS_WEBRTC_ALLOW_GOOGLE_STUN=1Instalación típica (Debian/Ubuntu)
bash
sudo apt update
sudo apt install coturn
sudo systemctl enable coturnEditar /etc/turnserver.conf (mínimo ilustrativo):
listening-port=3478
fingerprint
lt-cred-mech
user=zeus:CHANGE_ME
realm=tu-dominio
# listening-ip / external-ip según la NIC pública del VPS
# no-cli # endurecer en prod
# no-multicast-peersAbrir firewall UDP/TCP 3478 (y el rango relay si se configura min-port/max-port). Reiniciar:
bash
sudo systemctl restart coturn
sudo systemctl status coturnComprobar
Desde una máquina cliente:
bash
# Si tienes turnutils (paquete coturn-utils / coturn):
turnutils_stunclient coturn.tu-dominioEn Zeus: arrancar el mesh con las ZEUS_WEBRTC_* apuntando al coturn y correr npm run e2e:webrtc-signaling (ese e2e usa iceServers vacíos a propósito; para validar coturn, setear STUN en el entorno de prueba y repetir un peer manual).
Alternativa
eturnal es TURN FOSS compatible; misma idea: URL en ZEUS_WEBRTC_* apuntando al servicio propio.