基于 Telegraph 的免费图床

项目来自GitHub
目前有1.6k Fork和1.1k Star

image

可以看项目的README.md操作,也可以看本帖子操作

准备工作

  • 一个GitHub账号 没有也行
  • 一个cloudflare账号
  • 一个域名并且已经托管到cloudflare 没托管也行

打开GitHub登录,找到项目,或者点上面的链接
点击Fork

image

直接Create fork

image

然后到cloudflare,点击Workers 和 Pages

image

点击右边区域的创建应用程序

image

点击pages,然后点击连接到git,授权

image

选择刚才fork的项目,点击开始设置
image
都不用改,点保存并部署

image

如果没有GitHub账号,可以下载下,选择下面的使用直接上传创建,后面的部署都是一样的

image

部署完以后回到Workers 和 Pages
会发现右边多了个项目,自动分配了个.pages.dev的域名

image

这个域名经过测试,不挂代理打不开
所以要自定义域名
点击项目名称,进入后点击自定义域,点击下面的设置自定义域

image

输入自己的域名点击继续
image
如果域名托管到cloudflare,那么会自动帮你添加dns,然后点击激活域
如果是托管到其它,则需要根据提示手动添加,添加完后点击激活域

image

完成后,等待域名生效就行

image

访问自定义的域名

image

上传图片试试

image

如果提示出错了,重新上传就行
点击右边按钮复制路径,右边红色返回按钮,返回上传界面

这时候就有人说了,如果我前面上传的图片要用,但是我没有保存路径怎么办

回到cloudflare,点击KV

image

点击创建命名空间

image
名称自己起,点击添加

image

点击项目的设置里的函数

image

往下拉,找到这个

image

变量名称设置img_url,KV空间填自己刚才设置的,点击保存

image

回到项目,点击最新部署的那次的右边的三个点,选择重新部署

image

打开 自定义的域名/admin
测试时发现上传图片后需要访问一下才能在管理后台显示,不知道是我网速慢还是bug,还是本来就是这样设定的
image

管理后台有了,但是没有设置密码,这样有些不安全,图片链接暴漏了,别人有可能会找到管理地址

回到项目,点到设置>环境变量>编辑变量,添加用户名BASIC_USER和密码BASIC_PASS

image

保存后重新部署一下
再来到管理界面,输入刚才设置的登录账号和密码登录

image

官方文档也写了其它的登录方式

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

根据文档,还能开启图片审查,但是我没有试,感兴趣的可以自己试一下

image

限制

  1. 由于图片文件实际存储于Telegraph,Telegraph限制上传的图片大小最大为5MB
  2. 由于使用Cloudflare的网络,图片的加载速度在某些地区可能得不到保证
  3. Cloudflare Function免费版每日限制100,000个请求(即上传或是加载图片的总次数不能超过100,000次)如超过可能需要选择购买Cloudflare Function的付费套餐,如开启图片管理功能还会存在KV操作数量的限制,如超过需购买付费套餐
    • Cloudflare KV每天只有1000次的免费写入额度,每有一张新的图片加载都会占用该写入额度,如果超过该额度,图片管理后台将无法记录新加载的图片
    • 每天最多 100,000 次免费读取操作,图片每加载一次都会占用该额度(在没有缓存的情况下,如果你的域名在Cloudflare开启了缓存,当缓存未命中时才会占用该额度),超过黑白名单等功能可能会失效
    • 每天最多 1,000 次免费删除操作,每有一条图片记录都会占用该额度,超过将无法删除图片记录
    • 每天最多 1,000 次免费列出操作,每打开或刷新一次后台/admin都会占用该额度,超过将进行后台图片管理
    • 绝大多数情况下,该免费额度都基本够用,并且可以稍微超出一点,不是已超出就立马停用,且每项额度单独计算,某项操作超出免费额度后只会停用该项操作,不影响其他的功能,即即便我的免费写入额度用完了,我的读写功能不受影响,图片能够正常加载,只是不能在图片管理后台看到新的图片了。
    • 如果你的免费额度不够用,可以自行向Cloudflare购买Cloudflare Workers的付费版本,每月$5起步,按量收费,没有上述额度限制
    • 另外针对环境变量所做的更改将在下次部署时生效,如更改了环境变量,针对某项功能进行了开启或关闭,请记得重新部署。