在笔记本上,盖子一合 OpenClaw 就不说话了:WhatsApp 消息越积越多,定时任务只能等你回来。放到服务器上,它会一直回复。问题在于,网关不是一个聊天小部件。它保存着你各个渠道的凭据,而且在你开启沙箱之前,会直接在主机上运行工具。把它搬到一台常开的机器上,只有安全模型一起搬过去才值得。
本指南在一台全新的 Ubuntu 24.04 VPS 上,用大约 20 分钟完成这件事。
最后核实:2026-10-04,OpenClaw 2026.9.8(npm)、Node 24.21 LTS、Ubuntu 24.04。
你需要什么
- 一台 Linux VPS。我们用自己的 AI-Agent 套餐:4 vCPU、4 GB 内存、40 GB 磁盘,每月 10 美元。OpenClaw 文档提到 6 GB 内存,但那是从源码构建他们的 Docker 镜像所需;npm 包不需要构建。
- 模型提供商的 API 密钥,以及你想接入的聊天账号。
- 笔记本上的 SSH 密钥。还没有的话:SSH 密钥登录。
这里用 NAT 套餐完全没问题,甚至可以说更合适。网关从来不需要开放入站端口:WhatsApp、Discord 和 Telegram(默认长轮询)都是主动向外连接,控制面板通过 SSH 访问。只有当你需要的某个渠道通过 webhook 投递,或者打算在前面放公网反向代理时,才需要独立 IPv4。
1. 一个不是 root 的用户
OpenClaw 以拥有网关的那个用户身份运行工具。如果这个用户是 root,那么一个糊涂了或被提示注入操纵的模型决定执行的每条命令,也都以 root 身份执行。OpenClaw 文档直接把以 root 运行网关称为不安全且不受支持。创建一个没有 sudo 权限的专用用户:
# 以 root 执行
apt update && apt -y upgrade
adduser --disabled-password --gecos "" claw
install -d -m 700 -o claw -g claw /home/claw/.ssh
install -m 600 -o claw -g claw ~/.ssh/authorized_keys /home/claw/.ssh/authorized_keys # 下单时添加的密钥
loginctl enable-linger claw
最后一行比看上去更重要。OpenClaw 安装的是 systemd 用户服务,没有 lingering 的话,你一退出登录服务就停了。这是服务器上最常见的“昨天还好好的”。
2. Node 24 与 OpenClaw
OpenClaw 2026.9.8 要求 Node >=24.16.0 <25 或 >=26.1.0。Ubuntu 自带的 nodejs 包版本更旧,所以我们从 NodeSource 安装 24 LTS:
# 以 root 执行
curl -fsSL https://deb.nodesource.com/setup_24.x | bash -
apt install -y nodejs
node -v # v24.16.0 或更高
npm install -g openclaw@latest
openclaw --version
官方的一行安装命令(curl -fsSL https://openclaw.ai/install.sh | bash)同样可用,还会替你装好 Node。在服务器上我们更喜欢两步显式安装:你能看清什么装到了哪里,而且可执行文件位于 /usr/bin,而不是智能体可以写入的家目录。
3. 以智能体用户完成初始化
以 claw 身份通过 SSH 登录,不要用 su。只有真正的登录才会启动服务所需的 systemd 用户管理器:
# 在笔记本上(NAT 套餐:加上 -p <你的 SSH 端口>)
ssh claw@<server>
openclaw onboard --install-daemon
openclaw gateway status
向导会检查模型访问、写入 ~/.openclaw/openclaw.json、生成网关令牌并安装服务。如果 systemctl --user 报总线错误,先执行 export XDG_RUNTIME_DIR=/run/user/$(id -u) 再重试。
然后把文件权限收紧。OpenClaw 官方建议状态目录用 700,配置文件用 600:
chmod 700 ~/.openclaw && chmod 600 ~/.openclaw/openclaw.json
openclaw security audit --deep
openclaw security audit --fix 会应用其中安全的那部分修复:更严格的文件权限,以及用允许列表替换开放的群组策略。它不会改变监听地址,也不会替你配置防火墙;网络暴露面仍然要你自己管。
4. 让网关留在 loopback
网关在同一个端口 18789 上提供 WebSocket API 和控制面板,默认绑定 127.0.0.1。保持这样。一个把这点写明白的最小配置:
// ~/.openclaw/openclaw.json
{
gateway: {
mode: "local",
bind: "loopback",
port: 18789,
auth: { mode: "token", token: "paste-output-of-openssl-rand-hex-32" },
},
}
用 openssl rand -hex 32 或 openclaw doctor --generate-gateway-token 生成令牌。网关会拒绝空令牌和示例占位值,审计在令牌短于 24 个字符时会发出警告。
不要这样做:把 bind 改成 "lan" 再开放端口。文档说得很直白:永远不要在 0.0.0.0 上无认证地暴露网关,即使有令牌也不要大范围转发端口。谁拿到这个令牌,谁就成了一个能在你服务器上执行命令的进程的操作员。
防火墙方面,只放行 SSH,别的都不放:
# 以 root 执行
ufw allow OpenSSH
ufw enable
ufw status verbose
在我们的 NAT 套餐上,控制台显示的是外部 SSH 端口,但服务器内部 sshd 依然监听 22。放行 OpenSSH(22 端口),而不是外部端口号,否则 ufw enable 会把你锁在门外。详见 UFW 指南。
5. 通过 SSH 访问控制面板
在笔记本上打开一个隧道并保持运行:
ssh -N -L 18789:127.0.0.1:18789 claw@<server>
# NAT 套餐:ssh -N -p <你的 SSH 端口> -L 18789:127.0.0.1:18789 claw@<host>
打开 http://127.0.0.1:18789/,粘贴网关令牌。Ubuntu 默认的 sshd 允许本地转发;如果你做过加固,AllowTcpForwarding local 就是允许 -L 同时禁止远程转发的那项设置。隧道若报 administratively prohibited,就检查这一行。
tailnet 也可以:Tailscale Serve 让网关留在 loopback,并负责访问控制。两种都行。公网端口不行。
6. 配对、沙箱,以及谁能跟它说话
聊天渠道是另一道门。默认情况下,支持私信的渠道会要求陌生发送者先配对;由你在服务器上批准:
openclaw pairing approve <channel> <code>
在群组里要求 @ 提及,这样智能体不会回复群里的每一条消息。OpenClaw 的加固基线为每个渠道设置 dmPolicy: "pairing" 和 groups: { "*": { requireMention: true } }。
两点坦白的提醒。第一:配对控制的是谁能触发一轮对话,而不是什么内容会进入模型上下文;一条转发的消息或一个抓取的网页,仍可能左右你自己触发的那一轮。第二:在你开启沙箱之前,主会话的工具都在主机上运行(agents.defaults.sandbox.mode: "non-main" 会把除你自己主会话之外的一切放进沙箱)。沙箱默认关闭,默认后端是 Docker,所以开启前先装好 Docker:在 VPS 上安装 Docker。如果你不信任的人和机器人共用同一个渠道,就给他们单独一个网关,最好放在另一台服务器上。
7. 更新与备份
openclaw update
openclaw gateway status
openclaw backup create --output ~/backups/openclaw --verify
~/.openclaw 里有配置、渠道凭据(包括 WhatsApp 会话)、模型认证配置和会话记录。丢了它,就要把所有东西重新配对;泄露了它,别人就能在 WhatsApp 上冒充你。做好备份,并把副本放在服务器之外:用 scp 下载下来,或者使用带加密的 restic。
检查清单
| 检查项 | 命令 | 期望结果 |
|---|---|---|
| 网关不以 root 运行 | ps -eo user,args | grep '[o]penclaw' | 第一列是 claw |
| 退出登录后仍在运行 | loginctl show-user claw -p Linger | Linger=yes |
| 只监听 loopback | ss -ltnp | grep 18789 | 127.0.0.1:18789 |
| 没有公网端口 | ufw status | 只有 OpenSSH |
| 配置文件不可被所有人读取 | stat -c '%a' ~/.openclaw/openclaw.json | 600 |
| 审计干净 | openclaw security audit --deep | 没有严重问题 |
EQVPS 的位置
能跑 Node 进程的服务商很多。我们多给的是:无需 KYC 的加密货币支付、适合只监听 loopback 的网关的 NAT 套餐,以及一个让你的智能体自己管理服务器的 MCP 服务器。如果你把 OpenClaw 接到它上面,请先读 MCP 安全护栏:一个能下单买服务器的令牌,值得和网关令牌同样谨慎对待。想更全面地了解在 VPS 上运行智能体,请看 AI 智能体指南。
我们的看法:这 20 分钟,就是一个助手和一个带聊天界面的敞开 shell 之间的区别。就算跳过其他步骤,也至少做完第 1、4、5 步。
评论
暂无评论。来做第一个吧。