ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
基本設定

OpenClawリモートアクセスとポートフォワーディングの設定

· 13 分で読了

はじめに

デフォルトでは、OpenClaw は 127.0.0.1 のみでリッスンし、ローカルマシンからのアクセスのみを許可しています。しかし実際のデプロイでは、外部ネットワークからDashboardにアクセスしたり、IMプラットフォームのWebhookコールバックを受信したり、モバイルデバイスのペアリング接続を行う必要があります。本記事では、基本的なポート設定から本番レベルのリバースプロキシデプロイまで、OpenClawのリモートアクセス方式を体系的に紹介します。

基本:ネットワークアクセスの開放

最も簡単な方法は、リッスンアドレスを 0.0.0.0 に変更することです。

{
  "gateway": {
    "host": "0.0.0.0",
    "port": 18789
  }
}

変更後にゲートウェイを再起動します。

openclaw gateway --port 18789

これでLAN内の他のデバイスは http://<サーバーIP>:18789 でOpenClawにアクセスできます。しかし、パブリックネットワークからの接続を受け入れるには、追加の設定が必要です。

方式1:ルーターのポートフォワーディング

OpenClawが家庭ネットワークで動作している場合、ルーターでポートフォワーディング(Port Forwarding)を設定する必要があります。

  1. ルーターの管理画面にログイン
  2. 「ポートフォワーディング」または「仮想サーバー」設定を探す
  3. ルールを追加:外部ポート 18789 → 内部IP 192.168.x.x ポート 18789
  4. 保存して適用

ダイナミックDNS

家庭用ブロードバンドのパブリックIPは通常変化するため、DDNSサービスとの併用をお勧めします。

# 代表的なDDNSサービス
# Cloudflare DDNS
# DuckDNS
# No-IP

DDNSを設定すると、固定ドメイン名(例:myserver.duckdns.org)でOpenClawにアクセスでき、IPの変更を気にする必要がなくなります。

方式2:Nginxリバースプロキシ

本番環境では、NginxをリバースプロキシとしてTLS終端、ロードバランシング、追加のセキュリティレイヤーを提供することを推奨します。

Nginxのインストール

# Ubuntu / Debian
sudo apt install nginx

# CentOS / RHEL
sudo yum install nginx

設定ファイル

Nginx設定ファイル /etc/nginx/sites-available/openclaw を作成します。

server {
    listen 80;
    server_name openclaw.yourdomain.com;

    # HTTPをHTTPSにリダイレクト
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name openclaw.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/openclaw.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/openclaw.yourdomain.com/privkey.pem;

    # 推奨SSL設定
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://127.0.0.1:18789;
        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;

        # WebSocketサポート(Dashboardのリアルタイム更新とモバイル接続に必要)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # タイムアウト設定(AIの応答は遅くなる場合がある)
        proxy_read_timeout 120s;
        proxy_send_timeout 120s;
    }

    # リクエストボディサイズの制限(OpenClawのmaxBodySizeに合わせる)
    client_max_body_size 20m;
}

設定の有効化

sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

方式3:Caddyリバースプロキシ

よりシンプルな設定を好む場合、Caddyは優れた代替です。Let's Encrypt証明書を自動的に申請・更新します。

Caddyfile設定

openclaw.yourdomain.com {
    reverse_proxy localhost:18789
}

はい、これだけです。CaddyはHTTPS証明書、HTTPからHTTPSへのリダイレクト、WebSocketプロキシなどを自動的に処理します。

# Caddyの起動
caddy start

方式4:NAT越しトンネリング

ポートフォワーディングができないネットワーク環境(企業ネットワーク、キャンパスネットワークなど)では、NAT越しツールを使用できます。

Cloudflare Tunnelの使用

# cloudflaredのインストール
# Cloudflareにログイン
cloudflared tunnel login

# トンネルの作成
cloudflared tunnel create openclaw

