Un único servidor de Jitsi Meet puede funcionar muy bien en videoconferencias pequeñas, pero cuando necesitamos realizar una conferencia con más de 30 o 40 participantes es necesario añadir nodos adicionales para no saturar la CPU/RAM del servidor. En esta ocasión, te detallamos los pasos para añadir más servidores Videobridge para atender las videoconferencias y así repartir la carga entre varios servidores para poder albergar conferencias con mas usuarios sin que la experiencia se vea afectada.
Requisitos para la instalación del entorno
- Dos o más servidores con Ubuntu 20.04, Ubuntu 18.04 o Debian 10. El primer servidor tendrá una instalación completa de Jitsi y el resto de servidores únicamente Jitsi Videobridge.
- Abrir los puertos 80, 443, 10000 a 20000, 5222, 5347 en el firewall del panel de cliente. En el siguiente enlace explicamos cómo crear una regla de firewall.
-
Si quieres ceder a Jitsi mediante nombre de dominio tendrás que crear dos registros DNS para el funcionamiento: "server.midominio.com A ip_pública" y "auth.server.midominio.com A ip_pública".
Instalación de Jitsi Meet Server
Conéctate al servidor principal por SSH y ejecuta los siguientes comandos para actualizar el servidor:
# apt update
# apt upgrade -y
Ahora tendrás que añadir el repositorio de Jitsi para la instalación:
# echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
# wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
# apt update
*En el caso de Debian es posible que se tenga que instalar las siguientes dependencias:
# apt install gnupg gnupg2 gnupg1
Ejecuta el siguiente comando para la instalación de Jitsi Meet:
# apt install jitsi-meet -y
Durante el proceso de instalación te preguntará por el nombre de dominio. En este caso establece el registro DNS creado al inicio con nombre server.midominio.com.
Selecciona la primera opción para posteriormente generar el certificado con Let's Encrypt.
Ahora ya tienes Jitsi preparado, pero si accedes te dará error debido a que el certificado SSL no existe.
Crear certificado SSL Let's Encrypt
Sigue en el nodo principal para crear el certificado SSL para que funcione el entorno web. Para ello ejecuta los siguientes comandos:
# apt install python3-certbot-nginx
# certbot --nginx --redirect -d server.midominio.com
Dependiendo de la versión del sistema operativo que hayas escogido es posible que los comandos no se adapten. En este caso puedes seguir el siguiente artículo Generar certificados Let's Encrypt con Certbot.
Ahora que ya tienes el certificado creado es el momento de acceder a través del navegador a la URL server.midominio.com y comprobar que la instalación por defecto sin los nodos extras funciona correctamente. Es importante verificar desde dos dispositivos distintos que las videollamadas funcionan correctamente en este punto.
Configurar el balanceo de carga
Aún en el nodo principal procede a editar el fichero "/etc/jitsi/videobridge/sip-communicator.properties" con el comando:
# vi /etc/jitsi/videobridge/sip-communicator.properties
Añade las siguientes dos líneas:
org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true
org.jitsi.videobridge.xmpp.user.shard.DISABLE_CERTIFICATE_VERIFICATION=true
Edita la siguiente variable para dejarla con valor jvb1 que identificará al nodo principal:
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=jvb1
El resultado del fichero debe ser similar al siguiente contenido verificando que el nombre de dominio sea correcto:
org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=localhost
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.server.midominio.com
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=0917Q9Nz
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.server.midominio.com
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=jvb1
org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true
org.jitsi.videobridge.xmpp.user.shard.DISABLE_CERTIFICATE_VERIFICATION=true
Añadir segundo nodo Jitsi Videobridge
Ahora que ya tienes el servidor principal instalado y configurado puedes proceder a añadir más nodos al cluster de Jitsi para atender más usuarios. Para ello primero actualiza el sistema operativo:
# apt update && apt upgrade -y
Añade el repositorio e instala Jitsi Videobridge:
# echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
# wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
# apt update
# apt install jitsi-videobridge2 -y
*En el caso de Debian es posible que se tenga que instalar las siguientes dependencias:
# apt install gnupg gnupg2 gnupg1
Durante el proceso de instalación te solicitará el hostname y de nuevo deberás indicar el hostname del servidor principal, que en este caso es server.midominio.com.
Una vez instalado Jitsi Videobridge edita el siguiente fichero:
# vi /etc/jitsi/videobridge/sip-communicator.properties
Para añadir las siguientes líneas:
org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true
org.jitsi.videobridge.xmpp.user.shard.DISABLE_CERTIFICATE_VERIFICATION=true
Busca en el mismo fichero la variable "org.jitsi.videobridge.xmpp.user.shard.HOSTNAME" y especifica el hostname del dominio principal "server.midominio.com". También, edita la variable "org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME" y establécela a "jvb2" que identificará al segundo nodo.
El resultado del fichero debe ser similar al siguiente:
org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=server.midominio.com
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.server.midominio.com
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=0917Q9Nz
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.server.midominio.com
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=jvb2
org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true
org.jitsi.videobridge.xmpp.user.shard.DISABLE_CERTIFICATE_VERIFICATION=true
Configurar las credenciales para conectar los servidores
Vuelve a conectar al servidor principal y ejecuta el siguiente comando:
# cat /etc/jitsi/videobridge/config |grep JVB_SECRET
JVB_SECRET=0917Q9Nz
Guarda el valor de "JVB_SECRET" que en este caso es "0917Q9Nz", el cual tendrás que copiar en los nodos adicionales de Jitsi Videobride.
Ahora conéctate de nuevo al nodo adicional de Jitsi Videobridge y edita el siguiente fichero:
# vi /etc/jitsi/videobridge/config
Edita la variable "JVB_SECRET" y establece la contraseña del nodo principal "0917Q9Nz".
También, tendrás que editar el siguiente fichero:
# vi /etc/jitsi/videobridge/sip-communicator.properties
Edita la variable "org.jitsi.videobridge.xmpp.user.shard.PASSWORD" y establece la contraseña del nodo principal "0917Q9Nz".
Reiniciar servicios
En el nodo principal ejecuta lo siguiente:
# service prosody reload
# service jicofo restart
# service jitsi-videobridge2 restart
# service nginx restart
En cada nodo adicional de Jitsi Videobridge ejecuta esto:
# service jitsi-videobridge2 restart
¿Dónde encontrar los logs?
En el nodo principal puedes revisar logs en los siguientes ficheros:
/var/log/jitsi/jicofo.log
/var/log/jitsi/jvb.log
/var/log/prosody/prosody.log
En los nodos adicionales los encontrarás en:
/var/log/jitsi/jvb.log
Recomendaciones
- Para no saturar el servidor principal es recomendable que el servicio "jitsi-videobridge2" esté siempre detenido y sean los nodos adiconales de Jitsi Videobridge que asuman la carga de trabajo.
- Para añadir otro nodo de Jitsi Videobridge deberás seguir los mismos pasos de "Añadir segundo nodo Jitsi Videobridge" pero cambiando "jvb2" por "jvb3" y así por cada nodo adicional.
Con estos pasos has podido ver cómo añadir nodos a Jitsi Meet Server para atender las videollamadas y así poder albergar más usuarios que en un único servidor sería imposible.