ngrok 2.0

相比于 ngrok 1.0,ngrok 2.0 发生了很多变化: 参考这儿

另一点值得关注的变化是,ngrok 2.0 不再开源了。

在 ngrok 2.0 的变化中,我比较关注安全性,ngrok 2.0 目前支持TLS Tunnels, 你可以使用自己的证书进行端到端加密,如果你对其中原理感兴趣,可以关注一下SNI, 实际上Home Assistant Cloud也是采用一样的策略。

使用 TLS 加密本地服务

下文展示如何使用 ngrok 2.0 对 Home Assistant 进行端对端加密(使用自己的 tls 证书),并将其暴露到公网。(ngrok 2.0 的端对端加密功能适用于任何本地服务,在此只是以 Home Assistant 为例)

ngrok 2.0 的 TLS 功能需要付费使用,所以你需要先升级到付费计划里,选择 PRO 计划,月结的话,每月 10 刀,相关权限为:

All basic features, plus:

  • Whitelabel domains
  • Reserved TCP addresses
  • End-to-End TLS Tunnels

Per user limits:

  • 5 reserved domains
  • 2 reserved TCP addresses
  • 2 online ngrok processes
  • 12 tunnels/ngrok process
  • 60 connections/minute

折算下来,和Home Assistant Cloud费用相近。

配置

配置工作比较简单,ngrok 2.0 的文档里写得比较清楚了。

分为以下几步:

  • reserved里添加Reserved domains, 之后使用 cname 将你的域名指到 ngrok 这儿,reserved页面里有引导。
  • 申请证书(可以使用 Let’s Encrypt 或者自己购置的证书)
  • 运行 ngrok: ./ngrok tls -hostname e2ee.codelab.club -key ./codelab.club.key -crt ./fullchain.cer 8123

完成。

注意事项

使用 hass 启动 Home Assistant 的时候,不要运行为 https 模式(不要在 HA 配置文件里配置加密证书)。在启动 ngrok 时指定自定义证书。

参考