OpenClaw迁移服务器
跳转到导航
跳转到搜索
OpenClaw 服务器迁移记录
迁移日期:2026-05-21
源服务器:VM-0-9-ubuntu(root 用户)
目标服务器:VM-0-8-ubuntu(openclaw 用户)
整体思路:先在新服务器创建好环境、安装最新版本OpenClaw跑起来,然后老服务器上也升级到最新版本,再把老服务器上的 .openclaw/ 整个目录拷贝到新服务器上,同时由于路径差异、把路径替换更新,最后运行openclaw doctor修复跑起来。
一、创建系统用户
# 创建一个名为 openclaw 的系统用户,指定家目录
sudo adduser openclaw --system --group --home /home/openclaw
二、配置 sudo 权限
sudo visudo
添加以下行:
openclaw ALL=(ALL) NOPASSWD: ALL
切换到 openclaw 用户:
sudo su -s /bin/bash openclaw
三、安装 OpenClaw
curl -fsSL https://openclaw.ai/install.sh | bash
配置 PATH
编辑 ~/.bashrc,在末尾添加:
export PATH="/home/openclaw/.npm-global/bin:$PATH"
刷新配置:
source ~/.bashrc
四、解决 systemd --user 不可用
安装 gateway 时报错:
systemctl --user unavailable: Failed to connect to bus: No medium found
原因:系统用户默认没有持久化的 systemd 用户会话。
修复步骤:
# 1. 启用 linger(允许用户服务在未登录时持续运行)
sudo loginctl enable-linger openclaw
# 2. 设置 XDG_RUNTIME_DIR 环境变量
export XDG_RUNTIME_DIR=/run/user/$(id -u)
# 3. 写入 .bashrc 永久生效
echo 'export XDG_RUNTIME_DIR=/run/user/$(id -u)' >> ~/.bashrc
# 4. 验证
systemctl --user status
正常的话,会打印类似这些:
systemctl --user status
● VM-0-8-ubuntu
State: running
Units: 139 loaded (incl. loaded aliases)
五、管理界面访问(SSH 隧道)
在本地电脑执行,建立加密通道:
ssh -L 18789:localhost:18789 openclaw@<服务器公网IP>
原理:本地 127.0.0.1:18789 → 加密隧道 → 服务器 127.0.0.1:18789
本地浏览器打开 http://localhost:18789 即可访问管理界面。
六、常用运维命令
openclaw status --all # 查看所有状态
openclaw doctor # 完整健康检查
openclaw logs --follow # 实时日志
openclaw gateway restart # 重启服务
openclaw update # 升级到最新版
迁移前建议:两边服务器先升级到同一个版本再开始。
七、备份与恢复
7.1 源服务器备份
# 停止网关
openclaw gateway stop
# 打包状态目录
cd ~
tar -czf openclaw-state-backup.tar.gz .openclaw
7.2 覆盖到新服务器
将备份包上传到新服务器后解压覆盖到 ~/.openclaw/。
7.3 路径替换
⚠️ 注意:源服务器使用 root,目标使用 openclaw 用户,配置文件中存在硬编码的旧路径,必须批量替换。
替换脚本参考(脚本替换前会备份整个.openclaw目录):
migrate-openclaw.sh:
# 1. 备份(放在 .openclaw 目录外,避免递归)
cp -r ~/.openclaw ~/openclaw_backup_$(date +%Y%m%d_%H%M%S)
# 2. 找出所有包含 /root/.openclaw 的文本文件(排除二进制)
grep -rl '/root/.openclaw' ~/.openclaw --exclude-dir=backup_* | while read -r file; do
echo "正在处理: $file"
sed -i 's|/root/.openclaw|/home/openclaw/.openclaw|g' "$file"
done
# 3. 验证是否还有残留
grep -r '/root/.openclaw' ~/.openclaw --exclude-dir=backup_*
7.4 踩坑:数据库文件被误伤
📌
sed -i会对所有匹配文件执行文本替换。SQLite 数据库文件(main.sqlite)是二进制文件,不应被sed处理,否则会损坏。
恢复方法:
# 从提前备份的目录中恢复数据库
cp /home/openclaw/openclaw_backup_20260521_005100/memory/main.sqlite \
.openclaw/memory/main.sqlite
八、验证与启动
openclaw doctor # 健康检查
openclaw doctor --fix # 自动修复
openclaw gateway restart # 重启网关
openclaw tui # 进入 TUI 管理界面
参考
- OpenClaw 官方安装文档:https://docs.openclaw.ai
- 问题排查:https://docs.openclaw.ai/troubleshooting