Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

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:


Configuración del servidor

Puerto

  • El servidor escucha en un puerto específico.
  • La variable de entorno PORT establece el puerto donde escucha el servidor. De forma predeterminada, está configurada en 3080.
KeyTypeDescriptionExample
HOSTstringEspecifica el host.HOST=localhost
PORTnumberEspecifica 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.

KeyTypeDescriptionExample
TRUST_PROXYnumberEspecifica 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.

KeyTypeDescriptionExample
CREDS_KEYstringClave 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_IVstringIV 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

KeyTypeDescriptionExample
STATIC_CACHE_MAX_AGEstringCache-Control max-age en segundosSTATIC_CACHE_MAX_AGE=172800
STATIC_CACHE_S_MAX_AGEstringCache-Control s-maxage en segundos para cachés compartidas (CDN y proxies)STATIC_CACHE_S_MAX_AGE="86400"
DISABLE_COMPRESSIONbooleanDeshabilita la compresión para archivos estáticos.DISABLE_COMPRESSION=false
ENABLE_IMAGE_OUTPUT_GZIP_SCANbooleanHabilita 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_BROTLIbooleanHabilita 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_AGE para cambiar el max-age local de los archivos estáticos. Por defecto, esto está configurado en 2 días (172800 segundos).
  • Descomente STATIC_CACHE_S_MAX_AGE para establecer el s-maxage para cachés compartidas (CDNs y proxies). Por defecto, esto está configurado en 1 día (86400 segundos).
  • Descomente DISABLE_COMPRESSION para desactivar la compresión de archivos estáticos. De forma predeterminada, la compresión está habilitada.
  • Descomente ENABLE_IMAGE_OUTPUT_GZIP_SCAN para 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_BROTLI para servir versiones .br precomprimidas 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

KeyTypeDescriptionExample
INDEX_CACHE_CONTROLstringEncabezado Cache-Control para index.htmlINDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate
INDEX_PRAGMAstringEncabezado Pragma para index.htmlINDEX_PRAGMA=no-cache
INDEX_EXPIRESstringEncabezado Expires para index.htmlINDEX_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

KeyTypeDescriptionExample
MONGO_URIstringEspecifica 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 (retryWrites es la única opción que necesita al usar la base de datos en línea.)

Configuración del pool de conexiones de MongoDB

KeyTypeDescriptionExample
MONGO_MAX_POOL_SIZEnumberEl número máximo de conexiones en el grupo de conexiones.# MONGO_MAX_POOL_SIZE=
MONGO_MIN_POOL_SIZEnumberEl número mínimo de conexiones en el pool de conexiones.# MONGO_MIN_POOL_SIZE=
MONGO_MAX_CONNECTINGnumberEl 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_MSnumberEl 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_MSnumberEl 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

KeyTypeDescriptionExample
MONGO_AUTO_INDEXbooleanEstablecer 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_CREATEbooleanEstablecer 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 - use retryWrites=false
  • requiere una conexión TLS, por lo tanto, utilice los parámetros tls=true para habilitar TLS y tlsCAFile=/path-to-ca/bundle.pem para 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:

Dominios de aplicación

Para configurar LibreChat para uso local o despliegue en un dominio personalizado, establece las siguientes variables de entorno:

KeyTypeDescriptionExample
DOMAIN_CLIENTstringEspecifica el dominio del lado del cliente.DOMAIN_CLIENT=http://localhost:3080
DOMAIN_SERVERstringEspecifica el dominio del lado del servidor.DOMAIN_SERVER=http://localhost:3080
ADMIN_PANEL_URLstringURL 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_SECRETstringClave 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_PORTnumberPuerto 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

KeyTypeDescriptionExample
NO_INDEXbooleanEvita 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%.log en: LibreChat GitHub Issues
  • Los registros de error se almacenan en la misma ubicación.

Variables de entorno

KeyTypeDescriptionExample
DEBUG_LOGGINGbooleanMantener activos los registros de depuración.DEBUG_LOGGING=true
DEBUG_CONSOLEbooleanHabilitar registros detallados de consola/stdout en el mismo formato que los registros de depuración de archivos.DEBUG_CONSOLE=false
LOG_TO_FILEbooleanEstablecer en false para deshabilitar los transportes Winston respaldados por archivos mientras se mantiene disponible el registro en consola.LOG_TO_FILE=true
CONSOLE_JSONbooleanHabilitar registros de consola/stdout en formato JSON detallado, adecuados para implementaciones en la nube como GCP/AWS.CONSOLE_JSON=false
CONSOLE_JSON_STRING_LENGTHnumberConfigure 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_DIRstringDirectorio personalizado para archivos de registro. El valor predeterminado es /app/logs (Docker) o api/logs (desarrollo local).# LIBRECHAT_LOG_DIR=/custom/log/path
MEM_DIAGbooleanHabilitar 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_LOGGINGbooleanHabilita 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_LOGGING puede utilizarse con DEBUG_CONSOLE o CONSOLE_JSON, pero no con ambos.
  • DEBUG_CONSOLE y CONSOLE_JSON son 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.

KeyTypeDescriptionExample
UIDnumberEl ID de usuario.# UID=1000
GIDnumberEl 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.

KeyTypeDescriptionExample
OTEL_TRACING_ENABLEDbooleanHabilitar el rastreo de OpenTelemetry en el backend. El rastreo permanece desactivado cuando OTEL_SDK_DISABLED=true.# OTEL_TRACING_ENABLED=false
OTEL_SERVICE_NAMEstringNombre del servicio reportado a OpenTelemetry. Predeterminado: librechat.# OTEL_SERVICE_NAME=librechat
OTEL_SERVICE_VERSIONstringVersió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_ENDPOINTstringEndpoint base del exportador OTLP.# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTstringEndpoint OTLP específico para trazas. Sustituye al endpoint base para las trazas cuando se configura.# OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=
OTEL_EXPORTER_OTLP_HEADERSstringCabeceras del exportador OTLP separadas por comas, como los metadatos de autorización.# OTEL_EXPORTER_OTLP_HEADERS=
OTEL_TRACES_EXPORTERstringSelección del exportador de trazas.# OTEL_TRACES_EXPORTER=otlp
OTEL_TRACES_SAMPLERstringMuestreador de trazas de OpenTelemetry. Ejemplo predeterminado: parentbased_always_on.# OTEL_TRACES_SAMPLER=parentbased_always_on
OTEL_LOG_LEVELstringNivel de registro del SDK de OpenTelemetry.# OTEL_LOG_LEVEL=INFO
OTEL_SDK_DISABLEDbooleanDeshabilitar el SDK de OpenTelemetry incluso si el rastreo está habilitado.# OTEL_SDK_DISABLED=false
OTEL_IOREDIS_TRACING_ENABLEDbooleanHabilitar 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.

