Cloudflare 多账户管理:从痛点分析到开源方案实践
- 网建应用
- 2小时前
- 8热度
- 0评论
背景
日常开发中经常同时用到多个 Cloudflare 账户——一个放博客域名,一个跑 Workers AI,还有一个管理十几条 DNS 记录。官方后台各功能分散在不同页面,切换账户需要反复登录,查配额、部署 Worker 这些操作非常繁琐。于是做了一个开源工具来解决这个问题,把 Cloudflare 官方后台分散在多个页面、多个账户的功能,全部收到一个面板里。下面分享它的架构设计和技术实现。
整体架构

核心思路很简单:通过 Cloudflare API 统一对接所有账户的资源,前端用一个 SPA 面板集中呈现和操作。
架构选型
项目支持两套后端,共用同一套前端和业务逻辑:
| 方案 | 后端 | 数据库 | 适用场景 |
|---|---|---|---|
| Docker 自托管 | Express 5 | SQLite | 本地/私有服务器,数据处理在本地 |
| Cloudflare Pages | Hono | D1 | 零运维,数据存在 Cloudflare 边缘 |
两种方案的选择主要看对数据的控制需求。Docker 方案的凭证和操作日志完全在本地,适合对数据隐私要求高的场景;Pages 方案无须维护服务器,适合个人快速使用。前端统一使用Vue 3 + Naive UI + Pinia,API 层做了适配层,同一套前端代码可以无缝对接两种后端。
凭证安全
Cloudflare API 支持两种认证方式:API Token(细粒度权限)和Global API Key(全局权限)。工具同时支持这两种,推荐使用 API Token,可以精确控制每个 Token 能访问的资源和操作类型。所有凭证在前端提交后,后端使用AES-256-CBC加密存入数据库,加密密钥由部署者自己设定,不经过任何第三方服务。
核心模块设计
从域名 DNS 到边缘计算,从对象存储到 AI 推理,整个面板覆盖了 Cloudflare 运维的主要链路。
多账户切换机制
多账户管理的核心难点在于凭证隔离和上下文切换。实现上,每个账户的 API Token 独立加密存储,用户登录面板后可以添加多个账户。切换账户时,前端只切换当前会话的 accountId 上下文,后端根据该上下文选择对应的加密凭证解密后调用 Cloudflare API。操作审计日志也按账户维度记录,方便追溯。

Workers / Pages 批量部署
跨账户部署 Worker 是最常用的功能之一。Cloudflare 官方 API 的部署流程是:上传脚本 → 配置绑定 → 设置路由 → 绑定域名,每一步都要单独调 API。这里做了两件事:
结构化表单:把 JSON 配置转为可视化表单,KV 绑定、环境变量、路由规则都在表单里完成,降低手写 JSON 的出错过率。
批量调度:选择多个账户后,构造部署任务队列,按账户串行、按步骤并行执行,失败自动回滚。
AI 推理网关
Workers AI 提供了不错的免费推理额度,但官方没有提供用量统计和配额监控。这个模块的核心设计点:全模型支持:通过 Workers AI 的 REST API 列出所有可用模型流式对话:基于 Server-Sent Events 实现流式推理,前端用 Naive UI 的对话组件展示,支持 Reasoning 过程可视化。OpenAI 兼容层:暴露 /v1/chat/completions 和 /v1/models 两个端点,响应格式完全兼容 OpenAI API。这样本地的 ChatBox、OpenCat、Continue 等工具可以直接连上来,配置 base_url 为本机地址即可。用量监控:汇总展示所有账户的 Workers AI 日配额消耗情况,方便了解各账户的推理用量。

