OpenClaw on GCP Compute Engine(Docker、本番VPSガイド)

目標

GCP Compute Engine VMでDockerを使用してOpenClaw Gatewayを永続的に実行し、永続状態、組み込みバイナリ、安全な再起動動作を実現します。

「月額約$5〜12でOpenClawを24時間365日稼働」したい場合、Google Cloud上での信頼性の高いセットアップです。 料金はマシンタイプとリージョンによって異なります。ワークロードに適した最小のVMを選び、OOMが発生したらスケールアップしてください。

何をするのか(シンプルに説明)

  • GCPプロジェクトを作成し、請求を有効化
  • Compute Engine VMを作成
  • Docker(隔離されたアプリランタイム)をインストール
  • DockerでOpenClaw Gatewayを起動
  • ホスト上に~/.openclaw + ~/.openclaw/workspaceを永続化(再起動/再構築後も保持)
  • SSHトンネル経由でラップトップからControl UIにアクセス

Gatewayへのアクセス方法:

  • ラップトップからのSSHポートフォワーディング
  • ファイアウォールとトークンを自分で管理する場合は直接ポート公開

このガイドではGCP Compute Engine上のDebianを使用します。 Ubuntuも動作します。パッケージを適宜マッピングしてください。 一般的なDockerフローについては、Dockerを参照してください。


クイックパス(経験豊富な運用者向け)

  1. GCPプロジェクトを作成 + Compute Engine APIを有効化
  2. Compute Engine VMを作成(e2-small、Debian 12、20GB)
  3. VMにSSH接続
  4. Dockerをインストール
  5. OpenClawリポジトリをクローン
  6. ホスト上に永続ディレクトリを作成
  7. .envdocker-compose.ymlを設定
  8. 必要なバイナリを組み込み、ビルド、起動

必要なもの

  • GCPアカウント(e2-microの無料利用枠対象)
  • gcloud CLIをインストール(またはCloud Consoleを使用)
  • ラップトップからのSSHアクセス
  • SSHとコピー&ペーストの基本的な知識
  • 約20〜30分
  • DockerとDocker Compose
  • モデル認証情報
  • オプションのプロバイダー認証情報
    • WhatsApp QRコード
    • Telegram botトークン
    • Gmail OAuth

1) gcloud CLIをインストール(またはConsoleを使用)

オプションA: gcloud CLI(自動化に推奨)

https://cloud.google.com/sdk/docs/install からインストール

初期化と認証:

gcloud init
gcloud auth login

オプションB: Cloud Console

すべての手順はhttps://console.cloud.google.com のWebUIから実行可能


2) GCPプロジェクトを作成

CLI:

gcloud projects create my-openclaw-project --name="OpenClaw Gateway"
gcloud config set project my-openclaw-project

https://console.cloud.google.com/billing で請求を有効化(Compute Engineに必要)。

Compute Engine APIを有効化:

gcloud services enable compute.googleapis.com

Console:

  1. IAM & Admin > Create Projectへ移動
  2. 名前を付けて作成
  3. プロジェクトの請求を有効化
  4. APIs & Services > Enable APIs > "Compute Engine API"を検索 > Enableをクリック

3) VMを作成

マシンタイプ:

タイプスペックコスト備考
e2-small2 vCPU、2GB RAM約$12/月推奨
e2-micro2 vCPU(共有)、1GB RAM無料利用枠対象負荷下でOOMの可能性

CLI:

gcloud compute instances create openclaw-gateway \
  --zone=us-central1-a \
  --machine-type=e2-small \
  --boot-disk-size=20GB \
  --image-family=debian-12 \
  --image-project=debian-cloud

Console:

  1. Compute Engine > VM instances > Create instanceへ移動
  2. Name: openclaw-gateway
  3. Region: us-central1、Zone: us-central1-a
  4. Machine type: e2-small
  5. Boot disk: Debian 12、20GB
  6. Create

4) VMにSSH接続

CLI:

gcloud compute ssh openclaw-gateway --zone=us-central1-a

Console:

Compute EngineダッシュボードでVM横の「SSH」ボタンをクリック。

注: SSHキーの伝播にはVM作成後1〜2分かかることがあります。接続が拒否された場合は、待ってから再試行してください。


5) Dockerをインストール(VM上で)

sudo apt-get update
sudo apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER

グループ変更を反映させるためログアウトして再ログイン:

exit

その後再度SSH接続:

gcloud compute ssh openclaw-gateway --zone=us-central1-a

確認:

docker --version
docker compose version

6) OpenClawリポジトリをクローン

git clone https://github.com/openclaw/openclaw.git
cd openclaw

このガイドでは、バイナリの永続性を保証するためにカスタムイメージをビルドすることを前提としています。


7) ホスト上に永続ディレクトリを作成

Dockerコンテナは一時的です。 すべての長期的な状態はホスト上に存在する必要があります。

mkdir -p ~/.openclaw
mkdir -p ~/.openclaw/workspace

8) 環境変数を設定

リポジトリルートに.envを作成。

OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=change-me-now
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789

OPENCLAW_CONFIG_DIR=/home/$USER/.openclaw
OPENCLAW_WORKSPACE_DIR=/home/$USER/.openclaw/workspace

GOG_KEYRING_PASSWORD=change-me-now
XDG_CONFIG_HOME=/home/node/.openclaw

強力なシークレットを生成:

openssl rand -hex 32

このファイルをコミットしないでください。


9) Docker Compose設定

docker-compose.ymlを作成または更新。

