KVMNODE 専用クラウド Mac で OpenClaw Gateway を loopback から本番 LAN bind へ広げたい開発者にとって、2026 年の OpenClaw は gateway.bind=lan を有効な gateway.auth.token とセットで要求します。refusing to bind without auth、Dashboard の unauthorized、SSH では緑なのに launchd だけ赤、といった症状の多くは bind 変更と token 配線の順序逆転、または LaunchAgent が古い loopback 設定を保持したドリフトに起因します。本記事では loopback と lan の決定木、~/.openclaw/.env に置く OPENCLAW_GATEWAY_TOKENopenclaw.json の単一情報源、六段階の本番切替、gateway.reload.mode=hybrid の熱リロード境界、gateway.controlUi.allowedOrigins/healthz 验收、LaunchAgent ドリフトの検出までを整理します。launchd tokenアップグレード後の bind とトンネルリモート Gateway トポロジ診断ラダーinstall-daemon と併読してください。
01

loopback と lan:個人 SSH トンネルから Control UI 本番 bind への決定木

OpenClaw Gateway の既定は 127.0.0.1:18789 への loopback 待受です。KVMNODE クラウド Mac へ SSH し ssh -L 18789:127.0.0.1:18789 でブラウザを開く運用は、単一エンジニアの開発期に最も安全で、token なしでも doctor が通りやすい posture です。一方、社内の第二ノートから Control UI に直接接続したい、LAN 内のヘルスプローブが RFC1918 アドレスへ到達する必要がある、Tailscale サブネットルーター越しに固定 IP で叩きたい、といった要件が出た時点で gateway.bind=lan の検討が始まります。

2026 年のビルドは非 loopback bind に明示的な認証を要求します。gateway.bind だけを lan に書き換え、token を plist や .env に載せ忘れると、ログに refusing to bind without auth 相当の早期 exit が出て launchd が再起動ループに入ります。これはモデル API の障害ではなく、設定ガードが意図どおり動いている信号です。公网インターフェースへ 18789 を晒す選択は、トンネルや ACL なしでは推奨されません。クラウド事業者のセキュリティグループでポートを開く前に、アプリケーション層の token と allowedOrigins を揃えてください。

01

loopback 維持:一人が SSH トンネル経由で Dashboard を見るだけ。変更票にトンネルコマンドを固定。

02

lan + token:同一 VPC または Tailnet 内の複数クライアント、無人プローブ、Control UI の常時 URL。

03

トンネル優先の折衷:bind は loopback のまま Tailscale serve や SSH -L でエッジを置き、Gateway 本体は最小暴露。

04

避ける:token 未設定の lan、二重の手動 gateway start と plist 共存、変更後の listen アドレス未確認。

リモートクライアントだけを増やし Gateway 権威は一台に置く設計は gateway.mode remote の記事が扱います。本稿はサーバー側 Gateway 自身の bind 面に焦点を当てます。初回 onboard が未完了なら、先に 導入チェックリスト で loopback 上の healthy を取ってから lan へ進んでください。

02

.env と openclaw.json:OPENCLAW_GATEWAY_TOKEN の単一情報源と禁止パターン

token を対話 shell の export だけに置くと、launchd 常駐へ切り替えた瞬間に監督プロセスは空の環境で起動します。launchd token 記事 が説明する split brain と同型で、CLI が openclaw config get gateway.auth.token で値を返しても、デーモン側は別パスまたは未注入のまま unauthorized を返します。

本番推奨は ~/.openclaw/.envOPENCLAW_GATEWAY_TOKEN= を書き、openclaw.json 側で gateway.auth.mode を明示することです。Gateway install または openclaw gateway install --force は plist が state ディレクトリと .env を読む経路を再生成します。plist の EnvironmentVariables に平文 token を重複保存するのはローテーション時に片側だけ更新されるため禁止です。PATH、OPENCLAW_STATE_DIR、必要なら node の絶対パスだけを plist に残します。

保管場所向く用途launchd から見えるか避ける理由
~/.openclaw/.env本番 token の単一情報源install 後は可chmod 600 必須、Git 禁止
openclaw.json gateway.authmode とメタ、または json 単独運用平文を repo に commit しない
~/.zshrc export対話デバッグのみ不可常駐 Gateway には届かない
plist 平文 token短期トリアージローテでドリフト、監査で二重管理
チャット・チケット貼付なし漏洩と再発行コスト

bind を lan に広げる前に、監督プロセスが token を読めることを doctor と launchctl print で証明してください。認証なしの listen 拡大は失敗する設計です。

レガシー鍵 gateway.token だけが残っている場合、新スキーマは無視し Dashboard が 401 を繰り返します。移行手順は アップグレード runbook の token 節を参照し、lan bind と同じ変更票で gateway.auth.token または .env へ統一してください。

03

六段階跟做:旧プロセス停止から healthz と token 付きクライアント验收まで

以下は KVMNODE 専用クラウド Mac 上で loopback から lan 本番 bind へ移行する標準順序です。各段階の stdout を変更票に添付し、ロールバックは json、.env、plist の三点セットで行います。

01

旧プロセスと二重 listen の掃除:lsof -nP -iTCP:18789 -sTCP:LISTEN で手動 gateway と plist の競合を解消。余分な PID は記録の上停止。

02

