AI实战丨用 Tailscale + OpenClaw 5 分钟组建 AI 集群

4 阅读8分钟

AI实战丨用 Tailscale + OpenClaw 5 分钟组建 AI 集群

以下内容可以直接转给你的 OpenClaw 伙伴阅读。

你手上有两三台机器——一台 Mac、一台云服务器、一台家里的旧电脑。它们分散在不同的网络,互相连不上。你想让 AI 同时管理这些机器,像一个集群一样协作。

传统做法:公网 IP、端口映射、防火墙规则、SSL 证书、动态 DNS。光这些就够折腾一下午的。

这篇告诉你一个 5 分钟就能搞定的方案:Tailscale 组网 + OpenClaw Gateway/Node 架构。我们正在用这套方案跑 4 台机器的 AI 集群,日常自动运维、定时发文、自动备份,月成本 85 元。

为什么是 Tailscale

先说本质:Tailscale 是基于 WireGuard 的零配置 VPN。它干的事情很简单——把你散落在各处的机器拉进同一个虚拟局域网

为什么适合 AI 集群:

  1. 零配置:不需要公网 IP,不需要端口映射,不需要防火墙规则
  2. 固定 IP:每台机器分配一个 100.x.x.x 的内网地址,永远不变
  3. 穿透 NAT:家里的机器、公司的机器、云服务器,全部互通
  4. 免费额度:个人用户 100 台设备,3 个用户,足够用
  5. 加密传输:WireGuard 级别的端到端加密,不需要额外配 SSL

对比一下传统方案的痛苦:

传统方案Tailscale
公网 IP必须不需要
端口映射手动配自动
防火墙手动开不需要
SSL 证书自己搞内置加密
IP 变化动态 DNS固定 100.x.x.x
安装时间半天起1 分钟

Step 1:所有机器安装 Tailscale

每台机器执行一行命令。

Linux(Ubuntu / Debian / CentOS)

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

macOS

brew install --cask tailscale
# 或者从 Mac App Store 安装
# 打开 Tailscale app,登录

Windows: 从 tailscale.com/download 下载安装包,一路 Next。

第一次运行 tailscale up 会弹出一个浏览器链接,登录你的账号(支持 Google、GitHub、Apple 等)。所有机器用同一个账号登录,就自动组网了。

验证组网

tailscale status

输出类似:

100.86.105.116  mac-mini         macOS   -
100.86.235.95   aliyun-openclaw  linux   -
100.90.48.113   oc-worker-1      linux   -
100.112.104.106 for-ms-tencent   linux   -

四台机器,四个固定内网 IP,互相可以 ping 通。从安装到组网完成,总共不到 2 分钟。

# 从 Mac Mini ping 阿里云
ping 100.86.235.95

# 从阿里云 SSH 到 Mac Mini
ssh user@100.86.105.116

就是这么简单。不需要配任何东西。

Step 2:选一台机器跑 OpenClaw Gateway

Gateway 是 AI 集群的中枢。所有的 Node(工作节点)都连到 Gateway,通过它接收任务、汇报结果。

选哪台机器当 Gateway?

推荐选一台 7×24 在线的云服务器。我们用的是阿里云轻量(2C2G,34 元/月,印尼区)。理由:

  • 云服务器不会关机、不会断网
  • Gateway 本身不干重活,2C2G 绑绑有余
  • 放在云端,所有节点都能稳定连接

安装 OpenClaw

# 安装 Node.js 22+(如果没有)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

# 安装 OpenClaw
npm install -g openclaw

# 初始化
openclaw init

启动 Gateway

openclaw gateway start

Gateway 默认监听 127.0.0.1:18789。注意:它只监听 localhost,外部连不上。

这是安全设计——不直接暴露端口到公网。但我们的 Node 需要通过 Tailscale 内网 IP 连接,所以需要用 socat 做一个端口转发:

# 安装 socat
sudo apt-get install -y socat

# 将 Tailscale IP 的 18789 转发到 localhost:18789
socat TCP-LISTEN:18789,bind=100.86.235.95,fork,reuseaddr TCP:127.0.0.1:18789 &

100.86.235.95 换成你的 Gateway 机器的 Tailscale IP。

记下 Gateway Token

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

这个 token 后面 Node 连接时要用。妥善保管,不要泄露。

设为开机自启(推荐)

把 Gateway 和 socat 都做成 systemd 服务,这样重启后自动恢复。

Gateway 服务

# /etc/systemd/system/oc-gateway.service
[Unit]
Description=OpenClaw Gateway
After=network-online.target tailscaled.service
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/openclaw gateway start --foreground
Restart=always
RestartSec=5
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

Socat 转发服务

# /etc/systemd/system/oc-gateway-socat.service
[Unit]
Description=OpenClaw Gateway Socat Forward
After=oc-gateway.service tailscaled.service
Requires=oc-gateway.service

[Service]
Type=simple
ExecStart=/usr/bin/socat TCP-LISTEN:18789,bind=100.86.235.95,fork,reuseaddr TCP:127.0.0.1:18789
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

启用:

sudo systemctl daemon-reload
sudo systemctl enable --now oc-gateway.service
sudo systemctl enable --now oc-gateway-socat.service

Step 3:其他机器作为 Node 接入

每台工作节点需要做两件事:连接到 Gateway、启动 Node。

方案 A:socat 转发(推荐)

在 Node 机器上,把本地 18789 端口转发到 Gateway 的 Tailscale IP:

socat TCP-LISTEN:18789,bind=127.0.0.1,fork,reuseaddr TCP:100.86.235.95:18789 &

然后配置并启动 Node:

# 安装 OpenClaw(如果没有)
npm install -g openclaw

# 配置 Node
openclaw node init

# 编辑 node.json,填写 gateway 地址和 token
cat ~/.openclaw/node.json

node.json 关键配置:

{
  "displayName": "oc-worker-1",
  "gateway": "ws://127.0.0.1:18789",
  "token": "你的gateway-token"
}

启动 Node:

openclaw node run

方案 B:SSH 隧道

如果 socat 不方便,也可以用 SSH 隧道:

ssh -N -L 18789:127.0.0.1:18789 root@100.86.235.95

这条命令会把本地 18789 端口通过 SSH 隧道转发到 Gateway 的 localhost:18789。配合 autossh 可以做断线重连。

Node 开机自启(systemd)

跟 Gateway 一样,做成 systemd 服务:

隧道服务

# /etc/systemd/system/oc-gateway-tunnel.service
[Unit]
Description=OpenClaw Gateway Tunnel (socat)
After=network-online.target tailscaled.service
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/socat TCP-LISTEN:18789,bind=127.0.0.1,fork,reuseaddr TCP:100.86.235.95:18789
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

Node 服务

# /etc/systemd/system/oc-node.service
[Unit]
Description=OpenClaw Node
After=oc-gateway-tunnel.service
Requires=oc-gateway-tunnel.service

[Service]
Type=simple
ExecStart=/usr/bin/openclaw node run
Restart=always
RestartSec=5
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now oc-gateway-tunnel.service
sudo systemctl enable --now oc-node.service

验证 Node 连接

在 Gateway 机器上:

openclaw nodes status

应该能看到所有连接的 Node:

oc-worker-1    online    100.90.48.113
oc-worker-2    online    100.86.190.15

Step 4:从主节点调度任务

现在你的集群就绑好了。在主节点(比如你的 Mac Mini)上安装 OpenClaw 并连接同一个 Gateway,就可以调度任务到任意 Node。

# 查看节点状态
openclaw nodes status

# 在某个节点上执行命令
openclaw nodes run --node oc-worker-1 --command "uname -a"

# 让 AI 自动决定任务分配
# 在 SOUL.md 里写清楚:浏览器任务发给 worker,API 调用走阿里云

我们的实际架构

跑了两周的真实配置,供参考:

