在开始搭建博客的时候,一直在思考怎么保存博客中的图片,主流的方案无非有几种:

  • 公共图床
  • 服务器本地磁盘
  • OSS + CDN 分发

在刚开始图片没有很多的情况下,我选择使用公共图床来作为博客图片的存储方式。搜索了一番,最终选了 SMMS , 这个图床也比较老牌了,是 V2EX 的御用图床。但是在一番测试后还是发现了很多问题, 一来是图床的访问频率控制比较严格,免费版每分钟只有 20 次的访问额度,在测试的时候比较难受,二是对于第三方图床总有一种恐惧感,害怕哪天突然经营不善导致数据无法挽回,微博的前车之签就在眼前。所以思来想去,参考了很多方案,最终还是选择了 Cloudflare R2 + Webp Cloud 来搭建图床服务

详细的教程参考这篇博客 从零开始搭建你的免费图床系统(Cloudflare R2 + webp Cloud + PicGo)

开始搭建

CloudFlare R2

Cloudflare R2 是其在 2021年推出的 S3兼容的对象储存服务, 但是和其他云服务商不同,R2 不收取存储内容的出口流量费用,这点对于图床的搭建简直是神助。而且,R2提供了 10 GB/month 的免费额度,对于现阶段的图床来说够用了。

Free Plan

为了使用 R2,你必须拥有一个 Cloudflare 账号,而且绑定了受支持的支付方式(国内用户可以使用 PayPal 绑定银联卡)。

创建 Bucket

首先进入到 R2 页面,点击右上角 “创建存储桶”

CreateBucket

在存储桶名称中填写你自定义的名字,注意这个名称后续不可以更改,后续的很多功能都会用到,位置选择自动,类型选择标准,然后点击 “创建存储桶” 。

创建完成后,进入到我们创建的存储桶页面中,此时已经可以往里面存图片文件了,但是显然这还是不够的,我们还需要做一些工作。

接下来我们在这个页面进入设置,在 “公开访问” - “连接域” 中配置自定义域名, 用来对 R2 中储存的图片进行读取。创建成功后需要等待一两分钟,成功后存储桶首页的 “域” 信息中就会显示你当前配置的域名。

如果你没有自己的域名,可以在下方的 “R2.dev 子域” 选择允许访问,这里会生成一个公共 URL ,我没有测试过这个选项的可用性,请大家自行尝试一下。

上述操作完成后便可以直接上传一张图片,用 https://your.example.site/youfilepath 访问你的图片了。但是每次在这个界面手动上传未免太不优雅,R2 同时也支持 S3 兼容的 API 。在 R2 首页上选择 “管理 R2 API 令牌” ,权限选择 “对象读和写”。同时制定存储桶为你刚刚创建的桶的名称,最后选择创建。

创建完成后会显示 API 密钥,注意这个页面只会显示一次,关闭后就消失了,请注意保存页面的内容,我们这里主要用到的是后面三项的内容。

至此,R2 部分的操作就结束了

Webp Cloud

在本文刚开始撰写时,博客采用过 Webp Cloud 来作为图片处理后端,但是在一段时间使用后,发现对于境内网络还是比较不友好,索性直接自行搭建了一套服务,部署到阿里云香港的机器上,体验下来也算还比较顺畅。具体搭建细节见 这篇博客

ShareX 实现 截图/文件 自动上传

搭建好了图片存储系统后,那么其实已经可以正常的存储和对外展示图片了。

我写博客用的机器是一台 Windows 10 的笔记本,日常写作总会有碰到需要截图展示的时候,在 Windows 平台上,我使用过 Picgo 以及相关的衍生软件,最终体验只能说勉为其用,而且在本机上无论如何也无法安装 S3 兼容插件,导致使用的体验极其狼狈。

最后,找到了 ShareX 这个软件,具体的软件配置见 这里

图片上传日期: 2024-08-03

Image

Photo by Luke Miller on Unsplash