← セキュリティ設計 ローカル環境構築 →

デプロイ手順

VPSにOpenClaw Stackをデプロイする手順を解説します。

手順1: VPSの準備

まず、VPSに必要なパッケージをインストールします。

# システムアップデート
sudo apt update && sudo apt upgrade -y

# 必要パッケージのインストール
sudo apt install -y ufw fail2ban git curl

# デプロイ用ユーザーの作成
sudo adduser deployer && sudo usermod -aG sudo deployer

SSH鍵の設定

# SSH鍵をコピー
# ローカルPCから:
ssh-copy-id deployer@<YOUR_VPS_IP>

SSH セキュリティ強化

/etc/ssh/sshd_config を編集:

PermitRootLogin no
PasswordAuthentication no
sudo systemctl reload sshd

注意: SSH設定を間違えるとログインできなくなります。新しいターミナルで接続確認してから、古いターミナルを閉じてください。

手順2: Docker & Docker Compose のインストール

# Docker公式スクリプトでインストール
curl -fsSL https://get.docker.com | sh

# deployerユーザーをdockerグループに追加
sudo usermod -aG docker deployer

# Docker Compose プラグイン
sudo apt install -y docker-compose-plugin

インストール確認:

docker --version
docker compose version

手順3: プロジェクトのセットアップ

# プロジェクトディレクトリ作成
sudo mkdir -p /opt/openclaw
sudo chown deployer:deployer /opt/openclaw
cd /opt/openclaw

docker-compose.yml の作成

services:
  caddy:
    image: caddy:2
    ports: ["80:80", "443:443"]
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    depends_on: [gateway]
  gateway:
    image: openclaw/gateway:2026.2.18
    environment:
      - OPENCLAW_GATEWAY_TOKEN=${GATEWAY_TOKEN}
    command: ["openclaw","gateway","start","--bind","127.0.0.1:18789"]
    expose: ["18789"]
volumes:
  caddy_data:
  caddy_config:

Caddyfile の作成

example.com {
    encode gzip
    basicauth {
        deployer $HASHED_PASSWORD
    }
    reverse_proxy 127.0.0.1:18789
    log {
        output file /var/log/caddy/access.log
    }
}

.env ファイルの作成

# .envファイルは絶対にGitにコミットしない
echo "GATEWAY_TOKEN=<your-secure-random-token>" > .env
chmod 600 .env

手順4: ファイアウォール設定

sudo ufw default deny incoming
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw limit 22/tcp
sudo ufw deny 18789
sudo ufw enable
sudo ufw status

手順5: コンテナ起動

cd /opt/openclaw
docker compose pull
docker compose up -d

起動確認:

# コンテナ状態
docker compose ps

# ログ確認
docker compose logs -f gateway

手順6: 動作確認

# HTTPS + BasicAuth でステータス確認
curl -u deployer:<password> https://example.com/status
# → {"health":"ok"} が返れば成功

ロールバック方法

アップデートに失敗した場合:

# コンテナ停止
docker compose down

# 既知の安定バージョンを指定して再起動
docker compose up -d

Tip: イメージのバックアップを取っておくと安心です: docker save openclaw/gateway:2026.2.18 > gateway.tar