最近更新 · 2026-01-30
OpenClaw 飞书 Webhook 模式内网穿透(Ngrok / Cloudflare Tunnel / Localtunnel)
适用场景:你要用飞书「事件订阅 Webhook」模式接入 OpenClaw(接收消息、卡片交互等)。
关键限制:飞书要求 公网可访问的 HTTPS URL + 域名(不能用裸 IP,不能用 http)。
因此:本地运行的 OpenClaw gateway(例如 3000/8080)必须通过 隧道工具暴露到公网。
你将完成什么
- 确认 OpenClaw gateway 正在本地监听端口
- 选择一种隧道方式(Ngrok / Cloudflare Tunnel / Localtunnel)
- 得到公网 HTTPS 域名
- 在飞书开放平台配置事件订阅 URL 并通过验证
- 最终在飞书群/私聊 @机器人 能收到回复
开始前准备(小白必看)
- 你已经完成 OpenClaw 安装与基础配置(含飞书 appId/appSecret 或插件配置)
- 你知道 OpenClaw gateway 的监听端口(常见 3000 或 8080)
- 你能打开飞书开放平台并管理“企业自建应用”
Step 0:确认 gateway 在本地能访问
0.1 启动 gateway(示例)
openclaw gateway --port 30000.2 验证端口在监听
任选一个验证方式:
方式 A:看日志
- 看到类似 “listening on 3000” 的输出(不同版本会略不同)
方式 B:curl health(如果你的 gateway 有健康检查)
curl -i http://127.0.0.1:3000/health || true方式 C:检查端口
lsof -i :3000 || true如果你不确定端口是多少:
先用你实际启动参数为准;或在openclaw gateway --help/日志里找默认端口。
Step 1:确认飞书 Webhook endpoint 路径(很关键)
飞书事件订阅要填:
https://你的域名/<feishu-endpoint>
但不同插件/版本 endpoint 可能不同,比如:
/feishu/events/webhook/feishu/events
1.1 推荐做法:从日志里找
openclaw gateway --verbose# 或openclaw logs | grep -i -E "feishu|webhook|event|callback" || true1.2 兜底做法:用你插件文档给的路径
如果你暂时找不到日志,就先用你最常见的:/feishu/events
验证失败再回到这里调整(见“验证失败排查”)。
方案 A:Ngrok(最快上手,适合测试/短期)
A1. 安装并登录
- 注册并安装 Ngrok
- 设置 authtoken:
ngrok authtoken YOUR_AUTHTOKENA2. 建立隧道
假设 gateway 监听 3000:
ngrok http 3000你会看到:
Forwarding https://xxxx.ngrok-free.app -> http://localhost:3000
✅ 复制这个 https 域名备用。
A3. 用 ngrok 面板排查(强烈推荐)
http://127.0.0.1:4040这里能看到飞书发来的请求是否到达你的本地。
方案 B:Cloudflare Tunnel(免费稳定,长期推荐)
优势:更稳定、可长期运行、可固定域名(trycloudflare 或自有域名)、安全性更强。
缺点:首次配置比 ngrok 多一点。
B1. 安装 cloudflared
(按系统安装即可)
B2. 快速测试(最简单)
cloudflared tunnel --url http://localhost:3000它会输出:
https://random.trycloudflare.com
✅ 这个域名可以直接拿去飞书验证(适合快速跑通)。
B3. Named Tunnel(推荐长期)
- 登录:
cloudflared tunnel login- 创建隧道:
cloudflared tunnel create openclaw-feishu- 写配置文件
~/.cloudflared/config.yml:
tunnel: openclaw-feishucredentials-file: /home/YOUR_USER/.cloudflared/<UUID>.jsoningress: - hostname: openclaw-feishu.trycloudflare.com service: http://localhost:3000 - service: http_status:404- 运行:
cloudflared tunnel --config ~/.cloudflared/config.yml run✅ 这样域名固定,重启后不变(长期更省心)。
方案 C:Localtunnel(一次性临时,最不推荐)
C1. 安装
npm install -g localtunnelC2. 启动
lt --port 3000 --subdomain openclawvans输出类似:
https://openclawvans.loca.lt
缺点:不稳定、容易掉线、域名可能被占用。
Step 2:在飞书开放平台配置事件订阅
以你的公网域名为例(假设 endpoint 是 /feishu/events):
请求 URL:
https://YOUR_DOMAIN/feishu/events2.1 飞书校验要求(重点)
- 必须是 HTTPS
- 必须是 域名(隧道提供的域名也算)
- URL 路径必须正确(错一个字符都会验证失败)
点击“验证/订阅”,飞书会发一个验证请求到你的 URL。
Step 3:验证与测试
3.1 飞书后台验证成功
- 如果失败:看下面“验证失败排查”
3.2 在飞书群或私聊测试
- 把机器人加入群(或私聊)
- 发消息:
@机器人 你好
✅ 成功标准
- 飞书里机器人有回复
- 或 OpenClaw 日志看到事件已收到、已处理
验证失败排查(90% 的问题在这里)
1) 飞书后台提示 URL 不合法
- 你填的是 http(必须 https)
- 你填的是 IP(必须域名)
- 域名没带路径/路径不对
2) 飞书验证超时
- 隧道没跑(ngrok/cloudflared 已退出)
- gateway 没跑或端口不对(3000/8080 搞错)
- 本地防火墙/安全软件拦截
3) 看到请求到了 ngrok(4040) 但飞书仍失败
- 你的 endpoint 路径不对(例如实际是
/webhook/feishu) - gateway 没挂载该路由(插件未启用/配置未生效)
- 需要校验 token/encrypt key:检查插件要求并在 config 中补齐
4) 国内网络慢
- ngrok 美国节点可能慢:优先用 Cloudflare Tunnel 或换网络环境
安全建议(强烈建议照抄到站里)
隧道一开,你的 gateway 等于暴露到公网了:
- ✅ 建议开启 pairing/白名单:只允许你的用户触发指令
- ✅ 优先限制“只响应 @提及”
- ✅ 只开放 webhook 必要路径(不要暴露管理端口/调试端点)
- ✅ 不要把 appSecret/token 打进日志或提交到 git
- ✅ 长期运行用 VPS/Docker + systemd(稳定也更安全)
推荐选择
- 测试/快速跑通:Ngrok
- 长期/更稳定/国内更友好:Cloudflare Tunnel(推荐)
- 一次性临时:Localtunnel(不推荐生产)