跳到主要内容

环境变量配置

概览

OPL 数据空间 提供了大量环境变量,用来定制应用的认证、模型路由、存储、日志、检索、扩展能力等行为。本页是这些变量的中文化高频总览,重点先覆盖部署时最常会碰到的入口、通用 区块和容易踩坑的 PersistentConfig 机制。

如果你只是在找某一个具体设置,优先用浏览器搜索;如果你在做部署变更,建议先从下面的分类导航开始,而不是从头到尾顺序阅读整页。

信息

本页当前优先覆盖高频配置路径与最常用变量,细分 provider / RAG / 存储 / observability 的全部条目会继续逐段补全。

快速导航

以下这些类别最适合先读:

  • 身份、注册与管理员初始化WEBUI_URLENABLE_SIGNUPWEBUI_ADMIN_EMAIL、OAuth / SCIM
  • 组织与混合作用域管理DEFAULT_ORGANIZATION_IDORGANIZATION_* 配置映射
  • 模型与 provider 连接:Ollama、OpenAI、direct connections、task models、图像 provider
  • RAG 与检索:内容提取、embedding、rerank、向量数据库
  • 存储与数据库DATABASE_URL、向量数据库、对象存储、Redis
  • 日志、审计与可观测性:audit logs、JSON logging、OpenTelemetry
兼容别名

本页会同时记录部分兼容别名与过时变量名。新部署应优先采用新的 canonical name;只有在维护老环境时,才建议继续使用 legacy alias。

关于 PersistentConfig

重要说明:PersistentConfig 环境变量

备注

首次启动 OPL 数据空间 时,所有环境变量都一样对待,都会参与配置应用。

但对于被标记为 PersistentConfig 的变量,它们的值会被持久化存进数据库。之后如果你重启容器,这些变量就不再优先读取外部环境变量,而是优先采用数据库里已经保存的值。

普通环境变量则会在每次重启时继续从外部环境中读取并生效。

如果你想关闭这套行为,强制 OPL 数据空间 总是以环境变量为准,请设:

ENABLE_PERSISTENT_CONFIG=False

重要警告:ENABLE_PERSISTENT_CONFIG=False 时,你在 Admin UI 中修改这些设置,看起来仍然会暂时生效,但重启后会丢失,因为系统会重新回到环境变量定义的值。

环境变量改了却看起来没生效

最常见原因就是:这个设置已经被数据库中的 PersistentConfig 覆盖了。

有四种处理方式:

方式 1:临时关闭 PersistentConfig

ENABLE_PERSISTENT_CONFIG=False

这样系统会强制从环境变量读取配置,但 UI 中修改不会持久化。

方式 2:直接在 Admin UI 中改(推荐)

对大多数场景,最安全的方式就是直接在 OPL 数据空间 的 管理员面板 里更新这些持久化配置。

方式 3:手改数据库(只在锁死或无法进入 UI 时使用)

docker exec -it open-webui sqlite3 /app/backend/data/webui.db "UPDATE config SET data = json_set(data, '$.ENABLE_SIGNUP', json('true'));"

方式 4:做真正的全新安装

  1. 停止容器
  2. 删除持久卷
  3. 重启容器
危险

删除卷会清空用户数据、聊天记录和账号。

组织感知管理配置

提示

启用了 组织 后,并不是所有管理员设置都还是“整个实例的一把总开关”。

  • 有些值仍然是实例级全局的
  • 有些值可以按当前选中的组织覆写
  • 有些组织级覆写可以委派给 organization admin,有些则只能由 global admin 控制

如果某个设置在一个租户里看起来正确,在另一个租户里却不对,先确认 Admin switcher 当前选中的组织,再结合 Admin Scope 一起分析。

App / Backend

下面这些变量主要来自 backend/open_webui/config.py,控制 OPL 数据空间 的启动行为。

通用

WEBUI_URL

  • 类型:str
  • 默认值:http://localhost:3000
  • 说明:定义你的 OPL 数据空间 可被外部访问的 URL。OAuth / SSO、搜索引擎支持等能力都依赖它。
  • 持久化:PersistentConfig
注意

