Cloudflare R2 搭建免费图床, 并在 piclist 和 typora 中配置
经长期测试以及网上了解, 目前, Cloudflare r2搭建图床是兼具性价比以及稳定性的最优方式
Cloudflare R2 存储桶
创建对象存储
登录https://cloudflare.com, 找到R2对象存储

点击右上角创建存储桶

- 名称自定义(后续要用)
- 位置建议选择亚太地区
- 类型: 标准
自定义域名
默认生成的r2.dev域名有速率限制, 并且还很长, 推荐自定义域名, 提前将购买的域名托管到cloudflare
在存储桶-设置里添加自定义域, 稍等片刻当状态变为活动时添加成功

生成 API 密钥
回到对象存储页面, 点击右下角Account Details里的Manage创建令牌, 点击创建Account API令牌, 权限选择对象读和写, 并指定刚刚创建的存储桶

记录下当前页面的密钥, 注意该页面只会出现这一次, 请在记事本中复制粘贴, 密钥对应关系如图所示

AccessKeyID对应访问密钥ID
SecretAccessKey对应机密访问密钥
endpoint对应终结点
至此, Cloudflare 全部配置完成
PicList
PicList 是一款高效的云存储和图床平台管理工具, 相比于PicGo, 软件界面更美观, 在保留了所有功能的基础上, 更加好用
Piclist自带S3图床类型, 点击编辑

AccessKeyId、SecretAccessKey在cloudflare生成密钥时已获取Bucket是创建的存储桶的名字设定Region最好填auto自定义节点也就是endpoint, 也是在生成密钥时已获取自定义域名填入自己的域名
填写完后确认, 点击左侧菜单栏上传, 随便测试一张图, 提示上传成功即可
Typora
Typora可以直接安装picgo-core, 在菜单栏-文件-偏好设置-图像里, 由于我们使用的是Cloudflare R2, 默认安装的picgo-core不带此图床类型, 需要手动安装插件, 但typora里安装的picgo-core是打包好的二进制文件无法额外安装插件, 所以这里使用的是在win电脑上安装node和npm, 通过在npm全局安装picgo-core, 然后再安装s3插件

安装node.js, 在官网https://nodejs.org/en/download下载msi文件, 一键安装
修改npm全局安装路径到D盘:
npm config set prefix "D:\node_js\node_global"
npm config set cache "D:\node_js\node_cache"bash
添加环境变量D:\node_js\node_global 和D:\node_js 并确保前者在后者上方
完成路径切换后, 全局更新npm:
npm install -g npm@latestbash
全局安装picgo-core:
npm install picgo -gbash
安装S3插件, 参考: https://github.com/wayjam/picgo-plugin-s3, 具体步骤如下(最好是在cmd管理员模式下进行):
#安装s3插件
picgo add s3
#选择图床
picgo set uploader # 选择aws-s3回车, 输入一个name, 后续弹出的所有选项先全部直接回车不填bash

在C:\Users\用户名\.picgo文件夹下找到config.json文件, 依次填入accessKeyID、secretAccessKey、bucketName、uploadPath、region、endpoint、outputURLPattern
{
"picBed": {
"current": "aws-s3",
"aws-s3": {
"accessKeyID": "访问密钥ID",
"secretAccessKey": "机密访问密钥",
"bucketName": "存储桶名称",
"uploadPath": "上传路径, 参考:{fileName}.{extName}",
"region": "auto",
"endpoint": "终结点",
"proxy": null,
"rejectUnauthorized": true,
"acl": "public-read",
"pathStyleAccess": false,
"outputURLPattern": "https://自定义域名/{path}",
"urlPrefix": "",
"urlSuffix": "",
"disableBucketPrefixToURL": false,
"_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"_configName": "XXX",
"_createdAt": XXXXXXXXXXXXXX,
"_updatedAt": XXXXXXXXXXXXXX
},
"uploader": "aws-s3"
},
"picgoPlugins": {
"picgo-plugin-s3": true
},
"uploader": {
"aws-s3": {
"configList": [
{
"accessKeyID": "访问密钥ID",
"secretAccessKey": "机密访问密钥",
"bucketName": "存储桶名称",
"uploadPath": "上传路径, 参考:{fileName}.{extName}",
"region": "auto",
"endpoint": "终结点",
"proxy": null,
"rejectUnauthorized": true,
"acl": "public-read",
"pathStyleAccess": false,
"outputURLPattern": "https://自定义域名/{path}",
"urlPrefix": "",
"urlSuffix": "",
"disableBucketPrefixToURL": false,
"_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"_configName": "XXX",
"_createdAt": XXXXXXXXXXXXXX,
"_updatedAt": XXXXXXXXXXXXXX
}
],
"defaultId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}
}json
上下两部分都要填, 填两边
最后回到typora的偏好设置-图像里, 将上传服务选为Custom Command, 命令填入picgo upload
