OpenClaw_Docker_LINE構築記録_slides

🦞 OpenClaw × Docker × LINE

Xserver VPSの既存環境に追加して LINE Bot化する全記録

ハマりポイント10個 / 所要時間6時間


今日のゴール

LINEに話しかけるとAIが返事する

それだけ。でもそこに至るまでが地獄だった。


OpenClawの設計思想

"Your assistant. Your machine. Your rules."

ただしDockerは別問題。
Dockerのネットワーク分離 × OpenClawのセキュリティモデル
= 今回のハマりポイントの大半の根本原因


構成図

┌─────────────┐     ┌───────────────────────────────┐
│  LINE ユーザー │────▶│  Xserver VPS (RAM 6GB)        │
│ (スマホ)     │◀────│                               │
└─────────────┘     │  ┌─────────┐                  │
                    │  │  Nginx  │ :443 (SSL終端)    │
                    │  └────┬────┘                  │
                    │  ┌────▼────┐  ┌──────┐  ┌───┐ │
                    │  │OpenClaw │  │ Dify │  │n8n│ │
                    │  │ :18789  │  │:3000 │  │:5678│ │
                    │  └────┬────┘  └──────┘  └───┘ │
                    │       │                       │
                    │  OpenRouter API               │
                    │  (Claude Haiku 4.5)            │
                    └───────────────────────────────┘

なぜこの構成?

Mac にインストールしない理由

VPSに既にDify + n8nが動いてる


ハマりポイント 10個


① Nginx が起動しなくなる

やったこと

proxy_set_header Upgrade $http_upgrade;

をtemplateに直接書いた

起きたこと

Nginx 即死。Dify も n8n も全部アクセス不能

原因

Difyの envsubst$http_upgrade を環境変数と解釈 → 空文字に

解決策

別ファイルに切り出して include する


② 502 Bad Gateway

原因

OpenClawが 127.0.0.1(自分自身)にしかリッスンしてない

Dockerでは各コンテナが別マシン扱い → Nginxから到達できない

解決策

docker exec docker-openclaw openclaw config set gateway.bind "lan"

0.0.0.0 ではなく "lan" と書くのが新バージョンの作法


③④ pairing required 地獄

Docker × OpenClaw セキュリティモデルの衝突

OpenClawはlocalhostを信頼する設計
Dockerのコンテナ間通信はlocalhostに見えない

Docker内の通信は 172.18.x.x 経由 → 「外部」と判断される

VPS直接インストールなら起きない。Docker固有の問題。

解決策

docker exec docker-openclaw openclaw config set \
  gateway.trustedProxies '["172.18.0.0/16"]'

⑤ Webhookパスが違う

多くの記事

/webhooks/line

実際(v2026.4.2)

/line/webhook

教訓

必ずPOSTでテストする。GETで200でもPOSTで404になる。

curl -s -o /dev/null -w "%{http_code}" -X POST \
  http://localhost:18789/line/webhook \
  -H "Content-Type: application/json" -d '{"events":[]}'

⑥ Channel Access Token を間違える

LINE Developers コンソールの似た値たち:

名前 見た目 場所
Channel ID 2009684300(数字だけ) Basic settings
Channel Secret 英数字32文字 Basic settings
Channel Access Token めちゃくちゃ長い文字列 Messaging API → Issue

Channel ID を入れると → Webhook受信OK、でも返信時に 401


⑦⑧ ダッシュボード接続できない

2つの原因が重なっていた

原因1: devices ペアリング未承認

docker exec docker-openclaw openclaw devices list
docker exec docker-openclaw openclaw devices approve <ID>

原因2: WebSocketが末尾スラッシュなしで接続

wss://domain/openclaw   ← JSが送る(スラッシュなし)
location /openclaw/     ← Nginxの設定(スラッシュあり)
→ マッチしない → 502

⑧ の解決策:2つのlocationを並べる

# 通常リクエスト用
location /openclaw/ {
  proxy_pass http://openclaw:18789/;  ← スラッシュあり
  include proxy.conf;
  include /etc/nginx/conf.d/ws-upgrade.conf;
}

# WebSocket用(完全一致)
location = /openclaw {
  proxy_pass http://openclaw:18789;   ← スラッシュなし!
  include proxy.conf;
  include /etc/nginx/conf.d/ws-upgrade.conf;
}

スラッシュ1つで Internal Server Error になる世界


⑨⑩ その他

⑨ ダッシュボード origin 拒否

controlUi.allowedOrigins に外部ドメインを追加する

⑩ ローカルLLMのハルシネーション

qwen2.5:3b が「公式クラウドゲートウェイ」を自信満々に捏造

小さいモデルの回答は公式ドキュメントでダブルチェック必須


最終結果


完成したもの

LINE Bot ✅

LINEで友だち追加 → メッセージ送る → AIが返事

ダッシュボード ✅

24/7稼働 ✅

VPSなのでMacスリープしても動き続ける

社長への提供 ✅

「LINEを友だち追加するだけで使えます」


リソース

コンポーネント RAM
OpenClaw 300〜500MB
Dify 1〜2GB
n8n 300〜500MB
OS等 300〜500MB

Xserver VPS RAM 6GB で 3サービス同居可能


教訓

  1. OpenClawはVPS運用を公式に想定 → ただしDocker環境は落とし穴多し
  2. ペアリングはDocker固有の壁 → VPS直接インストールなら回避可能
  3. Nginxの末尾スラッシュは本当に罠= 完全一致を活用
  4. 小さいモデルの回答は信じるな → 公式ドキュメント最優先
  5. 非エンジニアに使ってもらう最善策 → VPSに構築してLINE Botとして提供

非エンジニアにAIエージェントを届ける

最短ルートはLINE

裏側の6時間の格闘は知らなくていい


参考リンク


ありがとうございました 🦞

詳細記事:Digital Garden で公開中