字
字节笔记本
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 种任务类型:
- 批量部署 Workers
- 批量删除 Workers
- 批量更新 Workers 脚本
- 批量获取 Workers 列表
- 账号健康检查
- 自定义脚本执行
- 并发控制:默认 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-datavolume 中
⚠️ 注意: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快速开始
- 首次访问:打开
http://localhost:3000,设置主密码 - 添加账号:在账号管理页面添加 Cloudflare 账号(支持 API Token 或 Global API Key)
- 同步 Workers:点击同步按钮获取所有 Workers 列表
- 创建任务:在任务管理页面创建批量任务
- 监控进度:通过 WebSocket 实时查看任务执行状态
环境变量配置
| 变量名 | 说明 | 默认值 | 必需 |
|---|---|---|---|
PORT | HTTP 服务器端口 | 3000 | 否 |
JWT_SECRET | JWT 签名密钥 | - | 是 |
DB_PATH | SQLite 数据库文件路径 | ./data.db | 否 |
NODE_ENV | 运行环境 | development | 否 |
DEBUG_CF_API | 调试 Cloudflare API 请求 | false | 否 |
生产环境建议:
bash
NODE_ENV=production
JWT_SECRET=生成一个强随机字符串
DEBUG_CF_API=false数据库结构
| 表名 | 说明 |
|---|---|
system_config | 系统配置(主密码 hash) |
accounts | Cloudflare 账号信息 |
jobs | 批量任务记录 |
tasks | 任务详情(每个账号一条) |
workers | Workers 缓存信息 |
script_templates | 脚本模板(预留) |
audit_logs | 审计日志 |
使用示例
批量部署 Workers
- 进入「任务管理」页面
- 选择「批量部署」任务类型
- 选择目标账号
- 上传 Workers 脚本文件
- 配置路由规则
- 点击执行,实时监控进度
账号健康检查
- 进入「账号管理」页面
- 选择需要检查的账号
- 点击「健康检查」按钮
- 查看检查结果和 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)
解决方案:
- 降低并发数(修改
JobExecutor构造函数的并发参数) - 检查是否有其他程序在调用同一账号的 API
- 等待一段时间后重试
备份建议
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项目链接
- GitHub 仓库:https://github.com/lu0b0/cloudflare-manager
- 许可证:MIT License
分享: