Volver al inicio

Servicio de video P2P en WebRTC: desarrollo desde cero en 9 meses

Proyecto Vizavi — Servicio de video P2P desarrollado desde cero en 9 meses. Arquitectura basada en WebRTC con su propio servidor STUN/TURN y servidor de señalización en Node.js. La solución se ejecuta en un VPS modesto sin usar bases de datos, almacenando datos en archivos JSON.

¿Cómo ensamblar un servicio de video en 9 meses en un VPS con 1 núcleo
Advertisement 728x90

## Construyendo un servicio de vídeo P2P desde cero: 9 meses de desarrollo en un VPS de 1 núcleo

Durante nueve meses de tiempo libre, un electricista de una zona remota creó un servicio de vídeo P2P completamente funcional llamado "Vizavi": sin necesidad de registro ni instalación de apps. Construido desde cero en un VPS modesto (1 núcleo, 512 MB de RAM), utiliza WebRTC para conexiones directas peer-to-peer y sortea los bloqueos. El resultado: una solución basada en navegador con un dominio ruso que sigue funcionando incluso bajo restricciones de red locales.

De la idea a la realidad: Cómo nació "Vizavi"

El proyecto comenzó cuando su creador se topó con bloqueos en servicios de vídeo convencionales y tuvo que buscar alternativas. Mientras experimentaba con una red neuronal, surgió la idea: "¿Se puede construir un llamador de vídeo?". Sumergiéndose en los conceptos básicos de WebRTC, servidores STUN/TURN e ICE candidates, el autor se adentró profundamente en la tecnología. Las primeras llamadas de prueba exitosas impulsaron el desarrollo posterior. Una característica destacada: no se necesitan registros ni apps; las conexiones ocurren directamente en el navegador usando un código numérico corto de sala.

La arquitectura sigue un modelo de "salas": los usuarios ingresan un número de sala en https://vizavi.rf/, y el sistema los conecta automáticamente una vez que hay dos participantes. Compartir el código de la sala depende de los usuarios: a través de apps de mensajería, una llamada telefónica o incluso en persona. Esto mantiene las barreras bajas: solo haz clic en el enlace y concede acceso a cámara/micrófono.

Google AdInline article slot

Pila tecnológica: El minimalismo como filosofía

El servicio se ejecuta en un VPS alquilado en un centro de datos de Moscú con especificaciones mínimas:

  • 1 núcleo de CPU
  • 512 MB de RAM
  • 10 GB de disco SSD (3,3 GB usados)
  • SO Debian 11

La infraestructura incluye:

  • Coturn — servidor STUN/TURN propio para traversía de NAT
  • Node.js (servidor de señalización) gestionado por PM2
  • Nginx como proxy inverso
  • SSL de Let’s Encrypt con renovación automática
  • UFW y Fail2Ban para seguridad básica
  • Lógica de cliente y servidor en JavaScript vanilla
  • Express para archivos estáticos y REST API
  • Socket.io para señalización WebRTC en tiempo real

El almacenamiento de datos usa archivos JSON en lugar de bases de datos tradicionales. Esto se ajusta a los recursos limitados del servidor y simplifica el despliegue. Un panel de administración personalizado, construido desde cero, muestra estadísticas de conexiones en vivo y monitorea la actividad en tiempo real.

Google AdInline article slot

Tipos de salas: De básica a VIP

El sistema soporta tres tipos de salas:

  • Salas estándar — configuración básica para dos usuarios. Ingresa el mismo número y se conectan automáticamente. Sin grabación de llamadas, registro de IP ni almacenamiento de mensajes.
  • Salas VIP — añade jerarquía: el propietario controla el chat, graba reuniones y puede expulsar invitados. Los invitados pueden compartir pantalla y enviar archivos. Incluye una cola para múltiples conexiones y un tablero de mensajes en la entrada.
  • Salas de observación (en desarrollo) — como un "monitor de bebé": un dispositivo actúa como cámara, el otro como visor. Planes para reutilizar smartphones antiguos como flujos de vídeo.

Una fortaleza clave: sin pasos extra antes de conectar. A diferencia de competidores que exigen registro o nombres de usuario, "Vizavi" conecta a los usuarios instantáneamente tras ingresar el código de sala.

Seguridad y privacidad: Estado actual

El cifrado de extremo a extremo viene incorporado con WebRTC, asegurando los flujos de audio y vídeo. Dicho esto, algunas áreas necesitan trabajo:

Google AdInline article slot
  • El historial de chat se almacena en texto plano en el localStorage del navegador
  • Los mensajes de entrada VIP se guardan en archivos JSON sin cifrar
  • Sin autenticación para acceso a salas

El autor señala que no está diseñado para datos sensibles, pero sabe que la protección necesita reforzarse. En un VPS con recursos limitados (512 MB de RAM), añadir cifrado completo implica equilibrar seguridad y rendimiento.

Lecciones clave para desarrolladores

  • Minimalismo arquitectónico — JSON sobre bases de datos y eliminar dependencias innecesarias son cruciales para ejecutar en VPS de gama baja.
  • Flexibilidad del servidor de señalización — Socket.io maneja señales WebRTC sin problemas, incluso bajo tráfico pesado de bots y escáneres.
  • Experiencia de usuario — Saltarse pasos como registro o entrada de nombre impulsa el engagement de inmediato.
  • Seguridad como proceso continuo — Básicos como UFW y Fail2Ban son imprescindibles para cualquier proyecto, pero audita regularmente.

El sistema lidia con sondas constantes de escáneres y bots, por lo que los filtra: clientes no navegador reciben una página HTML simplificada sin JavaScript. Esto reduce la carga del servidor y ayuda con SEO.

El proyecto demuestra que tecnologías como WebRTC están al alcance de desarrolladores principiantes. El éxito vino de construcciones por fases, enfocándose en características principales y aprovechando herramientas listas (Coturn, Let’s Encrypt). Próximos pasos: cifrado de mensajes y escalado para más conexiones simultáneas.

— Editorial Team

Advertisement 728x90

Leer después