KeyTypeDescriptionExample
RUM_ENABLEDbooleanHabilitar el Real User Monitoring del navegador. Predeterminado: false.# RUM_ENABLED=false
RUM_PROVIDERstringProveedor de RUM para navegador. Actualmente es compatible con `hyperdx`.# RUM_PROVIDER=hyperdx
RUM_URLstringURL del recolector público utilizado por el modo public-token.# RUM_URL=http://localhost:4318
RUM_SERVICE_NAMEstringNombre del servicio reportado por el SDK del navegador. Predeterminado: librechat-web.# RUM_SERVICE_NAME=librechat-web
RUM_ENVIRONMENTstringEtiqueta de entorno reportada con telemetría del navegador.# RUM_ENVIRONMENT=development
RUM_AUTH_MODEstringModo de autenticación para la telemetría del navegador. Use `publicToken` o `proxy`.# RUM_AUTH_MODE=publicToken
RUM_PUBLIC_TOKENstringToken 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_URLstringURL 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_MSnumberTiempo de espera de la solicitud del proxy en milisegundos. Predeterminado: 10000.# RUM_PROXY_TIMEOUT_MS=10000
RUM_TRACE_PROPAGATION_TARGETSstringOrí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_REPLAYbooleanDeshabilitar la reproducción de sesión del navegador. Predeterminado: true.# RUM_DISABLE_REPLAY=true
RUM_CONSOLE_CAPTUREbooleanCapturar registros de la consola del navegador. Puede recopilar prompts, respuestas o cargas útiles confidenciales.# RUM_CONSOLE_CAPTURE=false
RUM_ADVANCED_NETWORK_CAPTUREbooleanCaptura cargas útiles de red detalladas. Puede recopilar prompts, respuestas o cargas útiles confidenciales.# RUM_ADVANCED_NETWORK_CAPTURE=false
RUM_SAMPLE_RATEnumberTasa 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.

KeyTypeDescriptionExample
CONFIG_PATHstringUna 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.

KeyTypeDescriptionExample
DEPLOYMENT_SKILLS_DIRstringDirectorio 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.

KeyTypeDescriptionExample
CONFIG_BYPASS_VALIDATIONbooleanCuando 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.

KeyTypeDescriptionExample
CONTINUE_ON_UNCAUGHT_EXCEPTIONbooleanCuando 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.

KeyTypeDescriptionExample
ENDPOINTSstringLista de endpoints disponibles separados por comas.# ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom
PROXYstringProxy de salida para clientes del lado del servidor compatibles. Se aplica tanto a destinos HTTP como HTTPS.PROXY=
HTTP_PROXYstringRespaldo de proxy HTTP utilizado por clientes del lado del servidor compatibles cuando PROXY no está configurado.# HTTP_PROXY=
HTTPS_PROXYstringRespaldo de proxy HTTPS utilizado por clientes del lado del servidor compatibles cuando PROXY no está configurado.# HTTPS_PROXY=
NO_PROXYstringHosts, 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_CONVObooleanHabilitar títulos para todos los endpoint.TITLE_CONVO=true

Endpoints conocidos - librechat.yaml

KeyTypeDescriptionExample
ANYSCALE_API_KEYstringClave de API para Anyscale.# ANYSCALE_API_KEY=
APIPIE_API_KEYstringClave de API para Apipie.# APIPIE_API_KEY=
COHERE_API_KEYstringClave de API para Cohere.# COHERE_API_KEY=
FIREWORKS_API_KEYstringClave de API para Fireworks.# FIREWORKS_API_KEY=
GROQ_API_KEYstringClave de API para Groq.# GROQ_API_KEY=
MISTRAL_API_KEYstringClave de API para Mistral.# MISTRAL_API_KEY=
OPENROUTER_KEYstringClave de API para OpenRouter.# OPENROUTER_KEY=
PERPLEXITY_API_KEYstringClave de API para Perplexity.# PERPLEXITY_API_KEY=
SHUTTLEAI_API_KEYstringClave de API para ShuttleAI.# SHUTTLEAI_API_KEY=
TOGETHERAI_API_KEYstringClave de API para TogetherAI.# TOGETHERAI_API_KEY=
DEEPSEEK_API_KEYstringClave de API para Deepseek API# DEEPSEEK_API_KEY=

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

KeyTypeDescriptionExample
SERPER_API_KEYstringClave de API para el proveedor de búsqueda Serper. Obtenga su clave en https://serper.dev/api-keys# SERPER_API_KEY=
TAVILY_API_KEYstringClave 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_URLstringURL 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_URLstringURL 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_KEYstringClave de API para el servicio de scraping Firecrawl. Obtenga su clave en https://docs.firecrawl.dev/introduction#api-key# FIRECRAWL_API_KEY=
FIRECRAWL_API_URLstringURL de API de Firecrawl personalizada (opcional). Solo es necesaria para instancias de Firecrawl personalizadas.# FIRECRAWL_API_URL=
FIRECRAWL_VERSIONstringVersión de la API de Firecrawl (v0 o v1).# FIRECRAWL_VERSION=v1
JINA_API_KEYstringClave de API para el servicio de reordenamiento de Jina. Obtenga su clave en https://jina.ai/api-dashboard/# JINA_API_KEY=
JINA_API_URLstringURL de API de Jina personalizada (opcional). Solo es necesaria para instancias de Jina personalizadas.# JINA_API_URL=
COHERE_API_KEYstringClave 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 con ANTHROPIC_REVERSE_PROXY=
    • dejar en blanco o comentar para usar la base url predeterminada
KeyTypeDescriptionExample
ANTHROPIC_API_KEYstringClave de API de Anthropic o "user_provided" para permitir que los usuarios proporcionen su propia clave de API.Defaults to an empty string.
ANTHROPIC_MODELSstringLista 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_PROXYstringProxy inverso para Anthropic.# ANTHROPIC_REVERSE_PROXY=
ANTHROPIC_TITLE_MODELstringOBSOLETO: Modelo a utilizar para la titulación con Anthropic.# ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307
  • ANTHROPIC_TITLE_MODEL está ahora obsoleto y será eliminado en versiones futuras. Utilice en su lugar la configuración de endpoint titleModel dentro del archivo de configuración librechat.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-haiku los 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

KeyTypeDescriptionExample
ANTHROPIC_USE_VERTEXbooleanEstablecer 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_REGIONstringLa 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 de Vertex AI User.

AWS Bedrock

Ver: Configuración de AWS Bedrock

