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

环境变量

配置应用程序环境的综合指南,使用 `.env` 文件。本文档是您了解和自定义环境变量的一站式资源,这些变量将决定您的应用程序在不同环境下的行为。

欢迎阅读使用 .env 文件配置应用程序环境的综合指南。本文档是您了解和自定义环境变量的一站式资源,这些变量将决定您的应用程序在不同环境下的行为方式。

虽然默认设置已为标准的 docker 安装提供了坚实的基础,但深入阅读本指南将揭示 LibreChat 的全部潜力。本指南旨在帮助您根据具体需求定制 LibreChat。了解如何调整语言模型的可用性、集成社交登录、管理自动审核系统等等。这一切都是为了让您能够掌控并微调 LibreChat,以获得最佳的用户体验。

提醒:请重启 LibreChat 以使配置更改生效

或者,您可以在 LibreChat 的主 docker-compose.yml 文件所在的目录下创建一个名为 docker-compose.override.yml 的新文件,在其中根据需要于 environment 下设置您的 .env 变量,或者修改主 docker-compose.yml 提供的默认配置,而无需直接编辑或复制整个文件。

更多信息请参阅:


服务器配置

端口

  • 服务器监听特定端口。
  • PORT 环境变量用于设置服务器监听的端口。默认情况下,它被设置为 3080
KeyTypeDescriptionExample
HOSTstring指定主机。HOST=localhost
PORTnumber指定端口。PORT=3080

Trust proxy

使用距离 Express 应用程序最多 n 跳的地址。 req.socket.remoteAddress 是第一跳,其余地址从右到左在 X-Forwarded-For 标头中查找。 值为 0 表示第一个不受信任的地址将是 req.socket.remoteAddress,即没有反向代理。 TRUST_PROXY 环境变量的默认值设置为 1

有关此内容的更多信息,请参阅 Express.js - trust proxy

KeyTypeDescriptionExample
TRUST_PROXYnumber指定跳数。TRUST_PROXY=1

凭据配置

为了安全地存储凭据,您需要一个固定的密钥和 IV。您可以在此处为生产环境和开发环境设置它们。

KeyTypeDescriptionExample
CREDS_KEYstring用于安全存储凭据的 32 字节密钥(十六进制为 64 个字符)。应用启动时必需。CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
CREDS_IVstring用于安全存储凭据的 16 字节 IV(32 个十六进制字符)。应用启动所必需。CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb

警告

警告: 如果您不设置 CREDS_KEYCREDS_IV,应用程序将在启动时崩溃。- 您可以使用此 密钥生成器 快速生成它们。

静态文件处理

KeyTypeDescriptionExample
STATIC_CACHE_MAX_AGEstringCache-Control max-age(以秒为单位)STATIC_CACHE_MAX_AGE=172800
STATIC_CACHE_S_MAX_AGEstring用于共享缓存(CDN 和代理)的 Cache-Control s-maxage(以秒为单位)STATIC_CACHE_S_MAX_AGE="86400"
DISABLE_COMPRESSIONboolean禁用静态文件的压缩。DISABLE_COMPRESSION=false
ENABLE_IMAGE_OUTPUT_GZIP_SCANboolean如果同一文件夹中存在已上传图片的 gzip 版本,则启用对其的服务。ENABLE_IMAGE_OUTPUT_GZIP_SCAN=true
ENABLE_STATIC_ASSET_BROTLIboolean在可用时启用静态应用资源的预压缩 Brotli 版本服务。ENABLE_STATIC_ASSET_BROTLI=true

行为:

为静态文件设置 Cache-Control 响应头。这些配置仅在 NODE_ENV 设置为 production 时生效。

  • 取消注释 STATIC_CACHE_MAX_AGE 以更改静态文件的本地 max-age。默认设置为 2 天(172800 秒)。
  • 取消注释 STATIC_CACHE_S_MAX_AGE 以设置共享缓存(CDN 和代理)的 s-maxage。默认设置为 1 天(86400 秒)。
  • 取消注释 DISABLE_COMPRESSION 以禁用静态文件的压缩。默认情况下,压缩是启用的。
  • 取消注释 ENABLE_IMAGE_OUTPUT_GZIP_SCAN 以启用对已压缩图像的扫描和提供服务功能,前提是这些图像已在同一文件夹中预先压缩,且具有相同的文件名及 .gz 扩展名。默认情况下,上传图像的 gzip 扫描功能处于禁用状态。
  • 取消注释 ENABLE_STATIC_ASSET_BROTLI 以在存在预压缩的 .br 版本时,提供静态应用资源的预压缩版本。启用后,对于 API 提供的静态文件,Brotli 的优先级高于 gzip。

警告

  • 这仅影响由 API 服务器提供的静态文件,不适用于 FirebaseNGINX 或任何其他配置。

Index HTML 缓存控制

KeyTypeDescriptionExample
INDEX_CACHE_CONTROLstringindex.html 的 Cache-Control 标头INDEX_CACHE_CONTROL=no-cache, no-store, must-revalidate
INDEX_PRAGMAstringindex.html 的 Pragma 标头INDEX_PRAGMA=no-cache
INDEX_EXPIRESstringindex.html 的 Expires 标头INDEX_EXPIRES=0

行为:

专门为 index.html 响应控制缓存头。默认情况下,这些设置会禁止缓存,以确保用户始终获取应用程序的最新版本。

注意

与为了性能而缓存的静态资源不同,index.html 文件的缓存头是单独配置的,以确保用户始终能获取到最新的应用程序外壳。

MongoDB 数据库

KeyTypeDescriptionExample
MONGO_URIstring指定 MongoDB URI。MONGO_URI=mongodb://127.0.0.1:27017/LibreChat

如果您的 MongoDB URI 不同,请将其更改为此处。您应该在 URI 中将 LibreChat 或您自己的 APP_TITLE 添加为数据库名称。

如果您正在使用在线数据库,URI 格式为 mongodb+srv://<username>:<password>@<host>/<database>?<options>。您的 MONGO_URI 应该如下所示:

  • mongodb+srv://username:[email protected]/LibreChat?retryWrites=true(使用在线数据库时,retryWrites 是您唯一需要配置的选项。)

MongoDB 连接池配置

KeyTypeDescriptionExample
MONGO_MAX_POOL_SIZEnumber连接池中的最大连接数。# MONGO_MAX_POOL_SIZE=
MONGO_MIN_POOL_SIZEnumber连接池中的最小连接数。# MONGO_MIN_POOL_SIZE=
MONGO_MAX_CONNECTINGnumber连接池中允许同时建立连接的最大数量。# MONGO_MAX_CONNECTING=
MONGO_MAX_IDLE_TIME_MSnumber连接在池中保持空闲状态直至被移除并关闭的最长毫秒数。# MONGO_MAX_IDLE_TIME_MS=
MONGO_WAIT_QUEUE_TIMEOUT_MSnumber线程等待连接可用的最长时间(以毫秒为单位)。# MONGO_WAIT_QUEUE_TIMEOUT_MS=

MongoDB Schema 配置

KeyTypeDescriptionExample
MONGO_AUTO_INDEXboolean设置为 false 可禁用与此连接关联的所有模型的自动索引创建。如果省略,则使用 Mongoose 的默认行为。# MONGO_AUTO_INDEX=
MONGO_AUTO_CREATEboolean设置为 false 可禁用 Mongoose 在此连接上为每个创建的模型自动调用 createCollection() 的行为。省略时,将使用 Mongoose 的默认行为。# MONGO_AUTO_CREATE=

或者,您可以使用模拟 mongoDbdocumentDb,但它:

  • 不支持 retryWrites - 请使用 retryWrites=false
  • 需要 TLS 连接,因此请使用参数 tls=true 来启用 TLS,并使用 tlsCAFile=/path-to-ca/bundle.pem 来指向 AWS 提供的 CA 证书包文件。

documentDb 的 URI 看起来如下:

  • mongodb+srv://username:password@domain/dbname?retryWrites=false&tls=true&tlsCAFile=/path-to-ca/bundle.pem

另请参阅:

应用领域

若要配置 LibreChat 以供本地使用或自定义域名部署,请设置以下环境变量:

KeyTypeDescriptionExample
DOMAIN_CLIENTstring指定客户端域名。DOMAIN_CLIENT=http://localhost:3080
DOMAIN_SERVERstring指定服务器端域名。DOMAIN_SERVER=http://localhost:3080
ADMIN_PANEL_URLstring当管理面板单独托管时,用于管理 OAuth/SSO 重定向的外部管理面板基础 URL。请勿在末尾包含斜杠。ADMIN_PANEL_URL=https://admin.example.com/admin
ADMIN_PANEL_SESSION_SECRETstring用于捆绑管理面板的必需会话加密密钥(至少 32 个字符)。docker-compose 和 deploy-compose 管理面板服务将其读取为 SESSION_SECRET。在启动堆栈之前,请使用 `openssl rand -hex 32` 生成该密钥。ADMIN_PANEL_SESSION_SECRET=<your-32-char-random-string>
ADMIN_PANEL_PORTnumber默认 docker-compose 中捆绑的管理面板的主机端口。在 deploy-compose 中,面板通过 nginx 在 http://admin.localhost 提供服务。ADMIN_PANEL_PORT=3000

当将 LibreChat 部署到自定义域名时,请将 http://localhost:3080 替换为您部署后的 URL。

  • 例如 https://librechat.example.com

防止公共搜索引擎索引

默认情况下,您的网站不会被公共搜索引擎(如 Google、Bing 等)索引。这意味着人们将无法通过这些搜索引擎找到您的网站。如果您希望提高网站的可见度和可搜索性,可以将以下设置更改为 false

KeyTypeDescriptionExample
NO_INDEXboolean防止公共搜索引擎索引您的网站。NO_INDEX=true

注意: 此方法不能保证对所有搜索引擎都有效,且某些搜索引擎仍可能出于其他目的(例如缓存或归档)索引您的网站或网页。因此,您不应仅依赖此方法来保护网站或网页上的敏感或机密信息。

日志记录

LibreChat 具有内置的中央日志记录功能,更多信息请参阅 Logging System

日志文件

  • 调试日志默认处于启用状态,这对开发至关重要。
  • 若要报告问题,请复现错误并提交 ./api/logs/debug-%DATE%.log 中的日志至:LibreChat GitHub Issues
  • 错误日志存储在相同的位置。

环境变量

KeyTypeDescriptionExample
DEBUG_LOGGINGboolean保持调试日志处于活动状态。DEBUG_LOGGING=true
DEBUG_CONSOLEboolean启用与文件调试日志格式相同的详细控制台/stdout日志。DEBUG_CONSOLE=false
LOG_TO_FILEboolean设置为 false 可禁用基于文件的 Winston 传输,同时保留控制台日志记录功能。LOG_TO_FILE=true
CONSOLE_JSONboolean启用适用于 GCP/AWS 等云部署环境的详细 JSON 控制台/stdout 日志。CONSOLE_JSON=false
CONSOLE_JSON_STRING_LENGTHnumber配置 JSON 控制台/stdout 日志中字符串值的截断长度。默认值:255。# CONSOLE_JSON_STRING_LENGTH=255
LIBRECHAT_LOG_DIRstring日志文件的自定义目录。默认为 /app/logs (Docker) 或 api/logs (本地开发)。# LIBRECHAT_LOG_DIR=/custom/log/path
MEM_DIAGboolean启用内存诊断 — 每 60 秒记录一次堆/RSS 快照。在使用 --inspect 运行时自动启用。# MEM_DIAG=true
AGENT_DEBUG_LOGGINGboolean在 agent controller 中启用详细调试日志(令牌计数、上下文修剪诊断)。# AGENT_DEBUG_LOGGING=true

注意:

  • DEBUG_LOGGING 可以与 DEBUG_CONSOLECONSOLE_JSON 中的任意一个配合使用,但不能同时使用两者。
  • DEBUG_CONSOLECONSOLE_JSON 是互斥的。
  • CONSOLE_JSON:在云部署(如 GCP 或 AWS)中处理控制台日志时,启用此项将以 JSON 格式输出带有 UTC 时间戳的日志。

注意:不建议使用 DEBUG_CONSOLE,因为其输出可能非常冗长,因此默认情况下它是禁用的。

权限

UID 和 GID 是 Linux 系统分配给每个用户和组的数字。如果您遇到权限问题,请在此处设置运行 Docker Compose 命令的用户的 UID 和 GID。容器中的应用程序将以这些 UID/GID 运行。

KeyTypeDescriptionExample
UIDnumber用户 ID。# UID=1000
GIDnumber组 ID。# GID=1000

