Administrator
发布于 2026-03-01 / 1 阅读
0
0

OpenClaw 服务迁移恢复指南

前言

最近需要将旧服务器的服务迁移到新的 Ubuntu 24 服务器上,主要涉及 OpenClaw 和 Xray 两个核心服务。本文记录了迁移过程中遇到的各种坑点和解决方案,供有类似需求的朋友参考。

为什么需要迁移?

原服务器运行的是 CentOS 9 系统,但在运行 OpenClaw 时遇到了严重的问题:

  • 升级或重装 OpenClaw 会导致 SSH 连接断开
  • CPU 占用率居高不下
  • 磁盘 I/O 异常飙升
  • 只能强制重启才能恢复 SSH 访问

排查无果后,决定重装系统并迁移到 Ubuntu 24.04 LTS,同时也完成了一次系统升级。

环境信息

  • 源服务器:CentOS 9 (Stream) - 因 OpenClaw 兼容性问题迁移
  • 目标服务器:Ubuntu 24.04 LTS
  • 核心服务:OpenClaw、Xray
  • 备份方式:手动打包配置文件

准备工作

1. 备份关键配置

在旧服务器上,需要备份以下目录:

# OpenClaw 配置
~/.openclaw/

# Xray 配置
/usr/local/etc/xray/

# 系统服务
/etc/systemd/system/*.service

# 网站文件(如有)
/www/wwwroot/

2. 打包备份

tar -czf server_backup.tar.gz \
    ~/.openclaw/ \
    /usr/local/etc/xray/ \
    /etc/systemd/system/*.service

迁移步骤

第一步:安装 Node.js 22

OpenClaw 需要 Node.js 环境,Ubuntu 24 默认源版本可能不够新。

坑点 #1:curl 安装脚本需要 sudo

# ❌ 错误方式
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
# 会报错:Permission denied

# ✅ 正确方式
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

第二步:传输备份文件

坑点 #2:Windows 下 SCP 无法自动输入密码

从 Windows 传输文件到 Linux 服务器时,scp 命令不支持命令行传密码。

解决方案

  1. 使用 Git Bash / PowerShell 手动执行
scp -r backup_dir user@server:/home/user/
# 然后手动输入密码
  1. 打包成单个文件再传输
# 先打包
tar -czf backup.tar.gz source_dir/

# 传输单个文件更容易处理
scp backup.tar.gz user@server:/home/user/

第三步:恢复 OpenClaw 配置

坑点 #3:配置文件路径硬编码为 /root

恢复的配置文件中,路径可能指向 /root/.openclaw,但实际以普通用户(如 ubuntu)运行时会遇到权限问题。

# 检查配置
cat ~/.openclaw/openclaw.json | grep root

# 批量替换路径
sed -i 's|/root/.openclaw|/home/ubuntu/.openclaw|g' ~/.openclaw/openclaw.json

# 检查所有配置文件
find ~/.openclaw -name "*.json" -exec grep -l "/root" {} \;

# 全部替换
find ~/.openclaw -name "*.json" -exec sed -i 's|/root/.openclaw|/home/ubuntu/.openclaw|g' {} \;

第四步:安装和启动 OpenClaw

# 全局安装(需要 sudo)
sudo npm install -g openclaw

# 修复可能的配置问题
openclaw doctor --repair

# 启动服务
openclaw gateway start

# 检查状态
openclaw gateway status

坑点 #4:全局 npm 安装需要 sudo

# ❌ 错误
npm install -g openclaw
# Error: EACCES: permission denied

# ✅ 正确
sudo npm install -g openclaw

第五步:恢复 Xray 服务

# 安装 Xray
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

# 恢复配置
sudo cp -r xray/* /usr/local/etc/xray/

# 启动服务
sudo systemctl enable xray
sudo systemctl start xray

第六步:访问 OpenClaw Web 界面

坑点 #5:默认只监听 127.0.0.1

OpenClaw 默认只绑定本地回环地址,无法远程访问。

解决方案 A:SSH 端口转发(推荐)

# 在本地电脑执行
ssh -L 18789:127.0.0.1:18789 user@server

然后访问 http://127.0.0.1:18789/

解决方案 B:修改绑定地址

修改 ~/.openclaw/openclaw.json

{
  "gateway": {
    "bind": "0.0.0.0"
  }
}

然后重启:

openclaw gateway restart

直接访问 http://server_ip:18789/

常见问题

1. OpenClaw 报权限错误

Error: EACCES: permission denied, mkdir '/root/.openclaw/workspace'

原因:配置文件路径指向 root 目录,但以普通用户运行

解决:批量替换配置文件中的路径(见坑点 #3)

2. Xray 无法启动

# 查看日志
sudo journalctl -u xray -n 50

# 检查配置语法
xray -test -config /usr/local/etc/xray/config.json

3. 服务无法开机自启

# 检查服务状态
sudo systemctl status xray
sudo systemctl list-unit-files | grep xray

# 手动启用
sudo systemctl enable xray

自动化脚本

为了简化重复操作,可以编写恢复脚本:

#!/bin/bash
# restore.sh

set -e

# 配置
BACKUP_DIR="/home/ubuntu/backup"
OPENCLAW_USER="ubuntu"

# 恢复 OpenClaw
echo "[1/4] 恢复 OpenClaw..."
mkdir -p ~/$OPENCLAW_USER/.openclaw
cp -a $BACKUP_DIR/.openclaw/* ~/$OPENCLAW_USER/.openclaw/
find ~/$OPENCLAW_USER/.openclaw -name "*.json" -exec sed -i 's|/root/.openclaw|/home/ubuntu/.openclaw|g' {} \;
chown -R $OPENCLAW_USER:$OPENCLAW_USER ~/$OPENCLAW_USER/.openclaw

# 恢复 Xray
echo "[2/4] 恢复 Xray..."
sudo mkdir -p /usr/local/etc/xray
sudo cp -a $BACKUP_DIR/xray/* /usr/local/etc/xray/

# 恢复系统服务
echo "[3/4] 恢复系统服务..."
sudo cp $BACKUP_DIR/*.service /etc/systemd/system/
sudo systemctl daemon-reload

echo "[4/4] 完成重启..."
sudo systemctl enable xray
sudo systemctl restart xray
openclaw gateway restart

echo "恢复完成!"

总结

迁移过程中最主要的坑点:

  1. 权限问题:npm 全局安装、路径访问都需要注意
  2. 路径硬编码:配置文件中 /root 路径需要替换
  3. 网络访问:默认本地绑定需要端口转发或修改配置

只要处理好这几个问题,整个迁移过程还是比较顺利的。OpenClaw 作为现代化的代理工具,配合 Xray 使用体验很好。

参考资料


评论