Clawdbot / OpenClaw を「とりあえず動く」から「事故りにくい」へ:最低限の見直しポイント(途中まで)
Clawdbot / OpenClaw を「とりあえず動く」から「事故りにくい」へ:最低限の見直しポイント
OpenClaw / Clawdbot を Mac mini + Docker + ngrok + LINE Webhook で回している人、わりと多いと思います。 手元の自動化がサクサク進む一方で、構成次第では “意図せず攻撃面が増える” こともあります。
この記事では、ありがちな落とし穴を避けるための 「最低限ここまでは」 を、途中まで解説します。 (※本当に大事な“詰め”と、コピペで再現できる完成形・チェックリストは完全版にまとめています)
ありがちな事故ポイント(超ざっくり)
- 管理画面 / 操作系のポートを、ngrokでそのまま外に出してしまう
- 「トークンがあるから大丈夫」で止まり、到達可能な面(攻撃面)が残る
- LINE Webhook は IP制限が現実的じゃないことが多く、放置されがち
ここで大切なのは、難しい話ではなく “公開するものを最小にする” という設計です。
今日やること(途中までのゴール)
ゴールはシンプルです。
- 外に出すのは LINE Webhook だけ
- 管理系の画面や操作系ポートは 外に出さない(localhost限定)
- ngrok は Webhook の受け口だけに向ける
この段階だけでも「うっかり公開」の事故率は大きく下がります。
ステップ1:まず “何が外に出ているか” を把握する
Dockerが立っているMacで、まずこれを見ます。
docker ps --format "table {{.Names}}\t{{.Ports}}"
ここでチェックしたいのは、
0.0.0.0:xxxx->...(全公開)127.0.0.1:xxxx->...(ローカル限定)
もし管理系が 0.0.0.0 側で出ていたら、最優先で修正対象です。
ステップ2:管理系ポートは “localhostバインド” に固定する
composeで ports: を使っている場合、IPを明示して縛ります。
例(管理系):
ports:
- "127.0.0.1:18789:18789"
- "127.0.0.1:18790:18790"
これで「インターネットからMacへ直で届く」状態は避けられます。
ステップ3:ngrok を “Webhook 以外” に向けない
ここ、やりがちです。
ngrok は Mac上のプロセスなので、127.0.0.1:18789 に到達できます。
つまり「localhostに縛ったから安全」と思っていても、ngrokがそこをトンネルすると公開されます。
ngrokの転送先は Webhook受け口だけにします。
(Webhookが 3000 の想定なら)
ngrok http 3000
そして、ngrok のローカル管理画面 http://127.0.0.1:4040 で、
- ✅
-> http://localhost:3000 - ❌
-> http://localhost:18789
になっていないかを確認します。
ここで詰まるポイント:Webhook の“受け口”が存在しないと 502 になる
「よし、Webhookを3000にしよう」と思って ngrok http 3000 にしたら
- 502 Bad Gateway
curlするとEmpty reply from serverConnection refused
みたいになることがあります。
これはだいたい、
- 3000で実際にHTTPサーバが待っていない
- もしくは「待ってるつもり」で、別コンテナだった/ポートが出てない
という状態です。
一度ホストで確認しておきます。
lsof -nP -iTCP:3000 -sTCP:LISTEN
ここで何も出ないなら、ngrokが向いても当然 502 になります。
ここから先が“本番”:IP制限できないLINE Webhookをどう守るか
ここまでで「公開範囲の最小化」はできます。 でも、LINE Webhook は IP制限が現実的ではないことも多いので、次に必要なのは “正当なLINEからのリクエストだけ通す” ことです。
その代表が LINE署名検証(X-Line-Signature)。
ここから先のやり方は、実運用目線でちゃんと作り込む必要があります。
- Webhook専用の受け口(3000)を作る
- そこで署名検証
- 通ったものだけを内部へ転送
- 管理画面は最後まで外に出さない
- 動作確認・チェックリストで事故を潰す
…という形です。
完全版(コピペで再現できる構成・チェックリスト付き)
今回の「完成形」までを、講座内に 配布資料(Markdown)+再現可能な構成としてまとめています。 中途半端な“断片”ではなく、そのまま手を動かして安全側に寄せられる形です。
完全版はこちら: * 最安値クーポンは、2025/2/6 10:00まで有効です! Udemy講座:Clawdbot (Moltbot/OpenClaw) 完全入門
おまけ:この記事の“途中まで”だけでもやる価値がある人
- ngrokで何かを外に出してるけど、転送先を正確に把握してない
- 「トークンで弾いてるからOK」で止まっている
- LINE Webhook を署名検証なしで受けている
心当たりがあれば、まずはこの記事のステップ1〜3だけでもやってみてください。 そして「ここから先はちゃんと固めたい」と思ったら、完全版が一番早いです。