无需服务器,无限空间,完全免费的图床搭建 (图文教程)

特性

1.无限图片储存数量,你可以上传不限数量的图片

2.无需购买服务器,托管于Cloudflare的网络上,当使用量不超过Cloudflare的免费额度时,完全免费

3.无需购买域名,可以使用Cloudflare Pages提供的*.pages.dev的免费二级域名,同时也支持绑定自定义域名

4.支持图片审查API,可根据需要开启,开启后不良图片将自动屏蔽,不再加载

5.支持后台图片管理,可以对上传的图片进行在线预览,添加白名单,黑名单等操作

如何部署

前提:有 Github 和 Cloudflare账户

手把手教程

  1. Fork这个项目 https://github.com/cf-pages/Telegraph-Image
  2. 打开Cloudflare Dashboard,进入Pages管理页面,选择创建项目,如果在第一步中选择的是fork本仓库,则选择连接到 Git 提供程序,如果第一步中选择的是下载本仓库则选择直接上传

  1. 我们选择默认配置就行,直接开始部署。 等待一小会儿后,就会发现项目已经部署好了~ 部署好后页面就会显示它的地址,这是cf给我们的免费域名。我们点击访问网站。

  1. 按照页面提示输入项目名称,选择需要连接的git仓库(第一步选择的是fork)或是上传刚刚下载的仓库文件(第一步选择的是下载本仓库),点击部署站点即可完成部署。

  2. 就会发现已经有了好看的图片上传页面。

绑定自定义域名

  • 你也可以给这个项目更换你自己的域名。前提是你的域名托管在cloudflare这里。
  • 在pages的自定义域里面,绑定cloudflare中存在的域名,在cloudflare托管的域名,自动会修改dns记录

限制

  1. 由于图片文件实际存储于Telegraph,Telegraph限制上传的图片大小最大为5MB

  2. 由于使用Cloudflare的网络,图片的加载速度在某些地区可能得不到保证

  3. Cloudflare Function免费版每日限制100,000个请求(即上传或是加载图片的总次数不能超过100,000次)如超过可能需要选择购买Cloudflare Function的付费套餐,如开启图片管理功能还会存在KV操作数量的限制,如超过需购买付费套餐

更新日志(管理上传的图片

  • 支持图片管理功能,默认是关闭的,如需开启请部署完成后前往后台依次点击设置->函数->KV 命名空间绑定->编辑绑定->变量名称填写:img_url KV 命名空间 选择你提前创建好的KV储存空间,开启后访问http(s)://你的域名/admin 即可
  1. 在Cloudflare 里选择KV命名空间绑定。创建新的命名空间

  2. 名称是img_url。 我们将其复制。 然后我们在返回设置-函数-KV 命名空间绑定。我们绑定刚刚的空间

    变量名称 KV 命名空间
    img_url 选择提前创建好的KV储存空间
  3. 点击保存
    然后点击环境变量,我们选择新增变量名称,填写你对应的账号和密码即可。

变量名称
BASIC_USER = <后台管理页面登录用户名称>
BASIC_PASS = <后台管理页面登录用户密码>

当然你也可以不设置这两个值,这样访问后台管理页面时将无需验证,直接跳过登录步骤,这一设计使得你可以结 合Cloudflare Access进行使用,实现支持邮件验证码登录,Microsoft账户登录,Github账户登录等功能,能够与你域名上原有的登录方式所集成,无需再次记忆多一组后台的账号密码,添加Cloudflare Access的方式请参考官方文档,注意需要保护路径包括/admin 以及 /api/manage/*

  1. 命名空间和这个环境变量设置好之后,需要重新部署程序。

  1. 重新部署完毕之后,我们访问程序部署的域名/admin 输入用户名和密码就可以进入图床的后台了。

注意:如果重新部署后访问域名/admin打不开,需要重新同步 fork 的项目 或删除原来 fork 的项目再重新 fork 部署一遍即可。

  1. 在图片的后台,你可以看到你上传的图片数量以及可以进行白名单,黑名单和删除操作,如果想复制图片的链接,就在图片上右键复制链接即可。

已经部署后的项目,如何更新?

  • 只需要参照上面的更新内容,先进入到Cloudflare Pages后台,把需要使用的环境变量提前设置好并绑定上KV命名空间,然后去到Github你之前fork过的仓库依次选择Sync fork->Update branch即可,稍等一会,Cloudflare Pages那边检测到你的仓库更新了之后就会自动部署最新的代码了

一些限制:

  • Cloudflare KV每天只有1000次的免费写入额度,每有一张新的图片加载都会占用该写入额度,如果超过该额度,图片管理后台将无法记录新加载的图片

  • 每天最多 100,000 次免费读取操作,图片每加载一次都会占用该额度(在没有缓存的情况下,如果你的域名在Cloudflare开启了缓存,当缓存未命中时才会占用该额度),超过黑白名单等功能可能会失效

  • 每天最多 1,000 次免费删除操作,每有一条图片记录都会占用该额度,超过将无法删除图片记录

  • 每天最多 1,000 次免费列出操作,每打开或刷新一次后台/admin都会占用该额度,超过将进行后台图片管理

  • 绝大多数情况下,该免费额度都基本够用,并且可以稍微超出一点,不是已超出就立马停用,且每项额度单独计算,某项操作超出免费额度后只会停用该项操作,不影响其他的功能,即即便我的免费写入额度用完了,我的读写功能不受影响,图片能够正常加载,只是不能在图片管理后台看到新的图片了。

  • 如果你的免费额度不够用,可以自行向Cloudflare购买Cloudflare Workers的付费版本,每月$5起步,按量收费,没有上述额度限制

  • 另外针对环境变量所做的更改将在下次部署时生效,如更改了环境变量,针对某项功能进行了开启或关闭,请记得重新部署。