KeyTypeDescriptionExample
BEDROCK_AWS_DEFAULT_REGIONstringSe debe proporcionar una región de AWS predeterminada para Bedrock.BEDROCK_AWS_DEFAULT_REGION=us-east-1
BEDROCK_AWS_ACCESS_KEY_IDstringID 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_KEYstringAWS 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_TOKENstringToken de sesión de AWS para credenciales temporales. Opcional.# BEDROCK_AWS_SESSION_TOKEN=your_session_token
BEDROCK_AWS_PROFILEstringNombre 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_TOKENstringClave 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_MODELSstringLista 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

KeyTypeDescriptionExample
BINGAI_TOKENstringToken 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_HOSTstringURL 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.

Google

Siga estas instrucciones para configurar el Google Endpoint

KeyTypeDescriptionExample
GOOGLE_KEYstringClave 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_FILEstringRuta 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_PROXYstringURL del proxy inverso de Google.GOOGLE_REVERSE_PROXY=
GOOGLE_AUTH_HEADERbooleanUtilice el encabezado Authorization en lugar de X-goog-api-key. Algunos proxies inversos requieren esto.# GOOGLE_AUTH_HEADER=true
GOOGLE_MODELSstringModelos 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_MODELSstringModelos 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_MODELstringOBSOLETO: El modelo utilizado para titular con Google.GOOGLE_TITLE_MODEL=gemini-pro
GOOGLE_LOCstringEspecifica la ubicación de Google Cloud para procesar las solicitudes de la APIGOOGLE_LOC=us-central1
GOOGLE_CLOUD_LOCATIONstringRegión alternativa para la generación de imágenes de Gemini (p. ej., global).# GOOGLE_CLOUD_LOCATION=global
GOOGLE_EXCLUDE_SAFETY_SETTINGSstringOmita por completo la configuración de seguridad incluida de forma predeterminada, lo que utilizará los valores predeterminados del proveedorGOOGLE_EXCLUDE_SAFETY_SETTINGS=true
GOOGLE_SAFETY_SEXUALLY_EXPLICITstringConfiguració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_SPEECHstringConfiguració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_HARASSMENTstringConfiguració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_CONTENTstringConfiguració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_INTEGRITYstringConfiguració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_MODEL está ahora obsoleto y será eliminado en versiones futuras. Utilice en su lugar el ajuste de endpoint titleModel en la configuración de librechat.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:

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

KeyTypeDescriptionExample
GEMINI_API_KEYstringClave 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_MODELstringModelo 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 de Vertex AI User.

OpenAI

Ver: Configuración de OpenAI

KeyTypeDescriptionExample
OPENAI_API_KEYstringTu 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_MODELSstringPersonalice 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_OPENAIbooleanHabilitar el modo de depuración para el endpoint de OpenAI.DEBUG_OPENAI=false
OPENAI_SUMMARIZEbooleanHabilitar el resumen de mensajes. Falso por defecto# OPENAI_SUMMARIZE=true
OPENAI_SUMMARY_MODELstringEl modelo utilizado para la sumarización de OpenAI.# OPENAI_SUMMARY_MODEL=gpt-3.5-turbo
OPENAI_FORCE_PROMPTbooleanForzar a que la API sea llamada con un payload de prompt en lugar de un payload de messages.# OPENAI_FORCE_PROMPT=false
OPENAI_ORGANIZATIONstringEspecifique qué organización utilizar para cada solicitud de API a OpenAI. Opcional# OPENAI_ORGANIZATION=
OPENAI_REVERSE_PROXYstringOBSOLETO: Configuración de proxy inverso para OpenAI.# OPENAI_REVERSE_PROXY=
OPENAI_TITLE_MODELstringOBSOLETO: El modelo utilizado para la titulación de OpenAI.# OPENAI_TITLE_MODEL=gpt-3.5-turbo
  • OPENAI_TITLE_MODEL está ahora obsoleto y será eliminado en versiones futuras. Utilice en su lugar el ajuste de endpoint titleModel en la configuración de librechat.yaml.
  • OPENAI_REVERSE_PROXY está ahora obsoleto y será eliminado en futuras versiones. Utilice un custom endpoint en su lugar.

Assistants

Ver: Configuración de Assistants

KeyTypeDescriptionExample
ASSISTANTS_API_KEYstringTu 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_MODELSstringPersonalice 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_URLstringURL 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:

KeyTypeDescriptionExample
TAVILY_API_KEYstringClave 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:

KeyTypeDescriptionExample
TRAVERSAAL_API_KEYstringClave de API de Traversaal.TRAVERSAAL_API_KEY=

WolframAlpha

Consulte las instrucciones detalladas aquí: Wolfram Alpha

Variables de entorno:

KeyTypeDescriptionExample
WOLFRAM_APP_IDstringID 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:

KeyTypeDescriptionExample
ZAPIER_NLA_API_KEYstringClave de API de Zapier NLA.ZAPIER_NLA_API_KEY=

OpenWeather

Consulta las instrucciones detalladas aquí: OpenWeather

KeyTypeDescriptionExample
OPENWEATHER_API_KEYstringClave 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

KeyTypeDescriptionExample
LIBRECHAT_CODE_API_KEYstringClave 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_BASEURLstringURL 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

KeyTypeDescriptionExample
SANDPACK_BUNDLER_URLstringEspecifica una URL de bundler personalizada para Sandpack, utilizada por ArtifactsSANDPACK_BUNDLER_URL=your-bundler-url

Búsqueda (Meilisearch)

Habilita la búsqueda en mensajes y conversaciones:

KeyTypeDescriptionExample
SEARCHbooleanHabilita 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:

KeyTypeDescriptionExample
MEILI_NO_ANALYTICSbooleanDesactiva 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.

KeyTypeDescriptionExample
MEILI_HOSTstringLa 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.

KeyTypeDescriptionExample
MEILI_MASTER_KEYstringLa 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.

KeyTypeDescriptionExample
MEILI_NO_SYNCstringInterruptor para desactivar la sincronización del índice de MeilisearchMEILI_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

KeyTypeDescriptionExample
RAG_API_URLstringURL del servicio de API de RAG.RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstringClave 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_BASEURLstringURL base de OpenAI personalizada para incrustaciones RAG.# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTbooleanObtener el contexto completo del archivo en lugar de los 4 mejores resultados. Predeterminado: false.# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringProveedor de embeddings: openai, azure, huggingface, huggingfacetei o ollama. Predeterminado: openai.# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstringModelo 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 .env se 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

KeyTypeDescriptionExample
STT_API_KEYstringClave de API para el servicio de conversión de voz a texto (p. ej., OpenAI Whisper).# STT_API_KEY=
TTS_API_KEYstringClave 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: en librechat.yaml. Estas variables de entorno se referencian en dicha configuración. Consulta Speech Settings para ver las opciones completas de configuración YAML.

Configurar la funcionalidad de enlaces de conversación compartidos.

