Tu propio sistema de videoconferencia con Jitsi Meet en Ubuntu 20.04

Este tutorial va a enseñarte cómo instalar Jitsi Meet, tu propio sistema de videoconferencia, en un servidor Ubuntu 20.04. Jitsi Meet es un software gratuito de videoconferencia de código abierto que funciona en Linux, macOS, Windows, iOS y Android. Si no confías en Zoom, puedes ejecutar tu propia plataforma de videoconferencia en tu propio servidor.

Tu propio sistema de videoconferencia

Características de Jitsi Meet

  • Completamente gratis
  • Comparta la pantalla de su ordenador con otros.
  • El modo de presentador le permite compartir su pantalla y la cámara al mismo tiempo, para que los asistentes puedan ver al presentador y su lenguaje corporal durante toda la presentación.
  • Puedes compartir el audio del sistema mientras compartes tu pantalla.
  • Puedes asignar usuarios autorizados como moderadores. Un moderador puede silenciar a todos los participantes con un solo clic.
  • La comunicación a través de la red está cifrada mediante DTLS-SRTP.
  • Cifrado de extremo a extremo (trabajo en curso)
  • Puedes establecer una contraseña para tu conferencia para evitar que entren extraños al azar.
  • Grabar la reunión/conferencia y guardarla en Dropbox.
  • Transmitir a YouTube Live y almacenar la grabación en YouTube.
  • Aplicaciones para Android e iOS
  • Chat de texto
  • Compartir un documento de texto
  • Llamada telefónica a una conferencia
  • Llamada telefónica a un participante
  • Puedes incrustar una llamada de Jits Meet en cualquier página web con sólo unas líneas de código.

Requisitos para instalar tu propio sistema de videoconferencia

Para ejecutar Jitsi Meet, necesitas un servidor con al menos 1GB de RAM. Puedes contratar uno en CONTABO.

También necesitas un nombre de dominio. Yo registré mi nombre de dominio en NameCheap porque el precio es bajo y dan protección de privacidad whois gratis de por vida.

Paso 1: Instalar Jitsi Meet desde el repositorio oficial de paquetes

Jitsi Meet no está incluido en el repositorio por defecto de Ubuntu. Podemos instalarlo desde el repositorio oficial de paquetes Jitsi, que también contiene varios otros paquetes de software útiles. Inicia sesión en tu servidor a través de SSH, a continuación, ejecuta el siguiente comando para agregar el repositorio oficial de Jitsi.

echo 'deb https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list

Importar la clave pública de Jitsi, para que el gestor de paquetes de APT pueda verificar la integridad de los paquetes descargados desde este repositorio.

wget -qO -  https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -

Debido a que el repositorio Jitsi requiere una conexión HTTPS, necesitamos instalar el paquete apt-transport-https para hacer que APT establezca una conexión HTTPS con el repositorio Jitsi.

sudo apt install apt-transport-https

A continuación, actualiza el índice de paquetes locales e instala Jitsi Meet en Ubuntu.

sudo apt update 
sudo apt install jitsi-meet

Durante la instalación, tienes que introducir un nombre de host para tu instancia de Jitsi. Este es el nombre de host que aparecerá en la barra de direcciones del navegador web cuando los asistentes se unan a la videoconferencia. Puedes utilizar un nombre de host descriptivo como meet.example.com.

In the next screen, you can choose to generate a new self-signed TLS certificate, so later you can obtain and install a trusted Let’s Encryption certificate.

El proceso de instalación configurará algunos parámetros del kernel de Linux, que se guardan en el archivo /etc/sysctl.d/20-jvb-udp-buffers.conf. Una vez completada la instalación, Jitsi Meet se iniciará automáticamente. Puedes comprobar su estado con:

systemctl status jitsi-videobridge2

Muestra de salida:

