Cómo montar tu propio servidor de código abierto para videollamadas webRTC con Jitsi Meet y Docker Compose

Cómo montar tu propio servidor de videollamadas Jitsi Meet con Docker Compose

Nivel: Intermedio | Utilidad: Videoconferencias seguras y 100% bajo tu control

¿Por qué montar Jitsi Meet en tu VPS con Docker Compose?

¡Di adiós a Zoom y Teams! Con Jitsi Meet puedes tener tu propio servicio de videollamadas en alta definición, totalmente open source y privado. Es ideal para trabajo en remoto, clases online o reuniones familiares… ¡sin depender de servicios externos ni ceder tus datos!

Además, desplegarlo con Docker Compose facilita muchísimo la gestión: cada componente (videobridge, web, prosody…) en su propio contenedor, todo listo para actualizar o migrar de servidor sin complicaciones.

Despliegue rápido: docker-compose.yml completo

Copia este archivo docker-compose.yml en tu servidor. Por simplicidad, el despliegue es para uso privado en una red segura (sin cifrado TLS externo, ideal para pruebas o detrás de un proxy con HTTPS).


version: '3.8'

services:
  web:
    image: jitsi/web:stable
    ports:
      - "8000:80"
      - "8443:443"
    volumes:
      - ${CONFIG}/web:/config
    environment:
      - ENABLE_AUTH=1
      - ENABLE_GUESTS=1
      - ENABLE_RECORDING=0
      - ENABLE_TRANSCRIPTIONS=0
      - JICOFO_AUTH_PASSWORD=supersecret
      - JVB_AUTH_PASSWORD=supersecret
      - JIGASI_XMPP_PASSWORD=supersecret
      - XMPP_DOMAIN=meet.example.com
      - XMPP_SERVER=xmpp
      - TZ=Europe/Madrid
    depends_on:
      - prosody
      - jicofo

  prosody:
    image: jitsi/prosody:stable
    expose:
      - "5222"
      - "5347"
      - "5280"
    volumes:
      - ${CONFIG}/prosody:/config
    environment:
      - XMPP_DOMAIN=meet.example.com
      - AUTH_TYPE=internal
      - XMPP_AUTH_DOMAIN=auth.meet.example.com
      - XMPP_GUEST_DOMAIN=guest.meet.example.com
      - XMPP_MUC_DOMAIN=muc.meet.example.com
      - XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.example.com
      - XMPP_RECORDER_DOMAIN=recorder.meet.example.com
      - JICOFO_COMPONENT_SECRET=supersecret
      - JVB_AUTH_PASSWORD=supersecret
      - JICOFO_AUTH_PASSWORD=supersecret
      - XMPP_MODULES=xmpp_server,xmpp_auth,xmpp_muc,xmpp_internal_muc,xmpp_recorder
      - TZ=Europe/Madrid

  jicofo:
    image: jitsi/jicofo:stable
    depends_on:
      - prosody
    volumes:
      - ${CONFIG}/jicofo:/config
    environment:
      - XMPP_DOMAIN=meet.example.com
      - XMPP_AUTH_DOMAIN=auth.meet.example.com
      - XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.example.com
      - JICOFO_COMPONENT_SECRET=supersecret
      - JICOFO_AUTH_PASSWORD=supersecret
      - TZ=Europe/Madrid

  jvb:
    image: jitsi/jvb:stable
    ports:
      - "10000:10000/udp"
    volumes:
      - ${CONFIG}/jvb:/config
    environment:
      - DOCKER_HOST_ADDRESS=ip_del_servidor
      - XMPP_AUTH_DOMAIN=auth.meet.example.com
      - XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.example.com
      - XMPP_SERVER=prosody
      - JVB_AUTH_PASSWORD=supersecret
      - TZ=Europe/Madrid
    depends_on:
      - prosody
    

Notas rápidas:

  • Cambia ip_del_servidor por la IP pública de tu servidor.
  • Puedes/crear un .env para definir CONFIG=/ruta/absoluta/del/host/config-jitsi
  • Para exponerlo por Internet de forma segura: ponlo detrás de un proxy inverso con Let’s Encrypt (por ejemplo Traefik o Nginx Proxy Manager).

¿Qué incluye este stack de Jitsi Meet?

  • Web: Interfaz HTML5 para salas de reuniones, chat y control de dispositivos.
  • Prosody: Servidor XMPP que actúa como backbone para mensajes y autentificación.
  • Jicofo: Component Organizer, controla la creación/salida de salas y usuarios.
  • JVB (VideoBridge): Procesa las conferencias WebRTC y enruta las videollamadas en tiempo real.

El despliegue así es escalable, permite incorporar grabaciones, autenticación con LDAP, integración SIP (Jigasi)… ¡pero eso ya para un futuro artículo avanzado!

Primeros pasos tras el despliegue

  1. Lanza el stack:

    docker compose up -d
  2. Accede a http://TU_IP:8000 desde tu navegador.
  3. ¡Crea tu sala, comparte el enlace y empieza a usarla!

Recuerda, ¡las credenciales y contraseñas deben ser fuertes y únicas! Y siempre protege el acceso externo con HTTPS cuando abras el servidor al mundo.

Consejos extra y troubleshooting

  • Firewall: Abre los puertos 8000 (HTTP), 8443 (HTTPS si lo usas), y 10000/UDP en tu VPS.
  • Problemas de video/audio: Si conectas desde detrás de CGNAT, considera activar soporte TURN externo para conexiones remotas.
  • Personalización: El stack soporta cambiar logo, idioma o ajustes en CONFIG/web/interface_config.js.
  • Logs: Usa docker compose logs -f para ver errores en tiempo real.

¿Dudas o sugerencias? ¡Coméntalo y en próximos artículos podemos añadir grabación automática o integración con sistemas de aulas online!

¡Nos vemos en la próxima videollamada autoalojada!

Avatar

Por Mid