SillyTavern Docker 迁移记录:旧数据无损迁到新服务器
背景:由于旧服务器被挖矿,系统进行了完全重装。我把 SillyTavern 迁移到了新服务器 ,并保留了所有用户数据、角色卡、聊天记录和配置。
核心原则:由于之前的版本落后一年多了,想试试新的镜像版本,所以迁移是有风险的。我只迁移 config 和 data 目录,没有迁移旧版的 public 前端代码和旧版构建脚本,否则会导致新版前端白屏或 API 不兼容。
1. 筛选旧备份数据
旧备份里有 config、data、extensions、plugins、public 等目录。我只迁移了两类:
config/:保存 API Key、账号密码、UI 设置data/:保存角色卡、聊天记录、世界书、用户数据
没有迁移 public/。它是旧版前端代码,直接覆盖新版镜像会导致前端崩溃。plugins/ 和 extensions/ 也暂时留空,避免旧插件和新版 Node 不兼容。
2. 创建目录并上传数据
mkdir -p /root/sillytavern
cd /root/sillytavern
mkdir -p config data plugins extensions
然后把旧备份里的 config 文件夹和 data.zip 上传到 /root/sillytavern/。
3. 解压 data.zip
先确认压缩包内部结构:
unzip -l data.zip | head -20
发现里面自带一层 data/ 目录,所以直接在当前目录解压即可合并:
unzip -o data.zip
4. 修正文件权限
SillyTavern 容器内部以 node 用户运行,UID 是 1000。用 root 解压后必须改所有权,否则容器可能无法写入配置和数据:
chown -R 1000:1000 /root/sillytavern/
5. 编写 docker-compose.yml
在 /root/sillytavern/ 下创建 docker-compose.yml:
services:
sillytavern:
container_name: sillytavern
hostname: sillytavern
image: ghcr.io/sillytavern/sillytavern:latest
environment:
- NODE_ENV=production
- FORCE_COLOR=1
- SILLYTAVERN_HEARTBEATINTERVAL=30
ports:
- "8001:8000"
volumes:
- "./config:/home/node/app/config"
- "./data:/home/node/app/data"
- "./plugins:/home/node/app/plugins"
- "./extensions:/home/node/app/public/scripts/extensions/third-party"
healthcheck:
test: ["CMD", "node", "src/healthcheck.js"]
interval: 30s
timeout: 10s
start_period: 20s
retries: 3
restart: unless-stopped
说明:
- 删掉了官方原文件里的
build: ..,因为这里直接用预构建镜像。 - 宿主机端口用
8001,映射到容器内8000,避免和其他服务冲突。 - 只挂载
config、data、plugins、extensions,不挂载public。
6. 启动容器
cd /root/sillytavern
docker compose up -d
docker compose logs --tail 50
7. 验证结果
日志里出现了:
SillyTavern 1.19.0Migrating config values in config.yamlCompiling frontend libraries...
说明新版镜像已经自动把旧配置格式升级,并开始编译前端。等待编译完成后,访问:
http://<服务器IP>:8001/
用原来的账号密码登录,角色卡、聊天记录和用户数据都在。
原理小结
Docker 容器本身不保存状态,数据都靠 volume 挂载到宿主机。迁移时只要保留 config 和 data,新镜像启动后会自动升级配置格式,旧数据不受影响。权限必须匹配容器内的 UID 1000,否则会报写入错误。旧版 public 不能迁移,因为新版前端代码由镜像内部提供,覆盖会导致不兼容。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_37195257/article/details/166596506



