Despliegue de Jitsi Meet en un VPS: videoconferencias seguras con SSL y servidor TURN
TL;DR
En esta guía detallada, configuraremos paso a paso nuestro propio servidor de videoconferencias Jitsi Meet en un servidor privado virtual (VPS) bajo Ubuntu 24.04 LTS. Garantizaremos la seguridad completa de la conexión mediante certificados SSL de Let's Encrypt y configuraremos un servidor TURN para un funcionamiento fiable en entornos de red complejos, para que pueda realizar videollamadas privadas y seguras para su equipo o comunidad.
- Instalación y configuración básica del sistema operativo Ubuntu 24.04 LTS.
- Despliegue de todos los componentes de Jitsi Meet (Jitsi Videobridge, Jitsi Meet Web, Prosody, Jicofo).
- Configuración automática de certificados SSL Let's Encrypt para una conexión HTTPS segura.
- Configuración del servidor TURN/STUN (Coturn) para sortear NAT y firewalls.
- Garantía de seguridad básica del servidor y recomendaciones para copias de seguridad y mantenimiento.
¿Qué configuramos y por qué?
En el mundo moderno del trabajo remoto y los equipos distribuidos, las herramientas de comunicación fiables y seguras se han vuelto cruciales. Jitsi Meet es una plataforma de videoconferencias completamente gratuita y de código abierto, que permite crear videollamadas de alta calidad directamente en el navegador, sin necesidad de instalar aplicaciones adicionales. A diferencia de las soluciones propietarias, como Zoom o Google Meet, Jitsi Meet ofrece un control total sobre los datos y la privacidad, ya que lo aloja en su propio servidor.
Configuraremos la pila completa de Jitsi Meet, que incluye: Jitsi Videobridge (enruta flujos de video y audio), Jitsi Meet Web (interfaz web), Prosody (servidor XMPP para señalización) y Jicofo (gestiona las conferencias). Un elemento clave de nuestra configuración será la garantía de seguridad mediante certificados SSL de Let's Encrypt, lo que garantiza el cifrado de todo el tráfico entre clientes y el servidor. Esto es crítico para proteger su información confidencial de la interceptación.
Además, desplegaremos y configuraremos un servidor TURN (Coturn). TURN (Traversal Using Relays around NAT) es un protocolo que permite que los flujos de medios pasen a través de entornos de red complejos, como firewalls corporativos y redes con NAT simétrico, donde una conexión P2P directa entre los participantes de la conferencia es imposible. Sin un servidor TURN, muchos usuarios experimentarán problemas de conexión, especialmente al intentar unirse a una conferencia desde redes de oficina o redes con acceso restringido. La presencia de su propio servidor TURN aumenta significativamente la fiabilidad y disponibilidad de su plataforma Jitsi Meet, asegurando una comunicación ininterrumpida para todos los participantes.
En resumen, al finalizar este tutorial, obtendrá una plataforma Jitsi Meet completamente funcional, segura y fiable, lista para usar por su equipo, clientes o para necesidades personales. Podrá realizar videoconferencias, compartir pantalla, usar el chat y otras funciones, sabiendo que todos los datos están bajo su control.
Las alternativas a Jitsi Meet en un VPS incluyen soluciones como BigBlueButton o Nextcloud Talk. Sin embargo, Jitsi Meet destaca por su facilidad de despliegue y una experiencia de cliente ligera que no requiere instalación. La elección de una solución autoalojada en un VPS en lugar de servicios gestionados en la nube se debe a varios factores: control total sobre los datos, ausencia de limitaciones en el número de participantes o la duración de las llamadas (dependiendo únicamente de la potencia de su servidor), la posibilidad de personalización y, a menudo, un costo más bajo a largo plazo en comparación con las suscripciones de pago a servicios comerciales.
¿Qué configuración de VPS se necesita para esta tarea?
La elección de una configuración de VPS adecuada para Jitsi Meet es crítica para el funcionamiento estable y la calidad de las videoconferencias. Los requisitos de recursos dependen en gran medida del número esperado de participantes simultáneos y de la intensidad de uso.
Requisitos mínimos para un equipo pequeño (hasta 10-15 participantes simultáneos):
- Procesador (CPU): 2 núcleos x86-64, preferiblemente con una frecuencia de reloj de 2.5 GHz o superior. Jitsi Videobridge utiliza activamente la CPU para enrutar los flujos de medios.
- Memoria RAM: 4 GB. Esto es suficiente para el sistema operativo y todos los componentes de Jitsi.
- Espacio en disco: 50 GB SSD. El SSD garantiza una carga y un funcionamiento rápidos de todos los componentes.
- Red: Conexión estable de 200 Mbps o superior. Es muy importante tener un buen canal de entrada y salida.
Plan de VPS recomendado para cargas medias (hasta 25-30 participantes simultáneos):
Para un funcionamiento más cómodo y la posibilidad de escalar, especialmente si se planean conferencias con un gran número de participantes, uso compartido de pantalla y grabación, se recomienda la siguiente configuración:
- Procesador (CPU): 4 núcleos x86-64, de 3.0 GHz o superior.
- Memoria RAM: 8 GB DDR4.
- Espacio en disco: 100 GB SSD.
- Red: Canal simétrico de 1 Gbit/s.
Un VPS con estas características se puede adquirir, por ejemplo, un VPS con las características indicadas. Es importante asegurarse de que el proveedor elegido ofrezca una red fiable y suficiente ancho de banda, ya que Jitsi Meet es muy sensible a la latencia y la calidad del canal.
Cuándo se necesita un servidor dedicado y no un VPS
Si planea realizar conferencias regularmente con 50 o más participantes simultáneos, o si necesita la capacidad de grabar múltiples conferencias simultáneamente (usando Jibri), entonces debería considerar el alquiler de un servidor dedicado. Un servidor dedicado le proporcionará acceso exclusivo a todos los recursos físicos, lo que eliminará la influencia de los "vecinos" del VPS en el rendimiento. Para tales escenarios, se requerirá un servidor dedicado con 8+ núcleos de CPU, 16+ GB de RAM y un disco NVMe de alta velocidad, así como un canal garantizado de 1 Gbit/s. Un servidor dedicado adecuado se puede encontrar entre las ofertas de servidores dedicados.
Ubicación: ¿cómo influye?
La ubicación de su VPS o servidor dedicado influye directamente en la latencia para los participantes de la conferencia. Cuanto más cerca esté el servidor de la mayoría de sus usuarios, menor será la latencia y mejor será la calidad del video y el audio. Elija un centro de datos ubicado geográficamente cerca de su audiencia principal. Por ejemplo, si su equipo se encuentra en Europa, elija un servidor en un centro de datos europeo. Una alta latencia puede provocar "lag", desincronización de audio y video, y un deterioro general de la experiencia del usuario.
Preparación del servidor
Antes de instalar Jitsi Meet, es necesario realizar una preparación básica del servidor. Utilizaremos Ubuntu Server 24.04 LTS, ya que es la versión actual y soportada hasta 2026. Todos los comandos se ejecutan como un usuario con privilegios sudo.
1. Actualización del sistema
Primero, actualizaremos la lista de paquetes y los paquetes instalados a las últimas versiones:
sudo apt update -y # Actualizamos la lista de paquetes disponibles
sudo apt upgrade -y # Actualizamos todos los paquetes instalados
sudo apt autoremove -y # Eliminamos paquetes innecesarios
2. Instalación de utilidades básicas
Nos aseguraremos de que estén instaladas las utilidades necesarias, que pueden ser útiles durante el proceso de configuración:
sudo apt install -y curl wget git net-tools apt-transport-https ca-certificates software-properties-common
3. Configuración del nombre de host y DNS
Para Jitsi Meet, es crítico tener un nombre de host (hostname) configurado correctamente y los registros DNS correspondientes. Elija un nombre de dominio, por ejemplo, meet.yourdomain.com. Asegúrese de que para este dominio, su proveedor de DNS tenga un registro A que apunte a la dirección IP pública de su VPS.
Estableceremos el nombre de host en el servidor:
sudo hostnamectl set-hostname meet.yourdomain.com # Establecemos el nombre de host
echo "127.0.0.1 meet.yourdomain.com" | sudo tee -a /etc/hosts # Añadimos una entrada a /etc/hosts
Reemplace meet.yourdomain.com con su nombre de dominio real.
4. Configuración del firewall (UFW)
Configuraremos el firewall UFW (Uncomplicated Firewall) para garantizar la seguridad básica. Abriremos solo los puertos necesarios:
sudo ufw allow OpenSSH # Permitimos el acceso SSH
sudo ufw allow http # Permitimos HTTP (para Certbot)
sudo ufw allow https # Permitimos HTTPS
sudo ufw allow 10000/udp # Puerto para Jitsi Videobridge (UDP)
sudo ufw allow 3478/udp # Puerto para STUN/TURN (UDP)
sudo ufw allow 5349/tcp # Puerto para TURN (TCP, si se usa)
sudo ufw enable # Habilitamos el firewall
sudo ufw status verbose # Verificamos el estado del firewall
En respuesta a sudo ufw enable, es posible que se requiera confirmación. Ingrese y.
5. Instalación de Fail2ban (protección contra fuerza bruta)
Fail2ban ayudará a proteger su servidor SSH de ataques de fuerza bruta, bloqueando las direcciones IP desde las cuales se producen múltiples intentos fallidos de inicio de sesión:
sudo apt install -y fail2ban # Instalamos Fail2ban
sudo systemctl enable fail2ban # Habilitamos el inicio automático de Fail2ban
sudo systemctl start fail2ban # Iniciamos Fail2ban
La configuración predeterminada para SSH suele ser suficiente. Si lo desea, puede crear el archivo /etc/fail2ban/jail.local para una configuración más detallada, por ejemplo:
sudo nano /etc/fail2ban/jail.local
Contenido del archivo:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 3
bantime = 1h
Guarde el archivo (Ctrl+X, Y, Enter) y reinicie Fail2ban:
sudo systemctl restart fail2ban
6. Creación de un usuario con sudo (opcional, pero recomendado)
Si está trabajando como root, se recomienda crear un nuevo usuario con privilegios sudo y trabajar con él para mejorar la seguridad:
sudo adduser username # Creamos un nuevo usuario
sudo usermod -aG sudo username # Añadimos el usuario al grupo sudo
Reemplace username con el nombre de usuario deseado. Después de esto, cierre la sesión de root e inicie sesión con el nuevo usuario. Todos los comandos posteriores que requieran privilegios, ejecútelos con sudo.
El servidor está listo para la instalación de Jitsi Meet.
Instalación de software — paso a paso
Ahora que el servidor está preparado, procederemos con la instalación de Jitsi Meet y todos sus componentes. Utilizaremos los repositorios oficiales de Jitsi para Ubuntu.
1. Adición de repositorios de Jitsi
Jitsi Meet no se incluye en los repositorios estándar de Ubuntu, por lo que necesitamos añadir el repositorio oficial de Jitsi y su clave GPG para verificar la autenticidad de los paquetes.
# Descargamos la clave GPG del repositorio de Jitsi
curl https://download.jitsi.org/jitsi-key.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/jitsi-keyring.gpg
# Añadimos el repositorio de Jitsi a la lista de fuentes de APT
echo "deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/" | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null
# Actualizamos la lista de paquetes para que APT conozca el nuevo repositorio
sudo apt update -y
Estos comandos añadirán la clave y el repositorio, y luego actualizarán la caché de paquetes. Ahora el sistema sabe de dónde descargar Jitsi Meet.
2. Instalación de Jitsi Meet
Después de añadir el repositorio, se puede instalar el paquete principal jitsi-meet. Este paquete instalará todas las dependencias necesarias, incluyendo Jitsi Videobridge, Prosody, Jicofo y Nginx (u otro servidor web, si no está instalado).
sudo apt install -y jitsi-meet
Durante la instalación, se le pedirá que introduzca el nombre de host para su instancia de Jitsi Meet. Introduzca el nombre de dominio completo que configuró anteriormente (por ejemplo, meet.yourdomain.com). Este es un paso crítico para el correcto funcionamiento de Jitsi y los certificados SSL.
A continuación, se le pedirá que elija el método de configuración de los certificados SSL. Seleccione la opción "Generate a new self-signed certificate (You will later get a Let's Encrypt certificate)". Esto permitirá a Jitsi instalar un certificado autofirmado temporal, que luego reemplazaremos por uno completo de Let's Encrypt.
La versión de Jitsi Meet que se instalará será la versión "estable" actual para 2026, disponible en el repositorio.
3. Configuración de certificados SSL con Let's Encrypt
Jitsi Meet viene con un script conveniente para la instalación y configuración automática de certificados SSL de Let's Encrypt. Esto garantizará una conexión HTTPS segura.
# Ejecutamos el script para obtener el certificado SSL
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
El script le pedirá su dirección de correo electrónico. Esta dirección será utilizada por Let's Encrypt para notificaciones sobre la caducidad del certificado. Introdúzcala y pulse Enter. El script se conectará automáticamente con Let's Encrypt, realizará la verificación de propiedad del dominio (normalmente a través del desafío HTTP-01, utilizando el puerto 80 que abrimos en UFW) e instalará los certificados. También configurará la renovación automática de los certificados.
Si surgen errores, asegúrese de que:
- Su nombre de dominio (por ejemplo,
meet.yourdomain.com) apunta correctamente a la dirección IP pública de su VPS. - Los puertos 80 y 443 están abiertos en su firewall (UFW).
- No hay otros servicios en el servidor que ocupen el puerto 80.
4. Instalación y configuración de Coturn (servidor TURN/STUN)
Aunque Jitsi Meet puede funcionar sin un servidor TURN separado en configuraciones de red simples, su presencia es fundamental para garantizar la comunicación entre participantes detrás de firewalls complejos o NAT. Jitsi instala automáticamente Coturn como dependencia, pero debe configurarse correctamente.
# Verificamos si Coturn está instalado (debería haberse instalado con jitsi-meet)
sudo apt install -y coturn
Ahora es necesario configurar Coturn. El archivo de configuración principal se encuentra en /etc/coturn/turnserver.conf. Realizaremos cambios para que funcione correctamente con Jitsi.
sudo nano /etc/coturn/turnserver.conf
Comente todas las líneas del archivo (añadiendo # al principio de cada línea) y añada los siguientes parámetros. Reemplace YOUR_PUBLIC_IP con la dirección IP pública de su VPS, y meet.yourdomain.com con su nombre de dominio:
# --- Configuración de Coturn para Jitsi Meet ---
# Puertos de escucha para TURN/STUN
listening-port=3478
tls-listening-port=5349
# Puertos mínimos/máximos para retransmisión UDP
min-port=49152
max-port=65535
# Dirección IP externa de su servidor
external-ip=YOUR_PUBLIC_IP
# Realm para autenticación (use su dominio)
realm=meet.yourdomain.com
# Usuario estático para autenticación (reemplace con credenciales fuertes)
# user=jitsi:JitsiStrongPassword123
# Usar un secreto compartido para la autenticación de Jitsi (recomendado)
# Este secreto debe coincidir con el configurado en Jitsi
static-auth-secret=YOUR_JITSI_SHARED_SECRET
# Habilitar registro detallado (opcional, para depuración)
# verbose
# Deshabilitar llamadas de bucle invertido
no-loopback-peers
# Deshabilitar huella digital TLS (opcional, para compatibilidad)
no-tls-system-certs
# Habilitar mecanismo de credenciales a largo plazo para seguridad
lt-cred-mech
# Configurar un archivo de registro
log-file=/var/log/coturn.log
# Deshabilitar el usuario predeterminado 'turnserver'
no-daemon
Importante: Reemplace YOUR_PUBLIC_IP con la dirección IP pública real de su VPS. Para static-auth-secret, genere un secreto robusto, por ejemplo, con el comando head /dev/urandom | tr -dc A-Za-z0-9_ | head -c 32 ; echo ''. Usaremos este mismo secreto más adelante en la configuración de Jitsi. Comente la línea user=jitsi:JitsiStrongPassword123 si utiliza static-auth-secret, que es el método preferido para Jitsi.
Guarde los cambios y salga del editor. Ahora es necesario habilitar Coturn e iniciarlo:
# Permitimos que Coturn se inicie como un servicio
sudo sed -i 's/#TURNSERVER_ENABLED=1/TURNSERVER_ENABLED=1/' /etc/default/coturn
# Reiniciamos el servicio Coturn para aplicar los cambios
sudo systemctl restart coturn
# Verificamos el estado del servicio Coturn
sudo systemctl status coturn
Asegúrese de que Coturn esté iniciado y funcionando sin errores. Si hay errores, revise el archivo /var/log/coturn.log.
5. Verificación de la instalación
Después de todos estos pasos, su servidor Jitsi Meet debería estar instalado y configurado. Abra un navegador web y vaya a la dirección de su dominio (por ejemplo, https://meet.yourdomain.com). Debería ver la página de bienvenida de Jitsi Meet. Intente crear una conferencia. Si todo funciona, la instalación básica se ha realizado con éxito.