基于 Telegraph 的免费图床
项目来自GitHub
目前有1.6k Fork和1.1k Star
可以看项目的README.md操作,也可以看本帖子操作
准备工作
- 一个GitHub账号
没有也行 - 一个cloudflare账号
- 一个域名并且已经托管到cloudflare
没托管也行
打开GitHub登录,找到项目,或者点上面的链接
点击Fork
直接Create fork
然后到cloudflare,点击Workers 和 Pages
点击右边区域的创建应用程序
点击pages,然后点击连接到git,授权
选择刚才fork的项目,点击开始设置
都不用改,点保存并部署
如果没有GitHub账号,可以下载下,选择下面的使用直接上传创建
,后面的部署都是一样的
部署完以后回到Workers 和 Pages
会发现右边多了个项目,自动分配了个.pages.dev的域名
这个域名经过测试,不挂代理打不开
所以要自定义域名
点击项目名称,进入后点击自定义域,点击下面的设置自定义域
输入自己的域名点击继续
如果域名托管到cloudflare,那么会自动帮你添加dns,然后点击激活域
如果是托管到其它,则需要根据提示手动添加,添加完后点击激活域
完成后,等待域名生效就行
访问自定义的域名
上传图片试试
如果提示出错了,重新上传就行
点击右边按钮复制路径,右边红色返回按钮,返回上传界面
这时候就有人说了,如果我前面上传的图片要用,但是我没有保存路径怎么办
回到cloudflare,点击KV
点击创建命名空间
名称自己起,点击添加
点击项目的设置里的函数
往下拉,找到这个
变量名称设置img_url
,KV空间填自己刚才设置的,点击保存
回到项目,点击最新部署的那次的右边的三个点,选择重新部署
打开 自定义的域名/admin
测试时发现上传图片后需要访问一下才能在管理后台显示,不知道是我网速慢还是bug,还是本来就是这样设定的
管理后台有了,但是没有设置密码,这样有些不安全,图片链接暴漏了,别人有可能会找到管理地址
回到项目,点到设置>环境变量>编辑变量,添加用户名BASIC_USER
和密码BASIC_PASS
保存后重新部署一下
再来到管理界面,输入刚才设置的登录账号和密码登录
官方文档也写了其它的登录方式
当然你也可以不设置这两个值,这样访问后台管理页面时将无需验证,直接跳过登录步骤,这一设计使得你可以结合Cloudflare Access进行使用,实现支持邮件验证码登录,Microsoft账户登录,Github账户登录等功能,能够与你域名上原有的登录方式所集成,无需再次记忆多一组后台的账号密码,添加Cloudflare Access的方式请参考官方文档,注意需要保护路径包括/admin 以及 /api/manage/*
根据文档,还能开启图片审查,但是我没有试,感兴趣的可以自己试一下
限制
- 由于图片文件实际存储于Telegraph,Telegraph限制上传的图片大小最大为5MB
- 由于使用Cloudflare的网络,图片的加载速度在某些地区可能得不到保证
- Cloudflare Function免费版每日限制100,000个请求(即上传或是加载图片的总次数不能超过100,000次)如超过可能需要选择购买Cloudflare Function的付费套餐,如开启图片管理功能还会存在KV操作数量的限制,如超过需购买付费套餐
- Cloudflare KV每天只有1000次的免费写入额度,每有一张新的图片加载都会占用该写入额度,如果超过该额度,图片管理后台将无法记录新加载的图片
- 每天最多 100,000 次免费读取操作,图片每加载一次都会占用该额度(在没有缓存的情况下,如果你的域名在Cloudflare开启了缓存,当缓存未命中时才会占用该额度),超过黑白名单等功能可能会失效
- 每天最多 1,000 次免费删除操作,每有一条图片记录都会占用该额度,超过将无法删除图片记录
- 每天最多 1,000 次免费列出操作,每打开或刷新一次后台/admin都会占用该额度,超过将进行后台图片管理
- 绝大多数情况下,该免费额度都基本够用,并且可以稍微超出一点,不是已超出就立马停用,且每项额度单独计算,某项操作超出免费额度后只会停用该项操作,不影响其他的功能,即即便我的免费写入额度用完了,我的读写功能不受影响,图片能够正常加载,只是不能在图片管理后台看到新的图片了。
- 如果你的免费额度不够用,可以自行向Cloudflare购买Cloudflare Workers的付费版本,每月$5起步,按量收费,没有上述额度限制
- 另外针对环境变量所做的更改将在下次部署时生效,如更改了环境变量,针对某项功能进行了开启或关闭,请记得重新部署。
-
Telegraph
-
图床
-
cloudflare
现在用的是picgo这个简单
大佬