更新 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
第三步:使用更新后的镜像启动容器
使用新镜像重新创建容器,同时挂载现有的数据卷。
- 仅 CPU
- NVIDIA GPU
docker run -d \
-p 3000:8080 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
docker run -d \
-p 3000:8080 \
--gpus all \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
如果您没有设置 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
然后在浏览器中验证:
- 导航至
http://localhost:3000(或您配置的端口)。 - 清除浏览器缓存(Ctrl+Shift+Delete 或 Cmd+Shift+Delete)。
- 强制刷新页面(Ctrl+F5 或 Cmd+Shift+R)。
- 登录并确认您的数据完好无损。
持久化登录会话
为了避免每次更新后都被迫退出登录,您必须设置一个持久的 WEBUI_SECRET_KEY。
生成并设置密钥
- Docker Run
- Docker Compose
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))"
version: '3'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
environment:
- WEBUI_SECRET_KEY=在这里输入您的密钥
restart: unless-stopped
volumes:
open-webui:
自动化更新
如果您希望自动保持 Open WebUI 为最新版本,可以使用 Watchtower 等工具。
使用 Watchtower
Watchtower 会定期检查您的容器镜像是否有更新,如果发现新版本,它会自动拉取新镜像并使用您的原始设置重新启动容器。
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower open-webui
有关 Watchtower 及其高级配置的更多信息,请访问 Watchtower 官方文档。