利用 CloudFlare R2 搭建图床/视频床!无服务器快速部署!

47 天前
 740moe

支持 worker && pages 部署!使用 pages 部署可以 fork 仓库,或者下载_worker.js 文件打包成压缩文件上传!

免费套餐介绍

个人使用完全足够!图床默认开启压缩,可以储存更多的图片文件!

功能特点

部署教程:

1. 环境变量说明

需要在 Cloudflare Workers 中配置以下环境变量:

变量名 说明 必填 示例
DOMAIN 自定义域名 example.workers.dev
DATABASE D1 数据库绑定变量名称 DATABASE
USERNAME 管理员用户名 admin
PASSWORD 管理员密码 password123
ADMIN_PATH 管理后台路径 admin
ENABLE_AUTH 访客验证(设置为 true 开启,不设置或设置为 false 则关闭) false
R2_BUCKET R2 存储桶名称 R2_BUCKET

2. 创建 R2 存储桶

  1. 登录 Cloudflare Dashboard
  2. 进入 R2 对象储存创建存储桶
  3. 设置存储桶名称和区域
  4. 保存存储桶的名称以便后续使用

3. 创建 D1 数据库

  1. 登录 Cloudflare Dashboard
  2. 进入 Workers & PagesD1 SQL 数据库
  3. 点击 创建 创建数据库
    • 数据库名称可自定义,例如 images
    • 建议选择数据库位置为 亚太地区,可以获得更好的访问速度
  4. 创建数据表:
    • 点击数据库名称进入详情页
    • 选择 控制台 标签
    • 执行以下 SQL 语句:
CREATE TABLE media (
    url TEXT PRIMARY KEY
);

4. 创建 Worker

  1. 进入 Workers & Pages
  2. 点击 创建
  3. 选择 创建 Worker
  4. 为 Worker 设置一个名称
  5. 点击 部署 创建 Worker
  6. 点击继续处理项目

5. 配置环境变量

  1. 在 Worker 的 设置变量和机密
  2. 点击 添加 添加变量
  3. 点击 部署

6. 绑定数据库和 R2 储存

  1. 在 Worker 设置页面找到 设置绑定
  2. 点击 添加
  3. 选择 D1 数据库
  4. 设置变量名为 DATABASE
  5. 选择之前创建的数据库
  6. 点击 部署
  7. 重复上述步骤绑定 R2 储存,变量名为 R2_BUCKET

7. 绑定域名

  1. 在 Worker 的 设置域和路由
  2. 点击 添加自定义域
  3. 输入你在 Cloudflare 绑定的域名
  4. 点击 添加域
  5. 等待域名生效

8. 部署代码

  1. 进入 Worker 的编辑页面
  2. _worker.js 的完整代码复制粘贴到编辑器中
  3. 点击 部署

9. 配置缓存

  1. 进入 Cloudflare Dashboard
  2. 进入 网站选择你的自定义域名缓存Cache Rules创建缓存规则
  3. 选择 缓存所有内容模板
  4. 设置 边缘 TTL忽略缓存控制标头,使用此 TTL30 天(根据需要设置)
  5. 点击 部署

源码: https://github.com/0-RTT/JSimages

测试:

1244 次点击
所在节点    分享发现
9 条回复
mayli
46 天前
域名不错
hanguofu
46 天前
谢谢分享。请问在哪里可以设置 访问图床/视频床的频次 ?
740moe
46 天前
@hanguofu cf 的防火墙配置规则估计可以
Lunrry
46 天前
按照你的步骤来,上传图片报错:R2 上传错误: TypeError: R2_BUCKET.put is not a function
at handleUploadRequest (worker.js:881:21)
at async Object.fetch (worker.js:20:44)
at async jsonError (.internal-0c998967-b…e-facade-1.js:12:12)
at async jsonError (.internal-0c998967-b…e-facade-1.js:12:12)
at async jsonError (.internal-0c998967-b…e-facade-1.js:12:12)
at async jsonError (.internal-0c998967-b…e-facade-1.js:12:12)
740moe
46 天前
@Lunrry 估计变量没对。照着 readme 弄下吧。我更新了下部署的流程。https://github.com/0-RTT/JSimages/blob/main/README
Lunrry
45 天前
@740moe #5 现在可以使用了,请问有将其接入到 picgo 的方案吗
liulicaixiao
45 天前
op 的域名: https://baipiao.de/ 非常好
740moe
45 天前
@Lunrry 目前没有,让 gpt 帮你试试。我没用过 picgo
740moe
45 天前
@liulicaixiao 嘿嘿👍

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/1098315

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX