个人 Blog 托管方案
1. 背景
随着公众号推送、短视频等新业态媒体的兴起,传统内容输出型博客已然日渐式微。不过考虑到文字输出的效率、对内容的自主版权以及搜索引擎的索引等等,博客仍然有其不可替代之处。
笔者仍然相信,基于文字输出的博客相对于视频有更高的信息熵、更好的阅读体验,以及在 “没有记忆” 的互联网中可以将个人的知识和经验积累予以有效保存。这不仅是一种个人备忘的方式,也是所谓 “互联网精神” 的延续。
下面总结一下个人 Blog 的托管方案,以期抛砖引玉。
2. 系统选型
2.1. 静态博客
纯前端实现,一般在本地或部署平台上将源码编译为前端页面并托管,比如成熟的博客框架 hexo、hugo 等。优点是部署灵活成本低廉、部署无需服务器因此不存在网络攻击与数据安全问题;缺点是具有一定上手难度、缺少图形化后台管理、功能丰富性不如动态博客、文章跨设备编辑相对不便等。
2.2. 动态博客
拥有后端支持的博客系统,具有丰富的功能和前后端插件支持,比如著名的 CMS 引擎 WordPress 等。优点是功能强大,易于上手、数据管理和文章写作容易;缺点是部署需要服务器并需要定期维护更新引擎、存在被攻击风险,另外部署维护成本也相对较高。
2.3. 个人选型
个人对博客系统有如下要求:
- 部署成本低,维护简单,即使长期不维护也不易掉线 / 丢失
- 支持 Markdown 写作
- 便于跨设备阅读 / 编辑
- 最重要的是内容输出,其他辅助功能可有可无
综合考虑,最终选择了静态博客引擎 Hexo 作为博客框架,主要看中其强大的插件生态,以及支持 Serverless 部署的能力。
3. 架构设计
- 部署:使用 Cloudflare Pages 部署 Hexo 框架,Serverless 部署无需操心服务器和维护问题,极小的网络攻击风险,自动解决 HTTPS,无需操心备案,网站无需维护也可以长期保持在线
- 数据管理
- 文章储存于 GitHub 仓库,使用 Git 进行版本管理,拥有完善的历史管理功能
- GitHub 仓库可以无缝对接 Cloudflare Pages 一键部署,心智负担较小
- GitHub 仓库数据持久性好,即使发生极端情况也拥有本地 Git 仓库副本,不致于丢失数据
- 文章写作:写作在本地 Git 仓库中使用 Markdown 编辑器写作,写作完成后推送到远程仓库,Cloudflare Pages 会自动部署最新版本文章上线,全程无需人工干预十分省心
- 图床:使用 Cloudflare R2 对象储存,在本地使用 PicGo/PicList 上传图片到图床,获取公开链接后插入到 Markdown 中
- 评论区:使用 Fluid 主题自带的 giscus 插件实现,将 GitHub Discussion 变为博文评论区
4. 主题推荐
Hexo 框架拥有众多美观且好用的主题,下面作一些推荐:
- Fluid - :ocean: 一款 Material Design 风格的 Hexo 主题 / An elegant Material-Design theme for Hexo
- NexT: Elegant and powerful theme for Hexo.
- Matery: A beautiful hexo blog theme with material design and responsive design. 一个基于 Material Design 和响应式设计而成的全面、美观的 Hexo 主题
更多主题,请前往 Hexo 官方主题页面:Themes | Hexo 自行挑选
5. 插件推荐
推荐一些 hexo 博客使用的插件推荐,可以有效提高生活质量:
- hexo-abbrlink:为每篇博文生成唯一数字序号 URL
- hexo-all-minifier:博客静态资源压缩优化插件,提高网页加载性能
- hexo-directory-category:根据项目目录结构自动为博文设置
分类 - hexo-filter-date-from-git:根据 git 提交记录生成文章的创建时间 & 修改时间信息
- hexo-filter-link-post:允许使用相对链接引用其他文章
- hexo-heading-index:自动为文章标题生成序号
- hexo-url-submission:文章更新后自动提交 URL 到搜索引擎索引
6. 评论区
本博客评论区使用 giscus 实现,将 GitHub 仓库的 Discussion 转化为每篇文章的评论区,这样就不需要托管单独的评论数据服务器了
7. TODO
简述搭建步骤、常见坑等
个人 Blog 托管方案
https://blog.openyq.top/posts/65274/