Permitir que los usuarios autorizados creen salas de Jitsi con inicio de sesión de Keycloak.

Para limitar la creación de salas de Jitsi Meet a usuarios específicos, se requiere la autenticación de los anfitriones y la emisión de credenciales únicamente a las cuentas aprobadas. Para las nuevas instalaciones autoalojadas, Jitsi recomienda ahora la autenticación basada en tokens; esta guía utiliza Keycloak como proveedor de identidad y permite que los invitados se unan a las salas solo después de que un anfitrión aprobado las inicie.

1. Verifique la implementación y elija sus cuentas de host.

Estas instrucciones están dirigidas a una instalación autohospedada de Jitsi Meet a partir de paquetes Debian o Ubuntu, con acceso de administrador a Prosody, Nginx y la configuración web de Jitsi. Se presupone que Keycloak ya está instalado o puede implementarse de forma segura. Prosody es el servidor de mensajería XMPP; un JSON Web Token (JWT) es una credencial firmada que se utiliza para demostrar que un usuario se ha autenticado. Keycloak es un proveedor de identidad que gestiona el inicio de sesión de los usuarios.

El manual de Jitsi marca la receta antigua de dominio seguro con nombre de usuario y contraseña como obsoleta y dirige las nuevas instalaciones a la autenticación por token. Sus instrucciones de autenticación actuales se actualizaron el 5 de octubre de 2026. Si ya utiliza Docker, no copie las rutas de los paquetes que aparecen a continuación: la guía de configuración oficial de Docker utiliza variables de entorno como ENABLE_AUTH, ENABLE_GUESTS, y AUTH_TYPE.

Antes de editar, anote el nombre de host de su reunión pública, confirme que HTTPS funciona, haga una copia de seguridad de los archivos de configuración que planea modificar y decida qué cuentas con nombre pueden albergar reuniones. En este ejemplo, la dirección de la reunión es jitsi.example.com; reemplácela en todas partes con su host real.

2. Otorgue acceso en Keycloak únicamente a los hosts autorizados.

Crear un dominio dedicado

En la consola de administración de Keycloak, cree y seleccione un reino llamado jitsi-realm. Un reino es una colección aislada de usuarios y configuraciones de aplicaciones. Desactive el registro de usuarios abierto y evite importar automáticamente un directorio de empresa sin restricciones: con esta configuración, cualquier cuenta que pueda autenticarse en el reino aceptado puede convertirse en creador de reuniones.

Formulario de creación de reino de Keycloak con el nombre de reino jitsi-realm.
Crea un dominio independiente para mantener bajo tu control la lista de creadores de reuniones de Jitsi.

Registra el cliente web de Jitsi

Cree un cliente OpenID Connect llamado jitsi. OpenID Connect (OIDC) es el protocolo de inicio de sesión que Keycloak utiliza para devolver información de identidad a Jitsi. Siguiendo el ejemplo oficial de Jitsi, introduzca estos valores exactos de devolución de llamada, ajustando el nombre de host:

  • URI de redireccionamiento válida:https://jitsi.example.com/static/sso.html
  • URI de redireccionamiento válida después del cierre de sesión:https://jitsi.example.com/static/logout.html
  • Origen web:https://jitsi.example.com
Campos de creación de cliente de Keycloak que identifican al cliente Jitsi OpenID Connect.
El cliente Jitsi está registrado como una aplicación OpenID Connect en Keycloak.
Configuración del cliente Keycloak que muestra la URL de redireccionamiento de inicio de sesión único de Jitsi.
La URI de redireccionamiento envía al host que ha iniciado sesión de vuelta a Jitsi después de la autenticación.

Añade las personas permitidas

En la sección Usuarios, cree una cuenta para cada host autorizado y, a continuación, establezca la contraseña de dicho usuario en Credenciales. Utilice cuentas independientes en lugar de compartir un único inicio de sesión de administrador. Si una cuenta ya no debe crear reuniones, debe deshabilitarse o denegarse su acceso a este dominio. Si necesita restricciones para un solo grupo dentro de un dominio compartido, añada una política de autorización verificada por separado; los pasos descritos aquí no aplican automáticamente la pertenencia a grupos de Keycloak.

Lista de usuarios de Keycloak con cuentas de host aprobadas individualmente.
Limita la lista de anfitriones de Jitsi elegibles a las cuentas gestionadas individualmente.
Área de credenciales de usuario de Keycloak con una acción para establecer contraseñas.
Configure una credencial independiente para cada host aprobado antes de probar el inicio de sesión.

3. Conecta Keycloak al servidor Jitsi.

Proxy Keycloak puntos finales de reino a través de HTTPS

Configure Keycloak con el nombre de host público correcto y los encabezados de proxy inverso de confianza, luego dirija /realms/las solicitudes desde su nombre de host Jitsi a su oyente privado de Keycloak. Para una instancia de Keycloak disponible en 127.0.0.1:18080, agregue el siguiente bloque de ubicación dentro del bloque de servidor HTTPS Jitsi Nginx existente, antes de las rutas generales de Jitsi:

