Administrator
发布于 2026-02-25 / 63 阅读
0
0

OpenClaw CentOS 9 安装指南

解决 2GB 内存服务器安装 OpenClaw 的各种坑


问题总览

┌─────────────────────────────────────────────────────────────────┐
│  OpenClaw 在 CentOS 9 + 2GB 内存上的问题链                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  2GB 内存 → OOM Killer → 进程被杀 / 磁盘 I/O 爆炸               │
│       ↓                                                        │
│  加 Swap 解决 → 安装成功                                         │
│       ↓                                                        │
│  Gateway 只监听 127.0.0.1 → 外部无法访问                         │
│       ↓                                                        │
│  修改 bind=lan → 缺少 allowedOrigins 配置                        │
│       ↓                                                        │
│  添加 controlUi 配置 → 服务启动成功                               │
│       ↓                                                        │
│  HTTP 访问被浏览器拦截 → 需要 HTTPS                              │
│       ↓                                                        │
│  宝塔 + SSL 证书 → 完成                                         │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

一、环境准备

1.1 系统要求

项目 要求
系统 CentOS Stream 9
内存 ≥ 2GB(强烈建议加 Swap)
Node.js ≥ 22

1.2 增加 Swap(必须!)

原因:2GB 内存安装时会 OOM,进程被杀或磁盘 I/O 爆炸

# 创建 4GB swap
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 验证
free -h

# 开机自动挂载(可选)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# 安装完成后,可以关闭 swap 释放磁盘空间(但建议保留,以防运行时也需要):
sudo swapoff /swapfile sudo rm /swapfile

二、安装 Node.js 22

# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc

# 安装 Node.js 22
nvm install 22
nvm use 22

# 验证
node -v  # 应显示 v22.x.x

三、安装 OpenClaw

# 防止 SSH 断开导致安装中断
## 1. 创建 tmux 会话
tmux new -s install
## 2. 在 tmux 里执行安装
rm -rf /usr/lib/node_modules/openclaw
npm cache clean --force

npm install -g openclaw@latest --no-audit --no-fund --maxsockets=1

## 3. 如果卡住不想等,按 Ctrl+B 然后按 D 退出(安装继续)
##   重新连接用:tmux attach -t install

## 4. 安装完成后验证
which openclaw
openclaw --version

  tmux 常用快捷键
  ┌────────────────────┬──────────────────────────────┐
  │        操作        │            快捷键            │
  ├────────────────────┼──────────────────────────────┤
  │ 退出会话(不关闭) │ Ctrl+B 然后按 D              │
  ├────────────────────┼──────────────────────────────┤
  │ 重新连接           │ tmux attach -t install       │
  ├────────────────────┼──────────────────────────────┤
  │ 强制关闭会话       │ tmux kill-session -t install │
  └────────────────────┴──────────────────────────────┘

四、配置外网访问

4.1 问题分析

┌──────────────────────────────────────────────────────┐
│  Gateway 默认配置                                       │
├──────────────────────────────────────────────────────┤
│  bind: loopback (127.0.0.1)  ← 只允许本地访问           │
│  浏览器访问 IP:18789 → ❌ 无法连接                      │
└──────────────────────────────────────────────────────┘

                    需要改成

┌──────────────────────────────────────────────────────┐
│  Gateway 外网访问配置                                   │
├──────────────────────────────────────────────────────┤
│  bind: lan                                            │
│  controlUi.dangerouslyAllowHostHeaderOriginFallback   │
│  浏览器访问 IP:18789 → ✅ 可以访问                      │
└──────────────────────────────────────────────────────┘

4.2 修改配置文件 (可以试试不改)

vi ~/.openclaw/openclaw.json

修改 gateway 部分:

"gateway": {
  "port": 18789,
  "mode": "local",
  "controlUi": {
    "dangerouslyAllowHostHeaderOriginFallback": true
  },
  "auth": {
    "mode": "token",
    "token": "你的token"
  }
}

4.3 修改 systemd 服务

vi ~/.config/systemd/user/openclaw-gateway.service

修改 ExecStart

ExecStart=/usr/bin/node /usr/lib/node_modules/openclaw/dist/index.js gateway --bind lan

重启服务:

systemctl --user daemon-reload
openclaw gateway restart
openclaw gateway status

五、配置 HTTPS(解决浏览器安全限制)

5.1 为什么需要 HTTPS

┌──────────────────────────────────────────────────────┐
│  浏览器安全策略                                         │
├──────────────────────────────────────────────────────┤
│  HTTP + 非localhost → ❌ "device identity required"    │
│  HTTPS + 域名 → ✅ 正常访问                             │
└──────────────────────────────────────────────────────┘

5.2 方案:宝塔面板 + Let's Encrypt

步骤 1:安装宝塔

curl -sSO https://download.bt.cn/install/install_panel.sh
bash install_panel.sh ed8484bec

步骤 2:配置反向代理

  1. 登录宝塔(http://IP:8888
  2. 添加站点(填写域名)
  3. SSL → Let's Encrypt → 申请证书
  4. 反向代理 → 目标 URL:http://127.0.0.1:18789

步骤 3:访问

https://你的域名

六、设备配对

6.1 获取 Token

cat ~/.openclaw/openclaw.json | grep token

6.2 配对流程

┌─────────────────────┐        ┌─────────────────────┐
│  浏览器访问 HTTPS    │   →    │  输入 Token          │
└─────────────────────┘        └─────────────────────┘
                                      ↓
┌─────────────────────┐        ┌─────────────────────┐
│  Chat 页面配对请求   │   →    │  服务器端批准         │
└─────────────────────┘        └─────────────────────┘

参考官方文档:https://docs.openclaw.ai/channels/pairing


七、常见问题速查

问题 解决方案
进程被杀 / OOM 加 Swap
无法访问 18789 改 bind=lan + controlUi 配置
浏览器报错 device identity 用 HTTPS
找不到 pairing 命令 openclaw pairing
Gateway 启动失败 检查日志:journalctl --user -u openclaw-gateway.service

八、命令速查

# Gateway 管理
openclaw gateway start
openclaw gateway stop
openclaw gateway restart
openclaw gateway status

# 配置
openclaw config dir
cat ~/.openclaw/openclaw.json

# 日志
journalctl --user -u openclaw-gateway.service -n 50 --no-pager
tail -f /tmp/openclaw/openclaw-*.log

# 配对
openclaw pairing list
openclaw pairing approve <channel> <code>

九、架构图

┌─────────────────────────────────────────────────────────────────┐
│                        外部访问                                   │
└─────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│  宝塔面板 (443/HTTPS)                                            │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │  SSL 证书 (Let's Encrypt)                                 │  │
│  │  反向代理 → http://127.0.0.1:18789                        │  │
│  └───────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│  OpenClaw Gateway (bind: lan, port: 18789)                      │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │  配置文件: ~/.openclaw/openclaw.json                      │  │
│  │  Token 认证                                              │  │
│  │  设备配对                                                 │  │
│  └───────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│  AI 模型 (GLM-5 / 通义千问 / 其他)                               │
└─────────────────────────────────────────────────────────────────┘

十、完成检查清单

  • Swap 已启用
  • Node.js 22 已安装
  • OpenClaw 已安装
  • Gateway bind=lan
  • controlUi 配置已添加
  • 宝塔面板已安装
  • SSL 证书已配置
  • 反向代理已设置
  • 设备已配对
  • Chat 页面正常

文档版本:2026-02-25 适用版本:OpenClaw 2026.2.23 测试环境:CentOS Stream 9 + 2GB 内存


评论