用Cloudflare搭建免费图床的三种方案
Cloudflare(以下简称CF)的R2存储桶的免费套餐包含:
| 项目 | 免费额度 | 说明 |
|---|---|---|
| 存储空间 | 10 GB/月 | 每月可免费存储 10 GB 数据 |
| Class A 操作(写入类操作) | 一百万次/月 | 包括写入、修改、列出对象、创建、上传、删除等操作 |
| Class B 操作(读取类操作) | 一千万次/月 | 包括读取、获取对象、下载、检查对象状态等操作 |
| 出站流量(Egress) | 免费 | 从 R2 向外部互联网传输数据不收费 |
| 可用存储类别 | Standard Storage | 免费额度仅适用于标准存储类别 |
| 计费单位 | GB/月 | 免费额度每月自动重置 |
| 超出部分 | 按用量计费 | 超过免费额度后按标准价收取费用 |
对我这种极小体量的个人博客来说,10g的存储量绰绰有余,而且只要通过CF解析的网址,都会免费加上https的解析,方便又省钱,真不愧为赛博活佛。此处记录三个搭建方案,将免费额度更好地利用起来。
方案一:CF内的D1数据库+R2存储桶(最简单)
这个方案来自博主“零度解说”。分别建立一个D1数据库,以及一个R2存储桶(首次开通需要绑定银行卡或paypal),然后将他博客里中的github克隆到自己的仓库,再导入CF里的Pages里面,输入代码、绑定各种相关数据后即可完成。具体参考他的博文内容,以及视频讲解(图床内容时间为2:48-8:50)。
这个方案非常简单,按教程照做之后,就可以拥有自己的图床。但是有两个问题:其一,该操作是在网页端完成的,且只负责上传,获取图片的url仍需进入CF的R2存储桶中,上传与读取分开,不方便;其次,上传的接口有好几个,除了自己的R2接口,还有作者TG的接口。我个人觉得不纯净,所以就放弃了这个方式。
方案二:R2存储桶+picgo桌面端(最推荐)
以R2存储桶为数据库,picgo来执行操作,这样可以在app上实现上传、读取、删除,以及图片格式的变换,很方便。
- 注册好CF账户后,进入“主页-建构-存储和数据库-R2对象存储-概述”,选择右上角蓝色标“创建存储桶”。名字随便取,例如“images”;位置可以选择“亚太地区”,“默认存储类型”选“标准”。这样,一个存储桶就建立好了;
- 在R2存储桶中,点击“设置-公共开发URL-开启”,然后按指示输入“allow”,即可开启。这样,就可以得到一个
.r2.dev的域名,存储桶可以接入互联网,为此后连接亚马逊S3接口做好准备;
- 回到“概述”,右下角有一个
API Tokens,点进去选择“创建User API令牌”,令牌名称可以和R2存储桶保持一致。权限选“对象与读取”,然后“仅用于特定存储桶”,选择刚才创建的“images”。剩余的设置保持默认,点击创建令牌。于是就出来好几个数值串,将名称和对应的值存储起来,保存好,因为只出现这一次!!!
- 下载安装picgo,github的仓库是https://github.com/Molunerfinn/PicGo,选择自己的对应系统的版本即可;
- 在picgo中选择“插件设置”,然后搜索栏输入“s3”,安装(我用的是S3-lls 1.0.2);
在picgo中,选择“图床设置-Amazon S3”,选择一个default开始设置
图床配置名:建议和R2存储桶同名
应用密钥ID:对应步骤3令牌中的“访问密钥ID”
应用密钥:对应步骤3中的“机密访问密钥”
桶:R2存储桶的名称
文件路径:{fileName}.{extName} ——来自一位博主的推荐
权限:public-read
自定义节点:对应步骤3“为 S3 客户端使用管辖权地特定的终结点”
自定义域名:对应步骤2中的
.r2.dev域名- 在Picgo中,将图片拉进上传区,然后图片就可以在相册中查看了,选择图片后,可以输出想要的格式,常用的Markdown,URL,HTML等格式都有,很方便;
- 此时再回到CF的R2存储桶中,图片都在里面了。
至此,免费的图床就搭建好啦!
方案三:R2存储桶+picgo桌面端+webp代理(可选)
这个方案是在方案二的基础上加入了webp的代理,可以在保证图片质量的基础上大幅缩减图片的体积,让图片加载速度变得更快。不过,由于每天的免费额度只有3000次浏览,这个方案的图片最好用于图片比较少的文章中。当然,付费的流量价格也不高,根据自己的网站规模、图片数量等选取套餐就好。
- 完成方案二的所有步骤,注意步骤1创建存储桶的时候,地区选择“北美洲西部”;
- 进入webp的官网注册账号,用github的账号比较好,可以直观地看到许多数据,包括已使用的浏览次数等;
选择右下角“Create Proxy”(创建代理):
地区:选择美国Hillsboro,OR
Proxies-name:随便填写,可以与R2存储桶一致
Proxy Origin URL:填写R2存储桶
.r2.dev的域名代理模式:建议使用Rapid模式,这样图片加载速度会更快
- 创建好后,就会生成一个后缀为
.webp.li的代理地址;
- 打开Picgo,在“图床设置-Amazon S3”中打开此前设置好的图床,在“自定义域名”中,用
.webp.li的代理地址替换掉此前的R2存储桶.r2.dev域名。
设置完后,点开上传图片的url,就会看到经过.webp.li的域名,证明webp的代理成功了。但我用下来感觉方案二和三几乎没有什么差别。
p.s. 每个账户可以创建一百万个存储桶,所以可以创建多个不同用途的独立存储桶,只要总容量不超过10G就行。具体容量的规定看这里:https://developers.cloudflare.com/r2/platform/limits/?utm_source=chatgpt.com。
参考资料:
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。