# Cloudflare Tunnel:让管理端从外网访问 # # 场景:探针跑在内网/家用小主机上(没有公网入口),但你需要在手机或外网笔记本上 # 打开 /admin 做管理操作。 # # 原理:cloudflared 在你的机器上**主动向外**建立到 Cloudflare 的隧道(出站连接, # 不需要公网 IP、不需要开放任何入站端口),Cloudflare 再把指定子域名回源到它。 # 因此内网无需任何端口映射。 # # 用法(命名隧道,推荐): # 1. 安装 cloudflared # 2. 在 Cloudflare Zero Trust 后台创建命名隧道,取它的 token # 3. 打开探针的远程管理开关(默认关闭): # 在 local.monitors.json 里加 "settings": { "admin": { "allowRemote": true } } # 4. 跑:cloudflared tunnel --no-autoupdate run --token <你的 token> # # 一次性(快速隧道)命令,仅适合临时验证: # cloudflared tunnel --url http://localhost:8787 # 它会打印一个随机 trycloudflare.com 地址;不要用于正式环境(无鉴权、无 SLA)。 # # 前提:探针必须处于「已绑定 2FA」的状态。Tunnel 只是把端口暴露出去, # 真正拦住未授权访问的是管理端的 TOTP + 会话 + 失败限流。 tunnel: <你的隧道 ID 或名字> credentials-file: /etc/cloudflared/.json # Tunnel 只回源管理端这一条路径,面板与公开 API 不通过隧道暴露。 # ingress 的第一条是 catch-all,必须放在最后。 ingress: # 管理后台页面与接口:都指向同一个本地端口(管理端自身会校验 2FA 与会话) - hostname: admin.example.com path: ^/(admin|api/admin/.*|assets/.*)$ service: http://localhost:8787 # 其余一律拒绝:不要把公开面板与 /api/status 一起暴露出去 - service: http_status:404 # 探针侧的探测与通知日志仍打在 stdout,不受隧道影响。 # 若用 systemd 常驻,建议: # ExecStart=/usr/local/bin/cloudflared tunnel run --no-autoupdate --token-file /etc/cloudflared/token # Restart=on-failure # RestartSec=5s