Hetzner 上の OpenClaw(Docker、本番 VPS ガイド)¶
目的¶
Docker を使用して Hetzner VPS 上で永続的な OpenClaw Gateway(ゲートウェイ)を実行し、耐久性のある状態、組み込み済みバイナリ、安全な再起動挙動を実現します。
「OpenClaw 24/7 for ~$5」を使用する場合は、最も簡単な信頼性の高いセットアップです。
「約 $5 で OpenClaw を 24/7 稼働」したい場合、これが最もシンプルで信頼性の高い構成です。
Hetzner の料金は変更されるため、最小の Debian/Ubuntu VPS を選び、OOM が発生したらスケールアップしてください。
何をするのか(簡単に)¶
- 小さな Linux サーバー(Hetzner VPS)を借ります
- Docker(分離されたアプリ実行環境)をインストールします
- Docker で OpenClaw Gateway(ゲートウェイ)を起動します
- ホスト上で
~/.openclawと~/.openclaw/workspaceを永続化します(再起動や再ビルド後も維持) - SSH トンネル経由でノート PC から Control UI にアクセスします
Gateway(ゲートウェイ)へのアクセス方法:
- ノート PC からの SSH ポートフォワーディング
- ファイアウォールやトークン管理を自分で行う場合の直接ポート公開
このガイドでは、Hetzner 上の Ubuntu または Debian を想定しています。
別の Linux VPSを使用している場合は、それに応じてパッケージをマップします。
このガイドでは、GCP Compute Engine 上の Debian を使用します。
Ubuntu でも動作しますが、パッケージを適宜読み替えてください。
汎用的な Docker フローについては、Docker を参照してください。
クイックパス(経験者向け)¶
- Hetzner VPS をプロビジョニング
- Docker をインストール
- OpenClaw リポジトリをクローン
- 永続的なホストディレクトリを作成
.envとdocker-compose.ymlを設定- 必要なバイナリをイメージに組み込み
docker compose up -d- 永続化と Gateway(ゲートウェイ)へのアクセスを確認
必要なもの¶
- root 権限付きの Hetzner VPS
- ノート PC からの 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
# Set ownership to the container user (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:
# Recommended: keep the Gateway loopback-only on the VPS; access via SSH tunnel.
# To expose it publicly, remove the `127.0.0.1:` prefix and firewall accordingly.
- "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
# Optional: only if you run iOS/Android nodes against this VPS and need Canvas host.
# If you expose this publicly, read /gateway/security and firewall accordingly.
# - "18793:18793"
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${OPENCLAW_GATEWAY_BIND}",
"--port",
"${OPENCLAW_GATEWAY_PORT}",
"--allow-unconfigured",
]
--allow-unconfigured はブートストラップの利便性のためだけのものであり、適切なゲートウェイ設定の代替にはなりません。 引き続き認証(gateway.auth.token またはパスワード)を設定し、デプロイメントに適した安全なバインド設定を使用してください。
7. 必要なバイナリをイメージに組み込む(重要)¶
実行中のコンテナ内にバイナリをインストールすることは罠です。 実行時にインストールされたものは、再起動時に失われます。
Skills に必要な外部バイナリは、すべてイメージのビルド時にインストールする必要があります。
以下の例では、一般的な 3 つのバイナリのみを示しています:
- Gmail アクセス用の
gog - Google Places 用の
goplaces - WhatsApp 用の
wacli
これらは、完全なリストではない例です。 同じパターンを使用して、必要に応じて多くのバイナリをインストールできます。
後から追加のバイナリに依存する Skills を追加した場合は、次を行う必要があります:
- Dockerfile を更新
- イメージを再ビルド
- コンテナを再起動
Dockerfile の例
FROM node:22-bookworm
RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*
# Example binary 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
# Example binary 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
# Example binary 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
# Add more binaries below using the same pattern
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"]
8. ビルドと起動¶
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
9. Gateway(ゲートウェイ)を確認¶
docker compose logs -f openclaw-gateway
成功時:
[gateway] listening on ws://0.0.0.0:18789
ノート PC から:
ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP
開きます:
http://127.0.0.1:18789/
Gateway トークンを貼り付けてください。
何がどこに永続化されるか(正本)¶
OpenClaw は Docker 上で動作しますが、Docker は正本ではありません。
すべての長期的な状態は、再起動、再ビルド、再起動(リブート)後も維持される必要があります。
すべての長寿命の状態は、再起動、再構築、再起動、および再起動を生き残らなければなりません。
| コンポーネント | 場所 | 永続化の仕組み | 注記 |
|---|---|---|---|
| Gateway 設定 | /home/node/.openclaw/ |
ホストのボリュームマウント | openclaw.json、トークンを含む |
| モデル認証プロファイル | /home/node/.openclaw/ |
ホストのボリュームマウント | OAuth トークン、API キー |
| Skill 設定 | /home/node/.openclaw/skills/ |
ホストのボリュームマウント | Skill レベルの状態 |
| エージェントのワークスペース | /home/node/.openclaw/workspace/ |
ホストのボリュームマウント | コードとエージェント成果物 |
| WhatsApp セッション | /home/node/.openclaw/ |
ホストのボリュームマウント | QR ログインを保持 |
| Gmail キーリング | /home/node/.openclaw/ |
ホストボリューム + パスワード | GOG_KEYRING_PASSWORD が必要 |
| 外部バイナリ | /usr/local/bin/ |
Docker イメージ | ビルド時に焼かれなければなりません |
| Node ランタイム | コンテナのファイルシステム | Docker イメージ | イメージビルドごとに再構築 |
| OS パッケージ | コンテナのファイルシステム | Docker イメージ | 実行時にインストールしない |
| Docker コンテナ | エフェメラル | 再起動可能 | 破棄しても安全 |