# Cloudflare 隧道:Havline 适配版功能计划 > 日期:2026-09-30 > 定位:`cloudflared-feature-plan.md` 是「官方 + 参考项目的功能全集」;本文是**按 Havline 产品定位筛选后的适配版计划**,实施以本文为准。 > 核心原则:Havline 不是 cloudflared 管理面板,而是「NAS / 家庭服务器的公网访问管理面板」。Cloudflare 隧道只是它的第二条出口。 --- ## 一、先明确 Havline 是什么 ### 1.1 产品定位 Havline 面对的是家庭 NAS、小主机、家用服务器的用户,核心价值是: - 用域名访问内网服务,而不是记 IP 和端口; - 自动处理证书、反代、穿透、DDNS; - 尽量少配置、少暴露、少维护。 Havline 已经有三条主线: 1. **反向代理**:域名 → 本机 Nginx → 内网服务; 2. **FRP 穿透**:本机 frpc → VPS frps → 域名; 3. **公网 Agent**:管理 VPS 上的 frps 与 Nginx。 Cloudflare 隧道的加入,是为了解决一类现有链路解决不了的人: > 没有公网 IP、也不想长期租 VPS,但想让内网 Web 服务通过域名安全访问。 ### 1.2 因此有三条不可动摇的原则 1. **CF 隧道是第二条出口,不是替代 FRP**:TCP/UDP、自主可控、大流量仍走 FRP。 2. **规则同源**:用户维护的是「服务发布规则」,不是「隧道 ingress」。CF 只是一个出口选项。 3. **融入 Havline 体系**:监控、通知、状态页、日志、备份、升级、审计都复用现有模块,不另造一套面板。 --- ## 二、目标用户与场景 ### 2.1 适合 - 家宽没有公网 IPv4,或运营商封 80/443; - 有域名托管在 Cloudflare,或愿意把域名 NS 切到 Cloudflare; - 主要暴露 HTTP/HTTPS 服务:NAS 面板、PhotoPrism、Jellyfin 管理页、Home Assistant、qBittorrent WebUI、OpenWrt 面板等; - 希望「一次配置好,之后自动跟随反代规则」。 ### 2.2 不适合 - 需要裸 TCP/UDP 端口(游戏服、非 HTTP 协议); - 需要完全自主可控、流量不经过第三方; - 大文件/视频持续分发(Cloudflare 非 Enterprise 条款限制); - 企业级 Zero Trust 私有网络、VPN 替代。 --- ## 三、借鉴与不借鉴 参考项目 `Tunnel-Cloudflared-Manager 1.0.1` 是一个独立的 cloudflared 面板。以下判断按「是否符合 Havline 产品形态」给出: ### 3.1 值得借鉴 | 参考项目做法 | Havline 该怎么用 | | --- | --- | | token 解码成本地凭据 | 已用 Account ID + API Token 替代;保留解码能力用于导入 | | metrics 端口从日志发现 | 已实现,继续沿用 | | ingress 三条不变式 | 已实现,继续沿用 | | 云端 / 本地配置互相同步 | 值得做,但要简化为「diff → 拉取或覆盖」 | | 端点级增删改 | 值得做,但必须挂在 Havline 的「服务发布规则」下 | | 快速隧道 | 只做「临时演示」,不做正式功能 | | 网络诊断 | 值得做,做成 Havline 的一键诊断 | | 镜像与下载进度 | 值得做,但复用 Havline 现有镜像表,不做用户自定义镜像管理 | | Windows 隐藏控制台 | 已实现,继续沿用 | ### 3.2 不借鉴 | 参考项目做法 | 不借鉴的理由 | | --- | --- | | 自带 JWT + 账号体系 | Havline 已有会话 + API Token,重复建设 | | 独立主题、多语言 | 与 Havline 全局设置重复 | | 多账号 cert.pem 登录 | 与 Havline 的 Account ID + API Token 模型冲突;远期若有需求再评估 | | 私有网络 / WARP routing / virtual network | 面向企业 Zero Trust,NAS 用户不需要 | | Kubernetes / Ansible / Terraform / 云厂商部署指南 | 不是 Havline 的交付形态 | | 负载均衡 | 家用单机场景不需要 | | Workers VPC / Hyperdrive / Spectrum / Keyless SSL | 超出 Havline 定位 | | WebSocket 实时日志 | Havline 已有 SSE 日志模式,不为 CF 单独引入 WSS | | 自定义镜像管理(增删改测) | Havline 只需内置镜像表 + 自定义 URL,不需要用户维护镜像源 | | 独立 systemd / Windows service 安装 | Havline 自己托管进程,不接管外部服务 | | 快速隧道作为正式功能 | 官方明确不保证 SLA,只做演示入口 | --- ## 四、符合 Havline 的功能全景 按「用户价值」而不是「参考项目有什么」重新分组。 ### 4.1 出口抽象(Havline 的核心差异化) **F-1 服务发布规则增加「出口」字段** - 一条规则描述「域名 → 内网服务」,出口可选:本机 Nginx / FRP / Cloudflare 隧道。 - 现有反向代理规则作为基础,新增出口选择,不新建第二套规则模型。 - 验收:同一条规则可以切换出口,切换后域名与服务保持不变。 **F-2 CF 隧道 ingress 自动跟随反代规则** - 反代规则新增/修改/删除域名时,自动同步到该隧道的 ingress。 - 只同步 HTTP/HTTPS 规则;TCP/UDP 规则在出口选择里标为「Cloudflare 不支持」。 - 验收:改一条反代规则,CF 隧道配置与云端 ingress 自动更新,无需手工编辑。 **F-3 一条规则可以同时走 FRP 与 CF** - 出口支持多选(FRP + Cloudflare),用于灰度或双保险。 - 验收:同一域名可同时存在 FRP 与 CF 入口,互不影响。 ### 4.2 自动化(延续 Havline「自动为主」) **F-4 一次配置,后续全自动**(大部分已完成) - Account ID + API Token 一次保存; - 自动创建隧道、写 `creds.json` / `config.yml`、推送 ingress、创建 CNAME; - 自动启动、自动重连、崩溃重启。 **F-5 反代规则变化自动同步** - 规则增删改 → 生成新 ingress → 本地与云端同步 → 需要时重载配置。 - 验收:用户不需要理解 ingress,也不需要手工点同步。 **F-6 自动 DNS 管理** - 创建域名时自动 CNAME 到 `.cfargotunnel.com`; - 删除域名或隧道时,删除「指向该隧道」的 DNS 记录(只删自己创建的)。 - 验收:域名增删与 DNS 一致,不误删用户其他记录。 **F-7 自动健康与自愈** - 进程退出自动重启; - `/ready` 与 `ha_connections` 判活; - 连续失败进入 Havline 告警;恢复后发通知。 ### 4.3 融入 Havline 现有体系 **F-8 监控与可用率** - 新增 cloudflared 的 `monitor.Source`; - 隧道健康进入 Havline 现有可用率与历史指标。 **F-9 通知** - 隧道断连、恢复、证书/DNS 失败复用 `notify`; - 通知文案面向 NAS 用户,而不是 cloudflared 术语。 **F-10 状态页** - 公开状态页增加 CF 隧道域名与可用率; - 只展示域名与状态,不泄露隧道 ID、本机地址。 **F-11 日志中心** - CF 隧道日志进入 Havline 日志页; - 复用 SSE 增量推送,不单独做 WebSocket。 **F-12 仪表盘** - 仪表盘增加「Cloudflare 隧道」卡片:隧道数、在线数、最近错误。 **F-13 备份与迁移** - `cf_tunnels` 与凭据纳入 Havline 备份/恢复流程; - 恢复后自动重启隧道。 **F-14 一键升级与版本策略** - cloudflared 版本跟随 Havline 升级流程; - 提供「检查更新 / 更新 cloudflared / 回滚」; - 不要求用户手工替换二进制。 **F-15 审计** - 记录谁在何时修改了服务发布规则、出口、CF 凭据、全局开关; - 复用 Havline 的日志/审计基础设施。 ### 4.4 NAS 场景体验 **F-16 Docker 服务发现一键发布** - 复用现有 `discovery`,发现本机 Docker 服务; - 选择服务 → 填域名 → 自动创建反代规则 + CF 出口。 **F-17 常用 NAS 应用预设** - NAS 面板、PhotoPrism、Jellyfin、Home Assistant、qBittorrent 等端口预设; - 用户只需选应用与域名。 **F-18 域名与 Zone 选择器** - 通过 API Token 列出账号下的 Zone 与可用域名; - 用户从列表选择,而不是手输。 **F-19 证书提示** - 使用 CF 出口时,CF 边缘自动提供 HTTPS; - 页面提示「该域名无需在 Havline 申请证书」,避免用户重复操作。 ### 4.5 运维与安全 **F-20 端点级编辑** - 在 Havline 规则详情里编辑 hostname、path、service、协议; - 提供 `ingress validate` 与 `ingress rule ` 校验。 **F-21 云端漂移检测** - 定期比较本地 ingress 与云端配置; - 发现漂移后提示「以本地为准覆盖」或「以云端为准拉取」。 **F-22 一键诊断** - `tunnel info`、`tunnel diag`、网络预检(region1/region2、7844、443)、系统要求检查; - 结果转成 Havline 风格的可读结论与建议。 **F-23 令牌轮换** - 提供「重新签发隧道凭据」入口; - 轮换过程尽量不中断,失败自动回滚。 **F-24 全局托管开关**(已完成) - 一键停止全部隧道,重启不自动拉起; - 开启时只恢复 auto_start 的隧道。 **F-25 条款与用量提示** - 页面常驻说明:不适合大文件/视频分发; - 不采集、不上报用户流量到外部。 **F-26 Access 保护状态检测(只读)** - 检测域名是否启用 Cloudflare Access; - 只提示,不代配策略。 ### 4.6 可选增强 **F-27 快速隧道(临时演示)** - 临时把某个本地端口发到 `trycloudflare.com`; - 明确标注不保证 SLA、URL 每次变化、仅用于测试。 **F-28 多副本** - 高级选项,用于「主备两台设备跑同一条隧道」; - 默认关闭,不打扰普通用户。 **F-29 边缘 IP 优选** - 只影响「本机 → CF 边缘」一段; - 页面展示优选建议,不代写 hosts; - 面向国内链路质量差的用户。 **F-30 账号模式(cert.pem)** - 仅当用户明确需要「多账号 / 团队权限」时提供; - 默认仍推荐 Account ID + API Token。 --- ## 五、明确不做的功能 | 功能 | 结论 | 理由 | | --- | --- | --- | | 独立登录、JWT、多用户体系 | 不做 | Havline 已有认证与 API Token | | 独立主题、多语言 | 不做 | 属于 Havline 全局设置 | | 私有网络 / WARP routing | 不做(远期评估) | 面向 Zero Trust 企业,NAS 用户不需要 | | 负载均衡 | 不做 | 家用单机场景不需要 | | Kubernetes / Ansible / Terraform 指南 | 不做 | 不是 Havline 交付形态 | | Workers VPC / Hyperdrive / Spectrum | 不做 | 超范围 | | WebSocket 实时日志 | 不做 | 复用 Havline SSE | | 自定义镜像管理 | 不做 | 内置镜像表 + 自定义 URL 足够 | | 接管外部 systemd / Windows service | 不做 | Havline 只托管自己启动的进程 | | 快速隧道作为正式功能 | 不做 | 官方不保证 SLA,只做演示 | | 代配 Access 策略 | 不做 | 高风险,只做只读检测 | | 自动扩权 / 自动改系统防火墙 | 不做 | 保持 Havline 现有安全边界 | --- ## 六、与现有模块的整合点 | Havline 模块 | 整合方式 | | --- | --- | | 反向代理规则 | 增加「出口」字段;CF 隧道从规则派生 | | FRP 多服务端 | 与 CF 出口并列,互不影响 | | 证书管理 | CF 出口域名提示无需本地证书 | | DDNS | CF 橙色云代理后本地 IP 变化不再影响访问,可提示用户 | | 监控 / 可用率 | 新增 cloudflared Source | | 通知 | 断连、恢复、DNS 失败复用 | | 公开状态页 | 增加 CF 隧道条目 | | 日志中心 | CF 日志进入现有日志页 | | 仪表盘 | 新增 CF 隧道卡片 | | Docker 服务发现 | 一键发布到 CF | | 备份 / 恢复 | cf_tunnels 与凭据纳入 | | 一键升级 | cloudflared 版本更新纳入 | | 审计 | 规则、出口、凭据变更记录 | --- ## 七、数据模型与 API 变更 ### 7.1 数据模型 - `frp_proxies`(或服务发布规则表)增加 `exit` 字段:`local` / `frp` / `cloudflare` / 多选; - `cf_tunnels` 增加 `rule_id`(可选,关联服务发布规则)、`source`、`last_sync_at`; - 新增 `cf_endpoint_drift` 或复用现有漂移检测表; - `cf_settings` 增加 `auto_update`、`update_channel`。 ### 7.2 API - `PUT /api/proxies/{id}/exit`:切换出口; - `GET /api/cloudflare/tunnels/{id}/drift`:漂移检测; - `POST /api/cloudflare/tunnels/{id}/pull`:从云端拉取; - `POST /api/cloudflare/tunnels/{id}/diagnostics`:一键诊断; - `GET /api/cloudflare/zones`:Zone / 域名列表; - `POST /api/cloudflare/tunnels/{id}/token/rotate`:令牌轮换; - `GET /api/cloudflare/tunnels/{id}/logs/stream`:SSE 日志; - `GET /api/discovery/docker`:Docker 服务发现(若尚未提供)。 ### 7.3 前端 - 反向代理规则表单增加「出口」选择器; - 规则详情增加「Cloudflare 隧道」状态与操作; - CF 页面聚焦「隧道状态 / 诊断 / 日志 / 全局开关」,弱化「手工建隧道」; - 仪表盘、状态页、日志中心增加 CF 条目。 --- ## 八、阶段计划 | 阶段 | 内容 | 目标 | | --- | --- | --- | | 阶段 1 | F-1 ~ F-3 出口抽象;F-5 规则同步;F-6 DNS 管理完善 | 让 CF 成为反代规则的一个出口,而不是独立模块 | | 阶段 2 | F-8 ~ F-15 体系整合;F-20 ~ F-22 编辑与诊断 | 让 CF 隧道进入 Havline 监控、通知、状态页、日志、备份、审计 | | 阶段 3 | F-16 ~ F-19 NAS 体验;F-23 ~ F-26 运维安全 | 一键发布、域名选择、令牌轮换、条款提示、Access 检测 | | 阶段 4 | F-27 ~ F-30 可选增强 | 快速隧道、多副本、边缘优选、账号模式按需 | **优先级建议**:阶段 1 是产品形态的关键,先做;阶段 2 决定「能不能长期运维」;阶段 3 决定「好不好用」;阶段 4 是加分项。 --- ## 九、验收标准 - 用户只维护「域名 → 服务」的规则,出口切换不需要改域名或端口; - 反代规则变化后,CF 隧道与 DNS 自动跟随; - 隧道断连能进 Havline 告警与状态页; - 一条规则可以同时走 FRP 与 CF,互不影响; - CF 出口域名不需要本地证书; - 备份恢复后隧道能自动恢复; - 所有 CF 凭据加密存储、预览脱敏; - 明确不做的功能不会出现在界面里,避免用户误解。 --- ## 十、结论 Havline 需要的不是「另一个 cloudflared 面板」,而是: > 把 Cloudflare 隧道做成反向代理规则的一个出口选项,并让监控、通知、状态页、日志、备份、升级、审计自动覆盖它。 按本文阶段 1-3 实施,Havline 的 CF 模块会形成与参考项目不同的产品形态:参考项目面向「管理 cloudflared」,Havline 面向「管理我的服务怎么上公网」。 本文与 `cloudflared-feature-plan.md` 的关系: - `cloudflared-feature-plan.md`:官方 + 参考项目的功能全集,用于查漏; - 本文:按 Havline 定位筛选后的实施计划,**实施以本文为准**。