Hexo 零成本建站全记录(Gitee Pages 停服之后)

这篇文章记录我把博客从零搭起来的过程。整条链路是:本地用 Hexo 生成静态文件 → 推送到代码仓库 / 上传到静态托管 → 平台对外提供访问。

全程不需要服务器,也不需要买域名。

重要更新(2026-10):原视频使用的 Gitee Pages 已于 2024 年 5 月下线,仓库还能正常托管代码,但 Pages 服务无法再开通,旧教程里的「服务 → Gitee Pages → 启动」已经找不到了。本文保留 Hexo 的完整搭建流程,并把最后的托管环节换成目前仍然免费可用的方案。

一、准备环境

需要两个工具:

  • Node.js(LTS 版本即可):Hexo 运行在 Node 上;
  • Git:用来把生成好的静态文件推到代码仓库。

装完后打开终端验证:

1
2
3
git --version
node -v
npm -v

三条命令都能输出版本号,就说明环境没问题。

顺手配置一下 Git 身份,后面提交记录会用到:

1
2
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"

二、安装 Hexo 并初始化

1
2
3
4
npm install -g hexo-cli
hexo init myblog
cd myblog
npm install

初始化完成后先本地跑一下:

1
hexo s

浏览器打开 http://localhost:4000,看到 Hexo 的默认首页就成功了。

如果卡在 hexo init 拉取模板,通常是网络问题,换手机热点或者挂代理重试即可。

三、写第一篇文章

1
hexo new "我的第一篇文章"

文件会生成在 source/_posts/ 目录下。开头那一段被 --- 包起来的内容叫 Front Matter,用来声明元信息:

1
2
3
4
5
6
7
8
---
title: 我的第一篇文章
date: 2026-10-18 21:10:00
tags:
- 随笔
categories:
- 生活
---

正文直接写 Markdown 就行。写完后:

1
hexo clean && hexo g && hexo s

刷新页面就能看到效果。

四、换一个顺眼的主题

默认主题比较朴素,我换成了 NexT。安装方式有两种:

1
2
3
4
5
# 方式一:npm 安装(推荐,升级方便)
npm install hexo-theme-next

# 方式二:克隆到 themes 目录
git clone https://github.com/next-theme/hexo-theme-next themes/next

然后在根目录 _config.yml 里改一行:

1
theme: next

NexT 的所有个性化配置都集中在根目录的 _config.next.yml 里,包括配色方案、菜单、头像、社交链接、代码高亮风格等。改完重新生成即可。

五、上线:三种仍然免费的托管方式

方案 A:Cloudflare Pages(推荐,默认域名可直接公开访问)

  1. 注册 Cloudflare;
  2. 进入 Workers & Pages → Create → Pages → Upload assets;
  3. 项目名可以用 shiguang-blog,把本地生成的 public 文件夹(或 zip)拖进去;
  4. 部署完成后得到 https://项目名.pages.dev,这就是可以直接分享的公开地址;
  5. 以后更新:重新上传一次 public 即可。

不需要域名、不需要备案,国内通常可以访问,但速度取决于 Cloudflare 的出口线路。

方案 B:EdgeOne Makers(国内速度快,但默认域名只是临时预览)

腾讯云 EdgeOne Makers 的静态托管免费、国内节点也快,但要注意:项目域名 *.edgeone.dev 在中国大陆是 3 小时有效的预览链接,过期会返回 401。要长期公开访问,必须绑定自己的域名(全球区不含大陆无需备案,大陆区需要备案)。

  1. 打开 EdgeOne Makers,登录腾讯云并实名;
  2. 上传 public(或 zip);
  3. 在控制台点「预览」可以拿到临时链接;
  4. 想长期使用,就在域名管理里绑定自己的域名,再把域名填回 _config.yml 的 url。

方案 C:GitHub Pages(和原教程最接近,一条命令部署)

  1. 注册 GitHub;
  2. 新建仓库,仓库名必须是 你的用户名.github.io,可见性选 Public;
  3. 修改 _config.yml:
1
2
3
4
5
url: https://你的用户名.github.io
deploy:
type: git
repo: https://github.com/你的用户名/你的用户名.github.io.git
branch: main
  1. 执行部署:
1
hexo clean && hexo g && hexo d
  1. 进入仓库的 Settings → Pages,确认 Source 是 main 分支的根目录;
  2. 等一两分钟,访问 https://你的用户名.github.io。

说明:GitHub 在国内的访问速度不稳定,适合能正常访问 GitHub 的读者。

六、日常更新

无论用哪种托管方式,本地流程都一样:

1
2
hexo clean   # 清掉旧的静态文件
hexo g # 重新生成
  • 用 GitHub Pages:再执行 hexo d;
  • 用 Cloudflare / EdgeOne:把新生成的 public 重新上传。

常见问题

现象 原因 解决
页面能打开但样式全丢 url 配置或仓库名不对 仓库名与用户名保持一致,url 写成最终访问地址
部署报错找不到仓库 地址或分支写错 检查 repo 是否是 HTTPS 地址,分支是否存在
主题配置不生效 YAML 缩进或冒号后缺空格 用两个空格缩进,冒号后补空格
访问 404 Pages 未启用或目录选错 检查平台的发布分支与目录设置
hexo d 提示无权限 密码 / 令牌错误 清除 Windows 凭据管理器里的对应记录后重试
Gitee Pages 入口不见了 该服务已下线 改用本文的方案 A / B / C

小结

Hexo 负责「把 Markdown 变成静态网站」,托管平台只负责「把文件放到公网上」。两者是解耦的,所以 Gitee Pages 下线并不会让这套方案失效——换一个静态托管就行。

真正麻烦的从来不是工具,而是开始写第一篇。