KeyTypeDescriptionExample
ALLOW_SHARED_LINKSbooleanHabilitar o deshabilitar enlaces de conversaciones compartidas. Predeterminado: true.ALLOW_SHARED_LINKS=true
ALLOW_SHARED_LINKS_PUBLICbooleanPermitir que los enlaces compartidos sean accesibles públicamente sin autenticación. Predeterminado: false.ALLOW_SHARED_LINKS_PUBLIC=false
SHARED_LINKS_SNAPSHOT_FILESbooleanArchivos 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

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.

ver: Moderación Automatizada

Configuración básica de moderación

KeyTypeDescriptionExample
OPENAI_MODERATIONbooleanSi habilitar o no la moderación de OpenAI en los endpoints **OpenAI** y **Plugins**.OPENAI_MODERATION=false
OPENAI_MODERATION_API_KEYstringTu clave de API de OpenAI.OPENAI_MODERATION_API_KEY=
OPENAI_MODERATION_REVERSE_PROXYstringNota: Comentado por defecto, esto no funciona con todos los proxies inversos.# OPENAI_MODERATION_REVERSE_PROXY=

Configuración de bloqueo

KeyTypeDescriptionExample
BAN_VIOLATIONSbooleanSi se debe habilitar o no la prohibición de usuarios por infracciones (aún así serán registrados).BAN_VIOLATIONS=true
BAN_DURATIONintegerCuánto tiempo se bloquea al usuario y a la IP asociada (en milisegundos).BAN_DURATION=1000 * 60 * 60 * 2
BAN_INTERVALintegerEl 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.

KeyTypeDescriptionExample
LOGIN_MAXintegerLa cantidad máxima de inicios de sesión permitidos por IP por LOGIN_WINDOW.LOGIN_MAX=7
LOGIN_WINDOWintegerEn minutos, determina la ventana de tiempo para LOGIN_MAX inicios de sesión.LOGIN_WINDOW=5
REGISTER_MAXintegerLa cantidad máxima de registros permitidos por IP por REGISTER_WINDOW.REGISTER_MAX=5
REGISTER_WINDOWintegerEn minutos, determina la ventana de tiempo para los registros REGISTER_MAX.REGISTER_WINDOW=60

Puntuación para cada infracción

KeyTypeDescriptionExample
LOGIN_VIOLATION_SCOREintegerPuntuación para infracciones de inicio de sesión.LOGIN_VIOLATION_SCORE=1
REGISTRATION_VIOLATION_SCOREintegerPuntuación por infracciones de registro.REGISTRATION_VIOLATION_SCORE=1
CONCURRENT_VIOLATION_SCOREintegerPuntuación para infracciones simultáneas.CONCURRENT_VIOLATION_SCORE=1
MESSAGE_VIOLATION_SCOREintegerPuntuación para infracciones de mensajes.MESSAGE_VIOLATION_SCORE=1
NON_BROWSER_VIOLATION_SCOREintegerPuntuación para infracciones que no son del navegador.NON_BROWSER_VIOLATION_SCORE=20
ILLEGAL_MODEL_REQ_SCOREintegerPuntuación para solicitudes de modelos ilegales.ILLEGAL_MODEL_REQ_SCORE=5
IMPORT_VIOLATION_SCOREintegerPuntuación para infracciones de importación de conversaciones.IMPORT_VIOLATION_SCORE=1
FORK_VIOLATION_SCOREintegerPuntuación para infracciones de bifurcación de conversación.FORK_VIOLATION_SCORE=1
TTS_VIOLATION_SCOREintegerPuntuación para infracciones de texto a voz.TTS_VIOLATION_SCORE=0
STT_VIOLATION_SCOREintegerPuntuación para infracciones de conversión de voz a texto.STT_VIOLATION_SCORE=0
FILE_UPLOAD_VIOLATION_SCOREintegerPuntuación para violaciones de carga de archivos.FILE_UPLOAD_VIOLATION_SCORE=0
RESET_PASSWORD_VIOLATION_SCOREintegerPuntuación para infracciones de restablecimiento de contraseña.RESET_PASSWORD_VIOLATION_SCORE=0
VERIFY_EMAIL_VIOLATION_SCOREintegerPuntuación para infracciones de verificación de correo electrónico.VERIFY_EMAIL_VIOLATION_SCORE=0
TOOL_CALL_VIOLATION_SCOREintegerPuntuación para infracciones de llamadas a herramientas.TOOL_CALL_VIOLATION_SCORE=0
CONVO_ACCESS_VIOLATION_SCOREintegerPuntuació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)

KeyTypeDescriptionExample
LIMIT_CONCURRENT_MESSAGESbooleanSi se debe limitar la cantidad de mensajes que un usuario puede enviar por solicitud.LIMIT_CONCURRENT_MESSAGES=true
CONCURRENT_MESSAGE_MAXintegerLa 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:
KeyTypeDescriptionExample
LIMIT_MESSAGE_IPbooleanSi se debe limitar la cantidad de mensajes que una IP puede enviar por `MESSAGE_IP_WINDOW`.LIMIT_MESSAGE_IP=true
MESSAGE_IP_MAXintegerLa cantidad máxima de mensajes que una IP puede enviar por `MESSAGE_IP_WINDOW`.MESSAGE_IP_MAX=40
MESSAGE_IP_WINDOWintegerEn minutos, determina la ventana de tiempo para `MESSAGE_IP_MAX` mensajes.MESSAGE_IP_WINDOW=1
Limitador de usuarios:
KeyTypeDescriptionExample
LIMIT_MESSAGE_USERbooleanSi se debe limitar la cantidad de mensajes que un usuario puede enviar por `MESSAGE_USER_WINDOW`.LIMIT_MESSAGE_USER=false
MESSAGE_USER_MAXintegerLa cantidad máxima de mensajes que un usuario puede enviar por `MESSAGE_USER_WINDOW`.MESSAGE_USER_MAX=40
MESSAGE_USER_WINDOWintegerEn 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:
KeyTypeDescriptionExample
LIMIT_IMPORT_IPbooleanSi se debe limitar la cantidad de importaciones de conversaciones que una IP puede realizar por `IMPORT_IP_WINDOW`.LIMIT_IMPORT_IP=true
IMPORT_IP_MAXintegerLa cantidad máxima de importaciones de conversación que una IP puede realizar por `IMPORT_IP_WINDOW`.IMPORT_IP_MAX=100
IMPORT_IP_WINDOWintegerEn minutos, determina la ventana de tiempo para las importaciones de `IMPORT_IP_MAX`.IMPORT_IP_WINDOW=1
Limitador de usuarios:
KeyTypeDescriptionExample
LIMIT_IMPORT_USERbooleanDetermina 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_MAXintegerLa cantidad máxima de importaciones de conversaciones que un usuario puede realizar por `IMPORT_USER_WINDOW`.IMPORT_USER_MAX=50
IMPORT_USER_WINDOWintegerEn 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:
KeyTypeDescriptionExample
LIMIT_FORK_IPbooleanSi 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_MAXintegerLa cantidad máxima de bifurcaciones de conversación que una IP puede crear por `FORK_IP_WINDOW`.FORK_IP_MAX=30
FORK_IP_WINDOWintegerEn minutos, determina la ventana de tiempo para las bifurcaciones de `FORK_IP_MAX`.FORK_IP_WINDOW=1
Limitador de usuarios:
KeyTypeDescriptionExample
LIMIT_FORK_USERbooleanSi 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_MAXintegerLa cantidad máxima de bifurcaciones de conversación que un usuario puede crear por `FORK_USER_WINDOW`.FORK_USER_MAX=7
FORK_USER_WINDOWintegerEn 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.yaml en la sección rateLimits.fileUploads.

