Hexo + GitHub Pages 搭建个人博客

基于 Hexo 框架和 Fluid 主题搭建静态博客,并部署在 GitHub Pages 上。

写博客的原因

人脑善于思考,但不擅长记忆。

智慧能够创造知识,但不能将知识长久的保存。

因此文字的发明才如此重要,因为从此人们就能专注于思考,专注于创造新的知识。而由文字来负责知识的保存、分享和继承。

把能够背诵许多诗词的孩子称为“聪明”,但充其量只是培养一个“数据库”而言。“数据库”不能思考,不能创造新的知识。

有意思的是,目前的AI大模型也严重缺乏长时间的记忆能力,需要人们给它适配各种“知识库”、“上下文”。

人类难道要抛弃目前“最优秀”的思考能力,去和计算机卷“数据库”的位置吗?

要写的东西

  1. 知识的整理,方便回顾。
  2. 思考的记录。
  3. 脑洞、感想。

写博客的要求

  1. 必须要能够给别人看,能够分享、传递的东西才是有生命的东西。
  2. 应该能在多个设备上写博客,而非一定在电脑上。
  3. 文章应易于书写和渲染。
  4. 最好能够实时预览博客渲染的效果。
  5. 不应该浪费太多时间在搭建博客网站上。
  6. 没有审查。

博客搭建准备

搭建个人博客一般需要这些:

  • 文章。
  • 博客框架。用于渲染博客网页。
  • 服务器。提供 Web 服务。

按照不应该浪费太多时间在搭建博客网站上的要求,选择:

  • 文章格式选择 Markdown 文档。
  • 支持 Markdown 文档的静态博客框架,有丰富的主题,能开箱即用。
  • 博客部署在 Github Pages 上,其提供免费的静态网页托管服务。

这里选择 Hexo 作为博客框架,并使用 Fluid 主题,只需少量的配置,就能得到一个美观且功能全面的博客。

手机上可以通过在 github 仓库内上传/修改 markdown 文件来上传/修改博客文章。每次 commit 后,Github Pages 会重新渲染博客。

开始搭建

安装必要软件

对于 Archlinux 运行以下命令。

sudo pacman -S nodejs git
sudo npm install -g hexo-cli

详细请查看官方的 Hexo文档 Installation

建立博客网站

运行这些命令来创建一个 hexo 博客。

hexo init <folder>
cd <folder>
npm install

运行以下命令并打开 http://localhost:4000/ 即可预览博客网站:

hexo generate
hexo server

详细请查看Hexo文档 Setup。

安装博客主题

推荐 fluid 开箱即用。只需简单的配置便能得到一个美观且功能全面的博客。

运行下面命令来安装 fluid 主题。

npm install --save hexo-theme-fluid
cp node_modules/hexo-theme-fluid/_config.yml _config.fluid.yml

在 _config.yml 中将主题设置为 fluid。

theme: fluid  # 指定主题
language: zh-CN  # 指定语言,会影响主题显示的语言,按需修改

首次使用主题的「关于页」需要手动创建:

hexo new page about

创建成功后,编辑博客目录下 source/about/index.md,添加 layout 属性。

修改后的文件示例如下:

---
title: about
layout: about
---

这里写关于页的正文,支持 Markdown, HTML

之后运行以下命令并打开http://localhost:4000/,来预览fluid主题:

hexo clean
hexo g
hexo s

安装指南详细见 fluid 快速开始。

卸载默认主题

不需要默认主题,可以运行下面命令来卸载:

npm uninstall hexo-theme-landscape --save
rm _config.landscape.yml

个性化设置

博客已经搭建完成,但个人信息都是默认的,一些配置也需要修改。

Hexo 博客配置

修改 _config.yml 文件。这里只显示修改了的部分:

config.yml
# Site title: Lying Fish 的博客 subtitle: Lying Fish 的博客 description: (╯°□°)╯不要偷懒 author: Lying Fish language: zh-CN timezone: "Asia/Shanghai" # URL url: https://alyingfish.github.io/ root: / permalink: /posts/:title/ # Writing post_asset_folder: true marked: prependRoot: true postAsset: true # Extensions theme: fluid

再为 scaffolds/post.md 添加:

  • category,分类
  • tag,标签
  • index_img,缩略图
  • banner_img,文章顶部大图
  • 摘要,<!-- more --> 上面的内容。
---
title: {{ title }}
date: {{ date }}
categories:
tags:
index_img:
banner_img:
---
这是摘要,最多显示三行。
<!-- more -->

fluid主题配置

主题配置详细请查看 Hexo Fluid 用户手册-配置指南

修改 _config.fluid.yml 文件。这里只显示修改了的部分:

code:
  highlight:
    line_number: false
    highlightjs:
      # 在链接中挑选 style 填入
      # Select a style in the link
      # See: https://highlightjs.org/demo/
      style: "github"
      style_dark: "github-dark-dimmed"

navbar:
  # 导航栏左侧的标题,为空则按 hexo config 中 `title` 显示
  # The title on the left side of the navigation bar. If empty, it is based on `title` in hexo config
  blog_title: "Lying Fish"

