M4 MacBook Max(主机)+ M4 Mac mini(AI 节点)
MacBook 对 Mac mini 完全不受限,OpenClaw 拥有管理员级权限,但永远无法触及 MacBook、NAS 及局域网任何设备。

图:Mac mini 作为隔离 AI 节点,唯一的授权通道是加密的 Tailscale 隧道
架构
家庭路由器
│
├── 主网络(MacBook Max、NAS、手机、智能设备…)
│
└── Guest WiFi ← Mac mini
│ ├── OpenClaw Gateway(ai 用户,可 sudo)
│ └── Agent Sandbox(Docker,network:none)
│ └── 仅 ~/workspace → /workspace
│
└── ✕ 到主网络的一切流量(路由器硬件级阻断)
Tailscale(overlay network)
│
MacBook ───全端口互通──→ Mac mini(100.x.x.x)
手机 ───全端口互通──→ Mac mini(100.x.x.x)
为什么这是终极结构:
Guest WiFi 在路由器芯片层面阻断 Mac mini 到主网络的一切通信。Mac mini 上的任何进程——包括 root——都无法突破这个边界。这不是软件规则,是网络拓扑上的物理隔离。
Tailscale 在隔离之上建立了一条加密隧道,让 MacBook 和手机能"穿透"Guest WiFi 的墙直接访问 Mac mini。SSH、屏幕共享、文件传输、Web UI、任意端口——全部可用,体验等同局域网直连。同一物理网络下 Tailscale 的额外延迟在 1-2ms 以内。
NAS 没有安装 Tailscale,所以它不存在于这个隧道网络中。Mac mini 永远看不到 NAS。

图:路由器 Guest WiFi 将 Mac mini 与主网络物理隔离,Tailscale 是唯一授权通道
安全边界在路由器上,不在 Mac mini 上。 被保护的对象(Mac mini)无法修改保护它的规则(路由器的 Guest WiFi 隔离)。这是安全架构的基本原则。

图:被保护对象无法触及保护规则本身——笼中的 AI 节点,钥匙始终在外
部署步骤

