Xserver VPSのDocker環境(Dify + n8n)にOpenClawを追加してLINE Bot化する全記録
Xserver VPSのDocker環境(Dify + n8n)にOpenClawを追加してLINE Bot化する全記録
誰かの役に立つように書き残す。2日間・合計9時間・ハマりポイント14個の全記録。
背景
Xserver VPS上でDifyとn8nがDocker Composeで同居している環境に、OpenClawを追加。LINE Messaging API経由でAIエージェントとして動かし、LINEに話しかけるとAIが返事する構成を作った。
OpenClawの設計思想
OpenClawの創始者Peter Steinbergerは「ローカルファースト」のアーキテクチャを意図的に構築している。ただし「ローカル」とは「個人のMac限定」ではなく、「ユーザーが管理するインフラ上で動かす」という意味。ノートPC、Mac Mini、ラズパイ、VPS、全てが想定対象。公式スローガンは "Your assistant. Your machine. Your rules."
つまりVPSでの運用は公式に想定された構成の一つ。ただしDockerでのデプロイは別問題で、Dockerのネットワーク分離とOpenClawのセキュリティモデル(localhost以外を疑う設計)の相性が悪い。 これが今回のハマりポイントの大半の根本原因。
参考: Fortune - Who is OpenClaw creator Peter Steinberger?
参考: Y Combinator独占インタビュー
最終構成
openclaw:
image: ghcr.io/openclaw/openclaw:latest
container_name: docker-openclaw
restart: unless-stopped
ports:
- "18789:18789"
volumes:
- ./openclaw/data:/home/node/.openclaw # ← /root/.openclawではない!
- ./openclaw/gogcli:/home/node/.config/gogcli
environment:
- OPENCLAW_GATEWAY_PORT=18789
- PATH=/home/node/.openclaw/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# OPENCLAW_GATEWAY_BINDは書かない(設定ファイルで管理)
env_file:
- ./openclaw/.env
- Xserver VPS(RAM 6GB)
- Docker Compose で Dify + n8n + OpenClaw が同居
- NginxはDify付属のコンテナ(パスベースでルーティング)
- LLMはOpenRouter経由(Claude Haiku 4.5)
- Googleカレンダー連携(gogcli)
ハマりポイント全14個
| # | 問題 | 解決策 |
|---|---|---|
| 1 | Nginx起動しない($http_upgradeがenvsubstで空文字) | 別ファイルws-upgrade.confに切り出し |
| 2 | 502 Bad Gateway(loopbackバインド) | gateway.bind "lan" |
| 3 | pairing required(Docker NAT) | trustedProxies ["172.18.0.0/16"] + devices approve |
| 4 | Webhook POST 404 | パスは /line/webhook(/webhooks/lineではない) |
| 5 | LINE 401 | Channel IDではなくChannel Access Tokenを使う |
| 6 | LINE返信来ない | pairing approve line <code> |
| 7 | ダッシュボード1006 (pairing) | devices approve |
| 8 | ダッシュボード1006 (WebSocket) | location = /openclaw(末尾スラッシュなし)を追加 |
| 9 | ダッシュボード origin拒否 | controlUi.allowedOriginsに外部ドメイン追加 |
| 10 | qwen2.5:3bハルシネーション | 公式ドキュメントでダブルチェック |
| 11 | 設定全消滅 | ボリュームマウント /root/.openclaw → /home/node/.openclaw |
| 12 | gogバイナリ消滅 | 永続化ボリューム内に配置 |
| 13 | gateway.bindが毎回戻る | docker-compose.yamlのOPENCLAW_GATEWAY_BIND環境変数を削除 |
| 14 | gog認証state mismatch | Step 2にも--services calendarを付ける |
詳細は OpenClaw_Docker環境の崩壊と復旧 を参照。
参考リンク
- OpenClaw公式ドキュメント
- Fortune - Who is Peter Steinberger?
- Y Combinator独占インタビュー
- Docker環境のpairing required問題(GitHub Issue #6959)
関連記事
- OpenClaw_Docker環境の崩壊と復旧 — ボリュームマウント崩壊と復旧記録
- OpenClaw_Docker_LINE構築記録_slides — Marpスライド
- MacローカルのOpenClawをLINE Botとして公開する方法 — トンネリング比較
- OpenClaw_Tailscale_Funnel深掘り — Tailscale Funnel詳細
- OpenClaw_Googleカレンダー_SNS連携ガイド — Googleカレンダー・SNS連携