Saltearse al contenido

Despliegue y Observabilidad

El backend de VoiceEngine está desarrollado en Node.js 20+ utilizando la biblioteca nativa en C++ mediasoup para gestionar flujos WebRTC de alta concurrencia y baja latencia.


Despliegue con Docker Compose

La forma recomendada de desplegar el servidor de voz en producción es mediante contenedor Docker:

version: '3.8'
services:
voice-server:
image: ghcr.io/cypherlink-studios/voiceengine-server:latest
container_name: voiceengine-sfu
restart: unless-stopped
network_mode: "host" # Recomendado para rendimiento WebRTC en Linux
environment:
NODE_ENV: production
HTTP_PORT: 3000
MEDIASOUP_MIN_PORT: 40000
MEDIASOUP_MAX_PORT: 49999
ANNOUNCED_IP: "203.0.113.10" # IP pública de tu servidor dedicado
PLUGIN_SECRET: "tu-clave-secreta-hmac"
JWT_SECRET: "tu-clave-jwt-secreta"
REDIS_URL: "redis://localhost:6379"
volumes:
- ./media:/app/media
- ./cache:/app/cache

Configuración de Proxy Inverso (Nginx)

El servidor web necesita redirigir tráfico HTTPS y WebSocket al puerto 3000:

server {
server_name voice.tudominio.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/voice.tudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/voice.tudominio.com/privkey.pem;
}

Métricas y Monitorización con Prometheus y Grafana

VoiceEngine expone un endpoint estándar de métricas en /metrics formateado para Prometheus:

Métricas Clave Expuestas

MétricaTipoDescripción
voiceengine_active_producersGaugeCantidad de pistas de micrófonos activas transmitiendo audio.
voiceengine_active_consumersGaugeCantidad de canales receptores activos en el servidor SFU.
voiceengine_webrtc_packet_lossCounterNúmero de paquetes de audio perdidos por degradación de red.
voiceengine_audio_jitter_secondsHistogramDispersión de latencia temporal entre paquetes de audio.
voiceengine_media_cache_bytesGaugeEspacio total ocupado en disco por archivos de audio en caché.

Configuración en prometheus.yml

scrape_configs:
- job_name: 'voiceengine'
scrape_interval: 5s
static_configs:
- targets: ['127.0.0.1:3000']

El repositorio incluye un panel prediseñado para Grafana en monitoring/grafana-dashboard.json que grafica el rendimiento en tiempo real, latencias y consumo de ancho de banda.