ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
セキュリティ運用

OpenClaw Nginxリバースプロキシ・SSL設定ガイド

· 9 分で読了

OpenClawのGatewayサービスはデフォルトで18789ポートで動作しますが、セキュリティの観点から、公式はこのポートを絶対にインターネットに直接公開しないよう明確に推奨しています。正しいアプローチは、NginxをリバースプロキシとしてフロントエンドでSSL暗号化とアクセス制御を処理し、リクエストをOpenClawのGatewayに転送することです。このチュートリアルでは、その設定手順を一通りご説明します。

なぜリバースプロキシが必要なのか

OpenClawの18789ポートを直接公開すると、複数のリスクがあります。

  • 暗号化なしの通信: GatewayはデフォルトでHTTPを使用しており、チャット内容やAPIキーが中間者に傍受される恐れがあります
  • アクセス制御の欠如: 誰でもGatewayのインターフェースにアクセスを試みることができます
  • ドメイン名が使えない: 多くのチャットプラットフォームのWebhookはHTTPSアドレスを必要とします

Nginxリバースプロキシを導入することで、SSL暗号化、リクエストフィルタリング、レート制限など多層的な保護が得られます。セキュリティに関する詳細な推奨事項はOpenClaw公式ドキュメントをご参照ください。

前提条件

  • OpenClawがデプロイ済みのLinuxサーバー(Ubuntu 22.04/24.04 推奨)
  • サーバーのIPに紐づけ済みのドメイン名(例:ai.example.com
  • OpenClawのGatewayがローカルで正常に稼働していること

ステップ1:Nginxをインストールする

sudo apt update
sudo apt install -y nginx

Nginxの起動を確認します。

sudo systemctl status nginx
sudo systemctl enable nginx

ステップ2:Nginx設定ファイルを作成する

OpenClaw専用のNginxサイト設定を作成します。

sudo nano /etc/nginx/sites-available/openclaw

以下の設定内容を記述します。

upstream openclaw_gateway {
    server 127.0.0.1:18789;
    keepalive 64;
}

server {
    listen 80;
    server_name ai.example.com;

    # certbotが後でHTTPSリダイレクトを自動追加します
    location / {
        proxy_pass http://openclaw_gateway;
        proxy_http_version 1.1;

        # WebSocketサポート(OpenClawの一部機能がWebSocketに依存)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 実際のクライアント情報を転送
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # タイムアウト設定(AIの生成には時間がかかる場合があります)
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;

        # バッファリング設定
        proxy_buffering off;
        proxy_cache off;
    }
}

サイト設定を有効にします。

sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
sudo nginx -t  # 設定の文法チェック
sudo systemctl reload nginx

nginx -t コマンドで syntax is ok および test is successful と表示されれば、設定は正しいです。

ステップ3:SSL証明書を取得する

Let's Encryptの無料SSL証明書を、Certbotツールで自動的に取得・設定します。

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d ai.example.com

Certbotは以下の処理を自動で行います。

  1. ドメインの所有権を検証
  2. SSL証明書を取得
  3. Nginx設定を変更し、HTTPSリスナーとHTTPからHTTPSへの自動リダイレクトを追加
  4. 証明書の自動更新を設定

証明書のデフォルト有効期間は90日間で、Certbotが自動更新のタイマーを設定します。更新が正常に動作するか手動で確認できます。

sudo certbot renew --dry-run

ステップ4:OpenClawの信頼済みプロキシを設定する

リバースプロキシを使用する場合、OpenClawに信頼するプロキシを伝え、クライアントの実際のIPアドレスを正しく取得できるようにする必要があります。OpenClawの設定を編集します。

nano ~/.config/openclaw/openclaw.json5

信頼済みプロキシの設定を追加します。

{
  gateway: {
    // ローカルのNginxからのリクエストを信頼
    trustedProxies: ["127.0.0.1", "::1"],
    // ローカルにバインドし、外部からの直接リクエストを受け付けない
    host: "127.0.0.1",
    port: 18789,
  }
}

host127.0.0.1 に設定することで、Gatewayはローカルからの接続のみを受け付けるようになります。ファイアウォールの設定に不備があっても、外部から直接18789ポートにアクセスすることはできません。

Gatewayを再起動して設定を反映させます。

openclaw gateway restart

ステップ5:ファイアウォールを設定する

UFWで必要なポートのみを開放します。

sudo ufw allow 22/tcp    # SSH
sudo ufw allow 80/tcp    # HTTP(証明書検証とリダイレクト用)
sudo ufw allow 443/tcp   # HTTPS
sudo ufw deny 18789/tcp  # Gatewayポートへの直接アクセスを明示的に拒否
sudo ufw enable
sudo ufw status

ステップ6:エンドツーエンドで動作確認する

すべての設定が完了したら、全体の動作を検証します。

# Nginxが正しくプロキシしているか確認
curl -I https://ai.example.com

# OpenClaw Gatewayの状態を確認
openclaw doctor

# 18789ポートが外部に公開されていないことを確認
# 別のマシンから実行:
curl http://あなたのサーバーIP:18789  # 接続が拒否されるはずです

上級編:レート制限を追加する

悪用を防ぐため、Nginxにレート制限を追加できます。http ブロック(通常 /etc/nginx/nginx.conf 内)に以下を追加します。

# レート制限ゾーンを定義
limit_req_zone $binary_remote_addr zone=openclaw_limit:10m rate=10r/s;

次に、サイト設定の location ブロック内で参照します。

location / {
    limit_req zone=openclaw_limit burst=20 nodelay;
    proxy_pass http://openclaw_gateway;
    # ... その他の設定はそのまま
}

これにより、各IPアドレスのリクエスト頻度が毎秒10リクエストに制限され、最大20リクエストのバーストが許可されます。

まとめ

NginxリバースプロキシとSSL証明書により、OpenClawのGatewayに信頼性の高いセキュリティ保護が加わりました。すべての通信が暗号化され、Gatewayポートは公開されず、Nginxのさまざまなセキュリティ機能を柔軟に追加できます。Caddyなど他のWebサーバーを使う場合も設定の考え方は同様です。具体的な構文についてはOpenClaw公式ドキュメントのデプロイガイドを参照してください。設定に関する問題はOpenClaw GitHub リポジトリでコミュニティのサポートを受けられます。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応