虽然网上已经有很多使用Cloudflare R2做图床的博客了,但大多数都是用的PicGo+Cloudflare R2的方案,这种方法虽然也能使用,但是需要在本地安装PicGo软件并进行配置,相对来说,使用起来并不是很方便。今天带来的教程是Cloudflare R2 + Cloudflare Workers的方案,搭建的是网页版图床,这样就可以方便的随时随地使用,即使换了电脑,也不需要重新下载安装PicGo软件,打开网页就可以上传。
有些不知道图床是什么意思的,我这里解释一下。图床实际上就是图片服务器,提供一个上传图片的界面,同时上传后会返回一个能够下载这个图片的链接。有些人用markdown写博客或者在论坛发帖的时候,需要插入图片链接的地方,会用到这个功能。
效果如下
下面就开始讲述安装过程,安装过程也是非常的简单
安装前准备工作
- 首先你应该需要注册好Cloudflare账号,并且已经订阅了Cloudflare R2 (这一步需要绑定支付方式,R2提供了10G的免费存储额度和每个月上千万的免费调用次数,我们利用的就是这个免费的额度)
- 安装环境需要安装了nodejs,版本 >=20
- 安装环境能够访问到github
- 一个域名,可以去注册一个6位数字的xyz后缀域名,一年的价格8元钱。并且设置在Cloudflare进行解析
如果准备工作OK了,下面就可以进行安装过程了
第一步下载源码,并安装依赖
git clone https://github.com/lixiaofei123/image-hosting-cfworkers.git
cd image-hosting-cfworkers
npm install
第二步 创建R2存储童
这个类似于在R2上创建一个目录
node_modules/wrangler/bin/wrangler.js r2 bucket create myimages
这一步会要求登录到Cloudflare授权,具体是会打开一个网页,里面会要求登录并授权。如果你是在本地电脑上运行这个命令的话,这一步一般不会有什么问题。如果你用终端软件远程链接了别的服务器,在别的服务器上操作安装步骤的话,这一步需要按照如下过程操作。 a. 复制命令输出的授权地址,即上面命令会输出一个网页地址,复制这个地址即可(只复制地址,不要退出命令) b. 将这个地址复制到本地浏览器打开,然后根据要求进行登录并授权 c. 授权完毕后,浏览器会跳转到另外一个类似于 http://localhost:8976/oauth/callback/xxxx 这样的地址上,此时浏览器提示无法打开。复制这个无法打开的地址 d. 用终端软件另外打开一个远程服务器新的会话,执行 curl "{上面复制的地址}" ,此时,授权即可成功
这个命令执行成功以后,在Cloudflare的R2管理界面就能看到我们创建的对象存储桶了
修改配置文件
编辑wrangler.toml文件,在末尾有下面几个配置项
我们主要修改的是 PASSWORD和SIGN_KEY这两项,PASSWORD这个是设置图床的密码,SIGN_KEY是签名key,随便设置的复杂一些就行了。R2_DOMAIN根据自己情况来设置,设置了的话,图床返回的地址是R2对象存储的直接访问地址,不设置留空的话,返回的是Workers的地址,两种方式都能访问,自己看情况选择。两种方式的具体区别可以看github.com/lixiaofei12… Readme中的说明
部署并启动
node_modules/wrangler/bin/wrangler.js deploy
最后一步就是部署了,这一步应该不会有什么问题. 虽然workers会给一个默认的域名,这个域名在国内一般都无法访问,因此需要的workers的Workers的 设置 -> 触发器 里进行设置。
第一次打开,会要求输入密码,输入密码就可以上传了。
目前支持三种上传方式。第一种就是普通的点击上传,第二是拖拽上传,第三也是我感觉最方便的粘贴上传。用微信截图工具或者QQ截图工具截图以后,无需保存,直接在上传页面按CTRL+V粘贴既可以上传。
上传后可以点击【复制图片地址】按钮来复制图片的地址,也可以点击左上的二维码图标显示二维码,在手机上打开。非常的方便。