仓库源文站点原文


layout: post title: Mayx的博客分发方案

tags: [Mayx, Github, Gitlab, 分发]

无论什么资料,都有保存的价值!<!--more-->

起因

在今年年初,Github封禁了我的博客,因此我也对Github失去了信任。之前因为信任的关系,我几乎不会在其他地方备份我的博客,发生了这种事情之后我才明白这并不可靠,虽然我有时候会把我的博客整站隔段时间手动下载下来,但是这样实时性不高。其实我也不是不会做自动化方案,只是因为懒,就像这篇文章一样,分发我在上个月就已经完成了,现在才在这里写文章……

方案

去年我在研究博客平台的时候已经调查过很多放静态站的平台了,所以这次进行分发的时候有了之前的经验,也简单了不少。

源代码托管平台的选择

因为Github不可信,于是我自然想到了用Gitlab来存放博客源代码。虽然吧Gitlab曾经也发生过用户数据丢失的问题,不过反正目标也是同时放在Github和Gitlab上,总不至于两个一起炸吧。其实最开始我的计划是用Github Actions进行同步,不过在我进行调查之后我发现Gitlab功能还是挺强大的,它支持对一个Git仓库进行自动的推送和拉取,也不需要做过多的配置,就只需要配置个地址和令牌就可以,还是挺方便的。
在我做完Github与Gitlab双向同步之后,我发现Gitlab还挺好用的,首先,Gitlab有个很棒的地方就是没被墙,我有时候写文章的时候不挂梯子用Github真的是非常难受,目前依我所感受,防火长城会对Github先进行一下TCP RST,然后刷新一下让你连上,连上之后如果长连接断开或者大概5分钟的样子就再阻断,然后再RST一波,非常的挑战心态。有时候我写了半天然后点预览结果就阻断,等半天还是连不上,还要挂梯子,能预览的时候就得赶紧提交,万一提交的时候再阻断要是没备份就炸了。像Gitlab我就从来没遇到过类似的情况,这一点还是很不错的,大概是因为Gitlab不是社区,而且滥用的人也少,所以政府也不太关系吧。
另外就是Web IDE,相比Github的VSCode Web IDE,Gitlab的要轻量很多了,也不容易发生卡的情况,而且其实Github的VSCode Web IDE也装不了几个插件,功能上也没强到哪去。
还有就是翻译,明明用Github的中国人/华人挺多的,官方就是不出中文界面,明明文档都有中文了……Gitlab可能是因为作为一个开源产品,i18n做的很好,虽然吧英文也不影响我使用,但是毕竟作为用户体验的一项,Gitlab做的确实更好。
不过其实我觉得Gitlab也许只是表面没那么出名,毕竟不是做社区的,大多数公司都用的是自建Gitlab托管代码,而且很多时候Github其实是在抄Gitlab的(虽然最早是Gitlab抄Github),比如Actions抄CI/CD,还有最近又出的一堆什么代码扫描和检查,Gitlab出现的都更早。不过这说着也跑题了这个文章又不是为了专门夸Gitlab的😂。

部署平台的选择

源代码平台整完之后就是部署平台了,除了Github和Gitlab上自己的Pages上各部署了一份,另外我也在Cloudflare Pages和Vercel上面也设置了部署,以后我也可能增加更多的部署和备份平台,具体目前可以参考代理列表
在部署的时候目前我也增加了一些新的东西,比如下载全站的按钮,原来我是想把源代码和生成后的代码合到一起下载,不过没想到Cloudflare Pages竟然不能上传超过25MiB的文件,所以没办法,我只好光放下载全站的按钮。不过我也有做判断,如果是Github生成的代码,会放Github的下载链接,因为Github Pages生成没办法使用脚本,也没法打包全站代码,其他部署因为支持的多所以我就写了一个脚本来进行打包,一是方便在Wayback Machine保存我的全站代码,二是希望能通过这种方式让有兴趣的人帮助我来备份我的博客。
另外为什么是生成后的代码呢?因为如果用源代码要考虑很多依赖的项目会不会炸,比如Ruby、Jekyll、还有各种插件和模板,如果未来的某个时候它们其中有一个炸了,那么感兴趣的人就没办法再构建我的博客了。
在此之后也算是激发了我对博客代码修改的灵感,比如我改了下博客分页器,现在就没那么凌乱,使用select标签就更加简洁了。

未来的方案

之后我会想办法在Blogger之类的平台整个自动化发布脚本,还有就是上链啥的,不过上ETH这种公链的成本实在是太高了,我要是想把我的博客全部上传到公链上估计得要上百万CNY了吧……而且也没法编辑,回头看看能不能整个分布式社区,让大家的独立博客互相备份。另外这也是我之后想做的计划的一部分,我想整一个开放的匿名解决方案,比如整一个“OpenAnonymous”的项目,分布式在一定程度上能大幅提高追踪成本,其实在社会中就像谣言一样,为什么说“造谣一张嘴,辟谣跑断腿”?其实也是因为分布式的特性,对于已经散播的信息很难溯源,也很难制止。
总之希望作为Mayx Forever Project的载体——Mayx的博客能在我有生之年想出合理的方案,存在1000年吧!

补充

刚才在Gitlab上发布了文章之后我不知道Github Pages这里又犯什么神经病,没有给我构建,所以我又想到了些东西在这里补充一下:
Github Pages还有个地方让我比较难受,那就是Github Pages的默认域名在有些运营商会被屏蔽,我不知道是DNS的问题还是啥,总之这样我有时候发文章之后其他人就看不到了,所以现在我以后常用的域名也打算改了,我目前决定使用 https://mayx.eu.org ,好听也好记。
另外还有个比较难受的地方就是我的博客目前用的评论系统是Gitalk,这个是依赖Github的,之前评论全炸这个我也是非常难受,我之后再想想办法改一下评论系统吧。