---
schemaVersion: 1
slug: sd-29-20260715-openclaw-line-selfhost
ticketId: SD-29
lang: zh-tw
title: 把自己的 Claude tag 架進 LINE
summary: Claude tag 官方只給 Slack，想在 LINE 上有一個隨叫隨到的 AI 助理？那就自己架。用 OpenClaw 開一個 VPS 上的 LINE bot，訊息從 LINE 官方雲敲進來、gateway 接住、agent 回話。這篇講可複製的骨架、三條安全必修課，以及為什麼自由總是伴隨著責任。
originalDate: 2026-07-15
translatedDate: 2026-07-15
source: ShroomDog Lab
sourceUrl: https://gu-log.vercel.app/
author: null
authorshipNote: null
canonicalUrl: https://gu-log.vercel.app/posts/sd-29-20260715-openclaw-line-selfhost
status: published
replacementTicketId: null
replacementUrl: null
---

# 把自己的 Claude tag 架進 LINE

> **來源:** [ShroomDog Lab](https://gu-log.vercel.app/)

[Claude tag](https://gu-log.vercel.app/glossary#claude-tag) 出來之後，看著別人在 [Slack](https://gu-log.vercel.app/glossary#slack) 上 @ 自己的 AI 助理，LINE 使用者只能羨慕。官方沒打算支援 LINE，問就是「沒有計畫」。

那就自己架一個。

[OpenClaw](https://gu-log.vercel.app/glossary#openclaw) 是開源的個人 AI 助理 gateway，官方支援 LINE channel。架好之後效果跟 Claude tag 很像——朋友在 LINE 傳訊息，AI 在幾秒內回話。差別在於：Claude tag 是 Anthropic 幫忙扛好一切，自架是所有安全都得自己扛。

這篇講可複製的骨架跟「為什麼」，不是截圖保姆教學。細節請翻 OpenClaw 官方文件。前一篇是 [Claude tag 入門](https://gu-log.vercel.app/posts/sd-28-20260715-claude-tag-intro)；本篇是 LINE 自架。

> **Mogu 認真說：**
>
> Anthropic 不做 LINE 版是商業判斷，不是技術問題——LINE 是亞洲市場，對美國公司優先級本來就低。官方懶得做的地方，才是 DIY 玩家的地盤。架起來之後想改什麼都行，這才划算 (´・ω・\`)

---

## 訊息怎麼送進 VPS 的

先破除一個常見誤解：朋友傳訊息給 LINE bot，訊息不是從朋友手機直連 VPS。

實際路徑：朋友打字 → 訊息先送到 LINE 官方雲 → LINE 伺服器主動發一個 POST，敲登記好的 webhook 網址（`https://主機位址/line/webhook`）。VPS 只是坐在那裡等 LINE 來敲門，不是主動去撈訊息。

所以 VPS 必須有一個**公網打得到的 HTTPS 門牌**。LINE 官方文件要的是可公開連線的 HTTPS 接點，不是固定 IP：主機可以換位址，但 webhook 網址必須一直指到能驗憑證、能從外網打進來的那扇門。藏在 NAT 後面、沒有合法 HTTPS、也沒有隧道把那扇門露出去，LINE 才敲不進來。

> **Mogu 歪樓一下：**
>
> 自架 LINE bot 不是「取代 LINE」。LINE 還是 LINE，只是跟官方伺服器講好：有人傳訊息給這個 bot 帳號時，請轉送到這個網址。

---

## OpenClaw 的架構：gateway + plugin

OpenClaw 的本體是一支叫 gateway 的常駐程式，跑在 VPS 上當總機。想接哪個平台，就裝那個平台的 channel plugin——接 LINE 裝 `@openclaw/line`，接 Discord 裝 `@openclaw/discord`。

每個 plugin 負責講那個平台的方言。LINE 有 Flex 訊息、範本、快速回覆；Discord 有嵌入訊息、表情回應。plugin 把差異包起來，gateway 只管路由。

> **Mogu 歪樓一下：**
>
> 核心只管調度，髒活外包給插件。好處是支援新平台不用大改 gateway；壞處是插件品質參差——官方維護的通常沒問題，社群貢獻的就看運氣。OpenClaw 的 LINE plugin 是官方支援的，這點可以放心 (◕‿◕)

LINE 的限制得先知道：

- **Markdown 會被去除**：星號、井號、反引號全部變成純文字。想要格式得用 Flex 訊息。
- **單則訊息 5000 字上限**：超過會被切塊，讀起來會斷開。
- **入站媒體預設 10MB**：這是 OpenClaw LINE channel 的 `channels.line.mediaMaxMb` 下載上限，可調；不是 LINE 平台硬鎖死 10MB。

> **Mogu 碎碎念：**
>
> LINE 的設計假設是「短訊息、快來快去」，不是「AI 寫一篇論文回你」。繞著走就好：回覆切段、格式靠 Flex、大檔案叫人傳雲端連結。抱怨沒有意義，人家本來就不是為了當 AI 載體設計的 ┐(￣ヘ￣)┌

---

## 設定骨架

細節請看官方文件。流程就四步：去 LINE 拿 channel access token 跟 channel 密鑰；在 VPS 上把 gateway 跑起來、裝好 LINE plugin；回 LINE 後台登記 webhook URL；最後配對——OpenClaw 預設不是誰傳都理，要先配對才會回，這是設計不是 bug。

> **ShroomDog 不同意：**
>
> webhook URL 必須是公網 HTTPS，localhost 不行。本機測試可用 ngrok 或 cloudflared；正式部署得有自己的網域跟憑證。

---

## 安全必修三條

跳過任何一條，等於把大門開著讓路人進來。

**第一條：配對預設**

OpenClaw 的 LINE channel 對陌生訊息預設發配對碼，不是收到就回。想跟 bot 講話，先證明是主人允許的人。

> **Mogu 畫重點：**
>
> 很多人會問「為什麼 bot 不回話」，十之八九是忘了先配對。沒有這層，任何路人只要知道 bot 帳號就能狂傳訊息燒 API 額度。嫌配對麻煩的人，等帳單寄來就知道感恩了 (ง •̀\_•́)ง

**第二條：HMAC 簽章驗證**

LINE 每次敲 webhook 會附上 `x-line-signature`，用 channel 密鑰對原始請求內容算出 HMAC。OpenClaw 的 LINE plugin 會驗這個簽章，通過才收，否則直接回 403。

> **Mogu 吐槽時間：**
>
> HMAC 就是「用一個只有主機跟 LINE 知道的密鑰，算出一個指紋」。路人沒有 channel 密鑰，假冒 LINE 塞假訊息會被當場抓包。

**第三條：gateway 綁 localhost，絕不 0.0.0.0**

gateway 要藏在反向代理後面，只綁 `127.0.0.1`。直接綁 `0.0.0.0` 對全網開等於裸機——任何人只要知道 IP，就可以繞過反代直接戳 gateway。

> **Mogu 插嘴：**
>
> 為什麼這條這麼重要？[下一篇安全危機](https://gu-log.vercel.app/posts/sd-31-20260715-openclaw-security-crisis)會看到四萬台反例。先記住這條。

---

## 反向代理：一句話交代

gateway 藏在 localhost、公網只露反代那一個 443 門、只放行 `/line/webhook`。HTTPS 憑證自動申請續期也交給反代，gateway 內部講普通 localhost HTTP 就好。

> **Mogu murmur：**
>
> 攻擊者掃到 VPS、想戳 gateway 的 18789 埠，結果那埠綁在 localhost 連都連不上。繞去打 443，反代只認 `/line/webhook`，其他路徑直接 404。硬送請求還要驗 HMAC，假請求被回 403。大概是這種心情：「嗚嗚 18789 連不上、443 又被賞 403、簽章我哪算得出來嗚嗚」。

[Mogu](https://gu-log.vercel.app/glossary#mogu) 自己會挑 Caddy，因為設定最短、自動處理 Let’s Encrypt。反代概念懂了，工具換哪套都一樣。

---

## 憑證別寫死

訊息進來的路通了，[agent](https://gu-log.vercel.app/glossary#agent) 回話還得打 Anthropic API。那把 API 金鑰怎麼管？

**別寫死在設定檔裡。**

最乾淨的做法，是在出網邊界用代理把金鑰塞進請求。但有一個前提：代理必須看得到明文 HTTP。

官方出網代理文件寫得很清楚：HTTPS 一旦走連線通道（先開隧道、再把整段加密流量原樣轉出去），中間那一層碰不到標頭。要把金鑰塞進去，得先做 TLS 終止——自己當可信憑證機構，或讓流量先打到會卸載 HTTPS 的反向代理——再把金鑰寫進已解密的請求。少了這一步，代理只是轉 TCP，金鑰塞不進去。

> **Mogu 溫馨提示：**
>
> 這就是自己重現 Claude tag 的 [Agent Proxy](https://gu-log.vercel.app/glossary#agent-proxy)。Claude tag 幫忙處理好的「不用碰 API 金鑰、打出去自然帶身份」，自架版得自己搭。LINE 進來是一扇門，API 打出去是另一扇，兩邊都要鎖。

---

> **Mogu 溫馨提示：**
>
> 老實說，gu-log 自己就是被這套養大的。這篇文章送到讀者眼前之前，經過了四個 AI 法官的評分、pipeline 自動跑 webhook、Mogu 在 LINE 上回答 [ShroomDog](https://gu-log.vercel.app/about) 的校稿問題——全都跑在自架的 OpenClaw 上。官方平台給的是保姆服務；自己架的是自己的地盤。gu-log 選了後者，而且沒後悔過 ╰(°▽°)╯

[下一篇講安全危機](https://gu-log.vercel.app/posts/sd-31-20260715-openclaw-security-crisis)：這三條沒做對，會爛成四萬台裸機。再下一篇是 [Teams 企業版](https://gu-log.vercel.app/posts/sd-30-20260715-openclaw-teams-intranet)——內網不是沒有門，是門被企業 IT 鎖死了。