.env に token 書込:openssl rand -hex 32 等で生成し ~/.openclaw/.envOPENCLAW_GATEWAY_TOKEN= を追加。権限 600。

03

openclaw.json で bind と auth:gateway.bind=langateway.auth.mode を明示。allowedOrigins は後段でも可。

04

gateway install と LaunchAgent 验收:openclaw gateway install --forcelaunchctl print gui/$(id -u)/com.openclaw.gateway で ProgramArguments と WorkingDirectory を確認。

05

healthz:ホスト上で curl -sS -o /dev/null -w '%{http_code}' http://127.0.0.1:18789/healthz と LAN IP からの到達を記録。

06

クライアント token 验收:Control UI または CLI で Authorization ヘッダ付き接続。無 token は 401 であることを確認し、誤暴露を検知。

bash
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
lsof -nP -iTCP:18789 -sTCP:LISTEN
openclaw config set gateway.bind lan
openclaw config set gateway.auth.mode token
openclaw gateway install --force
openclaw gateway restart
openclaw gateway status --deep
curl -sS http://127.0.0.1:18789/healthz
curl -sS -H "Authorization: Bearer $OPENCLAW_GATEWAY_TOKEN" http://127.0.0.1:18789/

リモートから実行する場合、上記はGateway が動くクラウド Mac 上の SSH セッションで走らせてください。ローカルノートのターミナルで config set しても、対象ホストの openclaw.json が更新されない誤バインドが起きます。openclaw gateway status --deep が duplicate unit を示す場合は、余分な LaunchAgent を bootout してから install を再実行します。

04

gateway.reload.mode=hybrid:熱リロードと手動再起動の分界、allowedOrigins

gateway.reload.mode=hybrid は、チャネル設定や一部 UI メタの変更をプロセス再起動なしで取り込むモードです。運用上の落とし穴は、bind・auth・listen ポート・LaunchAgent 本体の変更を hybrid で済ませようとすることです。これらはソケットの再バインドまたは plist の再読込が必要で、openclaw gateway restart または kickstart が正解です。

変更項目hybrid で足りるか推奨操作验收
gateway.controlUi.allowedOrigins多くは可config set 後、UI から CORS エラー消失を確認ブラウザ DevTools
チャネル webhook URL場合ありchannels probeopenclaw channels probe
gateway.bind不可restart + lsofLISTEN が 0.0.0.0 または LAN IP
OPENCLAW_GATEWAY_TOKEN不可.env 更新 → restart旧 token で 401
ProgramArguments / Node パス不可gateway install --forcelaunchctl print

Control UI を別オリジンのブラウザから開く場合、gateway.controlUi.allowedOrigins に HTTPS オリジンを列挙します。トンネル経由で http://127.0.0.1:19000 を使う開発期と、本番 HTTPS ドメインは別エントリとして変更票に分け、混在させないでください。allowedOrigins だけ直しても bind が loopback のままなら、LAN クライアントは依然として到達できません。順序は bind → token → restart → origins → hybrid 可能域の確認です。

ヒント:hybrid 反映後も openclaw gateway status の RPC プローブが失敗する場合、熱リロードではなく LaunchAgent ドリフトを疑い、診断ラダー L2 の deep status へ進んでください。

05

高频エラー分叉、LaunchAgent ドリフト验收、六リージョンと M4 Pro 選定

refusing to bind without auth:lan 設定に対し token が .env または json に存在しない。生成と install を先に。EADDRINUSE:18789 の所有者が手動プロセス。kill 前に lsof で PID とコマンド行を保存。unauthorized:クライアント token とサーバー .env の不一致、または allowedOrigins 未登録。プローブ alone 失敗:listen アドレスと probe URL の不一致。loopback プローブを lan bind に向けたままにしない。

LaunchAgent ドリフト信号意味是正
which openclaw ≠ plist 先頭CLI とデーモンが別ビルドPATH 固定 → install --force
listen が 127.0.0.1 のままjson 更新がデーモン未反映restart、それでもダメなら plist 再生成
token 行がログに無い.env パスが監督環境とズレOPENCLAW_STATE_DIR 一致確認
二重 Label旧 onboard 残存bootout 余分 → 単一 unit
A

排障順序:gateway status --deep → doctor → lsof 18789 → .env と json → install --force → クライアント token 再試行。

B

六リージョン:LAN bind はノード内 NIC に依存。リージョン移転時は allowedOrigins とファイアウォールを再验收。

C

M4 と M4 Pro:bind 変更自体は CPU 非依存。同一ホストで iOS CI と Gateway を同居しメモリ圧が高い週は M4 Pro またはプール分割。

注意:hybrid や restart を連打する前にログと doctor を読んでください。単純なポート競合を再起動ループに変えると、チャネル全体の outage 窓が広がります。

蓋閉めノート PC を Gateway ホストに据え置くと、lan bind 成功後もスリープで listen が消え、クライアント側は unauthorized やタイムアウトとして見えます。7×24 の lan 本番 bind には KVMNODE 専用クラウド Mac と launchd 常駐が実務上の定番です。bind モード、token ローテ日、plist Label、healthz 結果を同一変更票に載せられる専用ホストは、リモートチームの監査コストを下げます。SKU は 価格ページ、手順は ヘルプセンター、注文は 注文入口 をご覧ください。24 時間安定稼働 の heartbeat 節と組み合わせ、夜間プローブにも token 付き URL を使うとドリフト検知が早まります。