Cloudflare Workers 部署
Cloudflare Workers 部署是 Pages 部署之外的另一种 Serverless 部署方式。与 Pages 相比,Workers 提供更灵活的路由控制和更高的自定义能力,适合需要精细控制部署流程的用户。
Pages vs Workers
- Pages 部署:更简单,适合大多数用户,通过 Cloudflare Dashboard 可视化操作即可完成,支持自动更新
- Workers 部署:通过 GitHub Actions 部署,适合熟悉 CI/CD 流程的用户,支持 push 到 main 分支时自动部署,也可手动触发
两种方式功能完全一致,选择适合自己的即可。
📂 第一步:Fork 项目
- 访问 CloudFlare ImgBed 项目
- 点击右上角的 "Fork" 按钮
- 选择您的 GitHub 账户
- 确认 Fork 完成
🔑 第二步:准备 Cloudflare 资源
2.1 获取 API Token 和 Account ID
- 登录 Cloudflare Dashboard
- 点击右上角头像 → "我的个人资料" → "API 令牌"
- 点击 "创建令牌"
- 选择 "编辑 Cloudflare Workers" 模板
- 确认权限并创建,记录生成的 Token
- 返回 Dashboard 首页,在右侧栏找到并记录 Account ID
2.2 创建数据库
数据库用于存储文件元数据,可选 KV 或 D1(二选一)。
| 特点 | KV 数据库 | D1 数据库 |
|---|---|---|
| 读写性能 | 高 | 较低 |
| 免费额度 | 少 | 多 |
KV 数据库
- 在 Dashboard 中选择 "存储和数据库" → "Workers KV"
- 点击 "创建实例",名称填
img_url - 创建完成后,记录命名空间 ID
D1 数据库
- 在 Dashboard 中选择 "存储和数据库" → "D1 SQL 数据库"
- 点击 "创建数据库",名称填
img_d1 - 创建完成后,记录数据库 ID
- 在 "控制台" 选项卡中执行初始化 SQL(见 init.sql)
2.3 创建 R2 存储桶(可选)
如果需要使用 R2 存储渠道:
- 在 Dashboard 中选择 "存储和数据库" → "R2 对象存储"
- 点击 "创建存储桶",记录存储桶名称
⚙️ 第三步:配置 GitHub Secrets
在 Fork 的仓库中,进入 Settings → Secrets and variables → Actions → Secrets,添加以下 Secrets:
| Secret 名称 | 说明 | 是否必填 |
|---|---|---|
CLOUDFLARE_API_TOKEN | Cloudflare API Token | ✅ 必填 |
CLOUDFLARE_ACCOUNT_ID | Cloudflare Account ID | ✅ 必填 |
D1_DATABASE_ID | D1 数据库 ID | 二选一 |
KV_NAMESPACE_ID | KV 命名空间 ID | 二选一 |
R2_BUCKET_NAME | R2 存储桶名称 | 可选 |
WORKER_NAME | Worker 名称(默认 cloudflare-imgbed) | 可选 |
WORKER_VARS | 业务环境变量(JSON 格式,支持 text / secret) | 可选 |
WRANGLER_CONFIG | 额外的 Wrangler 配置(JSON 格式),如 workers.dev 访问和可观测性 | 可选 |
EXPIRY_CLEANUP_CRON | 文件有效期清理的 Cron 表达式(如 */30 * * * *),启用 文件有效期 时配置 | 可选 |
WORKER_VARS 格式说明
在 GitHub Actions 的 Secrets 中添加名为 WORKER_VARS 的 Secret,将完整 JSON 对象填写为它的值。每项可以直接填写值,也可以使用包含 value 和可选 type 的对象:
{
"TG_CHAT_ID": "your-chat-id",
"CUSTOM_DOMAIN": {
"value": "https://img.example.com",
"type": "text"
},
"AI_CONFIG_SECRET": {
"value": "replace-with-a-random-secret-of-at-least-32-characters",
"type": "secret"
},
"TG_BOT_TOKEN": {
"value": "your-bot-token",
"type": "secret"
}
}| 写法 / 类型 | 部署行为 |
|---|---|
"变量名": "值" | 兼容原有写法,作为普通 text 环境变量部署 |
"变量名": { "value": "值" } | 省略 type,默认为 text |
"变量名": { "value": "值", "type": "text" } | 写入 wrangler.toml 的 [vars],作为 Cloudflare 普通文本变量部署 |
"变量名": { "value": "值", "type": "secret" } | 不写入 [vars];Worker 部署成功后统一通过 wrangler secret bulk 上传为 Cloudflare Secret |
所有可用的环境变量请参考 配置说明。
非必要不建议在此处配置
所有业务设置都可以在部署完成后通过管理面板进行配置,无需在此处填写,仅当管理面板无法覆盖的特殊环境变量才需要通过 WORKER_VARS 配置。
请将配置保存在 GitHub Secrets 中,不要将真实密钥提交到代码仓库或填写到公开仓库的 Variables。GitHub Secret 不会自动变成 Cloudflare Secret,密钥、Token 等敏感值应明确设置 type: "secret"。
额外的 Wrangler 配置
需要在每次部署时保留 workers.dev 访问、可观测性等设置,可添加名为 WRANGLER_CONFIG 的 GitHub Actions Secret,值填写 JSON 对象:
{
"workers_dev": false,
"observability": {
"enabled": true,
"head_sampling_rate": 1
}
}以上配置关闭 workers.dev 地址,并开启可观测性及全量采样。关闭 workers.dev 前,请先配置好自定义域名或路由,部署后通过该地址访问。
- 字符串、数字、布尔值作为顶层设置,对象作为配置表,支持嵌套对象;不支持数组和
null。具体字段和值请参考 Wrangler 配置文档。 - 不能覆盖脚本管理的字段:
name、main、compatibility_date、compatibility_flags、assets、images、d1_databases、kv_namespaces、r2_buckets、vars、triggers。绑定、业务变量和清理定时任务请使用上表中对应的 Secret。 - JSON 格式、值类型不符合要求,或包含脚本管理的字段时,配置生成会报错停止。不设置此 Secret 则沿用默认配置。
🚀 第四步:运行部署
- 进入 Fork 仓库的 Actions 页面
- 在左侧选择 Deploy to Cloudflare Workers
- 点击 Run workflow
- 选择要部署的分支(默认
main) - 可选修改 Worker 名称(优先级:手动输入 > Secrets 中的
WORKER_NAME>cloudflare-imgbed) - 点击 Run workflow 开始部署
部署完成后,可以通过自定义域名或已启用的 https://<worker-name>.<account-subdomain>.workers.dev 地址访问。
🚀 下一步
部署完成后,需要添加存储渠道才能正常使用。请参考 配置说明 进行配置。