规则引擎
Cloudflare 的 Rulesets API 相当复杂,涉及多种规则类型(Transform Rules、Cache Rules、Firewall Rules 等),每种规则的 Phase 和表达式语法都有差异。实现上做了两层抽象:规则模板层:把 8 种常用规则类型(回源改写、URL 重写、请求头转换、缓存控制、防火墙、限速、重定向)抽象为结构化表单,用户填字段即可。表达式生成层:根据表单配置自动生成 Cloudflare Rulesets API 所需的表达式语法,支持嵌套条件组合。
隧道管理
Cloudflare Tunnel 的配置链路比较长:创建 Tunnel → 配置 Ingress → 添加 DNS 记录,三者环环相扣,漏一步就无法正常回源。这里做了一个一键回源向导:用户只需输入内网服务地址和域名,工具自动完成 Tunnel 创建、Ingress 规则写入、DNS CNAME 记录添加三步操作,并提供可视化的 Ingress 编辑界面。
模块总览
| 模块 | 功能说明 |
|---|---|
| 实时仪表盘 | 各账户 Workers、AI、渲染配额实时展示,操作审计记录 |
| DNS 管理 | A / AAAA / CNAME / MX / TXT 全记录类型,代理开关,批量操作 |
| Workers / Pages | 脚本 CRUD,单/跨账户批量部署,KV 绑定、环境变量、路由、自定义域名 |
| 隧道管理 | Tunnel 创建/删除,Ingress 可视化编辑,一键回源向导 |
| 规则引擎 | 8 种规则类型(回源/重写/头转换/缓存/防火墙/限速/重定向),表单化配置 |
| AI 推理 | Workers AI 全模型,流式对话 + Reasoning 可视化,多账户配额调度 |
| 浏览器渲染 | 截图 / HTML / Markdown / PDF / 链接提取,5 种模式,内建 SSRF 防护 |
| 存储管理 | KV 键值 CRUD、D1 SQL 查询、R2 文件上传/下载/预览 |
| OpenAI 兼容 API | /v1/chat/completions、/v1/models,流式 + 非流式 |
| 安全 | API Token AES-256-CBC 加密,可选登录密码,/admin/路径隐藏,审计日志 |
部署实践
Cloudflare Pages 部署(推荐)
利用 GitHub Actions 自动部署到 Cloudflare Pages,全程浏览器操作:
| 步骤 | 操作 |
|---|---|
| 1 | Fork 仓库,打开你的 Fork →Settings→Environments |
| 2 | 创建production环境,添加 4 个 Secrets(见下表) |
| 3 | Actions→Deploy to Cloudflare Pages (Secrets)→ Run workflow,环境名填production |
| 4 | 部署完成后访问https://cfmgr.pages.dev/admin/,输入API_SECRET登录 |
| 变量 | 说明 |
|---|---|
CF_API_KEY |
Cloudflare Global API Key |
CF_EMAIL |
Cloudflare 账户邮箱 |
ENCRYPTION_KEY |
至少 16 位随机字符串(AES 加密密钥) |
API_SECRET |
面板登录密码 |
生产环境推荐用 API Token 替代 Global API Key,只授予必要的权限,具体权限列表见附录。
Docker 自托管
git clone https://github.com/hefy2027/cf-manager.git
cd cf-manager && cp .env.example .env
chmod +x deploy.sh && ./deploy.sh
# 访问 http://localhost:3000/admin/
修改 .env 中的 ENCRYPTION_KEY 和 API_SECRET 后启动即可。支持 HTTP/SOCKS5 代理,适合需要固定出口 IP 的环境。
技术栈总结
| 层 | Docker 方案 | Cloudflare Pages 方案 |
|---|---|---|
| 前端 | Vue 3 + Naive UI + Pinia | 同左 |
| 后端 | Express 5 | Hono |
| 数据库 | SQLite (better-sqlite3) | Cloudflare D1 |
| 部署 | Docker Compose | GitHub Actions → Pages |
参考资料
DEMO:https://cf-manager.surge.sh/
GitHub 开源:https://github.com/hefy2027/cf-manager
附录:API Token 权限配置对照
使用 API Token 时,创建自定义 Token 需要勾选以下 14 项权限:
| # | 权限 | 级别 | 对应功能 |
|---|---|---|---|
| 1 | User Details:Read |
User | 验证 Token 有效性 |
| 2 | Account Analytics:Read |
Account | 仪表盘用量统计 |
| 3 | Workers Scripts:Edit |
Account | Workers 脚本 / Secrets / Cron / 域名 / 设置 |
| 4 | Workers Tail:Read |
Account | Worker 日志查看 |
| 5 | Workers KV Storage:Edit |
Account | KV 命名空间和键值管理 |
| 6 | D1:Edit |
Account | D1 数据库管理及 SQL 查询 |
| 7 | Workers R2 Storage:Edit |
Account | R2 存储桶和对象管理 |
| 8 | Cloudflare Pages:Edit |
Account | Pages 项目和部署管理 |
| 9 | Workers AI:Edit |
Account | AI 模型列表和推理 |
| 10 | Browser Rendering:Edit |
Account | 浏览器渲染(5 种模式) |
| 11 | Cloudflare Tunnel:Edit |
Account | Tunnel 管理 |
| 12 | Zone:Read |
Zone | 区域列表读取 |
| 13 | DNS:Edit |
Zone | DNS 记录管理 |
| 14 | Workers Routes:Edit |
Zone | Workers 路由管理 |
资源范围:Account Resources → All accounts,Zone Resources → All zones。创建入口:Cloudflare API Tokens → 创建令牌 → 自定义。TTL 建议 Forever,生成后立即复制保存。
转自:https://mp.weixin.qq.com/s/2ONiyY88BvPWDC5yl1kZ4w