OpenTelemetry Tracing

LibreChat 可以为通用 API、HTTP、MongoDB、Mongoose、Redis 和出站请求的可视性发出后端 OpenTelemetry 追踪。Redis 命令级跨度(spans)为可选功能,因此默认追踪保持在高层级。使用 Langfuse 进行 GenAI 特定的提示词/模型可观测性。

KeyTypeDescriptionExample
OTEL_TRACING_ENABLEDboolean启用后端 OpenTelemetry 追踪。当 OTEL_SDK_DISABLED=true 时,追踪功能将保持禁用状态。# OTEL_TRACING_ENABLED=false
OTEL_SERVICE_NAMEstring向 OpenTelemetry 报告的服务名称。默认值:librechat。# OTEL_SERVICE_NAME=librechat
OTEL_SERVICE_VERSIONstring上报给 OpenTelemetry 的服务版本。未设置时默认为包版本。# OTEL_SERVICE_VERSION=
OTEL_EXPORTER_OTLP_ENDPOINTstring基础 OTLP exporter endpoint。# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTstring特定于 Trace 的 OTLP endpoint。设置后将覆盖用于 Trace 的基础 endpoint。# OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=
OTEL_EXPORTER_OTLP_HEADERSstring以逗号分隔的 OTLP 导出器标头,例如授权元数据。# OTEL_EXPORTER_OTLP_HEADERS=
OTEL_TRACES_EXPORTERstringTrace exporter 选择。# OTEL_TRACES_EXPORTER=otlp
OTEL_TRACES_SAMPLERstringOpenTelemetry 追踪采样器。默认示例:parentbased_always_on。# OTEL_TRACES_SAMPLER=parentbased_always_on
OTEL_LOG_LEVELstringOpenTelemetry SDK 日志级别。# OTEL_LOG_LEVEL=INFO
OTEL_SDK_DISABLEDboolean即使启用了追踪,也禁用 OpenTelemetry SDK。# OTEL_SDK_DISABLED=false
OTEL_IOREDIS_TRACING_ENABLEDboolean启用 Redis 命令级追踪(spans)。默认情况下处于禁用状态,以保持后端追踪的高层级概览。# OTEL_IOREDIS_TRACING_ENABLED=false

真实用户监控 (浏览器)

LibreChat 可以将浏览器真实用户监控 (RUM) 遥测数据发布到兼容 HyperDX 的 OTLP 收集器。RUM 默认处于禁用状态。

KeyTypeDescriptionExample
RUM_ENABLEDboolean启用浏览器真实用户监控 (Real User Monitoring)。默认值:false。# RUM_ENABLED=false
RUM_PROVIDERstring浏览器 RUM 提供商。目前支持 `hyperdx`。# RUM_PROVIDER=hyperdx
RUM_URLstring用于 public-token 模式的公共收集器 URL。# RUM_URL=http://localhost:4318
RUM_SERVICE_NAMEstring浏览器 SDK 报告的服务名称。默认值:librechat-web。# RUM_SERVICE_NAME=librechat-web
RUM_ENVIRONMENTstring通过浏览器遥测报告的环境标签。# RUM_ENVIRONMENT=development
RUM_AUTH_MODEstring浏览器遥测的身份验证模式。使用 `publicToken` 或 `proxy`。# RUM_AUTH_MODE=publicToken
RUM_PUBLIC_TOKENstring用于 public-token 模式的公共浏览器令牌。请将其视为公开信息,并在收集器端限制摄入。# RUM_PUBLIC_TOKEN=
RUM_PROXY_TARGET_URLstring在认证代理模式下使用的 Collector 基础 URL。当 `RUM_AUTH_MODE=proxy` 时为必填项。# RUM_PROXY_TARGET_URL=http://otel-collector:4318
RUM_PROXY_TIMEOUT_MSnumber代理请求超时时间(以毫秒为单位)。默认值:10000。# RUM_PROXY_TIMEOUT_MS=10000
RUM_TRACE_PROPAGATION_TARGETSstring以逗号分隔的应接收 traceparent 标头的第一方 HTTPS 源或 URL。# RUM_TRACE_PROPAGATION_TARGETS=https://api.example.com
RUM_DISABLE_REPLAYboolean禁用浏览器会话重放。默认值:true。# RUM_DISABLE_REPLAY=true
RUM_CONSOLE_CAPTUREboolean捕获浏览器控制台日志。可能会收集敏感的提示词、响应或有效负载。# RUM_CONSOLE_CAPTURE=false
RUM_ADVANCED_NETWORK_CAPTUREboolean捕获详细的网络负载。可能会收集敏感的提示词、响应或负载。# RUM_ADVANCED_NETWORK_CAPTURE=false
RUM_SAMPLE_RATEnumber浏览器遥测采样率,范围从 0 到 1。默认值:1。# RUM_SAMPLE_RATE=1

publicToken 模式下,浏览器将遥测数据直接发送到带有 RUM_PUBLIC_TOKENRUM_URL。在 proxy 模式下,浏览器通过 LibreChat 发送遥测数据;后端会验证用户会话,剥离应用身份验证标头,并将遥测数据转发到 RUM_PROXY_TARGET_URL。无效或过期的会话将以 204 响应被丢弃,因此浏览器遥测失败不会显现出正常的 API 身份验证错误。代理结果会在 LibreChat API /metrics 端点上通过带有 endpointresult 标签的 rum_proxy_requests_total 进行统计。

配置路径 - librechat.yaml

为 LibreChat 配置文件指定一个替代位置。

您可以指定绝对路径相对路径URL。路径中的文件名非常灵活,不必非得是 librechat.yaml;任何有效的配置文件均可使用。

注意:如果您希望 LibreChat 在根目录中搜索配置文件(这是默认行为),只需将此选项保持注释状态即可。

KeyTypeDescriptionExample
CONFIG_PATHstringLibreChat 配置文件的一个替代位置。# CONFIG_PATH=https://raw.githubusercontent.com/danny-avila/LibreChat/main/librechat.example.yaml

部署技巧

Deployment Skills 在启动时以只读方式从文件系统加载,并向启用了 Skills 功能的用户公开。

KeyTypeDescriptionExample
DEPLOYMENT_SKILLS_DIRstring包含部署所提供 Skills 的目录。默认为项目根目录下的 `./skill`。# DEPLOYMENT_SKILLS_DIR=./skill

更改此目录或其中的任何文件后,请重启 LibreChat。部署提供的 Skills 优先级高于同名的持久化 Skills。

配置验证

默认情况下,如果 librechat.yaml 配置文件包含验证错误,LibreChat 将会报错退出(退出代码 1)。这种快速失败(fail-fast)行为有助于在部署流水线中尽早发现配置问题,并防止在非预期的默认设置下运行。

KeyTypeDescriptionExample
CONFIG_BYPASS_VALIDATIONboolean当设置为 `true` 时,即使 `librechat.yaml` 存在验证错误,服务器也会记录警告并继续使用默认配置启动。这保留了旧有的行为。# CONFIG_BYPASS_VALIDATION=true

警告

不建议在生产环境中使用 CONFIG_BYPASS_VALIDATION=true。它仅旨在作为调试配置问题时的临时变通方案。请务必修复配置文件中的验证错误。

未捕获异常处理

默认情况下,LibreChat 会在发生未捕获异常时退出进程,这是 Node.js 的标准行为。你可以覆盖此设置,以便在出现未捕获异常后保持应用运行。

KeyTypeDescriptionExample
CONTINUE_ON_UNCAUGHT_EXCEPTIONboolean当设置为 `true` 时,应用在遇到未捕获的异常后将继续运行,而不是退出进程。# CONTINUE_ON_UNCAUGHT_EXCEPTION=false

警告

除非必要,否则不建议在生产环境中使用。未捕获的异常可能会使应用程序处于不可预测的状态。

Endpoints

在本节中,您可以配置 endpoint 和模型选择、它们的 API 密钥,以及支持该功能的 endpoint 的代理和反向代理设置。

通用配置

取消注释 ENDPOINTS 以自定义 LibreChat 中可用的 endpoint。

KeyTypeDescriptionExample
ENDPOINTSstring以逗号分隔的可用 endpoint 列表。# ENDPOINTS=openAI,agents,assistants,gptPlugins,azureOpenAI,google,anthropic,bingAI,custom
PROXYstring用于受支持的服务器端客户端的出站代理。适用于 HTTP 和 HTTPS 目标。PROXY=
HTTP_PROXYstring当 PROXY 未设置时,受支持的服务器端客户端所使用的 HTTP 代理回退。# HTTP_PROXY=
HTTPS_PROXYstring当 PROXY 未设置时,受支持的服务器端客户端所使用的 HTTPS 代理回退。# HTTPS_PROXY=
NO_PROXYstring以逗号分隔的主机、域名或 IP 范围,支持的服务器端客户端应绕过这些地址。同时也支持小写的 no_proxy 变体。# NO_PROXY=
TITLE_CONVOboolean为所有 endpoint 启用标题生成。TITLE_CONVO=true

已知 endpoint - librechat.yaml

KeyTypeDescriptionExample
ANYSCALE_API_KEYstringAnyscale 的 API key。# ANYSCALE_API_KEY=
APIPIE_API_KEYstringApipie 的 API key# APIPIE_API_KEY=
COHERE_API_KEYstringCohere 的 API key。# COHERE_API_KEY=
FIREWORKS_API_KEYstringFireworks 的 API key。# FIREWORKS_API_KEY=
GROQ_API_KEYstringGroq 的 API key。# GROQ_API_KEY=
MISTRAL_API_KEYstringMistral 的 API key。# MISTRAL_API_KEY=
OPENROUTER_KEYstringOpenRouter 的 API key。# OPENROUTER_KEY=
PERPLEXITY_API_KEYstringPerplexity 的 API key。# PERPLEXITY_API_KEY=
SHUTTLEAI_API_KEYstringShuttleAI 的 API key。# SHUTTLEAI_API_KEY=
TOGETHERAI_API_KEYstringTogetherAI 的 API key。# TOGETHERAI_API_KEY=
DEEPSEEK_API_KEYstringDeepseek API 的 API key# DEEPSEEK_API_KEY=

网页搜索功能可在 LibreChat 中启用互联网搜索能力。

重要提示:下方所示的确切环境变量名称均为默认参考,您可以通过 librechat.yaml 配置文件进行自定义,以使用您偏好的任何变量名称。

有关详细的配置和自定义选项,请参阅:Web Search Configuration

KeyTypeDescriptionExample
SERPER_API_KEYstringSerper 搜索提供商的 API key。请从 https://serper.dev/api-keys 获取您的 key。# SERPER_API_KEY=
TAVILY_API_KEYstring用于 Tavily 搜索和抓取提供商的 API key。请从 https://app.tavily.com/home 获取您的 key。# TAVILY_API_KEY=
TAVILY_SEARCH_URLstring自定义 Tavily Search API URL(可选)。仅在需要自定义或代理 Tavily 兼容的搜索 endpoint 时使用。# TAVILY_SEARCH_URL=
TAVILY_EXTRACT_URLstring自定义 Tavily Extract API URL(可选)。仅在需要自定义或代理兼容 Tavily 的 extract 端点时使用。# TAVILY_EXTRACT_URL=
FIRECRAWL_API_KEYstringFirecrawl 爬虫服务的 API key。请从 https://docs.firecrawl.dev/introduction#api-key 获取您的 key。# FIRECRAWL_API_KEY=
FIRECRAWL_API_URLstring自定义 Firecrawl API URL(可选)。仅在使用自定义 Firecrawl 实例时需要。# FIRECRAWL_API_URL=
FIRECRAWL_VERSIONstringFirecrawl API 版本 (v0 或 v1)。# FIRECRAWL_VERSION=v1
JINA_API_KEYstringJina 重排序服务的 API key。请从 https://jina.ai/api-dashboard/ 获取您的 key。# JINA_API_KEY=
JINA_API_URLstring自定义 Jina API URL(可选)。仅在使用自定义 Jina 实例时需要。# JINA_API_URL=
COHERE_API_KEYstringCohere 重排序服务的 API key。请从 https://dashboard.cohere.com/welcome/login 获取您的 key。# COHERE_API_KEY=

注意:这些变量名称可以在您的 librechat.yaml 配置文件中进行自定义。例如,您可以通过在网页搜索设置中进行配置,使用 CUSTOM_SERPER_KEY 来代替 SERPER_API_KEY。有关自定义变量名称的详细信息,请参阅 Web Search Configuration 文档。

Anthropic

