跳到主要内容

🔄 更新 Open WebUI

为什么我的 Open WebUI 没有更新?

要将本地 Docker 安装的 Open WebUI 更新到最新版本,您可以使用 Watchtower 或手动更新容器。请按照下面提供的任一步骤进行操作,以指导您更新现有的 Open WebUI 镜像。

手动更新

  1. 停止并移除当前容器:

    这将停止正在运行的容器并将其移除,但不会删除存储在 Docker 数据卷中的数据。(如果在您的环境中容器名称不同,请在整个更新过程中用您的容器名称替换 open-webui。)

docker rm -f open-webui
  1. 拉取最新的 Docker 镜像:

    这将更新 Docker 镜像,但不会更新正在运行的容器或其数据。

docker pull ghcr.io/open-webui/open-webui:main
信息

移除 Docker 数据卷中的任何现有数据(除非绝对必要,否则不推荐!)。如果不需要,完全跳过此步骤,直接进入最后一步

如果您想重新开始,可以移除 Docker 数据卷中的现有数据。请注意,这会删除您的所有聊天记录和其他数据。

数据存储在一个名为 open-webui 的 Docker 数据卷中。您可以使用以下命令移除它

docker volume rm open-webui
  1. 使用更新后的镜像和现有数据卷再次启动容器:

    如果您没有移除现有数据,这将使用更新后的镜像和现有数据启动容器。如果您移除了现有数据,这将使用更新后的镜像和一个新的、空的数据卷启动容器。对于 Nvidia GPU 支持,请在 docker run 命令中添加 --gpus all

docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main

每次更新后都保持退出登录状态?

如果您发现在每次更新后都会退出登录,请确保在您的环境变量中设置了 WEBUI_SECRET_KEY。如果此密钥没有持续定义,您的身份验证会话可能会在更新后失效。

要持久设置 WEBUI_SECRET_KEY,请在运行 Docker 容器时包含它

docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui -e WEBUI_SECRET_KEY=your_secret_key ghcr.io/open-webui/open-webui:main

或者,如果使用 docker-compose,请将其添加到 environment 部分下方

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=your_secret_key

有关环境变量设置的更多详细信息,请查阅Open WebUI 关于安全变量的文档

使用 Watchtower 自动更新 Open WebUI

您可以使用 Watchtower 自动执行 Open WebUI 的更新过程。这里有三个选项

选项 1:一次性更新

您可以将 Watchtower 作为一次性更新来运行,以停止当前容器,拉取最新镜像,并启动一个附带更新后镜像和现有数据卷的新容器(对于 Nvidia GPU 支持,请在 docker run 命令中添加 --gpus all

docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui

选项 2:将 Watchtower 作为独立容器运行

您可以将 Watchtower 作为独立容器运行,它会监视并更新您的 Open WebUI 容器

docker run -d --name watchtower \
--volume /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -i 300 open-webui

这将在分离模式下启动 Watchtower,每 5 分钟监视您的 Open WebUI 容器是否有更新。

选项 3:将 Watchtower 集成到 docker-compose.yml 文件中

您还可以将 Watchtower 与您的 docker-compose.yml 文件集成,以自动更新 Open WebUI(对于 Nvidia GPU 支持,请在 docker run 命令中添加 --gpus all

version: '3'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data

watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 300 open-webui
depends_on:
- open-webui

volumes:
open-webui:

在此示例中,Watchtower 与 docker-compose.yml 文件集成,每 5 分钟监视 Open WebUI 容器是否有更新。

Docker 数据卷中的持久数据

数据存储在一个名为 open-webui 的 Docker 数据卷中。数据卷的路径无法直接访问,但您可以使用以下命令检查该数据卷

docker volume inspect open-webui

这将显示数据卷的详细信息,包括挂载点,通常位于 /var/lib/docker/volumes/open-webui/_data

在 Windows 10 + WSL 2 上,Docker 数据卷位于此处(在 Windows 文件资源管理器中输入)

  • \\wsl$\docker-desktop\mnt\docker-desktop-disk\data\docker\volumes

对于旧版本的 Docker(v26.1.4 之前的 Docker)

  • \\wsl$\docker-desktop-data\data\docker\volumes
  • \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

(Windows 答案鸣谢 StackOverflow 用户 sarye-haddadi;原始 SO 帖子的链接