Despliegue de nodo Jitsi Videobridge con Docker
Este documento detalla los pasos para agregar un nuevo Videobridge, de manera de escalar horizontalmente nuestro despligue de Jitsi Meet. Recordemos el esquema propuesto:
Con estos pasos se podrán agregar tantos Videobridges como se desee, sólo siendo necesario cambiar el identificador con el que cada instancia se registra en el nodo-maestro.
Requerimientos
- Linux soportado por Docker. Recomendado Debian Stretch o Ubuntu (ver lista de soportados en: https://docs.docker.com).
- Docker instalado según (https://docs.docker.com/engine/install/debian/) - elegir la distro correcta -.
- Docker Compose instalado según (https://docs.docker.com/compose/install/) (no usar versiones provistas por el S.O)
- Comando git para hacer el pull del proyecto.
Atención: si se utiliza Debian Buster, tener en cuenta que usa nftables en lugar de iptables, por lo cual hay que configurar iptables-legacy con el comando “update-alternatives –set iptables /usr/sbin/iptables-legacy”. Más información en: https://wiki.debian.org/nftables
En la red, el host elegido para hacer de bridge deberá tener una ip pública forwardeada con los siguientes puertos:
- 10000 udp
Además, el host deberá residir en la misma red que el nodo-maestro. Si bien se pueden hacer configuraciones más complejas, esta solución está limitada a eso.
Procedimiento
- Iniciar sesión como root
- Moverse aun directorio donde se descargar el paquete
- Ejecutar
git clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meet
- Copiar el archivo environment (.env) del nodo maestro (servidor principal jitsi) en el directorio creado anteriormente docker-jitsi-meet
- Crear las carpetas del host en donde se guardarán las configuraciones de los diferentes componentes para ser montadas por los contenedores docker. Ejecutando:
mkdir -p ~/.jitsi-meet-cfg/jvb
Continuar con estas instrucciones propias de nuestra solución
- Copiar al directorio docker-jitsi-meet el archivo docker-compose-bridge.rtf y renombrarlo a docker-compose.yml
- Arrancar la solución por primera vez para que genere los archivos de configuración a partir del entorno definido en “.env” (ver variables).
- Ejecutar
docker-compose up
y luego de que arranque todo (se verán algunos errores y excepciones) presionar ctrl+c para cortar la ejecución.
- Editar el archivo ~/.jitsi-meet-cfg/jvb/sip-communicator.properties y modificar:
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME= aquí poner la ip LAN del nodo maestro. org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME= aquí poner un nombre único entre todos los videobridges, por ej: "videobridge2".
- Replicar las líneas del archivo ~/.jitsi-meet-cfg/jvb/sip-communicator.properties del nodo-maestro
org.jitsi.videobridge.SINGLE_PORT_HARVESTER_PORT=10000 org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true org.jitsi.videobridge.TCP_HARVESTER_PORT=4443 org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
- Poner el password correcto en la línea:
org.jitsi.videobridge.xmpp.user.shard.PASSWORD= aquí copiar el valor del mismo archivo alojado en el nodo-maestro
- Iniciar el servicio en background con:
docker-compose up -d
si todo salió bien se verán líneas en el log como la siguiente:
jvb_1 | Apr 16, 2020 9:12:07 PM org.jitsi.utils.logging2.LoggerImpl log jvb_1 | INFO: Performed a successful health check in 25ms. Sticky failure: false
- Por último, ingresar a la url del servicio y comenzar a realizar conferencias. A medida que se van sumando conferencias, se podrá notar el tráfico en puerto 10000 de todos los videobridges disponibles.