
使用GitHub+PicX搭建专用图床(换图床记)
缘起
图床也算是个人博客里面一个必不可缺的东西啦,对于图床的选择各位大佬们也都讲了不少,我这里就不再赘述了,但是图床的稳定性也一直是一个问题,因为服务器问题图片丢失甚至直接停止服务的例子绝对一抓一大把,我当然也是给这种事情做了预案的,所有图片只要我上传到网上了我就一定会在本地留一个备份,这一点在这次换图床的时候真的是帮了大忙。但是我真的没想到我精挑细选出来的图床没的会这么快呀!(谁叫你不想花钱的)我从今年五月份开始就发现了我博客的图片有的时候会变得非常糊,特别是下午和晚上的时候,然后过个几个小时就又好了。我当时觉得没什么大事,就没有去管它。一直到六月底@一暴十寒哥哥给我文章评论里面说我用的图床被ban了^……
被ban了……
啊,图床也会也被ban的嘛?
于是我就决定有时间要去换一个图床,我这件事给写到我的待办事项里了,然后又等了一个月,一直到现在的七月底,我才开始处理这件事情,因为后面也有地方要用大量图片,要是再拖下去的话工作量更大。
俗话说得好,万事开头难,既然一个一个的换图片链接太麻烦,那么我们从哪里开始呢?当然是愉快的找图床啦!
这次我决定不用公共的图床,风险太大。特别是我不想花钱,人家花钱的都有可能出问题呢。于是我就把目光锁定了自建图床上,经过一番搜索,发现目前总共有这么几种自建图床的方案:
- Cloudflare Worker + GitHub 项目 + Cloudflare R2 储存桶
- Cloudflare Worker + GitHub 项目 + telegram
- Github 仓库 + 管理工具(PicX/PicGo)
- 服务器
- 阿里云/腾讯云的解决方案
其中首先服务器方案肯定是最先排除掉的,因为我没有。阿里云腾讯云的方案也排除掉,需要花钱,而且还挺贵的。接下来三个我看过之后决定先排除掉
R2 储存桶的方案,它虽然说有免费额度,而且免费额度也完全够用,但是需要先绑定国外的银行卡或者PayPal,我懒得搞这些。接下来最后两个我里面我选了GitHub仓库这个方案。因为telegram那个方案之前就有一个接口被关掉的先例,导致大家只能用现在这种发给机器人机器人的方法,不太稳定,我还是觉得数据能在自己手里面最好。
OK,那选定之后就可以开搞啦!下面一部分是教程,不感兴趣的话可以直接跳过。
教程
创建GitHub仓库
首先,我们需要使用GitHub仓库作为数据存储源,这就需要你拥有一个GitHub账号,如果你还没有的话可以先去注册一个
进入到账号之后点击自己的头像,选择settings
,划到页面最底部点击developer settings
,再点击Personal access tokens
,这里建议选择tokens (classic)
,Fine-grained tokens
安全性是好一点,但是不知道后面会不会出问题
点击create new token
,下面要输入密码进行确认,接下来就到创建token页面了
!
在Note
这一栏里面填写你给这个token的注释,下面Expiration
这一栏里面选择No Expiration
防止token失效,最后Select scopes
这里把repo
打上勾就好了
点击最下面的create
按钮,就会出现自动生成的token,这个token一定要保存好,只会显示一次
PicX
进入下面这个网站:
进入之后就会看到主界面,点击填写 GitHub Token 登录
,填入你的GitHub Token,点击一键配置
,picx会自动创建一个GitHub仓库作为存储源
加载完之后就可以使用啦!
高级配置
这个地方我本来是想推荐用jsDelivr来提高访问速度的,这个也很多人推,但是jsDelivr这个站点也不是很稳定,我刚搞的时候全程挂着梯子,所以没发现,回来我把梯子摘了才发现这几天我博客的照片一直是时有时无的。
但是如果使用它官方给出的其他选项的话也不太保险。GitHub直连/GitHub Pages就不用说了,绝对是慢的要命,后面给出的三个cdn我觉得也不靠谱,万一有一天他们跑路了不是还又要去换。幸亏依据我的经验,就是如果直接把仓库丢给vercel让他部署的话,后面绑定一个域名,输入文件路径就可以直接访问文件了,于是我就直接把Picx自动生成的仓库给丢给vercel了。
这里具体怎么操作可以参考我之前写的一篇文章:
这篇文章虽然有那么一点点过时了,现在绑定域名的逻辑和文章里面的不一样,但是总体还是大差不差的,可以参考,当然,大佬请忽略。
绑定完域名就可以通过https://your.domain.com/path-to-file.jpg 这样的路径访问资源了,具体在哪参考文件在GitHub仓库里面的位置。
还可以通过图床设置 ==> 图片链接规则配置把你的域名设为默认提供的域名,图片链接类型可以随便选,只要图片链接规则的格式是https://your.domain.com/{{path}}
就行,不要和其他的一样填https://your.domain.com/gh/{{owner}}/{{repo}}@{{branch}}/{{path}}
。
因为Picx是一个开源项目,所以我看了一下它的源码,发现它也可以直接用vercel部署,所以我就又部署了一个Picx的页面,地址是https://picx.yoxo.top ,非常简单,只要在GitHub按个Fork再去velcel按个部署就行了,其实不用绑定域名也可以用的,我搞绑域名单纯是因为我喜欢用自己的域名访问。
换图片链接
那搞完图床之后终于到了最地狱的一步了,放图片的链接。我本来想丢给AI做的,但是想了想,他们连哪个地方应该哪个链接都搞不清楚,想想还是算了吧。这一步的难点主要是我把图片上传到之前那个图床之后还改过一次名,虽然 Markdown 文件的可读性是高了一点,但是这下我连正则表达式都用不了了
那怎么办?手动一个一个复制呗,我从十点钟一直搞到一点半,总共三个半小时,终于是搞完了。幸好两个图片大户长三角旅行手记和 Henry Ⅷ 上传上原来图床的时候都没有改过名,还能用 sublime 内置的替换文字来解决。
OK,那这次换图床记到这里就终于结束了,我已经累得半死了,效果嘛……我这个博客现在不就在用嘛。