如何用 Cloudflare Tunnel 提供公网地址
服务器在家里、没有公网服务器或域名时,可以用 cloudflared 把本地 AllDayRec 接到公网 HTTPS 地址,再连接云端 Agent。
准备
- 本机的 AllDayRec 已运行,
tenants.json中的 token 必须非空。即使服务只监听本机,隧道也会让外部访问它。 cloudflared与服务器在同一台机器上运行。下文以端口8770为例;自定义端口时全部替换。- macOS 用
brew install cloudflared;Linux 按 官方安装说明配置软件源后,用系统包管理器安装。
以下隧道命令已按 Cloudflare 官方文档核对,未在本项目环境实测;会创建公网入口,请在你自己的机器和账号操作。
先检查本地服务:
curl -fsS http://localhost:8770/api/health应返回 {"ok":true}。
没有域名:试用临时网址
cloudflared tunnel --url http://localhost:8770保持进程运行,复制输出中的随机 https://….trycloudflare.com 地址。无需 Cloudflare 账号或域名。停止进程后网址失效,每次重启 cloudflared 都会换网址,Agent 的连接器也必须更新;适合试用。
这个模式没有可用性保证,最多 200 个并发请求,不支持 SSE;AllDayRec 的 MCP 使用 POST 返回 JSON。云端 Agent 需要直接请求服务,请使用上面的命令,邮箱登录限制无法用于非交互式客户端。依据:Quick Tunnels。
有 Cloudflare 域名:使用固定网址
需要 Cloudflare 账号,且域名的 DNS 已托管到 Cloudflare。
登录并创建命名隧道:
bashcloudflared tunnel login cloudflared tunnel create alldayrec记下输出的 UUID 和凭据文件路径,写入
~/.cloudflared/config.yml,把占位值换成实际值。凭据路径必须是绝对路径:yamlurl: http://localhost:8770 tunnel: <TUNNEL_UUID> credentials-file: /absolute/path/to/.cloudflared/<TUNNEL_UUID>.json用自己的域名替换示例地址,创建 DNS 记录,再运行:
bashcloudflared tunnel route dns alldayrec alldayrec.example.com cloudflared tunnel run alldayrec确认可访问后,停止前台的 cloudflared,安装后台服务。
Linux:
bashsudo cloudflared --config "$HOME/.cloudflared/config.yml" service install sudo systemctl start cloudflared sudo systemctl status cloudflaredmacOS(用户登录时启动,使用
~/.cloudflared/config.yml):bashcloudflared service install依据:Linux 服务、macOS 登录启动。AllDayRec 本身也需要持续运行。
连接 Agent
用公网地址请求 /api/health,确认返回 {"ok":true}。普通网页或 API 请求仍需 tenant token;不要再加 Agent 无法完成的交互式登录门禁。
在 AllDayRec /connect 选择这个 HTTPS 地址,再按 接入 MCP 创建 AI 连接网址并填入 Agent。命名隧道的地址可跨重启保留。
连接网址就是密钥;反向代理访问日志会包含完整 URL,应关闭该路径日志或脱敏。Cloudflare 会终止公网 TLS,流量经过它的网络,见 隐私与数据去向。