2026 OpenClaw 租用 Mac Mini 实战
OPENCLAW_HOME 多实例分目录、双网关端口隔离与 CI 轮询摘要合并告警的最小可复现步骤
官方多实例思路可概括为两件事:每套状态树独占一个 OPENCLAW_HOME,以及每套网关独占监听端口(常见做法为环境变量 OPENCLAW_GATEWAY_PORT 搭配 CLI --port,具体以你安装的发行版文档为准)。在租用 Mac Mini 长期托管场景下,把两条线都写进 launchd 或 Linux 的 systemd,再配合 CI 轮询摘要与失败 Webhook做合并去重,就能把「双代理」和「夜间流水线」放在同一台机而不互相踩配置。延伸阅读:launchd 分区与标签、GitHub workflow_dispatch 夜批、升级回滚与网关基线。
目录规划
先在本机文档里固定两条「家目录 + 端口」对,例如:~/openclaw-prod → 127.0.0.1:18789、~/openclaw-ci → 127.0.0.1:18790(端口仅示例)。每棵树下各自维护 config、运行缓存与分文件日志,禁止实验树向生产树软链覆盖。若经 Caddy/Nginx 对外暴露,反代 upstream 也按端口拆开,便于防火墙只放行 443 而内网仍走回环。
第二实例安装与 onboard
新开一个干净 shell,只导出第二实例变量,避免污染已登录会话:
export OPENCLAW_HOME="$HOME/openclaw-ci" export OPENCLAW_GATEWAY_PORT=18790 # 按官方文档完成安装与 onboard;随后用文档推荐命令拉起网关并显式端口,例如: # openclaw gateway --port 18790
跑一遍 openclaw doctor(或等价自检),确认读写的全是 OPENCLAW_HOME 下文件,且监听列表里只有 18790。第一实例的 shell 不要带这两个导出,以免误把配置写进同一目录。
launchd/systemd 与 launchctl 保活要点
在 macOS 上,用两份 LaunchAgent,Label 全局唯一;ProgramArguments 使用 openclaw 的绝对路径;用 EnvironmentVariables 注入 OPENCLAW_HOME、OPENCLAW_GATEWAY_PORT 与完整 PATH(含 npm 全局 bin)。WorkingDirectory 指向该实例工作根;KeepAlive 建议对「非零退出即拉起」建模;ThrottleInterval 防止崩溃刷盘。加载与排障用 launchctl bootstrap/bootout/print 即可,不必混用未文档化的包装脚本。
若同一台机还有 Linux 分区或将来迁到 Linux 租机,systemd user unit 同样用 Environment= 与 WorkingDirectory= 成对隔离;核心仍是「环境变量 + 绝对路径 + 分单元」。与「用户分区」方案可叠加,见上文 launchd 分区文。
<key>EnvironmentVariables</key> <dict> <key>OPENCLAW_HOME</key><string>/Users/you/openclaw-ci</string> <key>OPENCLAW_GATEWAY_PORT</key><string>18790</string> <key>PATH</key><string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string> </dict>
健康检查
对两个端口分别用 curl -fsS 打文档中的只读健康或 status 路径,把「进程在」与「网关真正监听」分开观测:前者可看 launchd 最近退出码,后者确认 TCP 与 HTTP 路由无误。租机监控上建议低频探针,避免命中昂贵模型路由。
CI 轮询摘要与 Webhook 告警合并
一条常见流水线是:GitHub Actions 定时 job 用 API 拉最近失败的 workflow_run,在内存或 KV 里做15~60 分钟时间窗聚合,生成 Markdown「摘要块」;同时仓库配置失败 Webhook,由网关或旁路服务接收。合并层约定统一 JSON:包含 digest_schema_version、时间窗、失败计数、代表 run_id 列表与日志链接。对下游 IM/邮件只发一条合并消息,用 Idempotency-Key 或 (window_start,repo,branch) 去重,避免「轮询摘要」与「瞬时 Webhook」各打一次。第二实例专门吃 CI 流量时,把 Webhook 路径与 HMAC 密钥也放进其 OPENCLAW_HOME 配置,勿与生产实例共用密钥文件。
排错:端口冲突与 PATH
- 端口冲突:
lsof -iTCP:PORT -sTCP:LISTEN看占用者;核对OPENCLAW_GATEWAY_PORT与--port是否一致;反代是否仍指到旧端口。 - PATH:launchd 子进程没有交互 shell 的 profile;缺 Node/CLI 时表现为
command not found或静默旧二进制——在 plist 写全 PATH 并用which openclaw的绝对路径;改后bootout再bootstrap。
免登录:先看套餐再下单
需要一台可 SSH、可长期开机的苹果硅小机跑双实例 OpenClaw 与 CI 旁路时,可直接打开无需登录的公开页面查看规格与价格,再进入购买流。