← 返回笔记列表
部署形态定案:局域网先行,公网分阶段
后端和家属端到底跑在哪,这个决定会影响端口、证书、鉴权三件事。讨论下来定了两阶段:首轮局域网,第二阶段公网。
首轮为什么先在局域网
- 开发周期短:不用等域名、不用等备案、不用配证书;
- 故障面小:排错时不用区分「是代码问题还是网络问题」;
- 设备侧不变:ESP32 连本机 Broker 和连云端 Broker,固件逻辑完全一致,只改地址。
第二阶段为什么要上公网
答辩评委不会坐到你家的 Wi-Fi 里。家属端要能被任意网络访问,设备端要能连出去。
| 阶段 | 设备端 | 家属端 | 证书 |
|---|---|---|---|
| 首轮(局域网) | mqtt://192.168.x.x:1883 | http://192.168.x.x | 无 |
| 第二阶段(公网) | mqtts://域名:8883 | https://域名 + wss | Let's Encrypt |
三个明确不采用的方案
| 方案 | 为什么不选 |
|---|---|
| 内网穿透(frp / ngrok) | 多一层转发,答辩当天多一个可能挂掉的环节;且免费版限速、限连接数 |
| 托管 MQTT(EMQX Cloud 等) | 免费层有连接数/消息量限制,答辩期间被限流不可接受;且要额外处理托管 Broker 的鉴权 |
| 自签证书 | 自签则每台设备都要装根证书,漏装一台就静默连不上;Let's Encrypt 免费且可自动续期。(2026-10 更正:LE 自 2026-01-15 起也签发 IP 证书,只是强制 6 天档;此前「LE 不签 IP 证书」的说法已失效) |
双轨回退
最坏情况是:公网环境当天出问题。所以本地档常备不删,随时可以退回局域网演示。这条不是可选项,是验收项——「云端不可达时本地仍能端到端演示」必须提前验证。
三个「只有一个」
- 一个域名:设备连它、家属端连它、证书签它;
备案期间 改用裸 IP 顶班(IP 证书 +mqtts://<IP>:8883),备案后只改 host 一处; - 一张证书:nginx 的 443 和 Mosquitto 的 8883 用同一张;
- 一个源:前端与 API 同域,没有跨域问题。
端口只开三个
| 端口 | 用途 | 来源限制 |
|---|---|---|
| 443/TCP | 家属端 https + wss | 0.0.0.0/0 |
| 8883/TCP | 设备 mqtts | 0.0.0.0/0(家庭宽带 IP 会变,不锁) |
| 22/TCP | SSH 运维 | 仅自己的 IP 段 |
后端只监听 127.0.0.1:3000,不对外开;明文 1883 在云端不提供入口。
8883 上跑什么主题、账号权限怎么分,见MQTT 主题表设计。
这篇笔记支撑课题的「部署架构」部分:局域网先行、公网 TLS 分阶段与端口规划都来自这里,完整课题背景见 非接触式跌倒监测系统。