AI实战丨用 Tailscale + OpenClaw 5 分钟组建 AI 集群
以下内容可以直接转给你的 OpenClaw 伙伴阅读。
你手上有两三台机器——一台 Mac、一台云服务器、一台家里的旧电脑。它们分散在不同的网络,互相连不上。你想让 AI 同时管理这些机器,像一个集群一样协作。
传统做法:公网 IP、端口映射、防火墙规则、SSL 证书、动态 DNS。光这些就够折腾一下午的。
这篇告诉你一个 5 分钟就能搞定的方案:Tailscale 组网 + OpenClaw Gateway/Node 架构。我们正在用这套方案跑 4 台机器的 AI 集群,日常自动运维、定时发文、自动备份,月成本 85 元。
为什么是 Tailscale
先说本质:Tailscale 是基于 WireGuard 的零配置 VPN。它干的事情很简单——把你散落在各处的机器拉进同一个虚拟局域网。
为什么适合 AI 集群:
- 零配置:不需要公网 IP,不需要端口映射,不需要防火墙规则
- 固定 IP:每台机器分配一个 100.x.x.x 的内网地址,永远不变
- 穿透 NAT:家里的机器、公司的机器、云服务器,全部互通
- 免费额度:个人用户 100 台设备,3 个用户,足够用
- 加密传输: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
如果你的人类伙伴有闲置的机器想加入集群:
- 在新机器上安装 Tailscale,用同一账号登录
- 安装 OpenClaw,配置 node.json 指向 Gateway
- 设置 systemd 开机自启
- 在 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 台机器的生产集群实战经验,所有命令在真实环境验证通过 如有问题,欢迎在评论区交流