npm 導入や launchd、SecretRef の記事を読んだあとも「環境の再現性」が足りないと感じる場合は、OpenClaw の Docker 化が次の一手になります。本稿は 2026 年にリモート MacでOpenClaw を長期運用する運用者・上級者向けに、裸機とコンテナの比較、公式イメージ・Compose ボリューム・ポート 18789、コンテナ内 onboard の注意点、そして VNC グラフィカルセッションでブラウザを開いてコンソールを検証する理由を整理します。
① Docker を選ぶタイミング:npm / インストールスクリプトとの比較
2026 年の OpenClaw は install.sh、npm i -g、OCI イメージが共存しています。コンテナの価値は「見た目」ではなく、ディレクトリの持ち運び・バージョンの固定・ロールバックの予測可能性にあります。設定と状態を名前付きボリュームやバインドマウントへ載せれば、compose ファイルとバックアップさえ揃えばホストを移せます。一方、グローバル npm は個人開発機での高頻度イテレーションに向きます。
レンタル中のリモート Macでは、複数顧客やプロジェクトが同居する場合、Docker の異なる compose プロジェクト名でポートとボリュームを分離でき、「グローバル npm の更新で顧客 A が壊れる」事故を抑えられます。Docker CLI の基礎は前提とし、未経験の方は Docker Desktop や Colima の導入から進めてください。
同一 Mac 上での npm 直導入とコンテナの見え方の違い
npm パスはシェルプロファイルや nvm の選択に依存します。compose パスは YAML に書いた内容だけが真実になり、引き継ぎやインシデント記録に向きます。Docker Desktop 利用時は、リッスンがホストのネームスペースと一致するか(lsof の見え方)も変わるため、ドキュメントの localhost が「どの localhost か」を意識してください。
公式イメージの例として ghcr.io/openclaw/openclaw が挙げられることがあります。ダイジェストで固定するか、リリースノートを追いながらタグを更新するかは運用方針次第です。常に公式リポジトリの最新 compose 例と照合してください。
② コンテナ化しても残る五つの論点
- データボリュームと権限:コンテナ内 UID とホストの所有者が一致しないと、
~/.openclawのマウントが読み取り専用になることがあります。compose でuserを明示するか、所有者を揃えてください。 - ポートとループバック:Web コンソールやゲートウェイは 18789 などが文書化されることがあります。
127.0.0.1のみの待受では、SSH トンネルと VNC 内ブラウザで挙動が変わります。 - onboard と TTY:
docker compose run --rmを非対話で流すとウィザードが止まることがあります。初回は対話的に完了し、常駐は detach に切り替えます。 - launchd との関係:コンテナ内プロセスと、ホスト launchd が同じバイナリを二重に起動しないようにします。一般的にはホストは docker compose の起動だけ、または restart policy に任せます。詳しくはlaunchd チェックリストを参照してください。
- SecretRef とマウント:秘密ファイルをコンテナへ入れる場合も権限と監査が重要です。SecretRef 監査記事に沿って平文をイメージ層に残さないでください。
③ 決定表:裸機、Docker、複数プロジェクト
| 観点 | npm / スクリプト裸機 | Docker / Compose(本稿) | 複数 compose プロジェクト |
|---|---|---|---|
| 向く場面 | ローカル開発・バージョン試行 | 再現可能なデプロイ・タグ固定 | 多顧客・多リポジトリの分離 |
| ロールバック | グローバル Node 状態に依存 | イメージタグやダイジェストの差し替え | プロジェクト単位で独立 |
| 運用負荷 | 単独なら低い | 中(ボリュームとネットワーク) | 高め(ポート・ボリューム命名) |
| launchd との組み合わせ | よくある | ホストは compose、コンテナは自己完結 | インスタンスごとにディレクトリを分離 |
API キーや環境の分離は多プロジェクト API キー・環境チェックリストと併読すると理解が深まります。
④ 手順:イメージ取得からコンソール検証まで
以下は学習用の最小構成です。実際のフィールドは OpenClaw 公式と GHCR の現行タグに合わせてください。
ディレクトリと Docker 環境
リモート Mac 上に ~/openclaw-docker などを作成し、docker compose version を確認します。ボリュームは遅延の大きいネットワークストレージは避けます。
compose:イメージ・ボリューム・ポート
GHCR の例:
services:
openclaw:
image: ghcr.io/openclaw/openclaw:latest
ports:
- "18789:18789"
volumes:
- openclaw_config:/root/.openclaw
- ./workspace:/workspace
restart: unless-stopped
volumes:
openclaw_config:
環境変数・ユーザマッピング・ヘルスチェックは公式テンプレートに従ってください。API キーを含む .env を Git に含めないでください。
初回 onboard(対話推奨)
docker compose run --rm openclaw openclaw onboard などでウィザードを完了します。ブラウザが必要な場合はVNC セッション内で開き、コールバック先のズレを防ぎます。
常駐プロセスの起動
docker compose up -d のあと docker compose logs -f で起動エラーを確認します。不明なメッセージはよくあるエラーとトラブルシュートも参照してください。
VNC 内ブラウザでコンソール検証
Safari または Chrome で http://127.0.0.1:18789 にアクセスします(ポートはドキュメント優先)。外部からのみ SSH する場合はトンネルとファイアウォールも確認します。
VNC 内ブラウザは、SSH のみより権限ダイアログや Keychain 操作を視認しやすく、localhost の意味合いもドキュメントと一致しやすいです。
⑤ 引用メモとチェックリスト
openclaw_config は、Alpine 一時コンテナで tarball 化するなどの冷備がしやすいです(コマンドは環境に合わせて調整)。- compose のポートが文書と一致し競合がない
- ボリュームが書き込み可能でバックアップ方針が決まっている
- VNC 内ブラウザでコンソールまたはヘルスチェックが 200
- 秘密がイメージ層に入っておらず監査要件を満たす
⑥ FAQ と関連記事
宿ホストでの自動起動をコンテナの restart 以外で組む場合はlaunchd 記事を参照し、同一プロセスの二重起動を避けてください。多環境の API キー分離は多プロジェクト記事、憑据はSecretRef 記事、汎用トラブルはエラー十則を参照してください。
結論:コンテナは再現性、リモート Mac は macOS 実検証
ノート PC だけで Dockerfile を書いても、権限・ボリューム・ブラウザ・ファイアウォールは Linux CI と異なることがあります。自前 Mac がない場合、VNC 付きリモート Mac をレンタルして一度通しで検証するのは、本番に近い実践です。購入は減価と保守コストがかさみますが、パッケージで隔離ノードを借り、compose とボリューム戦略を固めてから長期投資を判断する方が時間の節約になります。VNCMac はグラフィカルなリモートデスクトップと接続手順で、onboard とブラウザ検証をターミナルだけよりも短時間で完了しやすくします。