请参阅:Anthropic Endpoint

  • 您可以从 https://platform.claude.com/ 申请访问密钥。
  • ANTHROPIC_API_KEY= 留空以禁用此 endpoint
  • ANTHROPIC_API_KEY= 设置为 "user_provided",以允许用户从 WebUI 提供他们自己的 API 密钥。
  • 如果您有 Anthropic 的反向代理访问权限,可以通过 ANTHROPIC_REVERSE_PROXY= 进行设置。
    • 留空或注释掉以使用默认 base url
KeyTypeDescriptionExample
ANTHROPIC_API_KEYstringAnthropic API key 或设置为 "user_provided" 以允许用户提供他们自己的 API key。Defaults to an empty string.
ANTHROPIC_MODELSstring要使用的 Anthropic 模型列表,以逗号分隔。# 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_PROXYstringAnthropic 的反向代理。# ANTHROPIC_REVERSE_PROXY=
ANTHROPIC_TITLE_MODELstring已弃用:用于 Anthropic 标题生成的模型。# ANTHROPIC_TITLE_MODEL=claude-3-haiku-20240307
  • ANTHROPIC_TITLE_MODEL 现已弃用,并将在未来版本中移除。请改用 librechat.yaml 配置文件中的 titleModel 端点设置

注意: 必须与 Anthropic endpoint 兼容。此外,Claude 2 和 Claude 3 模型在此任务中表现最佳,其中 claude-3-haiku 模型最为经济实惠。

Claude Fable 5 已包含在默认的 Anthropic 模型列表中。Fable/Mythos 类模型在 LibreChat 中使用现代 Anthropic 行为:支持 1M 上下文、自适应思维(adaptive thinking)支持、提示词缓存(prompt caching)支持,以及针对摘要或省略推理输出的 thinkingDisplay 处理。

通过 Vertex AI 使用 Anthropic

您也可以通过 Google Cloud Vertex AI 使用 Anthropic Claude 模型。有关详细的 YAML 配置选项,请参阅:Anthropic Vertex AI Configuration

KeyTypeDescriptionExample
ANTHROPIC_USE_VERTEXboolean设置为 true 以通过 Google Vertex AI 而非直接 API 使用 Anthropic 模型。ANTHROPIC_USE_VERTEX=true
ANTHROPIC_VERTEX_REGIONstringVertex AI 的 Google Cloud 区域。默认值:us-east5。ANTHROPIC_VERTEX_REGION=us-east5

注意: 使用 Vertex AI 时,您还必须配置 GOOGLE_SERVICE_KEY_FILE(请参阅 Google 配置),并使用具有 Vertex AI User 角色的服务账号。

AWS Bedrock

请参阅:AWS Bedrock Setup

KeyTypeDescriptionExample
BEDROCK_AWS_DEFAULT_REGIONstring必须为 Bedrock 提供一个默认的 AWS 区域。BEDROCK_AWS_DEFAULT_REGION=us-east-1
BEDROCK_AWS_ACCESS_KEY_IDstring用于 Bedrock 的 AWS 访问密钥 ID。如果使用默认 AWS 凭证链,则为可选。# BEDROCK_AWS_ACCESS_KEY_ID=your_access_key_id
BEDROCK_AWS_SECRET_ACCESS_KEYstring用于 Bedrock 的 AWS secret access key。如果使用默认的 AWS 凭证链,则为可选。# BEDROCK_AWS_SECRET_ACCESS_KEY=your_secret_access_key
BEDROCK_AWS_SESSION_TOKENstring用于临时凭证的 AWS 会话令牌。可选。# BEDROCK_AWS_SESSION_TOKEN=your_session_token
BEDROCK_AWS_PROFILEstring用于 Bedrock 的 AWS 共享配置概况名称。如果使用默认 AWS 凭证链,则为可选。# BEDROCK_AWS_PROFILE=your-profile-name
BEDROCK_AWS_BEARER_TOKENstring用于 Bearer 认证的 Amazon Bedrock API 密钥,或设置为 user_provided 以允许用户在 UI 中输入他们自己的 Bedrock API 密钥。# BEDROCK_AWS_BEARER_TOKEN=your_bedrock_api_key
BEDROCK_AWS_MODELSstring以逗号分隔的 Bedrock 模型 ID 列表。如果省略,则包含所有已知的受支持模型。# 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

注意: 您可以省略访问密钥以使用默认的 AWS 凭证链(环境变量、SSO 凭证、共享凭证文件或 EC2/ECS 实例元数据服务)。有关更多详细信息,请参阅 AWS Bedrock Setup

Bedrock 上的 Claude Fable/Mythos 类模型仅支持推理配置文件(inference-profile)。请使用诸如 us.anthropic.claude-fable-5 的配置文件 ID,并在调用它们之前在 Bedrock 控制台或数据保留 API(Data Retention API)中启用所需的 Anthropic 数据共享设置。

BingAI

Bing,也用于 Sydney、越狱以及 Bing Image Creator

KeyTypeDescriptionExample
BINGAI_TOKENstringBing 访问令牌。留空则禁用。可设置为 "user_provided",允许用户从 WebUI 提供自己的令牌。BINGAI_TOKEN=user_provided
BINGAI_HOSTstringBing 主机 URL。保持注释状态以使用默认服务器。# BINGAI_HOST=https://cn.bing.com

注意:建议将其保留为 "user_provided" 并从 WebUI 提供令牌。

Google

请按照这些说明来设置 Google Endpoint

KeyTypeDescriptionExample
GOOGLE_KEYstringGoogle API key。设置为 "user_provided" 以允许用户从 WebUI 提供他们自己的 API key。GOOGLE_KEY=user_provided
GOOGLE_SERVICE_KEY_FILEstringGoogle 服务账号 JSON 密钥文件的路径、获取该文件的 URL,或字符串化的 JSON。用于 Vertex AI 身份验证(例如 OCR 功能)。GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json
GOOGLE_REVERSE_PROXYstringGoogle 反向代理 URL。GOOGLE_REVERSE_PROXY=
GOOGLE_AUTH_HEADERboolean使用 Authorization 请求头代替 X-goog-api-key。某些反向代理需要此设置。# GOOGLE_AUTH_HEADER=true
GOOGLE_MODELSstring可用的 Gemini API Google 模型,以逗号分隔。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_MODELSstring可用的 Vertex AI Google 模型,以逗号分隔。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_MODELstring已弃用:用于 Google 标题生成的模型。GOOGLE_TITLE_MODEL=gemini-pro
GOOGLE_LOCstring指定用于处理 API 请求的 Google Cloud 位置GOOGLE_LOC=us-central1
GOOGLE_CLOUD_LOCATIONstringGemini 图像生成的备选区域(例如:global)。# GOOGLE_CLOUD_LOCATION=global
GOOGLE_EXCLUDE_SAFETY_SETTINGSstring完全忽略默认包含的安全设置,这将使用提供商的默认设置GOOGLE_EXCLUDE_SAFETY_SETTINGS=true
GOOGLE_SAFETY_SEXUALLY_EXPLICITstring针对性露骨内容的安全设置。选项包括 BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY 和 OFF。GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HATE_SPEECHstring针对仇恨言论内容的安全设置。选项包括 BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY 和 OFF。GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HARASSMENTstring针对骚扰内容的安全设置。选项包括 BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY 和 OFF。GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_DANGEROUS_CONTENTstring危险内容的安全设置。选项包括 BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY 和 OFF。GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_CIVIC_INTEGRITYstring公民诚信内容的安全性设置。选项包括 BLOCK_ALL、BLOCK_ONLY_HIGH、WARN_ONLY 和 OFF。# GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH

自定义可用模型,以逗号分隔,不要包含空格。第一个模型将作为默认模型。留空或注释掉该项以使用内部设置。

  • GOOGLE_TITLE_MODEL 现已弃用,并将在未来版本中移除。请改用 librechat.yaml 配置文件中的 titleModel Endpoint Setting

注意: 对于 Vertex AI 的 GOOGLE_SAFETY 变量,默认情况下您无法访问 BLOCK_NONE 设置。要使用此受限的 HarmBlockThreshold 设置,您需要执行以下任一操作:

Gemini 图像生成

Gemini Image Generation 是一个适用于 Agents 的工具,同时支持 Gemini API 和 Vertex AI。请参阅:Gemini Image Generation

KeyTypeDescriptionExample
GEMINI_API_KEYstring用于图像生成的专用 Gemini API 密钥。如果未设置,将回退使用 GOOGLE_KEY。# GEMINI_API_KEY=your_gemini_api_key
GEMINI_IMAGE_MODELstring用于图像生成的 Gemini 模型。默认值:gemini-2.5-flash-image。# GEMINI_IMAGE_MODEL=gemini-2.5-flash-image

注意: 当未配置 API key 时,该工具会自动回退到使用来自 GOOGLE_SERVICE_KEY_FILE 的服务账号的 Vertex AI。该服务账号必须拥有 Vertex AI User 角色。

OpenAI

请参阅:OpenAI Setup

KeyTypeDescriptionExample
OPENAI_API_KEYstring您的 OpenAI API 密钥。留空以禁用此 endpoint,或设置为 "user_provided" 以允许用户从 WebUI 提供他们自己的 API 密钥。OPENAI_API_KEY=user_provided
OPENAI_MODELSstring自定义可用模型,以逗号分隔,不要包含空格。第一个模型将作为默认模型。保持注释状态以使用内部设置。# 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_OPENAIboolean启用 OpenAI endpoint 的调试模式。DEBUG_OPENAI=false
OPENAI_SUMMARIZEboolean启用消息摘要。默认为 False# OPENAI_SUMMARIZE=true
OPENAI_SUMMARY_MODELstring用于 OpenAI 摘要的模型。# OPENAI_SUMMARY_MODEL=gpt-3.5-turbo
OPENAI_FORCE_PROMPTboolean强制 API 使用 prompt 负载而非 messages 负载进行调用。# OPENAI_FORCE_PROMPT=false
OPENAI_ORGANIZATIONstring指定每个向 OpenAI 发送的 API 请求所使用的组织。可选。# OPENAI_ORGANIZATION=
OPENAI_REVERSE_PROXYstring已弃用:OpenAI 的反向代理设置。# OPENAI_REVERSE_PROXY=
OPENAI_TITLE_MODELstring已弃用:用于 OpenAI 标题生成的模型。# OPENAI_TITLE_MODEL=gpt-3.5-turbo
  • OPENAI_TITLE_MODEL 现已弃用,并将在未来版本中移除。请改用 librechat.yaml 配置文件中的 titleModel 端点设置
  • OPENAI_REVERSE_PROXY 现已弃用,并将在未来版本中移除。请改用自定义 endpoint

Assistants

请参阅:Assistants Setup

KeyTypeDescriptionExample
ASSISTANTS_API_KEYstring用于 Assistants API 的 OpenAI API 密钥。留空以禁用此 endpoint,或设置为 "user_provided" 以允许用户从 WebUI 提供他们自己的 API 密钥。ASSISTANTS_API_KEY=user_provided
ASSISTANTS_MODELSstring自定义可用模型,以逗号分隔,不要包含空格。第一个模型将作为默认值。留空则使用内部设置。# 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_URLstringAssistants API 的备用基础 URL。# ASSISTANTS_BASE_URL=

注意:您可以自定义可用模型,以逗号分隔,且不含空格。第一个模型将作为默认模型。留空或注释掉该项以使用内部设置。

Tavily

在此处获取您的 API key:https://tavily.com/#api

环境变量:

KeyTypeDescriptionExample
TAVILY_API_KEYstringTavily API keyTAVILY_API_KEY=

Traversaal

描述: LLM 增强型搜索工具。

在此处获取 API key:https://api.traversaal.ai/dashboard

环境变量:

KeyTypeDescriptionExample
TRAVERSAAL_API_KEYstringTraversaal API keyTRAVERSAAL_API_KEY=

WolframAlpha

详细说明请见此处:Wolfram Alpha

环境变量:

KeyTypeDescriptionExample
WOLFRAM_APP_IDstringWolfram Alpha App IDWOLFRAM_APP_ID=

Zapier

描述: - 您需要一个 Zapier 账户。请从此处获取您的 API 密钥:Zapier

  • 创建允许的操作 - 请遵循 Zapier 入门指南中的第 3 步

注意: Zapier 在执行某些操作时可能会比较挑剔。编写电子邮件草稿可能是它最适合的用途。

环境变量:

KeyTypeDescriptionExample
ZAPIER_NLA_API_KEYstringZapier NLA API 密钥。ZAPIER_NLA_API_KEY=

OpenWeather

查看详细说明请点击此处:OpenWeather

