- Implementación de un sistema de autenticación flexible que soporta cuentas locales y federadas mediante protocolos como OAuth2, OIDC y LDAP.
- Control de acceso granular basado en roles, grupos y Listas de Control de Acceso (ACL) para gestionar la visibilidad de recursos.
- Capacidad de personalización avanzada de permisos y configuraciones específicas según el perfil del usuario o el grupo asignado.
Si estás buscando una alternativa autoalojada para interactuar con diferentes modelos de inteligencia artificial, LibreChat es una de las opciones más completas. La plataforma permite centralizar el acceso a proveedores como OpenAI, Anthropic y Google, pero también ofrece algo especialmente importante cuando la utiliza un equipo: controlar quién puede entrar y qué funciones tiene disponibles.
Esta gestión no se limita a crear una cuenta con correo y contraseña. LibreChat combina sistemas de autenticación, roles, grupos, permisos para funciones concretas y listas de control de acceso para los recursos compartidos. Gracias a ello, es posible impedir que determinados usuarios creen agentes, permitir que un equipo edite prompts o delegar parte de la administración sin entregar acceso total al servidor. Y si todavía estás valorando la plataforma, puedes consultar nuestra comparación entre LibreChat, ChatGPT y otras alternativas.
Cómo se crean los usuarios en LibreChat

De forma predeterminada, LibreChat permite que una persona se registre utilizando su correo electrónico y una contraseña. Cuando se pone en marcha una instancia nueva, la primera cuenta registrada recibe el rol ADMIN, por lo que conviene crearla antes de publicar el servicio y utilizar para ella unas credenciales seguras.
El resto de las cuentas registradas recibe inicialmente el rol USER. El administrador puede controlar el inicio de sesión y el registro mediante diferentes variables del archivo .env:
ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATION=false
ALLOW_EMAIL_LOGIN permite utilizar cuentas locales, mientras que ALLOW_REGISTRATION controla si aparecen disponibles los nuevos registros mediante correo electrónico. Las otras dos variables hacen lo mismo con los proveedores sociales compatibles.
Una configuración habitual en una instancia privada consiste en crear primero las cuentas necesarias y después cerrar el registro público:
ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATION=false
Aunque el registro esté desactivado, el administrador puede añadir una cuenta local mediante el script incluido con LibreChat. En una instalación realizada con el archivo Docker Compose predeterminado, el comando es:
docker compose exec api npm run create-user
El asistente solicitará el correo electrónico y la contraseña de la nueva cuenta. En una instalación local, sin Docker, puede ejecutarse desde la raíz del proyecto:
npm run create-user
LibreChat también incorpora un script para eliminar cuentas. Antes de utilizarlo conviene comprobar qué conversaciones, agentes y recursos pertenecen al usuario, ya que borrar una cuenta no debe confundirse con retirarle temporalmente el acceso.
Utilizar LDAP, SAML, OAuth u OpenID Connect
Para un equipo pequeño pueden ser suficientes las cuentas locales. En una organización resulta más cómodo conectar LibreChat con el sistema de identidad que ya utilizan los empleados.
La plataforma admite diferentes métodos de autenticación:
- LDAP o Active Directory, para validar usuarios contra un directorio existente.
- SAML, utilizado habitualmente para implementar inicio de sesión único empresarial.
- OAuth2, compatible con proveedores como Google, GitHub, Discord o Apple.
- OpenID Connect, empleado para conectar servicios como Keycloak, Auth0, AWS Cognito o Microsoft Entra ID.
Debes tener en cuenta que SAML y OpenID Connect no funcionan simultáneamente. Si ambos están habilitados, LibreChat da prioridad a OpenID Connect y desactiva SAML. Además, estos dos métodos no permiten separar mediante una simple variable el inicio de sesión de usuarios existentes y el alta de usuarios nuevos, como sí sucede con el registro local o social.
En Keycloak puedes utilizar OPENID_REQUIRED_ROLE para impedir el acceso a quienes no tengan uno de los roles autorizados. Esto resulta útil si no quieres que cualquier cuenta del directorio pueda entrar en la instancia.
Integrar LibreChat con Microsoft Entra ID
Microsoft Entra ID puede conectarse a LibreChat como proveedor OpenID Connect. Cada persona queda vinculada mediante su identificador estable y puede iniciar sesión utilizando las credenciales corporativas.
La integración puede ampliarse mediante Microsoft Graph para que el selector de personas de LibreChat encuentre usuarios y grupos de la organización. Para ello hacen falta los permisos adecuados en la aplicación registrada en Entra ID y debe activarse la reutilización de los tokens OpenID:
OPENID_REUSE_TOKENS=true
USE_ENTRA_ID_FOR_PEOPLE_SEARCH=true
ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=true
OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All
Algunos permisos, como GroupMember.Read.All, pueden necesitar el consentimiento de un administrador de Entra ID.
Esta integración no debe describirse simplemente como una sincronización automática de nombres. Microsoft Graph permite buscar personas, consultar pertenencias y utilizar grupos externos dentro del sistema de permisos, siempre dentro de los alcances concedidos a la aplicación.
Administrar usuarios desde el panel de LibreChat

