[无需信用卡]使用B2+CF Pages创建私有图床

好久没登L站了, 发一个之前博客写的教程推广一下
原文链接: 无需信用卡使用B2+CF Pages创建私有图床 | Liutsの博客

正文部分

B2(Backblaze)是一个存储桶提供商, 他为用户提供10G的免费存储空间, 但是由于公共存储桶需要信用卡验证, 所以本文教大家如何通过B2私有桶+CF Pages+PicGO或使用CloudFlare-ImgBed项目, 实现免信用卡使用B2存储桶搭建私人图床

准备工作

一个邮箱(用于注册Backblaze), 一个Cloudflare账户, 一个域名(要求可以CNAME解析)

注册Backblaze

打开官网 https://www.backblaze.com ,点击Get StartedTry for Free

接着输入邮箱, 点击Get Started Free

接着进入邮箱, 验证邮箱, 验证完成后, 填入密码并选择地区, 任意一个即可

点击Create Account, 接着输入账号密码登陆

创建私有桶和密钥

点击创建一个桶, 输入桶的名字, 其他默认, 点击创建

将桶的名字和Endpoint复制下来, 等会要用

接着进入Application Keys, 点击Add a NewApplication Keys创建密钥

名字随便, 其他默认点击创建, 复制KeyIDapplicationKey(一定要保存好, 不要丢失或泄露)

创建CF Pages

点击链接下载压缩包b2.zip

登陆Cloudflare, 选择Workers和Pages, 点击创建

选择Pages, 选择直接上传, 输入项目名字后将 b2.zip 上传

点击部署站点

接着点击设置添加变量

类型选择纯文本

变量名
ALLOW_LIST_BUCKET flase
BUCKET_NAME 你的存储桶的名字
B2_ENDPOINT 你的地区的endpoint如 s3.ca-east-006.backblazeb2.com
B2_APPLICATION_KEY_ID 你复制的KeyID
B2_APPLICATION_KEY 你复制的applicationKey

点击保存

在设置的横栏里左滑, 点击创建部署(狗石布局, 害得我一开始找了半天没找到)

再次将 b2.zip 上传, 点击部署即可

点击自定义域, 设置自定义域, 输入自己的自定义域名, 接着选择我的dns提供商, 然后到自己的域名解析处, 设置CNAME解析

如果是Cloudflare解析,必须关闭小黄云

下载PicGO的魔改版

桌面端: PicList

手机端: PicHoro

根据图示配置, 以手机为例

之后检查配置没有问题后, 设置为默认图床即可使用

创建CloudFlare-ImgBed

进入项目MarSeventh/CloudFlare-ImgBed, Fork项目

创建CF Pages, 选择导入现有git项目, 选择自己刚才fork的项目, 构建命令填写npm install, 点击保存并部署

创建KV, 名字随意

回到项目, 设置绑定添加KV 命名空间->变量名称填写img_url,KV命名空间选择刚才创建好的KV数据库

设置变量添加

变量名
AUTH_CODE web访问密码
BASIC_USER 管理员用户名
BASIC_PASS 管理员密码

然后部署重试部署

接着跟上文一样自定义域名

访问 https://你的域名/systemConfig#upload 进行S3配置, 点击保存

访问https://你的域名/回到主页面, 点击右下角进行功能选择, 请自行探索(其实是懒得写了)

其他配置

回到Backblaze配置页面, 点击生命周期的设置(逆天机翻), 选择只保留了最后版本的文件,
接着点击Update Bucket

点击桶设定, 在桶信息中填写

{"Cache-Control": "public, max-age=31536000"}

31536000表示缓存1年, 可以修改该数字以修改缓存日期

点击更新桶

总结

利用CF Pages访问B2私有桶, 用户再访问CF Pages来进行访问, 并且Cloudflare和B2都加入了宽带联盟, 所以Cloudflare通往B2的流量是免费的, 所以图床可以无限流量使用

配置了缓存规则每日3000次的访问次数对于中小行站点几乎不可能使用完

示例

参考资料:

补充

经过测试, 在桶设定中更改的缓存配置正常用户访问是缓存了的, 但是刷子可以用脚本绕过缓存, 所以必须使用Cloudflare或者其他CDN的缓存配置

但是由于使用zip部署的CF Pages必须关闭小黄云, 所以如果为了防刷, 建议使用CloudFlare-ImgBed项目部署, 接着如图配置缓存规则(记得开小黄云)


36 Likes

感谢分享

2 Likes

谢谢分享

2 Likes

感谢:folded_hands:分享

1 Like

mark

1 Like

B2 免费就 10G 存储吧

1 Like

太强了!感谢大佬教程

2 Likes

非常感谢佬的分享!学习了!

mark 学习一下

在CloudFlare-ImgBed中使用B2的桶好像上传失败了,是需要修改CORS规则吗 :tieba_087:

1 Like

学习学习~

1 Like

所以是两种方式

1 Like

好耶,这就用

1 Like

感谢分享

太强了 :clap:

佬,使用S3无法将文件上传至backblaze,是什么原因呢,配置都是正确的

1 Like

但是你这图片不是linuxdo的图床吗(

他发的图床图片会被L站缓存到L站服务器,然后走L站图床

可以发个链接出来让佬友们自己点去看(

使用B2 CLI认证后运行下面的内容

b2-windows.exe update-bucket 你的桶名称 --corsRules “[{"corsRuleName":"downloadFromAnyOriginWithUpload","allowedOrigins":["*"],"allowedHeaders":["authorization","content-type","x-bz-file-name","x-bz-content-sha1"],"allowedOperations":["b2_download_file_by_id","b2_download_file_by_name","b2_upload_file","b2_upload_part","s3_put","s3_post","s3_get","s3_delete"],"exposeHeaders":["ETag"],"maxAgeSeconds":3600}]”