KeyTypeDescriptionExample
OPENWEATHER_API_KEYstring用于 One Call API 3.0 的 OpenWeather API 密钥。OPENWEATHER_API_KEY=

Code Interpreter

Code Interpreter API 提供了一个用于执行代码和管理文件的安全环境。请参阅:Code Interpreter API

KeyTypeDescriptionExample
LIBRECHAT_CODE_API_KEYstringCode Interpreter 服务的 API key。全局设置时,可为所有用户提供访问权限。LIBRECHAT_CODE_API_KEY=your-api-key
LIBRECHAT_CODE_BASEURLstringCode Interpreter API 的自定义基础 URL(仅限企业版)。# LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com

Artifacts

Artifacts 利用 CodeSandbox 库来安全地渲染 HTML/JS 代码。默认情况下,使用由 CodeSandbox 托管的公共 CDN。

幸运的是,对于有内部网络需求的用户,您可以自托管打包器来编译前端代码,并为 Sandpack 指定自定义的打包器 URL。

有关更多信息,包括已移除指标请求的自托管预制容器镜像,请参阅:https://github.com/LibreChat-AI/codesandbox-client

KeyTypeDescriptionExample
SANDPACK_BUNDLER_URLstring指定用于 Artifacts 的 Sandpack 自定义打包器 URLSANDPACK_BUNDLER_URL=your-bundler-url

搜索 (Meilisearch)

启用消息和对话搜索:

KeyTypeDescriptionExample
SEARCHboolean启用消息和对话搜索。SEARCH=true

注意:如果您没有使用 Docker,则需要安装免费的自托管 Meilisearch 或付费的远程方案。

若要为 MeiliSearch 禁用匿名遥测分析以实现绝对隐私,请设置为 true:

KeyTypeDescriptionExample
MEILI_NO_ANALYTICSboolean禁用 MeiliSearch 的匿名遥测分析。MEILI_NO_ANALYTICS=true

为了让 API 服务器连接到搜索服务器。如果使用 docker-compose 部署 MeiliSearch,请将 '0.0.0.0' 替换为 'meilisearch'。

KeyTypeDescriptionExample
MEILI_HOSTstringAPI 服务器与搜索服务器的连接。MEILI_HOST=http://0.0.0.0:7700

此主密钥必须至少为 16 字节,并由有效的 UTF-8 字符组成。如果未提供主密钥或密钥少于 16 字节,MeiliSearch 将抛出错误并拒绝启动。MeiliSearch 会建议一个自动生成的安全主密钥。这是一个为 docker-compose 准备好的安全密钥,你可以将其替换为你自己的密钥。

KeyTypeDescriptionExample
MEILI_MASTER_KEYstringMeiliSearch 的主密钥。MEILI_MASTER_KEY=DrhYf7zENyR6AlUCKmnz0eYASOQdl6zxH7s7MKFSfFCt

为了防止 LibreChat 尝试与 Meilisearch 进行数据库索引同步,您可以将以下环境变量设置为 true。这在节点集群或多节点设置中非常有用,因为在这种情况下,应该只有一个实例负责索引。

KeyTypeDescriptionExample
MEILI_NO_SYNCstring用于禁用 Meilisearch 索引同步的开关MEILI_NO_SYNC=true

RAG API

配置检索增强生成 (RAG) 以进行文档索引和上下文感知响应。请参阅:RAG API Configuration

KeyTypeDescriptionExample
RAG_API_URLstringRAG API 服务的 URL。RAG_API_URL=http://host.docker.internal:8000
RAG_OPENAI_API_KEYstring用于 RAG 嵌入的 OpenAI API key。将覆盖用于 RAG 的 OPENAI_API_KEY。# RAG_OPENAI_API_KEY=sk-your-openai-api-key
RAG_OPENAI_BASEURLstring用于 RAG 嵌入的自定义 OpenAI 基础 URL。# RAG_OPENAI_BASEURL=
RAG_USE_FULL_CONTEXTboolean获取整个文件上下文,而不是仅获取前 4 个结果。默认值:false。# RAG_USE_FULL_CONTEXT=true
EMBEDDINGS_PROVIDERstringEmbeddings 提供商:openai、azure、huggingface、huggingfacetei 或 ollama。默认值:openai。# EMBEDDINGS_PROVIDER=openai
EMBEDDINGS_MODELstring要使用的 Embeddings 模型。默认值取决于提供商。# EMBEDDINGS_MODEL=text-embedding-3-small

注意: 当使用默认的 Docker 设置时,.env 文件会在 LibreChat 和 RAG API 之间共享。有关完整的配置选项,请参阅 RAG API 文档

语音转文字与文字转语音

配置语音转文字 (STT) 和文字转语音 (TTS) 服务。请参阅:语音设置

KeyTypeDescriptionExample
STT_API_KEYstring用于语音转文字服务的 API 密钥(例如 OpenAI Whisper)。# STT_API_KEY=
TTS_API_KEYstring用于文本转语音服务的 API key(例如 OpenAI TTS)。# TTS_API_KEY=

注意: STT 和 TTS 主要通过 librechat.yaml 中的 speech: 部分进行配置。这些环境变量在配置中被引用。有关完整的 YAML 配置选项,请参阅 Speech Settings

配置共享对话链接功能。

KeyTypeDescriptionExample
ALLOW_SHARED_LINKSboolean启用或禁用共享对话链接。默认值:true。ALLOW_SHARED_LINKS=true
ALLOW_SHARED_LINKS_PUBLICboolean允许共享链接在无需身份验证的情况下公开访问。默认值:false。ALLOW_SHARED_LINKS_PUBLIC=false
SHARED_LINKS_SNAPSHOT_FILESboolean共享聊天引用的快照文件,以便查看者可以通过共享链接预览或下载它们。设置后将覆盖 interface.sharedLinks.snapshotFiles。SHARED_LINKS_SNAPSHOT_FILES=true

ALLOW_SHARED_LINKS 是功能范围内的总开关。角色权限现在可以控制谁能够创建共享链接、与已认证用户共享链接,或将其设置为对所有人可见;请参阅 interface.sharedLinksALLOW_SHARED_LINKS_PUBLIC 仅控制公开共享链接是否可以在无需认证的情况下被查看。SHARED_LINKS_SNAPSHOT_FILES 是共享链接文件快照的全局覆盖设置,当设置为 false 时,可以禁用所有链接的快照服务。

用户系统

本节包含以下内容的配置:

内容审核

自动审核系统使用评分机制来跟踪用户的违规行为。当用户进行诸如频繁登录、注册或发送消息等操作时,他们会积累违规分数。一旦达到设定的阈值,该用户及其 IP 地址将被暂时封禁。该系统通过监控并惩罚快速或可疑的活动,确保了平台的安全性。

请参阅:自动化审核

基础审核设置

KeyTypeDescriptionExample
OPENAI_MODERATIONboolean是否在 **OpenAI** 和 **Plugins** endpoint 上启用 OpenAI 审核功能。OPENAI_MODERATION=false
OPENAI_MODERATION_API_KEYstring您的 OpenAI API key。OPENAI_MODERATION_API_KEY=
OPENAI_MODERATION_REVERSE_PROXYstring注意:默认情况下已注释,此功能并非适用于所有反向代理。# OPENAI_MODERATION_REVERSE_PROXY=

封禁设置

KeyTypeDescriptionExample
BAN_VIOLATIONSboolean是否启用对违规用户的封禁(他们仍会被记录在案)。BAN_VIOLATIONS=true
BAN_DURATIONinteger用户及关联 IP 被封禁的时长(以毫秒为单位)。BAN_DURATION=1000 * 60 * 60 * 2
BAN_INTERVALinteger每当用户的分数达到或超过区间阈值时,该用户都将被封禁。BAN_INTERVAL=20

登录和注册速率限制

通过限制登录尝试和新账户注册,防止暴力破解攻击和垃圾注册。

KeyTypeDescriptionExample
LOGIN_MAXinteger每个 LOGIN_WINDOW 内每个 IP 允许的最大登录次数。LOGIN_MAX=7
LOGIN_WINDOWinteger以分钟为单位,确定 LOGIN_MAX 次登录的时间窗口。LOGIN_WINDOW=5
REGISTER_MAXinteger每个 IP 在每个 REGISTER_WINDOW 内允许的最大注册次数。REGISTER_MAX=5
REGISTER_WINDOWinteger以分钟为单位,确定 REGISTER_MAX 注册的时间窗口。REGISTER_WINDOW=60

每个违规项的评分

KeyTypeDescriptionExample
LOGIN_VIOLATION_SCOREinteger登录违规评分。LOGIN_VIOLATION_SCORE=1
REGISTRATION_VIOLATION_SCOREinteger注册违规评分。REGISTRATION_VIOLATION_SCORE=1
CONCURRENT_VIOLATION_SCOREinteger并发违规评分。CONCURRENT_VIOLATION_SCORE=1
MESSAGE_VIOLATION_SCOREinteger消息违规评分。MESSAGE_VIOLATION_SCORE=1
NON_BROWSER_VIOLATION_SCOREinteger非浏览器违规评分NON_BROWSER_VIOLATION_SCORE=20
ILLEGAL_MODEL_REQ_SCOREinteger非法模型请求的评分。ILLEGAL_MODEL_REQ_SCORE=5
IMPORT_VIOLATION_SCOREinteger导入对话违规的评分。IMPORT_VIOLATION_SCORE=1
FORK_VIOLATION_SCOREinteger对话分支违规的评分。FORK_VIOLATION_SCORE=1
TTS_VIOLATION_SCOREinteger文本转语音违规评分。TTS_VIOLATION_SCORE=0
STT_VIOLATION_SCOREinteger语音转文字违规评分。STT_VIOLATION_SCORE=0
FILE_UPLOAD_VIOLATION_SCOREinteger文件上传违规评分。FILE_UPLOAD_VIOLATION_SCORE=0
RESET_PASSWORD_VIOLATION_SCOREinteger密码重置违规得分。RESET_PASSWORD_VIOLATION_SCORE=0
VERIFY_EMAIL_VIOLATION_SCOREinteger电子邮件验证违规的评分。VERIFY_EMAIL_VIOLATION_SCORE=0
TOOL_CALL_VIOLATION_SCOREinteger工具调用违规评分。TOOL_CALL_VIOLATION_SCORE=0
CONVO_ACCESS_VIOLATION_SCOREinteger会话访问违规的评分。CONVO_ACCESS_VIOLATION_SCORE=0

注意:非浏览器访问和非法模型请求几乎总是恶意的,这意味着第三方正在尝试通过自动化脚本访问服务器。

消息速率限制(按用户和 IP)

KeyTypeDescriptionExample
LIMIT_CONCURRENT_MESSAGESboolean是否限制用户每次请求可发送的消息数量。LIMIT_CONCURRENT_MESSAGES=true
CONCURRENT_MESSAGE_MAXinteger用户每次请求可发送的最大消息数量。CONCURRENT_MESSAGE_MAX=2

限制器

注意:您可以同时使用这两种限制器,但默认情况下仅按 IP 进行限制。

IP 限制器:
KeyTypeDescriptionExample
LIMIT_MESSAGE_IPboolean是否限制每个 IP 在 `MESSAGE_IP_WINDOW` 内可以发送的消息数量。LIMIT_MESSAGE_IP=true
MESSAGE_IP_MAXinteger一个 IP 在 `MESSAGE_IP_WINDOW` 内可以发送的最大消息数量。MESSAGE_IP_MAX=40
MESSAGE_IP_WINDOWinteger以分钟为单位,确定 `MESSAGE_IP_MAX` 条消息的时间窗口。MESSAGE_IP_WINDOW=1
用户限制器:
KeyTypeDescriptionExample
LIMIT_MESSAGE_USERboolean是否限制用户在每个 `MESSAGE_USER_WINDOW` 内可以发送的消息数量。LIMIT_MESSAGE_USER=false
MESSAGE_USER_MAXinteger用户在 `MESSAGE_USER_WINDOW` 时间窗口内可以发送的最大消息数量。MESSAGE_USER_MAX=40
MESSAGE_USER_WINDOWinteger以分钟为单位,确定 `MESSAGE_USER_MAX` 消息的时间窗口。MESSAGE_USER_WINDOW=1

导入对话速率限制

限制用户导入对话的频率,以防止滥用。

注意:您可以同时使用这两种限制器,但默认情况下仅按 IP 进行限制。

