框架:Hugo + Stack
这个就是我们用什么来创建博客,这里用的是hugo这个框架,因为我还挺喜欢go语言的,它给我一种优雅的感觉,而且这个还是挺好配置的,我参考了 别人的建站指南 实现了我自己的建站,这个还是挺容易的。Hugo是博客框架,Stack是皮肤,而且这个皮肤适配很多工具,这里只要注意一下环境问题就行了。
评论:twikoo + Mongodb + systemd
这里使用 twikoo实现我的评论区,这玩意说有用吧,又没人给我留言,说没用吧,想想还是整一个,看着顺眼,而且这个的ui是我用了这么多以后感觉这是最好用的。是的,我觉得这个比waline好用多了,那个不知道为啥在我这里非常不可用,评论时延无比慢,不如直接在服务器上面架设twikoo好用。然后本来评论区想着直接用jsonl存就好了,但是在重启的时候会出现错误,查了博客也么找到办法(Hugo生态做的真的很不好),所以转换成用Mongodb来存储了。而为了保证评论服务可以在服务重启后同步恢复,我在systemd注册了一个服务来保证会重启这个评论的服务。
手机:termux + git + obsidian
昨天晚上新想的需求:要是我能躺床上用更新博客就好了,这个第二天实现了,方法其实也还行,把博客推文新建一个github的子模块,用termux来实现拉取,然后用obsidian来写markdown就行了。这里还有个事情,就是一篇文章如果想要被正确识别,需要配置fontmatter,所以就写了一个创建的脚本,在手机上的时候先跑脚本来创建新文章,写完以后push一下就可以了。当然目前手机上面我的实现还是没有实现自动化,后来发现这也是个伪需求,因此作罢。
加密:uv + hugo encryptor
我们需要参考 Github hugo_encryptor以及至关重要的 需要把decrypt.js复制到nginx对应目录下的说明两份文档来执行操作。先把项目 git clone 到博客里面,再把hugo_encryptor/shortcodes/hugo-encryptor.html 复制到 layouts/shortcodes/hugo-encryptor.html 这个位置去。而后在博客根目录下执行编译和加密并把加密后的public文件夹复制到 Nginx 文件夹里面,把解密所需的 decrypt.js 也复制到 Nginx 文件夹里面,这个文件是不变的。最后在文本中使用框框来加密内容即可。
更新:screen + 两个脚本
两个脚本,一个是更新脚本,一个是监控脚本,监控用于监控git版本,有变更时调用监控脚本进行更新。这里其实有很多诸如潜在问题,但是理论上只有我一个用户所以不用考虑并发之类的事情,环境由于加密脚本使用了uv重构所以有个小的环境问题已经被解决了。
图床:picgo + github
这里图床的目的就是不把图片放到服务器上,以免过大,方法就是用图床,这里我选了半天最后用这篇知乎回答里面的方法来实现。
最后更新时间:gitinfo + 脚本读取
之前使用 Hugo 的 enableGitInfo 功能来获取最后修改时间,但由于博客内容存放在 Git 子模块中,Hugo 无法直接从子模块的 Git 仓库获取准确的提交时间。现在的实现方式是:在构建前运行 Python 脚本,脚本会扫描子模块中的所有 Markdown 文件,从子模块的 Git 仓库获取每个文件的最后提交时间,并将结果保存到json文件中。Hugo 构建时读取这个 JSON 文件,从而显示准确的最后更新时间。