location ~ ^/realms/(.*) {
    proxy_pass http://127.0.0.1:18080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Esto presupone que Keycloak es accesible localmente en ese puerto; reemplace el puerto de origen para su implementación. No exponga innecesariamente la consola de administración ni el puerto de backend de Keycloak. Consulte la documentación del proxy inverso de Keycloak para obtener información sobre el proxy de producción y los controles de nombre de host.

Editor de texto con un bloque de ubicación Nginx que reenvía las solicitudes de dominio a Keycloak.
El editor de Nginx muestra la sección realm-proxy; mantenga intactas las demás rutas de Jitsi.

Requerir tokens en Prosody

Editar /etc/prosody/conf.avail/jitsi.example.com.cfg.lua. Agregue la configuración del emisor y la audiencia, luego actualice el archivo principal existente VirtualHostpara usar la autenticación por token. Combine estas líneas con su otra configuración; no cree una segunda copia de ese bloque de host:

asap_accepted_issuers = { "https://jitsi.example.com/realms/jitsi-realm" }
asap_accepted_audiences = { "account" }
asap_require_room_claim = false

VirtualHost "jitsi.example.com"
    authentication = "token"
    app_id = "jitsi"
    allow_empty_token = false
    cache_keys_url = "https://jitsi.example.com/realms/jitsi-realm/protocol/openid-connect/certs"

Para el acceso de invitados, agregue un guest.jitsi.example.comhost virtual separado con authentication = "jitsi-anonymous", c2s_require_encryption = false, y el smacksmódulo, como se muestra en las instrucciones de Jitsi. Este es un dominio XMPP interno: no cree un DNS público ni un certificado separado para él. En la lista de módulos del host principal existente, agregue persistent_lobby; en la conference.jitsi.example.comlista de módulos del componente MUC existente, agregue muc_wait_for_host. Un MUC es el componente de chat multiusuario que mantiene las salas de conferencias. Conserve los módulos ya listados.

Configurar el flujo de inicio de sesión del navegador

En /etc/jitsi/meet/jitsi.example.com-config.js, agregue anonymousdomain: 'guest.jitsi.example.com'al hostsobjeto existente. Agregue la configuración OIDC documentada por Jitsi:

config.tokenAuthUrl='https://'+ config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect/auth?client_id=jitsi&response_type=code&scope=openid&state={state}&redirect_uri=https://'+ config.hosts.domain + '/static/sso.html&code_challenge={code_challenge}&code_challenge_method=S256';
config.tokenLogoutUrl='https://'+ config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect/logout?post_logout_redirect_uri=https://'+ config.hosts.domain + '/static/logout.html';
config.tokenAuthInline=true;
config.sso={ ssoService: config.hosts.domain, tokenService: config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect', clientId: "jitsi" };

Estos valores implementan el flujo de inicio de sesión con código de autorización mediante PKCE (Proof Key for Code Exchange), una protección para la autorización basada en navegador. El manual de Jitsi indica específicamente que se debe dejar jicofo.confla autenticación deshabilitada para el modo token; no copie su bloque de autenticación de dominio seguro XMPP obsoleto.

Formulario de inicio de sesión de Jitsi Meet con campos para nombre de usuario y contraseña, y botón de "Iniciar sesión".
El formulario de inicio de sesión del usuario representa la verificación de credenciales antes de que un anfitrión autorizado cree una sala.

Validar y recargar los servicios

Verifique la sintaxis de Nginx y luego reinicie solo los servicios que aparecen en las instrucciones de autenticación de tokens actuales. Realice estos cambios durante una ventana de mantenimiento si su servidor Jitsi ya está en uso.

sudo nginx -t
sudo systemctl restart prosody
sudo systemctl restart nginx

4. Evite estos errores de permisos e inicio de sesión.

  • Todos pueden crear una sala: confirmen que el anfitrión principal de Prosody esté autenticado mediante token, que no se permiten tokens vacíos y que el anfitrión invitado sea independiente. Realicen la prueba en una sesión de navegador limpia, no en una que aún tenga una sesión iniciada válida.
  • Los usuarios autorizados no pueden iniciar sesión: compare el emisor del reino de Keycloak, el nombre de host HTTPS público, el ID de cliente, la URI de redireccionamiento y la Prosody cache_keys_url. Un error en la redireccionamiento del navegador no indica que los permisos del usuario sean correctos.
  • Los invitados nunca entran en una sala: compruebe el dominio anónimo tanto en Prosody como en Jitsi config.js, además de los módulos wait-for-host. Un estado de espera en el lobby o para invitados es diferente de un fallo de autenticación.

5. Verifica quién puede crear una nueva reunión.

Abre una URL de sala que nunca hayas usado en una ventana de navegación privada sin iniciar sesión. El invitado no debería poder iniciar la conferencia como anfitrión. A continuación, inicia sesión como usuario autorizado de Keycloak y crea esa sala; un invitado debería poder unirse si has habilitado el dominio de invitado. Por último, prueba con una cuenta deshabilitada o no autorizada y confirma que no puede autenticarse ni crear una nueva sala.

Vista de creación de reuniones de Jitsi Meet con el nombre de sala team-sync y un botón Crear reunión.
Un anfitrión autenticado introduce el nombre de una sala para iniciar una reunión tras superar la comprobación de inicio de sesión.

Si alguna prueba falla, inspeccione sudo journalctl -u prosody -u nginx --since "10 minutes ago"junto con los eventos de autenticación de Keycloak, sin publicar tokens ni contraseñas de los registros. La solución se confirma solo cuando una cuenta autorizada puede crear una sala nueva y un usuario no autenticado no puede.

Dejar un comentario

Automatice las copias de seguridad consistentes de Nextcloud con Restic y Cron.

Automatice las copias de seguridad consistentes de Nextcloud con Restic y Cron.

Realice copias de seguridad de los archivos de Nextcloud y MariaDB conjuntamente, programe instantáneas Restic cifradas con cron y verifique la recuperación sin poner en riesgo el servidor en producción.

Permitir que los usuarios autorizados creen salas de Jitsi con inicio de sesión de Keycloak.

Permitir que los usuarios autorizados creen salas de Jitsi con inicio de sesión de Keycloak.

Permitir únicamente que las cuentas autorizadas inicien salas de Jitsi Meet mediante Keycloak y autenticación por token, manteniendo la opción de unirse como invitado cuando sea necesario.

Copia de seguridad y restauración de un buzón de correo de Zimbra CE mediante exportaciones TGZ

Copia de seguridad y restauración de un buzón de correo de Zimbra CE mediante exportaciones TGZ

Exporta un buzón individual de Zimbra Community Edition, valida su copia de seguridad TGZ y restaura los elementos que falten sin sobrescribir el correo existente.

Sincroniza los usuarios de Active Directory con ONLYOFFICE DocSpace a través de LDAP.

Sincroniza los usuarios de Active Directory con ONLYOFFICE DocSpace a través de LDAP.

Conecte ONLYOFFICE DocSpace a Active Directory u OpenLDAP, importe usuarios y grupos de forma segura, asigne campos de cuenta y programe una sincronización fiable.

Debian 12 en un VPS con poca RAM: Cómo reducir los fallos por falta de memoria de MySQL

Debian 12 en un VPS con poca RAM: Cómo reducir los fallos por falta de memoria de MySQL

Diagnosticar errores de memoria insuficiente (OOM kills) en MySQL en Debian 12, comprobar los límites de memoria del VPS, configurar el espacio de intercambio y ajustar la memoria y la concurrencia de la base de datos sin prometer una solución universal.

Agregar fuentes al servidor de documentos ONLYOFFICE: Docker vs Linux

Agregar fuentes al servidor de documentos ONLYOFFICE: Docker vs Linux

Instale fuentes personalizadas en ONLYOFFICE Document Server, compare los montajes persistentes de Docker con las copias directas, reconstruya la lista de fuentes y verifique el resultado.

Coloca ONLYOFFICE Docs detrás de HAProxy sin interrumpir la edición.

Coloca ONLYOFFICE Docs detrás de HAProxy sin interrumpir la edición.

Configure HAProxy HTTPS, el reenvío de encabezados, los tiempos de espera de WebSocket y las comprobaciones de estado para ONLYOFFICE Docs, y luego verifique la edición y el guardado.

Instalar y firmar módulos de kernel personalizados en SLES 15 Secure Boot

Instalar y firmar módulos de kernel personalizados en SLES 15 Secure Boot

Cargue un módulo de kernel SLES 15 personalizado sin deshabilitar el arranque seguro. Asegúrese de que el kernel en ejecución coincida, firme el archivo .ko, registre una clave MOK y verifique la carga.

Reenvío seguro de Syslog de SLES con rsyslog y TLS mutuo

Reenvío seguro de Syslog de SLES con rsyslog y TLS mutuo

Envía los registros del sistema SLES a un recolector rsyslog remoto a través de TLS autenticado, con comprobaciones de certificados, almacenamiento en búfer de interrupciones y pruebas de entrega.

Cómo iniciar Ubuntu Server en modo de emergencia: Guía de recuperación paso a paso

Cómo iniciar Ubuntu Server en modo de emergencia: Guía de recuperación paso a paso

Diagnostica de forma segura el modo de emergencia de Ubuntu Server. Lee los registros de arranque, comprueba los puntos de montaje raíz y fstab, repara una unidad defectuosa, gestiona los errores del sistema de archivos y verifica un reinicio correcto.