IP 限制器:
KeyTypeDescriptionExample
LIMIT_IMPORT_IPboolean是否限制每个 IP 在 `IMPORT_IP_WINDOW` 时间窗口内可以执行的对话导入次数。LIMIT_IMPORT_IP=true
IMPORT_IP_MAXinteger每个 IP 在 `IMPORT_IP_WINDOW` 时间段内可以执行的最大对话导入次数。IMPORT_IP_MAX=100
IMPORT_IP_WINDOWinteger以分钟为单位,确定 `IMPORT_IP_MAX` 导入的时间窗口。IMPORT_IP_WINDOW=1
用户限制器:
KeyTypeDescriptionExample
LIMIT_IMPORT_USERboolean是否限制用户在每个 `IMPORT_USER_WINDOW` 内可以执行的对话导入次数。LIMIT_IMPORT_USER=false
IMPORT_USER_MAXinteger用户在每个 `IMPORT_USER_WINDOW` 期间可以执行的最大对话导入次数。IMPORT_USER_MAX=50
IMPORT_USER_WINDOWinteger以分钟为单位,确定 `IMPORT_USER_MAX` 导入的时间窗口。IMPORT_USER_WINDOW=1

会话分叉速率限制

限制用户分叉对话的频率,以防止滥用。

注意:您可以同时使用这两种限制器,但默认情况下仅按 IP 进行限制。

IP 限制器:
KeyTypeDescriptionExample
LIMIT_FORK_IPboolean是否限制每个 IP 在 `FORK_IP_WINDOW` 内可以创建的对话分支数量。LIMIT_FORK_IP=true
FORK_IP_MAXinteger一个 IP 在 `FORK_IP_WINDOW` 时间内可以创建的最大对话分支数量。FORK_IP_MAX=30
FORK_IP_WINDOWinteger以分钟为单位,确定 `FORK_IP_MAX` 分叉的时间窗口。FORK_IP_WINDOW=1
用户限制器:
KeyTypeDescriptionExample
LIMIT_FORK_USERboolean是否限制用户在 `FORK_USER_WINDOW` 时间内可以创建的对话分支数量。LIMIT_FORK_USER=false
FORK_USER_MAXinteger用户在每个 `FORK_USER_WINDOW` 内可以创建的最大对话分支数量。FORK_USER_MAX=7
FORK_USER_WINDOWinteger以分钟为单位,确定 `FORK_USER_MAX` 分叉的时间窗口。FORK_USER_WINDOW=1

文件上传速率限制

限制用户上传文件的频率,以防止滥用。

注意:这些也可以通过 librechat.yaml 中的 rateLimits.fileUploads 部分进行配置。

IP 限制器:
KeyTypeDescriptionExample
FILE_UPLOAD_IP_MAXinteger每个 IP 在 `FILE_UPLOAD_IP_WINDOW` 时间窗口内允许的最大文件上传次数。默认值:100。# FILE_UPLOAD_IP_MAX=100
FILE_UPLOAD_IP_WINDOWinteger以分钟为单位,确定 `FILE_UPLOAD_IP_MAX` 的时间窗口。默认值:15。# FILE_UPLOAD_IP_WINDOW=15
用户限制器:
KeyTypeDescriptionExample
FILE_UPLOAD_USER_MAXinteger每个用户在 `FILE_UPLOAD_USER_WINDOW` 时间窗口内允许的最大文件上传数。默认值:50。# FILE_UPLOAD_USER_MAX=50
FILE_UPLOAD_USER_WINDOWinteger以分钟为单位,确定 `FILE_UPLOAD_USER_MAX` 的时间窗口。默认值:15。# FILE_UPLOAD_USER_WINDOW=15

TTS (Text-to-Speech) 速率限制

限制用户使用文本转语音(Text-to-Speech)的频率,以防止滥用。

注意:这些也可以通过 librechat.yaml 中的 rateLimits.tts 部分进行配置。

IP 限制器:
KeyTypeDescriptionExample
TTS_IP_MAXinteger每个 IP 在 `TTS_IP_WINDOW` 时间段内允许的最大 TTS 请求数。默认值:100。# TTS_IP_MAX=100
TTS_IP_WINDOWinteger以分钟为单位,确定 `TTS_IP_MAX` 的时间窗口。默认值:1。# TTS_IP_WINDOW=1
用户限制器:
KeyTypeDescriptionExample
TTS_USER_MAXinteger每个用户在 `TTS_USER_WINDOW` 时间窗口内的最大 TTS 请求数。默认值:50。# TTS_USER_MAX=50
TTS_USER_WINDOWinteger以分钟为单位,确定 `TTS_USER_MAX` 的时间窗口。默认值:1。# TTS_USER_WINDOW=1

STT (Speech-to-Text) 速率限制

限制用户使用语音转文字(Speech-to-Text)的频率,以防止滥用。

注意:这些也可以通过 librechat.yaml 中的 rateLimits.stt 部分进行配置。

IP 限制器:
KeyTypeDescriptionExample
STT_IP_MAXinteger每个 IP 在 `STT_IP_WINDOW` 时间窗口内允许的最大 STT 请求数。默认值:100。# STT_IP_MAX=100
STT_IP_WINDOWinteger以分钟为单位,确定 `STT_IP_MAX` 的时间窗口。默认值:1。# STT_IP_WINDOW=1
用户限制器:
KeyTypeDescriptionExample
STT_USER_MAXinteger每个用户在 `STT_USER_WINDOW` 时间窗口内的最大 STT 请求数。默认值:50。# STT_USER_MAX=50
STT_USER_WINDOWinteger以分钟为单位,确定 `STT_USER_MAX` 的时间窗口。默认值:1。# STT_USER_WINDOW=1

余额

以下功能允许管理系统 endpoint 内的用户余额。您可以选择手动添加余额,也可以选择实现一个为用户自动累积余额的系统。如果在配置中定义了特定的初始余额,当用户注册时,系统会自动将代币存入用户的余额中。

请参阅:Token Usage

KeyTypeDescriptionExample
CHECK_BALANCEboolean为 OpenAI/Plugins endpoint 启用代币额度余额。CHECK_BALANCE=false
START_BALANCEinteger如果设置了该值,用户注册后将获得相应的积分余额。START_BALANCE=20000

管理余额

  • 运行 npm run add-balance 以手动添加余额。
    • 您也可以指定要添加的邮箱和代币额度,例如:npm run add-balance [email protected] 1000
  • 运行 npm run set-balance 以手动设置余额,用法类似于 add-balance
  • 运行 npm run list-balances 以列出每个用户的余额。

注意: 1000 credits = $0.001 (0.001 美元)

注册与登录

请参阅:Authentication System

用户注册界面用户注册界面

配置文件说明

本节中的所有身份验证设置都应在您的 .env 文件中进行配置,而不是在 librechat.yaml 文件或 docker-compose.override.yml 中。docker-compose.override.yml 文件仅用于挂载卷和设置 Docker 的环境变量,而 librechat.yaml 文件则用于自定义 endpoint 和其他应用程序设置。

  • 常规设置:
KeyTypeDescriptionExample
ALLOW_EMAIL_LOGINboolean启用或禁用仅限电子邮件登录。ALLOW_EMAIL_LOGIN=true
ALLOW_REGISTRATIONboolean启用或禁用新用户的电子邮件注册。ALLOW_REGISTRATION=true
ALLOW_SOCIAL_LOGINboolean允许用户通过各种社交网络连接到 LibreChat。ALLOW_SOCIAL_LOGIN=false
ALLOW_SOCIAL_REGISTRATIONboolean启用或禁用使用各种社交网络注册新用户的功能。ALLOW_SOCIAL_REGISTRATION=false
ALLOW_PASSWORD_RESETboolean启用或禁用用户自行重置密码的功能ALLOW_PASSWORD_RESET=false
ALLOW_ACCOUNT_DELETIONboolean启用或禁用用户自行删除账户的功能。如果省略或注释掉,则默认启用。ALLOW_ACCOUNT_DELETION=true
ALLOW_UNVERIFIED_EMAIL_LOGINboolean设置为 true 以允许用户在不验证电子邮件地址的情况下登录。如果设置为 false,用户在登录前必须先验证其电子邮件。ALLOW_UNVERIFIED_EMAIL_LOGIN=true
MIN_PASSWORD_LENGTHnumber用户身份验证的最小密码长度。使用 LDAP 身份验证时,您可能需要将其设置为 1 以绕过本地密码验证,因为 LDAP 服务器会处理其自身的密码策略。MIN_PASSWORD_LENGTH=8

快速提示: 即使禁用了注册功能,也可以使用 npm run create-user 直接将用户添加到数据库。

快速提示: 在禁用注册功能的情况下,您可以使用 npm run delete-user [email protected] 删除用户。

  • 会话与刷新令牌设置:
KeyTypeDescriptionExample
SESSION_EXPIRYinteger (milliseconds)会话过期时间。SESSION_EXPIRY=1000 * 60 * 15
REFRESH_TOKEN_EXPIRYinteger (milliseconds)刷新令牌过期时间。REFRESH_TOKEN_EXPIRY=(1000 * 60 * 60 * 24) * 7
SESSION_COOKIE_SECUREboolean覆盖会话/身份验证 cookie 的 Secure 属性。留空则使用默认的 NODE_ENV/DOMAIN_SERVER 启发式规则。# SESSION_COOKIE_SECURE=false

您应该使用新的安全值。提供的示例是 32 字节的密钥(十六进制下为 64 个字符)。 使用此 replit 快速生成一些:JWT Keys

KeyTypeDescriptionExample
JWT_SECRETstring (hex)JWT 密钥。JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRETstring (hex)JWT 刷新密钥。JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

社交登录

更多详情请见:OAuth2-OIDC

Apple 身份验证

更多信息请参考:Apple Authentication

KeyTypeDescriptionExample
APPLE_CLIENT_IDstring您的 Apple Services ID(例如 com.yourdomain.librechat.services)。APPLE_CLIENT_ID=com.yourdomain.librechat.services
APPLE_TEAM_IDstring您的 Apple Developer Team ID。APPLE_TEAM_ID=YOUR_TEAM_ID
APPLE_KEY_IDstring从下载的密钥中获取您的 Apple Key ID。APPLE_KEY_ID=YOUR_KEY_ID
APPLE_PRIVATE_KEY_PATHstring您下载的 .p8 文件的绝对路径。APPLE_PRIVATE_KEY_PATH=/path/to/AuthKey.p8
APPLE_CALLBACK_URLstring用于 Apple 身份验证的回调 URL。APPLE_CALLBACK_URL=/oauth/apple/callback

Discord 身份验证

更多信息:Discord

KeyTypeDescriptionExample
DISCORD_CLIENT_IDstring您的 Discord 客户端 ID。DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRETstring您的 Discord 客户端密钥。DISCORD_CLIENT_SECRET=
DISCORD_CALLBACK_URLstring用于 Discord 身份验证的回调 URL。DISCORD_CALLBACK_URL=/oauth/discord/callback

Facebook 身份验证

更多信息:Facebook 身份验证

KeyTypeDescriptionExample
FACEBOOK_CLIENT_IDstring您的 Facebook 客户端 ID。FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRETstring您的 Facebook 客户端密钥。FACEBOOK_CLIENT_SECRET=
FACEBOOK_CALLBACK_URLstring用于 Facebook 身份验证的回调 URL。FACEBOOK_CALLBACK_URL=/oauth/facebook/callback

GitHub 身份验证

更多信息请参阅:GitHub Authentication

KeyTypeDescriptionExample
GITHUB_CLIENT_IDstring您的 GitHub 客户端 ID。GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRETstring您的 GitHub 客户端密钥。GITHUB_CLIENT_SECRET=
GITHUB_CALLBACK_URLstringGitHub 身份验证的回调 URL。GITHUB_CALLBACK_URL=/oauth/github/callback
GITHUB_ENTERPRISE_BASE_URLstring可选:您的 GitHub Enterprise 实例的基准 URL。GITHUB_ENTERPRISE_BASE_URL=
GITHUB_ENTERPRISE_USER_AGENTstring可选:GitHub Enterprise 请求的用户代理。GITHUB_ENTERPRISE_USER_AGENT=

Google 身份验证

更多信息请参阅:Google Authentication

KeyTypeDescriptionExample
GOOGLE_CLIENT_IDstring您的 Google 客户端 ID。GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRETstring您的 Google 客户端密钥。GOOGLE_CLIENT_SECRET=
GOOGLE_CALLBACK_URLstring用于 Google 身份验证的回调 URL。GOOGLE_CALLBACK_URL=/oauth/google/callback

OpenID Connect

更多信息:

