环境变量配置
概述
Open WebUI 提供了大量的环境变量,允许您自定义和配置应用程序的各个方面。本页面将作为所有可用环境变量的完整参考,提供它们的类型、默认值以及详细描述。 随着新变量的引入,本页面将持续更新以反映不断增加的配置选项。
本页面内容与 Open WebUI 发布版本 v0.9.5 保持同步,但我们仍在持续完善中,后续将补充更准确的描述、环境变量的可用选项列表、默认值以及改进相关说明。
关于 PersistentConfig 环境变量的重要说明
首次启动 Open WebUI 时,所有的环境变量都会被一视同仁地用于配置应用程序。然而,对于被标记为 PersistentConfig 的环境变量,它们的值将被持久化并存储在系统内部(数据库中)。
在首次启动之后,如果您重启容器,被标记为 PersistentConfig 的环境变量将不再读取外部环境变量的值。相反,它们将优先使用系统内部存储的值。
与此相反,普通的非持久化环境变量在每次后续重启时仍会继续更新并应用。
您可以直接在 Open WebUI 内部更新这些 PersistentConfig 环境变量的值,这些更改将被存储在内部。这允许您独立于外部环境变量来管理这些配置设置。
请注意,我们在下面的文档中清晰地标记了哪些是 PersistentConfig 环境变量,以便您了解它们的行为方式。
要禁用此行为并强制 Open WebUI 始终使用您的环境变量(忽略数据库中的配置),请将 ENABLE_PERSISTENT_CONFIG 设置为 False。
关键警告: 当 ENABLE_PERSISTENT_CONFIG 为 False 时,您可能仍能在管理员 UI 中编辑设置。但是,这些修改不会永久保存。它们仅在当前会话中生效,并在您重启容器时丢失,因为系统在启动时会回滚到您环境变量中定义的值。
排除忽略环境变量的故障 🛠️
如果您更改了环境变量(例如 ENABLE_SIGNUP=True)但在 UI 中没有看到更改生效(例如,注册按钮仍然缺失),这很可能是因为之前的运行或持久化的 Docker 卷已经将该值保存在数据库中。
方法 1:使用 ENABLE_PERSISTENT_CONFIG(临时修复)
在您的环境中设置 ENABLE_PERSISTENT_CONFIG=False。这会强制 Open WebUI 直接读取您的环境变量。请注意,在此模式下,通过 UI 进行的设置修改将无法在重启后保留。
方法 2:通过管理员 UI 更新(推荐)
修改 PersistentConfig 设置最简单、最安全的方法是直接通过 Open WebUI 内部的管理员面板进行。即使设置了环境变量,在 UI 中所做的更改也会优先保存到数据库中。
方法 3:手动更新数据库(仅作为无奈之举 / 锁定恢复)
如果您被系统锁定或无法访问 UI,可以通过 Docker 手动更新 SQLite 数据库:
docker exec -it open-webui sqlite3 /app/backend/data/webui.db "UPDATE config SET data = json_set(data, '$.ENABLE_SIGNUP', json('true'));"(请将 ENABLE_SIGNUP 和 true 替换为您需要修改的具体设置和值。)
方法 4:重置以进行全新安装
如果您正在进行全新安装,并希望确保所有环境变量都从零开始生效:
- 停止容器。
- 删除持久化卷:
docker volume rm open-webui。 - 重启容器。
警告: 删除持久化卷会删除所有用户数据,包括聊天记录和账号信息。
App/Backend
以下环境变量由 backend/open_webui/config.py 使用,以提供 Open WebUI 启动配置。请注意,某些变量的默认值可能会有所不同,这取决于您是直接运行 Open WebUI 还是通过 Docker 运行。有关日志环境变量的更多信息,请参阅我们的日志文档。
常规
WEBUI_URL
- 类型:
str - 默认值:
http://localhost:3000 - 描述: 指定可访问您 Open WebUI 实例的 URL。这对于搜索引擎支持和 OAuth/SSO 是必需的。
- 持久化: 此环境变量是
PersistentConfig变量。
在开始使用 OAuth/SSO 进行身份验证之前,必须先设置好此变量。 由于这是一个持久化配置环境变量,您只能通过以下方式之一来更改它:
- 通过使用
ENABLE_PERSISTENT_CONFIG临时禁用持久化配置 - 在管理员面板 > 设置中更改 "WebUI URL"。
未能在使用 OAuth/SSO 前设置 WEBUI_URL 将导致登录失败。
ENABLE_SIGNUP
- 类型:
bool - 默认值:
True - 描述: 开启或关闭用户账号创建。
- 持久化: 此环境变量是
PersistentConfig变量。
ENABLE_SIGNUP_PASSWORD_CONFIRMATION
- 类型:
bool - 默认值:
False - 描述: 如果设置为 True,注册页面将增加一个“确认密码”输入框,以帮助用户避免在创建密码时输入错别字。
WEBUI_ADMIN_EMAIL
- 类型:
str - 默认值: 空字符串 (' ')
- 描述: 指定在首次启动且数据库中不存在任何用户时自动创建的管理员账号的电子邮箱地址。这使得无头部署/自动化部署无需手动创建账号。当与
WEBUI_ADMIN_PASSWORD配合使用时,管理员账号会在应用程序启动期间创建,且ENABLE_SIGNUP会自动被禁用以防止未经授权的账号创建。
此变量专为手动创建管理员账号不切实际的自动化/容器化部署而设计。管理员账号仅在满足以下条件时创建:
- 数据库中不存在任何用户(全新安装)
- 同时配置了
WEBUI_ADMIN_EMAIL和WEBUI_ADMIN_PASSWORD
管理员账号创建后,出于安全考虑,系统会自动禁用注册功能。如果需要,您稍后可以通过管理员面板重新启用它。
WEBUI_ADMIN_PASSWORD
- 类型:
str - 默认值: 空字符串 (' ')
- 描述: 指定在首次启动且不存在任何用户时自动创建的管理员账号的密码。必须与
WEBUI_ADMIN_EMAIL配合使用。在保存到数据库之前,密码会使用与手动创建账号相同的机制进行安全哈希处理。
安全注意事项
- 在生产环境部署中,请使用强且独特的密码
- 考虑使用凭据管理工具(Docker secrets、Kubernetes secrets、环境变量注入),而不是直接在明文配置文件中存储密码
- 初始设置完成后,通过 UI 修改管理员密码以增强安全性
- 严禁将此值提交到版本控制系统中
WEBUI_ADMIN_NAME
- 类型:
str - 默认值:
Admin - 描述: 指定自动创建的管理员账号的显示名称。当配置了
WEBUI_ADMIN_EMAIL和WEBUI_ADMIN_PASSWORD进行无头管理员创建时使用此名称。
ENABLE_LOGIN_FORM
- 类型:
bool - 默认值:
True - 描述: 开启或关闭电子邮箱、密码、登录按钮以及“或”分隔符元素(仅在
ENABLE_OAUTH_SIGNUP设置为 True 时)。 - 持久化: 此环境变量是
PersistentConfig变量。
ENABLE_PASSWORD_CHANGE_FORM
- 类型:
bool - 默认值:
True - 描述: 控制设置 > 账户中修改密码 UI 的可见性。当设置为
False时,用户将看不到密码更新表单,这对于以 SSO 为主的部署非常有用,因为在此类部署中不需要在 UI 中展示修改密码功能。 - 持久化: 此环境变量是
PersistentConfig变量。
ENABLE_PASSWORD_AUTH
- 类型:
bool - 默认值:
True - 描述: 当设置为 True 时,允许密码登录和 SSO 身份验证方法共存。当设置为 False 时,它将禁用在
/signin和/ldap端点上的所有基于密码的登录尝试,从而强制实行严格的仅限 SSO 身份验证。在完全配置了 SSO 的生产环境中禁用此设置,可以防止基于凭据的账户夺取攻击;如果您需要将密码身份验证作为备用方案,或者尚未完成 SSO 配置,请保持启用。如果未使用 OAUTH/SSO,则绝不应该禁用此项。此设置控制后端身份验证行为,而ENABLE_PASSWORD_CHANGE_FORM控制密码修改控件的 UI 可见性。
如果您仅使用 SSO/OAUTH 进行登录,并且将 Open WebUI 公开暴露在公网上,则应该将此值设置为 False,以防止基于密码的登录。
此变量仅在同时使用 ENABLE_OAUTH_SIGNUP 且设置为 True 时,才能被设置为 False。如果未使用 OAUTH/SSO,绝不要禁用此项。 否则将导致 无法登录系统。
DEFAULT_LOCALE
- 类型:
str - 默认值:
en - 描述: 设置应用程序的默认语言区域。
- 持久化: 此环境变量是
PersistentConfig变量。
DEFAULT_MODELS
- 类型:
str - 默认值: 空字符串 (' '),因为默认为
None。 - 描述: 设置默认的语言模型(Language Model)。
- 持久化: 此环境变量是
PersistentConfig变量。
DEFAULT_PINNED_MODELS
- 类型:
str - 默认值: 空字符串 (' ')
- 描述: 以逗号分隔的模型 ID 列表,用于为尚未自定义置顶模型的新用户默认置顶这些模型。这可以为新账户的模型选择器中提供一组预先选好的常用模型。
- 示例:
gpt-4,claude-3-opus,llama-3-70b - 持久化: 此环境变量是
PersistentConfig变量。
DEFAULT_MODEL_METADATA
- 类型:
dict(JSON 对象) - 默认值:
{} - 描述: 为所有模型设置全局默认元数据(模型能力和其他模型信息)。这些默认值充当基线——单模型覆盖设置将始终优先。对于能力(capabilities),默认值和单模型值将合并(发生冲突时以单模型设置为准)。对于其他元数据字段,仅在模型未设置值时才应用默认值。可通过管理员设置 → 模型进行配置。
- 持久化: 此环境变量是
PersistentConfig变量。存储在配置键models.default_metadata中。
DEFAULT_MODEL_METADATA 在启动时作为 JSON 字符串从环境中读取。
- 请使用有效的 JSON(例如:
{"capabilities":{"vision":true,"web_search":true}}) - 如果解析失败,Open WebUI 会记录错误并回退到
{} - 解析后的值即使在禁用持久化配置时也会应用,因此在启动时会遵守配置的默认值。
DEFAULT_MODEL_PARAMS
- 类型:
dict(JSON 对象) - 默认值:
{} - 描述: 为所有模型设置全局默认参数(temperature, top_p, max_tokens, seed 等)。这些默认值在生成对话回复时作为基线应用——单模型参数覆盖设置将始终优先。可通过管理员设置 → 模型进行配置。
- 持久化: 此环境变量是
PersistentConfig变量。存储在配置键models.default_params中。
DEFAULT_MODEL_PARAMS 在启动时作为 JSON 字符串从环境中读取。
- 请使用有效的 JSON(例如:
{"temperature":0.7,"function_calling":"native"}) - 如果解析失败,Open WebUI 会记录错误并回退到
{}
DEFAULT_USER_ROLE
- 类型:
str - 可用选项:
pending- 新注册的用户处于待处理状态,直到管理员手动激活他们的账号。user- 新注册的用户会自动激活,并获得普通用户权限。admin- 新注册的用户会自动激活,并获 得管理员权限。
- 默认值:
pending - 描述: 设置分配给新用户的默认角色。
- 持久化: 此环境变量是
PersistentConfig变量。
DEFAULT_GROUP_ID
- 类型:
str - 默认值: 空字符串 (' ')
- 描述: 设置新用户注册时默认分配的组 ID。
- 持久化: 此环境变量是
PersistentConfig变量。
DEFAULT_GROUP_SHARE_PERMISSION
- 类型:
str - 可用选项:
members,true,false - 默认值:
members - 描述: 控制新创建的组的默认“谁可以共享到此组”设置。
members意味着只有组成员可以共享到该组,true意味着任何人都可以共享,false意味着没有人可以共享到该组。这既适用于手动创建的组,也适用于自动创建的组(例如通过 SCIM 或 OAuth 组同步)。已存在的组不受影响——这只为新组设置初始默认值。
PENDING_USER_OVERLAY_TITLE
- 类型:
str - 默认值: 空字符串 (' ')
- 描述: 为待处理用户遮罩层(Overlay)设置自定义标题。
- 持久化: 此环境变量是
PersistentConfig变量。
PENDING_USER_OVERLAY_CONTENT
- 类型:
str - 默认值: 空字符串 (' ')
- 描述: 为待处理用户遮罩层(Overlay)设置自定义文本内容。
- 持久化: 此环境变量是
PersistentConfig变量。
ENABLE_CALENDAR
- 类型:
bool - 默认值:
True - 描述: 启用或禁用日历功能。启用后,用户可以创建日历、管理事件,并通过访问授权与其他用户或组共享日历。处于活动状态的自动化任务将作为虚拟事件自动呈现在专用的“已调度任务”日历上。需要
features.calendar用户权限(管理员始终自动通过)。 - 持久化: 此环境变量是
PersistentConfig变量。
ENABLE_CHANNELS
- 类型:
bool - 默认值:
False - 描述: 启用或禁用频道(Channels)支持。
- 持久化: 此环境变量是
PersistentConfig变量。
ENABLE_FOLDERS
- 类型:
bool - 默认值:
True - 描述: 启用或禁用文件夹功能,允许用户在侧边栏中将他们的聊天整理到文件夹中。
- 持久化: 此环境变量是
PersistentConfig变量。
FOLDER_MAX_FILE_COUNT
- 类型:
int - 默认值:
("") 空字符串 - 描述: 设置每个文件夹允许处理的最大文件数。
- 持久化: 此环境变量是
PersistentConfig变量。可以在管理员面板 > 设置 > 常规 > 文件夹最大文件数中进行配置。默认无限制(空字符串)。
ENABLE_AUTOMATIONS
- 类型:
bool - 默认值:
True - 描述: 在全局启用或禁用自动化(Automations)功能。禁用后,调度器会跳过自动化任务的处理,自动化 API 端点将返回
403 Forbidden,自动化内置工具将不会被注入,侧边栏中的自动化入口也会隐藏。需要features.automations用户权限(管理员始终自动通过)。 - 持久化: 此环境变量是
PersistentConfig变量。
AUTOMATION_MAX_COUNT
- 类型:
int - 默认值:
("") 空字符串(无限制) - 描述: 设置非管理员用户可以创建的最大自动化数量。当设置为正整数时,达到此限制的用户在尝试创建更多自动化时将收到
403 Forbidden错误。管理员不受此限制约束。 - 持久化: 此环境变量是
PersistentConfig变量。
AUTOMATION_MIN_INTERVAL
- 类型:
int(秒) - 默认值:
("") 空字符串(无最小间隔) - 描述: 设置非管理员用户自动化循环执行的最小允许间隔(秒)。设置后,任何执行频率高于此值的自动化日程都将被拒绝,并返回
400 Bad Request错误。单次执行的自动化(COUNT=1)免受此检查限制。管理员不受此限制约束。 - 持久化: 此环境变量是
PersistentConfig变量。
| 值 | 含义 |
|---|---|
60 | 每次运行之间至少间隔 1 分钟 |
300 | 每次运行之间至少间隔 5 分钟 |
900 | 每次运行之间至少间隔 15 分钟 |
3600 | 每次运行之间至少间隔 1 小时 |
SCHEDULER_POLL_INTERVAL
- 类型:
int(秒) - 默认值:
10 - 描述: 设置调度器 Tick 之间的间隔(秒)。统一调度器同时处理自动化执行和日历事件提醒。接受
AUTOMATION_POLL_INTERVAL作为历史遗留的备用项。
CALENDAR_ALERT_LOOKAHEAD_MINUTES
- 类型:
int(分钟) - 默认值:
10 - 描述: 日历事件提醒的默认提前看(Lookahead)窗口(分钟)。在当前时间起此窗口内开始的事件将触发 Toast 提示和 Webhook 通知。单个事件可以在事件编辑器的**提醒(Reminder)**设置中覆盖此值(
meta.alert_minutes)。
ENABLE_NOTES
- 类型:
bool - 默认值:
True - 描述: 启用或禁用笔记(Notes)功能,允许用户在 Open WebUI 内部创建和管理个人笔记。
- 持久化: 此环境变量是
PersistentConfig变量。
ENABLE_MEMORIES
- 类型:
bool - 默认值:
True - 描述: 启用或禁用记忆功能,允许模型存储和检索关于用户的长期信息。
- 持久化: 此环境变量是
PersistentConfig变量。
WEBHOOK_URL
- 类型:
str - 描述: 设置用于与 Discord/Slack/Microsoft Teams 集成的 Webhook。
- 持久化: 此环境变量是
PersistentConfig变 量.
本节中的 ENABLE_ADMIN_* 和 BYPASS_ADMIN_ACCESS_CONTROL 切换控件用于控制管理员通过 Open WebUI 的管理员产品界面(管理员面板页面、聊天模型选择器、工作区列表、导出操作)能看到和做什么。它们并不构成针对管理员本身的安全边界。
Open WebUI 在架构上是单租户的,根据深思熟虑的设计,admin 角色在部署中等同于 Root 权限。管理员本身保留了对所有数据的无约束访问权,包括直接访问数据库、检查环境变量、访问服务器、运行仅限管理员的 Functions(在应用程序进程内模块导入时执行任意 Python 代码),以及拥有 workspace.tools 权限的 Tools(管理员可以将其授权给自己,并在服务器上运行 exec())。
这些切换控件适用于:
- 性能 —— 在拥有大量多用户的大型部署中,保持管理员界面的列表/选择器加载速度,因为加载每个用户的所有项目是一个严峻的性能难题。
- 减少 UI 杂乱 —— 当存在来自其他用户的数千个项目时,保持这些界面的可用性。
- 合规态势 —— 满足(特别是在劳动保护法更严格的司法管辖区,例如 德国 / 奥地利 / 欧盟)不让管理员随手就看到其他用户数据的合规要求,即使他们技术上仍能通过上述途径获取这些数据。
这些切换控件不适用于:
- 管理员之间的跨租户数据隔离。在底层数据存储中,不存在加密的单租户隔离,没有多数据库拆分,也没有单管理员的作用域限制。对于真正的租户分离,支持的模式是为每个租户运行独立的 Open WebUI 实例。
- 针对铁了心要读取其在 UI 界面中被隐藏的数据的管理员的安全边界。
请将这一组变量视为管理员在产品 UI 和 API 中能看到什么和能做什么,而不是管理员在技术上可以访问到什么部署资源。
ENABLE_ADMIN_EXPORT
- 类型:
bool - 默认值:
True - 描述: 控制管理员面板中的**导出(Export)**操作是否可用(包括数据、聊天和数据库导出)。禁用时,导出 API 端点会拒绝请求。数据库导出目前仅支持 SQLite 数据库。请注意,管理员仍保留通过部署端直接导出数据库的底层能力——此开关控制产品内的导出界面,参见上面的“管理员姿态切换”说明。需要重启才能生效。
ENABLE_ADMIN_CHAT_ACCESS
- 类型:
bool - 默认值:
True - 描述: 控制管理员面板中的**其他用户聊天(other-users-chats)**访问界面是否可用。禁用后,管理员无法再在管理员面板中访问其他用户的聊天记录,且相应的 API 端点会拒绝请求。如果您禁用此项,请考虑同时禁用
ENABLE_ADMIN_EXPORT(特别是在 SQLite 上),因为导出数据包含用户聊天,且会在不同的界面重新暴露相同的数据。请注意,无论如何,管理员都保留着底层数据库访问权限——此开关控制产品内的界面,参见上面的“管理员姿态切换”说明。
ENABLE_ADMIN_ANALYTICS
- 类型:
bool - 默认值:
True - 描述: 控制管理员面板中的**分析(Analytics)**选项卡是否可见,以及分析 API 路由是否挂载。当设置为
False时,该选项卡将被隐藏,且相应的 API 端点不会注册。禁用此项不会停止底层数据的收集,且管理员仍保留直接从数据库查询这些数据的能力——此开关控制产品内的界面,参见上面的“管理员姿态切换”说明。需要重启才能生效。
BYPASS_ADMIN_ACCESS_CONTROL
-
类型:
bool -
默认值:
True -
描述: 控制管理员用户是否能在列表和选择器 UI 界面中看到其他用户的工作区项目(模型 / 知识库 / 提示词 / 工具 / 笔记 / 技能的工作区选项卡、聊天模型选择器、文件浏览器列表等)。当设置为
True(默认值)时,这些界面会显示每个用户的每一个项目——这在单管理员 / 小团队部署中非常方便。当设置为False时,这些界面将仅显示管理员自己的项目以及明确共享给他们的项目,与普通用户看到的界面一致。基于 ID 的直接访问 API 端点(
GET /api/v1/<resource>/id/{id}以及对应的更新/删除/访问更新路由)故意不受此标志限制,并且设计之初也从未打算受其限制——限制它们对于防止管理员通过数据库查询直接获取资源 ID 毫无用处,同时还会破坏管理员操作已知项目 ID 的合法流程。有关完整的架构原理解释,请参阅上面的“管理员姿态切换”说明。此环境变量废弃了
ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS。如果您仍在使用ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS,请切换到BYPASS_ADMIN_ACCESS_CONTROL。
ENABLE_USER_WEBHOOKS
- 类型:
bool - 默认值:
False - 描述: 启用或禁用用户 Webhooks。
- 持久化: 此环境变量是
PersistentConfig变量。
RESPONSE_WATERMARK
- 类型:
str - 默认值: 空字符串 (' ')
- 描述: 设置在聊天中复制消息时包含的自定义水印文本。例如:
"This text is AI generated"-> 当复制任何消息时,都会在该消息中附加“This text is AI generated”。 - 持久化: 此环境变量是
PersistentConfig变量。
IFRAME_CSP
- 类型:
str - 默认值: 空字符串(不注入 CSP)
- 描述: 对 UI 中渲染的所有
srcdociframe(包括 Artifacts、代码/HTML 预览、文件预览和引用弹窗)应用内容安全策略(Content-Security-Policy)。设置后,将在 iframe 文档顶部注入<meta http-equiv="Content-Security-Policy">标签,限制由 LLM 生成或用户上传的 HTML 能够加载和执行的内容(网络连接、脚本、样式、字体、iframe)。iframe 上的sandbox属性仍提供基线隔离;此 CSP 是针对需要约束已渲染 HTML 的出站网络请求的部署提供的额外深度防御层。示例值:default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:; connect-src 'none'。留空以保持现有行为(仅限沙箱)。
THREAD_POOL_SIZE
- 类型:
int - 默认值:
0 - 描述: 设置 FastAPI/AnyIO 阻塞调用的线程池大小。默认情况下(设置为
0时),FastAPI/AnyIO 使用40个线程。对于大型实例和大量并发用户,可能需要增加THREAD_POOL_SIZE以防止发生阻塞。
如果您正在运行大型实例,您将需要将此值设置为更高的值,例如几百甚至上千(如 1000),否则当默认的线程池(40 个线程)占满时,您的应用程序可能会卡死并且不再响应。
ENABLE_CUSTOM_MODEL_FALLBACK
- 类型:
bool - 默认值:
False - 描述: 控制当自定义模型的指定基础模型缺失时,是否应该退回到默认模型。设置为
True时,如果找不到自定义模型的基础模型,系统将使用配置的DEFAULT_MODELS列表中的第一个模型,而不是返回错误。
SHOW_ADMIN_DETAILS
- 类型:
bool - 默认值:
True - 描述: 切换是否在界面中展示管理员用户详情。
- 持久化: 此环境变量是
PersistentConfig变量。
ENABLE_PUBLIC_ACTIVE_USERS_COUNT
- 类型:
bool - 默认值:
True - 描述: 控制活跃用户数是向所有用户可见,还是仅限于管理员可见。当设置为
False时,只有管理员用户可以看到当前有多少用户在线,这可以减轻后端负载,并解决大型部署中的隐私担忧。 - 持久化: 此环境变量是
PersistentConfig变量。
ENABLE_USER_STATUS
- 类型:
bool - 默认值:
True - 描述: 在全局启用或禁用用户状态功能。禁用后,整个应用程序中的状态 UI(包括闪烁的在线/离开指示器和状态消息)将被隐藏,且用户状态 API 端点将受到限制。
- 持久化: 此环境变量是
PersistentConfig变量。可以在管理员面板 > 设置 > 常规 > 用户状态中进行切换。
ENABLE_EASTER_EGGS
- 类型:
bool - 默认值:
True - 描述: 启用或禁用 UI 中的彩蛋功能,例如特殊主题(例如主题选择器中的“Her”主题选项)。设置为
False可以对用户隐藏这些可选的趣味功能。
ADMIN_EMAIL
- 类型:
str - 描述: 设置由
SHOW_ADMIN_DETAILS显示的管理员邮箱。 - 持久化: 此环境变量是
PersistentConfig变量。
ENV
- 类型:
str - 可用选项:
dev- 在/docs上启用 FastAPI 的 API 文档。prod- 自动配置多个环境变量。
- 默认值:
- 后端默认值:
dev - Docker 默认值:
prod
- 后端默认值:
- 描述: 环境设置。
ENABLE_PERSISTENT_CONFIG
- 类型:
bool - 默认值:
True - 描述: 控制系统是否优先使用数据库中保存的配置,而不是环境变量。
True(默认): 保存到数据库中(通过管理员 UI)的值优先。如果在 UI 中设置了某个值,外部的环境变量将被忽略。False: 环境变量优先。如果存在环境变量,系统在启动时将不会从数据库加载配置(或者它将使用默认值)。- 关键警告: 当设置为
False时,您在管理员 UI 中仍能看似成功地“更改”设置。这些更改将应用到当前运行的会话,但会在重启后丢失。每次启动时,系统都会恢复为您的环境变量中定义的值(或默认值)。 - 使用场景: 如果您希望严格通过
docker-compose.yaml或.env文件来管理配置,并防止 UI 更改在重启后保留,请将此项设置为False。
- 关键警告: 当设置为
CUSTOM_NAME
- 类型:
str - 描述: 设置
WEBUI_NAME,但同时会向 api.openwebui.com 轮询元数据。
WEBUI_NAME
- 类型:
str - 默认值:
Open WebUI - 描述: 设置 WebUI 的主名称。如果被覆盖,则会附加
(Open WebUI)。
PORT
- 类型:
int - 默认值:
8080 - 描述: 设置运行 Open WebUI 的端口。
如果您是通过 Python 运行应用程序并使用 open-webui serve 命令,您无法使用 PORT 配置来设置端口。相反,您必须直接通过命令行参数并使用 --port 标志来指定它。例如:
open-webui serve --port 9999这将在端口 9999 上运行 Open WebUI。在此模式下,PORT 环境变量将被忽略。
ENABLE_REALTIME_CHAT_SAVE
- 类型:
bool - 默认值:
False - 描述: 启用后,系统会实时将流式传输的每一块聊天数据保存到数据库中。
强烈建议绝不要在生产或多用户环境中启用此设置。
启用 ENABLE_REALTIME_CHAT_SAVE 会导致 LLM 生成的每一个 Token 都触发一次独立的数据库写入操作。在多用户环境中,这将:
- 耗尽数据库连接池:高频的写入会迅速消耗所有可用的数据库连接,导致“QueuePool limit reached”错误和全局应用程序卡死。
- 严重的性能影响:每分钟数千次数据库事务的开销将对所有用户造成巨大的延迟。
- 硬件损耗:会对您的存储系统产生巨大的 I/O 压力。
请保持设置为 False(默认值)。 聊天记录在生成完成后仍会自动保存。此设置仅适用于极端的调试场景或单用户环境,即对于此环境来说,微秒级的 Token 持久化比系统的稳定性更为重要。
ENABLE_CHAT_RESPONSE_BASE64_IMAGE_URL_CONVERSION
- 类型:
bool - 默认值:
False - 描述: 设置为 True 时,它会自动上传 Markdown 中超过 1KB 的 Base64 编码图片,并将其转换为图片文件 URL,以减小响应文本的体积。某些多模态模型会直接在 Markdown 内容中输出 Base64 字符串形式的图片。这会导致响应体过大,给 CPU、网络、Redis 以及数据库资源带来负担。
ENABLE_IMAGE_CONTENT_TYPE_EXTENSION_FALLBACK
- 类型:
bool - 默认值:
False - 描述: 启用后,当系统 MIME 数据库和文件存储的 Content-Type 元数据都无法确定图片的 Content-Type 时,系统将使用硬编码的“扩展名-Mime”字典作为最终的备用机制。这主要适用于缺少
/etc/mime.types的极简容器镜像(例如 wolfi-base)以及未存储 Content-Type 元数据的历史遗留文件。支持的扩展名包括.webp,.png,.jpg,.jpeg,.gif,.svg,.bmp,.tiff,.ico,.heic,.heif和.avif。
ENABLE_PROFILE_IMAGE_URL_FORWARDING
- 类型:
bool - 默认值:
True - 描述: 控制用户和模型的头像端点是否通过发出
302 Found重定向到原始源,来响应存储在profile_image_url中的外部http(s)://URL。为False时,重定向将被抑制,端点将改为回退到内置的默认图片。设置为False可以防止由于攻击者存储的头像 URL,导致客户端 IP、User-Agent 和 Referer 泄漏到攻击者控制的源中(Data URI 和同源/静态图片仍会正常加载)。合理依赖外部头像 URL 的现有部署(例如由上游身份提供商提供的 Gravatar 重定向)应该保持默认值。此变量在启动时仅读取一次——它不是PersistentConfig,无法从管理员 UI 更改。
PROFILE_IMAGE_ALLOWED_MIME_TYPES
- 类型:
str(以逗号分隔的 MIME 类型) - 默认值:
image/png,image/jpeg,image/gif,image/webp - 描述: 允许在提供 Base64
data:URI 作为头像时被接受的 MIME 类型白名单。MIME 类型会在流式传输响应之前,从 Data URI 前缀中解析出来并在此列表中进行检查;非白名单中的类型将退回到内置的默认图片。响应还会设置X-Content-Type-Options: nosniff,以防止浏览器将响应体嗅探为可执行类型。SVG 故意不在默认列表中,因为它可以携带内联的<script>。同样的白名单还驱动着 Pydantic 的 Data URI 前缀验证器,因此在此处添加一个类型,既会在读取路径上提供它,也会在写入路径上接受它。此变量在启动时仅读取一次——它不是PersistentConfig,无法从管理员 UI 更改。
CHAT_RESPONSE_STREAM_DELTA_CHUNK_SIZE
- 类型:
int - 默认值:
1 - 描述: 设置系统级的流式传输响应中,每次发送给客户端之前积攒的最小 Token 数量。这允许管理员通过防止过小的块尺寸导致的高 CPU 负载,来强制确保整个系统的基线性能和稳定性。用于响应的最终块大小将是此全局变量、模型的高级参数或单次对话设置中设置的最高值。默认值为 1,表示在全局级别不应用最小批处理。
CHAT_STREAM_RESPONSE_CHUNK_MAX_BUFFER_SIZE
- 类型:
int - 默认值: 空字符串 (' '),即禁用此限制(等同于 None)
- 描述: 设置处理流式响应块时的最大缓冲区字节数。当单个响应块超过此限制时,系统会返回一个空的 JSON 对象,并跳过后续超大的数据,直到遇到大小正常的响应块。这可以防止处理来自某些服务商的极大型响应时的内存问题(例如 gemini-2.5-flash-image 模型或返回大量网页搜索数据的服务)。设置为空字符串或负值以完全禁用响应块大小限制。根据图片生成模型的图片大小,推荐值为 16-20 MB(
16777216)或更大(4K 图片可能需要更多)。
如果您在运行高并发、多用户以及使用极快流式传输模型的 Open WebUI 时,建议将此值设置为较高的一位数或较低的两位数值。
ENABLE_RESPONSES_API_STATEFUL
- 类型:
bool - 默认值:
False - 描述: 通过将
previous_response_id转发到上游端点,为 Responses API 启用有状态的会话处理。启用后,Open WebUI 将每个响应锚定到前一个响应上,允许上游服务商在服务器端维护对话状态。
仅在您的上游 Responses API 端点支持有状态会话时才启用此功能(即支持带 previous_response_id 锚定的服务器端响应存储)。大多数代理和第三方端点是无状态的,如果启用此功能将会出错。此功能旨在用于直接连接到原生支持带会话状态的 Responses API 的服务商(如 OpenAI)。
BYPASS_MODEL_ACCESS_CONTROL
- 类型:
bool - 默认值:
False - 描述: 绕过模型访问控制。当设置为
true时,所有用户(以及管理员)都将能够访问所有模型,而不管模型的隐私设置如何(私有、公开、与某些组共享)。这对于较小的或个人 Open WebUI 安装非常有用,因为在此类安装中可能不需要模型访问限制。
WEBUI_BUILD_HASH
- 类型:
str - 默认值:
dev-build - 描述: 用于在发布版本中识别构建的 Git SHA。
WEBUI_BANNERS
- 类型:
listofdict - 默认值:
[] - 描述: 要展示给用户的横幅(Banners)列表。横幅的格式为:
[{"id": "string", "type": "string [info, success, warning, error]", "title": "string", "content": "string", "dismissible": false, "timestamp": 1000}]- 持久化: 此环境变量是
PersistentConfig变量。
在 .env 文件中设置此环境变量时,请确保通过将整个值用双引号包裹,并对内部的双引号使用转义字符(\")来对引号进行转义。例如:
WEBUI_BANNERS="[{\"id\": \"1\", \"type\": \"warning\", \"title\": \"Your messages are stored.\", \"content\": \"Your messages are stored and may be reviewed by human people. LLM's are prone to hallucinations, check sources.\", \"dismissible\": true, \"timestamp\": 1000}]"
USE_CUDA_DOCKER
- 类型:
bool - 默认值:
False - 描述: 使用 NVIDIA CUDA 支持构建 Docker 镜像。为本地 Whisper 和嵌入模型启用 GPU 加速。
DOCKER
- 类型:
bool - 默认值:
False - 描述: 指示 Open WebUI 是否正在 Docker 容器内运行。在内部用于环境检测。
USE_CUDA
- 类型:
bool - 默认值:
False - 描述: 控制是否对本地模型使用 CUDA 加速。设置为
true时,系统将尝试检测并使用可用的 NVIDIA GPU。代码会读取环境变量USE_CUDA_DOCKER来设置此内部布尔变量。
DEVICE_TYPE
- 类型:
str - 默认值:
cpu - 描述: 指定模型执行的设备类型。如果 CUDA 可用且启用,则自动设置为
cuda,或者在 Apple Silicon 上自动设置为mps。
EXTERNAL_PWA_MANIFEST_URL
- 类型:
str - 默认值: 空字符串 (' '),因为默认为
None。 - 描述: 当定义为完全限定的 URL 时(例如 https://path/to/manifest.webmanifest),发往
/manifest.json的请求将使用该外部 Manifest 文件。如果未定义,将使用默认的 manifest.json 文件。
ENABLE_TITLE_GENERATION
- 类型:
bool - 默认值:
True - 描述: 启用或禁用聊天标题自动生成。
- 持久化: 此环境变量是
PersistentConfig变量。
LICENSE_KEY
- 类型:
str - 默认值:
None - 描述: 指定要使用的许可证密钥(仅限企业版用户)。
- 持久化: 此环境变量是
PersistentConfig变量。