Hosting

Docker VM ランタイム

GCP、Hetzner、および同様のVPSプロバイダーなど、VMベースのDockerインストールに共通するランタイム手順です。

必要なバイナリをイメージに組み込む

実行中のコンテナ内にバイナリをインストールする方法は避けてください。ランタイムにインストールしたものは、再起動すると失われます。スキルが必要とするすべての外部バイナリを、ビルド時にイメージへ組み込んでください。

以下の例では、アルファベット順に3つのバイナリのみを扱います。

  • Gmailへのアクセス用のgoggogcliから提供)
  • Google Places用のgoplaces
  • WhatsApp用のwacli

これらは例であり、完全な一覧ではありません。同じパターンを使用して、スキルが必要とする数だけバイナリをインストールしてください。後から新しいバイナリを必要とするスキルを追加する場合は、次の手順を実行します。

  1. Dockerfileを更新します。
  2. イメージを再ビルドします。
  3. コンテナを再起動します。

Dockerfileの例

dockerfile
FROM node:24-bookworm RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/* # Example binary 1: Gmail CLI (gogcli — installs as `gog`)# Copy the current Linux asset URL from https://github.com/steipete/gogcli/releasesRUN curl -L https://github.com/steipete/gogcli/releases/latest/download/gogcli_linux_amd64.tar.gz \  | tar -xzO gog > /usr/local/bin/gog; \  chmod +x /usr/local/bin/gog # Example binary 2: Google Places CLI# Copy the current Linux asset URL from https://github.com/steipete/goplaces/releasesRUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_linux_amd64.tar.gz \  | tar -xzO goplaces > /usr/local/bin/goplaces; \  chmod +x /usr/local/bin/goplaces # Example binary 3: WhatsApp CLI# Copy the current Linux asset URL from https://github.com/steipete/wacli/releasesRUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli-linux-amd64.tar.gz \  | tar -xzO wacli > /usr/local/bin/wacli; \  chmod +x /usr/local/bin/wacli # Add more binaries below using the same pattern WORKDIR /appCOPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./COPY ui/package.json ./ui/package.jsonCOPY scripts ./scripts RUN corepack enableRUN pnpm install --frozen-lockfile COPY . .RUN pnpm buildRUN pnpm ui:installRUN pnpm ui:build ENV NODE_ENV=production CMD ["node","dist/index.js"]

ビルドと起動

bash
docker compose builddocker compose up -d openclaw-gateway

pnpm install --frozen-lockfileの実行中にKilledまたは終了コード137でビルドが失敗した場合、VMのメモリが不足しています。再試行する前に、より大きなマシンクラスを使用してください。

バイナリを確認します。

bash
docker compose exec openclaw-gateway which gogdocker compose exec openclaw-gateway which goplacesdocker compose exec openclaw-gateway which wacli

期待される出力:

text
/usr/local/bin/gog/usr/local/bin/goplaces/usr/local/bin/wacli

Gatewayが起動していることを確認します。

bash
docker compose logs -f openclaw-gatewaycurl -fsS http://127.0.0.1:18789/healthz

/healthzが200レスポンスを返せば、Gatewayプロセスがリッスン中で正常であることを確認できます。組み込みイメージのHEALTHCHECKも同じエンドポイントをポーリングします。

保存場所と永続化対象

OpenClawはDocker内で動作しますが、Dockerは信頼できる唯一の情報源ではありません。長期間保持するすべての状態は、再起動、再ビルド、およびリブート後も維持される必要があります。

コンポーネント 場所 永続化の仕組み 注記
Gateway設定 /home/node/.openclaw/ ホストボリュームマウント openclaw.jsonを含む
チャネル/プロバイダーの認証情報 /home/node/.openclaw/credentials/ ホストボリュームマウント チャネルおよびプロバイダーの認証情報
モデル認証プロファイル /home/node/.openclaw/agents/ ホストボリュームマウント agents/<agentId>/agent/auth-profiles.json(OAuth、APIキー)
旧OAuthキーファイル /home/node/.config/openclaw/ ホストボリュームマウント 移行前のOAuthサイドカー用の読み取り専用互換機能。openclaw doctor --fixはこれらをauth-profiles.jsonに移行する
スキル設定 /home/node/.openclaw/skills/ ホストボリュームマウント スキルレベルの状態
エージェントワークスペース /home/node/.openclaw/workspace/ ホストボリュームマウント コードおよびエージェントの成果物
WhatsAppセッション /home/node/.openclaw/ ホストボリュームマウント QRログインを維持
Gmailキーリング /home/node/.openclaw/ ホストボリューム+パスワード GOG_KEYRING_PASSWORDが必要
Pluginパッケージ /home/node/.openclaw/npm, /home/node/.openclaw/git ホストボリュームマウント ダウンロード可能なPluginパッケージのルート
外部バイナリ /usr/local/bin/ Dockerイメージ ビルド時に組み込む必要がある
Nodeランタイム コンテナファイルシステム Dockerイメージ イメージのビルドごとに再構築される
OSパッケージ コンテナファイルシステム Dockerイメージ ランタイムにはインストールしない
Dockerコンテナ 一時的 再起動可能 破棄しても安全

更新

VM上のOpenClawを更新するには、次を実行します。

bash
git pulldocker compose builddocker compose up -d

関連項目

Was this useful?
On this page

On this page