KeyTypeDescriptionExample
OPENID_CLIENT_IDstring您的 OpenID 客户端 ID。OPENID_CLIENT_ID=
OPENID_CLIENT_SECRETstring您的 OpenID 客户端密钥。OPENID_CLIENT_SECRET=
OPENID_ISSUERstringOpenID 发行方 URL。OPENID_ISSUER=
OPENID_SESSION_SECRETstring用于 OpenID 会话存储的密钥。OPENID_SESSION_SECRET=
OPENID_SCOPEstringOpenID 作用域。OPENID_SCOPE="openid profile email"
OPENID_CALLBACK_URLstring用于 OpenID 身份验证的回调 URL。OPENID_CALLBACK_URL=/oauth/openid/callback
OPENID_AUDIENCEstring用于 OpenID JWT 验证和授权请求的 Audience 值。JWT 验证支持逗号分隔的值;授权请求使用第一个非空值。当 OPENID_REUSE_TOKENS=true 时,Auth0 需要此项以接收 JWT 访问令牌而非不透明令牌。OPENID_AUDIENCE=https://api.librechat.com
OPENID_REQUIRED_ROLEstring用于验证所需的角色。支持单个角色或多个以逗号分隔的角色。当指定多个角色时,用户只需具备其中任意一个角色即可(“或”逻辑)。OPENID_REQUIRED_ROLE=admin or OPENID_REQUIRED_ROLE=role1,role2,admin
OPENID_REQUIRED_ROLE_TOKEN_KINDstring用于必需角色验证的令牌类型。OPENID_REQUIRED_ROLE_TOKEN_KIND=
OPENID_REQUIRED_ROLE_PARAMETER_PATHstring用于必需角色验证的参数路径。OPENID_REQUIRED_ROLE_PARAMETER_PATH=
OPENID_ADMIN_ROLEstring用户在 LibreChat 中成为管理员所需具备的角色。OPENID_ADMIN_ROLE=
OPENID_ADMIN_ROLE_TOKEN_KINDstring用于管理员角色验证的信息来源。可选值包括:access、id 或 userinfo。OPENID_ADMIN_ROLE_TOKEN_KIND=
OPENID_ADMIN_ROLE_PARAMETER_PATHstring用于必需角色验证的参数路径。OPENID_ADMIN_ROLE_PARAMETER_PATH=
OPENID_ROLE_SYNC_ENABLEDboolean为非管理员角色启用通用的 OpenID 角色同步。ADMIN 角色无法通过角色同步分配;请使用 OPENID_ADMIN_ROLE 进行管理员权限提升。OPENID_ROLE_SYNC_ENABLED=false
OPENID_ROLE_SYNC_API_ENABLEDboolean启用基于 API 的角色同步助手。需要 OPENID_ROLE_SYNC_ENABLED=true。OPENID_ROLE_SYNC_API_ENABLED=false
OPENID_ROLE_SYNC_SOURCEstring用于角色声明的令牌来源。必须是以下之一:access, id, userinfo。默认值:id。OPENID_ROLE_SYNC_SOURCE=id
OPENID_ROLE_SYNC_CLAIMstring包含提供商角色或组的声明路径。当启用角色同步时为必填项。OPENID_ROLE_SYNC_CLAIM=
OPENID_ROLE_SYNC_ROLE_PRIORITYstring以逗号分隔的 LibreChat 角色,按重要性从高到低排序。系统将分配第一个匹配的角色。OPENID_ROLE_SYNC_ROLE_PRIORITY=Support,User
OPENID_ROLE_SYNC_FALLBACK_ROLEstring当没有匹配的优先级角色时分配的 LibreChat 角色。配置后,该回退角色具有权威性。OPENID_ROLE_SYNC_FALLBACK_ROLE=USER
OPENID_BUTTON_LABELstringOpenID 登录按钮的标签。OPENID_BUTTON_LABEL=
OPENID_IMAGE_URLstringOpenID 登录按钮图片的 URL。OPENID_IMAGE_URL=
OPENID_USE_END_SESSION_ENDPOINTstring是否使用 Issuer End Session Endpoint 作为注销重定向OPENID_USE_END_SESSION_ENDPOINT=TRUE
OPENID_MAX_LOGOUT_URL_LENGTHnumber在使用 logout_hint 代替 id_token_hint 之前,注销 URL 的最大长度。默认值:2000。# OPENID_MAX_LOGOUT_URL_LENGTH=2000
OPENID_AUTO_REDIRECTboolean是否自动重定向到 OpenID 提供商。OPENID_AUTO_REDIRECT=true
OPENID_USE_PKCEboolean使用 PKCE (Proof Key for Code Exchange) 进行 OpenID 身份验证。对于没有客户端密钥的公共客户端,请将 OPENID_CLIENT_SECRET 留空并将此项设置为 true。# OPENID_USE_PKCE=true
OPENID_POST_LOGOUT_REDIRECT_URIstringOpenID 注销后的重定向 URI。默认为 ${DOMAIN_CLIENT}/login。# OPENID_POST_LOGOUT_REDIRECT_URI=
OPENID_CLOCK_TOLERANCEnumber用于令牌验证的时钟容差(秒)。默认值:300。# OPENID_CLOCK_TOLERANCE=300
OPENID_GENERATE_NONCEboolean强制 OpenID 客户端生成 nonce 参数。某些身份提供商(如 AWS Cognito(特别是联合身份验证时)和 Authentik)需要此项。OPENID_GENERATE_NONCE=true
DEBUG_OPENID_REQUESTSboolean启用 OpenID 请求标头的详细日志记录。禁用时(默认),仅在调试级别记录请求 URL。启用时,也会记录请求标头(敏感数据已脱敏),以便更深入地调试身份验证问题。DEBUG_OPENID_REQUESTS=false
OPENID_USERNAME_CLAIMstring来自 OpenID 提供商的用于存储为用户用户名的用户信息属性。OPENID_USERNAME_CLAIM=
OPENID_NAME_CLAIMstring来自 OpenID 提供商的用户信息属性,用于存储为用户的显示名称。OPENID_NAME_CLAIM=
OPENID_EMAIL_CLAIMstring用于用户匹配的电子邮件/标识符的用户信息声明(例如,Entra ID 使用 "upn")。未设置时,默认为:email → preferred_username → upn。OPENID_EMAIL_CLAIM=

OpenID 角色同步

当启用角色同步时,OPENID_ROLE_SYNC_CLAIM 是必需的。 OPENID_ROLE_SYNC_API_ENABLED=true 同时要求 OPENID_ROLE_SYNC_ENABLED=true。通用角色同步无法分配 ADMIN;请使用 OPENID_ADMIN_ROLE 进行管理员权限提升。

OpenID Connect 令牌重用

LibreChat 支持重用由您的 OpenID Connect 提供商(如 Azure Entra ID 或 Auth0)颁发的访问令牌和刷新令牌,以管理用户身份验证状态。当此功能启用时,作为 Cookie 传递给用户的刷新令牌将由您的 OpenID 提供商颁发,而不是由 LibreChat 颁发。

KeyTypeDescriptionExample
OPENID_REUSE_TOKENSboolean启用 OpenID 提供商令牌的复用以进行会话管理。OPENID_REUSE_TOKENS=false
OPENID_SCOPEstring以空格分隔的 OpenID 作用域列表。必须包含 offline_access 以实现令牌重用。OPENID_SCOPE=api://librechat/.default openid profile email offline_access
OPENID_AUDIENCEstring用于 OpenID JWT 验证和授权请求的 Audience 值。JWT 验证支持逗号分隔的值;授权请求使用第一个非空值。当 OPENID_REUSE_TOKENS=true 时,Auth0 必须配置此项。请参阅上方 OpenID 主章节中的说明。OPENID_AUDIENCE=https://api.librechat.com
OPENID_REUSE_MAX_SESSION_AGE_MSnumberLibreChat 在强制执行 IdP 刷新之前,复用 OpenID 会话令牌的最长有效期。默认值:900000 毫秒 / 15 分钟。OPENID_REUSE_MAX_SESSION_AGE_MS=900000
OPENID_JWKS_URL_CACHE_ENABLEDboolean启用签名密钥验证结果的缓存。OPENID_JWKS_URL_CACHE_ENABLED=true
OPENID_JWKS_URL_CACHE_TIMEnumber缓存持续时间(以毫秒为单位,默认值:600000 毫秒 / 10 分钟)。OPENID_JWKS_URL_CACHE_TIME=600000
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIREDboolean为用户信息启用 on-behalf-of 流程。OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
OPENID_ON_BEHALF_FLOW_USERINFO_SCOPEstring代表用户流程中用户信息的范围。OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read
OPENID_USE_END_SESSION_ENDPOINTboolean启用注销时使用的 end session endpoint。OPENID_USE_END_SESSION_ENDPOINT=true
OPENID_MAX_LOGOUT_URL_LENGTHnumber在切换到 logout_hint 之前,注销 URL 的最大字符长度。这有助于防止 id_token_hint 超过服务器限制时出现 URI 过长错误。默认值:2000。OPENID_MAX_LOGOUT_URL_LENGTH=2000

OPENID_REUSE_MAX_SESSION_AGE_MS 接受类似于 SESSION_EXPIRY 的算术表达式。当您的提供商在刷新时撤销之前的访问令牌时,请将其增加至接近 IdP 访问令牌的生命周期,以便下游消费者(例如 MCP 服务器)能够完成对仍然有效的持有者令牌(bearer token)的使用。

注意

有关详细的配置步骤和先决条件,请参阅 Re-use OpenID Tokens for Login Session

Microsoft Graph API / Entra ID 集成

当使用 Azure Entra ID(前身为 Azure AD)作为您的 OpenID 提供商时,您可以启用额外的 Microsoft Graph API 功能,以在权限和共享系统中实现增强的人员和群组搜索能力。

KeyTypeDescriptionExample
USE_ENTRA_ID_FOR_PEOPLE_SEARCHboolean在权限/共享系统中启用 Entra ID 人员搜索集成。启用后,人员选择器将同时搜索本地数据库和 Entra ID。USE_ENTRA_ID_FOR_PEOPLE_SEARCH=false
ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERSboolean启用后,Entra ID 群组所有者将被视为该群组的成员。ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=false
OPENID_GRAPH_SCOPESstring进行人员/群组搜索所需的 Microsoft Graph API 范围。默认范围提供对用户资料和群组成员身份的访问权限。OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All

重要先决条件

  • 您必须将 Azure Entra ID 配置为您的 OpenID 提供商 - 必须启用 OpenID 令牌重用 (OPENID_REUSE_TOKENS=true) - 如果不启用此功能,该特性将无法工作 - 您的 Azure 应用注册必须具备相应的 Microsoft Graph API 权限 - 对于群组搜索功能,某些 Graph API 范围可能需要管理员同意
SharePoint 集成

LibreChat 支持与 SharePoint Online 和 OneDrive for Business 的直接集成,允许用户在对话中直接选择并附加来自其 SharePoint 库的文件。此企业级功能利用了现有的 Azure Entra ID 身份验证。

KeyTypeDescriptionExample
ENABLE_SHAREPOINT_FILEPICKERboolean在聊天和智能体面板中启用 SharePoint 文件选择器。启用后,文件附件菜单中将增加“从 SharePoint”选项。ENABLE_SHAREPOINT_FILEPICKER=true
SHAREPOINT_BASE_URLstringSharePoint 租户基础 URL。启用 SharePoint 集成时必填。SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com
SHAREPOINT_PICKER_SHAREPOINT_SCOPEstring用于文件选择器的 SharePoint 特定 OAuth 范围。用于在打开 SharePoint 文件选择器界面时进行身份验证。SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read
SHAREPOINT_PICKER_GRAPH_SCOPEstring用于文件下载的 Microsoft Graph API 范围。用于在选择后从 SharePoint 下载文件。SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All

关键要求

必须配置以下所有内容,SharePoint 集成才能正常工作:

  • 必须完全配置 Azure Entra ID 身份验证
  • OPENID_REUSE_TOKENS=true 是强制性的(使用代表令牌流/on-behalf-of token flow)
  • OPENID_SCOPE 必须包含您的 LibreChat 应用 API 范围,例如 api://<client-id>/access_as_user
  • 当使用 Azure Entra ID 的 app-audience 范围时,必须设置 OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
  • 您的 Azure 应用注册必须具有 SharePoint 和 Graph API 权限
  • 您的 Azure 应用注册必须公开 OPENID_SCOPE 中使用的 LibreChat API 范围。
  • 必须设置所有四个 SharePoint 环境变量
  • 在生产环境中必须使用 HTTPS

功能特性

启用后,用户可以:

  • 从 SharePoint 文档库和 OneDrive for Business 访问文件
  • 一次选择多个文件(默认上限:10 个文件)
  • 查看实时下载进度
    • 文件会被下载并像常规上传一样附加到对话中

