本文用于记录本人搭建 Hexo 博客的完整过程,侧重实际操作中的取舍与踩坑经验。
本文并非新手入门教程,也不会覆盖所有可选方案。目前已有大量成熟的搭建教程,且不同环境、主题与插件组合并不存在唯一解。
写作目的仅为对个人搭建流程进行归档,供后续维护与环境迁移时参考。
为什么选用Hexo?
Hexo 是一个快速、简洁且高效的静态博客框架,基于 Node.js 运行。其核心特性是使用 Markdown(或其他标记语言)编写内容,并在极短时间内生成完整的静态网页。
相比动态博客系统,Hexo 在部署成本、运行性能以及可控性方面具有明显优势。同时,其社区生态成熟,拥有大量高质量主题与插件,能够在保持性能的前提下实现高度定制化,因此最终选择 Hexo 作为博客框架。
安装 Hexo
本地环境已预先安装 Node.js 与 Git,因此不再赘述相关安装过程。
需要注意的是,不同版本的 Hexo 对 Node.js 版本存在兼容性要求,实际使用前应确认当前 Node.js 版本符合官方文档说明。
博客使用 VS Code 进行本地开发、构建与调试。
基本流程如下:
- 新建文件夹作为博客根目录
- 在终端中通过 npm 安装 Hexo CLI
1 | npm install hexo-cli -g |
使用初始化命令,初始化仓库
1 | hexo init |
至此,一个基础的 Hexo 项目已创建完成。
安装并配置主题
完成 Hexo 初始化后,选择合适的主题并安装至 themes 目录中。
除 Hexo 官方主题库外,GitHub 上也存在大量由社区维护的高质量主题。本博客选用的是 Reimu 主题:
1 | cd themes |
主题的完整配置项与说明已由作者在文档中详细给出,本文仅记录配置过程中个人遇到问题的部分。
配置评论插件
评论系统这里我只要选择使用了 waline
请参考其官方文档完成LeanCloud 的配置,并在内层 _config.yml 中将 waline.enable 改为 true,并填入对应的 serverURL
要注意,Waline 官方文档中关于 Vercel 部署的部分截图存在一定滞后,但整体流程与思路仍然是正确的,配置过程中跟官方文档图片不一致属于正常情况。
-
创建 LeanCloud 应用
使用免费开发版即可。建议选择国际版,国内版通常需要备案域名与独立IP。

进入应用,选择左下角的设置>应用 Key。可以看到APP ID,APP Key和Master Key。记录它们,以便后续使用.

-
部署 Vercel服务器
TIP
如果未登录的话,Vercel 会让你注册或登录,请使用 GitHub 账户进行快捷登录。
输入一个你喜欢的 Vercel 项目名称并点击 Create 继续
此链接会基于Waline模版直接完成新建和初始化仓库,仓库名为输入的项目名
点击顶部的 Settings - Environment Variables 进入环境变量配置页,并配置三个环境变量 LEAN_ID, LEAN_KEY 和 LEAN_MASTER_KEY 。它们的值分别对应上一步在 LeanCloud 中获得的 APP ID, APP KEY, Master Key。

IMPORTANT
这里的环境变量配置页面,一定是项目的Setting里面
环境变量配置完成之后点击顶部的 Deployments 点击顶部最新的一次部署右侧的 Redeploy 按钮进行重新部署。该步骤是为了让刚才设置的环境变量生效。
此时会跳转到 Overview 界面开始部署,等待片刻后 STATUS 会变成 Ready。此时请点击 Visit ,即可跳转到部署好的网站地址,此地址即为你的服务端地址(但是这个跟填入配置文件的url还不是同一个)
这里我填的是域名 Domains 的地址

部署完成后,请访问 <serverURL>/ui/register 进行注册。首个注册的人会被设定成管理员。
- 绑定域名(可选)
点击上图红色方框中的加号 跳转设置界面
点击Add Domain添加域名

之后会出现这个 按照里面给的信息去域名服务商解析DNS即可(图中域名自定义)

1 | waline: |
配置搜索插件
搜索插件选择使用 Algolia,先去安装 @reimujs/hexo-algoliasearch
1 | npm install @reimujs/hexo-algoliasearch --save |
进入 Algolia 官网注册账号 为了方便都是使用github快捷登录
进入控制面板
新建一个application

回到控制面板 你的首页应该会有key 但没关系 先去建立index索引

现在去查看API Keys 保存并填入配置文件


在外层 _config.yml 中添加如下配置
1 | #搜索 |
在内层 _config.yml 中将 algolia_search.enable 改为 true
1 | algolia_search: |
主题个性化调整
完整主题使用说明可参考官方文档。此处仅记录部分高频修改项与实际使用中遇到的问题。
头像
在 source/_data/avatar/ 中
封面
封面显示逻辑如下
如果文章的 Front matter 中包含 cover 的 url,则该文章头图和首页缩略图均显示该 url
1 |
|
如果文章的 Front matter 中包含 cover 为false,则该文章不显示头图(首页上仍然是随机图片)
1 |
|
如果文章的 Front matter 中包含 cover 为rgb(xxx,xxx,xxx),则该文章头图为对应的渐变纯色(首页上仍然是随机图片)
1 |
|
否则查找 covers 文件夹和 covers.yml,并从中随机挑选图片
若上述文件均不存在,则显示头图
头图
头图保存于 themes/reimu/source/images/banner.webp,可在内层 _config.yml中修改
1 | banner: "/images/banner.webp" |
favicon 图标
favicon 保存于 themes/reimu/source/images/favicon.ico,可在内层 _config.yml中修改
1 | favicon: "/images/favicon.ico" |
IMPORTANT
图片进行了格式的压缩转换 可以提高网页加载的速度
同时对banner图使用ps进行不同分辨率的切割 配合响应式头图后可以在一定程度上提高移动端的 LCP
其中的taichi图标也使用了png与svg格式 并且为了适应日夜模式 也用ps抠图做了填充
在内存config.yml中进行自定义主题的设置 这个配色可以直接使用ai完成 效果应该不会太差
增加追番表
追番功能通过 hexo-bilibili-bangumi 插件实现,数据源使用 Bangumi。
1 | npm install hexo-bilibili-bangumi --save |
将以下配置写入外层 _config.yml 中(不是主题的配置文件):
1 | #追番 https://github.com/HCLonely/hexo-bilibili-bangumi |
更改追番表样式
TIP
并没学过css和js前端的知识 这部分基本是ai完成,直接上源码
在外层soure新建js和css文件夹 这里不需要再主题内的source,且不要命名冲突,会被覆盖文件 外层才是自己自定义的,这也避免了后面更新主题导致覆盖更改文件造成麻烦。
[bangumi-custom.css]
1 | .bangumi-tabs { |
[bangumi-progress.js]
1 | (function() { |
将两个脚本注入到内层配置文件中,使其生效
1 | # 用于注入自定义代码 https://hexo.io/api/injector |
搭建 PicGo + GitHub 私库 + Cloudflare 代理图床
构建用于博客资源管理的图床体系,解决图片访问速度与仓库路径暴露问题。
TIP
多数现有方案默认基于 GitHub 公共仓库实现,而私有仓库场景下需通过 Cloudflare 进行代理转发。
相关实现源码未进行细看,直接采用成熟方案完成部署。
需要注意,上述方案要求拥有已注册的顶级域名,且涉及 DNS 服务商的修改,因此额外完成了域名注册与解析配置。
说些什么吧!