コンテナ常駐の OpenClawでは、ゲートウェイとホストが「どの OCI が docker/podman に応答するか」「リポジトリとキャッシュの実体」「スキルが依存を取る手順」まで揃っていないと、再現性が崩れます。--container と環境変数 OPENCLAW_CONTAINER はシェル・Compose・CI の各行で同じ意味に固定し、食い違うと「手元だけ通る」症状が増えます。本稿は モード → ソケット → マウント → スキル導入 → doctor の順で整理し、最後に高メモリ遠隔 Mac を隔離ゲートウェイに置く例を示します。スキルと設定の最小権限まわりは
OpenClaw 本番落地と ClawHub/doctor の再現手順
と併読すると流れが一本になります。
1. --container と OPENCLAW_CONTAINER の単一情報源
環境ごとに「権威」を一つ決めます。Compose では OPENCLAW_CONTAINER=true を焼き込み CLI フラグは省略、あるいは CI ではフラグ明示のみに統一する、のどちらか。ドキュメントに書き、オンデマンドで両方を独立にいじらないようにします。GitHub Actions 等ではジョブ冒頭で解決済みの組を表示し、不一致なら即失敗にすると当番が楽です。資格情報やマウントパスと同じ変更セットでモードを切り替えないのも鉄則です。
2. Docker と Podman:ソケット・コンテキスト・CLI 透伝
正しい制御ソケットをマウントし、DOCKER_HOST(または Podman 側の同等変数)を実ソケットに合わせます。Docker Desktop on macOS は VM 越しに /var/run/docker.sock を橋渡しすることが多く、rootless Podman はディストリごとにユーザースコープのパスが変わります。コンテナ内から info/version をゲートウェイと同じ名前空間で叩き、クライアントとデーモンの組み合わせミスを早めに潰します。ソケットを二系統 symlink でごまかすより、Compose プロファイルを分けた方が事故が少ないです。
3. バインドマウント:ワークスペース・設定・キャッシュと読み取り専用
ホストパスは up 前に実在させ、方針ファイルは可能なら読み取り専用で openclaw.json を守ります。短命キャッシュと永続キューを分け、剪定ジョブが処理中データを巻き添えにしないようにします。UID/GID はコンテナユーザーと揃え、macOS と Linux CI では数値 ID の差を README に残します。チェックアウトが変わったら Compose のパスも同じ PR で更新し、スキル実行時の ENOENT を減らします。
4. スキル依存の導入:イメージ先行、冪等な setupCommand
重い依存はイメージに焼いてコールドスタートを秒単位に抑え、setupCommand は semver 固定とチェックサム検証など何度実行しても同じ終状態になる手順だけにします。対話プロンプトやホーム配下に強依存した cd 連鎖は避け、導入後にツールチェインのバージョンをログへ一行出して差分比較できるようにします。ヘッダとランタイムを別レイヤーで混ぜ替えるとリンカ不整合が OpenClaw 本体の不具合に見えるので、共有ランタイムは一箇所に集約します。
5. doctor は照合順序として使う
マウントとソケットが安定してから doctor を回し、結果を launchd や Compose ログ、待受、ルートと突き合わせます。典型順は権限 → エンジン到達性 → Gateway の bind → プラグイン → プロキシです。標準出力はチケットに添付し、重複ルートやコンテナモード不一致をログレベル上げる前に潰します。常駐系では launchctl のロード状態とリスナー番号をログと突き合わせ、再起動ポリシーまで含めて記録しておくと再現性が上がります。
- 全 unit で
OPENCLAW_CONTAINERと CLI フラグは一致しているか。 - マウントしたソケットはスモークテストと同じ実体か。
- スキル導入スクリプトはコンテナ再起動でも冪等か。
6. 実例:高メモリ遠隔 Mac を隔離ゲートウェイに
SSH や tailnet 越しに専用の高メモリ Macを用意し、Compose・監視・ログ転送だけを載せます。PR 嵐用のセルフホスト Runner は別ラベルに逃がし、ゲートウェイ台をビルド渦から切り離します。レイヤーとスキルキャッシュは速い NVMe に置き、Node やエンジンは本番と同じ版に固定。doctor が緑のスナップショットを取得したあとイメージ化し、受信はメッシュか踏み台に限定、デプロイ鍵は CI シークレットでローテーション、週次窓で再起動してディスクリプタ漏れを払います。ビルド群との同居より、チャネルや MCP バックエンドへの遅延を一定にしたいときの割り切りです。自前/レンタルの判断は
Mac mini 対ベアメタル遠隔 Mac の意思決定マトリクス
と併せて検討すると費用対効果が見えやすいです。
このパターンで Mac mini 級ホストが効く理由
CLI 透伝だけではなく、長期無人でソケットと SSH を載せ続ける静音・低待機電力の台が欲しくなります。Apple Silicon の Mac mini はメモリ帯域と Unix 積みの macOS を同じ筐体に載せ、Gatekeeper/SIP/FileVault で説明コストも下げやすいです。ノートのスリープ起因の切断ノイズを避ければ、当番工数と TCO の両方が読みやすくなります。隔離ゲートウェイに必要な RAM をクラウドで素早く確保したい場合は
Macstripe ホーム
からリージョンと Mac mini M4 の構成を比較し、必要メモリを満たす SKU を選んでください。スペックを固めたうえで doctor を毎回同じ順で回すと、再起動後も緑に戻しやすくなります。