有关 SharePoint 配置的详细说明,请参阅:SharePoint 集成指南

SAML

更多信息:

OpenID 与 SAML 的互斥性

如果启用了 OpenID,SAML 身份验证将自动禁用。

同一时间只能启用一种身份验证方法。

KeyTypeDescriptionExample
SAML_ENTRY_POINTstringSAML 身份提供商 (IdP) 入口点 URL。SAML_ENTRY_POINT=
SAML_ISSUERstringSAML 服务提供商 (SP) 实体 ID。SAML_ISSUER=
SAML_CERTstringSAML 签名证书,以文件路径或单行 PEM 字符串形式提供。SAML_CERT=
SAML_CALLBACK_URLstringSAML 身份验证的回调 URL。SAML_CALLBACK_URL=/oauth/saml/callback
SAML_SESSION_SECRETstring用于 SAML 会话存储的密钥。SAML_SESSION_SECRET=
SAML_EMAIL_CLAIMstring<Optional>:SAML 断言中包含用户电子邮件的属性。(默认:email)SAML_EMAIL_CLAIM=
SAML_USERNAME_CLAIMstring<Optional>:SAML 断言中包含用户名的属性。(默认:username)SAML_USERNAME_CLAIM=
SAML_GIVEN_NAME_CLAIMstring<Optional>:SAML 断言中包含名字的属性。(默认值:given_name)SAML_GIVEN_NAME_CLAIM=
SAML_FAMILY_NAME_CLAIMstring<Optional>:SAML 断言中包含姓氏的属性。(默认:family_name)SAML_FAMILY_NAME_CLAIM=
SAML_PICTURE_CLAIMstring<Optional>:SAML 断言中包含头像 URL 的属性。(默认值:picture)SAML_PICTURE_CLAIM=
SAML_NAME_CLAIMstring<Optional>:SAML 断言中包含全名的属性。SAML_NAME_CLAIM=
SAML_BUTTON_LABELstring<Optional>:SAML 登录按钮的标签。SAML_BUTTON_LABEL=
SAML_IMAGE_URLstring<Optional>:SAML 登录按钮图片的 URL。SAML_IMAGE_URL=
SAML_USE_AUTHN_RESPONSE_SIGNEDboolean<Optional>:如果设为 "true",则对整个 SAML Response 进行签名。否则,仅对 Assertion 进行签名(默认)。SAML_USE_AUTHN_RESPONSE_SIGNED=

LDAP/AD 身份验证

更多信息请参考:LDAP/AD Authentication

KeyTypeDescriptionExample
LDAP_URLstringLDAP 服务器 URL。LDAP_URL=ldap://localhost:389
LDAP_BIND_DNstring绑定 DNLDAP_BIND_DN=cn=root
LDAP_BIND_CREDENTIALSstringbindDN 的密码LDAP_BIND_CREDENTIALS=password
LDAP_USER_SEARCH_BASEstringLDAP 用户搜索基准 (search base)LDAP_USER_SEARCH_BASE=o=users,o=example.com
LDAP_SEARCH_FILTERstringLDAP 搜索过滤器LDAP_SEARCH_FILTER=mail={{username}}
LDAP_CA_CERT_PATHstringCA 证书路径。LDAP_CA_CERT_PATH=/path/to/root_ca_cert.crt
LDAP_TLS_REJECT_UNAUTHORIZEDstringLDAP TLS 验证LDAP_TLS_REJECT_UNAUTHORIZED=true
LDAP_STARTTLSstring启用 LDAP StartTLS 以将连接升级为 TLS。设置为 true 以启用此功能。LDAP_STARTTLS=true
LDAP_LOGIN_USES_USERNAMEboolean使用用户名而非邮箱进行 LDAP 登录。# LDAP_LOGIN_USES_USERNAME=true
LDAP_IDstring用于唯一用户 ID 的 LDAP 属性。默认值:uid 或 sAMAccountName, mail。# LDAP_ID=uid
LDAP_USERNAMEstring用于用户名的 LDAP 属性。默认值:givenName 或 mail。# LDAP_USERNAME=givenName
LDAP_EMAILstring用于电子邮件的 LDAP 属性。默认值:mail。# LDAP_EMAIL=userPrincipalName
LDAP_FULL_NAMEstring用于全名的 LDAP 属性。可以使用逗号分隔。默认值:givenName + surname。# LDAP_FULL_NAME=givenName,surname

重置密码

电子邮件用于账户验证和密码重置。LibreChat 同时支持 Mailgun API 和传统的 SMTP 服务。请参阅:电子邮件设置

重要提示:您必须配置 Mailgun(推荐用于屏蔽 SMTP 的服务器)或 SMTP,以便电子邮件功能正常工作。

警告:如果未能为 Mailgun 或 SMTP 设置有效值,LibreChat 将使用不安全的密码重置方式!

对于在封锁 SMTP 端口的服务器上进行部署,Mailgun 特别有用。当同时设置了 MAILGUN_API_KEYMAILGUN_DOMAIN 时,LibreChat 将使用 Mailgun 而非 SMTP。

KeyTypeDescriptionExample
MAILGUN_API_KEYstring您的 Mailgun API 密钥(Mailgun 所必需)。MAILGUN_API_KEY=
MAILGUN_DOMAINstring您的 Mailgun 域名(Mailgun 所必需)。MAILGUN_DOMAIN=mg.yourdomain.com
MAILGUN_HOSTstringCustom Mailgun API host (optional). Use https://api.eu.mailgun.net for EU region.MAILGUN_HOST=https://api.mailgun.net
EMAIL_FROMstring发件人电子邮件地址。必填。[email protected]
EMAIL_FROM_NAMEstring发件人名称(若未设置,则默认为 APP_TITLE)。EMAIL_FROM_NAME=

SMTP 配置

如果未配置 Mailgun,LibreChat 将回退到 SMTP 设置。

警告:如果使用 EMAIL_SERVICE,请不要设置扩展连接参数: HOST, PORT, ENCRYPTION, ENCRYPTION_HOSTNAME, ALLOW_SELFSIGNED。

请参阅:nodemailer well-known-services

KeyTypeDescriptionExample
EMAIL_SERVICEstring电子邮件服务(例如 Gmail、Outlook)。EMAIL_SERVICE=
EMAIL_HOSTstring邮件服务器主机EMAIL_HOST=
EMAIL_PORTnumber邮件服务器端口。EMAIL_PORT=25
EMAIL_ENCRYPTIONstring加密方法 (starttls, tls 等)。EMAIL_ENCRYPTION=
EMAIL_ENCRYPTION_HOSTNAMEstring用于加密的主机名。EMAIL_ENCRYPTION_HOSTNAME=
EMAIL_ALLOW_SELFSIGNEDboolean允许自签名证书。EMAIL_ALLOW_SELFSIGNED=
EMAIL_USERNAMEstring用于身份验证的用户名。EMAIL_USERNAME=
EMAIL_PASSWORDstring用于身份验证的密码。EMAIL_PASSWORD=
EMAIL_FROM_NAMEstring发件人名称EMAIL_FROM_NAME=
EMAIL_FROMstring发件人电子邮件地址。必填。[email protected]

Firebase CDN

请参阅:Firebase CDN 配置

重要

  • 如果您正在使用 Firebase 作为您的文件存储策略,请在您的 librechat.yaml 配置文件中将 fileStrategyfileStrategies 设置为 firebase。有关配置 librechat.yaml 文件的更多信息,请参阅 YAML 配置指南:自定义端点与配置
KeyTypeDescriptionExample
FIREBASE_API_KEYstring您的 Firebase 项目的 API key。FIREBASE_API_KEY=
FIREBASE_AUTH_DOMAINstring您项目的 Firebase Auth 域名。FIREBASE_AUTH_DOMAIN=
FIREBASE_PROJECT_IDstring您的 Firebase 项目 ID。FIREBASE_PROJECT_ID=
FIREBASE_STORAGE_BUCKETstring您项目的 Firebase Storage 存储桶。FIREBASE_STORAGE_BUCKET=
FIREBASE_MESSAGING_SENDER_IDstringFirebase Cloud Messaging 发送者 ID。FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_APP_IDstring您项目的 Firebase App ID。FIREBASE_APP_ID=

Amazon S3 和 CloudFront

请参阅:Amazon S3 配置CloudFront 配合 S3 使用

重要

如果您正在使用 S3 作为文件存储策略,请在您的 librechat.yaml 配置文件中设置 fileStrategyfileStrategies。如果您使用 CloudFront,仍需要 S3 作为存储源。

KeyTypeDescriptionExample
AWS_ACCESS_KEY_IDstring您的 IAM 用户访问密钥 ID。如果使用 IRSA,则为可选。AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEYstring您的 IAM 用户私有访问密钥。如果使用 IRSA,则为可选。AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_REGIONstring您的 S3 存储桶所在的 AWS 区域。AWS_REGION=us-east-1
AWS_BUCKET_NAMEstring用于文件存储的 S3 存储桶名称。AWS_BUCKET_NAME=your_bucket_name
AWS_ENDPOINT_URLstringCustom AWS endpoint URL (optional). For S3-compatible services. Include the URL scheme, such as https://a7g8.da.idrivee2-32.com.# AWS_ENDPOINT_URL=https://your_endpoint_url
AWS_FORCE_PATH_STYLEboolean对于需要路径样式 URL 的 S3 兼容提供商(例如 MinIO、Hetzner、Backblaze B2),请设置为 true。AWS S3 不需要此项。默认值:false。# AWS_FORCE_PATH_STYLE=false
CLOUDFRONT_KEY_PAIR_IDstringCloudFront 公钥对 ID。用于签名 Cookie 和签名的 CloudFront 下载 URL,此项为必填。# CLOUDFRONT_KEY_PAIR_ID=K1234567890ABC
CLOUDFRONT_PRIVATE_KEYstringCloudFront 私钥 PEM。用于签名 Cookie 和签名 CloudFront 下载 URL。注入此密钥时请保留 PEM 中的换行符。# CLOUDFRONT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"

注意: 对于 Kubernetes 部署(例如在 EKS 上),您可以使用 IRSA(IAM Roles for Service Accounts)来代替提供显式凭证。在这种情况下,仅需要 AWS_REGIONAWS_BUCKET_NAME

Azure Blob Storage CDN

请参阅:Azure Blob Storage CDN Configuration

重要

如果您正在使用 Azure Blob Storage 作为文件存储策略,请在您的 librechat.yaml 配置文件中将 fileStrategyfileStrategies 设置为 azure_blob

KeyTypeDescriptionExample
AZURE_STORAGE_CONNECTION_STRINGstringAzure Blob Storage 连接字符串。使用此项或 AZURE_STORAGE_ACCOUNT_NAME 以进行托管身份验证 (Managed Identity)。AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...
AZURE_STORAGE_ACCOUNT_NAMEstringAzure 存储账户名称。用于托管标识身份验证(请勿设置连接字符串)。# AZURE_STORAGE_ACCOUNT_NAME=yourAccountName
AZURE_STORAGE_PUBLIC_ACCESSboolean启用 blob 的公共访问权限。默认值:false。AZURE_STORAGE_PUBLIC_ACCESS=false
AZURE_CONTAINER_NAMEstring用于文件存储的容器名称。默认值:files。AZURE_CONTAINER_NAME=files

注意: 请使用 AZURE_STORAGE_CONNECTION_STRING(选项 A)或结合托管标识(Managed Identity)的 AZURE_STORAGE_ACCOUNT_NAME(选项 B),二者选其一,请勿同时使用。

UI

帮助与常见问题按钮

KeyTypeDescriptionExample
HELP_AND_FAQ_URLstring帮助与常见问题解答 URL。如果为空或被注释,该按钮将启用。若要禁用“帮助与常见问题解答”按钮,请将其设置为 "/"。HELP_AND_FAQ_URL=https://librechat.ai

行为:

为静态文件设置 Cache-Control 响应头。这些配置仅在 NODE_ENV 设置为 production 时生效。

正确设置缓存头对于优化 Web 应用程序的性能和效率至关重要。通过控制浏览器和 CDN 存储静态文件副本的时长,您可以显著降低服务器负载、缩短页面加载时间并改善整体用户体验。

  • 取消注释 STATIC_CACHE_MAX_AGE 以更改静态文件的 max-age。默认设置为 4 周。
  • 取消注释 STATIC_CACHE_S_MAX_AGE 以更改静态文件的 s-maxage。默认情况下,此值设置为 1 周。
    • 这是针对 shared cache(共享缓存)的,它被 CDN 和代理服务器所使用。
