ha穿透frp访问及路由upnp显示网速
1C1G 环境下 Home Assistant 内网穿透与网络监控部署笔记
一、 架构设计与网络拓扑
本方案实现了公网安全访问本地香橙派(Orange Pi Zero 3)上运行的 Home Assistant(HA),并对网络流量和硬件资源进行了极限优化。
[外网访客]
│ (HTTPS 域名访问)
▼
[腾讯云服务器 (1C1G)]
│ 1. Caddy (SSL 证书解密与反向代理)
│ 2. FRPS (穿透服务端)
▼ (FRP 反向隧道穿透)
[家里香橙派 (Orange Pi Zero 3)]
│ 1. FRPC (穿透客户端)
│ 2. Home Assistant (容器运行在 host 网络模式)
▼ (UPnP 局域网协议)
[荣耀路由 3] (抓取实时下载/上传网速)
二、 腾讯云服务端配置 (1C1G 优化)
1. Caddyfile 配置
Caddy 负责处理公网 HTTPS 证书,并将流量无损转发给 FRPS。
zadg.baidaoya.site {
# 启用 gzip 压缩,减少 1C1G 带宽外发压力
encode gzip
# 反向代理到 FRPS 绑定的 vhostHTTPPort 端口
reverse_proxy 127.0.0.1:8080 {
# 透传访客的真实公网 IP 供 HA 安全审计
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
}
}
三、 边缘端香橙派与 Home Assistant 核心优化
由于宿主机仅有 1C1G 内存,必须切除 HA 所有无用组件,并严格限制数据库的写入频率和体积。
1. configuration.yaml 极限精简与纠错
去除了自带的 default_config: 和 themes 主题扫描。在 host 网络模式下,由于流量是由本地 frpc 经由物理网卡投递,必须同时信任本地回环及香橙派自身的物理内网 IP。
# 1. 核心基础组件(完全替代 default_config,只保留轻量框架)
frontend: # 启用网页端 UI 界面
http: # 基础网络服务
use_x_forwarded_for: true # 必须开启,用于读取 Caddy 传过来的真实公网 IP
trusted_proxies:
- 127.0.0.1 # 信任本地回环IPv4
- ::1 # 信任本地回环IPv6
- 192.168.10.90 # 信任香橙派自身的物理内网 IP(关键纠错点)
config: # 启用网页端里的“配置”菜单
person: # 基础人员管理
zone: # 基础区域管理
# 2. 自动化与脚本支持
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
# 3. 流量图表核心组件与数据库防爆控制(1C1G 机器生命线)
history: # 启用历史记录(看折线图必需)
recorder: # 控制数据写入,防止撑爆内存和云盘
purge_keep_days: 1 # 历史数据严格只保留 1 天,过期自动粉碎
commit_interval: 30 # 每 30 秒才向磁盘写入一次,极大减轻 I/O 压力
exclude: # 排除不需要记录历史的域,节省空间
domains:
- automation
- script
- scene
- zone
# 4. 第三方本地集成
hass_cozylife_local_pull:
lang: zh
ip:
- "43.235.100.182"
2. frpc.toml 客户端配置
因为 HA 使用了 --net=host 模式且将服务绑定到了物理网卡上,localIP 必须指定为香橙派的物理局域网 IP。
[common]
server_addr = "你的腾讯云公网IP"
server_port = 7000 # 对应 frps 的 bind_port
[[zadg]]
type = "http"
local_ip = "192.168.10.90" # 对应香橙派物理内网 IP
local_port = 8123 # Home Assistant 默认端口
custom_domains = ["zadg.baidaoya.site"]
四、 核心业务落地:启用 UPnP 流量监控
- 环境依赖:由于 Podman 容器在香橙派上使用了
--net=host,具备在局域网内直接接收广播的能力。 - 集成添加路径:
- 登录 HA 后台 $\rightarrow$ 设置 $\rightarrow$ 设备与服务。
- 正常情况下系统会自动识别到局域网内的荣耀路由 3 并弹出金黄色卡片。
- 若未弹出,点击右下角“添加集成”,搜索
UPnP/IGD并提交。 - 数据呈现:
- 成功后将获得
sensor.xxx_download_speed(下载网速)和sensor.xxx_upload_speed(上传网速)实体。 - 在“概览”主页添加“网页图表 (History Graph)”卡片,勾选上述实体,即可生成 24 小时精准网速波动曲线。
五、 后期维护与防踩坑指南
1. 路由器 IP 静态绑定
由于 frpc.toml 和 configuration.yaml 中硬编码了 192.168.10.90,必须登录荣耀路由器后台(默认 192.168.10.1),将香橙派的 MAC 地址与 192.168.10.90 进行静态 IP 绑定,防止路由器重启后 IP 变动导致穿透失效。
2. 容器镜像无损更新步骤
进入
compose.yaml所在目录,拉取最新镜像:podman-compose pull重建并后台启动容器(Podman 会自动销毁旧容器并应用新镜像,挂载的配置文件不会丢失):
podman-compose up -d清理无用的旧镜像残余(1C1G 释放磁盘必做):
podman image prune -f
3. 安全审计验证
断开手机 Wi-Fi,使用移动蜂窝网络通过域名访问 HA。登录后查看 设置 $\rightarrow$ 系统 $\rightarrow$ 日志。如果登录日志中显示的来源 IP 为手机的运营商公网 IP,而非 127.0.0.1 或 192.168.10.90,说明全链路反向代理透传配置完美,HA 的防暴力破解机制可精确拦截外网攻击。