● jitsi-videobridge2.service - Jitsi Videobridge
     Loaded: loaded (/lib/systemd/system/jitsi-videobridge2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-04-25 03:07:16 UTC; 8min ago
   Main PID: 3721 (java)
      Tasks: 35 (limit: 65000)
     Memory: 168.5M
     CGroup: /system.slice/jitsi-videobridge2.service
             └─3721 java -Xmx3072m -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath>

Sugerencia: Si el comando anterior no sale inmediatamente, puede pulsar la tecla Q para que salga.

El paquete jitsi-meet también ha sacado otros paquetes como dependencias, como

  • openjdk-8-jre-headless: Entorno de ejecución Java. Es necesario porque Jitsi Meet está escrito en el lenguaje Java.
  • jicofo: Conferencia Jitsi Focus (systemctl status jicofo)
  • prosody: Servidor Jabber/XMPP ligero (systemctl status prosody)
  • coturn: coturn TURN Server

Paso 2: Abrir puertos en el cortafuegos

Jitsi Meet escucha en varios puertos UDP, como se puede ver con el siguiente comando. (Si tu servidor Ubuntu no tiene el comando netstat, puedes ejecutar el comando sudo apt install net-tools para instalarlo).

Si quieres saber mas sobre como configurar el cortafuegos, puedes hacerlo en este tutorial.

Para que los asistentes puedan unirse a una videoconferencia desde un navegador web, es necesario abrir los puertos TCP 80 y 443. Y para transferir vídeo a través de la red, abrir los puertos UDP 10000 y 5000. Si utiliza el cortafuegos UFW, ejecute el siguiente comando para abrir estos puertos.

sudo ufw allow 80,443/tcp
sudo ufw allow 10000,5000/udp

Paso 3: Obtener un certificado Let’s Encrypt TLS de confianza

Ve a tu servicio de alojamiento DNS (normalmente tu registrador de dominios) para crear un registro DNS A para tu nombre de host Jitsi (meet.example.com). A continuación, ejecuta el siguiente script para obtener un certificado Let’s Encrypt TLS de confianza:

sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Introduce tu dirección de correo electrónico para recibir notificaciones importantes de la cuenta. Luego descargará certbot-auto y obtendrá el certificado TLS.

Si todo está bien, verá el siguiente mensaje, indicando que los certificados TLS se han obtenido e instalado con éxito.

Si estás usando una instalación limpia de Ubuntu 20.04 (no actualizada desde 18.04 o 19.10), probablemente verás el siguiente error al obtener el certificado de Let’s Encrypt.

Package python-virtualenv is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'python-virtualenv' has no installation candidate

Esto se debe a que el repositorio de Ubuntu 20.04 no tiene el paquete python-virtualenv. En lugar de utilizar el binario certbot-auto para obtener el certificado TLS, podemos instalar el paquete certbot desde el repositorio de Ubuntu 20.04 y utilizarlo para obtener el certificado TLS.

sudo apt install certbot

A continuación, tenemos que cambiar la instancia de certbot-auto a certbot en el script con el siguiente comando.

sudo sed -i 's/\.\/certbot-auto/certbot/g' /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Ejecuta el script de nuevo, y deberías ser capaz de obtener con éxito el certificado TLS de Let’s Encrypt.

sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Ten en cuenta que este script utiliza el desafío http-01, lo que significa que su servidor web Apache o Nginx necesita escuchar en el puerto 80 de la dirección IP pública. Si el entorno de su servidor no admite la impugnación http-01, no debes ejecutar el script anterior. Debes utilizar otro tipo de desafío. En mi caso, utilizo el desafío DNS.

sudo certbot --agree-tos -i nginx --redirect --hsts --staple-ocsp --email me@linuxbabe.com -d meet.linuxbabe.com

Donde:

  • --agree-tos: Aceptar las condiciones del servicio.
  • -i nginx: Utilice el plugin de nginx para instalar el certificado TLS. Si usas Apache, tienes que sustituir nginx por apache.
  • --redirect: Forzar HTTPS mediante una redirección 301.
  • --hsts: Añadir la cabecera Strict-Transport-Security a cada respuesta HTTP. Obliga al navegador a utilizar siempre TLS para el dominio. Defiende contra el despojo de SSL/TLS.
  • --staple-ocsp: Activa el grapado OCSP. Una respuesta OCSP válida se grapa al certificado que el servidor ofrece durante TLS.

Step 4: Enable HTTP2

HTTP2 puede mejorar la velocidad de carga de las páginas web. Para activar HTTP2 en Nginx, edite el archivo de configuración del host virtual.

sudo nano /etc/nginx/sites-enabled/meet.example.com.conf

Encuentra las dos líneas siguientes.

listen 443 ssl;
listen [::]:443 ssl;

Añade http2 al final.

listen 443 ssl http2;
listen [::]:443 ssl http2;

Guarde y cierre el archivo. A continuación, vuelva a cargar Nginx para que el cambio surta efecto.

sudo systemctl reload nginx

Paso 5: Iniciar una nueva reunión en línea

Ahora visite https://meet.example.com y podrá iniciar una conferencia. Para transferir audio, debes permitir que el navegador web utilice tu micrófono. Y para transferir vídeo, tienes que permitir que el navegador web acceda a tu cámara.

Asigna un nombre a tu reunión y haga clic en el botón Ir. Una vez iniciada la reunión, puedes optar por establecer una contraseña para la misma.

Paso 6: Configurar la autenticación de usuarios

Por defecto, cualquiera puede ir a tu instancia de Jitsi Meet, crear una sala e iniciar una reunión. Para configurar la autenticación de usuarios, edita el archivo de configuración de Prosody.

sudo nano /etc/prosody/conf.d/meet.example.com.cfg.lua

Encuentra la siguiente línea.

authentication = "anonymous"

Cámbialo por lo siguiente, que requerirá que el usuario introduzca el nombre de usuario y la contraseña para iniciar una conferencia.

authentication = "internal_plain"

Sin embargo, no queremos que los asistentes introduzcan el nombre de usuario y la contraseña cuando se unan a la conferencia, así que tenemos que crear un inicio de sesión anónimo para los invitados, añadiendo las siguientes líneas al final de este archivo. Tenga en cuenta que no es necesario crear un registro DNS A para guest.meet.example.com.

VirtualHost "guest.meet.example.com"
    authentication = "anonymous"
    c2s_require_encryption = false

Guarda y cierra el archivo.

A continuación, edita el archivo de configuración de Jitsi Meet.

sudo nano /etc/jitsi/meet/meet.example.com-config.js

Encuentra la siguiente línea,

// anonymousdomain: 'guest.example.com',

Elimina las dobles barras y cambia el dominio de invitado. Sustituye meet.example.com por tu nombre de host real de Jitsi Meet.

anonymousdomain: 'guest.meet.example.com',

Guarda y cierra el archivo.

A continuación, edita el archivo de configuración de Jicofo.

sudo nano /etc/jitsi/jicofo/sip-communicator.properties

Añade la siguiente línea al final de este archivo.

org.jitsi.jicofo.auth.URL=XMPP:meet.example.com

Guarda y cierra el archivo. Reinicie los servicios systemd para que los cambios surtan efecto.

sudo systemctl restart jitsi-videobridge2 prosody jicofo

Para crear cuentas de usuario en Jisi Meet, ejecute el siguiente comando. Se te pedirá que introduzcas una contraseña para el nuevo usuario.

sudo prosodyctl register username meet.example.com

Ahora, si creas una sala en Jitsi Meet, tendrás que introducir un nombre de usuario y una contraseña.

jitsi meet user authentication

Opcional: Configurar Jigasi para la marcación telefónica de entrada o salida

Jitsi ofrece una interfaz de telefonía que permite a los usuarios marcar en una conferencia o realizar llamadas de recordatorio. Instala el paquete jigasi (pasarela Jitsi para SIP).

sudo apt install jigasi

Durante la instalación, tendrá que introducir su nombre de usuario y contraseña SIP. Si no tiene uno, puede crear una cuenta SIP gratuita en OnSIP.com.

Si has configurado la autenticación de usuarios en el paso 6, entonces necesitas editar el archivo de configuración de Jigasi.

sudo nano /etc/jitsi/jigasi/sip-communicator.properties

Encuentra las siguientes líneas.

# org.jitsi.jigasi.xmpp.acc.USER_ID=SOME_USER@SOME_DOMAIN
# org.jitsi.jigasi.xmpp.acc.PASS=SOME_PASS
# org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false

Descomaneta las lineas e introduce una cuenta y una contraseña que hayas creado en el paso 6.

org.jitsi.jigasi.xmpp.acc.USER_ID=user1@meet.example.com
org.jitsi.jigasi.xmpp.acc.PASS=user1_password
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false

Guardar y cerrar el archivo. Reinicia el servicio jigasi systemd.

sudo systemctl status jigasi

Optional: Configure Coturn

Si ves el siguiente mensaje durante la instalación de Jitsi Meet, tienes que configurar Coturn para que funcione correctamente.

Warning! Could not resolve your external ip address! Error:^
Your turn server will not work till you edit your /etc/turnserver.conf config file.
You need to set your external ip address in external-ip and restart coturn service.

Edite el archivo de configuración de Coturn.

sudo nano /etc/turnserver.conf

Encuentra la siguiente línea.

external-ip=127.0.0.1

Sustituye 127.0.0.1 por la dirección IP pública de tu servidor. Guarda y cierra el archivo. A continuación, reinicia Coturn.

sudo systemctl restart coturn

Consejos para solucionar problemas

Si te encuentras con errores, puedes comprobar el registro de errores de Nginx (/var/log/nginx/error.log) para averiguar qué está mal. También puedes consultar los registros de los servicios systemd.

sudo journalctl -eu jitsi-videobridge2 
sudo journalctl -eu prosody 
sudo journalctl -eu jicofo

Espero que este tutorial te haya ayudado a configurar un servidor Jitsi Meet en Ubuntu 20.04.

¡Que tengas un Ingenioso día!

¡que tengas un ingenioso día!

Contrata tu plan Ingenios@ de Sistemas por 5€ al mes y responderé a todas tus preguntas sobre tecnología en el menor tiempo posible. Pasa a formar parte de la comunidad Ingenios@s de Sistemas y disfruta de contenido exclusivo y aprende sobre sistemas Open Source, Blockchain, SmarContract, Web3, Inteligencia Artificial y Reaidad Virtual, súbete al tren de la Revolución 4.0

Si quieres estar al día y no perderte nada Suscribete al Podcast Ingenios@s de Sistemas, un episodio diario que te mantendrá informado y formado en esta vertiginosa carrera.

Deja un comentario

Share to...