2026-04-25 ヘッドレス・レンタル・クラウド Mac 上の OpenClaw doctor、CLI 設定とモデル許可リスト:アップグレード後トリアージ
HK / JP / KR / SG / US で レンタル した Mac mini M4 では、通常 SSH が先で、GUI がどうしても要るときだけ VNC です。これは OpenClaw が想定する失敗モードそのものです:長寿命の gateway、JSON 設定、そして npm の高速リリースで「git diff は無いのに本番だけ壊れた」が起きます。依存が検証を厳しくしたり、デフォルトを移したり、モデル許可リスト を締めたりするからです。本稿(2026-04-25)はトリアージ経路であり、エグレスと DNS や 初回オンボード の繰り返しではありません。openclaw doctor(任意で --fix)、CLI 管理キーと手編集ファイルの分離、LaunchAgent が実際に読んだ ~/.openclaw の証明、そして「対話 ssh -t では動くが launchd では落ちる」罠の回避を一直線に並べます。npm と二重 gateway 再起動 は、古いネイティブモジュールや重複 gateway を doctor が示したときのロールバック話に入れておいてください。
アップグレードがヘッドレス Mac で「幽霊」問題を浮かべる理由
時計は三つあります:あなたのノート PC(PATH が厚い、zshrc、忘れた VPN の HTTPS_PROXY)、自動化が使う CI 風 SSH セッション、そしてデーモンにとって本当に効くべき launchd 環境です。npm -g やタグ付き OpenClaw のあと、スキーマ検証が四月から持ち越したキーを拒否したり、gateway が 二つ目の PID を書いたり、これまで暗黙だったツール呼び出しが verbose にしか出ない 承認/ケイパビリティ を要したりします。readiness は 127.0.0.1:18789 のリスナー早見フィルタであり、人格設定全体が一貫している証明ではありません。必要条件であって、「全チャットが通る」の十分条件ではありません。
最初の 90 秒:openclaw doctor(と --fix)
非破壊のあと、ロールバック可能な修正へ:openclaw status --all でバージョン・PID・待受ポートと部品マトリクスを印刷;openclaw doctor でスキーマ検証と古い/衝突キー検出(版によりサポート誘導);openclaw doctor --fix は CLI が安全に掃けるゴミ向け—クラッシュ後の古い ~/.openclaw/gateway.pid やマイグレータが書き換えられる非推奨サブキーなど。社内 wiki に 順序 を固定してください。手順 kill -9 のあと doctor か、openclaw gateway stop のあと doctor かで出力は変わります。doctor がプラグイン読込失敗を出したら WebSocket 1006 系とも突き合わせ、「別の gateway が listen」と一行で止まらず、古い clawdbot 系プロセスが残っていないか同じアカウントで確認してください。
単一の正:CLI config とディスク上の JSON
変更は openclaw config set <key> <value> と openclaw config get <key>(版により表面が異なる)を優先—~/.openclaw/openclaw.json を手で触って余計なカンマや、UI が一度書いたが CLI がもう直列化しないキーを残すとスキーマが漂流します。手編集のあとは必ず doctor。ホットリロードは多くの agent / model / prompt を覆いますが、gateway.port と gateway.bind は上流のホットリロード契約どおり フル openclaw gateway restart が筋です。nginx + webhook でスタックの片側だけ変えたときと同じです。秘密は ~/.openclaw/.env に置き、launchd の API キー と同じ EnvironmentVariables で継承してください。オンボード時に一度だけ cat >> ~/.zshrc した export に寄せないでください。
モデル許可リスト:「許可されていない」はしばしばポリシーであって障害ではない
プロバイダがモデル文字列を変えたのに skill が anthropic/claude-3-5-sonnet-latest のまま、gateway は固定リストだけ許可、というとき失敗は資格情報に見えます。実効リストを見る:openclaw config get agents.defaults.models(版に最も近いもの)で、カタログと 完全一致—大文字小文字、ベンダー接頭辞、スロット(primary / fallback)まで。エグレス 記事とセットで:エラーが TLS と HTTP/2 のあと ならモデルルーティング、TCP が終わらないなら DNS/TLS です。cron やサブエージェント負荷を足すなら、忘れていた別プロファイルの薄い許可リストをマージ漏れしていないか。スケジュールごとに 解決済み モデルをログし、Slack の人間向けラベルだけ残さないでください。
Gateway、PID、そして「もう kill したのに」
二重リスンは、ユーザー LaunchAgent が再起動したのに 手動フォアグラウンド がポートを握っているときや、アップグレードで 子 Node が launchd に養子に行ったときに出ます。lsof -iTCP:18789 -sTCP:LISTEN と ps -ax | grep -i openclaw は plist を持つ 同一アカウント で—root ではありません。強制が必要なら、文書の 順序どおり に止めてから doctor、そのあと起動。gateway アップグレード/ロールバック 表とセットで、古い PID、node バージョン、sidecar ネイティブビルド用 DEVELOPER_DIR をチケットテンプレに残すと悪いリリースが見えやすくなります。
openclaw doctor を通し、status --all ログを保存する方が、Telegram がモバイルから見えるスクリーンショット一枚より証拠になります。
症状 / 層 / 安定化
| 症状 | 層 | 安定化 |
|---|---|---|
| マイナー更新直後に「モデルが許可リストにない」 | 設定ポリシー | 許可を広げ、文字列をピン留め、debug で一回チャット |
| doctor OK だがシェルでは新しい API キーなのに 403 | launchd 環境 / エグレス | 実行中 PID から環境を印刷し、エグレス TLS 検査へ |
| プラグイン追加後に WebSocket 1006 | Node プラグイングラフ | npm install をやり直し、gateway stderr を読む—サブエージェント 注記と照合 |
関連 MacXCode ランブック
運用の背骨をつなぐ:ClawHub skills で何を自動化してよいか、構造化ログ で誤モデルと誤ルートを見分け、100.64/ と公開ホスト名が設計の一部なら Tailscale。まだブートストラップなら オンボード + デーモン が前提です。同じ日の CI 側は xcodebuild テスト + カバレッジ閾値 を参照してください。
FAQ:共有ビルダー上の doctor
| 質問 | 実務回答 |
|---|---|
| 毎デプロイ前に doctor を? | npm 変更と gateway/バイナリ更新のあとなら最低限。週末のチャット断より速いです。 |
| 手編集 JSON は許される? | 上流サンプルをマージするときは—すぐ doctor とチャット煙テスト。盲目再起動は避ける。 |
| HK が US よりイメージ遅れ? | 時間差は普通。ポリシー や エグレス の差は別物。ダッシュボードは リース ラベルで分割し、地域プラン で拡張。 |
五地域のベアメタル M4 がまだ勝つ理由
診断と gateway はピーク FLOPS より ジッター と 再現性のある I/O を気にします。MacXCode の Mac mini M4 はシングルテナント NVMe で冗長な JSON ログを残し、恒常 SSH を与え、国別に provider 許可を分けるなら第二ノードを足せます。2026 年に OpenClaw を 本物 の配送パイプラインと並走させるなら、同じ系譜で Xcode テスト + カバレッジ ゲートも載せられます。リースは p95 で 測れる キャパシティとして扱い、緑になるまで再起動するブラックボックスにしないでください。