Variables de entorno
Guía integral para configurar el entorno de su aplicación con el archivo `.env`. Este documento es su recurso único para comprender y personalizar las variables de entorno que determinarán el comportamiento de su aplicación en diferentes contextos.
Bienvenido a la guía completa para configurar el entorno de su aplicación con el archivo .env. Este documento es su recurso integral para comprender y personalizar las variables de entorno que definirán el comportamiento de su aplicación en diferentes contextos.
Si bien la configuración predeterminada proporciona una base sólida para una instalación estándar de docker, profundizar en esta guía revelará todo el potencial de LibreChat. Esta guía le permite adaptar LibreChat a sus necesidades precisas. Descubra cómo ajustar la disponibilidad de modelos de lenguaje, integrar inicios de sesión sociales, gestionar el sistema de moderación automática y mucho más. Se trata de darle el control para ajustar LibreChat y lograr una experiencia de usuario óptima.
Recordatorio: Por favor, reinicie LibreChat para que los cambios de configuración surtan efecto
Alternativamente, puedes crear un nuevo archivo llamado docker-compose.override.yml en el mismo directorio que tu archivo principal docker-compose.yml para LibreChat, donde puedes establecer tus variables de .env según sea necesario bajo environment, o modificar la configuración predeterminada proporcionada por el docker-compose.yml principal, sin la necesidad de editar directamente o duplicar todo el archivo.
Para más información, consulta:
-
Nuestra guía rápida:
-
La documentación oficial de Docker:
-
También puede ver un ejemplo de un archivo de anulación para LibreChat en su carpeta de LibreChat y en GitHub:
Configuración del servidor
Puerto
- El servidor escucha en un puerto específico.
- La variable de entorno
PORTestablece el puerto donde escucha el servidor. De forma predeterminada, está configurada en3080.
| Key | Type | Description | Example |
|---|---|---|---|
| HOST | string | Especifica el host. | HOST=localhost |
| PORT | number | Especifica el puerto. | PORT=3080 |
Trust proxy
Utilice la dirección que esté a una distancia máxima de n saltos de la aplicación Express.
req.socket.remoteAddress es el primer salto, y el resto se buscan en el encabezado X-Forwarded-For de derecha a izquierda.
Un valor de 0 significa que la primera dirección no confiable sería req.socket.remoteAddress, es decir, no hay un proxy inverso.
El valor predeterminado de la variable de entorno TRUST_PROXY está establecido en 1.
Consulte Express.js - trust proxy para obtener más información al respecto.
| Key | Type | Description | Example |
|---|---|---|---|
| TRUST_PROXY | number | Especifica el número de saltos. | TRUST_PROXY=1 |
Configuración de credenciales
Para almacenar credenciales de forma segura, necesitas una clave y un IV fijos. Puedes configurarlos aquí para los entornos de prod y dev.
| Key | Type | Description | Example |
|---|---|---|---|
| CREDS_KEY | string | Clave de 32 bytes (64 caracteres en hexadecimal) para almacenar credenciales de forma segura. Requerida para el inicio de la aplicación. | CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0 |
| CREDS_IV | string | IV de 16 bytes (32 caracteres en hex) para almacenar credenciales de forma segura. Requerido para el inicio de la aplicación. | CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb |
Advertencia
Advertencia: Si no configuras CREDS_KEY y CREDS_IV, la aplicación fallará al iniciarse. - Puedes usar este Generador de claves para generarlas rápidamente.
Manejo de archivos estáticos
| Key | Type | Description | Example |
|---|---|---|---|
| STATIC_CACHE_MAX_AGE | string | Cache-Control max-age en segundos | STATIC_CACHE_MAX_AGE=172800 |
| STATIC_CACHE_S_MAX_AGE | string | Cache-Control s-maxage en segundos para cachés compartidas (CDN y proxies) | STATIC_CACHE_S_MAX_AGE="86400" |
| DISABLE_COMPRESSION | boolean | Deshabilita la compresión para archivos estáticos. | DISABLE_COMPRESSION=false |
| ENABLE_IMAGE_OUTPUT_GZIP_SCAN | boolean | Habilita el servicio de versiones gzipped de imágenes subidas si están presentes en la misma carpeta. | ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true |
| ENABLE_STATIC_ASSET_BROTLI | boolean | Habilita el servicio de versiones Brotli precomprimidas de los activos estáticos de la aplicación cuando estén disponibles. | ENABLE_STATIC_ASSET_BROTLI=true |
Comportamiento:
Establece los encabezados Cache-Control para archivos estáticos. Estas configuraciones solo se activan cuando NODE_ENV está configurado en production.
- Descomente
STATIC_CACHE_MAX_AGEpara cambiar elmax-agelocal de los archivos estáticos. Por defecto, esto está configurado en 2 días (172800 segundos). - Descomente
STATIC_CACHE_S_MAX_AGEpara establecer els-maxagepara cachés compartidas (CDNs y proxies). Por defecto, esto está configurado en 1 día (86400 segundos). - Descomente
DISABLE_COMPRESSIONpara desactivar la compresión de archivos estáticos. De forma predeterminada, la compresión está habilitada. - Descomente
ENABLE_IMAGE_OUTPUT_GZIP_SCANpara habilitar el escaneo y la entrega de versiones comprimidas en gzip de las imágenes si han sido precomprimidas en la misma carpeta, con el mismo nombre y una extensión .gz. De forma predeterminada, el escaneo gzip para imágenes subidas está deshabilitado. - Descomente
ENABLE_STATIC_ASSET_BROTLIpara servir versiones.brprecomprimidas de los activos estáticos de la aplicación cuando existan. Cuando está habilitado, se prefiere Brotli sobre gzip para los archivos estáticos servidos por la API.
Advertencia
- Esto solo afecta a los archivos estáticos servidos por el servidor de la API y no es aplicable a Firebase, NGINX o cualquier otra configuración.
Control de caché de Index HTML
| Key | Type | Description | Example |
|---|---|---|---|
| INDEX_CACHE_CONTROL | string | Encabezado Cache-Control para index.html | INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate |
| INDEX_PRAGMA | string | Encabezado Pragma para index.html | INDEX_PRAGMA=no-cache |
| INDEX_EXPIRES | string | Encabezado Expires para index.html | INDEX_EXPIRES=0 |
Comportamiento:
Controla los encabezados de caché específicamente para la respuesta index.html. De forma predeterminada, estos ajustes evitan el almacenamiento en caché para garantizar que los usuarios siempre obtengan la versión más reciente de la aplicación.
Nota
A diferencia de los activos estáticos que se almacenan en caché para mejorar el rendimiento, los encabezados de caché del archivo index.html se configuran por separado para garantizar que los usuarios siempre obtengan el shell de la aplicación más reciente.
Base de datos MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_URI | string | Especifica el URI de MongoDB. | MONGO_URI=mongodb://127.0.0.1:27017/LibreChat |
Cambie esto por su URI de MongoDB si es diferente. Debe añadir LibreChat o su propio APP_TITLE como nombre de la base de datos en la URI.
Si está utilizando una base de datos en línea, el formato del URI es mongodb+srv://<username>:<password>@<host>/<database>?<options>. Su MONGO_URI debería verse así:
mongodb+srv://username:[email protected]/LibreChat?retryWrites=true(retryWriteses la única opción que necesita al usar la base de datos en línea.)
Configuración del pool de conexiones de MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_MAX_POOL_SIZE | number | El número máximo de conexiones en el grupo de conexiones. | # MONGO_MAX_POOL_SIZE= |
| MONGO_MIN_POOL_SIZE | number | El número mínimo de conexiones en el pool de conexiones. | # MONGO_MIN_POOL_SIZE= |
| MONGO_MAX_CONNECTING | number | El número máximo de conexiones que pueden estar en proceso de establecerse simultáneamente por el grupo de conexiones. | # MONGO_MAX_CONNECTING= |
| MONGO_MAX_IDLE_TIME_MS | number | El número máximo de milisegundos que una conexión puede permanecer inactiva en el pool antes de ser eliminada y cerrada. | # MONGO_MAX_IDLE_TIME_MS= |
| MONGO_WAIT_QUEUE_TIMEOUT_MS | number | El tiempo máximo en milisegundos que un hilo puede esperar a que una conexión esté disponible. | # MONGO_WAIT_QUEUE_TIMEOUT_MS= |
Configuración del esquema de MongoDB
| Key | Type | Description | Example |
|---|---|---|---|
| MONGO_AUTO_INDEX | boolean | Establecer en false para deshabilitar la creación automática de índices para todos los modelos asociados con esta conexión. Cuando se omite, utiliza el comportamiento predeterminado de Mongoose. | # MONGO_AUTO_INDEX= |
| MONGO_AUTO_CREATE | boolean | Establecer en false para deshabilitar que Mongoose llame automáticamente a createCollection() en cada modelo creado en esta conexión. Cuando se omite, utiliza el comportamiento predeterminado de Mongoose. | # MONGO_AUTO_CREATE= |
Alternativamente, puedes usar documentDb que emula a mongoDb pero:
- no es compatible con
retryWrites- useretryWrites=false - requiere una conexión TLS, por lo tanto, utilice los parámetros
tls=truepara habilitar TLS ytlsCAFile=/path-to-ca/bundle.pempara apuntar al archivo de paquete de CA proporcionado por AWS
La URI para documentDb se verá así:
mongodb+srv://username:password@domain/dbname?retryWrites=false&tls=true&tlsCAFile=/path-to-ca/bundle.pem
Véase también:
- MongoDB Atlas para obtener instrucciones sobre cómo crear una base de datos MongoDB Atlas en línea (útil para usar sin Docker)
- MongoDB Community Server para obtener instrucciones sobre cómo crear una base de datos MongoDB local (sin Docker)
- Autenticación de MongoDB Para habilitar la autenticación explícita para MongoDB en Docker.
- Administra tu base de datos con Mongo Express para acceder de forma segura a tu base de datos MongoDB en Docker
Dominios de aplicación
Para configurar LibreChat para uso local o despliegue en un dominio personalizado, establece las siguientes variables de entorno:
| Key | Type | Description | Example |
|---|---|---|---|
| DOMAIN_CLIENT | string | Especifica el dominio del lado del cliente. | DOMAIN_CLIENT=http://localhost:3080 |
| DOMAIN_SERVER | string | Especifica el dominio del lado del servidor. | DOMAIN_SERVER=http://localhost:3080 |
| ADMIN_PANEL_URL | string | URL base del panel de administración externo utilizado para redirecciones OAuth/SSO de administración cuando el panel de administración se aloja por separado. No incluya una barra diagonal al final. | ADMIN_PANEL_URL=https://admin.example.com/admin |
| ADMIN_PANEL_SESSION_SECRET | string | Clave de cifrado de sesión requerida para el panel de administración incluido (mínimo 32 caracteres). Los servicios admin-panel de docker-compose y deploy-compose la leen como su SESSION_SECRET. Generar con `openssl rand -hex 32` antes de iniciar el stack. | ADMIN_PANEL_SESSION_SECRET=<your-32-char-random-string> |
| ADMIN_PANEL_PORT | number | Puerto de host para el panel de administración incluido en el docker-compose predeterminado. En deploy-compose, el panel se sirve en http://admin.localhost a través de nginx. | ADMIN_PANEL_PORT=3000 |
Al implementar LibreChat en un dominio personalizado, reemplace http://localhost:3080 con su URL implementada.
- p. ej.,
https://librechat.example.com.
Evitar que los motores de búsqueda públicos indexen el sitio
De forma predeterminada, su sitio web no será indexado por motores de búsqueda públicos (por ejemplo, Google, Bing, ...). Esto significa que las personas no podrán encontrar su sitio web a través de estos motores de búsqueda. Si desea hacer que su sitio web sea más visible y fácil de encontrar, puede cambiar la siguiente configuración a false
| Key | Type | Description | Example |
|---|---|---|---|
| NO_INDEX | boolean | Evita que los motores de búsqueda públicos indexen tu sitio web. | NO_INDEX=true |
❗Nota: No se garantiza que este método funcione para todos los motores de búsqueda, y algunos motores de búsqueda aún podrían indexar su sitio web o página web para otros fines, como el almacenamiento en caché o el archivo. Por lo tanto, no debe confiar únicamente en este método para proteger información sensible o confidencial en su sitio web o página web.
Registro
LibreChat tiene un sistema de registro central integrado, consulta Logging System para más información.
Archivos de registro
- El registro de depuración (debug logging) está habilitado de forma predeterminada y es crucial para el desarrollo.
- Para reportar problemas, reproduzca el error y envíe los registros de
./api/logs/debug-%DATE%.logen: LibreChat GitHub Issues - Los registros de error se almacenan en la misma ubicación.
Variables de entorno
| Key | Type | Description | Example |
|---|---|---|---|
| DEBUG_LOGGING | boolean | Mantener activos los registros de depuración. | DEBUG_LOGGING=true |
| DEBUG_CONSOLE | boolean | Habilitar registros detallados de consola/stdout en el mismo formato que los registros de depuración de archivos. | DEBUG_CONSOLE=false |
| LOG_TO_FILE | boolean | Establecer en false para deshabilitar los transportes Winston respaldados por archivos mientras se mantiene disponible el registro en consola. | LOG_TO_FILE=true |
| CONSOLE_JSON | boolean | Habilitar registros de consola/stdout en formato JSON detallado, adecuados para implementaciones en la nube como GCP/AWS. | CONSOLE_JSON=false |
| CONSOLE_JSON_STRING_LENGTH | number | Configure el tamaño de truncamiento para los valores de cadena en los registros de consola/stdout de JSON. Predeterminado: 255. | # CONSOLE_JSON_STRING_LENGTH=255 |
| LIBRECHAT_LOG_DIR | string | Directorio personalizado para archivos de registro. El valor predeterminado es /app/logs (Docker) o api/logs (desarrollo local). | # LIBRECHAT_LOG_DIR=/custom/log/path |
| MEM_DIAG | boolean | Habilitar diagnósticos de memoria: registra instantáneas de heap/RSS cada 60 segundos. Se habilita automáticamente al ejecutar con --inspect. | # MEM_DIAG=true |
| AGENT_DEBUG_LOGGING | boolean | Habilita el registro de depuración detallado en el controlador de agentes (recuento de tokens, diagnósticos de poda de contexto). | # AGENT_DEBUG_LOGGING=true |
Nota:
DEBUG_LOGGINGpuede utilizarse conDEBUG_CONSOLEoCONSOLE_JSON, pero no con ambos.DEBUG_CONSOLEyCONSOLE_JSONson mutuamente excluyentes.CONSOLE_JSON: Al gestionar registros de consola en implementaciones en la nube (como GCP o AWS), habilitar esto volcará los registros con una marca de tiempo UTC y los formateará como JSON.
Nota: DEBUG_CONSOLE no se recomienda, ya que los resultados pueden ser bastante detallados, por lo que está desactivado de forma predeterminada.
Permisos
UID y GID son números asignados por Linux a cada usuario y grupo en el sistema. Si tienes problemas de permisos, establece aquí el UID y el GID del usuario que ejecuta el comando Docker Compose. Las aplicaciones en el contenedor se ejecutarán con estos UID/GID.
| Key | Type | Description | Example |
|---|---|---|---|
| UID | number | El ID de usuario. | # UID=1000 |
| GID | number | El ID del grupo. | # GID=1000 |
Rastreo de OpenTelemetry
LibreChat puede emitir trazas de OpenTelemetry del backend para la visibilidad general de la API, HTTP, MongoDB, Mongoose, Redis y solicitudes salientes. Los spans a nivel de comando de Redis son opcionales para que las trazas predeterminadas se mantengan de alto nivel. Utilice Langfuse para la observabilidad de prompts/modelos específicos de GenAI.
| Key | Type | Description | Example |
|---|---|---|---|
| OTEL_TRACING_ENABLED | boolean | Habilitar el rastreo de OpenTelemetry en el backend. El rastreo permanece desactivado cuando OTEL_SDK_DISABLED=true. | # OTEL_TRACING_ENABLED=false |
| OTEL_SERVICE_NAME | string | Nombre del servicio reportado a OpenTelemetry. Predeterminado: librechat. | # OTEL_SERVICE_NAME=librechat |
| OTEL_SERVICE_VERSION | string | Versión del servicio reportada a OpenTelemetry. Se establece de forma predeterminada en la versión del paquete cuando no está configurada. | # OTEL_SERVICE_VERSION= |
| OTEL_EXPORTER_OTLP_ENDPOINT | string | Endpoint base del exportador OTLP. | # OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | string | Endpoint OTLP específico para trazas. Sustituye al endpoint base para las trazas cuando se configura. | # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT= |
| OTEL_EXPORTER_OTLP_HEADERS | string | Cabeceras del exportador OTLP separadas por comas, como los metadatos de autorización. | # OTEL_EXPORTER_OTLP_HEADERS= |
| OTEL_TRACES_EXPORTER | string | Selección del exportador de trazas. | # OTEL_TRACES_EXPORTER=otlp |
| OTEL_TRACES_SAMPLER | string | Muestreador de trazas de OpenTelemetry. Ejemplo predeterminado: parentbased_always_on. | # OTEL_TRACES_SAMPLER=parentbased_always_on |
| OTEL_LOG_LEVEL | string | Nivel de registro del SDK de OpenTelemetry. | # OTEL_LOG_LEVEL=INFO |
| OTEL_SDK_DISABLED | boolean | Deshabilitar el SDK de OpenTelemetry incluso si el rastreo está habilitado. | # OTEL_SDK_DISABLED=false |
| OTEL_IOREDIS_TRACING_ENABLED | boolean | Habilitar los spans a nivel de comando de Redis. Deshabilitado por defecto para mantener los seguimientos del backend en un nivel alto. | # OTEL_IOREDIS_TRACING_ENABLED=false |
Real User Monitoring (Navegador)
LibreChat puede publicar telemetría de Real User Monitoring (RUM) del navegador a colectores OTLP compatibles con HyperDX. RUM está desactivado de forma predeterminada.
| Key | Type | Description | Example |
|---|---|---|---|
| RUM_ENABLED | boolean | Habilitar el Real User Monitoring del navegador. Predeterminado: false. | # RUM_ENABLED=false |
| RUM_PROVIDER | string | Proveedor de RUM para navegador. Actualmente es compatible con `hyperdx`. | # RUM_PROVIDER=hyperdx |
| RUM_URL | string | URL del recolector público utilizado por el modo public-token. | # RUM_URL=http://localhost:4318 |
| RUM_SERVICE_NAME | string | Nombre del servicio reportado por el SDK del navegador. Predeterminado: librechat-web. | # RUM_SERVICE_NAME=librechat-web |
| RUM_ENVIRONMENT | string | Etiqueta de entorno reportada con telemetría del navegador. | # RUM_ENVIRONMENT=development |
| RUM_AUTH_MODE | string | Modo de autenticación para la telemetría del navegador. Use `publicToken` o `proxy`. | # RUM_AUTH_MODE=publicToken |
| RUM_PUBLIC_TOKEN | string | Token de navegador público para el modo public-token. Trátelo como público y restrinja la ingesta en el recolector. | # RUM_PUBLIC_TOKEN= |
| RUM_PROXY_TARGET_URL | string | URL base del recolector utilizada por el modo proxy autenticado. Requerido cuando `RUM_AUTH_MODE=proxy`. | # RUM_PROXY_TARGET_URL=http://otel-collector:4318 |
| RUM_PROXY_TIMEOUT_MS | number | Tiempo de espera de la solicitud del proxy en milisegundos. Predeterminado: 10000. | # RUM_PROXY_TIMEOUT_MS=10000 |
| RUM_TRACE_PROPAGATION_TARGETS | string | Orígenes o URLs HTTPS de primera parte separados por comas que deben recibir encabezados traceparent. | # RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com |
| RUM_DISABLE_REPLAY | boolean | Deshabilitar la reproducción de sesión del navegador. Predeterminado: true. | # RUM_DISABLE_REPLAY=true |
| RUM_CONSOLE_CAPTURE | boolean | Capturar registros de la consola del navegador. Puede recopilar prompts, respuestas o cargas útiles confidenciales. | # RUM_CONSOLE_CAPTURE=false |
| RUM_ADVANCED_NETWORK_CAPTURE | boolean | Captura cargas útiles de red detalladas. Puede recopilar prompts, respuestas o cargas útiles confidenciales. | # RUM_ADVANCED_NETWORK_CAPTURE=false |
| RUM_SAMPLE_RATE | number | Tasa de muestreo de telemetría del navegador de 0 a 1. Predeterminado: 1. | # RUM_SAMPLE_RATE=1 |
En el modo publicToken, el navegador envía telemetría directamente a RUM_URL con RUM_PUBLIC_TOKEN. En el modo proxy, el navegador envía telemetría a través de LibreChat; el backend valida la sesión del usuario, elimina los encabezados de autenticación de la aplicación y reenvía la telemetría a RUM_PROXY_TARGET_URL. Las sesiones no válidas o caducadas se descartan con una respuesta 204 para que los fallos de telemetría del navegador no muestren errores normales de autenticación de la API. Los resultados del proxy se contabilizan en rum_proxy_requests_total con las etiquetas endpoint y result en el endpoint /metrics de la API de LibreChat.
Ruta de configuración - librechat.yaml
Especifique una ubicación alternativa para el archivo de configuración de LibreChat.
Puede especificar una ruta absoluta, una ruta relativa o una URL. El nombre del archivo en la ruta es flexible y no tiene que ser librechat.yaml; cualquier archivo de configuración válido funcionará.
Nota: Si prefieres que LibreChat busque el archivo de configuración en el directorio raíz (que es el comportamiento predeterminado), simplemente deja esta opción comentada.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_PATH | string | Una ubicación alternativa para el archivo de configuración de LibreChat. | # CONFIG_PATH=https://raw.githubusercontent.com/danny-avila/LibreChat/main/librechat.example.yaml |
Habilidades de despliegue
Las Deployment Skills se cargan como solo lectura al inicio desde el sistema de archivos y se exponen a los usuarios que tienen habilitada la capacidad de Skills.
| Key | Type | Description | Example |
|---|---|---|---|
| DEPLOYMENT_SKILLS_DIR | string | Directorio que contiene las Skills proporcionadas por el despliegue. El valor predeterminado es `./skill` en la raíz del proyecto. | # DEPLOYMENT_SKILLS_DIR=./skill |
Reinicie LibreChat después de cambiar este directorio o cualquier archivo dentro de él. Las Skills proporcionadas por el despliegue tienen prioridad sobre las Skills persistentes con el mismo nombre.
Validación de configuración
De forma predeterminada, LibreChat finalizará con un error (código de salida 1) si el archivo de configuración librechat.yaml contiene errores de validación. Este comportamiento de fallo rápido ayuda a detectar problemas de configuración en las etapas iniciales de los procesos de despliegue y evita la ejecución con configuraciones predeterminadas no deseadas.
| Key | Type | Description | Example |
|---|---|---|---|
| CONFIG_BYPASS_VALIDATION | boolean | Cuando se establece en `true`, el servidor registrará una advertencia y continuará iniciándose con la configuración predeterminada incluso si `librechat.yaml` tiene errores de validación. Esto preserva el comportamiento heredado. | # CONFIG_BYPASS_VALIDATION=true |
Advertencia
No se recomienda el uso de CONFIG_BYPASS_VALIDATION=true para entornos de producción. Está pensado como una solución temporal mientras se depuran problemas de configuración. Corrija siempre los errores de validación en su archivo de configuración.
Manejo de excepciones no capturadas
De forma predeterminada, LibreChat finalizará el proceso cuando ocurra una excepción no controlada, lo cual es el comportamiento estándar de Node.js. Puedes anular esto para mantener la aplicación en ejecución después de excepciones no controladas.
| Key | Type | Description | Example |
|---|---|---|---|
| CONTINUE_ON_UNCAUGHT_EXCEPTION | boolean | Cuando se establece en `true`, la aplicación continuará ejecutándose después de encontrar excepciones no controladas en lugar de finalizar el proceso. | # CONTINUE_ON_UNCAUGHT_EXCEPTION=false |
Advertencia
No se recomienda para producción a menos que sea necesario. Las excepciones no controladas pueden dejar la aplicación en un estado impredecible.
Endpoints
En esta sección, puede configurar los endpoints y la selección de modelos, sus claves de API, y los ajustes de proxy y proxy inverso para los endpoints que lo admiten.
Configuración General
Descomente ENDPOINTS para personalizar los endpoints disponibles en LibreChat.
| Key | Type | Description | Example |
|---|---|---|---|
| ENDPOINTS | string | Lista de endpoints disponibles separados por comas. | # ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom |
| PROXY | string | Proxy de salida para clientes del lado del servidor compatibles. Se aplica tanto a destinos HTTP como HTTPS. | PROXY= |
| HTTP_PROXY | string | Respaldo de proxy HTTP utilizado por clientes del lado del servidor compatibles cuando PROXY no está configurado. | # HTTP_PROXY= |
| HTTPS_PROXY | string | Respaldo de proxy HTTPS utilizado por clientes del lado del servidor compatibles cuando PROXY no está configurado. | # HTTPS_PROXY= |
| NO_PROXY | string | Hosts, dominios o rangos de IP separados por comas que los clientes del lado del servidor compatibles deben omitir. También se admite la variante en minúsculas no_proxy. | # NO_PROXY= |
| TITLE_CONVO | boolean | Habilitar títulos para todos los endpoint. | TITLE_CONVO=true |
Endpoints conocidos - librechat.yaml
- ver también: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| ANYSCALE_API_KEY | string | Clave de API para Anyscale. | # ANYSCALE_API_KEY= |
| APIPIE_API_KEY | string | Clave de API para Apipie. | # APIPIE_API_KEY= |
| COHERE_API_KEY | string | Clave de API para Cohere. | # COHERE_API_KEY= |
| FIREWORKS_API_KEY | string | Clave de API para Fireworks. | # FIREWORKS_API_KEY= |
| GROQ_API_KEY | string | Clave de API para Groq. | # GROQ_API_KEY= |
| MISTRAL_API_KEY | string | Clave de API para Mistral. | # MISTRAL_API_KEY= |
| OPENROUTER_KEY | string | Clave de API para OpenRouter. | # OPENROUTER_KEY= |
| PERPLEXITY_API_KEY | string | Clave de API para Perplexity. | # PERPLEXITY_API_KEY= |
| SHUTTLEAI_API_KEY | string | Clave de API para ShuttleAI. | # SHUTTLEAI_API_KEY= |
| TOGETHERAI_API_KEY | string | Clave de API para TogetherAI. | # TOGETHERAI_API_KEY= |
| DEEPSEEK_API_KEY | string | Clave de API para Deepseek API | # DEEPSEEK_API_KEY= |
Búsqueda web
La función de búsqueda web permite capacidades de búsqueda en internet dentro de LibreChat.
Importante: Los nombres exactos de las variables de entorno que se muestran a continuación son referencias predeterminadas y pueden personalizarse a través del archivo de configuración librechat.yaml para utilizar cualquier nombre de variable que prefiera.
Para obtener opciones detalladas de configuración y personalización, consulte: Web Search Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| SERPER_API_KEY | string | Clave de API para el proveedor de búsqueda Serper. Obtenga su clave en https://serper.dev/api-keys | # SERPER_API_KEY= |
| TAVILY_API_KEY | string | Clave de API para el proveedor de búsqueda y scraping Tavily. Obtenga su clave en https://app.tavily.com/home | # TAVILY_API_KEY= |
| TAVILY_SEARCH_URL | string | URL de API de búsqueda Tavily personalizada (opcional). Solo es necesaria para endpoints de búsqueda personalizados o proxy compatibles con Tavily. | # TAVILY_SEARCH_URL= |
| TAVILY_EXTRACT_URL | string | URL de API de extracción de Tavily personalizada (opcional). Solo es necesaria para endpoints de extracción personalizados o proxy compatibles con Tavily. | # TAVILY_EXTRACT_URL= |
| FIRECRAWL_API_KEY | string | Clave de API para el servicio de scraping Firecrawl. Obtenga su clave en https://docs.firecrawl.dev/introduction#api-key | # FIRECRAWL_API_KEY= |
| FIRECRAWL_API_URL | string | URL de API de Firecrawl personalizada (opcional). Solo es necesaria para instancias de Firecrawl personalizadas. | # FIRECRAWL_API_URL= |
| FIRECRAWL_VERSION | string | Versión de la API de Firecrawl (v0 o v1). | # FIRECRAWL_VERSION=v1 |
| JINA_API_KEY | string | Clave de API para el servicio de reordenamiento de Jina. Obtenga su clave en https://jina.ai/api-dashboard/ | # JINA_API_KEY= |
| JINA_API_URL | string | URL de API de Jina personalizada (opcional). Solo es necesaria para instancias de Jina personalizadas. | # JINA_API_URL= |
| COHERE_API_KEY | string | Clave de API para el servicio de reranker de Cohere. Obtenga su clave en https://dashboard.cohere.com/welcome/login | # COHERE_API_KEY= |
Nota: Estos nombres de variables se pueden personalizar en su archivo de configuración librechat.yaml. Por ejemplo, podría usar CUSTOM_SERPER_KEY en lugar de SERPER_API_KEY configurándolo en los ajustes de búsqueda web. Consulte la documentación de Web Search Configuration para obtener detalles sobre cómo personalizar los nombres de las variables.
Anthropic
ver: Anthropic Endpoint
- Puedes solicitar una clave de acceso en https://platform.claude.com/
- Deja
ANTHROPIC_API_KEY=en blanco para deshabilitar este endpoint - Establezca
ANTHROPIC_API_KEY=en "user_provided" para permitir que los usuarios proporcionen su propia clave de API desde la WebUI - Si tienes acceso a un proxy inverso para
Anthropic, puedes configurarlo conANTHROPIC_REVERSE_PROXY=- dejar en blanco o comentar para usar la base url predeterminada
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_API_KEY | string | Clave de API de Anthropic o "user_provided" para permitir que los usuarios proporcionen su propia clave de API. | Defaults to an empty string. |
| ANTHROPIC_MODELS | string | Lista separada por comas de modelos de Anthropic a utilizar. | # ANTHROPIC_MODELS=claude-fable-5,claude-opus-4-8,claude-opus-4-7,claude-sonnet-4-6,claude-opus-4-6,claude-opus-4-20250514,claude-3-7-sonnet-20250219,claude-3-5-sonnet-20241022,claude-3-5-haiku-20241022 |
| ANTHROPIC_REVERSE_PROXY | string | Proxy inverso para Anthropic. | # ANTHROPIC_REVERSE_PROXY= |
| ANTHROPIC_TITLE_MODEL | string | OBSOLETO: Modelo a utilizar para la titulación con Anthropic. | # ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307 |
ANTHROPIC_TITLE_MODELestá ahora obsoleto y será eliminado en versiones futuras. Utilice en su lugar la configuración de endpointtitleModeldentro del archivo de configuraciónlibrechat.yaml.
Nota: Debe ser compatible con el Anthropic endpoint. Además, los modelos Claude 2 y Claude 3 funcionan mejor en esta tarea, siendo los modelos
claude-3-haikulos más económicos.
Claude Fable 5 está incluido en la lista predeterminada de modelos de Anthropic. Los modelos de clase Fable/Mythos utilizan el comportamiento moderno de Anthropic en LibreChat: 1M de contexto, soporte para pensamiento adaptativo, soporte para almacenamiento en caché de prompts y manejo de thinkingDisplay para resultados de razonamiento resumidos u omitidos.
Anthropic a través de Vertex AI
También puede utilizar los modelos Anthropic Claude a través de Google Cloud Vertex AI. Para ver las opciones detalladas de configuración YAML, consulte: Configuración de Anthropic Vertex AI
| Key | Type | Description | Example |
|---|---|---|---|
| ANTHROPIC_USE_VERTEX | boolean | Establecer en true para usar modelos de Anthropic a través de Google Vertex AI en lugar de la API directa. | ANTHROPIC_USE_VERTEX=true |
| ANTHROPIC_VERTEX_REGION | string | La región de Google Cloud para Vertex AI. Predeterminado: us-east5. | ANTHROPIC_VERTEX_REGION=us-east5 |
Nota: Al usar Vertex AI, también debe configurar
GOOGLE_SERVICE_KEY_FILE(consulte Google Configuration) con una cuenta de servicio que tenga el rol deVertex AI User.
AWS Bedrock
Ver: Configuración de AWS Bedrock
| Key | Type | Description | Example |
|---|---|---|---|
| BEDROCK_AWS_DEFAULT_REGION | string | Se debe proporcionar una región de AWS predeterminada para Bedrock. | BEDROCK_AWS_DEFAULT_REGION=us-east-1 |
| BEDROCK_AWS_ACCESS_KEY_ID | string | ID de clave de acceso de AWS para Bedrock. Opcional si se utiliza la cadena de credenciales predeterminada de AWS. | # BEDROCK_AWS_ACCESS_KEY_ID=your_access_key_id |
| BEDROCK_AWS_SECRET_ACCESS_KEY | string | AWS secret access key para Bedrock. Opcional si se utiliza la cadena de credenciales predeterminada de AWS. | # BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| BEDROCK_AWS_SESSION_TOKEN | string | Token de sesión de AWS para credenciales temporales. Opcional. | # BEDROCK_AWS_SESSION_TOKEN=your_session_token |
| BEDROCK_AWS_PROFILE | string | Nombre del perfil de configuración compartida de AWS para Bedrock. Opcional si se utiliza la cadena de credenciales predeterminada de AWS. | # BEDROCK_AWS_PROFILE=your-profile-name |
| BEDROCK_AWS_BEARER_TOKEN | string | Clave de API de Amazon Bedrock para autenticación bearer, o user_provided para permitir que los usuarios ingresen su propia clave de API de Bedrock en la UI. | # BEDROCK_AWS_BEARER_TOKEN=your_bedrock_api_key |
| BEDROCK_AWS_MODELS | string | Lista separada por comas de IDs de modelos de Bedrock. Si se omite, se incluyen todos los modelos compatibles conocidos. | # BEDROCK_AWS_MODELS=anthropic.claude-fable-5,anthropic.claude-opus-4-8,anthropic.claude-opus-4-7,anthropic.claude-sonnet-4-6,meta.llama3-1-8b-instruct-v1:0 |
Nota: Puedes omitir las claves de acceso para utilizar la cadena de credenciales predeterminada de AWS (variables de entorno, credenciales de SSO, archivos de credenciales compartidos o el servicio de metadatos de instancia de EC2/ECS). Consulta AWS Bedrock Setup para obtener más detalles.
Los modelos Claude Fable/Mythos-class en Bedrock son solo para perfiles de inferencia. Utilice un ID de perfil como us.anthropic.claude-fable-5 y habilite la configuración de intercambio de datos de Anthropic requerida en la consola de Bedrock o en la API de retención de datos (Data Retention API) antes de invocarlos.
BingAI
Bing, también utilizado para Sydney, jailbreak y Bing Image Creator
| Key | Type | Description | Example |
|---|---|---|---|
| BINGAI_TOKEN | string | Token de acceso de Bing. Déjelo en blanco para desactivarlo. Se puede establecer en "user_provided" para permitir que los usuarios proporcionen su propio token desde la WebUI. | BINGAI_TOKEN=user_provided |
| BINGAI_HOST | string | URL del host de Bing. Déjelo comentado para usar el servidor predeterminado. | # BINGAI_HOST=https://cn.bing.com |
Nota: Se recomienda dejarlo como "user_provided" y proporcionar el token desde la WebUI.
Siga estas instrucciones para configurar el Google Endpoint
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_KEY | string | Clave de API de Google. Configúrela en "user_provided" para permitir que los usuarios proporcionen su propia clave de API desde la WebUI. | GOOGLE_KEY=user_provided |
| GOOGLE_SERVICE_KEY_FILE | string | Ruta al archivo de clave JSON de la cuenta de servicio de Google, URL para obtenerlo o JSON convertido en cadena. Se utiliza para la autenticación de Vertex AI (por ejemplo, funciones de OCR). | GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json |
| GOOGLE_REVERSE_PROXY | string | URL del proxy inverso de Google. | GOOGLE_REVERSE_PROXY= |
| GOOGLE_AUTH_HEADER | boolean | Utilice el encabezado Authorization en lugar de X-goog-api-key. Algunos proxies inversos requieren esto. | # GOOGLE_AUTH_HEADER=true |
| GOOGLE_MODELS | string | Modelos de Google Gemini API disponibles, separados por comas. | GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash,gemini-2.0-flash-lite |
| GOOGLE_MODELS | string | Modelos de Vertex AI Google disponibles, separados por comas. | GOOGLE_MODELS=gemini-3.1-pro-preview,gemini-3.1-pro-preview-customtools,gemini-2.5-pro,gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.0-flash-001,gemini-2.0-flash-lite-001 |
| GOOGLE_TITLE_MODEL | string | OBSOLETO: El modelo utilizado para titular con Google. | GOOGLE_TITLE_MODEL=gemini-pro |
| GOOGLE_LOC | string | Especifica la ubicación de Google Cloud para procesar las solicitudes de la API | GOOGLE_LOC=us-central1 |
| GOOGLE_CLOUD_LOCATION | string | Región alternativa para la generación de imágenes de Gemini (p. ej., global). | # GOOGLE_CLOUD_LOCATION=global |
| GOOGLE_EXCLUDE_SAFETY_SETTINGS | string | Omita por completo la configuración de seguridad incluida de forma predeterminada, lo que utilizará los valores predeterminados del proveedor | GOOGLE_EXCLUDE_SAFETY_SETTINGS=true |
| GOOGLE_SAFETY_SEXUALLY_EXPLICIT | string | Configuración de seguridad para contenido sexualmente explícito. Las opciones son BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY y OFF. | GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HATE_SPEECH | string | Configuración de seguridad para contenido de discurso de odio. Las opciones son BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY y OFF. | GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_HARASSMENT | string | Configuración de seguridad para contenido de acoso. Las opciones son BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY y OFF. | GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_DANGEROUS_CONTENT | string | Configuración de seguridad para contenido peligroso. Las opciones son BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY y OFF. | GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH |
| GOOGLE_SAFETY_CIVIC_INTEGRITY | string | Configuración de seguridad para contenido de integridad cívica. Las opciones son BLOCK_ALL, BLOCK_ONLY_HIGH, WARN_ONLY y OFF. | # GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH |
Personalice los modelos disponibles, separados por comas, sin espacios. El primero será el predeterminado. Déjelo en blanco o comentado para utilizar la configuración interna.
GOOGLE_TITLE_MODELestá ahora obsoleto y será eliminado en versiones futuras. Utilice en su lugar el ajuste de endpointtitleModelen la configuración delibrechat.yaml.
Nota: Para las variables GOOGLE_SAFETY de Vertex AI, no tienes acceso al ajuste BLOCK_NONE de forma predeterminada. Para utilizar este ajuste restringido de HarmBlockThreshold, deberás realizar una de las siguientes acciones:
- (a) Obtenga acceso a través de una lista de permitidos mediante su equipo de cuenta de Google
- (b) Cambie su tipo de cuenta a facturación mensual siguiendo estas instrucciones: https://cloud.google.com/billing/docs/how-to/invoiced-billing
Generación de imágenes con Gemini
Gemini Image Generation es una herramienta para Agents que admite tanto la Gemini API como Vertex AI. Ver: Gemini Image Generation
| Key | Type | Description | Example |
|---|---|---|---|
| GEMINI_API_KEY | string | Clave de API de Gemini dedicada para la generación de imágenes. Utiliza GOOGLE_KEY como alternativa si no está configurada. | # GEMINI_API_KEY=your_gemini_api_key |
| GEMINI_IMAGE_MODEL | string | Modelo Gemini para la generación de imágenes. Predeterminado: gemini-2.5-flash-image. | # GEMINI_IMAGE_MODEL=gemini-2.5-flash-image |
Nota: Cuando no hay una clave de API configurada, la herramienta recurre automáticamente a Vertex AI utilizando la cuenta de servicio de
GOOGLE_SERVICE_KEY_FILE. La cuenta de servicio debe tener el rol deVertex AI User.
OpenAI
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_API_KEY | string | Tu clave de API de OpenAI. Déjalo en blanco para desactivar este endpoint o establécelo en "user_provided" para permitir que los usuarios proporcionen su propia clave de API desde la WebUI. | OPENAI_API_KEY=user_provided |
| OPENAI_MODELS | string | Personalice los modelos disponibles, separados por comas, sin espacios. El primero será el predeterminado. Déjelo comentado para usar la configuración interna. | # OPENAI_MODELS=gpt-5,gpt-5-codex,gpt-5-mini,gpt-5-nano,o3-pro,o3,o4-mini,gpt-4.1,gpt-4.1-mini,gpt-4.1-nano,o3-mini,o1-pro,o1,gpt-4o,gpt-4o-mini |
| DEBUG_OPENAI | boolean | Habilitar el modo de depuración para el endpoint de OpenAI. | DEBUG_OPENAI=false |
| OPENAI_SUMMARIZE | boolean | Habilitar el resumen de mensajes. Falso por defecto | # OPENAI_SUMMARIZE=true |
| OPENAI_SUMMARY_MODEL | string | El modelo utilizado para la sumarización de OpenAI. | # OPENAI_SUMMARY_MODEL=gpt-3.5-turbo |
| OPENAI_FORCE_PROMPT | boolean | Forzar a que la API sea llamada con un payload de prompt en lugar de un payload de messages. | # OPENAI_FORCE_PROMPT=false |
| OPENAI_ORGANIZATION | string | Especifique qué organización utilizar para cada solicitud de API a OpenAI. Opcional | # OPENAI_ORGANIZATION= |
| OPENAI_REVERSE_PROXY | string | OBSOLETO: Configuración de proxy inverso para OpenAI. | # OPENAI_REVERSE_PROXY= |
| OPENAI_TITLE_MODEL | string | OBSOLETO: El modelo utilizado para la titulación de OpenAI. | # OPENAI_TITLE_MODEL=gpt-3.5-turbo |
OPENAI_TITLE_MODELestá ahora obsoleto y será eliminado en versiones futuras. Utilice en su lugar el ajuste de endpointtitleModelen la configuración delibrechat.yaml.OPENAI_REVERSE_PROXYestá ahora obsoleto y será eliminado en futuras versiones. Utilice un custom endpoint en su lugar.
Assistants
Ver: Configuración de Assistants
| Key | Type | Description | Example |
|---|---|---|---|
| ASSISTANTS_API_KEY | string | Tu clave de API de OpenAI para Assistants API. Déjalo en blanco para desactivar este endpoint o establécelo en "user_provided" para permitir que los usuarios proporcionen su propia clave de API desde la WebUI. | ASSISTANTS_API_KEY=user_provided |
| ASSISTANTS_MODELS | string | Personalice los modelos disponibles, separados por comas, sin espacios. El primero será el predeterminado. Déjelo en blanco para usar la configuración interna. | # ASSISTANTS_MODELS=gpt-3.5-turbo-0125,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-16k,gpt-3.5-turbo,gpt-4,gpt-4-0314,gpt-4-32k-0314,gpt-4-0613,gpt-3.5-turbo-0613,gpt-3.5-turbo-1106,gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview |
| ASSISTANTS_BASE_URL | string | URL base alternativo para la Assistants API. | # ASSISTANTS_BASE_URL= |
Nota: Puede personalizar los modelos disponibles, separados por comas, sin espacios. El primero será el predeterminado. Déjelo en blanco o comentado para usar la configuración interna.
Tavily
Obtén tu clave de API aquí: https://tavily.com/#api
Variables de entorno:
| Key | Type | Description | Example |
|---|---|---|---|
| TAVILY_API_KEY | string | Clave de API de Tavily. | TAVILY_API_KEY= |
Traversaal
Descripción: Herramienta de búsqueda mejorada por LLM.
Obtén la API key aquí: https://api.traversaal.ai/dashboard
Variables de entorno:
| Key | Type | Description | Example |
|---|---|---|---|
| TRAVERSAAL_API_KEY | string | Clave de API de Traversaal. | TRAVERSAAL_API_KEY= |
WolframAlpha
Consulte las instrucciones detalladas aquí: Wolfram Alpha
Variables de entorno:
| Key | Type | Description | Example |
|---|---|---|---|
| WOLFRAM_APP_ID | string | ID de la aplicación Wolfram Alpha. | WOLFRAM_APP_ID= |
Zapier
Descripción: - Necesitas una cuenta de Zapier. Obtén tu clave de API aquí: Zapier
- Crear acciones permitidas - Siga el paso 3 en esta guía de inicio de Zapier
Nota: Se sabe que Zapier es delicado con ciertas acciones. Redactar borradores de correo electrónico es probablemente su mejor uso.
Variables de entorno:
| Key | Type | Description | Example |
|---|---|---|---|
| ZAPIER_NLA_API_KEY | string | Clave de API de Zapier NLA. | ZAPIER_NLA_API_KEY= |
OpenWeather
Consulta las instrucciones detalladas aquí: OpenWeather
| Key | Type | Description | Example |
|---|---|---|---|
| OPENWEATHER_API_KEY | string | Clave de API de OpenWeather para la API One Call 3.0. | OPENWEATHER_API_KEY= |
Code Interpreter
La API de Code Interpreter proporciona un entorno seguro para ejecutar código y gestionar archivos. Ver: Code Interpreter API
| Key | Type | Description | Example |
|---|---|---|---|
| LIBRECHAT_CODE_API_KEY | string | Clave de API para el servicio de Code Interpreter. Cuando se configura globalmente, proporciona acceso a todos los usuarios. | LIBRECHAT_CODE_API_KEY=your-api-key |
| LIBRECHAT_CODE_BASEURL | string | URL base personalizada para la API de Code Interpreter (solo para planes Enterprise). | # LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com |
Artifacts
Artifacts aprovecha la librería CodeSandbox para la renderización segura de código HTML/JS. De forma predeterminada, se utiliza la CDN pública alojada por CodeSandbox.
Afortunadamente, para aquellos con requisitos de red interna, pueden alojar el bundler ustedes mismos que compila el código del frontend y especificar una URL de bundler personalizada para Sandpack.
Para obtener más información, incluyendo imágenes de contenedor preconfiguradas para autoalojamiento con las solicitudes de métricas eliminadas, consulte: https://github.com/LibreChat-AI/codesandbox-client
| Key | Type | Description | Example |
|---|---|---|---|
| SANDPACK_BUNDLER_URL | string | Especifica una URL de bundler personalizada para Sandpack, utilizada por Artifacts | SANDPACK_BUNDLER_URL=your-bundler-url |
Búsqueda (Meilisearch)
Habilita la búsqueda en mensajes y conversaciones:
| Key | Type | Description | Example |
|---|---|---|---|
| SEARCH | boolean | Habilita la búsqueda en mensajes y conversaciones. | SEARCH=true |
Nota: Si no estás usando Docker, se requiere la instalación de Meilisearch autoalojado gratuito o un plan remoto de pago.
Para deshabilitar la analítica de telemetría anonimizada de MeiliSearch para una privacidad absoluta, establézcalo en true:
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_ANALYTICS | boolean | Desactiva la telemetría analítica anonimizada para MeiliSearch. | MEILI_NO_ANALYTICS=true |
Para que el servidor de la API se conecte al servidor de búsqueda. Reemplace '0.0.0.0' con 'meilisearch' si está ejecutando MeiliSearch con docker-compose.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_HOST | string | La conexión del servidor de API al servidor de búsqueda. | MEILI_HOST=http://0.0.0.0:7700 |
Esta clave maestra debe tener al menos 16 bytes y estar compuesta por caracteres UTF-8 válidos. MeiliSearch arrojará un error y se negará a iniciarse si no se proporciona una clave maestra o si tiene menos de 16 bytes. MeiliSearch sugerirá una clave maestra segura autogenerada. Esta es una clave segura lista para usar en docker-compose, puedes reemplazarla por la tuya propia.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_MASTER_KEY | string | La llave maestra para MeiliSearch. | MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt |
Para evitar que LibreChat intente realizar una sincronización de indexación de base de datos con Meilisearch, puede establecer la siguiente variable de entorno en true. Esto es útil en un clúster de nodos o en una configuración de múltiples nodos, donde solo una instancia debe ser responsable de la indexación.
| Key | Type | Description | Example |
|---|---|---|---|
| MEILI_NO_SYNC | string | Interruptor para desactivar la sincronización del índice de Meilisearch | MEILI_NO_SYNC=true |
RAG API
Configure la Generación Aumentada por Recuperación (RAG) para la indexación de documentos y respuestas con conocimiento del contexto. Consulte: Configuración de la API RAG
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL del servicio de API de RAG. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Clave de API de OpenAI para incrustaciones RAG. Sustituye a OPENAI_API_KEY para RAG. | # RAG_OPENAI_API_KEY=sk-your-openai-api-key |
| RAG_OPENAI_BASEURL | string | URL base de OpenAI personalizada para incrustaciones RAG. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Obtener el contexto completo del archivo en lugar de los 4 mejores resultados. Predeterminado: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Proveedor de embeddings: openai, azure, huggingface, huggingfacetei o ollama. Predeterminado: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Modelo de embeddings a utilizar. El valor predeterminado depende del proveedor. | # EMBEDDINGS_MODEL=text-embedding-3-small |
Nota: Al utilizar la configuración predeterminada de Docker, el archivo
.envse comparte entre LibreChat y la RAG API. Para conocer las opciones de configuración completas, consulte la documentación de la RAG API.
Speech to Text y Text to Speech
Configure los servicios de Speech-to-Text (STT) y Text-to-Speech (TTS). Consulte: Speech Settings
| Key | Type | Description | Example |
|---|---|---|---|
| STT_API_KEY | string | Clave de API para el servicio de conversión de voz a texto (p. ej., OpenAI Whisper). | # STT_API_KEY= |
| TTS_API_KEY | string | Clave de API para el servicio de conversión de texto a voz (por ejemplo, OpenAI TTS). | # TTS_API_KEY= |
Nota: STT y TTS se configuran principalmente a través de la sección
speech:enlibrechat.yaml. Estas variables de entorno se referencian en dicha configuración. Consulta Speech Settings para ver las opciones completas de configuración YAML.
Enlaces compartidos
Configurar la funcionalidad de enlaces de conversación compartidos.
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_SHARED_LINKS | boolean | Habilitar o deshabilitar enlaces de conversaciones compartidas. Predeterminado: true. | ALLOW_SHARED_LINKS=true |
| ALLOW_SHARED_LINKS_PUBLIC | boolean | Permitir que los enlaces compartidos sean accesibles públicamente sin autenticación. Predeterminado: false. | ALLOW_SHARED_LINKS_PUBLIC=false |
| SHARED_LINKS_SNAPSHOT_FILES | boolean | Archivos de instantáneas referenciados por un chat compartido para que los espectadores puedan previsualizarlos o descargarlos a través del enlace compartido. Sustituye a interface.sharedLinks.snapshotFiles cuando se establece. | SHARED_LINKS_SNAPSHOT_FILES=true |
ALLOW_SHARED_LINKS es el interruptor general de la función. Los permisos de rol ahora controlan quién puede crear enlaces compartidos, compartirlos con usuarios autenticados o hacerlos visibles para todos; consulte interface.sharedLinks. ALLOW_SHARED_LINKS_PUBLIC solo controla si los enlaces compartidos públicamente pueden verse sin autenticación. SHARED_LINKS_SNAPSHOT_FILES es una anulación global para las instantáneas de archivos de enlaces compartidos y puede deshabilitar el servicio de instantáneas para cada enlace cuando se establece en false.
Sistema de usuario
Esta sección contiene la configuración para:
- Moderación automatizada
- Balance/Uso de tokens
- Registro e inicios de sesión sociales
- Restablecimiento de contraseña por correo electrónico
Moderación
El Sistema de Moderación Automatizado utiliza un mecanismo de puntuación para realizar un seguimiento de las infracciones de los usuarios. A medida que los usuarios realizan acciones como inicios de sesión, registros o envío de mensajes excesivos, acumulan puntuaciones de infracción. Al alcanzar un umbral establecido, el usuario y su IP son bloqueados temporalmente. Este sistema garantiza la seguridad de la plataforma mediante la supervisión y penalización de actividades rápidas o sospechosas.
Configuración básica de moderación
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Si habilitar o no la moderación de OpenAI en los endpoints **OpenAI** y **Plugins**. | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | Tu clave de API de OpenAI. | OPENAI_MODERATION_API_KEY= |
| OPENAI_MODERATION_REVERSE_PROXY | string | Nota: Comentado por defecto, esto no funciona con todos los proxies inversos. | # OPENAI_MODERATION_REVERSE_PROXY= |
Configuración de bloqueo
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Si se debe habilitar o no la prohibición de usuarios por infracciones (aún así serán registrados). | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | Cuánto tiempo se bloquea al usuario y a la IP asociada (en milisegundos). | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | El usuario será baneado cada vez que su puntuación alcance o supere el umbral del intervalo. | BAN_INTERVAL=20 |
Limitación de tasa de inicio de sesión y registro
Previene ataques de fuerza bruta y registros de spam limitando los intentos de inicio de sesión y los registros de nuevas cuentas.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | integer | La cantidad máxima de inicios de sesión permitidos por IP por LOGIN_WINDOW. | LOGIN_MAX=7 |
| LOGIN_WINDOW | integer | En minutos, determina la ventana de tiempo para LOGIN_MAX inicios de sesión. | LOGIN_WINDOW=5 |
| REGISTER_MAX | integer | La cantidad máxima de registros permitidos por IP por REGISTER_WINDOW. | REGISTER_MAX=5 |
| REGISTER_WINDOW | integer | En minutos, determina la ventana de tiempo para los registros REGISTER_MAX. | REGISTER_WINDOW=60 |
Puntuación para cada infracción
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Puntuación para infracciones de inicio de sesión. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Puntuación por infracciones de registro. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Puntuación para infracciones simultáneas. | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Puntuación para infracciones de mensajes. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Puntuación para infracciones que no son del navegador. | NON_BROWSER_VIOLATION_SCORE=20 |
| ILLEGAL_MODEL_REQ_SCORE | integer | Puntuación para solicitudes de modelos ilegales. | ILLEGAL_MODEL_REQ_SCORE=5 |
| IMPORT_VIOLATION_SCORE | integer | Puntuación para infracciones de importación de conversaciones. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Puntuación para infracciones de bifurcación de conversación. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Puntuación para infracciones de texto a voz. | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | Puntuación para infracciones de conversión de voz a texto. | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | Puntuación para violaciones de carga de archivos. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Puntuación para infracciones de restablecimiento de contraseña. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Puntuación para infracciones de verificación de correo electrónico. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Puntuación para infracciones de llamadas a herramientas. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Puntuación para violaciones de acceso a la conversación. | CONVO_ACCESS_VIOLATION_SCORE=0 |
Nota: El acceso que no proviene de un navegador y las solicitudes de modelos ilegales son casi siempre nefastos, ya que significan que un tercero está intentando acceder al servidor a través de un script automatizado.
Limitación de tasa de mensajes (por usuario e IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Si se debe limitar la cantidad de mensajes que un usuario puede enviar por solicitud. | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | La cantidad máxima de mensajes que un usuario puede enviar por solicitud. | CONCURRENT_MESSAGE_MAX=2 |
Limitadores
Nota: Puede utilizar ambos limitadores, pero el valor predeterminado es limitar solo por IP.
Limitador de IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Si se debe limitar la cantidad de mensajes que una IP puede enviar por `MESSAGE_IP_WINDOW`. | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | La cantidad máxima de mensajes que una IP puede enviar por `MESSAGE_IP_WINDOW`. | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | En minutos, determina la ventana de tiempo para `MESSAGE_IP_MAX` mensajes. | MESSAGE_IP_WINDOW=1 |
Limitador de usuarios:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Si se debe limitar la cantidad de mensajes que un usuario puede enviar por `MESSAGE_USER_WINDOW`. | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | La cantidad máxima de mensajes que un usuario puede enviar por `MESSAGE_USER_WINDOW`. | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | En minutos, determina la ventana de tiempo para `MESSAGE_USER_MAX` mensajes. | MESSAGE_USER_WINDOW=1 |
Límite de tasa de importación de conversaciones
Limita la frecuencia con la que los usuarios pueden importar conversaciones para prevenir abusos.
Nota: Puede utilizar ambos limitadores, pero el valor predeterminado es limitar solo por IP.
Limitador de IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Si se debe limitar la cantidad de importaciones de conversaciones que una IP puede realizar por `IMPORT_IP_WINDOW`. | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | La cantidad máxima de importaciones de conversación que una IP puede realizar por `IMPORT_IP_WINDOW`. | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | En minutos, determina la ventana de tiempo para las importaciones de `IMPORT_IP_MAX`. | IMPORT_IP_WINDOW=1 |
Limitador de usuarios:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Determina si se debe limitar la cantidad de importaciones de conversaciones que un usuario puede realizar por `IMPORT_USER_WINDOW`. | LIMIT_IMPORT_USER=false |
| IMPORT_USER_MAX | integer | La cantidad máxima de importaciones de conversaciones que un usuario puede realizar por `IMPORT_USER_WINDOW`. | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | En minutos, determina la ventana de tiempo para las importaciones de `IMPORT_USER_MAX`. | IMPORT_USER_WINDOW=1 |
Limitación de tasa de bifurcación de conversaciones
Limita la frecuencia con la que los usuarios pueden bifurcar (fork) conversaciones para prevenir abusos.
Nota: Puede utilizar ambos limitadores, pero el valor predeterminado es limitar solo por IP.
Limitador de IP:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Si se debe limitar la cantidad de bifurcaciones de conversación que una IP puede crear por `FORK_IP_WINDOW`. | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | La cantidad máxima de bifurcaciones de conversación que una IP puede crear por `FORK_IP_WINDOW`. | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | En minutos, determina la ventana de tiempo para las bifurcaciones de `FORK_IP_MAX`. | FORK_IP_WINDOW=1 |
Limitador de usuarios:
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Si se debe limitar la cantidad de bifurcaciones de conversación que un usuario puede crear por `FORK_USER_WINDOW`. | LIMIT_FORK_USER=false |
| FORK_USER_MAX | integer | La cantidad máxima de bifurcaciones de conversación que un usuario puede crear por `FORK_USER_WINDOW`. | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | En minutos, determina la ventana de tiempo para las bifurcaciones de `FORK_USER_MAX`. | FORK_USER_WINDOW=1 |
Limitación de tasa de carga de archivos
Limita la frecuencia con la que los usuarios pueden subir archivos para prevenir abusos.
Nota: Estos también se pueden configurar a través de
librechat.yamlen la secciónrateLimits.fileUploads.
Limitador de IP:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_IP_MAX | integer | Máximo de subidas de archivos por IP por `FILE_UPLOAD_IP_WINDOW`. Predeterminado: 100. | # FILE_UPLOAD_IP_MAX=100 |
| FILE_UPLOAD_IP_WINDOW | integer | En minutos, determina la ventana de tiempo para `FILE_UPLOAD_IP_MAX`. Predeterminado: 15. | # FILE_UPLOAD_IP_WINDOW=15 |
Limitador de usuarios:
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_UPLOAD_USER_MAX | integer | Máximo de subidas de archivos por usuario por `FILE_UPLOAD_USER_WINDOW`. Predeterminado: 50. | # FILE_UPLOAD_USER_MAX=50 |
| FILE_UPLOAD_USER_WINDOW | integer | En minutos, determina la ventana de tiempo para `FILE_UPLOAD_USER_MAX`. Predeterminado: 15. | # FILE_UPLOAD_USER_WINDOW=15 |
Límite de tasa de TTS (Text-to-Speech)
Limita la frecuencia con la que los usuarios pueden utilizar Text-to-Speech para prevenir abusos.
Nota: Estos también se pueden configurar a través de
librechat.yamlen la secciónrateLimits.tts.
Limitador de IP:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_IP_MAX | integer | Máximo de solicitudes TTS por IP por `TTS_IP_WINDOW`. Predeterminado: 100. | # TTS_IP_MAX=100 |
| TTS_IP_WINDOW | integer | En minutos, determina la ventana de tiempo para `TTS_IP_MAX`. Predeterminado: 1. | # TTS_IP_WINDOW=1 |
Limitador de usuarios:
| Key | Type | Description | Example |
|---|---|---|---|
| TTS_USER_MAX | integer | Máximo de solicitudes TTS por usuario por `TTS_USER_WINDOW`. Predeterminado: 50. | # TTS_USER_MAX=50 |
| TTS_USER_WINDOW | integer | En minutos, determina la ventana de tiempo para `TTS_USER_MAX`. Predeterminado: 1. | # TTS_USER_WINDOW=1 |
Limitación de tasa de STT (Speech-to-Text)
Limita la frecuencia con la que los usuarios pueden utilizar Speech-to-Text para prevenir abusos.
Nota: Estos también se pueden configurar a través de
librechat.yamlen la secciónrateLimits.stt.
Limitador de IP:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_IP_MAX | integer | Máximo de solicitudes STT por IP por `STT_IP_WINDOW`. Predeterminado: 100. | # STT_IP_MAX=100 |
| STT_IP_WINDOW | integer | En minutos, determina la ventana de tiempo para `STT_IP_MAX`. Predeterminado: 1. | # STT_IP_WINDOW=1 |
Limitador de usuarios:
| Key | Type | Description | Example |
|---|---|---|---|
| STT_USER_MAX | integer | Máximo de solicitudes STT por usuario por `STT_USER_WINDOW`. Predeterminado: 50. | # STT_USER_MAX=50 |
| STT_USER_WINDOW | integer | En minutos, determina la ventana de tiempo para `STT_USER_MAX`. Predeterminado: 1. | # STT_USER_WINDOW=1 |
Balance
La siguiente función permite la gestión de saldos de usuario dentro de los endpoint del sistema. Tiene la opción de añadir saldos manualmente, o puede optar por implementar un sistema que acumule saldos automáticamente para los usuarios. Si se define un saldo inicial específico en la configuración, los tokens se acreditarán al saldo del usuario automáticamente cuando se registre.
ver: Uso de Tokens
| Key | Type | Description | Example |
|---|---|---|---|
| CHECK_BALANCE | boolean | Habilitar saldos de crédito de tokens para los endpoints de OpenAI/Plugins. | CHECK_BALANCE=false |
| START_BALANCE | integer | Si el valor está establecido, se acreditarán tokens al saldo del usuario después del registro. | START_BALANCE=20000 |
Gestión de saldos
- Ejecuta
npm run add-balancepara añadir saldos manualmente.- También puede especificar el correo electrónico y la cantidad de créditos de token a añadir, por ejemplo:
npm run add-balance [email protected] 1000
- También puede especificar el correo electrónico y la cantidad de créditos de token a añadir, por ejemplo:
- Ejecuta
npm run set-balancepara establecer saldos manualmente, de forma similar aadd-balance. - Ejecuta
npm run list-balancespara listar el saldo de cada usuario.
Nota: 1000 créditos = $0.001 (1 mil USD)
Registro e inicio de sesión
Aclaración sobre el archivo de configuración
Todos los ajustes de autenticación en esta sección deben configurarse en su archivo .env, no en el archivo librechat.yaml o docker-compose.override.yml. El archivo docker-compose.override.yml solo se utiliza para montar volúmenes y establecer variables de entorno para Docker, mientras que el archivo librechat.yaml se utiliza para endpoints personalizados y otros ajustes de la aplicación.
- Configuración general:
| Key | Type | Description | Example |
|---|---|---|---|
| ALLOW_EMAIL_LOGIN | boolean | Habilitar o deshabilitar SOLO el inicio de sesión por correo electrónico. | ALLOW_EMAIL_LOGIN=true |
| ALLOW_REGISTRATION | boolean | Habilitar o deshabilitar el registro por correo electrónico de nuevos usuarios. | ALLOW_REGISTRATION=true |
| ALLOW_SOCIAL_LOGIN | boolean | Permitir a los usuarios conectarse a LibreChat con varias redes sociales. | ALLOW_SOCIAL_LOGIN=false |
| ALLOW_SOCIAL_REGISTRATION | boolean | Habilitar o deshabilitar el registro de nuevos usuarios mediante varias redes sociales. | ALLOW_SOCIAL_REGISTRATION=false |
| ALLOW_PASSWORD_RESET | boolean | Habilitar o deshabilitar la capacidad de los usuarios para restablecer su contraseña por sí mismos | ALLOW_PASSWORD_RESET=false |
| ALLOW_ACCOUNT_DELETION | boolean | Habilita o deshabilita la capacidad de los usuarios para eliminar su cuenta por sí mismos. Habilitado de forma predeterminada si se omite o se comenta. | ALLOW_ACCOUNT_DELETION=true |
| ALLOW_UNVERIFIED_EMAIL_LOGIN | boolean | Establecer en true para permitir que los usuarios inicien sesión sin verificar su dirección de correo electrónico. Si se establece en false, se requerirá que los usuarios verifiquen su correo electrónico antes de iniciar sesión. | ALLOW_UNVERIFIED_EMAIL_LOGIN=true |
| MIN_PASSWORD_LENGTH | number | Longitud mínima de contraseña para la autenticación de usuarios. Al usar la autenticación LDAP, es posible que desee establecer esto en 1 para omitir la validación de contraseña local, ya que los servidores LDAP gestionan sus propias políticas de contraseñas. | MIN_PASSWORD_LENGTH=8 |
Consejo rápido: Incluso con el registro deshabilitado, agregue usuarios directamente a la base de datos usando
npm run create-user.
Consejo rápido: Con el registro deshabilitado, puede eliminar un usuario con
npm run delete-user [email protected].
- Configuración de sesión y tokens de actualización:
| Key | Type | Description | Example |
|---|---|---|---|
| SESSION_EXPIRY | integer (milliseconds) | Tiempo de expiración de la sesión. | SESSION_EXPIRY=1000 * 60 * 15 |
| REFRESH_TOKEN_EXPIRY | integer (milliseconds) | Tiempo de caducidad del token de actualización. | REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7 |
| SESSION_COOKIE_SECURE | boolean | Invalida el atributo Secure para las cookies de sesión/autenticación. Déjelo sin configurar para utilizar la heurística predeterminada de NODE_ENV/DOMAIN_SERVER. | # SESSION_COOKIE_SECURE=false |
-
Para más información: Refresh Token
-
Configuración de JWT:
Debe utilizar nuevos valores seguros. Los ejemplos proporcionados son claves de 32 bytes (64 caracteres en hexadecimal). Utilice este replit para generar algunos rápidamente: JWT Keys
| Key | Type | Description | Example |
|---|---|---|---|
| JWT_SECRET | string (hex) | Clave secreta JWT. | JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef |
| JWT_REFRESH_SECRET | string (hex) | Clave secreta de actualización JWT. | JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418 |
Inicios de sesión sociales
Para más detalles: OAuth2-OIDC
Autenticación de Apple
Para más información: Autenticación de Apple
| Key | Type | Description | Example |
|---|---|---|---|
| APPLE_CLIENT_ID | string | Tu ID de servicios de Apple (p. ej., com.yourdomain.librechat.services). | APPLE_CLIENT_ID=com.yourdomain.librechat.services |
| APPLE_TEAM_ID | string | Tu ID de equipo de desarrollador de Apple. | APPLE_TEAM_ID=YOUR_TEAM_ID |
| APPLE_KEY_ID | string | Tu Apple Key ID de la clave descargada. | APPLE_KEY_ID=YOUR_KEY_ID |
| APPLE_PRIVATE_KEY_PATH | string | Ruta absoluta a su archivo .p8 descargado. | APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8 |
| APPLE_CALLBACK_URL | string | La URL de callback para la autenticación de Apple. | APPLE_CALLBACK_URL=/oauth/apple/callback |
Autenticación de Discord
Para más información: Discord
| Key | Type | Description | Example |
|---|---|---|---|
| DISCORD_CLIENT_ID | string | Tu ID de cliente de Discord. | DISCORD_CLIENT_ID= |
| DISCORD_CLIENT_SECRET | string | Tu client secret de Discord. | DISCORD_CLIENT_SECRET= |
| DISCORD_CALLBACK_URL | string | La URL de callback para la autenticación de Discord. | DISCORD_CALLBACK_URL=/oauth/discord/callback |
Autenticación de Facebook
Para más información: Autenticación de Facebook
| Key | Type | Description | Example |
|---|---|---|---|
| FACEBOOK_CLIENT_ID | string | Tu ID de cliente de Facebook. | FACEBOOK_CLIENT_ID= |
| FACEBOOK_CLIENT_SECRET | string | Tu client secret de Facebook. | FACEBOOK_CLIENT_SECRET= |
| FACEBOOK_CALLBACK_URL | string | La URL de callback para la autenticación de Facebook. | FACEBOOK_CALLBACK_URL=/oauth/facebook/callback |
Autenticación de GitHub
Para más información: Autenticación de GitHub
| Key | Type | Description | Example |
|---|---|---|---|
| GITHUB_CLIENT_ID | string | Tu ID de cliente de GitHub. | GITHUB_CLIENT_ID= |
| GITHUB_CLIENT_SECRET | string | Tu client secret de GitHub. | GITHUB_CLIENT_SECRET= |
| GITHUB_CALLBACK_URL | string | La URL de callback para la autenticación de GitHub. | GITHUB_CALLBACK_URL=/oauth/github/callback |
| GITHUB_ENTERPRISE_BASE_URL | string | Opcional: La URL base para su instancia de GitHub Enterprise. | GITHUB_ENTERPRISE_BASE_URL= |
| GITHUB_ENTERPRISE_USER_AGENT | string | Opcional: El agente de usuario para las solicitudes de GitHub Enterprise. | GITHUB_ENTERPRISE_USER_AGENT= |
Autenticación de Google
Para más información: Google Authentication
| Key | Type | Description | Example |
|---|---|---|---|
| GOOGLE_CLIENT_ID | string | Tu ID de cliente de Google. | GOOGLE_CLIENT_ID= |
| GOOGLE_CLIENT_SECRET | string | Tu Google client secret. | GOOGLE_CLIENT_SECRET= |
| GOOGLE_CALLBACK_URL | string | La URL de callback para la autenticación de Google. | GOOGLE_CALLBACK_URL=/oauth/google/callback |
OpenID Connect
Para más información:
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_CLIENT_ID | string | Tu ID de cliente de OpenID. | OPENID_CLIENT_ID= |
| OPENID_CLIENT_SECRET | string | Tu client secret de OpenID. | OPENID_CLIENT_SECRET= |
| OPENID_ISSUER | string | La URL del emisor de OpenID. | OPENID_ISSUER= |
| OPENID_SESSION_SECRET | string | El secreto para el almacenamiento de sesiones de OpenID. | OPENID_SESSION_SECRET= |
| OPENID_SCOPE | string | El scope de OpenID. | OPENID_SCOPE="openid profile email" |
| OPENID_CALLBACK_URL | string | La URL de callback para la autenticación OpenID. | OPENID_CALLBACK_URL=/oauth/openid/callback |
| OPENID_AUDIENCE | string | Valor de audiencia para la validación de JWT de OpenID y las solicitudes de autorización. Se aceptan valores separados por comas para la validación de JWT; las solicitudes de autorización utilizan el primer valor no vacío. Requerido para Auth0 cuando se usa OPENID_REUSE_TOKENS=true para recibir tokens de acceso JWT en lugar de tokens opacos. | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REQUIRED_ROLE | string | El/los rol(es) requerido(s) para la validación. Admite un solo rol o varios roles separados por comas. Cuando se especifican varios roles, el usuario necesita CUALQUIERA de los roles especificados (lógica O). | OPENID_REQUIRED_ROLE=admin or OPENID_REQUIRED_ROLE=role1,role2,admin |
| OPENID_REQUIRED_ROLE_TOKEN_KIND | string | El tipo de token para la validación de roles requeridos. | OPENID_REQUIRED_ROLE_TOKEN_KIND= |
| OPENID_REQUIRED_ROLE_PARAMETER_PATH | string | La ruta del parámetro para la validación de roles requeridos. | OPENID_REQUIRED_ROLE_PARAMETER_PATH= |
| OPENID_ADMIN_ROLE | string | El rol que el usuario debe tener para ser administrador en LibreChat. | OPENID_ADMIN_ROLE= |
| OPENID_ADMIN_ROLE_TOKEN_KIND | string | La fuente de información para la verificación del rol de administrador. Los valores posibles son: access, id o userinfo. | OPENID_ADMIN_ROLE_TOKEN_KIND= |
| OPENID_ADMIN_ROLE_PARAMETER_PATH | string | La ruta del parámetro para la validación de roles requeridos. | OPENID_ADMIN_ROLE_PARAMETER_PATH= |
| OPENID_ROLE_SYNC_ENABLED | boolean | Habilitar la sincronización de roles OpenID genérica para roles que no sean de administrador. ADMIN no puede asignarse mediante sincronización de roles; utilice OPENID_ADMIN_ROLE para la elevación a administrador. | OPENID_ROLE_SYNC_ENABLED=false |
| OPENID_ROLE_SYNC_API_ENABLED | boolean | Habilitar asistentes de sincronización de roles basados en API. Requiere OPENID_ROLE_SYNC_ENABLED=true. | OPENID_ROLE_SYNC_API_ENABLED=false |
| OPENID_ROLE_SYNC_SOURCE | string | Fuente de token para la declaración de rol. Debe ser uno de: access, id, userinfo. Predeterminado: id. | OPENID_ROLE_SYNC_SOURCE=id |
| OPENID_ROLE_SYNC_CLAIM | string | Ruta de la reclamación que contiene los roles o grupos del proveedor. Requerido cuando la sincronización de roles está habilitada. | OPENID_ROLE_SYNC_CLAIM= |
| OPENID_ROLE_SYNC_ROLE_PRIORITY | string | Roles de LibreChat separados por comas, ordenados del más importante al menos importante. Se asigna el primer rol que coincida. | OPENID_ROLE_SYNC_ROLE_PRIORITY=Support,User |
| OPENID_ROLE_SYNC_FALLBACK_ROLE | string | Rol de LibreChat asignado cuando no coincide ningún rol de prioridad. El respaldo es autoritativo cuando está configurado. | OPENID_ROLE_SYNC_FALLBACK_ROLE=USER |
| OPENID_BUTTON_LABEL | string | La etiqueta para el botón de inicio de sesión de OpenID. | OPENID_BUTTON_LABEL= |
| OPENID_IMAGE_URL | string | La URL de la imagen del botón de inicio de sesión de OpenID. | OPENID_IMAGE_URL= |
| OPENID_USE_END_SESSION_ENDPOINT | string | Si se debe utilizar el Issuer End Session Endpoint como redirección de cierre de sesión | OPENID_USE_END_SESSION_ENDPOINT=TRUE |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Longitud máxima de la URL de cierre de sesión antes de usar logout_hint en lugar de id_token_hint. Predeterminado: 2000. | # OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
| OPENID_AUTO_REDIRECT | boolean | Si se debe redirigir automáticamente al proveedor de OpenID. | OPENID_AUTO_REDIRECT=true |
| OPENID_USE_PKCE | boolean | Utilice PKCE (Proof Key for Code Exchange) para la autenticación OpenID. Para clientes públicos sin un client secret, deje OPENID_CLIENT_SECRET vacío y establezca esto en true. | # OPENID_USE_PKCE=true |
| OPENID_POST_LOGOUT_REDIRECT_URI | string | URI de redirección después del cierre de sesión de OpenID. El valor predeterminado es ${DOMAIN_CLIENT}/login. | # OPENID_POST_LOGOUT_REDIRECT_URI= |
| OPENID_CLOCK_TOLERANCE | number | Tolerancia de reloj en segundos para la validación de tokens. Predeterminado: 300. | # OPENID_CLOCK_TOLERANCE=300 |
| OPENID_GENERATE_NONCE | boolean | Forzar al cliente OpenID a generar un parámetro nonce. Requerido por algunos proveedores de identidad como AWS Cognito (especialmente con federación) y Authentik. | OPENID_GENERATE_NONCE=true |
| DEBUG_OPENID_REQUESTS | boolean | Habilita el registro detallado de los encabezados de solicitud de OpenID. Cuando está desactivado (predeterminado), solo se registran las URL de solicitud a nivel de depuración. Cuando está activado, también se registran los encabezados de solicitud (con datos confidenciales enmascarados) para una depuración más profunda de los problemas de autenticación. | DEBUG_OPENID_REQUESTS=false |
| OPENID_USERNAME_CLAIM | string | La propiedad de información del usuario del proveedor OpenID que se almacenará como el nombre de usuario del usuario. | OPENID_USERNAME_CLAIM= |
| OPENID_NAME_CLAIM | string | La propiedad de información del usuario del proveedor OpenID que se almacenará como el nombre para mostrar del usuario. | OPENID_NAME_CLAIM= |
| OPENID_EMAIL_CLAIM | string | La notificación de información del usuario que se utilizará como correo electrónico/identificador para la coincidencia de usuarios (p. ej., "upn" para Entra ID). Cuando no se establece, el valor predeterminado es: email → preferred_username → upn. | OPENID_EMAIL_CLAIM= |
Sincronización de roles de OpenID
OPENID_ROLE_SYNC_CLAIM es obligatorio cuando la sincronización de roles está habilitada.
OPENID_ROLE_SYNC_API_ENABLED=true también requiere OPENID_ROLE_SYNC_ENABLED=true. La sincronización de roles genérica no puede asignar ADMIN; utilice OPENID_ADMIN_ROLE para la elevación a administrador.
Reutilización de tokens de OpenID Connect
LibreChat permite reutilizar los tokens de acceso y de actualización emitidos por su proveedor de OpenID Connect (como Azure Entra ID o Auth0) para gestionar el estado de autenticación del usuario. Cuando esta función está activa, el token de actualización que se entrega al usuario como cookie es emitido por su proveedor de OpenID en lugar de LibreChat.
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_REUSE_TOKENS | boolean | Habilitar la reutilización de tokens de proveedores OpenID para la gestión de sesiones. | OPENID_REUSE_TOKENS=false |
| OPENID_SCOPE | string | Lista de scopes de OpenID separados por espacios. Debe incluir offline_access para la reutilización de tokens. | OPENID_SCOPE=api://librechat/.default openid profile email offline_access |
| OPENID_AUDIENCE | string | Valor de audiencia para las solicitudes de validación y autorización de OpenID JWT. Se aceptan valores separados por comas para la validación de JWT; las solicitudes de autorización utilizan el primer valor no vacío. Requerido para Auth0 cuando OPENID_REUSE_TOKENS=true. Consulte la nota en la sección principal de OpenID más arriba. | OPENID_AUDIENCE=https://api.librechat.com |
| OPENID_REUSE_MAX_SESSION_AGE_MS | number | Edad máxima que se sirve un token de sesión OpenID reutilizado antes de que LibreChat fuerce una actualización del IdP. Predeterminado: 900000 ms / 15 minutos. | OPENID_REUSE_MAX_SESSION_AGE_MS=900000 |
| OPENID_JWKS_URL_CACHE_ENABLED | boolean | Habilitar el almacenamiento en caché de los resultados de verificación de la clave de firma. | OPENID_JWKS_URL_CACHE_ENABLED=true |
| OPENID_JWKS_URL_CACHE_TIME | number | Duración de la caché en milisegundos (predeterminado: 600000 ms / 10 minutos). | OPENID_JWKS_URL_CACHE_TIME=600000 |
| OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED | boolean | Habilitar el flujo on-behalf-of para la información del usuario. | OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true |
| OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE | string | Alcance para la información del usuario en el flujo on-behalf-of. | OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read |
| OPENID_USE_END_SESSION_ENDPOINT | boolean | Habilitar el uso del endpoint de fin de sesión para cerrar sesión. | OPENID_USE_END_SESSION_ENDPOINT=true |
| OPENID_MAX_LOGOUT_URL_LENGTH | number | Longitud máxima de la URL de cierre de sesión en caracteres antes de cambiar a logout_hint. Útil para evitar errores de URI demasiado larga cuando id_token_hint excede los límites del servidor. Predeterminado: 2000. | OPENID_MAX_LOGOUT_URL_LENGTH=2000 |
OPENID_REUSE_MAX_SESSION_AGE_MS acepta expresiones aritméticas como SESSION_EXPIRY. Auméntelo hacia el tiempo de vida del token de acceso del IdP cuando su proveedor revoque el token de acceso anterior al actualizarse, de modo que los consumidores intermedios, como los servidores MCP, puedan terminar de usar un token de portador (bearer token) que aún sea válido.
Nota
Para conocer los pasos de configuración detallados y los requisitos previos, consulte Re-use OpenID Tokens for Login Session.
Integración con Microsoft Graph API / Entra ID
Al utilizar Azure Entra ID (anteriormente Azure AD) como su proveedor de OpenID, puede habilitar funciones adicionales de Microsoft Graph API para mejorar las capacidades de búsqueda de personas y grupos dentro del sistema de permisos y uso compartido.
| Key | Type | Description | Example |
|---|---|---|---|
| USE_ENTRA_ID_FOR_PEOPLE_SEARCH | boolean | Habilitar la integración de búsqueda de personas de Entra ID en el sistema de permisos/compartición. Cuando está habilitado, el selector de personas buscará tanto en la base de datos local como en Entra ID. | USE_ENTRA_ID_FOR_PEOPLE_SEARCH=false |
| ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS | boolean | Cuando está habilitado, los propietarios de grupos de Entra ID serán considerados como miembros del grupo. | ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false |
| OPENID_GRAPH_SCOPES | string | Alcances de Microsoft Graph API necesarios para la búsqueda de personas/grupos. Los alcances predeterminados proporcionan acceso a perfiles de usuario y membresías de grupos. | OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All |
Requisitos previos importantes
- Debe tener Azure Entra ID configurado como su proveedor OpenID - La reutilización de tokens OpenID DEBE estar habilitada (
OPENID_REUSE_TOKENS=true) - esta función no funcionará sin ella - Su registro de aplicación de Azure debe tener los permisos de Microsoft Graph API adecuados - Para la funcionalidad de búsqueda de grupos, es posible que se requiera el consentimiento del administrador para ciertos alcances de Graph API
Integración con SharePoint
LibreChat admite la integración directa con SharePoint Online y OneDrive for Business, lo que permite a los usuarios seleccionar y adjuntar archivos desde sus bibliotecas de SharePoint directamente dentro de las conversaciones. Esta función empresarial aprovecha la autenticación existente de Azure Entra ID.
| Key | Type | Description | Example |
|---|---|---|---|
| ENABLE_SHAREPOINT_FILEPICKER | boolean | Habilitar el selector de archivos de SharePoint en los paneles de chat y agentes. Cuando se habilita, añade la opción "Desde SharePoint" en el menú de adjuntos de archivos. | ENABLE_SHAREPOINT_FILEPICKER=true |
| SHAREPOINT_BASE_URL | string | URL base del tenant de SharePoint. Requerido cuando la integración de SharePoint está habilitada. | SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com |
| SHAREPOINT_PICKER_SHAREPOINT_SCOPE | string | Ámbito de OAuth específico de SharePoint para el selector de archivos. Se utiliza para la autenticación al abrir la interfaz del selector de archivos de SharePoint. | SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read |
| SHAREPOINT_PICKER_GRAPH_SCOPE | string | Ámbito de la Microsoft Graph API para descargas de archivos. Se utiliza para descargar archivos de SharePoint tras su selección. | SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All |
Requisitos críticos
Todo lo siguiente debe estar configurado para que la integración con SharePoint funcione:
- La autenticación de Azure Entra ID debe estar completamente configurada
OPENID_REUSE_TOKENS=truees obligatorio (utiliza el flujo de token on-behalf-of)OPENID_SCOPEdebe incluir el scope de la API de tu aplicación LibreChat, por ejemploapi://<client-id>/access_as_userOPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=truees necesario cuando se utiliza ese scope de app-audience con Azure Entra ID- Su registro de aplicación de Azure debe tener permisos de SharePoint y Graph API
- El registro de tu aplicación Azure debe exponer el ámbito (scope) de la API de LibreChat utilizado en
OPENID_SCOPE - Las cuatro variables de entorno de SharePoint deben estar configuradas
- HTTPS es obligatorio en entornos de producción
Capacidades de las funciones
Cuando está habilitado, los usuarios pueden:
- Acceder a archivos desde bibliotecas de documentos de SharePoint y OneDrive for Business
- Seleccionar varios archivos a la vez (máximo predeterminado: 10 archivos)
- Ver el progreso de descarga en tiempo real
- Los archivos se descargan y se adjuntan a la conversación como archivos subidos normales
Para obtener instrucciones detalladas sobre la configuración de SharePoint, consulte: SharePoint Integration Guide
SAML
Para más información:
Exclusión mutua de OpenID y SAML
Si OpenID está habilitado, la autenticación SAML se desactivará automáticamente.
Solo un método de autenticación puede estar activo a la vez.
| Key | Type | Description | Example |
|---|---|---|---|
| SAML_ENTRY_POINT | string | La URL del punto de entrada del proveedor de identidad (IdP) SAML. | SAML_ENTRY_POINT= |
| SAML_ISSUER | string | El ID de entidad del proveedor de servicios (SP) SAML. | SAML_ISSUER= |
| SAML_CERT | string | El certificado de firma SAML, proporcionado como una ruta de archivo o una cadena PEM de una sola línea. | SAML_CERT= |
| SAML_CALLBACK_URL | string | La URL de callback para la autenticación SAML. | SAML_CALLBACK_URL=/oauth/saml/callback |
| SAML_SESSION_SECRET | string | El secreto para el almacenamiento de sesiones SAML. | SAML_SESSION_SECRET= |
| SAML_EMAIL_CLAIM | string | <Optional>: El atributo en la aserción SAML que contiene el correo electrónico del usuario. (predeterminado: email) | SAML_EMAIL_CLAIM= |
| SAML_USERNAME_CLAIM | string | <Optional>: El atributo en la aserción SAML que contiene el nombre de usuario. (predeterminado: username) | SAML_USERNAME_CLAIM= |
| SAML_GIVEN_NAME_CLAIM | string | <Optional>: El atributo en la aserción SAML que contiene el nombre de pila. (predeterminado: given_name) | SAML_GIVEN_NAME_CLAIM= |
| SAML_FAMILY_NAME_CLAIM | string | <Optional>: El atributo en la aserción SAML que contiene el apellido. (predeterminado: family_name) | SAML_FAMILY_NAME_CLAIM= |
| SAML_PICTURE_CLAIM | string | <Optional>: El atributo en la aserción SAML que contiene la URL de la foto de perfil. (predeterminado: picture) | SAML_PICTURE_CLAIM= |
| SAML_NAME_CLAIM | string | <Optional>: El atributo en la aserción SAML que contiene el nombre completo. | SAML_NAME_CLAIM= |
| SAML_BUTTON_LABEL | string | <Optional>: La etiqueta para el botón de inicio de sesión SAML. | SAML_BUTTON_LABEL= |
| SAML_IMAGE_URL | string | <Optional>: La URL de la imagen del botón de inicio de sesión SAML. | SAML_IMAGE_URL= |
| SAML_USE_AUTHN_RESPONSE_SIGNED | boolean | <Optional>: Si es "true", firma toda la SAML Response. De lo contrario, solo se firma la Assertion (predeterminado). | SAML_USE_AUTHN_RESPONSE_SIGNED= |
Autenticación LDAP/AD
Para más información: Autenticación LDAP/AD
| Key | Type | Description | Example |
|---|---|---|---|
| LDAP_URL | string | URL del servidor LDAP. | LDAP_URL=ldap://localhost:389 |
| LDAP_BIND_DN | string | DN de enlace | LDAP_BIND_DN=cn=root |
| LDAP_BIND_CREDENTIALS | string | Contraseña para bindDN | LDAP_BIND_CREDENTIALS=password |
| LDAP_USER_SEARCH_BASE | string | Base de búsqueda de usuarios LDAP | LDAP_USER_SEARCH_BASE=o=users,o=example.com |
| LDAP_SEARCH_FILTER | string | Filtro de búsqueda LDAP | LDAP_SEARCH_FILTER=mail={{username}} |
| LDAP_CA_CERT_PATH | string | Ruta del certificado CA. | LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt |
| LDAP_TLS_REJECT_UNAUTHORIZED | string | Verificación TLS de LDAP | LDAP_TLS_REJECT_UNAUTHORIZED=true |
| LDAP_STARTTLS | string | Habilite LDAP StartTLS para actualizar la conexión a TLS. Establézcalo en true para habilitar esta función. | LDAP_STARTTLS=true |
| LDAP_LOGIN_USES_USERNAME | boolean | Usar nombre de usuario en lugar de correo electrónico para el inicio de sesión LDAP. | # LDAP_LOGIN_USES_USERNAME=true |
| LDAP_ID | string | Atributo LDAP para el ID de usuario único. Predeterminado: uid o sAMAccountName, mail. | # LDAP_ID=uid |
| LDAP_USERNAME | string | Atributo LDAP para el nombre de usuario. Predeterminado: givenName o mail. | # LDAP_USERNAME=givenName |
| LDAP_EMAIL | string | Atributo LDAP para el correo electrónico. Predeterminado: mail. | # LDAP_EMAIL=userPrincipalName |
| LDAP_FULL_NAME | string | Atributo(s) LDAP para el nombre completo. Puede estar separado por comas. Predeterminado: givenName + surname. | # LDAP_FULL_NAME=givenName,surname |
Restablecimiento de contraseña
El correo electrónico se utiliza para la verificación de cuentas y el restablecimiento de contraseñas. LibreChat admite tanto la API de Mailgun como los servicios SMTP tradicionales. Ver: Configuración de correo electrónico
Nota importante: Debe configurar Mailgun (recomendado para servidores que bloquean SMTP) o SMTP para que el correo electrónico funcione.
Advertencia: ¡Si no se establecen valores válidos para Mailgun o SMTP, LibreChat utilizará el restablecimiento de contraseña sin seguridad!
Configuración de Mailgun (Recomendado)
Mailgun es particularmente útil para implementaciones en servidores que bloquean los puertos SMTP. Cuando tanto MAILGUN_API_KEY como MAILGUN_DOMAIN están configurados, LibreChat utilizará Mailgun en lugar de SMTP.
| Key | Type | Description | Example |
|---|---|---|---|
| MAILGUN_API_KEY | string | Tu clave de API de Mailgun (requerida para Mailgun). | MAILGUN_API_KEY= |
| MAILGUN_DOMAIN | string | Tu dominio de Mailgun (requerido para Mailgun). | MAILGUN_DOMAIN=mg.yourdomain.com |
| MAILGUN_HOST | string | Host de API de Mailgun personalizado (opcional). Use https://api.eu.mailgun.net para la región de la UE. | MAILGUN_HOST=https://api.mailgun.net |
| EMAIL_FROM | string | Dirección de correo electrónico del remitente. Obligatorio. | [email protected] |
| EMAIL_FROM_NAME | string | Nombre del remitente (usa APP_TITLE por defecto si no se establece). | EMAIL_FROM_NAME= |
Configuración SMTP
Si Mailgun no está configurado, LibreChat recurrirá a los ajustes de SMTP.
Advertencia: Si utiliza
EMAIL_SERVICE, NO configure los parámetros de conexión extendidos: HOST, PORT, ENCRYPTION, ENCRYPTION_HOSTNAME, ALLOW_SELFSIGNED.
Ver: nodemailer well-known-services
| Key | Type | Description | Example |
|---|---|---|---|
| EMAIL_SERVICE | string | Servicio de correo electrónico (p. ej., Gmail, Outlook). | EMAIL_SERVICE= |
| EMAIL_HOST | string | Host del servidor de correo. | EMAIL_HOST= |
| EMAIL_PORT | number | Puerto del servidor de correo. | EMAIL_PORT=25 |
| EMAIL_ENCRYPTION | string | Método de cifrado (starttls, tls, etc.). | EMAIL_ENCRYPTION= |
| EMAIL_ENCRYPTION_HOSTNAME | string | Nombre de host para el cifrado. | EMAIL_ENCRYPTION_HOSTNAME= |
| EMAIL_ALLOW_SELFSIGNED | boolean | Permitir certificados autofirmados. | EMAIL_ALLOW_SELFSIGNED= |
| EMAIL_USERNAME | string | Nombre de usuario para la autenticación. | EMAIL_USERNAME= |
| EMAIL_PASSWORD | string | Contraseña para la autenticación. | EMAIL_PASSWORD= |
| EMAIL_FROM_NAME | string | Nombre del remitente. | EMAIL_FROM_NAME= |
| EMAIL_FROM | string | Dirección de correo electrónico del remitente. Obligatorio. | [email protected] |
Firebase CDN
Ver: Configuración de CDN de Firebase
Importante
- Si está utilizando Firebase como su estrategia de almacenamiento de archivos, establezca
fileStrategyofileStrategiesenfirebaseen su archivo de configuraciónlibrechat.yaml. Para obtener más información sobre cómo configurar el archivolibrechat.yaml, consulte la Guía de configuración YAML: Custom Endpoints & Configuration
| Key | Type | Description | Example |
|---|---|---|---|
| FIREBASE_API_KEY | string | La clave de API para tu proyecto de Firebase. | FIREBASE_API_KEY= |
| FIREBASE_AUTH_DOMAIN | string | El dominio de Firebase Auth para tu proyecto. | FIREBASE_AUTH_DOMAIN= |
| FIREBASE_PROJECT_ID | string | El ID de tu proyecto de Firebase. | FIREBASE_PROJECT_ID= |
| FIREBASE_STORAGE_BUCKET | string | El bucket de Firebase Storage para tu proyecto. | FIREBASE_STORAGE_BUCKET= |
| FIREBASE_MESSAGING_SENDER_ID | string | El ID del remitente de Firebase Cloud Messaging. | FIREBASE_MESSAGING_SENDER_ID= |
| FIREBASE_APP_ID | string | El ID de la aplicación Firebase para tu proyecto. | FIREBASE_APP_ID= |
Amazon S3 y CloudFront
Ver: Configuración de Amazon S3 y CloudFront con S3
Importante
Si está utilizando S3 como su estrategia de almacenamiento de archivos, configure fileStrategy o fileStrategies en su archivo de configuración librechat.yaml. Si utiliza CloudFront, S3 sigue siendo necesario como origen de almacenamiento.
| Key | Type | Description | Example |
|---|---|---|---|
| AWS_ACCESS_KEY_ID | string | Tu ID de clave de acceso de usuario IAM. Opcional si se utiliza IRSA. | AWS_ACCESS_KEY_ID=your_access_key_id |
| AWS_SECRET_ACCESS_KEY | string | Tu clave de acceso secreta de usuario IAM. Opcional si utilizas IRSA. | AWS_SECRET_ACCESS_KEY=your_secret_access_key |
| AWS_REGION | string | La región de AWS donde se encuentra su bucket de S3. | AWS_REGION=us-east-1 |
| AWS_BUCKET_NAME | string | El nombre del bucket de S3 para el almacenamiento de archivos. | AWS_BUCKET_NAME=your_bucket_name |
| AWS_ENDPOINT_URL | string | URL de endpoint de AWS personalizado (opcional). Para servicios compatibles con S3. Incluya el esquema de URL, como https://a7g8.da.idrivee2-32.com. | # AWS_ENDPOINT_URL=https://your_endpoint_url |
| AWS_FORCE_PATH_STYLE | boolean | Establecer en true para proveedores compatibles con S3 que requieran URLs de estilo de ruta (por ejemplo, MinIO, Hetzner, Backblaze B2). No es necesario para AWS S3. Predeterminado: false. | # AWS_FORCE_PATH_STYLE=false |
| CLOUDFRONT_KEY_PAIR_ID | string | ID del par de claves públicas de CloudFront. Requerido para cookies firmadas y URLs de descarga firmadas de CloudFront. | # CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC |
| CLOUDFRONT_PRIVATE_KEY | string | Clave privada PEM de CloudFront. Requerida para cookies firmadas y URLs de descarga firmadas de CloudFront. Conserve los saltos de línea PEM al inyectar este secreto. | # CLOUDFRONT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----" |
Nota: Para implementaciones en Kubernetes (por ejemplo, en EKS), puede utilizar IRSA (IAM Roles for Service Accounts) en lugar de proporcionar credenciales explícitas. En ese caso, solo se requieren
AWS_REGIONyAWS_BUCKET_NAME.
Azure Blob Storage CDN
Ver: Configuración de CDN de Azure Blob Storage
Importante
Si está utilizando Azure Blob Storage como su estrategia de almacenamiento de archivos, establezca fileStrategy o fileStrategies en azure_blob en su archivo de configuración librechat.yaml.
| Key | Type | Description | Example |
|---|---|---|---|
| AZURE_STORAGE_CONNECTION_STRING | string | Cadena de conexión de Azure Blob Storage. Use esto O AZURE_STORAGE_ACCOUNT_NAME para Managed Identity. | AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=... |
| AZURE_STORAGE_ACCOUNT_NAME | string | Nombre de la cuenta de Azure Storage. Úselo para la autenticación con Managed Identity (no establezca la cadena de conexión). | # AZURE_STORAGE_ACCOUNT_NAME=yourAccountName |
| AZURE_STORAGE_PUBLIC_ACCESS | boolean | Habilitar el acceso público para blobs. Predeterminado: false. | AZURE_STORAGE_PUBLIC_ACCESS=false |
| AZURE_CONTAINER_NAME | string | Nombre del contenedor para el almacenamiento de archivos. Predeterminado: files. | AZURE_CONTAINER_NAME=files |
Nota: Utilice
AZURE_STORAGE_CONNECTION_STRING(Opción A) oAZURE_STORAGE_ACCOUNT_NAMEcon Managed Identity (Opción B), no ambos.
UI
Botón de Ayuda y FAQ
| Key | Type | Description | Example |
|---|---|---|---|
| HELP_AND_FAQ_URL | string | URL de Ayuda y FAQ. Si está vacío o comentado, el botón está habilitado. Para deshabilitar el botón de Ayuda y FAQ, establézcalo en "/". | HELP_AND_FAQ_URL=https://librechat.ai |
Comportamiento:
Establece los encabezados Cache-Control para archivos estáticos. Estas configuraciones solo se activan cuando NODE_ENV está configurado en production.
Configurar correctamente los encabezados de caché es crucial para optimizar el rendimiento y la eficiencia de su aplicación web. Al controlar cuánto tiempo almacenan los navegadores y las CDN copias de sus archivos estáticos, puede reducir significativamente la carga del servidor, disminuir los tiempos de carga de la página y mejorar la experiencia general del usuario.
- Descomente
STATIC_CACHE_MAX_AGEpara cambiar elmax-agede los archivos estáticos. Por defecto, esto está configurado en 4 semanas. - Descomente
STATIC_CACHE_S_MAX_AGEpara cambiar els-maxagede los archivos estáticos. Por defecto, esto está configurado en 1 semana.- Esto es para la shared cache, la cual es utilizada por CDNs y proxies.
Título de la aplicación y pie de página
| Key | Type | Description | Example |
|---|---|---|---|
| APP_TITLE | string | Título de la aplicación. | APP_TITLE=LibreChat |
| CUSTOM_FOOTER | string | Pie de página personalizado. | # CUSTOM_FOOTER="My custom footer" |
| TEMP_CHAT_RETENTION_HOURS | number | **Obsoleto:** Utilice `interface.temporaryChatRetention` en librechat.yaml en su lugar. Horas para retener chats temporales. Predeterminado: 720 (30 días). | # TEMP_CHAT_RETENTION_HOURS=168 |
Comportamiento:
- Descomente
CUSTOM_FOOTERpara añadir un pie de página personalizado. - Quite la marca de comentario y deje
CUSTOM_FOOTERvacío para eliminar el pie de página. - Ahora puede agregar uno o más enlaces en el valor de CUSTOM_FOOTER utilizando el siguiente formato:
[Anchor text](URL). Cada enlace debe estar delimitado por una barra vertical (|).
Ejemplo de Markdown:
CUSTOM_FOOTER=[Link 1](http://example1.com) | [Link 2](http://example2.com)
Sombrero de cumpleaños
| Key | Type | Description | Example |
|---|---|---|---|
| SHOW_BIRTHDAY_ICON | boolean | Mostrar el icono de gorro de cumpleaños. | # SHOW_BIRTHDAY_ICON=true |
Comportamiento:
- El icono del gorro de cumpleaños aparecerá automáticamente el 11 de febrero (el cumpleaños de LibreChat).
- Establezca
SHOW_BIRTHDAY_ICONenfalsepara desactivar el gorro de cumpleaños. - Establezca
SHOW_BIRTHDAY_ICONentruepara habilitar el gorro de cumpleaños de forma permanente.
Analítica
Google Tag Manager
LibreChat es compatible con Google Tag Manager para análisis. Necesitarás un ID de Google Tag Manager para habilitarlo en LibreChat. Sigue esta guía para generar un ID de Google Tag Manager y configurar Google Analytics. Luego, establece la variable de entorno ANALYTICS_GTM_ID con tu ID de Google Tag Manager.
Nota: Si ANALYTICS_GTM_ID no está configurado, Google Tag Manager no se habilitará. Si se configura incorrectamente, verá solicitudes fallidas a gtm.js
| Key | Type | Description | Example |
|---|---|---|---|
| ANALYTICS_GTM_ID | string | ID de Google Tag Manager. | ANALYTICS_GTM_ID= |
Importación de conversaciones
Configure los límites para las importaciones de archivos de conversación para evitar problemas de memoria.
| Key | Type | Description | Example |
|---|---|---|---|
| CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES | number | Tamaño máximo de archivo en bytes para las importaciones de conversaciones. Predeterminado: 0 (sin límite aplicado). Ejemplo: 262144000 (250 MiB). | # CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES=262144000 |
Vistas previas de archivos en línea
Controle qué tan grandes pueden ser los archivos generados antes de que LibreChat omita la extracción de vista previa en línea y los deje solo para descarga.
| Key | Type | Description | Example |
|---|---|---|---|
| FILE_PREVIEW_MAX_EXTRACT_BYTES | number | Tamaño máximo del archivo fuente en bytes para vistas previas integradas de artefactos de ejecución de código. Predeterminado: 2097152 (2 MiB). Las vistas previas en HTML renderizado siguen teniendo un límite por separado, por lo que los archivos muy complejos pueden omitir la vista previa incluso por debajo de este valor. | # FILE_PREVIEW_MAX_EXTRACT_BYTES=2097152 |
MCP (Model Context Protocol)
Configure los ajustes del Model Context Protocol para una gestión mejorada del servidor y soporte de OAuth.
Configuración del servidor MCP
| Key | Type | Description | Example |
|---|---|---|---|
| MCP_OAUTH_ON_AUTH_ERROR | boolean | Tratar las respuestas 401/403 como requisito de OAuth cuando no se encuentre metadatos de OAuth. | MCP_OAUTH_ON_AUTH_ERROR=true |
| MCP_OAUTH_DETECTION_TIMEOUT | number | Tiempo de espera para las solicitudes de detección de OAuth en milisegundos. | MCP_OAUTH_DETECTION_TIMEOUT=5000 |
| MCP_OAUTH_HANDLING_TIMEOUT | number | Cuánto tiempo espera LibreChat a que un usuario complete un flujo OAuth de MCP antes de agotar el tiempo de espera. Predeterminado: 600000 ms (10 minutos). | MCP_OAUTH_HANDLING_TIMEOUT=600000 |
| MCP_OAUTH_FLOW_TTL | number | Cuánto tiempo se conserva el estado del flujo OAuth de MCP. LibreChat lo ajusta por encima de MCP_OAUTH_HANDLING_TIMEOUT para que las devoluciones de llamada cercanas al límite de tiempo aún puedan completarse. Predeterminado: 900000 ms (15 minutos). | MCP_OAUTH_FLOW_TTL=900000 |
| MCP_CONNECTION_CHECK_TTL | number | Comprobar el estado de la conexión de caché durante esta cantidad de milisegundos para evitar verificaciones costosas. | MCP_CONNECTION_CHECK_TTL=30000 |
| MCP_TOOLS_LIST_MAX_PAGES | number | Número máximo de herramientas/páginas de lista a solicitar cuando un servidor MCP pagina su lista de herramientas (paginación por cursor). Limita el bucle de paginación para que un servidor que funcione incorrectamente no pueda bloquear la detección de herramientas. Limitado a un mínimo de 1. Predeterminado: 50. | MCP_TOOLS_LIST_MAX_PAGES=50 |
| MCP_SKIP_CODE_CHALLENGE_CHECK | boolean | Omitir la validación del método de desafío de código. Cuando se establece en true, fuerza el desafío de código S256 incluso si no se anuncia en .well-known/openid-configuration | MCP_SKIP_CODE_CHALLENGE_CHECK=false |
| MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES | number | Máximo de bytes permitidos en una respuesta HTTP MCP transmitible que no sea GET antes de rechazarla. Establecer en 0 para desactivar. Predeterminado: 16777216 (16 MiB). | # MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES=16777216 |
| MCP_STREAMABLE_HTTP_MAX_LINE_BYTES | number | Máximo de bytes permitidos en una línea SSE para respuestas HTTP MCP transmitibles que no sean GET. Establezca en 0 para desactivar. Predeterminado: 5242880 (5 MiB). | # MCP_STREAMABLE_HTTP_MAX_LINE_BYTES=5242880 |
Otros
Redis
Redis proporciona mejoras de rendimiento significativas y permite capacidades de escalado horizontal para LibreChat.
Nota: El soporte para Redis es experimental y es posible que encuentre algunos problemas al utilizarlo.
Importante: Si utiliza Redis, debe vaciar la caché después de cambiar cualquier configuración de LibreChat.
Para obtener una configuración detallada y ejemplos, consulte: Guía de configuración de Redis
| Key | Type | Description | Example |
|---|---|---|---|
| USE_REDIS | boolean | Habilite Redis para el almacenamiento en caché y de sesiones. Cuando es true, se debe proporcionar REDIS_URI. | USE_REDIS=true |
| USE_REDIS_STREAMS | boolean | Habilita Redis para flujos de LLM reanudables. Si no se establece, utiliza el valor predeterminado de USE_REDIS. Configúralo en false para usar almacenamiento en memoria para los flujos. | # USE_REDIS_STREAMS=true |
| REDIS_URI | string | URI de conexión a Redis. Para una sola instancia: `redis://host:port`. Para un clúster: URIs separadas por comas. | REDIS_URI=redis://127.0.0.1:6379 |
| USE_REDIS_CLUSTER | boolean | Habilitar el modo clúster de Redis al usar una URI única | # USE_REDIS_CLUSTER="true" |
| REDIS_CLUSTER_SAFE_DELETE | boolean | Elimine las claves de caché de Redis de forma individual para evitar errores CROSSSLOT en servicios de Redis gestionados de punto final único que fragmentan las claves internamente. | # REDIS_CLUSTER_SAFE_DELETE=true |
| REDIS_USERNAME | string | Nombre de usuario de Redis para la autenticación. Sustituye al nombre de usuario en la URI si se proporcionan ambos. | # REDIS_USERNAME=your_redis_username |
| REDIS_PASSWORD | string | Contraseña de Redis para la autenticación. Sustituye a la contraseña en la URI si se proporcionan ambas. | # REDIS_PASSWORD=your_redis_password |
| REDIS_CA | string | Ruta al certificado CA para la verificación TLS al usar el protocolo rediss://. | # REDIS_CA=/path/to/ca-cert.pem |
| REDIS_KEY_PREFIX | string | Prefijo estático para todas las claves de Redis para evitar la contaminación entre despliegues. | # REDIS_KEY_PREFIX=librechat-prod-v2 |
| REDIS_KEY_PREFIX_VAR | string | Nombre de la variable de entorno que contiene el prefijo dinámico (p. ej., K_REVISION para Cloud Run). No se puede usar con REDIS_KEY_PREFIX. | # REDIS_KEY_PREFIX_VAR=K_REVISION |
| REDIS_MAX_LISTENERS | number | Máximo de event listeners por cliente de Redis. Previene fugas de memoria. Predeterminado: 40. | # REDIS_MAX_LISTENERS=40 |
| REDIS_PING_INTERVAL | number | Intervalo de ping en segundos para mantener las conexiones. Predeterminado: 0 (deshabilitado). Configúrelo solo si experimenta tiempos de espera agotados. | # REDIS_PING_INTERVAL=300 |
| FORCED_IN_MEMORY_CACHE_NAMESPACES | string | Claves de caché separadas por comas para forzar el almacenamiento en memoria incluso cuando Redis está habilitado. | # FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES |
| REDIS_USE_ALTERNATIVE_DNS_LOOKUP | boolean | Habilitar dnsLookup alternativo para conexiones TLS con AWS Elasticache. Requerido para clústeres de Elasticache con TLS. | # REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true |
Notas:
- Cuando
USE_REDIS=true, debes proporcionarREDIS_URIo la aplicación lanzará un error. - Para el modo Redis Cluster, proporcione múltiples URIs:
redis://node1:7001,redis://node2:7002,redis://node3:7003(el modo cluster se detecta automáticamente). - Para servicios de Redis gestionados de punto de conexión único que fragmentan claves internamente, mantenga
USE_REDIS_CLUSTER=falsey establezcaREDIS_CLUSTER_SAFE_DELETE=truesi los borrados de caché fallan con erroresCROSSSLOT. - Utilice el protocolo
rediss://para conexiones TLS y configureREDIS_CAsi su CA no es de confianza pública. REDIS_KEY_PREFIX_VARyREDIS_KEY_PREFIXson mutuamente excluyentes.- AWS Elasticache con TLS: Es posible que Elasticache necesite usar un dnsLookup alternativo para conexiones TLS. Establezca
REDIS_USE_ALTERNATIVE_DNS_LOOKUP=truesi utiliza Elasticache con TLS. Consulte la documentación de ioredis para obtener más detalles.
Elección de líder
Configure la elección de líder distribuida para implementaciones de múltiples instancias con Redis. La elección de líder garantiza que solo una instancia realice ciertas operaciones, como las tareas programadas.
| Key | Type | Description | Example |
|---|---|---|---|
| LEADER_LEASE_DURATION | number | Duración en segundos durante la cual el arrendamiento del líder es válido antes de que expire. Predeterminado: 25. | LEADER_LEASE_DURATION=25 |
| LEADER_RENEW_INTERVAL | number | Intervalo en segundos en el que el líder renueva su concesión. Predeterminado: 10. | LEADER_RENEW_INTERVAL=10 |
| LEADER_RENEW_ATTEMPTS | number | Número máximo de intentos de reintento cuando falla la renovación del contrato. Predeterminado: 3. | LEADER_RENEW_ATTEMPTS=3 |
| LEADER_RENEW_RETRY_DELAY | number | Retraso en segundos entre intentos de reintento al renovar la concesión. Predeterminado: 0.5. | LEADER_RENEW_RETRY_DELAY=0.5 |
Notas:
- La elección de líder requiere que Redis esté habilitado (
USE_REDIS=true). - Estos ajustes solo son relevantes para implementaciones de múltiples instancias.
- El contrato de arrendamiento del líder debe renovarse antes de su vencimiento para mantener el liderazgo.
- Si la renovación del arrendamiento falla después de los intentos máximos, la instancia renunciará al liderazgo.
¿Qué te parece esta guía?