Limitador de IP:
KeyTypeDescriptionExample
FILE_UPLOAD_IP_MAXintegerMáximo de subidas de archivos por IP por `FILE_UPLOAD_IP_WINDOW`. Predeterminado: 100.# FILE_UPLOAD_IP_MAX=100
FILE_UPLOAD_IP_WINDOWintegerEn minutos, determina la ventana de tiempo para `FILE_UPLOAD_IP_MAX`. Predeterminado: 15.# FILE_UPLOAD_IP_WINDOW=15
Limitador de usuarios:
KeyTypeDescriptionExample
FILE_UPLOAD_USER_MAXintegerMáximo de subidas de archivos por usuario por `FILE_UPLOAD_USER_WINDOW`. Predeterminado: 50.# FILE_UPLOAD_USER_MAX=50
FILE_UPLOAD_USER_WINDOWintegerEn 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.yaml en la sección rateLimits.tts.

Limitador de IP:
KeyTypeDescriptionExample
TTS_IP_MAXintegerMáximo de solicitudes TTS por IP por `TTS_IP_WINDOW`. Predeterminado: 100.# TTS_IP_MAX=100
TTS_IP_WINDOWintegerEn minutos, determina la ventana de tiempo para `TTS_IP_MAX`. Predeterminado: 1.# TTS_IP_WINDOW=1
Limitador de usuarios:
KeyTypeDescriptionExample
TTS_USER_MAXintegerMáximo de solicitudes TTS por usuario por `TTS_USER_WINDOW`. Predeterminado: 50.# TTS_USER_MAX=50
TTS_USER_WINDOWintegerEn 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.yaml en la sección rateLimits.stt.

Limitador de IP:
KeyTypeDescriptionExample
STT_IP_MAXintegerMáximo de solicitudes STT por IP por `STT_IP_WINDOW`. Predeterminado: 100.# STT_IP_MAX=100
STT_IP_WINDOWintegerEn minutos, determina la ventana de tiempo para `STT_IP_MAX`. Predeterminado: 1.# STT_IP_WINDOW=1
Limitador de usuarios:
KeyTypeDescriptionExample
STT_USER_MAXintegerMáximo de solicitudes STT por usuario por `STT_USER_WINDOW`. Predeterminado: 50.# STT_USER_MAX=50
STT_USER_WINDOWintegerEn 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

KeyTypeDescriptionExample
CHECK_BALANCEbooleanHabilitar saldos de crédito de tokens para los endpoints de OpenAI/Plugins.CHECK_BALANCE=false
START_BALANCEintegerSi 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-balance para 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
  • Ejecuta npm run set-balance para establecer saldos manualmente, de forma similar a add-balance.
  • Ejecuta npm run list-balances para listar el saldo de cada usuario.

Nota: 1000 créditos = $0.001 (1 mil USD)

Registro e inicio de sesión

ver: Sistema de autenticación

Pantalla de registro de usuarioPantalla de registro de usuario

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:
KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINbooleanHabilitar o deshabilitar SOLO el inicio de sesión por correo electrónico.ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONbooleanHabilitar o deshabilitar el registro por correo electrónico de nuevos usuarios.ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINbooleanPermitir a los usuarios conectarse a LibreChat con varias redes sociales.ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONbooleanHabilitar o deshabilitar el registro de nuevos usuarios mediante varias redes sociales.ALLOW_SOCIAL_REGISTRATION=false
ALLOW_PASSWORD_RESETbooleanHabilitar o deshabilitar la capacidad de los usuarios para restablecer su contraseña por sí mismosALLOW_PASSWORD_RESET=false
ALLOW_ACCOUNT_DELETIONbooleanHabilita 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_LOGINbooleanEstablecer 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_LENGTHnumberLongitud 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:
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)Tiempo de expiración de la sesión.SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (milliseconds)Tiempo de caducidad del token de actualización.REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7
SESSION_COOKIE_SECUREbooleanInvalida 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

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

