2026 年常见路径是:官方安装脚本或包管理器装 CLI、Node 22+(以发行说明为准)、openclaw onboard 拉齐工作区、openclaw doctor 做运行态自检,再把网关绑在 127.0.0.1 或受控反代后对接 Telegram / Slack。本文只写可照做的检查命令与配置项命名习惯,便于把 CI 结果与告警推进 IM。延伸阅读:网关安全加固网关健康与 LaunchAgentGit 与 Docker 拉取加速;入口:首页帮助中心

前置检查:版本、端口、本机绑定与反向代理

远程 Mac上先对齐「谁在用哪个 Node」:node -v 应满足 OpenClaw 文档底线(常见为 22.x+);which openclaw 与交互式 shell、launchd 服务、CI 任务指向同一前缀,避免一条流水线读到另一套全局包。

端口与监听面:用 lsof -iTCP -sTCP:LISTEN -n -P | grep -E 'node|openclaw' 核对网关实际监听地址。默认建议 127.0.0.1:<port>,公网暴露改为 TLS 终止 + mTLS 或零信任隧道,由反代把 /webhook/telegram/webhook/slack 转到本机。配置项常见命名为 gateway.hostgateway.portgateway.bind(以你仓库内 openclaw.json 或环境变量为准)。

node -v && which node && which openclaw
openclaw doctor
openclaw status 2>/dev/null || true
lsof -iTCP -sTCP:LISTEN -n -P | head -n 30
维度 自建网关(远程 Mac) 托管面板类方案
运维 你可控 launchd、日志与回滚 供应商负责可用性,定制受产品边界限制
凭证 Bot Token / Webhook 留在你的密钥面 需评估供应商侧存储与审计范围
Webhook 自建 URL、自管证书与源 IP 策略 通常固定入口域名,省证书与穿透

Telegram Bot:创建、Token 写入与环境隔离的最小权限

通过官方 Bot 创建流程拿到 Bot Token 后,立刻做三件事:① 不把 Token 写进 Git,改用仅服务用户可读的密钥文件或 launchd EnvironmentVariables(示例名 TELEGRAM_BOT_TOKEN / OPENCLAW_TELEGRAM_BOT_TOKEN,以实际文档为准);② 在网关侧为 setWebhook 配置 secret_token,校验入站头 X-Telegram-Bot-Api-Secret-Token;③ Bot 权限只开「发消息 / 读更新」所需能力,禁用与业务无关的 Admin 类权限。

最小权限清单
  • 进程用户与登录用户分离;Token 文件 chmod 600
  • CI 使用只读通知 Bot 或独立 Bot,避免与交互式会话共用 Token。
  • 配置项:channels.telegram.botTokenchannels.telegram.webhookSecret、可选 channels.telegram.allowedUpdates
# 本机探测 webhook 信息(勿在公共屏幕展示返回中的 URL)
curl -sS "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getWebhookInfo" | python3 -m json.tool

Slack:Incoming Webhook 与 Slack App 方式对比

方式 安全 审计 限流 / 运营
Incoming Webhook URL 即机密,泄露等同写权限到单频道 粒度粗,多依赖 Workspace 审计导出 平台级速率限制;适合纯告警文本
Slack App + Bot Signing Secret 校验签名 + 时间窗防重放 可按 App / 事件类型过滤 事件 API 有配额;需处理重试与幂等

落地时优先把 SLACK_SIGNING_SECRETSLACK_BOT_TOKENSLACK_WEBHOOK_URL 放进与网关同级的密钥注入;OpenClaw 侧常见映射为 channels.slack.signingSecretchannels.slack.botTokenchannels.slack.incomingWebhookUrl

一步步可复现:从 openclaw 到首条测试消息

  1. 安装 CLI 后执行 openclaw onboard 生成/合并工作区与 openclaw.json
  2. openclaw doctor 修复 Node、权限与网络探测项。
  3. 写入 Telegram/Slack 环境变量或密钥文件,启动网关(手动或 LaunchAgent),确认 curl -fsS -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" http://127.0.0.1:<port>/health 成功。
  4. 将公网 HTTPS URL 登记到 Telegram setWebhook;Slack 侧把事件请求 URL 指向反代后的路径。
  5. 用 CLI 或内置调试命令发测试消息(若提供 openclaw channels test telegram 之类子命令则直接使用;否则用最小脚本调用网关已文档化的 HTTP API)。
# 健康检查示例(端口与路径按部署调整)
curl -fsS -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" \
"http://127.0.0.1:8443/health"

拉取类依赖若在跨境环境不稳定,可先对照 OpenClaw 拉取加速CI 预拉与版本一致,减少「网关起了但技能装不全」的假阳性。

FAQ:收不到消息、重放防护、令牌轮换与 CI 回调

Telegram 显示 webhook 已设置,但网关无日志?

查反代是否转发 POST 完整 body、证书链、以及 X-Telegram-Bot-Api-Secret-Token 是否与 setWebhook 一致;用 getWebhookInfo 看 last_error_date。另查是否第二台环境抢同一 Bot。

Slack 事件重复投递怎么办?

在 3 秒内返回 200,并在业务层用 event_id 或自建幂等键去重;校验 X-Slack-Signature 与时间戳落在允许漂移窗口内。

CI 直接调网关转发 IM 要注意什么?

回调 URL 带 HMAC/JWT,勿把 IM Token 放进仓库日志;限制来源 IP 或 mTLS;重试使用指数退避并设上限,避免触发 IM 限流导致「全站静默」。

轮换 Bot Token 或 Slack Webhook URL 怎样不掉消息?

在 launchd 或密钥文件中双写新旧值,重启网关后先看出站是否仍 401/403;确认 CI 与本地环境变量已批量更新,再删除旧 Token;构建日志与 shell 历史做一次脱敏检索,避免残留。

总结与选型引导

总结:把 OpenClaw 装在远程 Mac上接 Telegram / Slack,关键是 Node 与 CLI 对齐网关监听面收敛Webhook 带密钥校验,以及 IM 凭据与 CI 凭据分桶存放。先跑通 doctorhealth,再登记 webhook,能砍掉大半「收不到消息」的玄学问题。

需要长期在线、磁盘与网络可预期的 Apple Silicon 节点承载网关与 CI,可先浏览 帮助中心 的连接说明,再查看 定价购买页 选择地域与配置;更多 OpenClaw 与拉取专题见 技术博客首页

告警与 CI 结果进 IM

远程 Mac 上稳定跑网关与流水线

MacPull 提供 Apple Silicon 远程 Mac;帮助中心、定价与购买均可免登录查阅,确认节点与 SSH 策略后再下单。

多地域节点 SSH 网关友好 公开帮助文档