字节笔记本

2026年2月22日

cloudflare-manager:Cloudflare 多账号 Workers 批量管理系统

本文介绍 cloudflare-manager,一个强大的 Cloudflare 多账号 Workers 批量管理系统。该项目支持账号管理、批量操作、实时监控和 Workers 脚本管理,帮助开发者高效管理多个 Cloudflare 账号和 Workers 资源。

项目简介

cloudflare-manager 是一个开源的 Cloudflare 管理工具,由 lu0b0 开发维护。截至目前,该项目在 GitHub 上已获得 163 stars 和 29 forks,主要使用 TypeScript (98.6%) 编写。该系统提供了完整的 Web 界面,让开发者可以集中管理多个 Cloudflare 账号,批量执行 Workers 部署、删除等操作。

核心特性

认证系统

  • 主密码保护机制:首次使用需初始化设置
  • JWT Token 认证:安全的身份验证机制
  • 密码哈希存储:使用 bcrypt 加密存储密码

账号管理

  • 多 Cloudflare 账号管理:支持添加和管理多个账号
  • 双认证方式:支持 API Token 和 Global API Key 两种认证
  • 账号健康检查:自动检测账号状态
  • 自动获取 subdomain 信息:自动同步账号配置
  • 批量导入账号:支持批量导入多个账号

批量任务系统

  • 6 种任务类型
    1. 批量部署 Workers
    2. 批量删除 Workers
    3. 批量更新 Workers 脚本
    4. 批量获取 Workers 列表
    5. 账号健康检查
    6. 自定义脚本执行
  • 并发控制:默认 3 个并发,避免 API 限流
  • 实时任务监控:通过 WebSocket 实时显示任务进度
  • 自动重试机制:任务失败自动重试
  • 详细错误日志:记录完整的执行日志

Workers 管理

  • 多种显示模式:全部/按账号分组/自定义筛选
  • 本地缓存机制:减少 API 调用次数
  • 获取脚本源码:支持查看 Workers 源代码
  • 在线更新脚本:可直接在界面中编辑更新
  • 安全删除:删除操作需二次确认

数据持久化

  • SQLite 数据库:使用 WAL 模式支持高并发
  • 自动数据库迁移:自动处理数据库结构更新
  • 外键约束:保证数据完整性
  • 审计日志:记录所有操作日志
  • 索引优化:完整的索引提升查询性能

技术栈

技术用途
Express.js + TypeScript后端框架
SQLite (better-sqlite3)数据库
Socket.IO实时通信
JWT + bcrypt认证与安全
React + TypeScript + TailwindCSS前端界面
Docker + Docker Compose部署方案

安装指南

方式一:Docker 部署(推荐)

使用 docker-compose 一键部署(处理了所有配置和数据持久化):

bash
# 1. 首次启动:构建并启动容器
docker-compose up -d --build

# 2. 查看日志
docker-compose logs -f

# 3. 停止服务
docker-compose down

# 4. 停止并删除数据(谨慎使用!)
docker-compose down -v

环境变量配置

  • 可选:复制 .env.example.env 并修改 JWT_SECRET
  • docker-compose 会自动使用 Named Volume 管理数据(无权限问题)
  • 数据持久化在 cloudflare-data volume 中

⚠️ 注意:Windows/Mac 下不要使用 -v $(pwd)/data:/app/data bind mount(会导致权限错误),推荐使用 Named Volume 或 docker-compose。

方式二:本地开发

环境要求

  • Node.js >= 18
  • npm >= 9

安装步骤

bash
# 克隆项目
git clone https://github.com/lu0b0/cloudflare-manager.git
cd cloudflare-manager

# 安装依赖
npm install

# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置 JWT_SECRET

# 启动开发服务器
npm run dev

# 访问应用
# http://localhost:3000

快速开始

  1. 首次访问:打开 http://localhost:3000,设置主密码
  2. 添加账号:在账号管理页面添加 Cloudflare 账号(支持 API Token 或 Global API Key)
  3. 同步 Workers:点击同步按钮获取所有 Workers 列表
  4. 创建任务:在任务管理页面创建批量任务
  5. 监控进度:通过 WebSocket 实时查看任务执行状态

环境变量配置

变量名说明默认值必需
PORTHTTP 服务器端口3000
JWT_SECRETJWT 签名密钥-
DB_PATHSQLite 数据库文件路径./data.db
NODE_ENV运行环境development
DEBUG_CF_API调试 Cloudflare API 请求false

生产环境建议

bash
NODE_ENV=production
JWT_SECRET=生成一个强随机字符串
DEBUG_CF_API=false

数据库结构

表名说明
system_config系统配置(主密码 hash)
accountsCloudflare 账号信息
jobs批量任务记录
tasks任务详情(每个账号一条)
workersWorkers 缓存信息
script_templates脚本模板(预留)
audit_logs审计日志

使用示例

批量部署 Workers

  1. 进入「任务管理」页面
  2. 选择「批量部署」任务类型
  3. 选择目标账号
  4. 上传 Workers 脚本文件
  5. 配置路由规则
  6. 点击执行,实时监控进度

账号健康检查

  1. 进入「账号管理」页面
  2. 选择需要检查的账号
  3. 点击「健康检查」按钮
  4. 查看检查结果和 API 调用状态

目录结构

text
backend/
├── src/
│   ├── db/
│   │   └── schema.ts          # 数据库初始化和迁移
│   ├── middleware/
│   │   └── auth.ts            # JWT 认证中间件
│   ├── models/
│   │   └── types.ts           # TypeScript 类型定义
│   ├── routes/
│   │   ├── auth.ts            # 认证路由
│   │   ├── accounts.ts        # 账号管理路由
│   │   ├── jobs.ts            # 任务管理路由
│   │   └── workers.ts         # Workers 管理路由
│   ├── services/
│   │   ├── CloudflareAPI.ts   # Cloudflare API 封装
│   │   ├── JobExecutor.ts     # 任务执行引擎
│   │   └── WorkersService.ts  # Workers 服务
│   └── index.ts               # 应用入口
├── public/                    # 前端静态文件
├── data/                      # 数据库文件目录
├── Dockerfile                 # Docker 配置
├── docker-compose.yml         # Docker Compose 配置
└── package.json

调试技巧

启用 Cloudflare API 调试

bash
DEBUG_CF_API=true npm run dev

查看数据库内容

bash
sqlite3 data.db .tables
SELECT * FROM accounts;

常见问题

Cloudflare API 限流(429 Too Many Requests)

解决方案

  1. 降低并发数(修改 JobExecutor 构造函数的并发参数)
  2. 检查是否有其他程序在调用同一账号的 API
  3. 等待一段时间后重试

备份建议

Docker 部署备份

bash
# 方式1: 导出整个 Named Volume
docker run --rm \
  -v cloudflare-data:/data \
  -v $(pwd):/backup \
  alpine tar czf /backup/cloudflare-data-backup.tar.gz -C /data .

# 方式2: 使用 docker cp
docker cp cloudflare-manager:/app/data/data.db ./data.db.backup

本地部署备份

bash
# 停止应用
docker-compose down

# 备份数据库文件(包含 WAL 文件)
cp data/data.db data/data.db.backup
cp data/data.db-wal data/data.db-wal.backup
cp data/data.db-shm data/data.db-shm.backup

# 或使用 SQLite checkpoint
sqlite3 data/data.db "PRAGMA wal_checkpoint(TRUNCATE);"
cp data/data.db data/data.db.backup

# 重启应用
docker-compose up -d

项目链接

分享: