リモート Mac 上で OpenClaw ゲートウェイをループバック以外にバインドすると、公式ドキュメントが求める認証トークンと拒否ポリシーが必須になります。本文は Node 二十二以上の固定、install スクリプトまたは npm グローバルでの CLI 導入、SecretRef 相当の環境変数注入、
openclaw config validate と doctor、無認証起動時の典型ログ対照までを一連にします。同一ホストでレジストリ代理取得や CI を動かす前提と相性が良いです。関連:status JSON と doctor、環境マージ CI ゲート、config validate。料金・購入・ヘルプはログイン不要です。
詰まりやすい三つの論点
- listen を広げたのにトークンだけ古い:ループバック限定のときは気付きにくいが、
0.0.0.0や社内 IP では誰でも到達し得るため、公式が推すゲートウェイ用シークレットとヘッダ名を揃えないと即アウトです。 - CI のシェルと launchd の環境が別物:
SecretRefやマネージドシークレットから渡す変数名が plist と一致しないと、validate は緑でも実行時だけ四〇一になります。 - 無認証起動を許す設定のまま:ドキュメント上「トークン未設定なら起動しない」モードへ切り替えないと、監査やペネトレで説明できません。
バインド方式と認証の短い判断表
| listen | 到達範囲 | 推奨する認証 |
|---|---|---|
| 127.0.0.1 | 同一ホストのみ | トークンは必須級だが露出面は最小。ローカル検証向き。 |
| 社内 IP/VPC | ルーティングされたクライアント | ゲートウェイ用トークンを必ず付与し、公式の無認証拒否を有効化。 |
| 0.0.0.0 | NIC に届くすべて | ファイアウォール層とセット。CI からの curl は Authorization をログに残さない運用。 |
着手前チェックリスト
- Node は二十二・十二以上を実測し、
launchdと CI が同じバイナリを指す。 - CLI は公式の curl 系 install か
npm install -g openclaw@^3で固定しcommand -v openclawを記録。 - 設定木 は
OPENCLAW_CONFIG_HOMEを明示し、変更前に鍵を除いた tarball を残す。 - 代理取得 が同一 Runner なら、npm レジストリとゲートウェイ検証を同一ジョブにまとめレイテンシを安定化。
最小再現の五ステップ
公式 README の推奨インストールに従い、次の順で実行します。変数名はドキュメントのゲートウェイ認証節の表記に合わせてください。
# 1) Node 22+(例:非ゼロ終了でゲート)
node -v
node -e "const [a,b]=process.versions.node.split('.').map(Number);process.exit(a>22||a===22&&b>=12?0:1)"
# 2) CLI:公式 install スクリプト「または」グローバル npm のどちらか一方に統一
# curl -fsSL …/install.sh | bash # 公式ドキュメントの URL に置換
# npm install -g openclaw@^3
# 3) SecretRef 相当:シェルにだけ export(リポジトリに書かない)
# export OPENCLAW_GATEWAY_TOKEN="$(セキュアストアから読むコマンド)"
# 4) validate / doctor
openclaw config validate
openclaw doctor
# 5) ヘルス:Authorization を付けた curl(URL は公式のヘルスパスに合わせる)
# curl -fsS -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" "http://127.0.0.1:18789/health"
非ループバックにしたあとは、openclaw gateway 系のヘルプに載るbind とトークンの組合せを再読し、ドキュメントの「トラブルシュート」見出しに沿ってログ一行ずつ潰します。
無認証拒否まわりの典型ログ対照
| 見える症状 | 第一想定 | 公式ドキュメント沿いの対応 |
|---|---|---|
| 起動直後にプロセスが終了、token required 系 | 非ループバックかつトークン未注入 | 環境変数の綴りと launchd の EnvironmentVariables を突合し再読み込み。 |
| HTTP 401 または 403 | ヘッダ形式や値の不一致 | 認証節の Bearer 形式とエンドポイント表を確認し curl を最小化。 |
| validate は成功、実行だけ失敗 | CI と常駐デーモンで別トークン | 同一ユーザで doctor を再実行し、注入元を一本化。 |
CI と代理取得との連携価値
リモート Mac Runner では、npm やコンテナレジストリのプロキシ取得とゲートウェイ検証を同じディスクレイヤに載せると、コールドスタートのばらつきが減ります。環境マージ記事の tee ログパターンへ validate と curl の終了コードを載せれば、マージ前ゲートが一枚になります。
公開・常駐直前の再確認
- 非ループバックならトークン必須とファイアウォール方針が文書化されている。
- 成果物とログにトークン実体が混ざっていない。
openclaw config validateとdoctorをバインド変更の直後にもう一度回した。