跳过正文

零成本算力与高安全性:基于 Cloudflare Tunnel + Mac mini 搭建 AI 基础设施

·204 字·1 分钟
作者
Frank Zhang
Exploring AI, Network, Insurance, and Life.

本文记录如何利用本地硬件(Mac mini)配合 Cloudflare 边缘网络,在不开启路由器入站端口的前提下,构建一个具备公网访问能力的 AI 博客与后端服务系统。

1. 基础设施成本与选型
#

域名采购

  • 成本:在 Cloudflare 注册/转入域名(如 frank-zhang.com)仅需 $10.42/yr(按批发价提供,无加价)。
  • 优势:直接集成在 Cloudflare 生态内,简化 DNSSEC 和隧道配置。

为什么选择 Cloudflare?

  • Free Plan 额度慷慨:对于个人工程师,免费版已涵盖无限流量的 Tunnel、基础 WAF 和 CDN。
  • 零信任安全 (Zero Trust):Tunnel 采用由内向外的连接方式,隐藏源站真实 IP,彻底规避 DDoS 攻击。
  • 全球 CDN 加速:利用 Anycast 技术,手机端访问 wwwai 子域名时自动连接最近的边缘节点。

2. 逻辑架构 (Logical Architecture)
#

  • Endpoint: Mac mini (M-series)
  • Stack:
    • Port 1313: Hugo (Static Site)
    • Port 6180: FastAPI + uv (AI Agent Backend)
  • Tunnel: cloudflared 进程作为 Connector 将本地端口映射至公网 Hostname。

3. 部署步骤 (Step-by-Step)
#

A. 环境初始化
#

# 1. 安装驱动
brew install cloudflared
cloudflared tunnel login

# 2. 创建隧道
cloudflared tunnel create mac-vps

B. Ingress 规则配置 (config.yml)
#

~/.cloudflared/ 下编辑配置文件,实现流量分发:

tunnel: <TUNNEL_ID>
credentials-file: /Users/<USER>/.cloudflared/<TUNNEL_ID>.json

ingress:
  - hostname: www.frank-zhang.com
    service: http://localhost:1313
  - hostname: ai.frank-zhang.com
    service: http://localhost:6180
  - service: http_status:404

C. 路由生效
#

cloudflared tunnel route dns mac-vps www.frank-zhang.com
cloudflared tunnel route dns mac-vps ai.frank-zhang.com

4. 后端持久化方案 (Production Ready)
#

手动运行 hugo serveruv run 仅适合测试。生产环境下,需确保系统重启后服务自动拉起:

  • Tunnel: 执行 sudo cloudflared service install 将其挂载为系统守护进程。
  • App 层: 使用 PM2 管理 Python 环境与静态服务:
pm2 start "uv run uvicorn main:app --port 6180" --name "ai-backend"
pm2 start "hugo server --bind 0.0.0.0 --port 1313" --name "hugo-blog"
pm2 save

5. 结论
#

该方案在保障数据主权(数据不出本地)的同时,利用 Cloudflare 实现了工业级的公网发布能力。它为部署基于 RAG 的保险知识库或本地自治智能体(AI Agents)提供了稳健的基础设施底座。

工程师建议 在执行 hugo 构建命令前,务必检查 hugo.toml 中的 baseURL 是否已更新为 https://www.frank-zhang.com/,否则部分静态资源(JS/CSS)在公网环境下可能会加载失败。