−25%

Windows 按年付费,截至 10 月 31 日。 查看套餐

EQVPS
开始使用

在 VPS 上 24/7 运行 OpenClaw:安全部署

把 OpenClaw 网关放在一台永不休眠的服务器上,同时不把一个能执行命令的智能体暴露在公网。独立用户、网关只监听 loopback 端口 18789、SSH 隧道、配对与备份。

在笔记本上,盖子一合 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 LingerLinger=yes
只监听 loopbackss -ltnp | grep 18789127.0.0.1:18789
没有公网端口ufw status只有 OpenSSH
配置文件不可被所有人读取stat -c '%a' ~/.openclaw/openclaw.json600
审计干净openclaw security audit --deep没有严重问题

EQVPS 的位置

能跑 Node 进程的服务商很多。我们多给的是:无需 KYC 的加密货币支付、适合只监听 loopback 的网关的 NAT 套餐,以及一个让你的智能体自己管理服务器的 MCP 服务器。如果你把 OpenClaw 接到它上面,请先读 MCP 安全护栏:一个能下单买服务器的令牌,值得和网关令牌同样谨慎对待。想更全面地了解在 VPS 上运行智能体,请看 AI 智能体指南。

我们的看法:这 20 分钟,就是一个助手和一个带聊天界面的敞开 shell 之间的区别。就算跳过其他步骤,也至少做完第 1、4、5 步。

准备好部署了?加密货币付款、无需KYC——约一分钟上线。

立即部署 →

常见问题

OpenClaw 需要哪个版本的 Node.js?

24 系列的 Node 24.16 或更高,或者 26.1 及以上。npm 包(撰写本文时为 openclaw 2026.9.8)会拒绝其他版本,所以 Node 22 不够。在 Ubuntu 上,NodeSource 的 24.x 仓库提供当前的 24 LTS。

需要把 18789 端口开放到公网吗?

不需要。网关默认监听 loopback(127.0.0.1:18789),就应该留在那里。通过 SSH 隧道访问控制面板。绑定到 LAN 或 0.0.0.0,意味着陌生人和一个能在服务器上执行命令的进程之间,只隔着一个可能泄露的令牌。

没有独立 IPv4 的 NAT VPS 能跑 OpenClaw 吗?

能,大多数场景都可以。WhatsApp、Discord 和 Telegram(默认长轮询)都是主动向外连接,控制面板则通过你转发的 SSH 端口上的 SSH 隧道访问。只有通过 webhook 投递消息的渠道,或者你要在前面放公网反向代理时,才需要独立 IPv4。

OpenClaw 在 VPS 上需要多少内存?

网关本身很轻。OpenClaw 文档里的 6 GB 是从源码构建 Docker 镜像时的要求。用 npm 包则无需编译;我们在 AI-Agent 套餐(4 vCPU、4 GB 内存、40 GB 磁盘)上运行它,给浏览器工具和沙箱都留有余量。

我退出 SSH 之后 OpenClaw 还会继续运行吗?

只有为拥有该服务的用户开启 lingering 才会:sudo loginctl enable-linger <user>。OpenClaw 安装的是 systemd 用户单元,没有 lingering 的话,用户管理器会在你最后一个会话结束时停止。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。