KeyTypeDescriptionExample
JWT_SECRETstring (hex)Clave secreta JWT.JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (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

KeyTypeDescriptionExample
APPLE_CLIENT_IDstringTu ID de servicios de Apple (p. ej., com.yourdomain.librechat.services).APPLE_CLIENT_ID=com.yourdomain.librechat.services
APPLE_TEAM_IDstringTu ID de equipo de desarrollador de Apple.APPLE_TEAM_ID=YOUR_TEAM_ID
APPLE_KEY_IDstringTu Apple Key ID de la clave descargada.APPLE_KEY_ID=YOUR_KEY_ID
APPLE_PRIVATE_KEY_PATHstringRuta absoluta a su archivo .p8 descargado.APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8
APPLE_CALLBACK_URLstringLa 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

KeyTypeDescriptionExample
DISCORD_CLIENT_IDstringTu ID de cliente de Discord.DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRETstringTu client secret de Discord.DISCORD_CLIENT_SECRET=
DISCORD_CALLBACK_URLstringLa 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

KeyTypeDescriptionExample
FACEBOOK_CLIENT_IDstringTu ID de cliente de Facebook.FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRETstringTu client secret de Facebook.FACEBOOK_CLIENT_SECRET=
FACEBOOK_CALLBACK_URLstringLa 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

KeyTypeDescriptionExample
GITHUB_CLIENT_IDstringTu ID de cliente de GitHub.GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRETstringTu client secret de GitHub.GITHUB_CLIENT_SECRET=
GITHUB_CALLBACK_URLstringLa URL de callback para la autenticación de GitHub.GITHUB_CALLBACK_URL=/oauth/github/callback
GITHUB_ENTERPRISE_BASE_URLstringOpcional: La URL base para su instancia de GitHub Enterprise.GITHUB_ENTERPRISE_BASE_URL=
GITHUB_ENTERPRISE_USER_AGENTstringOpcional: 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

KeyTypeDescriptionExample
GOOGLE_CLIENT_IDstringTu ID de cliente de Google.GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRETstringTu Google client secret.GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URLstringLa URL de callback para la autenticación de Google.GOOGLE_CALLBACK_URL=/oauth/google/callback

OpenID Connect

Para más información:

KeyTypeDescriptionExample
OPENID_CLIENT_IDstringTu ID de cliente de OpenID.OPENID_CLIENT_ID=
OPENID_CLIENT_SECRETstringTu client secret de OpenID.OPENID_CLIENT_SECRET=
OPENID_ISSUERstringLa URL del emisor de OpenID.OPENID_ISSUER=
OPENID_SESSION_SECRETstringEl secreto para el almacenamiento de sesiones de OpenID.OPENID_SESSION_SECRET=
OPENID_SCOPEstringEl scope de OpenID.OPENID_SCOPE="openid profile email"
OPENID_CALLBACK_URLstringLa URL de callback para la autenticación OpenID.OPENID_CALLBACK_URL=/oauth/openid/callback
OPENID_AUDIENCEstringValor 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_ROLEstringEl/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_KINDstringEl tipo de token para la validación de roles requeridos.OPENID_REQUIRED_ROLE_TOKEN_KIND=
OPENID_REQUIRED_ROLE_PARAMETER_PATHstringLa ruta del parámetro para la validación de roles requeridos.OPENID_REQUIRED_ROLE_PARAMETER_PATH=
OPENID_ADMIN_ROLEstringEl rol que el usuario debe tener para ser administrador en LibreChat.OPENID_ADMIN_ROLE=
OPENID_ADMIN_ROLE_TOKEN_KINDstringLa 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_PATHstringLa ruta del parámetro para la validación de roles requeridos.OPENID_ADMIN_ROLE_PARAMETER_PATH=
OPENID_ROLE_SYNC_ENABLEDbooleanHabilitar 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_ENABLEDbooleanHabilitar asistentes de sincronización de roles basados en API. Requiere OPENID_ROLE_SYNC_ENABLED=true.OPENID_ROLE_SYNC_API_ENABLED=false
OPENID_ROLE_SYNC_SOURCEstringFuente 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_CLAIMstringRuta 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_PRIORITYstringRoles 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_ROLEstringRol 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_LABELstringLa etiqueta para el botón de inicio de sesión de OpenID.OPENID_BUTTON_LABEL=
OPENID_IMAGE_URLstringLa URL de la imagen del botón de inicio de sesión de OpenID.OPENID_IMAGE_URL=
OPENID_USE_END_SESSION_ENDPOINTstringSi se debe utilizar el Issuer End Session Endpoint como redirección de cierre de sesiónOPENID_USE_END_SESSION_ENDPOINT=TRUE
OPENID_MAX_LOGOUT_URL_LENGTHnumberLongitud 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_REDIRECTbooleanSi se debe redirigir automáticamente al proveedor de OpenID.OPENID_AUTO_REDIRECT=true
OPENID_USE_PKCEbooleanUtilice 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_URIstringURI 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_TOLERANCEnumberTolerancia de reloj en segundos para la validación de tokens. Predeterminado: 300.# OPENID_CLOCK_TOLERANCE=300
OPENID_GENERATE_NONCEbooleanForzar 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_REQUESTSbooleanHabilita 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_CLAIMstringLa propiedad de información del usuario del proveedor OpenID que se almacenará como el nombre de usuario del usuario.OPENID_USERNAME_CLAIM=
OPENID_NAME_CLAIMstringLa propiedad de información del usuario del proveedor OpenID que se almacenará como el nombre para mostrar del usuario.OPENID_NAME_CLAIM=
OPENID_EMAIL_CLAIMstringLa 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.

KeyTypeDescriptionExample
OPENID_REUSE_TOKENSbooleanHabilitar la reutilización de tokens de proveedores OpenID para la gestión de sesiones.OPENID_REUSE_TOKENS=false
OPENID_SCOPEstringLista 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_AUDIENCEstringValor 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_MSnumberEdad 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_ENABLEDbooleanHabilitar 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_TIMEnumberDuración de la caché en milisegundos (predeterminado: 600000 ms / 10 minutos).OPENID_JWKS_URL_CACHE_TIME=600000
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIREDbooleanHabilitar el flujo on-behalf-of para la información del usuario.OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
OPENID_ON_BEHALF_FLOW_USERINFO_SCOPEstringAlcance para la información del usuario en el flujo on-behalf-of.OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read
OPENID_USE_END_SESSION_ENDPOINTbooleanHabilitar el uso del endpoint de fin de sesión para cerrar sesión.OPENID_USE_END_SESSION_ENDPOINT=true
OPENID_MAX_LOGOUT_URL_LENGTHnumberLongitud 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.

KeyTypeDescriptionExample
USE_ENTRA_ID_FOR_PEOPLE_SEARCHbooleanHabilitar 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_MEMBERSbooleanCuando 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_SCOPESstringAlcances 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.

KeyTypeDescriptionExample
ENABLE_SHAREPOINT_FILEPICKERbooleanHabilitar 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_URLstringURL base del tenant de SharePoint. Requerido cuando la integración de SharePoint está habilitada.SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com
SHAREPOINT_PICKER_SHAREPOINT_SCOPEstringÁ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_SCOPEstringÁ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=true es obligatorio (utiliza el flujo de token on-behalf-of)
  • OPENID_SCOPE debe incluir el scope de la API de tu aplicación LibreChat, por ejemplo api://<client-id>/access_as_user
  • OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true es 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.

KeyTypeDescriptionExample
SAML_ENTRY_POINTstringLa URL del punto de entrada del proveedor de identidad (IdP) SAML.SAML_ENTRY_POINT=
SAML_ISSUERstringEl ID de entidad del proveedor de servicios (SP) SAML.SAML_ISSUER=
SAML_CERTstringEl certificado de firma SAML, proporcionado como una ruta de archivo o una cadena PEM de una sola línea.SAML_CERT=
SAML_CALLBACK_URLstringLa URL de callback para la autenticación SAML.SAML_CALLBACK_URL=/oauth/saml/callback
SAML_SESSION_SECRETstringEl secreto para el almacenamiento de sesiones SAML.SAML_SESSION_SECRET=
SAML_EMAIL_CLAIMstring<Optional>: El atributo en la aserción SAML que contiene el correo electrónico del usuario. (predeterminado: email)SAML_EMAIL_CLAIM=
SAML_USERNAME_CLAIMstring<Optional>: El atributo en la aserción SAML que contiene el nombre de usuario. (predeterminado: username)SAML_USERNAME_CLAIM=
SAML_GIVEN_NAME_CLAIMstring<Optional>: El atributo en la aserción SAML que contiene el nombre de pila. (predeterminado: given_name)SAML_GIVEN_NAME_CLAIM=
SAML_FAMILY_NAME_CLAIMstring<Optional>: El atributo en la aserción SAML que contiene el apellido. (predeterminado: family_name)SAML_FAMILY_NAME_CLAIM=
SAML_PICTURE_CLAIMstring<Optional>: El atributo en la aserción SAML que contiene la URL de la foto de perfil. (predeterminado: picture)SAML_PICTURE_CLAIM=
SAML_NAME_CLAIMstring<Optional>: El atributo en la aserción SAML que contiene el nombre completo.SAML_NAME_CLAIM=
SAML_BUTTON_LABELstring<Optional>: La etiqueta para el botón de inicio de sesión SAML.SAML_BUTTON_LABEL=
SAML_IMAGE_URLstring<Optional>: La URL de la imagen del botón de inicio de sesión SAML.SAML_IMAGE_URL=
SAML_USE_AUTHN_RESPONSE_SIGNEDboolean<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

KeyTypeDescriptionExample
LDAP_URLstringURL del servidor LDAP.LDAP_URL=ldap://localhost:389
LDAP_BIND_DNstringDN de enlaceLDAP_BIND_DN=cn=root
LDAP_BIND_CREDENTIALSstringContraseña para bindDNLDAP_BIND_CREDENTIALS=password
LDAP_USER_SEARCH_BASEstringBase de búsqueda de usuarios LDAPLDAP_USER_SEARCH_BASE=o=users,o=example.com
LDAP_SEARCH_FILTERstringFiltro de búsqueda LDAPLDAP_SEARCH_FILTER=mail={{username}}
LDAP_CA_CERT_PATHstringRuta del certificado CA.LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt
LDAP_TLS_REJECT_UNAUTHORIZEDstringVerificación TLS de LDAPLDAP_TLS_REJECT_UNAUTHORIZED=true
LDAP_STARTTLSstringHabilite LDAP StartTLS para actualizar la conexión a TLS. Establézcalo en true para habilitar esta función.LDAP_STARTTLS=true
LDAP_LOGIN_USES_USERNAMEbooleanUsar nombre de usuario en lugar de correo electrónico para el inicio de sesión LDAP.# LDAP_LOGIN_USES_USERNAME=true
LDAP_IDstringAtributo LDAP para el ID de usuario único. Predeterminado: uid o sAMAccountName, mail.# LDAP_ID=uid
LDAP_USERNAMEstringAtributo LDAP para el nombre de usuario. Predeterminado: givenName o mail.# LDAP_USERNAME=givenName
LDAP_EMAILstringAtributo LDAP para el correo electrónico. Predeterminado: mail.# LDAP_EMAIL=userPrincipalName
LDAP_FULL_NAMEstringAtributo(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!

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.

KeyTypeDescriptionExample
MAILGUN_API_KEYstringTu clave de API de Mailgun (requerida para Mailgun).MAILGUN_API_KEY=
MAILGUN_DOMAINstringTu dominio de Mailgun (requerido para Mailgun).MAILGUN_DOMAIN=mg.yourdomain.com
MAILGUN_HOSTstringHost 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_FROMstringDirección de correo electrónico del remitente. Obligatorio.[email protected]
EMAIL_FROM_NAMEstringNombre 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

KeyTypeDescriptionExample
EMAIL_SERVICEstringServicio de correo electrónico (p. ej., Gmail, Outlook).EMAIL_SERVICE=
EMAIL_HOSTstringHost del servidor de correo.EMAIL_HOST=
EMAIL_PORTnumberPuerto del servidor de correo.EMAIL_PORT=25
EMAIL_ENCRYPTIONstringMétodo de cifrado (starttls, tls, etc.).EMAIL_ENCRYPTION=
EMAIL_ENCRYPTION_HOSTNAMEstringNombre de host para el cifrado.EMAIL_ENCRYPTION_HOSTNAME=
EMAIL_ALLOW_SELFSIGNEDbooleanPermitir certificados autofirmados.EMAIL_ALLOW_SELFSIGNED=
EMAIL_USERNAMEstringNombre de usuario para la autenticación.EMAIL_USERNAME=
EMAIL_PASSWORDstringContraseña para la autenticación.EMAIL_PASSWORD=
EMAIL_FROM_NAMEstringNombre del remitente.EMAIL_FROM_NAME=
EMAIL_FROMstringDirecció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 fileStrategy o fileStrategies en firebase en su archivo de configuración librechat.yaml. Para obtener más información sobre cómo configurar el archivo librechat.yaml, consulte la Guía de configuración YAML: Custom Endpoints & Configuration
KeyTypeDescriptionExample
FIREBASE_API_KEYstringLa clave de API para tu proyecto de Firebase.FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAINstringEl dominio de Firebase Auth para tu proyecto.FIREBASE_AUTH_DOMAIN=
FIREBASE_PROJECT_IDstringEl ID de tu proyecto de Firebase.FIREBASE_PROJECT_ID=
FIREBASE_STORAGE_BUCKETstringEl bucket de Firebase Storage para tu proyecto.FIREBASE_STORAGE_BUCKET=
FIREBASE_MESSAGING_SENDER_IDstringEl ID del remitente de Firebase Cloud Messaging.FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_IDstringEl 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.

KeyTypeDescriptionExample
AWS_ACCESS_KEY_IDstringTu ID de clave de acceso de usuario IAM. Opcional si se utiliza IRSA.AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEYstringTu clave de acceso secreta de usuario IAM. Opcional si utilizas IRSA.AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_REGIONstringLa región de AWS donde se encuentra su bucket de S3.AWS_REGION=us-east-1
AWS_BUCKET_NAMEstringEl nombre del bucket de S3 para el almacenamiento de archivos.AWS_BUCKET_NAME=your_bucket_name
AWS_ENDPOINT_URLstringURL 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_STYLEbooleanEstablecer 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_IDstringID 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_KEYstringClave 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_REGION y AWS_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.

KeyTypeDescriptionExample
AZURE_STORAGE_CONNECTION_STRINGstringCadena 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_NAMEstringNombre 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_ACCESSbooleanHabilitar el acceso público para blobs. Predeterminado: false.AZURE_STORAGE_PUBLIC_ACCESS=false
AZURE_CONTAINER_NAMEstringNombre del contenedor para el almacenamiento de archivos. Predeterminado: files.AZURE_CONTAINER_NAME=files

Nota: Utilice AZURE_STORAGE_CONNECTION_STRING (Opción A) o AZURE_STORAGE_ACCOUNT_NAME con Managed Identity (Opción B), no ambos.

UI

Botón de Ayuda y FAQ

KeyTypeDescriptionExample
HELP_AND_FAQ_URLstringURL 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_AGE para cambiar el max-age de los archivos estáticos. Por defecto, esto está configurado en 4 semanas.
  • Descomente STATIC_CACHE_S_MAX_AGE para cambiar el s-maxage de 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.
KeyTypeDescriptionExample
APP_TITLEstringTítulo de la aplicación.APP_TITLE=LibreChat
CUSTOM_FOOTERstringPie de página personalizado.# CUSTOM_FOOTER="My custom footer"
TEMP_CHAT_RETENTION_HOURSnumber**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_FOOTER para añadir un pie de página personalizado.
  • Quite la marca de comentario y deje CUSTOM_FOOTER vací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

KeyTypeDescriptionExample
SHOW_BIRTHDAY_ICONbooleanMostrar 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_ICON en false para desactivar el gorro de cumpleaños.
  • Establezca SHOW_BIRTHDAY_ICON en true para 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

KeyTypeDescriptionExample
ANALYTICS_GTM_IDstringID 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.

KeyTypeDescriptionExample
CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTESnumberTamañ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.

KeyTypeDescriptionExample
FILE_PREVIEW_MAX_EXTRACT_BYTESnumberTamañ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

KeyTypeDescriptionExample
MCP_OAUTH_ON_AUTH_ERRORbooleanTratar las respuestas 401/403 como requisito de OAuth cuando no se encuentre metadatos de OAuth.MCP_OAUTH_ON_AUTH_ERROR=true
MCP_OAUTH_DETECTION_TIMEOUTnumberTiempo de espera para las solicitudes de detección de OAuth en milisegundos.MCP_OAUTH_DETECTION_TIMEOUT=5000
MCP_OAUTH_HANDLING_TIMEOUTnumberCuá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_TTLnumberCuá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_TTLnumberComprobar 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_PAGESnumberNú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_CHECKbooleanOmitir 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-configurationMCP_SKIP_CODE_CHALLENGE_CHECK=false
MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTESnumberMá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_BYTESnumberMá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

KeyTypeDescriptionExample
USE_REDISbooleanHabilite Redis para el almacenamiento en caché y de sesiones. Cuando es true, se debe proporcionar REDIS_URI.USE_REDIS=true
USE_REDIS_STREAMSbooleanHabilita 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_URIstringURI 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_CLUSTERbooleanHabilitar el modo clúster de Redis al usar una URI única# USE_REDIS_CLUSTER="true"
REDIS_CLUSTER_SAFE_DELETEbooleanElimine 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_USERNAMEstringNombre 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_PASSWORDstringContraseñ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_CAstringRuta al certificado CA para la verificación TLS al usar el protocolo rediss://.# REDIS_CA=/path/to/ca-cert.pem
REDIS_KEY_PREFIXstringPrefijo estático para todas las claves de Redis para evitar la contaminación entre despliegues.# REDIS_KEY_PREFIX=librechat-prod-v2
REDIS_KEY_PREFIX_VARstringNombre 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_LISTENERSnumberMáximo de event listeners por cliente de Redis. Previene fugas de memoria. Predeterminado: 40.# REDIS_MAX_LISTENERS=40
REDIS_PING_INTERVALnumberIntervalo 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_NAMESPACESstringClaves 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_LOOKUPbooleanHabilitar 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 proporcionar REDIS_URI o 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=false y establezca REDIS_CLUSTER_SAFE_DELETE=true si los borrados de caché fallan con errores CROSSSLOT.
  • Utilice el protocolo rediss:// para conexiones TLS y configure REDIS_CA si su CA no es de confianza pública.
  • REDIS_KEY_PREFIX_VAR y REDIS_KEY_PREFIX son mutuamente excluyentes.
  • AWS Elasticache con TLS: Es posible que Elasticache necesite usar un dnsLookup alternativo para conexiones TLS. Establezca REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true si 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.

KeyTypeDescriptionExample
LEADER_LEASE_DURATIONnumberDuració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_INTERVALnumberIntervalo en segundos en el que el líder renueva su concesión. Predeterminado: 10.LEADER_RENEW_INTERVAL=10
LEADER_RENEW_ATTEMPTSnumberNúmero máximo de intentos de reintento cuando falla la renovación del contrato. Predeterminado: 3.LEADER_RENEW_ATTEMPTS=3
LEADER_RENEW_RETRY_DELAYnumberRetraso 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?

En esta página

Configuración del servidorPuertoTrust proxyConfiguración de credencialesManejo de archivos estáticosControl de caché de Index HTMLBase de datos MongoDBConfiguración del pool de conexiones de MongoDBConfiguración del esquema de MongoDBDominios de aplicaciónEvitar que los motores de búsqueda públicos indexen el sitioRegistroArchivos de registroVariables de entornoPermisosRastreo de OpenTelemetryReal User Monitoring (Navegador)Ruta de configuración - librechat.yamlHabilidades de despliegueValidación de configuraciónManejo de excepciones no capturadasEndpointsConfiguración GeneralEndpoints conocidos - librechat.yamlBúsqueda webAnthropicAnthropic a través de Vertex AIAWS BedrockBingAIGoogleGeneración de imágenes con GeminiOpenAIAssistantsTavilyTraversaalWolframAlphaZapierOpenWeatherCode InterpreterArtifactsBúsqueda (Meilisearch)RAG APISpeech to Text y Text to SpeechEnlaces compartidosSistema de usuarioModeraciónConfiguración básica de moderaciónConfiguración de bloqueoLimitación de tasa de inicio de sesión y registroPuntuación para cada infracciónLimitación de tasa de mensajes (por usuario e IP)LimitadoresLimitador de IP:Limitador de usuarios:Límite de tasa de importación de conversacionesLimitador de IP:Limitador de usuarios:Limitación de tasa de bifurcación de conversacionesLimitador de IP:Limitador de usuarios:Limitación de tasa de carga de archivosLimitador de IP:Limitador de usuarios:Límite de tasa de TTS (Text-to-Speech)Limitador de IP:Limitador de usuarios:Limitación de tasa de STT (Speech-to-Text)Limitador de IP:Limitador de usuarios:BalanceGestión de saldosRegistro e inicio de sesiónInicios de sesión socialesAutenticación de AppleAutenticación de DiscordAutenticación de FacebookAutenticación de GitHubAutenticación de GoogleOpenID ConnectReutilización de tokens de OpenID ConnectIntegración con Microsoft Graph API / Entra IDIntegración con SharePointSAMLAutenticación LDAP/ADRestablecimiento de contraseñaConfiguración de Mailgun (Recomendado)Configuración SMTPFirebase CDNAmazon S3 y CloudFrontAzure Blob Storage CDNUIBotón de Ayuda y FAQTítulo de la aplicación y pie de páginaSombrero de cumpleañosAnalíticaGoogle Tag ManagerImportación de conversacionesVistas previas de archivos en líneaMCP (Model Context Protocol)Configuración del servidor MCPOtrosRedisElección de líder