Files
domainflare/README.md
2026-06-24 22:10:24 +08:00

4.8 KiB
Raw Permalink Blame History

Domainflare

基于 Cloudflare Workers多账号 DNS 解析管理Web 面板 + D1 存储账号HTTP 透传官方 API v4/api/cf/*),并提供与 X-App-Token / Bearer 一致的 管理 API,便于脚本与第三方工具集成。

功能概览

类型 说明
Web 面板 React + Vite;多 Zone、DNS 筛选与分页、增删改、DNSSEC、导出 JSON响应式布局由 Workers Static Assets 下发,不进入 Worker 脚本包体)
存储 D1cf_accounts 持久化账号名称与 Cloudflare API Token
HTTP API GET /api 目录、GET /api/health 探活、/api/accounts CRUD、/api/cf/*https://api.cloudflare.com/client/v4/*

完整接口说明、curl 与安全约定见:domainflare API调用文档.md

仓库结构(节选)

domainflare/
├── src/                      # Worker模块化 Hono API仅 /api
│   ├── index.ts
│   ├── app.ts
│   ├── routes/               # meta、accounts、cf 代理
│   ├── lib/                  # 鉴权、HTTP 工具
│   └── types/
├── frontend/                 # React + Vite 面板(构建产物 → Workers Static Assets
│   ├── src/
│   └── dist/                 # wrangler `[assets].directory`,由 `npm run build:frontend` 生成
├── migrations/               # D1 SQL 迁移
├── imports/                  # Postman / OpenAPI / 环境模板
├── wrangler.toml
├── domainflare API调用文档.md
└── README.md

环境要求

  • Node.js 18+(建议 LTS
  • Wrangler 4.x见根目录 package.json devDependencies
  • Cloudflare 账号(Workers + D1

快速开始

git clone <仓库 URL>
cd domainflare
npm install
npm --prefix frontend install
npx wrangler login

首次:创建 D1 并迁移

npx wrangler d1 create domainflare

将命令输出中的 database_id 写入 wrangler.toml[[d1_databases]] 对应项,然后:

npm run db:migrate:remote   # 远程 D1
npm run db:migrate:local    # 本地 wrangler dev 使用的 SQLite

本地开发

需要先同时跑 WorkerVite 开发服务器(根目录脚本已用 concurrently 封装):

npm install
npm --prefix frontend install   # 首次克隆后安装前端依赖
npm run dev
  • Worker 默认:http://127.0.0.1:8787wrangler dev
  • 面板http://127.0.0.1:5173Vite已通过 vite.config.ts/api 代理到 Worker

在浏览器打开 5173 端口即可。默认 APP_ACCESS_TOKEN 可在 wrangler.toml[vars] 中查看;勿在生产依赖默认示例值

生产部署

一键先构建前端再上传 Worker + Static Assets

npm run deploy

等价于 npm run build:frontend && wrangler deploy。仅更新 Worker 代码而不改前端时,仍可直接 npx wrangler deploy(需已存在 frontend/dist)。

生产环境推荐通过 Secret 配置面板口令,避免把 APP_ACCESS_TOKEN 写在配置文件中:

npx wrangler secret put APP_ACCESS_TOKEN

部署完成后,将 Worker 的根 URL(无末尾 /)作为 API 文档中的 BASE

配置说明

配置项 说明
APP_ACCESS_TOKEN 保护管理接口与 /api/cf/* 中的面板身份;应用于 GET /apiGET /api/health
D1 cf_accounts 由迁移创建;字段 idnametokencreated_at

API 与导入工具

  • 环境变量约定(与文档一致)

    • BASEWorker 根 URL无末尾 /
    • PANEL_TOKEN:即 APP_ACCESS_TOKEN
  • Postman

    1. 导入 imports/Domainflare.environment.postman.json 并填写变量。
    2. 导入 imports/Domainflare.postman_collection.json,选中该环境。
  • Apifox

    1. 导入PostmanDomainflare.environment.postman.json
    2. 导入OpenAPIDomainflare.apifox.openapi.json;认证中 PanelHeader / PanelBearer 使用 {{PANEL_TOKEN}}CfBearer 使用 {{cfToken}}

鉴权速记

  • 管理类/api/verify/api/accounts…):X-App-Token: <口令> Authorization: Bearer <口令>
  • 透传 /api/cf/*必须 X-App-Token + Authorization: Bearer <Cloudflare API Token>

安全提示

  • 使用强随机 APP_ACCESS_TOKEN;生产用 Secret 管理;限制 Worker 暴露面(例如配合 Cloudflare Access)。
  • GET /api/accounts 返回完整 CF Token仅在内网或可信环境使用。
  • Cloudflare Token 遵循最小权限(如仅 Zone DNS 编辑)。

许可

仓库未包含 LICENSE 时,由维护者自行补充;使用本代码请遵守适用法律法规与 Cloudflare 服务条款。