# トンネルの設定
# ~/.cloudflared/config.yml
tunnel: your-tunnel-id
credentials-file: ~/.cloudflared/your-tunnel-id.json

ingress:
  - hostname: openclaw.yourdomain.com
    service: http://localhost:18789
  - service: http_status:404

# トンネルの起動
cloudflared tunnel run openclaw

frpの使用

# frpc.ini (クライアント設定)
[common]
server_addr = your-frp-server.com
server_port = 7000
token = your-auth-token

[openclaw]
type = tcp
local_ip = 127.0.0.1
local_port = 18789
remote_port = 18789

HTTPS証明書の設定

Let's Encrypt(推奨)

certbotを使用して無料のSSL証明書を取得します。

# certbotのインストール
sudo apt install certbot python3-certbot-nginx

# Nginx + 証明書の自動設定
sudo certbot --nginx -d openclaw.yourdomain.com

# 証明書の自動更新
sudo certbot renew --dry-run

OpenClaw内蔵TLS

リバースプロキシを使用しない場合、OpenClaw自体もTLSの直接設定をサポートしています。

{
  "security": {
    "tls": {
      "enabled": true,
      "cert": "/etc/letsencrypt/live/yourdomain.com/fullchain.pem",
      "key": "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
    }
  }
}

Webhookコールバックアドレスの設定

多くのIMプラットフォーム(Telegram、WhatsAppなど)は、Webhookを通じてサーバーにメッセージをプッシュします。リモートアクセスを設定した後、Webhookベースアドレスを更新する必要があります。

{
  "gateway": {
    "webhookBase": "https://openclaw.yourdomain.com"
  }
}

OpenClawは自動的に webhookBase と各チャンネルの webhookPath を連結して完全なコールバックURLを生成し、対応するプラットフォームに登録します。例えば、TelegramのWebhookは https://openclaw.yourdomain.com/webhook/telegram に設定されます。

ファイアウォールの設定

関連ポートのファイアウォール通過を確認してください。

# UFW (Ubuntu)
sudo ufw allow 18789/tcp
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp

# firewalld (CentOS)
sudo firewall-cmd --permanent --add-port=18789/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

# iptables
sudo iptables -A INPUT -p tcp --dport 18789 -j ACCEPT

セキュリティのベストプラクティス

リモートアクセスはパブリックネットワークへの露出を意味するため、セキュリティ対策が必須です。

  1. 常にHTTPSを使用:転送中のデータ、特にAPIキーと会話内容を保護
  2. Dashboardパスワードの設定:権限のない管理操作を防止
  3. レート制限の設定:不正利用やDDoS攻撃を防止
  4. IPホワイトリストの使用:アクセス元が固定されている場合、許可するIP範囲を制限
  5. 定期的なアップデート:OpenClawとリバースプロキシソフトウェアを最新バージョンに保つ
  6. ログの監視:アクセスログの異常なリクエストを定期的にチェック
{
  "security": {
    "rateLimit": {
      "enabled": true,
      "maxRequests": 60,
      "windowMs": 60000
    },
    "ipWhitelist": ["203.0.113.0/24"]
  }
}

接続の確認

設定完了後、以下の方法でリモートアクセスが正常かどうかを確認できます。

# 外部からHTTPS接続をテスト
curl -I https://openclaw.yourdomain.com/dashboard

# WebSocket接続をテスト
wscat -c wss://openclaw.yourdomain.com/ws

# OpenClaw内蔵の接続テスト
openclaw doctor --remote

まとめ

リモートアクセス設定はOpenClawを実際に使用するための重要なステップです。個人利用にはルーターのポートフォワーディングとDDNSで十分です。本番デプロイにはNginxまたはCaddyをリバースプロキシとして使用し、Let's Encrypt証明書と組み合わせて安全なHTTPSアクセスを実現することを推奨します。どの方式を選んでも、セキュリティのベストプラクティスに従い、AIゲートウェイの不正利用を防いでください。

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