termal.in

← 博客

无需端口转发,远程访问 Home Assistant 或 Grafana

· Termalin Team homelabconnectorremote-accessself-hostedcomparison

你的 Home Assistant 在 http://homeassistant.local:8123,Grafana 在 :3000,两者都被困在你的家庭网络里。你想在办公室、在手机上,或者分享给别人时,用浏览器打开它们——又不想把路由器变成一个攻击面。下面是五种做法、每一种实际的代价,以及仅限邀请那条路线的分步操作。

为什么不直接转发 8123 或 3000

在路由器上转发端口,等于把一个登录页——有时甚至是一个敞开的仪表盘——摆到互联网上每一个机器人面前。Home Assistant 和 Grafana 一旦被发现,就会不断遭到探测,一个重复使用的密码或一个未打补丁的 CVE 就足以出事。而运营商级 NAT(家庭光纤和 4G/5G 上很常见)往往本就让端口转发无从谈起。下面每一个方案的存在,都是为了避开那一个开放端口。

五种方案

方案有公开 URL 吗?访问者设备上除 HA 外还适用吗?代价
Nabu Casa(HA Cloud)有,你自己的子域名无否——仅限 Home Assistant订阅
Cloudflare Tunnel公开,或由 Access 把关无,或一次 Access 登录是有免费版;需要域名
Tailscale / WireGuard没有——私有网格每台设备都要 VPN 客户端是有免费版
反向代理 + 端口转发有——直接在互联网上无是你的时间 + 暴露风险
Termalin 内网站点没有——通过邮件邀请一个浏览器就够是Pro 套餐

Nabu Casa 是官方的 Home Assistant Cloud。对 Home Assistant 来说它是最顺滑的一条路——远程 UI、稳定的 URL,还能为项目提供资金——但它只覆盖 Home Assistant,不管你的 Grafana 或 Portainer。

Cloudflare Tunnel(cloudflared)由你局域网里的一个守护进程向外拨出,所以不开放任何端口。它很强大,也有免费版,但要让一个仪表盘保持私有,你需要拥有一个域名,并在它前面加一条 Cloudflare Access 策略;若是裸放着,那个主机名就是任何人都能访问的公开 URL。

Tailscale 或 WireGuard 构建一个私有网格——没有任何东西被暴露,用在你自己的设备上非常出色。代价是:每个要连接的人都得安装并登录 VPN 客户端,这对家人或临时访客来说是个不小的门槛。

带转发端口的反向代理(nginx、Caddy、Traefik)能给你干净的 HTTPS,但你仍然是在把服务发布到互联网上,而且每一次打补丁、每一个认证决策都得你自己扛。

Termalin 内网站点则处在一个不同的位置:根本没有公开 URL,访问者一侧也不用装任何客户端。你局域网里的一个 Connector 向外拨出,仪表盘在一个类似 https://<10 字符>.termal.ink 的私有地址上打开——给你,也给你通过邮件邀请的人。想把某一个仪表盘分享给某个特定的人,这是最快的办法。取舍也很坦白:它需要 Pro 套餐,每个链接每天有 5 GB 的软性上限,而且没有永久的公开链接——想要隐私时这是优点,想要一个公开的状态页时则是限制。

用 Connector 分步操作

这适用于 Home Assistant、Grafana、Portainer、Proxmox——任何在你网络里带 Web 界面的东西,因为 WebSocket 能穿过去,所以 HA 的实时更新和 Grafana 的实时面板,表现都和在局域网里一样。

  1. 安装一个 Connector,装在 Home Assistant 那台机器上,或同一网络中任意一台长开的机器上——树莓派、NAS,或局域网里的一台小 VPS。从控制台的*“获取安装命令”*复制一行即可;它向外拨出,从不监听。
  2. **添加站点。**在网页控制台中打开 “内网站点” 卡片(在“备份”旁边)→ “添加站点”。选择那个 Connector,填入那台机器所看到的地址——如果 Connector 就在 HA 主机上,就是 http://localhost:8123;从另一台机器则是 http://10.0.0.5:8123。如果你的仪表盘提供 TLS,勾选“内网站点使用 https”(自签名证书也没问题)。
  3. **添加并打开。**仪表盘会在新标签页里、在它的 termal.ink 地址上打开。你对它保持 12 小时的登录状态;单凭这个地址,别人进不来。

只允许私有地址——localhost、10.x、172.16–31.x、192.168.x、链路本地地址、Tailscale 的 100.64/10、IPv6 ULA——公网地址按设计会被拒绝。

把站点分享给家人 7 天

在控制台里,把站点分享给一个邮箱地址,有效期 24 小时或 7 天(一个链接上同时最多 25 人;再次分享会延长)。对方会收到一封邀请邮件,用一个 6 位验证码登录——无需创建 Termalin 账户。他们只能看到那一个仪表盘,分享到期后他们的会话就结束。你可以**“移除”某一个人,或“关闭”**整个链接,而且每一次打开都会出现在站点的活动记录里。分享需要付费套餐;试用可以打开站点,但不能分享。

什么时候该选别的

  • 只有 Home Assistant,想要省心 → Nabu Casa,顺便支持这个项目。
  • 你拥有域名,想要一个持久、甚至可能公开的 URL → 带 Access 策略的 Cloudflare Tunnel。
  • 要连接的都是你自己、跨你自己的设备 → Tailscale 或 WireGuard。
  • 一两个仪表盘,分享给指定的人,什么都不暴露 → 一个 Termalin 内网站点。

关于家庭实验室在 NAT 后的 SSH 一侧,参见无需端口转发在 NAT 后使用 SSH和通过 SSH 连入家庭 NAS 或服务器。

先在一台主机上试试。

Termalin 是为你和你的智能体打造的高速 SSH 客户端。

免费版 · Pro 14 天试用 · 价格

将 Termalin 添加为 Google 上的优先来源