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 を参照してください。
クイックパス(経験者向け)
- Hetzner VPS をプロビジョニング
- Docker をインストール
- OpenClaw リポジトリをクローン
- 永続ホストディレクトリを作成
.envとdocker-compose.ymlを設定- 必要なバイナリをイメージに組み込む
docker compose up -d- 永続化と 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 トンネル設定
リポジトリ:
- インフラストラクチャ:openclaw-terraform-hetzner
- Docker 設定:openclaw-docker-config
このアプローチは、上記の Docker セットアップを補完し、再現可能なデプロイ、バージョン管理されたインフラストラクチャ、自動化された災害復旧を実現します。
注意: コミュニティメンテナンスです。問題やコントリビューションについては、上記のリポジトリリンクを参照してください。