在启用 OAuth / SSO 之前,必须先正确设置 WEBUI_URL

ENABLE_SIGNUP

  • 类型:bool
  • 默认值:True
  • 说明:控制是否允许注册新用户
  • 持久化:PersistentConfig

ENABLE_INITIAL_ADMIN_SIGNUP

  • 类型:bool
  • 默认值:False
  • 说明:旧式 first-admin bootstrap 开关。现在多数部署更推荐直接使用 WEBUI_ADMIN_EMAIL / WEBUI_ADMIN_PASSWORD

ENABLE_SIGNUP_PASSWORD_CONFIRMATION

  • 类型:bool
  • 默认值:False
  • 说明:如果设为 True,注册页会额外出现 “Confirm Password” 字段

WEBUI_ADMIN_EMAIL

  • 类型:str
  • 默认值:空
  • 说明:在数据库还没有任何用户时,用它自动创建管理员账号
信息

这个变量适合自动化 / 容器化部署,只会在满足以下条件时生效:

  • 数据库中还没有任何用户
  • 同时配置了 WEBUI_ADMIN_EMAILWEBUI_ADMIN_PASSWORD

WEBUI_ADMIN_PASSWORD

  • 类型:str
  • 默认值:空
  • 说明:与 WEBUI_ADMIN_EMAIL 配合使用,定义自动创建管理员时的密码
危险

生产环境请使用强密码,并优先通过 secrets manager 注入,不要把它硬编码进配置文件。

WEBUI_ADMIN_NAME

  • 类型:str
  • 默认值:Admin
  • 说明:自动创建管理员时使用的显示名

ENABLE_LOGIN_FORM

  • 类型:bool
  • 默认值:True
  • 说明:控制登录页中的邮箱、密码和登录表单元素是否显示
  • 持久化:PersistentConfig

ENABLE_PASSWORD_CHANGE_FORM

  • 类型:bool
  • 默认值:True
  • 说明:控制 设置 > Account 中是否显示密码修改 UI
  • 持久化:PersistentConfig

ENABLE_PASSWORD_AUTH

  • 类型:bool
  • 默认值:True
  • 说明:控制是否允许密码登录。当你已经稳定启用 SSO,并把实例暴露到公网时,通常应改为 False
提示

如果你是纯 SSO 登录环境,建议设为 False,避免密码登录入口成为额外攻击面。

危险

只有当 OAuth / SSO 已经真的启用时,才应该关闭密码认证。否则你会把自己彻底锁在系统外面。

DEFAULT_LOCALE

  • 类型:str
  • 默认值:en
  • 说明:设置应用默认语言
  • 持久化:PersistentConfig

DEFAULT_MODELS

  • 类型:str
  • 默认值:空
  • 说明:设置默认语言模型
  • 持久化:PersistentConfig

DEFAULT_PINNED_MODELS

  • 类型:str
  • 默认值:空
  • 说明:给新用户预先固定的模型列表,逗号分隔
  • 持久化:PersistentConfig

DEFAULT_MODEL_METADATA

  • 类型:dict(JSON)
  • 默认值:{}
  • 说明:给所有模型提供全局默认 metadata / capabilities 基线
  • 持久化:PersistentConfig

DEFAULT_MODEL_PARAMS

  • 类型:dict(JSON)
  • 默认值:{}
  • 说明:给所有模型提供默认推理参数,例如 temperature、top_p、max_tokens、function_calling
  • 持久化:PersistentConfig

DEFAULT_USER_ROLE

  • 类型:str
  • 可选值:pending / user / admin
  • 默认值:pending
  • 说明:定义新用户默认角色
  • 持久化:PersistentConfig

DEFAULT_ORGANIZATION_ID

  • 类型:str
  • 默认值:空字符串
  • 说明:定义注册、OAuth 注册或 SCIM 在没有显式组织上下文时所落到的默认组织
  • 持久化:PersistentConfig
信息

这在组织化部署里非常关键。修改它只会影响新用户将来落到哪里,不会改变已有用户当前所属组织。

DEFAULT_GROUP_ID

  • 类型:str
  • 默认值:空
  • 说明:新用户注册后自动分配的默认组 ID
  • 持久化:PersistentConfig

