前言:
新浪图床彻底挂了...准备转投自建存储。
存储:Cloudflare R2
R2提供了相对低廉的价格和0流量费用,如图。
(完整版请见Pricing · Cloudflare R2 docs)
前端:Picgo
(毕竟不能手搓S3 API吧
Picgo是Github上热门的图床软件,项目地址可见:
流程:
1.安装Picgo及Node.js
请参阅Picgo项目地址
2.启用CF-R2,不再赘述
(可能需要准备一张信用卡/Visa Master借记卡亦可)
3.新建一个储存桶
4.创建完成后,回到Overview,点击 “Manage R2 API Token” ,Create API Token
注意,API需要Edit权限
会生成一个
Access Key ID
和
Secret Access Key
请保留备用
5.为CFR2绑定自定义域名:
进入你创建的存储桶(Bucket),点击设置(Setting)
在PublicAccess里面,选择Connect
输入一个子域名即可,需要注意的是,你的域名必须托管在Cloudflare上。Cloudflare会自动添加解析。(你也可以使用R2.dev域名,但是R2.dev域名具有请求速率限制,也不适用于缓存和安全性,不建议生产环境使用)。
注意,请设置CORS Policy,以允许外部调用。(CF的意思是直接启用Public Access亦可实现目的)在我初次撰稿时,cf尚未提供此选项,我需要调整存储桶的对应域的改写规则,利用Cloudflare的规则修改HTTP相应头,加入一个
Access-Control-Allow-Origin * header 来允许任意源的加载
现在R2存储桶好像支持直接修改CORS了,点击edit即可
[
{
"AllowedOrigins": [
"*"
],
"AllowedMethods": [
"GET"
]
}
]
注意,配置成*会允许任意来源的加载,这是不安全的,在生产环境中,你还应该加入鉴权等。
但是个人存个图片而已,问题不大。
随后进入Picgo软件,安装S3插件
进入Amazon S3,进行设置
把上面生成的 Access Key ID 填入 应用密钥ID;Secret Access Key 填入 应用密钥
桶就是bucket名,直接填写即可
文件路径实际上也包含重命名规则,可按如下格式填写
payload | 描述 |
---|---|
{year} |
当前日期 - 年 |
{month} |
当前日期 - 月 |
{day} |
当前日期 - 日 |
{fullName} |
完整文件名(含扩展名) |
{fileName} |
文件名(不含扩展名) |
{extName} |
扩展名(不含. ) |
{md5} |
图片 MD5 计算值 |
{sha1} |
图片 SHA1 计算值 |
{sha256} |
图片 SHA256 计算值 |
地区填写 us-east-1 切记,必填
(2023.5.23更新,cf好像增加了存储桶的地域选择,这个请参照实际文档吧)
“自定义节点”填写 框内的一串链接,你可以轻易的在R2页面找到,也被描述为“S3 API”。
建议绑定自定义域名。
自定义域名填写你在cloudflare R2里面设置的自定义域名,也可填写CF提供的Public Bucket URL,不要忘记开头的 https:// (末尾无需“/”)
开启“BucketEndpoint”功能,
意为针对Bucket的Endpoint,而非针对API的Endpoint。
R2桶本质上和S3是相似的,还有很多操作(比如设置鉴权等)也可以一并完成。