OpenClaw_Docker_LINE構築記録_slides
🦞 OpenClaw × Docker × LINE
Xserver VPSの既存環境に追加して LINE Bot化する全記録
ハマりポイント10個 / 所要時間6時間
今日のゴール
LINEに話しかけるとAIが返事する
それだけ。でもそこに至るまでが地獄だった。
OpenClawの設計思想
"Your assistant. Your machine. Your rules."
- 「ローカルファースト」= 自分のインフラで動かす
- ノートPC、Mac Mini、ラズパイ、VPS — 全て想定対象
- VPSは公式に想定された構成の一つ
ただしDockerは別問題。
Dockerのネットワーク分離 × OpenClawのセキュリティモデル
= 今回のハマりポイントの大半の根本原因
構成図
┌─────────────┐ ┌───────────────────────────────┐
│ LINE ユーザー │────▶│ Xserver VPS (RAM 6GB) │
│ (スマホ) │◀────│ │
└─────────────┘ │ ┌─────────┐ │
│ │ Nginx │ :443 (SSL終端) │
│ └────┬────┘ │
│ ┌────▼────┐ ┌──────┐ ┌───┐ │
│ │OpenClaw │ │ Dify │ │n8n│ │
│ │ :18789 │ │:3000 │ │:5678│ │
│ └────┬────┘ └──────┘ └───┘ │
│ │ │
│ OpenRouter API │
│ (Claude Haiku 4.5) │
└───────────────────────────────┘
なぜこの構成?
Mac にインストールしない理由
- スリープしたらBot止まる
- 仕事用PCにエージェント入れるセキュリティリスク
- 社長はLINEから使うだけ。何もインストール不要
VPSに既にDify + n8nが動いてる
- Docker環境が整ってる
- Nginx + SSL が既にある
- 追加するだけ…のはずだった
ハマりポイント 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が返事
ダッシュボード ✅
- SSHトンネル経由
- Nginx経由(SSHトンネル不要)
24/7稼働 ✅
VPSなのでMacスリープしても動き続ける
社長への提供 ✅
「LINEを友だち追加するだけで使えます」
リソース
| コンポーネント | RAM |
|---|---|
| OpenClaw | 300〜500MB |
| Dify | 1〜2GB |
| n8n | 300〜500MB |
| OS等 | 300〜500MB |
Xserver VPS RAM 6GB で 3サービス同居可能
教訓
- OpenClawはVPS運用を公式に想定 → ただしDocker環境は落とし穴多し
- ペアリングはDocker固有の壁 → VPS直接インストールなら回避可能
- Nginxの末尾スラッシュは本当に罠 →
=完全一致を活用 - 小さいモデルの回答は信じるな → 公式ドキュメント最優先
- 非エンジニアに使ってもらう最善策 → VPSに構築してLINE Botとして提供
非エンジニアにAIエージェントを届ける
最短ルートはLINE
裏側の6時間の格闘は知らなくていい
参考リンク
- OpenClaw × LINE連携完全ガイド
- OpenClaw公式ドキュメント
- PCを汚さずにOpenClawを試す方法(GCP)
- pairing required問題(GitHub #6959)
- Fortune - Who is Peter Steinberger?
ありがとうございました 🦞
詳細記事:Digital Garden で公開中