ゲートウェイのインストールとトークン
出口は一台に固定し、OPENCLAW_CONFIG_ROOT とオンボーディング後にデーモンと CI の環境を揃えます。Webhook は Git 禁止。/etc/openclaw/secrets.d/google-chat/build-status.url を 0440・root:openclaw-notify など通知専用グループのみ読取にします。
チェックポイント A:プレースホルダを実 URL に置換して実行。
sudo install -d -m 0750 -o root -g openclaw-notify /etc/openclaw/secrets.d/google-chat
sudo sh -c 'umask 077; cat > /etc/openclaw/secrets.d/google-chat/build-status.url' <<'EOF'
https://chat.googleapis.com/v1/spaces/SPACE/messages?key=KEY&token=TOKEN
EOF
sudo chown root:openclaw-notify /etc/openclaw/secrets.d/google-chat/build-status.url
sudo chmod 0440 /etc/openclaw/secrets.d/google-chat/build-status.url
Google Chat Incoming Webhook の設定
スペースに「Incoming Webhook」を追加し URL を一度だけ取得。key/token はbearer 同様に扱い、ステージングと本番はスペース分離。
チェックポイント B:デーモンと同じ HTTPS_PROXY で TLS 切断がないか(404 は可、ハンドシェイク失敗・403 は不可)。
export HTTPS_PROXY="${HTTPS_PROXY:-}"
curl -sS -o /dev/null -w "%{http_code}\n" -I "https://chat.googleapis.com/"
管理ポリシーで Webhook が不可なら承認アプリ等の単一入口へ。送信プロセスはゲートウェイ一つに。
メッセージペイロードテンプレート
まず application/json; charset=UTF-8 の text のみで配信を固め、カードは後追いで構いません。
export CHAT_URL="$(sudo cat /etc/openclaw/secrets.d/google-chat/build-status.url)"
curl -sS -X POST "$CHAT_URL" \
-H 'Content-Type: application/json; charset=UTF-8' \
-d '{"text":"MeshMac ゲートウェイ プローブ OK: '"$(hostname -s)"'"}'
チェックポイント C:数秒で一行表示なら OK。エラー JSON は手で直してから CI 接続。本番は state・短 SHA・run_url・mesh_node_id を一行に。
Teams はカード+Office 系ホスト、Matrix はルーム/appservice に差し替え、キューとキーは共通。
多ノード状態の集約例
複数ビルダーは共有キューへ載せ、ゲートウェイだけが text を組み立て POST します。
| 正規化キー | 例 | Chat 一行での使い方 |
|---|---|---|
workflow | ios-release | 先頭のジョブ名 |
state | succeeded / failed | 絵文字またはラベル |
mesh_node_id | mm-pool-2 | どの Mac かをフッタ表示 |
provider_run_id | 18451203 | state と組み合わせて冪等キー |
レンダ例:
✅ ios-release · main · abc1234 · <https://github.com/org/repo/actions/runs/18451203> · node mm-pool-2
provider_run_id+state で 24〜72h 窓の重複抑止。通知リトライはビルド再実行とパラメータ分離。
認証と再試行 FAQ
- URL は OAuth トークンですか。
- いいえ。エンドポイント秘密として扱い、ログはマスク、ローテは Webhook 再作成。
- どの HTTP コードで再試行しますか。
429/一時5xxのみ指数バックオフ+ジッター(例・2 分・最大 5 回)。400・認証エラーは修正まで再試行しない。404連発は Webhook 再発行。- 二重投稿を防ぐには。
- 成功を
provider_run_id + stateキーでキャッシュし窓内再送をスキップ。
まとめ・次の一手(ログイン不要)
ゲートウェイ一台・秘密集約・出站確認・最小 JSON・冪等再試行が実用最小セット。続きは OpenClaw 特集・ブログ一覧。
通知経路を一本化すると、台数が増えてもローテと FW が保てます
Webhook を Mac 台数ぶん置くと秘密管理が破綻しがちです。多ノードでレーンを足す前に、プラン・ノード構成(購入ページ) で容量感を確認し、ヘルプセンター の SSH/VNC/ゲートウェイ手順とあわせて読んでください。ホーム や ブログ もログイン不要で閲覧できます。