让一台手机,拥有新的用途。
这次实验以 vivo X100 Ultra 为运行设备,在 Android 的 Termux 环境中搭建 Node.js 中继服务。SQLite 保存需要持久化的数据,Cloudflare Tunnel 为服务提供公网访问链路。
记录关注的不只是「服务启动了」,还有后台运行、开机自启、数据持久化,以及实际故障发生时如何逐层定位。
一条清晰的请求链路。
Client↓Cloudflare↓ HTTP/2 TunnelAndroid · Termux↓Node.js ↔ SQLite
应用、数据存储与隧道分别承担不同职责。应用健康检查正常,并不代表公网隧道一定正常;排障时需要分别验证。
从启动,到持续运行。
- 运行环境
在 Termux 中运行 Node.js 服务,并使用 SQLite 持久化数据。
- 后台服务
通过服务管理保持应用和隧道运行,同时设置开机自启。
- 公网连接
使用远程管理的 Cloudflare Tunnel 连接本地应用。
- 分别验收
先检查本地
/health,再验证公网健康检查与存储状态。
一次隧道连接故障。
公网访问出现 Cloudflare 1033,而本地 Node.js 健康检查正常。隧道日志出现 QUIC timeout: no recent network activity,将问题范围缩小到了隧道连接层。
CHANGE / 切换传输协议
TUNNEL_TRANSPORT_PROTOCOL=http2强制使用 HTTP/2 后,启动日志显示 Initial protocol http2。已有实践记录报告公网健康检查恢复为 HTTP 200。
这次恢复支持了「QUIC 链路不稳定」的判断;长期稳定性仍需要继续观察,不能用一次成功检查代替持续运行验证。
一个可工作的起点。
截至 2026 年 10 月 6 日的实践记录,中继链路已恢复可用,健康检查返回:
{"ok":true,"store":"sqlite","version":"1.0.0"}
HTTP=200接下来继续观察 HTTP/2 隧道的运行情况,并把部署过程与故障证据整理成可复用的技术记录。
A small experiment. A useful beginning.