DEFAULT_GROUP_SHARE_PERMISSION

  • 类型:str
  • 可选值:members / true / false
  • 默认值:members
  • 说明:定义新建组默认“谁可以向这个组共享”

ENABLE_CALENDAR

  • 类型:bool
  • 默认值:True
  • 说明:是否启用日历
  • 持久化:PersistentConfig

ENABLE_CHANNELS

  • 类型:bool
  • 默认值:False
  • 说明:是否启用频道
  • 持久化:PersistentConfig

ENABLE_FOLDERS

  • 类型:bool
  • 默认值:True
  • 说明:是否启用聊天文件夹
  • 持久化:PersistentConfig

ENABLE_AUTOMATIONS

  • 类型:bool
  • 默认值:True
  • 说明:是否全局启用自动化
  • 持久化:PersistentConfig

ENABLE_NOTES

  • 类型:bool
  • 默认值:True
  • 说明:是否启用笔记
  • 持久化:PersistentConfig

ENABLE_MEMORIES

  • 类型:bool
  • 默认值:True
  • 说明:是否启用记忆
  • 持久化:PersistentConfig

ENABLE_ADMIN_EXPORT

  • 类型:bool
  • 默认值:True
  • 说明:控制管理员能否导出数据、聊天和数据库

ENABLE_ADMIN_CHAT_ACCESS

  • 类型:bool
  • 默认值:True
  • 说明:控制管理员能否直接查看其他用户聊天

ENABLE_ADMIN_ANALYTICS

  • 类型:bool
  • 默认值:True
  • 说明:控制 管理员面板 中是否显示分析

BYPASS_ADMIN_ACCESS_CONTROL

  • 类型:bool
  • 默认值:True
  • 说明:为 True 时,管理员默认可看见所有工作区资源;为 False 时,管理员也只会看见自己被显式授权的资源

ENV

  • 类型:str
  • 可选值:dev / prod
  • 说明:定义运行环境。dev 会开放 /docs,Docker 默认通常是 prod

ENABLE_PERSISTENT_CONFIG

  • 类型:bool
  • 默认值:True
  • 说明:控制系统是否优先读取数据库中的持久化配置

下一步建议

如果你当前的重点是:

后续我会继续把这份中文页往下扩展到:

  • 日志
  • Ollama / OpenAI / Tasks
  • 直连
  • 评测 / API Key 限制
  • 存储 / RAG / 可观测性

兼容锚点速查

下面这些小节先用于承接中文站点里已经存在的高频跳转。当前阶段它们提供的是中文定位入口和最小解释;对应的完整变量说明会继续补到本页正文。

API Key 与认证

CUSTOM_API_KEY_HEADER

用于定义替代 Authorization 的自定义 API Key 请求头名称。常见于前置代理已经占用 Authorization 头的部署。

WEBUI_SECRET_KEY

多副本和 OAuth 场景中的关键共享密钥。未统一配置时,常见症状是登录循环、401 和会话不一致。

ENABLE_OAUTH_TOKEN_EXCHANGE

是否启用 OAuth token exchange 端点,允许外部应用把 IdP token 换成 OPL 数据空间 JWT。

权限与功能开关

USER_PERMISSIONS_FEATURES_CALENDAR

控制普通用户是否拥有日历功能权限。

USER_PERMISSIONS_FEATURES_AUTOMATIONS

控制普通用户是否拥有 Automations 功能权限。

USER_PERMISSIONS_FEATURES_FOLDERS

控制普通用户是否拥有 Folders 功能权限。

USER_PERMISSIONS_FEATURES_MEMORIES

控制普通用户是否拥有 Memories 功能权限。

自动化与日历

CALENDAR_ALERT_LOOKAHEAD_MINUTES

定义日历提醒预判窗口,单位为分钟。

SCHEDULER_POLL_INTERVAL

调度器轮询周期,统一影响自动化和日历提醒。

AUTOMATION_MAX_COUNT

限制普通用户可创建的自动化数量上限。

AUTOMATION_MIN_INTERVAL

