Open WebUI 备份与恢复:升级前先把聊天、文件和配置保住

本篇目录 6 节
  1. 一、确认真正的数据位置
  2. 二、在维护时间停止写入
  3. 三、检查备份可读性
  4. 四、恢复到新卷,不覆盖原实例
  5. 五、验证恢复结果
  6. 六、常见问题与排错

Open WebUI 备份不能只看容器还在不在。容器镜像、持久化数据卷、外部数据库和外部存储可能分开保存。本文面向 Windows Docker Desktop 上使用单个本地数据卷与 SQLite 的简单部署,演示停机备份和新卷恢复。使用 PostgreSQL、S3 或其他外部存储时,还必须备份对应服务,不能照搬单卷方案。

本地 AI系列主题示意图
系列主题示意图;操作步骤以正文与官方界面为准。

一、确认真正的数据位置

先检查容器,记录镜像、挂载和环境变量。下面的 open-webui 是示例名称,请换成你的实际容器名。

docker inspect open-webui --format '{{json .Mounts}}'
docker inspect open-webui --format '{{.Config.Image}}'

找到挂载到 /app/backend/data 的数据卷,确认它确实是 volume 类型。若是 bind 挂载或外部数据库,应按相应路径与数据库方案备份,不能把一个不存在的卷名写进后续命令。

二、在维护时间停止写入

通知正在使用服务的人,保存当前对话后停止容器。本文示例假定数据卷名称也叫 open-webui,仅适用于前一步已确认一致的情况。

docker stop open-webui
New-Item -ItemType Directory -Path 'C:\AI-Backups\webui-run01' -Force
docker run --rm --mount type=volume,source=open-webui,target=/data,readonly --mount type=bind,source=C:\AI-Backups\webui-run01,target=/backup alpine sh -c 'tar czf /backup/webui-data.tgz -C /data .'
docker start open-webui

选择一个新的备份目录,避免覆盖之前的备份。停机后备份完整数据目录,可减少 SQLite 正在写入时只复制主数据库、遗漏 WAL 的风险。命令失败时先看日志,不要把不完整压缩包当成备份成功。

三、检查备份可读性

Get-Item -LiteralPath 'C:\AI-Backups\webui-run01\webui-data.tgz'
Get-FileHash -LiteralPath 'C:\AI-Backups\webui-run01\webui-data.tgz' -Algorithm SHA256
docker run --rm --mount type=bind,source=C:\AI-Backups\webui-run01,target=/backup,readonly alpine tar tzf /backup/webui-data.tgz

保存哈希、镜像版本、配置和备份时间。能列出压缩包内容只是第一步,不代表应用一定能恢复;还要做隔离恢复测试。数据可能含账号、聊天与凭据,备份目录应限制访问并放入自己的备份策略。

四、恢复到新卷,不覆盖原实例

创建一个全新且未使用的数据卷,示例名 webui-restore-test。若同名卷已经存在,先核对,不要往旧测试或正式数据里直接解包。

docker volume create webui-restore-test
docker run --rm --mount type=volume,source=webui-restore-test,target=/data --mount type=bind,source=C:\AI-Backups\webui-run01,target=/backup,readonly alpine sh -c 'tar xzf /backup/webui-data.tgz -C /data'

用原来的镜像版本启动一个独立测试容器,只绑定本机不同端口。下一行中的镜像占位符必须替换成第一步记录的真实镜像版本或 ID,不能原样运行。

docker run -d --name webui-restore-test -p 127.0.0.1:3001:8080 -v webui-restore-test:/app/backend/data ORIGINAL_IMAGE_FROM_INSPECT

测试时先限制外部网络和工具连接,避免恢复出的自动任务影响正式环境。原实例保持不动,测试不等于立即切换服务。

五、验证恢复结果

打开 localhost:3001,确认能登录、旧对话可读、上传文件存在、知识库来源可打开。模型连接和外部认证可能还需原来的环境变量或网络配置,单独记录,不把“页面能开”当成全部恢复成功。

六、常见问题与排错

只下载 webui.db 可以吗?

可能漏掉尚在 WAL 的写入、上传文件或其他配置。按部署方式备份完整数据,并实际恢复验证。

为什么恢复后模型无法连接?

数据恢复不一定带回容器网络、环境变量和外部密钥。对照原实例配置逐项核查,不要删除恢复的数据卷。

升级后的镜像能直接读取旧备份吗?

先用原镜像恢复成功,再在测试实例上验证升级。数据库迁移可能影响回退,不要让正式实例承担第一次尝试。

参考 Open WebUI 备份说明与 Docker 数据卷文档。模型文件换盘另见Ollama 模型迁移。

滚动至顶部