KeyTypeDescriptionExample
APP_TITLEstring应用标题APP_TITLE=LibreChat
CUSTOM_FOOTERstring自定义页脚# CUSTOM_FOOTER="My custom footer"
TEMP_CHAT_RETENTION_HOURSnumber**已弃用:** 请改用 librechat.yaml 中的 `interface.temporaryChatRetention`。保留临时对话的小时数。默认值:720(30 天)。# TEMP_CHAT_RETENTION_HOURS=168

行为:

  • 取消注释 CUSTOM_FOOTER 以添加自定义页脚。
  • 取消注释并将 CUSTOM_FOOTER 留空以移除页脚。
  • 现在,您可以在 CUSTOM_FOOTER 的值中使用以下格式添加一个或多个链接:[Anchor text](URL)。每个链接应使用竖线 (|) 进行分隔。

Markdown example: CUSTOM_FOOTER=[Link 1](http://example1.com) | [Link 2](http://example2.com)

生日帽

KeyTypeDescriptionExample
SHOW_BIRTHDAY_ICONboolean显示生日帽图标。# SHOW_BIRTHDAY_ICON=true

行为:

  • 生日帽图标会在 2月11日(LibreChat 的生日)自动显示。
  • SHOW_BIRTHDAY_ICON 设置为 false 以禁用生日帽图标。
  • SHOW_BIRTHDAY_ICON 设置为 true 以始终启用生日帽图标。

分析

Google Tag Manager

LibreChat 支持使用 Google Tag Manager 进行分析。你需要在 LibreChat 中启用它,为此你需要一个 Google Tag Manager ID。请按照此指南生成 Google Tag Manager ID 并配置 Google Analytics。然后,将 ANALYTICS_GTM_ID 环境变量设置为你的 Google Tag Manager ID。

注意: 如果未设置 ANALYTICS_GTM_ID,则不会启用 Google Tag Manager。如果设置不正确,您将看到对 gtm.js 的请求失败。

KeyTypeDescriptionExample
ANALYTICS_GTM_IDstringGoogle Tag Manager IDANALYTICS_GTM_ID=

会话导入

配置对话文件导入的限制,以防止内存问题。

KeyTypeDescriptionExample
CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTESnumber对话导入的最大文件大小(以字节为单位)。默认值:0(不强制限制)。示例:262144000(250 MiB)。# CONVERSATION_IMPORT_MAX_FILE_SIZE_BYTES=262144000

内联文件预览

控制生成文件在跳过内联预览提取并仅保留为下载模式之前的大小限制。

KeyTypeDescriptionExample
FILE_PREVIEW_MAX_EXTRACT_BYTESnumber代码执行工件内联预览的最大源文件大小(以字节为单位)。默认值:2097152 (2 MiB)。渲染后的 HTML 预览仍有单独的上限,因此即使文件大小低于此值,内容非常丰富的文件也可能跳过预览。# FILE_PREVIEW_MAX_EXTRACT_BYTES=2097152

MCP (Model Context Protocol)

配置 Model Context Protocol 设置以实现增强的服务器管理和 OAuth 支持。

MCP Server Configuration

KeyTypeDescriptionExample
MCP_OAUTH_ON_AUTH_ERRORboolean当未找到 OAuth 元数据时,将 401/403 响应视为 OAuth 要求。MCP_OAUTH_ON_AUTH_ERROR=true
MCP_OAUTH_DETECTION_TIMEOUTnumberOAuth 检测请求的超时时间(以毫秒为单位)。MCP_OAUTH_DETECTION_TIMEOUT=5000
MCP_OAUTH_HANDLING_TIMEOUTnumberLibreChat 等待用户完成 MCP OAuth 流程的超时时长。默认值:600000 毫秒(10 分钟)。MCP_OAUTH_HANDLING_TIMEOUT=600000
MCP_OAUTH_FLOW_TTLnumberMCP OAuth 流程状态的保留时长。LibreChat 会将其限制在 MCP_OAUTH_HANDLING_TIMEOUT 以上,以便接近截止时间的回调仍能完成。默认值:900000 毫秒(15 分钟)。MCP_OAUTH_FLOW_TTL=900000
MCP_CONNECTION_CHECK_TTLnumber缓存连接状态检查的毫秒数,以避免昂贵的验证操作。MCP_CONNECTION_CHECK_TTL=30000
MCP_TOOLS_LIST_MAX_PAGESnumber当 MCP 服务器分页其工具列表(游标分页)时,请求的最大工具/列表页数。限制分页循环以防止行为异常的服务器导致工具发现过程停滞。最小值为 1。默认值:50。MCP_TOOLS_LIST_MAX_PAGES=50
MCP_SKIP_CODE_CHALLENGE_CHECKboolean跳过代码质询方法验证。设置为 true 时,即使未在 .well-known/openid-configuration 中声明,也会强制使用 S256 代码质询。MCP_SKIP_CODE_CHALLENGE_CHECK=false
MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTESnumber在拒绝非 GET 可流式 HTTP MCP 响应之前允许的最大字节数。设置为 0 以禁用。默认值:16777216 (16 MiB)。# MCP_STREAMABLE_HTTP_MAX_RESPONSE_BYTES=16777216
MCP_STREAMABLE_HTTP_MAX_LINE_BYTESnumber非 GET 可流式传输 HTTP MCP 响应中单行 SSE 允许的最大字节数。设置为 0 则禁用。默认值:5242880 (5 MiB)。# MCP_STREAMABLE_HTTP_MAX_LINE_BYTES=5242880

其他

Redis

Redis 为 LibreChat 提供了显著的性能提升,并实现了水平扩展能力。

注意: Redis 支持目前处于实验阶段,使用时可能会遇到一些问题。

重要提示: 如果使用 Redis,在更改任何 LibreChat 设置后,您应该清除缓存。

有关详细配置和示例,请参阅:Redis 配置指南

KeyTypeDescriptionExample
USE_REDISboolean启用 Redis 以进行缓存和会话存储。当设置为 true 时,必须提供 REDIS_URI。USE_REDIS=true
USE_REDIS_STREAMSboolean启用 Redis 以实现可恢复的 LLM 流。如果未设置,则默认为 USE_REDIS 的值。设置为 false 可将内存存储用于流。# USE_REDIS_STREAMS=true
REDIS_URIstringRedis 连接 URI。单实例格式:`redis://host:port`。集群格式:以逗号分隔的 URI。REDIS_URI=redis://127.0.0.1:6379
USE_REDIS_CLUSTERboolean在使用单个 URI 时启用 Redis 集群模式# USE_REDIS_CLUSTER="true"
REDIS_CLUSTER_SAFE_DELETEboolean逐个删除 Redis 缓存键,以避免在内部对键进行分片的单端点托管 Redis 服务上出现 CROSSSLOT 错误。# REDIS_CLUSTER_SAFE_DELETE=true
REDIS_USERNAMEstring用于身份验证的 Redis 用户名。如果同时提供了 URI 中的用户名,此项将覆盖它。# REDIS_USERNAME=your_redis_username
REDIS_PASSWORDstring用于身份验证的 Redis 密码。如果同时提供,此项将覆盖 URI 中的密码。# REDIS_PASSWORD=your_redis_password
REDIS_CAstring使用 rediss:// 协议时用于 TLS 验证的 CA 证书路径。# REDIS_CA=/path/to/ca-cert.pem
REDIS_KEY_PREFIXstring所有 Redis 键的静态前缀,用于防止跨部署污染。# REDIS_KEY_PREFIX=librechat-prod-v2
REDIS_KEY_PREFIX_VARstring包含动态前缀的环境变量名称(例如 Cloud Run 的 K_REVISION)。不能与 REDIS_KEY_PREFIX 同时使用。# REDIS_KEY_PREFIX_VAR=K_REVISION
REDIS_MAX_LISTENERSnumber每个 Redis 客户端的最大事件监听器数量。防止内存泄漏。默认值:40。# REDIS_MAX_LISTENERS=40
REDIS_PING_INTERVALnumber用于维持连接的 Ping 间隔(秒)。默认值:0(禁用)。仅在遇到超时问题时设置。# REDIS_PING_INTERVAL=300
FORCED_IN_MEMORY_CACHE_NAMESPACESstring以逗号分隔的缓存键,即使在启用 Redis 的情况下也会强制使用内存存储。# FORCED_IN_MEMORY_CACHE_NAMESPACES=ROLES,MESSAGES
REDIS_USE_ALTERNATIVE_DNS_LOOKUPboolean为 AWS Elasticache 的 TLS 连接启用备用 dnsLookup。对于启用 TLS 的 Elasticache 集群是必需的。# REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true

注意:

  • USE_REDIS=true 时,你必须提供 REDIS_URI,否则应用程序将抛出错误。
  • 对于 Redis Cluster 模式,请提供多个 URI:redis://node1:7001,redis://node2:7002,redis://node3:7003(集群模式会自动检测)。
  • For single-endpoint managed Redis services that shard keys internally, keep USE_REDIS_CLUSTER=false and set REDIS_CLUSTER_SAFE_DELETE=true if cache clears fail with CROSSSLOT errors.
  • 对于 TLS 连接,请使用 rediss:// 协议;如果您的 CA 不受公共信任,请设置 REDIS_CA
  • REDIS_KEY_PREFIX_VARREDIS_KEY_PREFIX 是互斥的。
  • AWS Elasticache 与 TLS:Elasticache 在使用 TLS 连接时可能需要使用替代的 dnsLookup。如果在使用带有 TLS 的 Elasticache,请设置 REDIS_USE_ALTERNATIVE_DNS_LOOKUP=true。更多详细信息,请参阅 ioredis documentation

领导者选举

为多实例部署配置基于 Redis 的分布式领导者选举。领导者选举可确保只有一个实例执行诸如定时任务之类的特定操作。

KeyTypeDescriptionExample
LEADER_LEASE_DURATIONnumber领导者租约在过期前有效的持续时间(以秒为单位)。默认值:25。LEADER_LEASE_DURATION=25
LEADER_RENEW_INTERVALnumber领导者续租的时间间隔(以秒为单位)。默认值:10。LEADER_RENEW_INTERVAL=10
LEADER_RENEW_ATTEMPTSnumber续约失败时的最大重试次数。默认值:3。LEADER_RENEW_ATTEMPTS=3
LEADER_RENEW_RETRY_DELAYnumber续租时重试尝试之间的延迟(秒)。默认值:0.5。LEADER_RENEW_RETRY_DELAY=0.5

注意:

  • 领导者选举需要启用 Redis (USE_REDIS=true)。
  • 这些设置仅适用于多实例部署。
  • 必须在过期前续订 leader lease 以维持领导地位。
  • 如果租约续期在达到最大尝试次数后失败,该实例将放弃领导权。

这篇指南怎么样?

本页内容

服务器配置端口Trust proxy凭据配置静态文件处理Index HTML 缓存控制MongoDB 数据库MongoDB 连接池配置MongoDB Schema 配置应用领域防止公共搜索引擎索引日志记录日志文件环境变量权限OpenTelemetry Tracing真实用户监控 (浏览器)配置路径 - librechat.yaml部署技巧配置验证未捕获异常处理Endpoints通用配置已知 endpoint - librechat.yaml网络搜索Anthropic通过 Vertex AI 使用 AnthropicAWS BedrockBingAIGoogleGemini 图像生成OpenAIAssistantsTavilyTraversaalWolframAlphaZapierOpenWeatherCode InterpreterArtifacts搜索 (Meilisearch)RAG API语音转文字与文字转语音共享链接用户系统内容审核基础审核设置封禁设置登录和注册速率限制每个违规项的评分消息速率限制(按用户和 IP)限制器IP 限制器:用户限制器:导入对话速率限制IP 限制器:用户限制器:会话分叉速率限制IP 限制器:用户限制器:文件上传速率限制IP 限制器:用户限制器:TTS (Text-to-Speech) 速率限制IP 限制器:用户限制器:STT (Speech-to-Text) 速率限制IP 限制器:用户限制器:余额管理余额注册与登录社交登录Apple 身份验证Discord 身份验证Facebook 身份验证GitHub 身份验证Google 身份验证OpenID ConnectOpenID Connect 令牌重用Microsoft Graph API / Entra ID 集成SharePoint 集成SAMLLDAP/AD 身份验证重置密码Mailgun 配置(推荐)SMTP 配置Firebase CDNAmazon S3 和 CloudFrontAzure Blob Storage CDNUI帮助与常见问题按钮应用标题与页脚生日帽分析Google Tag Manager会话导入内联文件预览MCP (Model Context Protocol)MCP Server Configuration其他Redis领导者选举