前言:
新浪图床彻底挂了 … 准备转投自建存储。
存储: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 是相似的,还有很多操作(比如设置鉴权等)也可以一并完成。