一个强大的Cloudflare多账号Workers批量管理系统,支持账号管理、批量操作、实时监控和Workers脚本管理。
create - 批量创建Workerupdate - 批量更新Worker脚本delete - 批量删除Workerquery - 批量查询Worker信息list - 列出账号的所有Workershealth_check - 批量账号健康检查使用docker-compose(处理了所有配置和数据持久化):
# 1. 首次启动:构建并启动容器
docker-compose up -d --build
# 2. 查看日志
docker-compose logs -f
# 3. 停止服务
docker-compose down
# 4. 停止并删除数据(谨慎使用!)
docker-compose down -v
环境变量配置:
.env.example 为 .env 并修改 JWT_SECRETcloudflare-data volume 中仅docker命令部署(不推荐,仅供参考):
# 1. 构建镜像
docker build -t cloudflare-manager:latest .
# 2. 创建Named Volume(持久化数据)
docker volume create cloudflare-data
# 3. 运行容器(使用Named Volume,避免权限问题)
docker run -d \
--name cloudflare-manager \
-p 3000:3000 \
-v cloudflare-data:/app/data \
-e JWT_SECRET=your-secret-key \
-e NODE_ENV=production \
-e DB_PATH=/app/data/data.db \
cloudflare-manager:latest
⚠️ 注意:
-v $(pwd)/data:/app/data bind mount(会导致权限错误)环境要求:
步骤:
npm install
cp .env.example .env
# 编辑.env文件
npm run dev
http://localhost:3000
| 变量名 | 说明 | 默认值 | 必需 |
|---|---|---|---|
PORT |
HTTP服务器端口 | 3000 |
否 |
JWT_SECRET |
JWT签名密钥 | - | 是 |
DB_PATH |
SQLite数据库文件路径 | ./data.db |
否 |
NODE_ENV |
运行环境 | development |
否 |
DEBUG_CF_API |
调试Cloudflare API请求 | false |
否 |
生产环境建议:
NODE_ENV=production
JWT_SECRET=生成一个强随机字符串
DEBUG_CF_API=false
./data.db (可通过环境变量配置)| 表名 | 说明 |
|---|---|
system_config |
系统配置(主密码hash) |
accounts |
Cloudflare账号信息 |
jobs |
批量任务记录 |
tasks |
任务详情(每个账号一条) |
workers |
Workers缓存信息 |
script_templates |
脚本模板(预留) |
audit_logs |
审计日志 |
Docker部署备份:
# 方式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
本地部署备份:
# 停止应用
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
npm run build
npm install -g pm2
pm2 start dist/index.js \
--name cloudflare-manager \
--env NODE_ENV=production
pm2 save
pm2 startup
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# WebSocket支持
location /socket.io/ {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
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
新增API路由:
src/routes/ 创建新的路由文件src/index.ts 注册路由新增数据库表:
src/db/schema.ts 的 initDatabase 函数添加 CREATE TABLE SQL新增Cloudflare API调用:
src/services/CloudflareAPI.ts 添加新方法启用Cloudflare API调试:
DEBUG_CF_API=true npm run dev
输出示例:
[CF API] [5ddb2f59] GET https://api.cloudflare.com/client/v4/...
{
"headers": { "Authorization": "Bearer ***" }
}
[CF API] [5ddb2f59] ✓ 234ms
{
"success": true,
"result": { ... }
}
查看数据库内容:
sqlite3 data.db
.tables
SELECT * FROM accounts;
错误: 429 Too Many Requests
解决方案:
JobExecutor 构造函数的并发参数)