用 Cloudflare R2 +piclist搭建私有图床
现状
经常使用 Markdown 写作的话,一定会遇到图片存储的问题,因此就需要一个稳定方便安全的图床。我曾经在这方便折腾了很长时间。一开始我使用 Github 充当图床存储图片,它会暴露所有图片而且难以管理这些图片。使用七牛云、阿里 OSS 等对象存储则需要准备备案过的域名,还会多出一笔额外开支。 我现在在使用 SM.MS 这个第三方图床,对比其他图床服务相对靠谱一点。但是由于使用的是免费版,所以偶尔会遇到上传受限的情况。
另外我现在上传图片的整个流程也比较繁琐,需要先去整理图片素材,上传到 tinypng 上进行图片压缩,然后再转换为 webp 格式,接着再上传到 SM.MS 上,最后找到文章需要插入图片的地方选择合适的图片进行插入。这样会不停地打断我写作过程,效率非常低。
偶然间了解到 Cloudflare 有一个 R2 对象存储服务,即没有出口带宽费用1,每个月的免费额度又满足了我的需求,能白嫖为什么要付费。正好趁着这个机会,改造一下我的图片上传流程。
免费额度 | 计费方式 | |
---|---|---|
存储使用 | 10 GB / month | $0.015 / GB-month |
A 类操作 | 1 million requests / month | $4.50 / million requests |
B 类操作 | 10 million requests / month | $0.36 / million requests |
折腾步骤
前置条件
首先应该确保你的 Cloudflare 账号应该添加了一个域名和一个支付方式例如 Paypal,我恰好都满足 😆。
创建存储桶
名称可以随意,地区可以选择亚太地区
为存储桶绑定一个自定义域名,例如我在这里分配了一个二级域名
生成令牌
点击「创建 API 令牌」安装下面的方式创建一个新的令牌:
然后会显示生产的令牌信息,注意退出该页面之前要先记下生成的访问密钥和访问密钥 ID,因为该信息只在第一次创建时才会显示,否则只能重新创建一个新的令牌啦。
设置图床
PicGo 是一个广受好评的跨平台图片上传工具,它支持了常见的多种图床,例如:七牛图床、又拍云。PicList 在 PicGo 的基础上添加了许多新的功能,比如:云端同步删除,云存储管理。安装 PicList 的步骤比较简单,不再赘述,点击前往下载。
安装完成之后,打开主窗口开始下一步操作。首先找到「图床」下的「AWS S3」,按照下面的方式进行设置:
设置完成之后,我们就可以正常上传图片到 Cloudflare R2 啦。但是为了节省云存储空间,提高图片加载速度,需要对图片进行适当压缩。PicList 中可以设置压缩,但是它是针对所有图片统一配置的,不够智能。可以使用 tinypng 对图片进行压缩,它可以根据图片选择合适的压缩比。
好消息是已经有人开发了相关的插件,下载安装即可,开源万岁!
- 在插件目录中搜索「tinypng」,点击安装。
- 点击右下角图标启用「transformer – tinypng」
- 前往 tinypng 官网,申请开发者 API。这个很好申请,只需要填写姓名和邮箱,就会收到一封邮件。点击邮件进入控制台添加一个 API key,复制这个 key。
⚠️ 对于免费用户,每个月只有 500 次的免费压缩额度,超出部分需要付费。
- 回到插件目录,点击「配置 plugin – picgo-plugin-tinypng」,填写刚刚的 API key。
与Typora进行集成
上面配置完成后,piclist可以正常使用,其可以完美集成到Typora中,可以在书写中直接粘贴图片自动上传。
至此,大功告成!现在截图保存到剪切板,点击 PicList 菜单栏的对应图片就可以直接上传到图床,图片地址也复制好了。