El autor seleccionó el Open Internet/Free Speech Fund para recibir una donación como parte del programa Write for DOnations .
Introducción
Jitsi Meet es una aplicación de videoconferencia de código abierto basada en WebRTC . Un servidor Jitsi Meet ofrece salas de videoconferencia para varias personas a las que se puede acceder con solo un navegador y que ofrecen una funcionalidad comparable a una llamada en conferencia de Zoom o Skype. La ventaja de una conferencia Jitsi es que todos los datos pasan únicamente a través de su servidor. El cifrado TLS de extremo a extremo garantiza que nadie pueda espiar la llamada. Con Jitsi, puede asegurarse de que su información privada se mantenga así.
En este tutorial, instalará y configurará un servidor Jitsi Meet en Ubuntu 22.04. La configuración predeterminada de Jitsi permite que cualquier persona que pueda explorar el servidor cree una nueva sala de conferencias, lo que no es ideal para un servidor disponible públicamente en Internet. También configurará Jitsi Meet para que solo los usuarios registrados puedan crear nuevas salas de conferencias. Después de crear la sala de conferencias, cualquier persona puede unirse a ella si tiene la dirección única y la contraseña opcional.
Prerrequisitos
Antes de comenzar esta guía, necesitará lo siguiente:
- Un servidor Ubuntu 22.04 con un usuario no root habilitado con sudo y un firewall, que puede configurar siguiendo la Configuración inicial del servidor con Ubuntu 22.04 . El tamaño del servidor que necesita dependerá del ancho de banda disponible y la cantidad de participantes que espera en las conferencias. La siguiente tabla le dará una idea de lo que se requiere.
- Un nombre de dominio configurado para apuntar a su servidor. Utilice la Guía de inicio rápido de DNS para apuntar dominios a servidores de DigitalOcean. Esta guía utiliza el nombre de dominio de ejemplo
jitsi.your_domain.
Al elegir un servidor para ejecutar su instancia de Jitsi Meet, debe tener en cuenta los recursos del sistema para alojar salas de conferencias. La siguiente información comparativa se recopiló de una máquina virtual de un solo núcleo con configuraciones de video de alta calidad:
| UPC | Ancho de banda del servidor | |
|---|---|---|
| Dos participantes | 5% | 30 Kbps de subida, 100 Kbps de bajada |
| Tres participantes | 15% | 5 Mbps de subida, 3 Mbps de bajada |
El aumento en el uso de recursos entre dos y tres participantes se debe a que Jitsi enrutará los datos de las llamadas directamente entre los clientes cuando haya dos. Los datos de las llamadas se enrutan a través del servidor Jitsi Meet cuando hay más de dos clientes presentes.
Inicie sesión en su servidor como usuario no root y con sudo habilitado antes de comenzar el Paso 1.
Paso 1: Configuración del nombre de host del sistema
En este paso, cambiará el nombre de host del sistema para que coincida con el nombre de dominio que desea utilizar para su instancia de Jitsi Meet. También resolverá localmente ese nombre de host a la IP pública de su servidor. Jitsi Meet utiliza ambas configuraciones cuando instala y genera sus archivos de configuración.
En primer lugar, configure el nombre de host del sistema con el nombre de dominio que utilizará para su instancia de Jitsi. El siguiente comando configurará el nombre de host actual y modificará el /etc/hostnameque contiene el nombre de host del sistema entre reinicios:
- sudo hostnamectl set-hostname jitsi.your_domain
Ingrese su contraseña cuando se le solicite. El comando que ejecutó se desglosa de la siguiente manera:
hostnamectl:Una utilidad del conjunto de herramientas systemd para administrar el nombre de host del sistema.set-hostname:Establece el nombre de host del sistema.
Compruebe que el nombre de host se haya configurado con el siguiente comando:
- hostname
Este comando devolverá el nombre de host que configuraste con el hostnamectlcomando:
Outputjitsi.your-domain
A continuación, deberá configurar una asignación local del nombre de host del servidor a su dirección IP pública. Para ello, abra el archivo /etc/hostscon nano o su editor de texto favorito:
- sudo nano /etc/hosts
El contenido de este archivo se parece al siguiente:
/etc/hosts
# Your system has configured 'manage_etc_hosts' as True.# As a result, if you wish for changes to this file to persist# then you will need to either# a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl# b.) change or remove the value of 'manage_etc_hosts' in# /etc/cloud/cloud.cfg or cloud-config from user-data#127.0.1.1 server1 server1127.0.0.1 localhost# The following lines are desirable for IPv6 capable hosts::1 localhost ip6-localhost ip6-loopbackff02::1 ip6-allnodesff02::2 ip6-allrouters
Luego, agregue la siguiente línea debajo de la 127.0.0.1 localhostlínea:
/etc/hosts
...public_ip jitsi.your_domain...
Por ejemplo, si la IP pública de su servidor es 1.2.3.4, el archivo actualizado se vería así:
/etc/hosts
# Your system has configured 'manage_etc_hosts' as True.# As a result, if you wish for changes to this file to persist# then you will need to either# a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl# b.) change or remove the value of 'manage_etc_hosts' in# /etc/cloud/cloud.cfg or cloud-config from user-data#127.0.1.1 server1 server1127.0.0.1 localhost1.2.3.4 jitsi.your_domain# The following lines are desirable for IPv6 capable hosts::1 localhost ip6-localhost ip6-loopbackff02::1 ip6-allnodesff02::2 ip6-allrouters
Guarde y cierre el archivo.
Ahora, su servidor tiene la configuración de nombre de host y dirección IP que Jitsi requiere cuando se instala. En el siguiente paso, abrirá los puertos de firewall que Jitsi y el instalador del certificado TLS necesitan.
Paso 2: Configuración del firewall
Cuando siguió la configuración inicial del servidor con Ubuntu 22.04 , habilitó el firewall UFW y abrió el puerto SSH. El servidor Jitsi necesita algunos puertos adicionales abiertos para comunicarse con los participantes de la llamada. El proceso de instalación de TLS también requiere un puerto abierto para autenticar la solicitud de registro del certificado.
Si aún no ha permitido el tráfico SSH a través de UFW, ejecute el siguiente comando:
- sudo ufw allow OpenSSH
A continuación, abra los siguientes puertos para Jitsi:
80/tcp:Puerto utilizado en la solicitud de registro del certificado TLS.443/tcp:Puerto utilizado para la página web de creación de salas de conferencias.10000/udp3478/udp5349/tcp:Puertos que transmitirán y recibirán el tráfico de llamadas cifradas.
Ejecute los siguientes ufwcomandos para abrir estos puertos:
- sudo ufw allow 80/tcp
- sudo ufw allow 443/tcp
- sudo ufw allow 3478/udp
- sudo ufw allow 5349/tcp
- sudo ufw allow 10000/udp
Comprueba que se hayan añadido todos con el ufw statuscomando:
- sudo ufw status
Recibirá el siguiente resultado para indicar que estos puertos están abiertos (incluido OpenSSH):
OutputStatus: activeTo Action From-- ------ ----OpenSSH ALLOW Anywhere80/tcp ALLOW Anywhere443/tcp ALLOW Anywhere3478/udp ALLOW Anywhere5349/tcp ALLOW Anywhere10000/udp ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)80/tcp (v6) ALLOW Anywhere (v6)443/tcp (v6) ALLOW Anywhere (v6)3478/udp (v6) ALLOW Anywhere (v6)5349/tcp (v6) ALLOW Anywhere (v6)10000/udp (v6) ALLOW Anywhere (v6)
Es posible que vea el siguiente estado inactivo en lugar de los puertos si no ha habilitado UFW:
OutputStatus: inactive
Si es así, debe habilitarlo ufw. Ejecute el siguiente comando y responda y cuando se le solicite que lo habilite ufw:
- sudo ufw enable
Vuelva a verificar el estado para asegurarse de que los puertos estén abiertos.
Con los puertos abiertos, el servidor está listo para la instalación de Jitsi, que completará en el siguiente paso.
Paso 3: Instalar Jitsi Meet
Ahora agregará los repositorios APT de Jitsi y Prosody a su servidor. Prosody es un servidor de chat XMPP de código abierto que Jitsi utiliza para mensajería y autenticación de administrador. Luego instalará el paquete Jitsi Meet desde su repositorio, lo que garantizará que siempre esté ejecutando el último paquete Jitsi Meet estable.
Primero, descargue la clave GPG de Jitsi con la curlutilidad de descarga:
- curl https://download.jitsi.org/jitsi-key.gpg.key -o jitsi-key.gpg.key
En este comando, -oespecifica el nombre del archivo donde se guardarán los datos de la clave descargada. El aptadministrador de paquetes utilizará esta clave GPG para validar los paquetes que descargará del repositorio Jitsi.
A continuación, agregue la clave GPG al conjunto de claves de su sistema con el siguiente gpgcomando:
- sudo gpg --output /usr/share/keyrings/jitsi-key.gpg --dearmor jitsi-key.gpg.key
Con este gpgcomando, se --outputgenera un nombre de archivo para guardar el llavero y --dearmordescomprimir la clave en un formato que pueda utilizar APT.
Ahora agregará el repositorio Jitsi a su servidor creando un nuevo archivo de fuentes APT que contenga el repositorio Jitsi. Abra y cree el nuevo archivo con el siguiente comando:
- sudo nano /etc/apt/sources.list.d/jitsi-stable.list
Añade esta línea al /etc/apt/sources.list.d/jitsi-stable.listarchivo:
/etc/apt/sources.list.d/jitsi-stable.list
deb [signed-by=/usr/share/keyrings/jitsi-key.gpg] https://download.jitsi.org stable/
Guardar y salir del editor.
A continuación, deberá seguir los mismos pasos para agregar el paquete Prosody. Descargue la clave GPG de Prosody:
- curl https://prosody.im/files/prosody-debian-packages.key -o prosody-debian-packages.key
Luego, agrega la clave al llavero de tu servidor:
- sudo gpg --output /usr/share/keyrings/prosody-keyring.gpg --dearmor prosody-debian-packages.key
A continuación, abra un nuevo archivo de fuentes para Prosody:
- sudo nano /etc/apt/sources.list.d/prosody.list
Agregue la siguiente línea al archivo de fuentes de Prosody actualmente vacío:
/etc/apt/sources.list.d/prosody.list
deb [signed-by=/usr/share/keyrings/prosody-keyring.gpg] http://packages.prosody.im/debian jammy main
Guardar y salir del editor.
Ahora puedes eliminar las claves GPG que descargaste porque ya no son necesarias:
- rm jitsi-key.gpg.key prosody-debian-packages.key
Por último, realice una actualización del sistema para recopilar la lista de paquetes de los nuevos repositorios y luego instale el jitsi-meetpaquete:
- sudo apt update
- sudo apt install jitsi-meet
Presione ypara confirmar la instalación de los paquetes cuando se le solicite.
Durante la instalación, jitsi-meetse le solicitará que ingrese el nombre de dominio (por ejemplo, jitsi.your-domain) que desea utilizar para su instancia de Jitsi Meet.
Utilice la TABtecla para mover el cursor desde el campo de nombre de host hasta resaltar el botón OK . Presione ENTERcuando OK esté resaltado para enviar el nombre de host.
Luego se le mostrará un nuevo cuadro de diálogo que le preguntará si desea que Jitsi cree y use un certificado TLS autofirmado o use uno existente:
Si no tiene un certificado TLS para su dominio Jitsi, seleccione la opción Generar un nuevo certificado autofirmado .
Tu instancia de Jitsi Meet ya está instalada con un certificado TLS autofirmado. Recibirás advertencias en el navegador si aún no tienes un certificado TLS, por lo que recibirás un certificado TLS firmado en el siguiente paso.
Paso 4: obtención de un certificado TLS firmado
Jitsi Meet utiliza certificados TLS para cifrar el tráfico de llamadas, de modo que nadie pueda espiar su llamada mientras viaja por Internet. Los certificados TLS son el mismo mecanismo que utilizan los sitios web para habilitar páginas protegidas con HTTPS.
Jitsi utiliza la utilidad certbot para obtener y administrar certificados TLS gratuitos, pero seguros y que cumplen con los estándares de la industria. Debe instalar esta utilidad antes de que Jitsi pueda obtener el certificado que necesita.
Instale certbot con el siguiente comando:
- sudo apt install certbot
Presione ypara confirmar la instalación del paquete certbot cuando se le solicite.
Jitsi Meet proporciona un script para descargar automáticamente un certificado TLS para su dominio. Ejecute este script de instalación de certificado proporcionado por Jitsi Meet /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.shcon el siguiente comando:
- sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
El script imprime la siguiente información cuando lo ejecuta y le solicita que proporcione una dirección de correo electrónico:
Output-------------------------------------------------------------------------This script will:- Need a working DNS record pointing to this machine(for domain jitsi.your_domain)- Download certbot-auto from https://dl.eff.org to /usr/local/sbin- Install additional dependencies in order to request Let’s Encrypt certificate- If running with jetty serving web content, will stop Jitsi Videobridge- Configure and reload nginx or apache2, whichever is used- Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks- Add command in weekly cron job to renew certificates regularlyYou need to agree to the ACME server's Subscriber Agreement(https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf)by providing an email address for important account notificationsEnter your email and press [ENTER]:
Esta dirección de correo electrónico se enviará al emisor del certificado https://letsencrypt.orgy se utilizará para notificarle sobre cuestiones de seguridad y otros asuntos relacionados con el certificado. Debe introducir una dirección de correo electrónico aquí para continuar con la instalación.
El script completará la instalación y configuración de un certificado SSL para su servidor Jitsi sin ninguna otra intervención del usuario.
La configuración predeterminada de Jitsi Meet es que cualquier persona que visite la página de inicio de su servidor Jitsi Meet puede crear una nueva sala de conferencias. Este modo predeterminado utilizará los recursos del sistema de su servidor para ejecutar la sala de conferencias y no es recomendable para usuarios no autorizados. En el siguiente paso, actualizará esa configuración.
Paso 5: Bloqueo de la creación de la sala de conferencias
Ahora configurará su servidor Jitsi Meet para permitir que solo los usuarios registrados puedan crear salas de conferencias.
Los archivos que editará fueron generados por el instalador y configurados con su nombre de dominio. La variable jitsi.your_domainse utilizará en lugar de su nombre de dominio en los siguientes ejemplos.
Primero, abre con un editor de texto:/etc/prosody/conf.avail/jitsi.your_domain.cfg.lua
- sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua
A continuación, busque la línea que necesita editar en este archivo utilizando la función de búsqueda de nano: CTRL+W. Presione CTRL+Wy luego ingrese authentication = "anonymous"en el campo de búsqueda. Presione ENTERpara ejecutar la búsqueda. Su entrada de búsqueda debería verse como el contenido del cuadro rojo a continuación:
Esta búsqueda llevará el cursor a la línea que necesita editar. Edite la siguiente línea desde su configuración actual:
/etc/prosody/conf.avail/jitsi.tu_dominio.cfg.lua
authentication = "anonymous"
Para una nueva configuración:
/etc/prosody/conf.avail/jitsi.tu_dominio.cfg.lua
authentication = "internal_plain"
Esta configuración le dice a Jitsi Meet que fuerce la autenticación de nombre de usuario y contraseña antes de permitir la creación de una sala de conferencias por parte de un nuevo visitante.
En el mismo archivo, agregue la siguiente sección al final del archivo:
/etc/prosody/conf.avail/tu_dominio.cfg.lua
...VirtualHost "guest.jitsi.your_domain" authentication = "anonymous" c2s_require_encryption = false modules_enabled = { "bosh"; "ping"; "pubsub"; "speakerstats"; "turncredentials"; "conference_duration"; }
Esta configuración permite que cualquier usuario se una a las salas de conferencias creadas por un usuario autenticado. Sin embargo, el invitado debe tener la URL única (y una contraseña opcional) para ingresar.
Aquí, agregaste guest.al frente tu nombre de dominio. Por ejemplo, el nombre correcto para poner aquí jitsi.your_domaines guest.jitsi.your_domain. El guest.nombre de host lo usa Jitsi Meet internamente, por lo que nunca lo ingresarás en un navegador ni necesitarás un registro DNS separado para el guest.nombre de host.
Cuando termine, guarde y cierre el archivo./etc/prosody/conf.avail/jitsi.your_domain.cfg.lua
A continuación, abra otro archivo de configuración con un editor de texto:/etc/jitsi/meet/jitsi.your_domain-config.js
- sudo nano /etc/jitsi/meet/jitsi.your_domain-config.js
Utilice CTRL+Wnuevamente la herramienta de búsqueda para buscar anonymousdomain:, lo que lo llevará a la siguiente línea:
/etc/jitsi/meet/tu_dominio-config.js
// anonymousdomain: 'guest.example.com',
Edite esta línea para que se parezca a la siguiente eliminando las barras dobles //al comienzo de la línea:
/etc/jitsi/meet/tu_dominio-config.js
anonymousdomain: 'guest.jitsi.your_domain',
Utilizará el nombre de host que utilizó anteriormente. Esta configuración le indica a Jitsi Meet qué nombre de host interno utilizar para los invitados no autenticados. Guarde y cierre el archivo.guest.jitsi.your_domain
A continuación, crea y abre /etc/jitsi/jicofo/sip-communicator.properties:
- sudo nano /etc/jitsi/jicofo/sip-communicator.properties
Agregue la siguiente línea para completar los cambios de configuración:
/etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:jitsi.your_domain
Esta configuración dirige uno de los procesos de Jitsi Meet al servidor local que realiza la autenticación de usuario que ahora se requiere. Cuando haya terminado, guarde y cierre el archivo.
Ahora, su instancia de Jitsi Meet está configurada para que solo los usuarios registrados puedan crear salas de conferencias. Después de crear una sala de conferencias, cualquier persona puede unirse a ella sin ser un usuario registrado. Todo lo que necesita es la dirección única de la sala de conferencias y una contraseña opcional establecida por el creador de la sala.
prosodyctlAhora que Jitsi Meet está configurado para requerir usuarios autenticados para la creación de salas, debe registrar a estos usuarios y sus contraseñas. Para ello, utilizará la utilidad.
Ejecute el siguiente comando para agregar un usuario a su servidor:
- sudo prosodyctl register user your_domain password
El usuario que agregue aquí no es un usuario del sistema. Solo podrá crear una sala de conferencias y no podrá iniciar sesión en su servidor a través de SSH.
Al ejecutar este comando, es posible que vea la siguiente advertencia:
Advertencia de lua5.1
general warn Lua 5.1 has several issues and support is being phased out, consider upgrading
El lua5.1paquete sigue siendo una dependencia obligatoria para Prosody y no supone ningún riesgo de seguridad para el sistema que lo utiliza. La dependencia lua5.1se irá eliminando a medida que se sigan desarrollando Prosody y Jitsi Meet.
Por último, reinicie todos los procesos de Jitsi Meet para cargar la nueva configuración:
- sudo systemctl restart prosody.service jicofo.service jitsi-videobridge2.service
El servidor Jitsi Meet ya está completamente instalado, configurado y en funcionamiento. En el paso final, creará una nueva sala de conferencias.
Paso 6: Apertura de una sala de conferencias e invitación a los participantes
Ahora puede buscar y comenzar a utilizar su nuevo servidor Jitsi Meet. Abra su navegador e ingrese su nombre de dominio Jitsi (con https) en la barra de direcciones.
Para iniciar una reunión, presione el botón Iniciar reunión en la página de inicio:
Al hacer clic en el botón Iniciar reunión , se iniciará una nueva reunión. Se le preguntará inmediatamente si es el anfitrión (el administrador de la reunión) en el siguiente cuadro de diálogo:
Debes hacer clic en el botón Soy el anfitrión para continuar. Después de hacer clic en ese botón, se te solicitará que ingreses tu nombre de usuario y contraseña de administrador en el siguiente campo:
El nombre de usuario y la contraseña son los que configuraste en el Paso 5 con la prosodyctlutilidad. Ingresa el nombre de usuario y la contraseña y haz clic en Iniciar sesión , lo que creará la nueva reunión y te establecerá como moderador.
Ahora que la reunión está abierta y en marcha, puedes invitar a los participantes. Haz clic en el icono de participantes en el panel inferior:
Esta acción abre un panel en la parte derecha. Haga clic en el botón Invitar a alguien :
Esta acción abrirá el cuadro de diálogo Invitar a más personas . Copie la URL única de la reunión haciendo clic en el icono de copia:
Ahora puede pegar la URL de la reunión en un correo electrónico o programa de chat para enviarla a cualquier persona que desee que asista a la reunión. No necesitarán un nombre de usuario y contraseña para acceder a la reunión después de que la haya creado.
Puede probar esto usted mismo después de haber creado una reunión abriendo una nueva pestaña del navegador en modo incógnito y pegando la URL de la reunión en ella. Podrá unirse a la reunión como un nuevo participante sin necesidad de un nombre de usuario y una contraseña.
Conclusión
En este artículo, implementó un servidor Jitsi Meet que puede usar para alojar salas de videoconferencia privadas y seguras. Puede ampliar su instancia Jitsi Meet con las instrucciones del Manual de Jitsi . Además de acceder a sus conferencias en un navegador, también puede unirse a conferencias con una aplicación de Apple y Google .