LibreChat dispone de un panel de administración independiente que se conecta a la misma API y base de datos de la instancia principal. Desde él se pueden consultar usuarios, administrar grupos y roles, aplicar configuraciones específicas y conceder capacidades administrativas.
No obstante, en la documentación actual el LibreChat Admin Panel todavía aparece marcado como Preview. Aunque ya se puede probar y forma parte de los despliegues oficiales mediante Docker Compose, conviene comprobar su estado y compatibilidad antes de depender de él en un entorno de producción.
El panel permite, entre otras operaciones:
- Buscar y consultar las cuentas de la instancia.
- Crear grupos locales y modificar sus integrantes.
- Crear roles personalizados y asignarlos a los usuarios.
- Modificar los permisos asociados a cada rol.
- Aplicar configuraciones diferentes a grupos o roles.
- Delegar funciones administrativas mediante concesiones del sistema.
El panel funciona como un servicio separado. Las operaciones se procesan mediante las rutas /api/admin/* de LibreChat, que comprueban si la cuenta dispone de los permisos administrativos necesarios antes de aceptar cada cambio.
Entender la diferencia entre roles y grupos
LibreChat incorpora dos roles del sistema que siempre están presentes:
- ADMIN: tiene acceso completo a la configuración, los recursos y las funciones administrativas.
- USER: es el rol básico que reciben las cuentas nuevas.
A partir de LibreChat 0.8.5 también se pueden crear roles personalizados. Cada uno contiene una matriz de permisos para decidir si sus integrantes pueden utilizar, crear, compartir o publicar agentes, prompts, servidores MCP y otras funciones.
Por ejemplo, podrías crear un rol denominado “Editor de prompts” con permiso para crear y compartir prompts, pero sin capacidad para publicar agentes o modificar la configuración general.
Un usuario puede tener varios roles. En ese caso, sus permisos efectivos se calculan mediante la unión de las capacidades concedidas. Esto significa que añadir un segundo rol más permisivo puede devolverle una función que intentabas restringir desde el primero.
Los grupos tienen una finalidad diferente. Sirven para reunir usuarios por departamento, proyecto o necesidad de acceso. Pueden crearse localmente o proceder de una integración compatible, como Entra ID.
Los grupos se utilizan como destinatarios de recursos compartidos y también pueden recibir anulaciones de configuración. De esta manera, un grupo de investigadores podría utilizar endpoints adicionales o una configuración distinta sin modificar la experiencia del resto de la organización.
Configurar permisos para agentes, prompts y servidores MCP

Los permisos de función determinan qué puede hacer cada rol. LibreChat permite controlar por separado acciones como:
- USE: utilizar una función o tipo de recurso.
- CREATE: crear nuevos recursos.
- SHARE: compartirlos con usuarios, grupos o roles concretos.
- SHARE_PUBLIC: hacerlos accesibles para todos los usuarios autenticados de la instancia.
La diferencia entre SHARE y SHARE_PUBLIC es especialmente importante. Puedes permitir que un equipo comparta agentes internamente sin concederle la capacidad de publicarlos para toda la organización.
En versiones anteriores, buena parte de estos permisos se inicializaba mediante el bloque interface de librechat.yaml. Esta posibilidad continúa existiendo para preparar el rol USER durante el arranque, pero ya no es el método recomendado para la administración cotidiana.
El panel permite modificar directamente los permisos de cada rol, incluidos los roles personalizados, sin tener que reiniciar LibreChat. El YAML sigue siendo útil para el despliegue inicial y para instalaciones administradas completamente mediante archivos.
Compartir recursos mediante listas ACL
Los permisos generales no determinan por sí solos quién puede abrir cada agente o prompt. Los recursos compartibles cuentan además con una lista de control de acceso o ACL propia.
Este sistema se aplica, entre otros elementos, a los agentes, grupos de prompts, servidores MCP, agentes remotos, archivos y proyectos. El propietario puede compartir cada recurso con usuarios, grupos o roles y escoger uno de estos niveles:
- Viewer: permite ver y utilizar el recurso.
- Editor: permite utilizarlo y modificar su configuración.
- Owner: concede control completo para editar, borrar y volver a compartir.
Por ejemplo, una persona puede tener permiso general para usar agentes, pero no podrá acceder a un agente privado si no aparece en su ACL. Del mismo modo, recibir acceso como Viewer a un agente no le concede automáticamente permiso para crear agentes nuevos.
Cuando compartas agentes con archivos, instrucciones internas o herramientas capaces de modificar datos, debes revisar cuidadosamente el nivel asignado. LibreChat advierte de que un agente puede revelar información adjunta durante una conversación, incluso cuando el usuario no puede abrir directamente su configuración.
Delegar tareas administrativas con system grants
Convertir a una persona en ADMIN para que realice una sola tarea contradice el principio de menor privilegio. Para evitarlo, LibreChat incorpora las denominadas concesiones del sistema o system grants.
Estas concesiones permiten entregar capacidades administrativas concretas a un usuario, grupo o rol. Entre los ejemplos documentados se encuentran:
manage:users, para administrar usuarios.manage:roles, para gestionar roles.manage:mcpservers, para administrar servidores MCP.read:usage, para consultar información de uso.
De esta manera, el responsable de soporte puede gestionar cuentas sin recibir acceso completo a toda la instancia. Las comprobaciones se realizan en la API de LibreChat, por lo que el panel no puede atribuirse privilegios por sí mismo.
Como el panel de administración todavía se encuentra en Preview, conviene probar detenidamente estas delegaciones y conservar al menos una cuenta ADMIN local de recuperación.
Qué archivos intervienen en la configuración
LibreChat reparte la configuración entre diferentes componentes, pero cada uno tiene una finalidad clara:
.env: contiene variables de entorno, secretos, opciones de autenticación y conexiones con servicios.librechat.yaml: define endpoints personalizados, modelos, opciones de interfaz, agentes, MCP y otras funciones avanzadas.- Base de datos: guarda usuarios, roles personalizados, grupos, ACL, concesiones y configuraciones gestionadas desde el panel.
En una instalación con Docker, no basta con crear librechat.yaml. El archivo tiene que estar montado dentro del contenedor de la API. Después de modificarlo también es necesario reiniciar el servicio.
Las versiones actuales validan el YAML durante el arranque. Si contiene una clave desconocida, una indentación incorrecta o un valor incompatible, LibreChat se detendrá y mostrará el error en los registros. Puedes comprobarlos con:
docker compose logs api
Existe una variable llamada CONFIG_BYPASS_VALIDATION para omitir temporalmente la validación, pero no debe utilizarse como solución permanente. Lo correcto es localizar y reparar el error.
MongoDB almacena los datos principales de LibreChat, incluidas las cuentas y conversaciones. MeiliSearch se utiliza para acelerar la búsqueda de mensajes y PostgreSQL con soporte vectorial interviene en la API de RAG. Estos últimos servicios no son el núcleo del sistema de usuarios y pueden depender de las funciones habilitadas en cada despliegue.
Recomendaciones para proteger las cuentas
Una instancia de LibreChat puede contener conversaciones privadas, documentos corporativos y credenciales para acceder a otros servicios. Por este motivo, la administración de usuarios debe diseñarse antes de abrir el servicio a todo el equipo.
Conviene aplicar estas medidas:
- Crear y proteger la primera cuenta ADMIN antes de publicar la instancia.
- Desactivar el registro abierto cuando no sea necesario.
- Utilizar HTTPS y secretos JWT propios y seguros.
- Configurar verificación de correo y recuperación de contraseña si se usan cuentas locales.
- Aplicar el principio de menor privilegio en roles, ACL y system grants.
- Revisar periódicamente usuarios, grupos y recursos compartidos públicamente.
- Conservar una cuenta administrativa local para recuperar el acceso si falla el proveedor SSO.
- Comprobar los registros después de modificar la autenticación o los permisos.
Crear y gestionar usuarios en LibreChat requiere distinguir entre autenticación y autorización. El método de inicio de sesión comprueba quién es cada persona; los roles deciden qué funciones puede utilizar; los grupos facilitan la administración colectiva; y las ACL determinan quién puede acceder a cada recurso concreto.
Con esta estructura puedes utilizar LibreChat tanto en un pequeño servidor privado como en una organización con directorio corporativo, sin entregar a todos los usuarios acceso completo a agentes, prompts, servidores MCP o funciones administrativas.
Soy un apasionado de la tecnología que ha convertido sus intereses «frikis» en profesión. Llevo más de 10 años de mi vida utilizando tecnología de vanguardia y trasteando todo tipo de programas por pura curiosidad. Ahora me he especializado en tecnología de ordenador y videojuegos. Esto es por que desde hace más de 5 años que trabajo redactando para varias webs en materia de tecnología y videojuegos, creando artículos que buscan darte la información que necesitas con un lenguaje entendible por todos.
Si tienes cualquier pregunta, mis conocimientos van desde todo lo relacionado con el sistema operativo Windows así como Android para móviles. Y es que mi compromiso es contigo, siempre estoy dispuesto a dedicarte unos minutos y ayudarte a resolver cualquier duda que tengas en este mundo de internet.