Skip to main content

更新 Open WebUI

概览

保持 Open WebUI 的更新可以确保您获得最新的功能、安全补丁和错误修复。您可以选择手动更新,也可以使用容器更新工具实现自动化更新。

更新前须知
  • 备份数据:在进行重大版本更新前,请务必备份您的数据。
  • 查看发布说明:访问 https://github.com/open-webui/open-webui/releases 查看是否有破坏性变更。
  • 清除浏览器缓存:更新后请清除浏览器缓存,以确保加载最新的 Web 界面。
  • 运行多个 Worker?:如果您使用了 UVICORN_WORKERS > 1,您必须先以 UVICORN_WORKERS=1 运行更新后的容器,以便安全地执行数据库迁移。成功启动后,您可以重新使用多个 Worker 启动。

手动更新

手动更新让您拥有完全的控制权,推荐用于生产环境或在应用更改前需要审查变更的情况。

第一步:停止并删除当前容器

这将停止正在运行的容器并将其删除,但不会删除存储在 Docker 卷(Volume)中的数据。

终端
# 如果您的容器名称不同,请将 'open-webui' 替换为您的容器名
# 如果不确定,请使用 'docker ps' 查找您的容器名称
docker rm -f open-webui
查找容器名称

如果您的容器名称不是 open-webui,可以使用以下命令查找:

docker ps -a | grep open-webui

查看 "NAMES" 列以获取实际的容器名称。

第二步:拉取最新的 Docker 镜像

从镜像仓库下载最新的 Open WebUI 镜像。

终端
docker pull ghcr.io/open-webui/open-webui:main

预期输出:

main: Pulling from open-webui/open-webui
Digest: sha256:abc123...
Status: Downloaded newer image for ghcr.io/open-webui/open-webui:main
关于数据持久化

您的聊天历史、设置和上传的文件都存储在名为 open-webui 的 Docker 卷中。拉取新镜像不会影响这些数据。卷的生命周期独立于容器。

(可选)在生产环境中使用镜像标签

Open WebUI 提供了多个 Docker 镜像标签,具体取决于您希望如何管理更新。 如果您希望始终运行最新版本的 Open WebUI,可以根据您的配置使用 :main:cuda:ollama 镜像标签。

示例(最新版本标签):

ghcr.io/open-webui/open-webui:main
ghcr.io/open-webui/open-webui:cuda
ghcr.io/open-webui/open-webui:ollama

对于重视稳定性和可重现性的 生产环境,建议固定特定的发布版本,而不是使用这些浮动标签。

版本化镜像遵循以下格式:

ghcr.io/open-webui/open-webui:<RELEASE_VERSION>-<TYPE>

示例(固定版本 —— 请替换为您想使用的具体发布版本):

ghcr.io/open-webui/open-webui:v0.6.52
ghcr.io/open-webui/open-webui:v0.6.52-cuda
ghcr.io/open-webui/open-webui:v0.6.52-ollama

第三步:使用更新后的镜像启动容器

使用新镜像重新创建容器,同时挂载现有的数据卷。

终端 - 标准部署
docker run -d \
-p 3000:8080 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
关于 WEBUI_SECRET_KEY

如果您没有设置 WEBUI_SECRET_KEY,每次重新创建容器时它都会自动生成,这将导致您在每次更新后都被迫退出登录

请参阅下文的 持久化登录会话 部分以解决此问题。

验证更新成功

检查 Open WebUI 是否成功启动:

终端 - 检查容器日志
docker logs open-webui

# 实时查看日志
docker logs -f open-webui

启动成功指标:

INFO:     [db] Database initialization complete
INFO: [main] Open WebUI starting on http://0.0.0.0:8080

然后在浏览器中验证:

  1. 导航至 http://localhost:3000(或您配置的端口)。
  2. 清除浏览器缓存(Ctrl+Shift+Delete 或 Cmd+Shift+Delete)。
  3. 强制刷新页面(Ctrl+F5 或 Cmd+Shift+R)。
  4. 登录并确认您的数据完好无损。

持久化登录会话

为了避免每次更新后都被迫退出登录,您必须设置一个持久的 WEBUI_SECRET_KEY

生成并设置密钥

终端 - 带有密钥的 Docker Run
docker run -d \
-p 3000:8080 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
-e WEBUI_SECRET_KEY="在这里输入您的密钥" \
ghcr.io/open-webui/open-webui:main
生成安全密钥

使用以下命令生成一个加密安全的密钥:

openssl rand -hex 32

或者使用 Python:

python3 -c "import secrets; print(secrets.token_hex(32))"

自动化更新

如果您希望自动保持 Open WebUI 为最新版本,可以使用 Watchtower 等工具。

使用 Watchtower

Watchtower 会定期检查您的容器镜像是否有更新,如果发现新版本,它会自动拉取新镜像并使用您的原始设置重新启动容器。

终端 - 运行 Watchtower
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower open-webui
了解更多

有关 Watchtower 及其高级配置的更多信息,请访问 Watchtower 官方文档