限制普通用户自动化任务允许的最短重复间隔。

Tasks 与自动生成

TASK_MODEL

定义用于标题、标签、自动补全、追问等辅助任务的模型。

TASK_MODEL_EXTERNAL

定义外部辅助任务模型,在某些部署里用于把任务模型与主推理模型解耦。

ENABLE_AUTOCOMPLETE_GENERATION

控制是否启用输入自动补全生成。

ENABLE_REALTIME_CHAT_SAVE

控制聊天是否以更实时的方式落库,性能排障中经常会检查这个值。

ENABLE_BASE_MODELS_CACHE

控制基础模型列表缓存。

MODELS_CACHE_TTL

模型缓存 TTL,常用于排查模型列表刷新延迟。

ENABLE_QUERIES_CACHE

控制查询缓存。性能排障和高频请求优化时可能需要一起检查。

存储、数据库与扩缩容

DATABASE_URL

主数据库连接串。扩缩容时,SQLite 通常应迁移到 PostgreSQL。

DATABASE_POOL_SIZE

数据库连接池大小,高并发环境中常需要配合实例数一起调优。

DATABASE_ENABLE_SESSION_SHARING

控制数据库层的 session sharing 行为,多副本排障时可能涉及。

VECTOR_DB

向量数据库类型。多 worker / 多副本部署中通常不应继续使用默认本地 ChromaDB。

PGVECTOR_DB_URL

PGVector 的数据库连接串。

MARIADB_VECTOR_DB_URL

MariaDB Vector 的数据库连接串。

CHROMA_HTTP_HOST

独立 Chroma HTTP 服务的主机地址。

CHROMA_HTTP_PORT

独立 Chroma HTTP 服务的端口。

WEBSOCKET_MANAGER

WebSocket 状态管理方式。多副本部署常见配置是 redis

ENABLE_WEBSOCKET_SUPPORT

是否启用 WebSocket 支持。

WEBSOCKET_REDIS_URL

当 WebSocket 通过 Redis 协调时使用的 Redis 地址。

CORS_ALLOW_ORIGIN

CORS 允许来源列表。反向代理和多域名排障时经常需要检查。

RAG 与内容处理

RAG_EMBEDDING_ENGINE

定义 embedding 引擎,例如 OpenAI、Ollama 等。

RAG_SYSTEM_CONTEXT

控制 RAG 拼装的系统上下文内容。

RAG_EMBEDDING_TIMEOUT

embedding 请求超时时间。

RAG_EMBEDDING_CONCURRENT_REQUESTS

embedding 并发请求数。

RAG_EMBEDDING_BATCH_SIZE

embedding 批大小。

ENABLE_ASYNC_EMBEDDING

是否启用异步 embedding。

CONTENT_EXTRACTION_ENGINE

定义文档内容提取引擎,例如 tikadocling 等。

FOLDER_MAX_FILE_COUNT

定义每个 folder 允许处理的文件数上限。

音频与图像

音频

音频相关设置总入口,包含 STT / TTS 与音频调用流程。

AUDIO_STT_ENGINE

定义语音转文本引擎。

BYPASS_PYDUB_PREPROCESSING

是否绕过 pydub 预处理。音频排障时常见。

ENABLE_IMAGE_GENERATION

是否启用图像生成能力。

网页搜索

网页搜索相关配置总入口,包含 provider、代理与网络行为。

WEB_SEARCH_TRUST_ENV

控制网页搜索请求是否信任环境中的代理等网络配置。

网络与超时

AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST

模型列表拉取超时,模型连接故障时常被引用。

CHAT_RESPONSE_STREAM_DELTA_CHUNK_SIZE

流式输出 chunk 大小,性能与流式体验排障常见变量。

THREAD_POOL_SIZE

FastAPI / AnyIO 的线程池大小,大实例上经常需要显著调高。

插件与开发

WEBSOCKET_EVENT_CALLER_TIMEOUT

插件、工具开发与事件总线相关超时设置。

ENABLE_PIP_INSTALL_FRONTMATTER_REQUIREMENTS

是否允许根据 frontmatter requirement 自动安装 pip 依赖。插件开发文档常引用它。