图:四阶段部署流程:系统配置 → 软件安装 → 安全配置 → 验证
第一阶段:系统(接显示器操作,约 15 分钟)
步骤 1 — 创建用户
系统设置 → 用户与群组 → 添加用户:
用户名:ai
类型:管理员
Apple ID:不登录
管理员身份让 ai 用户拥有 sudo 能力。OpenClaw 需要提权操作时走 sudo,而不是以 root 身份常驻运行。
步骤 2 — 自动登录
系统设置 → 用户与群组 → 登录选项 → 自动登录 → ai
步骤 3 — 连接 Guest WiFi
系统设置 → Wi-Fi → 连接路由器的 Guest WiFi
路由器管理后台 → Guest Network DHCP → 给 Mac mini 绑固定 IP(例如 192.168.2.50)
步骤 4 — 共享设置
系统设置 → 通用 → 共享:
✅ 远程登录(SSH)
✅ 唤醒以供网络访问
❌ 其他全部关闭
步骤 5 — 关闭自动更新
系统设置 → 通用 → 软件更新 → 关闭全部自动选项
步骤 6 — 插 HDMI Dummy Plug
步骤 7 — 防睡眠
sudo pmset -a sleep 0 disksleep 0 displaysleep 10 \
tcpkeepalive 1 ttyskeepawake 1 autopoweroff 0 powernap 0
第二阶段:软件安装(可 SSH 操作,约 20 分钟)
步骤 8 — Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
步骤 9 — 基础工具
brew install node@22 btop
brew install --cask docker tailscale
步骤 10 — Docker Desktop
启动 Docker Desktop,完成初始设置:
- General → 勾选
Start Docker Desktop when you sign in - Resources → Memory → 物理内存的 60%
步骤 11 — Tailscale
Mac mini 上启动 Tailscale,登录。记下 100.x.x.x IP。
MacBook 和手机也安装 Tailscale,同一账户登录。
登录 https://login.tailscale.com/admin:
- Machines → Mac mini → 添加标签
tag:ai-node - Machines → MacBook / 手机 → 添加标签
tag:controller - Access Controls → 编辑:
{
"tagOwners": {
"tag:controller": ["autogroup:admin"],
"tag:ai-node": ["autogroup:admin"]
},
"acls": [
{
"action": "accept",
"src": ["tag:controller"],
"dst": ["tag:ai-node:*"]
},
{
"action": "deny",
"src": ["*"],
"dst": ["*"]
}
]
}
从 MacBook 验证:
ssh [email protected]
步骤 12 — OpenClaw
npm install -g openclaw@latest
openclaw onboard --install-daemon
引导向导:
- Gateway mode →
Local gateway (this machine) - Model provider → Anthropic API Key(或你的选择)
- Install daemon → Yes
步骤 13 — 沙箱镜像
git clone https://github.com/openclaw/openclaw.git ~/openclaw-repo
cd ~/openclaw-repo
scripts/sandbox-setup.sh
步骤 14 — 工作目录
mkdir -p ~/workspace/{safe,unsafe,.snapshots}
步骤 15 — sudo 精细化授权
sudo visudo -f /etc/sudoers.d/ai-openclaw
写入:
ai ALL=(ALL) NOPASSWD: /opt/homebrew/bin/brew, /usr/sbin/softwareupdate, /bin/mkdir, /bin/chmod, /bin/chown, /usr/sbin/chown, /usr/local/bin/docker, /usr/bin/pmset
只放行 AI 可能需要 root 执行的具体命令。其他所有 sudo 操作仍需密码。
第三阶段:安全配置(约 10 分钟)
步骤 16 — Gateway Token
echo "OPENCLAW_GATEWAY_TOKEN=$(openssl rand -base64 32)" > ~/.openclaw/.env
chmod 600 ~/.openclaw/.env
步骤 17 — 核心配置
cat > ~/.openclaw/openclaw.json << 'CONF'
{
"gateway": {
"mode": "local",
"bind": "loopback",
"port": 18789,
"auth": {
"mode": "token",
"token": "${OPENCLAW_GATEWAY_TOKEN}"
}
},
"discovery": {
"mdns": { "mode": "off" }
},
"channels": {
"whatsapp": { "dmPolicy": "pairing" },
"telegram": { "dmPolicy": "pairing" }
},
"tools": {
"exec": {
"applyPatch": { "workspaceOnly": true }
},
"fs": { "workspaceOnly": true }
},
"agents": {
"defaults": {
"workspace": "~/workspace/unsafe",
"sandbox": {
"mode": "all",
"scope": "agent",
"workspaceAccess": "rw",
"docker": {
"image": "openclaw-sandbox:bookworm-slim",
"network": "none",
"readOnlyRoot": true,
"capDrop": ["ALL"],
"tmpfs": ["/tmp", "/var/tmp", "/run"],
"pidsLimit": 256,
"memory": "2g",
"cpus": 2,
"user": "65532:65532"
}
}
}
}
}
CONF
chmod 600 ~/.openclaw/openclaw.json
每行配置的作用:
| 配置项 | 作用 |
|---|---|
bind: "loopback" |
Gateway 只听 127.0.0.1,Tailscale 通过本机代理访问 |
auth.mode: "token" |
所有连接需 token 认证 |
mdns.mode: "off" |
不广播 OpenClaw 存在(不影响系统 AirDrop 等) |
dmPolicy: "pairing" |
陌生人需配对才能给 bot 发消息 |
fs.workspaceOnly |
文件工具限制在 workspace 内 |
sandbox.mode: "all" |
所有会话的工具执行走 Docker 沙箱 |
sandbox.docker.network: "none" |
沙箱容器零网络(连 DNS 都不通) |
sandbox.docker.readOnlyRoot |
容器根文件系统只读 |
sandbox.docker.capDrop: ["ALL"] |
丢弃全部 Linux capabilities |
sandbox.docker.user: "65532:65532" |
nobody 用户,不与宿主机 uid 重叠 |
步骤 18 — 每日快照
crontab -e
0 3 * * * rsync -a ~/workspace/safe/ ~/workspace/.snapshots/$(date +\%F)/
0 4 * * * find ~/workspace/.snapshots/ -maxdepth 1 -type d -mtime +30 -exec rm -rf {} +
步骤 19 — 首次权限弹窗
接显示器或屏幕共享,启动 OpenClaw 后通过 Web UI 让 AI 执行测试命令,逐一批准 macOS 弹出的权限请求:
ls ~/workspace/unsafe
echo "test" > ~/workspace/unsafe/test.txt
cat ~/workspace/unsafe/test.txt
rm ~/workspace/unsafe/test.txt
第四阶段:验证(约 5 分钟)
步骤 20 — 逐条检查
# 1. Gateway 健康
openclaw health
# 2. 监听地址
lsof -i :18789
# → 127.0.0.1:18789
# 3. 安全审计
openclaw security audit --deep
# → 修复所有 CRITICAL / WARNING
# 4. 沙箱镜像
docker images | grep openclaw-sandbox
# → openclaw-sandbox:bookworm-slim
# 5. 睡眠禁用
pmset -g | grep -E "sleep|autopoweroff"
# → sleep 0, autopoweroff 0
# 6. iCloud 不存在
ls ~/Library/Mobile\ Documents/ 2>&1
# → No such file or directory
# 7. 无 NAS 挂载
ls /Volumes/
# → 仅 Macintosh HD
# 8. Keychain 无网络凭证
security dump-keychain 2>&1 | grep -ci smb
# → 0
# 9. Mac mini 无法访问 NAS(从 Mac mini 终端执行)
ping -c 2 192.168.1.100 # 你 NAS 的主网络 IP
# → 超时,不可达
# 10. Mac mini 可以上外网
curl -sI https://api.anthropic.com | head -1
# → HTTP/2 200(或类似响应)
# 11. MacBook 完全访问 Mac mini(从 MacBook 执行)
ssh [email protected] # → 成功
curl -s http://100.x.x.x:18789 | head -1 # → 有响应
日常使用
# MacBook SSH
ssh [email protected]
# MacBook 浏览器
http://100.x.x.x:18789
# 手机
# Tailscale app 同账户 → 浏览器同地址
# 或 Telegram bot 直接对话