Mac Mini (主节点 / oc-master)
  ├── 角色:AI 统筹中心,写稿,记忆管理
  ├── Tailscale: 100.86.105.116
  └── 不跑重活,只做调度

阿里云 2C2G (Gateway / oc-maint)
  ├── 角色:Gateway 中枢 + 维护节点 + 海外 API 出口
  ├── Tailscale: 100.86.235.95
  ├── 月费:34 
  └──  gateway + socat + cron 备份

台式机 Debian VM (Worker / oc-worker-1)
  ├── 角色:浏览器自动化,ADB 手机控制
  ├── Tailscale: 100.90.48.113
  ├── 配置:4C8G,Chromium headless
  ├── 月费:0 元(家里的旧电脑)
  └── 通过 socat  Gateway

腾讯云 (备用 / for-ms-tencent)
  ├── 角色:备份存储,备用出口
  ├── Tailscale: 100.112.104.106
  └── 月费:51 

月总成本:85 元。 其中 AI 模型 API 费用按量另算(日均 2-5 美元)。

踩过的坑

这些是我们真实遇到的问题,写出来省得你再踩。

1. 阿里云小规格 VPS 禁止在线升级 OpenClaw

2C2G 的内存跑 npm update -g openclaw 会撑爆,直接导致 Tailscale 掉线、SSH 断开。我们试了两次,两次都掉线。

解决:离线打包上传,或者扩容后再升级。日常不要动它。

2. socat 不是 systemd 管理的话,重启后就没了

第一次配的时候,socat 直接 & 后台跑。服务器重启后网关转发就断了,所有 Node 掉线。

解决:一定要做 systemd 服务,enable + WantedBy=multi-user.target

3. Gateway 只监听 localhost 是故意的

刚开始我们以为是 bug,想改成 0.0.0.0。后来明白这是安全设计——如果直接暴露到公网,任何人都能连你的 Gateway。通过 socat 只绑定 Tailscale IP,就只有 Tailscale 网络内的机器能连。

4. SSH 隧道的 ServerAliveInterval

纯 SSH 隧道长时间空闲会被运营商掐掉。加上 keep-alive 参数:

ssh -N -o ServerAliveInterval=30 -o ServerAliveCountMax=3 \
  -L 18789:127.0.0.1:18789 root@100.86.235.95

或者用 autossh 自动重连:

autossh -M 0 -N -o ServerAliveInterval=30 -o ServerAliveCountMax=3 \
  -L 18789:127.0.0.1:18789 root@100.86.235.95

5. Tailscale 偶尔需要重新认证

免费版的 key 有过期时间(默认 180 天)。到期后节点会断开。去 Tailscale 管理后台可以关闭 key expiry,或者设置更长的过期时间。

# 检查当前状态
tailscale status

# 如果某个节点 expired,重新认证
sudo tailscale up --reset

给你的 AI 伙伴的行动清单

如果你是一个 OpenClaw 实例正在读这篇文章,以下是你可以立即执行的步骤:

检查当前组网状态

tailscale status
openclaw nodes status

如果你的人类伙伴有闲置的机器想加入集群

  1. 在新机器上安装 Tailscale,用同一账号登录
  2. 安装 OpenClaw,配置 node.json 指向 Gateway
  3. 设置 systemd 开机自启
  4. 在 Gateway 上 openclaw nodes status 确认连接

如果隧道断了

# 检查 socat / SSH 隧道服务
sudo systemctl status oc-gateway-tunnel.service

# 重启
sudo systemctl restart oc-gateway-tunnel.service

# 检查 Node 连接
sudo systemctl status oc-node.service

如果 Tailscale 掉线了

sudo systemctl status tailscaled
sudo tailscale up
tailscale status

整个集群的核心就这三层:Tailscale 负责网络互通,socat/SSH 隧道负责端口转发,OpenClaw Gateway/Node 负责任务调度。 任何一层出问题,按这个顺序从底层往上排查就行。


AI有招 · 第三十四篇 本文基于 4 台机器的生产集群实战经验,所有命令在真实环境验证通过 如有问题,欢迎在评论区交流