无尘阁日记

无尘阁日记

龙虾配置telegram
2026-04-15

我问:

hello,请教下。gpt配好了,龙虾可以用了。想配置telegram,已经注册好。但查查好像需要龙虾映射个公网,这个怎么弄,装哪个软件比较好,映射端口有什么建议,会比较安全。你是此方面顶级专家,给一个没废话版步骤,必须确保准确,信息最新。

AI答:

可以直接给你结论:

一句话结论

Telegram 接 OpenClaw,默认不用公网映射。
因为 OpenClaw 官方文档写明:Telegram 默认是 long polling,webhook 只是可选;Telegram 官方也确认收更新有两种互斥方式:getUpdateswebhook。所以你现在最稳的方案,是先不用公网,不做端口映射,直接 long polling。(OpenClaw)

最推荐方案

方案A:最稳、最省事

不做公网映射,直接 long polling

步骤

  1. 在 BotFather 建好机器人,拿到 bot token。(OpenClaw)

  2. 给 OpenClaw 配 token。Telegram 这条渠道不是 openclaw channels login telegram 那种走法,官方建议是放到 config/env,也支持直接用命令加账号。(OpenClaw)

  3. 启动网关:

    openclaw gateway
  4. 首次私聊机器人后,做 pairing:

    openclaw pairing list telegram
    openclaw pairing approve telegram <CODE>

    pairing code 1 小时过期。(OpenClaw)

最简配置思路

你可以把 token 放进环境变量,或者写进 ~/.openclaw/openclaw.json。OpenClaw 文档明确支持 channels.telegram.botToken 或环境变量回退。(OpenClaw)

为什么我建议你先这么干

因为这条路:

  • 不需要公网 URL。(OpenClaw)

  • 不需要 HTTPS 证书。

  • 不需要端口暴露。

  • 风险最低,配置最少。


什么时候才需要公网映射

只有你明确要用 webhook 时,才需要

Telegram 官方要求:

  • webhook 必须是 HTTPS URL

  • 支持的 webhook 端口是 443、80、88、8443

  • webhook 开启后,就不能再用 getUpdates 了。(Telegram)

而 OpenClaw 对 Telegram webhook 的说明是:

  • 默认仍然是 long polling

  • 你要改成 webhook,才需要设置 channels.telegram.webhookUrl

  • 还必须设置 channels.telegram.webhookSecret

  • 本地 webhook 监听默认绑在 127.0.0.1:8787

  • 如果公网地址和本地监听不同,需要前面放一个反向代理。(OpenClaw)


真要公网映射,装哪个最好

第一推荐:Tailscale Funnel

这是我最推荐的公网方案。

原因

  • OpenClaw 官方直接支持 Tailscale Funnel

  • 可以让 Gateway 继续只绑在 loopback

  • 对外给你一个 HTTPS 公网入口

  • OpenClaw 官方还要求 Funnel 公网模式必须配共享密码,避免裸奔。(OpenClaw)

适合你吗

适合。尤其你是自己本机跑 OpenClaw,这种方式最顺手。

你该怎么做

  1. 安装并登录 Tailscale。

  2. 确认 tailnet 管理端允许 Funnel。Tailscale 官方文档说明,Funnel 是通过唯一公网 URL 把本地服务暴露出去,走加密隧道,并隐藏你本机公网 IP。(Tailscale)

  3. OpenClaw 用 Funnel 模式起网关,且启用密码鉴权。OpenClaw 官方示例就是:

    {
      "gateway": {
        "bind": "loopback",
        "tailscale": { "mode": "funnel" },
        "auth": { "mode": "password", "password": "replace-me" }
      }
    }

    或命令:

    openclaw gateway --tailscale funnel --auth password

    (OpenClaw)

  4. 再把 Telegram 的 webhookUrl 指到你的 Funnel 公网 HTTPS 地址。(OpenClaw)

安全建议

  • 不要把 Gateway 直接绑到 0.0.0.0

  • 不要直接把 18789 / 8787 裸暴露

  • Gateway 密码用长随机串,别写死进仓库

  • 优先用环境变量存密码,OpenClaw 官方也建议这样做。(OpenClaw)


第二推荐:Cloudflare Tunnel

如果你已经有 Cloudflare 账号、域名也在 Cloudflare,这个也很强。

优点

Cloudflare 官方文档明确写了:

  • 不用开放入站端口

  • 不用暴露公网 IP

  • cloudflared 只建立出站加密连接

  • 还能叠加 Cloudflare 的 WAF、DDoS 防护等。(Cloudflare Docs)

适用场景

  • 你想用自己的域名

  • 你想以后把别的服务也挂上去

  • 你想要更像“正式环境”

缺点

比 Tailscale Funnel 稍微重一点,要多走 Cloudflare 那套配置。(Cloudflare Docs)


第三推荐:ngrok

适合临时测试,不适合我给你做长期首推。

原因

ngrok 官方定位就是“几秒把本地服务放到公网”,对 webhook 调试确实方便。(ngrok.com)

但为什么不是首选

  • 更偏调试/演示

  • 长期用在个人工作机上,我不如直接推荐 Tailscale Funnel 或 Cloudflare Tunnel


端口怎么配更安全

你只记这几条

情况1:你走 long polling

不用开任何公网端口。
这是最安全的。(OpenClaw)

情况2:你走 webhook

  • 外部端口:优先 443

  • 本地监听:保持 OpenClaw 默认 127.0.0.1:8787

  • 公网层:让 Tailscale Funnel / Cloudflare Tunnel / 反代去接 443,再转发给本地 127.0.0.1:8787

  • 不要直接把 8787 暴露到公网。因为 OpenClaw 文档本来就把默认 webhook listener 设计成只绑本地回环。(OpenClaw)


我给你的最终建议

现在就这么做

第一阶段

别做公网映射,直接 long polling。

你现在只要:

openclaw channels add --channel telegram --token <BOT_TOKEN>
openclaw gateway
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>

然后去 Telegram 私聊机器人测试。(OpenClaw)

只有在下面情况才升级到公网

你明确需要:

  • Telegram webhook

  • 更低延迟的入站

  • 统一用 HTTPS 公网入口管理多个服务

这时再上:
Tailscale Funnel > Cloudflare Tunnel > ngrok。(OpenClaw)

再补一句最新判断

按 OpenClaw 当前文档和近期社区反馈看,Telegram 先用 long polling 是更稳的选择;最近社区里确实有 webhook 模式的冲突/切换类问题报告,所以除非你有明确 webhook 需求,不建议一上来就走公网 webhook。(OpenClaw)