はじめに
デフォルトでは、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)を設定する必要があります。
- ルーターの管理画面にログイン
- 「ポートフォワーディング」または「仮想サーバー」設定を探す
- ルールを追加:外部ポート
18789→ 内部IP192.168.x.xポート18789 - 保存して適用
ダイナミック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
セキュリティのベストプラクティス
リモートアクセスはパブリックネットワークへの露出を意味するため、セキュリティ対策が必須です。
- 常にHTTPSを使用:転送中のデータ、特にAPIキーと会話内容を保護
- Dashboardパスワードの設定:権限のない管理操作を防止
- レート制限の設定:不正利用やDDoS攻撃を防止
- IPホワイトリストの使用:アクセス元が固定されている場合、許可するIP範囲を制限
- 定期的なアップデート:OpenClawとリバースプロキシソフトウェアを最新バージョンに保つ
- ログの監視:アクセスログの異常なリクエストを定期的にチェック
{
"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ゲートウェイの不正利用を防いでください。