环境变量配置
概述
Open WebUI 提供了大量的环境变量,允许你定制和配置应用程序的各个方面。本页面作为所有可用环境变量的综合参考,提供它们的类型、默认值和描述。 随着新变量的引入,本页面将不断更新,以反映日益增加的配置选项。
本页面与 Open WebUI 发布版本 v0.9.6 保持同步,但仍在完善中,后续将包含更准确的描述、列出环境变量的可用选项、默认值以及改进的描述。
关于 ConfigVar 环境变量的重要说明
首次启动 Open WebUI 时,所有环境变量都被同等对待,可用于配置应用程序。但是,对于标记为 ConfigVar 的环境变量,它们的值会被持久化并存储在内部。
初始启动后,如果你重新启动容器,ConfigVar 环境变量将不再使用外部环境变量的值。相反,它们将使用内部存储的值。
相比之下,常规环境变量将在随后的每次重启时继续更新并应用。
你可以直接从 Open WebUI 内部更新 ConfigVar 环境变 量的值,这些更改将存储在内部。这使你可以独立于外部环境变量来管理这些配置设置。
请注意,ConfigVar 环境变量在下面的文档中已明确标记,以便你了解它们的行为方式。
要禁用此行为并强制 Open WebUI 始终使用你的环境变量(忽略数据库),请将 ENABLE_PERSISTENT_CONFIG 设置为 False。
CRITICAL WARNING(严重警告): 当 ENABLE_PERSISTENT_CONFIG 为 False 时,你可能仍然能够在管理界面中编辑设置。然而,这些更改不会永久保存。它们仅在当前会话中持续有效,并在你重新启动容器时丢失,因为系统将恢复为环境变量中定义的值。
排查被忽略的环境变量 🛠️
如果你更改了环境变量(例如 ENABLE_SIGNUP=True)但在 UI 中未看到更改反映出来(例如,"注册"按钮仍然缺失),这很可能是因为之前运行的值或持久化的 Docker 卷中的值已经持久化在数据库中。
选项 1:使用 ENABLE_PERSISTENT_CONFIG(临时修复)
在你的环境中设置 ENABLE_PERSISTENT_CONFIG=False。这会强制 Open WebUI 直接读取你的变量。请注意,在此模式下,基于 UI 的设置更改不会在重启后持久保留。
选项 2:通过管理界面更新(推荐)
更改 ConfigVar 设置的最简单、最安全的方法是直接通过 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。 - 重新启动容器。
警告: 删除卷将删除所有用户数据,包括聊天和账户。
应用程序/后端
以下环境变量被 backend/open_webui/config.py 使用以提供 Open WebUI 启动
配置。请注意,某些变量的默认值可能会根据
你是直接运行 Open WebUI 还是通过 Docker 运行而有所不同。有关日志记录
环境变量的更多信息,请参阅我们的 日志文档。
常规
WEBUI_URL
- 类型:
str - 默认值:
http://localhost:3000 - 描述:指定实例可访问的 URL;OAuth/SSO 和搜索引擎支持都需要它。
- 持久化:这是一个
ConfigVar变量。
首次使用 OAuth/SSO 之前必须先设置 WEBUI_URL。由于它是持久化配置,建议通过 ENABLE_PERSISTENT_CONFIG 或管理面板修改;否则登录会失败。
ENABLE_SIGNUP
- 类型:
bool - 默认值:
True - 描述:控制是否允许创建新用户账户。
- 持久化:这是一个
ConfigVar变量。
ENABLE_SIGNUP_PASSWORD_CONFIRMATION
- 类型:
bool - 默认值:
False - 描述:为注册页添加“确认密码”字段,减少输错密码。
WEBUI_ADMIN_EMAIL
- 类型:
str - 默认值:空字符串(
'') - 描述:首次启动且数据库中没有用户时自动创建管理员账号的邮箱。
只有在数据库为空且同时配置了 WEBUI_ADMIN_EMAIL 和 WEBUI_ADMIN_PASSWORD 时,才会创建管理员账号。创建后会自动禁用注册。
WEBUI_ADMIN_PASSWORD
- 类型:
str - 默认值:空字符串(
'') - 描述:自动创建的管理员账号密码,需与
WEBUI_ADMIN_EMAIL一起使用。
安全注意事项
- 生产环境请使用强且唯一的密码
- 建议使用 secrets 管理,不要明文保存
- 初始设置后建议通过 UI 更改管理员密码
- 不要提交到版本控制
WEBUI_ADMIN_NAME
- 类型:
str - 默认值:
Admin - 描述:自动创建管理员账号的显示名称。
ENABLE_LOGIN_FORM
- 类型:
bool - 默认值:
True - 描 述:控制登录表单、邮箱/密码字段及“或”分隔元素的显示。
- 持久化:这是一个
ConfigVar变量。
ENABLE_PASSWORD_CHANGE_FORM
- 类型:
bool - 默认值:
True - 描述:控制 设置 > 账户 中密码修改界面的可见性。
- 持久化:这是一个
ConfigVar变量。
ENABLE_PASSWORD_AUTH
- 类型:
bool - 默认值:
True - 描述:控制密码认证是否可用。关闭后只允许 SSO/OAuth。
如果你只使用 SSO/OAuth 登录并公开部署 Open WebUI,建议将此项设为 False 以避免基于密码的登录。
只有在同时启用 ENABLE_OAUTH_SIGNUP 时才应关闭此项;否则会导致无法登录。
DEFAULT_LOCALE
- 类型:
str - 默认值:
en - 描述:设置应用程序的默认语言环境。
- 持久化:这是一个
ConfigVar变量。
DEFAULT_MODELS
- 类型:
str - 默认值:空字符串(
'') - 描述:设置默认模型列表。
- 持久化:这是一个
ConfigVar变量。
DEFAULT_PINNED_MODELS
- 类型:
str - 默认值:空字符串(
'') - 描述:为新用户预置默认置顶模型的 ID 列表,使用逗号分隔。
- 示例:
gpt-4,claude-3-opus,llama-3-70b - 持久化:这是一个
ConfigVar变量。
DEFAULT_MODEL_METADATA
- 类型:
dict(JSON object) - 默认值:
{} - 描述:为所有模型设置全局默认元数据;模型自己的设置始终优先。
- 持久化:这是一个
ConfigVar变量。存储在配置键models.default_metadata。
DEFAULT_MODEL_PARAMS
- 类型:
dict(JSON object) - 默认值:
{} - 描述:为所有模型设置全局默认参数(temperature、top_p、max_tokens、seed 等)。
- 持久化:这是一个
ConfigVar变量。存储在配置键models.default_params。
DEFAULT_MODEL_PARAMS 会在启动时以 JSON 字符串从环境变量读取;解析失败时会回退到 {}。
DEFAULT_USER_ROLE
- 类型:
str - 选项:
pending、user、admin - 默认值:
pending - 描述:设置新用户默认角色。
- 持久化:这是一个
ConfigVar变量。
DEFAULT_GROUP_ID
- 类型:
str - 默认值:空字符串(
'') - 描述:设置新用户默认加入的组 ID。
- 持久化:这是一个
ConfigVar变量。
DEFAULT_GROUP_SHARE_PERMISSION
- 类型:
str - 选项:
members、true、false - 默认值:
members - 描述:控制新建用户组的默认共享权限。
PENDING_USER_OVERLAY_TITLE
- 类型:
str - 默认值:空字符串(
'') - 描述:为待处理用户遮罩设置自定义标题。
- 持久化:这是一个
ConfigVar变量。
PENDING_USER_OVERLAY_CONTENT
- 类型:
str - 默认值:空字符串(
'') - 描述:为待处理用户遮罩设置自定义文本内容。
- 持久化:这是一个
ConfigVar变量。
ENABLE_CALENDAR
- 类型:
bool - 默认值:
True - 描述:用于启用或禁用日历功能,支持创建、管理和共享日历。
- 持久化:这是一个
ConfigVar变量。
ENABLE_CHANNELS
- 类型:
bool - 默认值:
False - 描述:用于启用或禁用频道支持。
- 持久化:这是一个
ConfigVar变量。
ENABLE_FOLDERS
- 类型:
bool - 默认值:
True - 描述:用于启用或禁用文件夹功能,允许用户在侧边栏中整理聊天。
- 持久化:这是一个
ConfigVar变量。
FOLDER_MAX_FILE_COUNT
- 类型:
int - 默认值:空字符串(无限制)
- 描述:设置每个文件夹允许处理的最大文件数。
- 持久化:这是一个
ConfigVar变量。可在 Admin Panel > Settings > General > Folder Max File Count 中配置。
ENABLE_AUTOMATIONS
- 类型:
bool - 默认值:
True - 描述:用于全局启用或禁用自动化功能。
- 持久化:这是一个
ConfigVar变量。
AUTOMATION_MAX_COUNT
- 类型:
int - 默认值:空字符串(无限制)
- 描述:限制非管理员用户可创建的自动化数量。
- 持久化:这是一个
ConfigVar变量。
AUTOMATION_MIN_INTERVAL
- 类型:
int(seconds) - 默认值:空字符串(无最小值)
- 描述:限制非管理员用户自动化重复执行的最小间隔(秒)。
- 持久化:这是一个
ConfigVar变量。
| 数值 | 含义 |
|---|---|
60 | 两次运行之间最少 1 分钟 |
300 | 两次运行之间最少 5 分钟 |
900 | 两次运行之间最少 15 分钟 |
3600 | 两次运行之间最少 1 小时 |
SCHEDULER_POLL_INTERVAL
- 类型:
int(seconds) - 默认值:
10 - 描述:设置调度器轮询间隔,统一调度器同时处理自动化执行和日历提醒。
CALENDAR_ALERT_LOOKAHEAD_MINUTES
- 类型:
int(minutes) - 默认值:
10 - 描述:日历提醒的默认提前窗口(分钟),窗口内的事件会触发通知。
ENABLE_NOTES
- 类型:
bool - 默认值:
True - 描述:用于启用或禁用笔记功能。
- 持久化:这是一个
ConfigVar变量。
ENABLE_MEMORIES
- 类型:
bool - 默认值:
True - 描述:用于启用或禁用记忆功能,让模型存储和检索长期信息。
- 持久化:这是一个
ConfigVar变量。
WEBHOOK_URL
- 类型:
str - 描述:设置用于与 Discord/Slack/Microsoft Teams 集成的 webhook。
- 持久化:这是一个
ConfigVar变量。
ENABLE_ADMIN_EXPORT
- 类型:
bool - 默认值:
True - 描述:控制管理员是否可以导出数据、聊天记录和数据库。
ENABLE_ADMIN_CHAT_ACCESS
- 类型:
bool - 默认值:
True - 描述:允许管理员直接访问其他用户的聊天记录。
ENABLE_ADMIN_ANALYTICS
- 类型:
bool - 默认值:
True - 描述:控制管 理面板中的 Analytics 选项卡是否可见且可访问。
BYPASS_ADMIN_ACCESS_CONTROL
- 类型:
bool - 默认值:
True - 描述:控制管理员是否绕过工作区访问控制,访问所有项目和模型。
ENABLE_USER_WEBHOOKS
- 类型:
bool - 默认值:
False - 描述:启用或禁用用户 webhook(每个用户可设置一个 URL,其通知会以 POST 方式推送到该 URL)。出于 SSRF 安全考虑,凡是解析到私有或保留 IP 的 webhook URL 一律拒绝,除非
ENABLE_RAG_LOCAL_WEB_FETCH被设为true。 - 持久化:这是一个
ConfigVar变量。
RESPONSE_WATERMARK
- 类型:
str - 默认值:空字符串(
'') - 描述:设置复制消息时附加的自定义文本。
- 持久化:这是一个
ConfigVar变量。
IFRAME_CSP
- 类型:
str - 默认值:空字符串(不注入 CSP)
- 描述:为 UI 中所有渲染的
srcdociframe 设置统一的 Content-Security-Policy —— 包括 Artifacts、代码/HTML 预览、文件预览、引用弹窗。设置后会在 iframe 文档顶部注入一个<meta http-equiv="Content-Security-Policy">标签,限制 LLM 生成或用户上传的 HTML 能够加载和执行的内容(网络连接、脚本、样式、字体、frame)。iframe 上的sandbox属性仍然提供基础隔离;这里的 CSP 是为需要限制渲染 HTML 出站请求的部署提供的额外纵深防御。示例值:default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:; connect-src 'none'。不设置则保持现有行为(仅 sandbox)。
THREAD_POOL_SIZE
- 类型:
int - 默认值:
0(未设置——使用 AnyIO 默认上限 40) - 描述:设置 AnyIO 工作线程池中同时可运行的阻塞操作上限。Open WebUI 通过
run_in_threadpool把同步/阻塞工作(多数 DB 调用、文件 I/O、同步路由处理器、部分库调用)卸载到这个池子中。该值是并发上限(token 上限),不是一组预生成的 OS 线程,也不是 CPU 核心/线程数:工作线程按需懒加载并复用,因此较高的值不会凭空创建那么多线程、消耗 CPU,或在空闲时引起 争用。它只提升了能同时进行的阻塞操作数量,超出的请求必须排队。
AnyIO 的默认值 40 对生产环境来说远不够。当同时需要的阻塞操作数超过 THREAD_POOL_SIZE(许多用户同时操作,或少量用户各自触发多次阻塞调用)时,每一个新增请求都得等待空闲槽位。症状是整个应用在高负载下看起来挂起/冻结/停止响应,但 CPU 和内存看起来都正常——这是线程池饥饿,不是资源耗尽。
- 普通服务器/生产环境:
2000或更高。2000对超大型多用户实例来说只是下限——调得更高也没问题,而且不会带来 CPU 或争用风险(它是上限,不是预分配)。 - 永远不要低于默认值。 空闲的高上限几乎不消耗资源;低上限才会导致冻结。
- 例外——弱硬件(Raspberry Pi、小型 VPS、CPU 配额约 250m / 内存很低的容器):不要在这里设
2000。每个真正并发的阻塞操作仍会占用一个真正的 OS 线程(栈内存),所以在极小设备上超大的上限会让流量突增时产生足够多的线程耗尽内存。保持默认值,或按设备实际承受能力设置为几百的较小值。该例外只适用于受限单板/微型部署——任何正常服务器都应该用2000+。 - 持久化:这是一个
ConfigVar变量。
ENABLE_CUSTOM_MODEL_FALLBACK
- 类型:
bool - 默认值:
False - 描述:当自定义模型的基础模型缺失时,是否回退到默认模型。
SHOW_ADMIN_DETAILS
- 类型:
bool - 默认值:
True - 描述:切换是否在界面中显示管理员用户详情。
- 持久化:这是一个
ConfigVar变量。
ENABLE_PUBLIC_ACTIVE_USERS_COUNT
- 类型:
bool - 默认值:
True - 描述:控制活跃用户数量对所有用户可见,还是仅管理员可见。
- 持久化:这是一个
ConfigVar变量。
ENABLE_USER_STATUS
- 类型:
bool - 默认值:
True - 描述:全局启用或禁用用户状态功能;关闭后状态 UI 与相关 API 会被隐藏/限制。
- 持久化:这是一个
ConfigVar变量。可在 Admin Panel > Settings > General > User Status 中切换。
ENABLE_EASTER_EGGS
- 类型:
bool - 默认值:
True - 描述:启用或禁用 UI 中的彩蛋功能,例如特殊主题(如 “Her” 主题)。
ADMIN_EMAIL
- 类型:
str - 描述:
SHOW_ADMIN_DETAILS显示的管理员邮箱。 - 持久化:这是一个
ConfigVar变量。
ENV
- 类型:
str - 选项:
dev- 启用/docs上的 FastAPI API 文档prod- 自动配置若干环境变量
- 默认值:
- 后端默认值:
dev - Docker 默认值:
prod
- 后端默认值:
- 描述:环境设置。
ENABLE_PERSISTENT_CONFIG
- 类型:
bool - 默认值:
True - 描述:控制数据库配置与环境变量的优先级。
True(默认值): 数据库中保存的值优先。False: 环境变量优先;启动时不会再从数据库加载该配置。- 严重警告: 在 UI 中看似修改成功的设置,重启后会丢失。
- 使用场景: 如果你希望完全通过
docker-compose.yaml或.env管理配置,可设为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这会让 Open WebUI 运行在 9999 端口。此模式下会忽略 PORT 环境变量。
ENABLE_REALTIME_CHAT_SAVE
- 类型:
bool - 默认值:
False - 描述:启用后,系统会把流式聊天的每个分块实时写入数据库。
强烈建议不要在生产或多用户环境中启用此项。
启用后,LLM 生成的每个 token 都会触发一次单独的数据库写入。在多用户环境中,这会:
- 耗尽数据库连接池:快速写入会很快耗尽所有可用连接,导致
QueuePool limit reached错误和全局卡死。 - 严重拖慢性能:每分钟成千上万次数据库事务会给所有用户带来巨大延迟。
- 增加硬件压力:会对存储系统造成极大的 I/O 压力。
请保持为 False(默认值)。 对话仍会在生成完成后自动保存;此设置只适用于极端调试或单用户环境。
ENABLE_CHAT_RESPONSE_BASE64_IMAGE_URL_CONVERSION
- 类型:
bool - 默 认值:
False - 描述:启用后,会自动把 Markdown 中超过 1KB 的 base64 图片上传并转换为图片 URL,以减小响应文本体积。
ENABLE_IMAGE_CONTENT_TYPE_EXTENSION_FALLBACK
- 类型:
bool - 默认值:
False - 描述:当系统 MIME 数据库和文件元数据都无法识别图片类型时,使用扩展名到 MIME 的硬编码兜底映射。
ENABLE_PROFILE_IMAGE_URL_FORWARDING
- 类型:
bool - 默认值:
True - 描述:控制用户和模型头像端点是否会对存储在
profile_image_url中的外部http(s)://URL 做302 Found重定向到原始来源。设为False时不再重定向,端点会回退到内置的默认头像。设为False可以避免客户端在加载攻击者控制的头像 URL 时把 IP、User-Agent、Referer 泄漏给攻击者(data URI 以及同源/静态图片仍然正常加载)。如果你的部署确实依赖外部头像 URL(例如上游身份提供方返回的 Gravatar 重定向),应保留默认值。该变量只在启动时读取一次——它不是ConfigVar,无法在管理面板中修改。
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 前缀校验,因此在这里新增一个类型既会在读取路径上提供它,也会在写入路径上接受它。该变量只在启动时读取一次——它不是ConfigVar,无法在管理面板中修改。
PROFILE_IMAGE_MAX_DATA_URI_SIZE
- 类型:
int(字节) - 默认值:未设置(无限制)
- 描述:内联
data:image/...;base64,...头像的最大字节长度。该共享的头像校验器会在保存时拒绝更长的 data URI,适用于用户头像和模型图标。可用它来限制超大内联图片导致的 Postgres/Redis 膨胀(以及更慢的模型列表响应)。仅限制data:URI;http(s)头像 URL 和内建静态路径不受影响。限制按 base64 编码后的字符串长度计算(比原始图片大约大三分之一),因此262144(256 KiB)大约对应 190 KiB 的实际图片。未设置(默认)时内联图片无上限。启动时读取一次——不是ConfigVar,无法在管理面板中修改。
CHAT_RESPONSE_STREAM_DELTA_CHUNK_SIZE
- 类型:
int - 默认值:
1 - 描述:设置流式响应向客户端发送前的最小 token 批量大小。
CHAT_STREAM_RESPONSE_CHUNK_MAX_BUFFER_SIZE
- 类型:
int - 默认值:Empty string (' '), which disables the limit (equivalent to None)
- 描述:设置处理流式响应分块的最大缓冲区大小。超过该值时会跳过过大的数据块。
如果你在高并发、多用户、且模型流式速度很快的场景下运行 Open WebUI,建议将其设为较大的个位数或两位数值。
CHAT_RESPONSE_MAX_TOOL_CALL_ITERATIONS
- 类型:
int - 默认值:
256 - 描述:在启用 Native Function Calling 时,限制单次助手响应中代理循环可以连续执行的工具调用轮数。每当模型发出一或多个工具调用计为一轮(同一轮中分组的多个工具调用仍计为一轮);计数器在每条新消息处重置,不跨对话轮次延续。它不是对失败工具调用的重试预算——成功的调用和失败的调用各消耗一次,完全相同。设为
-1表示无限制(无上限)。启动时读取一次;不是ConfigVar,无法在管理面板中修改。空值或非法值会回退到256。v0.9.6 之前名为CHAT_RESPONSE_MAX_TOOL_CALL_RETRIES(旧默认值30)的旧名称仍作为回退被兼容识别;请优先使用新名称。
ENABLE_RESPONSES_API_STATEFUL
- 类型:
bool