免费搭建 Cloudflare Workers + R2 存储桶图床方案
项目地址:
https://github.com/622cc/cf-picup
一、环境准备
- 注册并登录 Cloudflare 官网
- 确保已有域名托管在 Cloudflare(域名添加指南)
二、R2 存储桶配置
创建存储桶
- 控制台左侧菜单 ➔ R2
- 点击「创建存储桶」
- 名称建议:
images
- 数据中心选择:自动优化(默认)
权限设置
存储桶权限 ➔ 公共访问 ➔ 开启「允许公共读取」
三、Workers 服务部署
创建Worker
- 控制台左侧菜单 ➔ Workers 和 Pages
- 名称示例:
image-upload
- 选择「HTTP 处理程序」
代码部署
// 将 worker.js 代码粘贴至编辑器 addEventListener('fetch', ...)
- 点击「保存并部署」
四、服务绑定与配置
1. R2存储桶绑定
- Worker详情页 ➔ 设置 ➔ 变量
添加绑定:
变量名称:R2_BUCKET 选择存储桶:images
2. 自定义域名配置
- 触发器 ➔ 添加自定义域
- 输入子域名:
img.yourdomain.com
- 自动生成CNAME记录,等待DNS生效(约5分钟)
3. API安全认证
环境变量 ➔ 添加:
名称:UPLOAD_API_TOKEN 值:使用密码生成器创建高强度字符串(推荐Bitwarden) 勾选「加密」
五、浏览器脚本安装
- 安装 Tampermonkey 扩展
- 新建用户脚本 ➔ 粘贴
ganba.de-cf.js
代码 配置参数:
API 地址:https://img.yourdomain.com/api API Token:填入环境变量设置的 UPLOAD_API_TOKEN
六、使用说明
支持操作:
- 拖拽上传(支持多文件) - 截图粘贴(Ctrl+V) - 直接复制图片文件
输出格式:
Markdown: HTML:<img src="URL" alt="description"> 直链:https://img.yourdomain.com/filename.jpg
七、费用与限制
资源类型 | 免费额度 | 超额费率 |
---|---|---|
R2 存储 | 10GB/月 | $0.015/GB |
Workers 请求 | 10万次/天 | $0.15/百万次 |
文件限制 | 单个文件 ≤50MB | 格式:JPG/PNG/GIF/WebP |
八、最佳实践
自动清理策略
# 通过R2生命周期规则自动删除旧文件 r2 bucket lifecycle set images --rule '{"ID":"30d-clean","Status":"Enabled","Expiration":{"Days":30}}'
监控建议
故障排查
❖ 常见问题:
- 403错误 ➔ 检查API Token加密状态
- 上传超时 ➔ 确认文件≤50MB
- DNS未生效 ➔ 使用
dig img.yourdomain.com
验证解析
如需帮助,欢迎在项目GitHub提交Issue!