--- title: "Cómo instalar Jitsi Meet en Ubuntu 24.04 con HTTPS" description: "Instala tu servidor de videoconferencia Jitsi Meet en Ubuntu 24.04 con certificado de Let's Encrypt y limita la creación de salas a usuarios autenticados." category: "VoIP y Comunicación" language: es source: https://cubepath.com/es/docs/voip-y-comunicación/instalacion-de-jitsi-meet-videoconferencia updated: 2026-09-25 --- # Cómo instalar Jitsi Meet en Ubuntu 24.04 con HTTPS Jitsi Meet es una plataforma de videoconferencia de código abierto basada en WebRTC: los participantes se unen desde el navegador o desde la app móvil sin crear cuenta, y el vídeo pasa por tu propio servidor. Se compone de varios servicios: Nginx sirve la web, Prosody hace de servidor XMPP para la señalización, Jicofo gestiona las conferencias y Jitsi Videobridge (JVB) reenvía el audio y el vídeo. En este tutorial instalarás todo el conjunto en Ubuntu 24.04 con los paquetes oficiales, obtendrás un certificado de Let's Encrypt y configurarás el servidor para que solo los usuarios autenticados puedan crear salas. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS dedicado a Jitsi, por ejemplo un VPS de CubePath, con un usuario no root con privilegios `sudo`. Jitsi configura su propio Nginx, así que es preferible no compartir el servidor con otros sitios web. - Al menos 4 GB de RAM y 2 vCPU para reuniones pequeñas. Para muchas reuniones simultáneas, 8 GB y 4 vCPU. El ancho de banda es el recurso que más se consume. - Un subdominio, por ejemplo `meet.your_domain`, con un registro DNS de tipo A que apunte a la IP pública del servidor. Let's Encrypt lo necesita durante la instalación. A lo largo de la guía, sustituye `meet.your_domain` por tu subdominio y `your_server_ip` por la IP pública del servidor. ## Paso 1: Configurar el nombre del servidor Los servicios de Jitsi se comunican entre sí usando el nombre de dominio, así que el servidor debe resolver `meet.your_domain` hacia sí mismo. Comprueba primero que el DNS público ya apunta a tu IP: ```bash dig +short meet.your_domain ``` ```output 203.0.113.10 ``` Establece el nombre del host: ```bash sudo hostnamectl set-hostname meet ``` Añade el dominio completo a `/etc/hosts` con la IP pública del servidor: ```bash sudo nano /etc/hosts ``` ```text your_server_ip meet.your_domain meet ``` Comprueba que el nombre se resuelve localmente: ```bash ping -c 1 meet.your_domain ``` La respuesta debe venir de `your_server_ip`. ## Paso 2: Abrir los puertos en el cortafuegos Jitsi necesita HTTP y HTTPS para la web y Let's Encrypt, `10000/udp` para el audio y el vídeo, y `3478/udp` y `5349/tcp` para el servidor TURN que instala el paquete y que ayuda a los participantes detrás de cortafuegos restrictivos: ```bash sudo ufw allow OpenSSH sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 10000/udp sudo ufw allow 3478/udp sudo ufw allow 5349/tcp sudo ufw enable ``` Comprueba las reglas: ```bash sudo ufw status ``` ```output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 10000/udp ALLOW Anywhere 3478/udp ALLOW Anywhere 5349/tcp ALLOW Anywhere ``` ## Paso 3: Añadir los repositorios de Prosody y Jitsi Jitsi depende de versiones de Prosody más recientes que las de Ubuntu, así que se instalan desde el repositorio del propio proyecto Prosody. Instala las herramientas necesarias y activa el componente `universe`: ```bash sudo apt update sudo apt install gnupg2 curl lsb-release sudo add-apt-repository universe sudo mkdir -p /etc/apt/keyrings ``` Añade el repositorio de Prosody con su clave: ```bash sudo curl -sL https://prosody.im/files/prosody-debian-packages.key -o /etc/apt/keyrings/prosody-debian-packages.key echo "deb [signed-by=/etc/apt/keyrings/prosody-debian-packages.key] http://packages.prosody.im/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/prosody-debian-packages.list ``` Añade el repositorio de Jitsi. Su clave se convierte a formato binario con `gpg --dearmor`: ```bash curl -sL https://download.jitsi.org/jitsi-key.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/jitsi-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/" | sudo tee /etc/apt/sources.list.d/jitsi-stable.list ``` Actualiza el índice de paquetes e instala `lua5.2`, que Prosody necesita para los módulos de Jitsi: ```bash sudo apt update sudo apt install lua5.2 ``` Comprueba que el paquete de Jitsi está disponible: ```bash apt policy jitsi-meet ``` ```output jitsi-meet: Installed: (none) Candidate: 2.0.10431-1 Version table: 2.0.10431-1 500 500 https://download.jitsi.org stable/ Packages ``` ## Paso 4: Instalar Jitsi Meet Instala el metapaquete `jitsi-meet`, que trae Prosody, Jicofo, Jitsi Videobridge, la web y la configuración de Nginx y del servidor TURN: ```bash sudo apt install jitsi-meet ``` El instalador hace varias preguntas: 1. **Hostname**: escribe `meet.your_domain`. 2. **SSL certificate**: elige **Let's Encrypt certificates**. 3. **Email**: una dirección válida para los avisos de caducidad de Let's Encrypt. 4. Si pregunta por la integración de telefonía de JaaS, puedes responder que no. Al terminar, comprueba que los cuatro servicios están activos: ```bash systemctl is-active prosody jicofo jitsi-videobridge2 nginx ``` ```output active active active active ``` Comprueba también que Videobridge escucha en el puerto UDP de medios: ```bash sudo ss -ulnp | grep 10000 ``` ```output UNCONN 0 0 *:10000 *:* users:(("java",pid=5213,fd=258)) ``` Abre `https://meet.your_domain` en el navegador. Verás la página de bienvenida de Jitsi Meet con un certificado válido. Escribe un nombre de sala, entra, y únete a la misma sala desde otro dispositivo (por ejemplo, el móvil con datos). Si os veis y oís, la instalación funciona. > Nota: si durante la instalación elegiste un certificado autofirmado o Let's Encrypt falló porque el DNS aún no apuntaba al servidor, puedes obtenerlo después con `sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh`. ## Paso 5: Exigir autenticación para crear salas Tal como queda tras la instalación, cualquier persona que conozca la URL puede crear salas y usar tu servidor y tu ancho de banda. La configuración llamada *secure domain* exige usuario y contraseña para **crear** una sala, mientras que los invitados siguen pudiendo **unirse** a una sala ya iniciada sin cuenta. ### Configurar Prosody Abre la configuración de Prosody para tu dominio: ```bash sudo nano /etc/prosody/conf.avail/meet.your_domain.cfg.lua ``` Dentro del bloque `VirtualHost "meet.your_domain"`, cambia el método de autenticación de `jitsi-anonymous` a `internal_hashed`: ```lua VirtualHost "meet.your_domain" authentication = "internal_hashed" ``` Deja el resto del bloque como está. Después, al final del archivo, añade un host virtual para los invitados: ```lua VirtualHost "guest.meet.your_domain" authentication = "jitsi-anonymous" c2s_require_encryption = false ``` El dominio `guest.meet.your_domain` es interno de XMPP; no necesita registro DNS ni certificado. ### Configurar la web Indica a la aplicación web qué dominio usan los invitados: ```bash sudo nano /etc/jitsi/meet/meet.your_domain-config.js ``` Dentro del objeto `hosts`, añade la línea `anonymousdomain` (en el archivo aparece comentada como ejemplo): ```javascript hosts: { domain: 'meet.your_domain', anonymousdomain: 'guest.meet.your_domain', muc: 'conference.' + subdomain + 'meet.your_domain', }, ``` No toques las demás líneas de `hosts`; solo añade o descomenta `anonymousdomain`. ### Configurar Jicofo Jicofo es quien decide si se puede crear una conferencia, así que también debe saber que la autenticación está activada: ```bash sudo nano /etc/jitsi/jicofo/jicofo.conf ``` Dentro del bloque `jicofo { ... }` existente, añade el bloque `authentication`: ```hocon jicofo { authentication: { enabled: true type: XMPP login-url: meet.your_domain } // ... resto de la configuración existente (xmpp, etc.) } ``` ### Crear usuarios y reiniciar Crea un usuario para cada persona que deba poder abrir salas. `prosodyctl` pedirá la contraseña de forma interactiva, así no queda en el historial de la shell: ```bash sudo prosodyctl adduser ana@meet.your_domain ``` Comprueba la configuración de Prosody y reinicia los servicios: ```bash sudo prosodyctl check config sudo systemctl restart prosody jicofo jitsi-videobridge2 ``` ```output Checking config... Done. ``` Vuelve a abrir `https://meet.your_domain` en una ventana privada del navegador y entra en una sala nueva. Jitsi mostrará el aviso de que la reunión aún no ha empezado y un botón **I am the host** (o **Soy el anfitrión**) que pide usuario y contraseña. Con el usuario `ana` la sala se crea; a partir de ese momento, los invitados que abran el mismo enlace entran sin credenciales. Para eliminar un usuario más adelante: ```bash sudo prosodyctl deluser ana@meet.your_domain ``` ## Paso 6: Ajustar las opciones por defecto La mayoría de opciones de la interfaz se configuran en el mismo archivo `meet.your_domain-config.js`, que Nginx sirve como archivo estático: los cambios se aplican al recargar la página, sin reiniciar servicios. ```bash sudo nano /etc/jitsi/meet/meet.your_domain-config.js ``` Busca estas opciones (muchas están comentadas) y ajústalas según tus necesidades: ```javascript // Idioma por defecto de la interfaz defaultLanguage: 'es', // A partir del participante número 10, entrar con micrófono y cámara apagados startAudioMuted: 10, startVideoMuted: 10, // En el móvil, abrir la reunión en el navegador en lugar de sugerir la app disableDeepLinking: true, ``` Guarda el archivo, recarga la página y comprueba que la interfaz aparece en español. ## Solución de problemas **Los participantes se desconectan a los pocos segundos o no ven vídeo.** El puerto `10000/udp` no es accesible. Comprueba la regla de UFW y cualquier cortafuegos externo, y revisa el registro de Videobridge: ```bash sudo journalctl -u jitsi-videobridge2 -n 50 --no-pager ``` **Dos personas se ven entre ellas pero con tres o más falla.** Con dos participantes Jitsi usa conexión directa entre navegadores; a partir de tres el tráfico pasa por Videobridge. Es el mismo problema de `10000/udp` del punto anterior. **Error de autenticación al pulsar "I am the host".** Revisa que el usuario existe y pertenece al dominio principal, no al de invitados, y consulta los registros de Prosody y Jicofo: ```bash sudo tail -n 50 /var/log/prosody/prosody.log sudo journalctl -u jicofo -n 50 --no-pager ``` **El servidor está detrás de NAT (IP privada).** Videobridge anuncia su IP privada y los clientes externos no pueden conectar. Edita `/etc/jitsi/videobridge/sip-communicator.properties` y añade la IP privada y la pública: ```ini org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=your_private_ip org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=your_server_ip ``` Reinicia después con `sudo systemctl restart jitsi-videobridge2`. En un VPS con IP pública asignada directamente no hace falta. ## Conclusión Tienes un servidor Jitsi Meet propio en Ubuntu 24.04 con HTTPS, en el que solo los usuarios que tú creas pueden abrir reuniones y los invitados se unen con el enlace. Como siguientes pasos puedes activar la sala de espera (*lobby*) desde las opciones de seguridad de cada reunión, instalar Jibri en un servidor aparte para grabar reuniones o emitirlas en directo, o añadir más servidores Videobridge si necesitas más capacidad.