记Hexo迁移至Halo

为什么突然又想换了?

因为发布文章很麻烦,虽然我也没写多少东西吧。

博客最开始用的是 WordPress,因为服务器续费太贵,而且那玩意对服务器性能还有些要求,快到期了不想续费,也就搬到了 Hexo,可以完全不用服务器,直接托管到 Github Page 上,但后来因为访问速度太慢了,最终还是选购了一台服务器来放 Hexo 的静态页面。

这多少有点浪费了。

于是后来在服务器上装了很多别的网页程序,比如图床、Wiki 啥的,最后都因完全用不上,就停掉了。

腾讯云买的轻量服务器,虽然之前是只买了一年,但几乎每年的双十一活动都会给个优惠续费的途径,于是这台服务器从 2021 年购买,每年续费一次,现在直接给续费到了 2026 年了。

其实在正式迁移到 Hexo 开始,一直都觉得 Hexo 实在是麻烦,Hexo 必须要有电脑才能更新文章,一些模拟出一个后台的插件用起来也不是很顺手,而且之前一篇文章中写到的那个 Hexo 移动版也停止更新了。

所以想找个好用点的博客程序替换掉 Hexo,而且说实话 MarkDown 在我这里已经不是很重要了。

很早之前就注意到了 Halo,当时稍微体验了一下,觉得不太好用,觉得不好用的具体原因,我也记不清楚了。现在它出了 2.0,可以 Docker 部署,社区好像还比较活跃,至少我看到作者本人经常在社区里回答问题。

这次直接在云服务器里 Docker 安装了这个 Halo,试用了一下,感觉还可以,就直接把之前 Hexo 里的内容全部搬过来了。

Halo 的内存占用也不是很多,至少我这个性能很差的服务器也可以正常运行。而最关键的是,这个 Fludi 主题也有 Halo 的移植版本,安装好后直接可视化设置,比 Hexo 那边要用文本编辑舒服多了。

跟之前那篇文章一样,说一下坏处和好处吧。

对比之前 Haxo

好处

  • 可以直接在线编辑了

终于没有了不能随时编辑文章的烦恼了,还能随时写随时发布。

  • Docker部署

能 Docker 部署的话就简单很多了,更何况实际上用的是 Docker Compose,只要 Docker Compose 文件和用 -v 参数映射出来的文件夹没有丢失,博客出了问题或者换服务器了就可以随时一键重新安装。

  • 插件挺多,有折腾的空间

比如之前搭建了一个图床,但实际上我很少用到图床,一篇文章即便很长几千字,插入进去的图片可能最多也就五张,而图床程序在服务器里占用的资源却很多。Halo 里我看到貌似有个直接接入对象存储的插件,后面有时间研究一下,或许可以实现直接在文章编辑的时候上传图片到对象存储里?

  • 域名可以不写在配置文件里

这一点可太酷了,我后台的 Docker 映射出来的地址直接可以是 localhost:5555,然后直接用 Nginx 反代出去,也就实现了可以多个域名直接访问进同一个 Halo 里,我这个博客可以绑定很多个域名,而所有的域名实际上都指向同一个地址,而且不会因为域名更换了导致样式加载不出来、图片加载不出来等一系列问题。

这对我有什么帮助呢?我博客用了两个域名运作,一个用 CloudFlare 加速,一个用国内的 CDN 加速,放在以前我其实是搞了两个 Hexo 地址来实现这个,现在只需要一个就行了。

也许是坏处

  • 需要一台服务器

目前我能想到的也就只有这一个坏处,现阶段腾讯云买的这台服务器基本上每年双十一都能有一次低价续费的机会,但不代表后面这个机会还能有,等快到期了的时候再看吧,再不济 Halo 也有静态部署的插件,整出静态文件先在 Github Page 上放一阵子也行。

其实说实话博客空闲了这么久,并不是我没东西写,而是懒得写。

每天的想法挺多,想做的事挺多,想记录的事情也挺多。

但就是懒得写,即便是草稿都打好了,也懒得去完善。

反正这个博客我暂时也没有关掉的想法,就一直开着吧。

另附上一段我对 Fluid 主题的一个小修改:

# /themes/theme-fluid/templates/post.html

  <header th:with="banner_img= ${theme.config.post.banner_img},
  banner_mask_alpha=${theme.config.post.banner_mask_alpha},
  _title=${post.spec.title}">
    <div class="header-inner" th:style="|height: ${banner_img_height}vh;|">
      <th:block th:replace="~{'modules/header/navigation'}" />
      <th:block th:replace="~{'modules/header/banner-post'}" />
    </div>
  </header>

这个修改的目的是为了让文章设置了封面图并且文章内也有图片的情况下,让文章页面内的 Banner 头图继续以设置中的为准。当然这段代码不是我写的,是我把 post.html 文件复制给 AI,让 AI 帮我改的。


记Hexo迁移至Halo
https://vi.diipx.com/2024/Hexo-Halo
作者
晚空
发布于
2024年11月14日
许可协议