OpenClaw on Hetzner(Docker、本番 VPS ガイド)

目標

Hetzner VPS 上で Docker を使い、永続的な状態管理、ビルド済みバイナリ、安全な再起動動作を備えた OpenClaw Gateway を稼働させます。

「約 $5 で OpenClaw を 24 時間稼働」させたい場合、これが最もシンプルで信頼性の高いセットアップです。 Hetzner の料金は変動します。最小の Debian/Ubuntu VPS を選び、OOM が発生したらスケールアップしてください。

セキュリティモデルの確認:

  • 全員が同じ信頼境界内にあり、ランタイムがビジネス用途のみの場合、社内共有エージェントは問題ありません。
  • 厳密に分離してください:専用 VPS/ランタイム + 専用アカウント。そのホストに個人の Apple/Google/ブラウザ/パスワードマネージャーのプロファイルを置かないでください。
  • ユーザー同士が対立する可能性がある場合は、Gateway/ホスト/OS ユーザーで分割してください。

セキュリティVPS ホスティングを参照してください。

やること(わかりやすく)

  • 小規模な Linux サーバーをレンタル(Hetzner VPS)
  • Docker をインストール(分離されたアプリランタイム)
  • Docker で OpenClaw Gateway を起動
  • ~/.openclaw + ~/.openclaw/workspace をホスト上に永続化(再起動/再ビルドでも維持)
  • SSH トンネル経由でラップトップからコントロール UI にアクセス

Gateway へのアクセス方法:

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

このガイドでは Hetzner 上の Ubuntu または Debian を前提としています。 別の Linux VPS を使用する場合は、パッケージ名を適宜読み替えてください。 汎用的な Docker フローについては、Docker を参照してください。


クイックパス(経験者向け)

  1. Hetzner VPS をプロビジョニング
  2. Docker をインストール
  3. OpenClaw リポジトリをクローン
  4. 永続ホストディレクトリを作成
  5. .envdocker-compose.yml を設定
  6. 必要なバイナリをイメージに組み込む
  7. docker compose up -d
  8. 永続化と Gateway アクセスを確認

必要なもの

  • root アクセス付きの Hetzner VPS
  • ラップトップからの SSH アクセス
  • SSH + コピー/ペーストの基本的な操作知識
  • 約 20 分
  • Docker と Docker Compose
  • モデル認証情報
  • 任意のプロバイダー認証情報
    • WhatsApp QR
    • Telegram ボットトークン
    • Gmail OAuth

1) VPS のプロビジョニング

Hetzner で Ubuntu または Debian の VPS を作成します。

root として接続:

ssh root@YOUR_VPS_IP

この VPS はステートフルとして扱ってください。 使い捨てインフラとしては扱わないでください。


2) Docker のインストール(VPS 上)

apt-get update
apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sh

確認:

docker --version
docker compose version

3) OpenClaw リポジトリのクローン

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

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


4) 永続ホストディレクトリの作成

Docker コンテナはエフェメラルです。 長期保存データはすべてホスト上に配置する必要があります。

mkdir -p /root/.openclaw/workspace

# コンテナユーザー(uid 1000)にオーナーシップを設定:
chown -R 1000:1000 /root/.openclaw

5) 環境変数の設定

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

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

OPENCLAW_CONFIG_DIR=/root/.openclaw
OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace

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

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

openssl rand -hex 32

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


6) 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:
      # 推奨:VPS 上では Gateway をループバック限定に。SSH トンネル経由でアクセス。
      # パブリックに公開する場合は `127.0.0.1:` プレフィックスを削除し、ファイアウォールを適切に設定。
      - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
    command:
      [
        "node",
        "dist/index.js",
        "gateway",
        "--bind",
        "${OPENCLAW_GATEWAY_BIND}",
        "--port",
        "${OPENCLAW_GATEWAY_PORT}",
        "--allow-unconfigured",
      ]

--allow-unconfigured はブートストラップの利便性のためのみに使用します。適切な Gateway 設定の代替にはなりません。デプロイに合わせて認証(gateway.auth.token またはパスワード)と安全なバインド設定を必ず行ってください。


7) Docker VM 共通ランタイム手順

共通の Docker ホストフローについては、共通ランタイムガイドを参照してください:


8) Hetzner 固有のアクセス

共通のビルドと起動手順の後、ラップトップからトンネルを作成:

ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP

ブラウザで以下を開きます:

http://127.0.0.1:18789/

Gateway トークンを貼り付けてください。


共通の永続化マップについては Docker VM ランタイム を参照してください。

Infrastructure as Code(Terraform)

Infrastructure as Code ワークフローを好むチーム向けに、コミュニティメンテナンスの Terraform セットアップが提供されています:

  • リモート状態管理を含むモジュール式の Terraform 設定
  • cloud-init による自動プロビジョニング
  • デプロイスクリプト(ブートストラップ、デプロイ、バックアップ/リストア)
  • セキュリティハードニング(ファイアウォール、UFW、SSH 限定アクセス)
  • Gateway アクセス用の SSH トンネル設定

リポジトリ:

このアプローチは、上記の Docker セットアップを補完し、再現可能なデプロイ、バージョン管理されたインフラストラクチャ、自動化された災害復旧を実現します。

注意: コミュニティメンテナンスです。問題やコントリビューションについては、上記のリポジトリリンクを参照してください。