图:无论身处何地,通过 Tailscale 加密隧道访问 Mac mini,体验等同本地直连
日常运维
# 每周(30 秒)
openclaw security audit && openclaw health
# 每月(5 分钟)
npm update -g openclaw@latest
docker system prune -f
du -sh ~/.openclaw/
memory_pressure -l warn 2>&1 | head -5
# 不定期
ls ~/workspace/unsafe/
mv ~/workspace/unsafe/<已验证项目> ~/workspace/safe/
三层隔离总览

图:三层同心防护圈——路由器(外层)、Docker 沙箱(中层)、OpenClaw 配置(内层),Tailscale 是唯一授权入口
┌─────────────────────────────────────────────────────────┐
│ 第一层:路由器 Guest WiFi(硬件级,不可被 Mac mini 突破)│
│ 效果:Mac mini ──✕──→ NAS / MacBook / 所有 LAN 设备 │
└─────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────┐
│ 第二层:Docker Sandbox network:none(容器级) │
│ 效果:AI 工具执行 ──✕──→ 任何网络(包括外网) │
│ AI 文件访问 ──✕──→ workspace 以外的一切 │
└─────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────┐
│ 第三层:OpenClaw 配置(应用级) │
│ 效果:未授权用户 ──✕──→ Gateway / Web UI / Bot 消息 │
│ OpenClaw mDNS ──✕──→ 广播自身存在 │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Tailscale overlay(穿透隔离的唯一通道) │
│ MacBook ──✓──→ Mac mini 全端口 │
│ 手机 ──✓──→ Mac mini 全端口 │
│ NAS ──✕──→ Mac mini(NAS 不在 Tailscale 网络中) │
└─────────────────────────────────────────────────────────┘
每层解决一个问题,不重叠:
| 层 | 解决什么 | 谁控制 | 能被 Mac mini root 绕过吗 |
|---|---|---|---|
| Guest WiFi | Mac mini 不可达 LAN | 路由器 | 不能 |
| Docker Sandbox | AI 工具执行隔离 | Docker 引擎 | 沙箱内不能,宿主机 root 理论上能 |
| OpenClaw 配置 | 访问控制与信息泄露 | 配置文件 | 能改,但无实际攻击动机 |
| Tailscale ACL | 谁能连 Mac mini | Tailscale 云端 | 不能 |
完成
20 步,从拆箱到终态。合上 MacBook,Mac mini 永续运行。你从任何地方通过 Tailscale 访问它,跟坐在它面前一样。你的 NAS、MacBook、家庭网络的所有设备,对 Mac mini 来说不存在。