services:
  openclaw-gateway:
    image: ${OPENCLAW_IMAGE}
    build: .
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - HOME=/home/node
      - NODE_ENV=production
      - TERM=xterm-256color
      - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
      - OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
      - GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
      - XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
      - PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
    ports:
      # 推奨: GatewayをVM上でloopbackのみに保ち、SSHトンネル経由でアクセス。
      # 公開する場合は、`127.0.0.1:`プレフィックスを削除し、適切にファイアウォールを設定してください。
      - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"

      # オプション: iOS/AndroidノードをこのVMに対して実行し、Canvas hostが必要な場合のみ。
      # 公開する場合は、/gateway/securityを読み、適切にファイアウォールを設定してください。
      # - "18793:18793"
    command:
      [
        "node",
        "dist/index.js",
        "gateway",
        "--bind",
        "${OPENCLAW_GATEWAY_BIND}",
        "--port",
        "${OPENCLAW_GATEWAY_PORT}"
      ]

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

実行中のコンテナ内でバイナリをインストールするのは罠です。 ランタイムでインストールされたものは再起動時に失われます。

スキルに必要なすべての外部バイナリは、イメージビルド時にインストールする必要があります。

以下の例は、3つの一般的なバイナリのみを示しています:

  • gog Gmailアクセス用
  • goplaces Google Places用
  • wacli WhatsApp用

これらは例であり、完全なリストではありません。 同じパターンを使用して必要な数だけバイナリをインストールできます。

後で追加のバイナリに依存する新しいスキルを追加する場合は:

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

Dockerfileの例

FROM node:22-bookworm

RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*

# 例バイナリ1: Gmail CLI
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog

# 例バイナリ2: Google Places CLI
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/goplaces

# 例バイナリ3: WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/wacli

# 同じパターンを使用して以下にさらにバイナリを追加

WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts

RUN corepack enable
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build

ENV NODE_ENV=production

CMD ["node","dist/index.js"]

11) ビルドと起動

docker compose build
docker compose up -d openclaw-gateway

バイナリを確認:

docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker compose exec openclaw-gateway which wacli

期待される出力:

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

12) Gatewayを確認

docker compose logs -f openclaw-gateway

成功:

[gateway] listening on ws://0.0.0.0:18789

13) ラップトップからアクセス

Gatewayポートを転送するSSHトンネルを作成:

gcloud compute ssh openclaw-gateway --zone=us-central1-a -- -L 18789:127.0.0.1:18789

ブラウザで開く:

http://127.0.0.1:18789/

Gatewayトークンを貼り付けます。


何がどこに永続化されるか(信頼できる情報源)

OpenClawはDockerで実行されますが、Dockerは信頼できる情報源ではありません。 すべての長期的な状態は、再起動、再構築、再起動を生き残る必要があります。

コンポーネント場所永続化メカニズム備考
Gateway設定/home/node/.openclaw/ホストボリュームマウントopenclaw.json、トークンを含む
モデル認証プロファイル/home/node/.openclaw/ホストボリュームマウントOAuthトークン、APIキー
スキル設定/home/node/.openclaw/skills/ホストボリュームマウントスキルレベルの状態
Agent workspace/home/node/.openclaw/workspace/ホストボリュームマウントコードとAgentアーティファクト
WhatsAppセッション/home/node/.openclaw/ホストボリュームマウントQRログインを保持
Gmailキーリング/home/node/.openclaw/ホストボリューム + パスワードGOG_KEYRING_PASSWORDが必要
外部バイナリ/usr/local/bin/Dockerイメージビルド時に組み込む必要がある
NodeランタイムコンテナファイルシステムDockerイメージイメージビルドごとに再構築
OSパッケージコンテナファイルシステムDockerイメージランタイムでインストールしない
Dockerコンテナ一時的再起動可能安全に破棄可能

アップデート

VM上のOpenClawを更新するには:

cd ~/openclaw
git pull
docker compose build
docker compose up -d

トラブルシューティング

SSH接続が拒否される

SSHキーの伝播にはVM作成後1〜2分かかることがあります。待ってから再試行してください。

OS Loginの問題

OS Loginプロファイルを確認:

gcloud compute os-login describe-profile

アカウントに必要なIAM権限(Compute OS LoginまたはCompute OS Admin Login)があることを確認してください。

メモリ不足(OOM)

e2-microを使用してOOMが発生した場合、e2-smallまたはe2-mediumにアップグレード:

# まずVMを停止
gcloud compute instances stop openclaw-gateway --zone=us-central1-a

# マシンタイプを変更
gcloud compute instances set-machine-type openclaw-gateway \
  --zone=us-central1-a \
  --machine-type=e2-small

# VMを起動
gcloud compute instances start openclaw-gateway --zone=us-central1-a

サービスアカウント(セキュリティのベストプラクティス)

個人使用の場合、デフォルトユーザーアカウントで問題ありません。

自動化またはCI/CDパイプラインの場合、最小限の権限を持つ専用サービスアカウントを作成:

  1. サービスアカウントを作成:

    gcloud iam service-accounts create openclaw-deploy \
      --display-name="OpenClaw Deployment"
    
  2. Compute Instance Admin役割(またはより狭いカスタム役割)を付与:

    gcloud projects add-iam-policy-binding my-openclaw-project \
      --member="serviceAccount:[email protected]" \
      --role="roles/compute.instanceAdmin.v1"
    

自動化にOwner役割を使用しないでください。最小権限の原則を使用してください。

IAM役割の詳細については、https://cloud.google.com/iam/docs/understanding-roles を参照してください。


次のステップ