TRSSBot Docker 迁移全流程避坑指南(最终稳定版)
适用场景:Docker 部署 TRSSBot,通过 SSH / 本地文件夹同步迁移,所有修复操作均在 Docker 容器内执行
核心方案:系统 Chromium 兜底 + 全插件依赖深度修复 + 国内源加速,已验证全流程可用
一、迁移核心流程(最简安全版)
1. 旧机器操作(源端)
# 1. 停止容器,防止数据损坏、不一致
docker stop TRSS_AllBot
# 2.1 SSH 增量同步数据到新机器(不删除新机器原有文件,最安全)
# 替换为新机器的用户名、IP、目标路径
rsync -avzP /root/TRSS_AllBot/ 新机器用户名@新机器IP:/root/TRSS_AllBot/
# 2.2 也可用于同步到本机其他文件夹(如备份、迁移到新挂载目录)
rsync -avzP /root/TRSS_AllBot/ /docker-volumes/Bot/
2. 新机器操作(目标端)
# 1. 启动容器,挂载已同步的数据目录(与旧机器路径保持一致)
docker run -d \
--name TRSS_AllBot \
--restart always \
-v /root/TRSS_AllBot:/app/TRSS_AllBot \
timeghostai/trss-yunzai
# 2. 进入容器内部(后续所有修复操作均在此环境执行)
docker exec -it TRSS_AllBot sh
二、迁移必踩坑 + 一键修复(容器内操作)
坑1:Arch Linux 软件源报错 community.db 404
报错现象:执行 pacman -Syy 时提示 community.db 下载失败、404 错误
根因:Arch Linux 已将 community 仓库合并至 extra,旧配置会导致源失效
修复命令:
# 删除 community 仓库相关配置
sed -i 's/community//g' /etc/pacman.conf &&
sed -i 's/\[community\]//g' /etc/pacman.conf &&
pacman -Syy
# 强制刷新软件源
注:执行完成后执行 tsab 自动下载依赖后退出容器, 重新进入容器继续操作
坑2:基础依赖缺失(node/redis-server 未找到命令)
报错现象:启动脚本提示 node: 未找到命令、redis-server: 未找到命令
根因:迁移仅同步了业务数据,容器环境依赖未同步
修复命令:
# 安装 Node.js、npm、Redis 核心依赖
pacman -S nodejs npm redis --noconfirm
坑3:pnpm 命令未找到 & 国内源加速配置
报错现象:执行 pnpm 相关命令提示 sh: pnpm: 未找到命令
修复命令:
# 全局安装 pnpm
npm install -g pnpm
# 永久切换淘宝国内源,解决 GitHub 超时、依赖下载失败问题
pnpm config set registry https://registry.npmmirror.com/
npm config set registry https://registry.npmmirror.com/
# 验证源配置生效
pnpm config get registry
坑4:Puppeteer 找不到 Chrome / 截图/图鉴功能失效
报错现象:触发截图命令(如 #帮助)时,提示 Could not find Chrome、Chromium 启动失败
最终兜底方案(稳定可用):
# 1. 安装系统级 Chromium,彻底规避 Puppeteer 缓存、版本不兼容问题
pacman -S chromium --noconfirm
# 2. 强制 Puppeteer 使用系统浏览器,永久生效
echo "export PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium" >> /etc/profile
source /etc/profile
# 3. 验证安装成功
chromium --version
坑5:插件依赖缺失(jsonwebtoken 等 / 插件启动失败 / 依赖缓存异常)
报错现象:提示 缺少依赖: jsonwebtoken、插件安装 GitHub 超时、pnpm 缓存不匹配、依赖冲突
核心解决方案:全插件深度自动修复脚本
脚本使用规范绝对路径写法,自动执行「清空缓存 → 重装依赖 → 安装全局依赖」全流程
1. 生成并执行修复脚本
# 进入 TRSS-Yunzai 根目录
cd /root/TRSS_AllBot/TRSS-Yunzai
# 写入一键深度修复脚本(直接复制整段执行)
cat > fix-all-plugins.sh << 'EOF'
#!/bin/bash
# TRSSBot 全插件深度依赖修复工具
# 自动获取脚本绝对路径,适配任意执行位置
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
PLUGINS_DIR="${SCRIPT_DIR}/plugins"
echo "====================================="
echo " TRSSBot 全插件深度依赖修复工具"
echo " 脚本目录:${SCRIPT_DIR}"
echo "====================================="
# ========================
# 根目录依赖深度修复
# ========================
echo ""
echo "=================================================="
echo "正在修复根目录全局依赖..."
echo "=================================================="
cd "${SCRIPT_DIR}"
# 强制清空 pnpm 缓存,解决仓库不匹配问题
pnpm store prune
# 删除旧依赖与锁文件,彻底清除缓存异常
rm -rf node_modules pnpm-lock.yaml
# 工作区模式重新安装所有根目录依赖
pnpm i --registry=https://registry.npmmirror.com/
# 全局安装 jsonwebtoken,解决锅巴等插件依赖缺失
pnpm add jsonwebtoken -w
# ========================
# 遍历所有插件深度修复
# ========================
for dir in "${PLUGINS_DIR}"/*/; do
if [ -d "${dir}" ]; then
plugin_name=$(basename "${dir}")
echo ""
echo "=================================================="
echo "正在深度修复插件:${plugin_name}"
echo "=================================================="
cd "${dir}"
# 清空插件目录 pnpm 缓存
#pnpm store prune
# 删除插件旧依赖与锁文件
#rm -rf node_modules pnpm-lock.yaml
# 重新安装插件依赖
pnpm i --registry=https://registry.npmmirror.com/
cd "${SCRIPT_DIR}"
fi
done
echo ""
echo "✅ 所有插件依赖深度修复完成!"
echo "请重启..."
#echo "请执行:./TRSS-Yunzai.sh restart 重启机器人"
EOF
# 赋予执行权限并运行脚本
chmod +x fix-all-plugins.sh
./fix-all-plugins.sh
2. 常见警告说明(无需处理)
脚本执行过程中出现的黄色 WARN 为正常提示,不影响功能:
pnpm.patchedDependencies警告:pnpm 工作区配置提示,不影响依赖安装deprecated弃用警告:插件依赖包版本弃用提示,不影响当前版本运行added 0提示:依赖已存在,无需重复安装,命令执行完成
坑6:权限报错 / 文件无法写入
报错现象:启动时提示权限不足、文件无法写入、目录无访问权限
修复命令:
# 递归修改目录权限,确保 root 用户完全控制
chown -R root:root /root/TRSS_AllBot
三、迁移完成验证 & 重启
1. 重启 TRSSBot
cd /root/TRSS_AllBot
./TRSS-Yunzai.sh restart
2. 验证服务状态
# 查看机器人日志,确认无红色报错、插件启动正常
./TRSS-Yunzai.sh log
# 测试核心功能:发送 #帮助 验证截图正常
# 验证 Chromium 环境正常
chromium --version
出现机器人登录成功、无红色报错、截图功能正常 = 迁移完成 ✅
四、关键注意事项
- SSH 同步禁止加
--delete:避免误删新机器原有文件,仅做增量同步 - Arch 源必须清理
community:否则所有软件安装都会失败 - 浏览器问题优先用系统 Chromium 兜底:彻底规避 Puppeteer 缓存、版本不兼容问题
- 迁移后必须执行全插件深度修复:插件依赖与环境绑定,同步数据后需重新安装
- 所有修复操作必须在 Docker 容器内执行:宿主机直接修改文件可能导致权限不生效
- 全程使用国内镜像:从根源解决 GitHub 超时、依赖下载失败问题
五、Docker 部署兜底方案(彻底规避环境问题)
若物理机环境问题反复,推荐直接使用 Docker 部署,镜像内置完整依赖:
# 1. 拉取官方镜像
docker pull timeghostai/trss-yunzai
# 2. 启动容器(挂载已同步的数据目录)
docker run -d \
--name TRSS_AllBot \
--restart=always \
-v /root/TRSS_AllBot:/app/TRSS_AllBot \
timeghostai/trss-yunzai
# 3. 查看日志
docker logs -f TRSS_AllBot