footer:
  statistics:
    enable: true

index:
  banner_img: /img/default.jpg
  slogan:
    text: "最短的捷径就是绕远路"

post:
  banner_img: /img/default.jpg
  footnote:
    header: '<h2>参考</h2>'

archive:
  banner_img: /img/archive.jpg

category:
  banner_img: /img/category.jpg

tag:
  banner_img: /img/tag.jpg

about:
  banner_img: /img/about.jpg
  avatar: /img/my-avatar.png
  name: "Lying Fish"
  intro: "不会游泳"
  icons:
    - { class: "iconfont icon-github-fill", link: "https://github.com/alyingfish", tip: "GitHub" }

配置中 /img/*.jpg 的图片需要手动添加到博客目录下的 source/img/ 目录中,否则会使用主题默认的图片。

这个博客的页面顶部大图均来自艺术家 Artem Chebokha

部署到GitHub Pages

详细请查看 Hexo 部署指南。

按指南创建一个 .github/workflows/pages.yml 文件,并将指南中的内容粘贴进去,记得修改nodejs 版本号。

这个文件的作用是配置 GitHub Actions 来自动部署到 GitHub Pages。

确认 .gitignore 文件是否包含 Public/ 目录,如无需手动添加,里面是生成的静态资源文件。.gitignore 应已带了:

.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
_multiconfig.yml

之后在 Github 上创建一个 <username>.github.io 的仓库。运行下面命令来把本地博客仓库同步到 Github:

git init
git add .
git commit -m "first commit"
git branch -M main  # 更改当前branch名字为main
git remote add origin git@github.com:<username>/<username>.github.io.git # 替换 <username> 为 github 账户名
git push -u origin main

最后在 GitHub 下的博客仓库设置:Settings -> Pages -> Build and deployment -> Source 为 GitHub Actions。

之后每次 commit,GitHub Actions 都会自动运行部署脚本,渲染静态网页并部署到 GitHub Pages。

确认 github pages 部署完成后,访问 https://<username>.github.io/ 即可看到博客。

启用评论插件

在 _config.fluid.yml 中配置评论插件:

post:
  comments:
    enable: true
    type: giscus

giscus:
  repo: <username>/<username>.github.io
  repo-id: # 填入 Giscus 生成的参数
  category: Announcements
  category-id: # 填入 Giscus 生成的参数
  theme-light: light
  theme-dark: dark_dimmed
  mapping: pathname
  reactions-enabled: 1
  emit-metadata: 0
  input-position: top
  lang: zh-CN

这里使用 Giscus作为评论插件。开源、免费、无广且数据都在 Github 上。

giscus 基于 Github Discussions,因此和基于 Issues 的评论插件不同,支持嵌套回复。

缺点是回复必需要认证 GitHub 账号。

配置并启用Giscus

要启用 Giscus,对应的博客仓库要启用 Discussions 功能,并安装 giscus app。

查阅 Github文档以了解如何启用 Discussions。

同样,查看 giscus app页面 并点击安装安装,Repository access 选择对应的博客仓库即可。

在 giscus主页 确认仓库符合要求,并完成剩下的设定。

最后,得到输出的 <script> 后,将其中对应的内容填写到上面的 fluid 的 giscus 配置中。

启用LaTeX数学公式

如何启用 LaTeX\LaTeX 数学公式,请查阅 Hexo Fluid 用户手册-LaTex数学公式。

为能够同时使用 markdown 的图片引用语法——![](foo/bar.jpg),这里选择 hexo-renderer-markdown-it + katex。

关于如何使用使用 ![](foo/bar.jpg) 来引用图片(编辑器可以预览图片,同时Hexo能够正确渲染图片),可见这篇博文

公式测试:

行内公式:Tn=2Tn−1+1=2(2n−1−1)+1=2n−1T_n = 2T_{n-1} + 1 = 2(2^{n-1} - 1) + 1 = 2^n - 1

独立公式:

S=∏k=0m1−pkak+11−pkS = \prod_{k=0}^{m} \frac {1 - p_k^{a_{k+1}}} {1-p_k}

使用 Tag 插件

fluid 主题自带一些便签插件,相比单纯的引用 > 要更美观些,见 Tag 插件。

在 markdown 中加入如下的代码来使用便签:

{% note success %}
文字 或者 `markdown` 均可
{% endnote %}

或者使用 HTML 形式:

<p class="note note-primary">标签</p>

可选便签有:primary, secondary, success, danger, warning, info, light

fluid 主题的便签,里面的超链接文字颜色设定成了文本的颜色,我喜欢更有区分度。

在 fluid 主题 Tag 的 css 文件 hexo-theme-fluid/source/css/_pages/_post/post-tag.styl 中,将对应的一行注释掉:

// note
.note
  a
    // color var(--text-color)

Hexo + GitHub Pages 搭建个人博客
https://alyingfish.github.io/posts/blog-build/
作者
Lying Fish
发布于
2025年7月18日
许可协议