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 definirCONFIG
=/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
-
Lanza el stack:
docker compose up -d
- Accede a http://TU_IP:8000 desde tu navegador.
- ¡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.