Claw-Empire VPSデプロイ トラブルシューティング記録
発生した問題と解決策
問題1: Caddy → pm2 接続タイムアウト(502 Bad Gateway)
症状:
https://claw.siruera.comにアクセスすると 502 Bad Gateway- VPS上の
curl http://127.0.0.1:8790は正常応答
原因(2つ):
1-A. pm2のリッスンアドレス
.envでHOST=127.0.0.1→ Docker bridge IP(172.19.0.1)から接続不可- 修正:
HOST=0.0.0.0に変更
1-B. iptables/UFWファイアウォール
- UFW の INPUT ポリシーが
DROP→ Docker(172.19.0.0/16)からポート8790への通信がブロック - VPSホスト側の
curl 172.19.0.1:8790は成功するが、Docker内からwget 172.19.0.1:8790はタイムアウト - 修正:
ufw allow from 172.19.0.0/16 to any port 8790 proto tcp
診断コマンド:
# リッスンアドレス確認
ss -tlnp sport = :8790
# Docker内部からの接続テスト
docker exec n8n-caddy-1 wget -qO- --timeout=5 http://172.19.0.1:8790/api/company
# Caddyログ確認
docker logs n8n-caddy-1 2>&1 | grep claw | tail -20問題2: 静的ファイル 403 Forbidden
症状:
- HTML(
/)は 200 OK で返るが、/assets/*.js,/assets/*.cssが 403 - ブラウザでは白い画面
原因:
- CORSミドルウェア(
server/security/auth.ts)が Origin チェック ALLOWED_ORIGINS環境変数が未設定 →claw.siruera.comが許可リストに含まれない
修正:
# .env に追加
echo 'ALLOWED_ORIGINS=https://claw.siruera.com' >> /opt/claw-empire/.env
pm2 restart claw-empire --update-env診断コマンド:
# Origin付きでcurlテスト
curl -sI -H 'Origin: https://claw.siruera.com' http://127.0.0.1:8790/assets/index-620Rcgyd.js
# → 200 OK なら CORS 解決問題3: SSL証明書取得失敗
症状:
- Caddy が Let’s Encrypt から証明書を取得できない
- ログに
NXDOMAIN looking up A for claw.siruera.com
原因:
- DNS設定がまだ反映されていない状態でCaddyが証明書取得を試行
- Let’s Encrypt のレートリミットに到達
解決:
- DNS設定完了後、Caddy再起動で自動リトライ → 成功
- Caddyは
max_duration: 2592000(30日)まで自動リトライし続ける
教訓
TIP
Docker内→ホストOS通信のトラブルシュートは、以下の3レイヤーを順に確認:
- アプリ: リッスンアドレス(
0.0.0.0vs127.0.0.1)- ファイアウォール: iptables/UFW でDockerサブネットからの通信が許可されているか
- アプリ設定: CORS、認証ミドルウェア等がOriginをブロックしていないか