没有服务器,如何用github创建自己的Hexo的博客
没有服务器,如何用github创建自己的Hexo的博客
灿烂的番茄本来想在VPS上面部署一个博客应用的,但是坑爹的服务商VKVM直接把我的服务器回收并退款了!哎~~😫,被逼无奈,唯有去了解一下有没有其他方式可以部署。不得不说,AI是个好东西,问了下Deepseek,给了我一个详细的基于GithubAction部署的方案,我觉得觉得还是不错的。
📥从零开始使用 GitHub Actions 部署 Hexo 博客
下面是deepseek规划的一份清晰的路线图,它将引导你一步步完成所有必要的环节。整个流程可以概括为以下几个主要阶段:
1 | flowchart TD |
接下来,我们详细看看每个步骤具体需要做什么。
🔧 第一步:准备你的创作环境
在开始构建博客之前,你需要先在本地电脑上准备好必要的工具。
安装 Node.js 和 npm
Hexo 基于 Node.js,所以首先需要安装它。请访问 Node.js 官网,下载并安装 LTS(长期支持版) 。安装程序会同时包含 npm(Node.js 的包管理器)。安装 Git
Git 是版本管理工具,也是与 GitHub 通信的桥梁。请访问 Git 官网下载并安装。安装后,打开命令行(终端或 Git Bash),设置你的全局用户名和邮箱,这在后续的 Git 提交中会用到:1
2git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub邮箱"(可选但推荐)配置 SSH 密钥
为了避免每次与 GitHub 通信都输入密码,可以配置 SSH 密钥进行安全连接。- 生成密钥对:在命令行中运行
ssh-keygen -t rsa -C "你的邮箱",连续按回车使用默认设置即可。 - 添加公钥到 GitHub:登录 GitHub,进入 Settings > SSH and GPG keys,点击 “New SSH key”,将生成的
.pub公钥文件内容粘贴进去。
- 生成密钥对:在命令行中运行
🌱 第二步:创建你的 Hexo 博客项目
环境准备好后,就可以创建博客的核心项目了。
安装 Hexo 命令行工具(CLI)
在命令行中执行以下命令进行全局安装:1
npm install -g hexo-cli
初始化博客
找一个你喜欢的目录,例如D:\Projects,然后执行以下命令来初始化一个名为myblog的博客项目(你可以换成任何你喜欢的名字):1
2hexo init myblog
cd myblog进入项目文件夹后,安装基础依赖:
1
npm install
本地预览
现在,你可以尝试在本地启动 Hexo 自带的服务器,看看你的博客雏形:1
2hexo server
# 或简写为 hexo s成功后在浏览器中访问
http://localhost:4000,你应该能看到默认的 Hexo 欢迎页面。
📦 第三步:在 GitHub 上安放你的博客
你的博客内容将存放在两个 GitHub 仓库里:一个存放 Hexo 的源码,另一个由 GitHub Actions 自动生成,用于存放编译好的静态网页。
创建源码仓库(Source Repository)
这个仓库用于保存你所有的博客文章、主题和配置文件。登录 GitHub,点击右上角 “+” 号,选择 “New repository”。- 仓库名:可以任意取名,例如
my-hexo-blog-source。 - 权限:建议设置为 Private(私有) ,这样你的文章草稿和配置就不会公开。
- 其他保持默认,点击创建。
- 仓库名:可以任意取名,例如
创建页面仓库(Pages Repository)
这个仓库将用来托管你的公开博客网站。同样创建一个新仓库。- 仓库名:必须严格遵守格式:
<你的GitHub用户名>.github.io。例如,如果你的用户名是johnsmith,仓库名就是johnsmith.github.io。 - 权限:必须设置为 Public(公开) ,否则 GitHub Pages 无法免费托管。
- 点击创建。
- 仓库名:必须严格遵守格式:
🤖 第四步:配置自动化引擎 GitHub Actions
这是最关键的一步,我们将设置一个自动化流程:每当你把新的文章或修改推送到源码仓库时,GitHub Actions 会自动帮你构建网站,并部署到页面仓库。
创建 Workflow 文件
在你的本地博客根目录(myblog文件夹)下,手动创建一个新文件,路径为:.github/workflows/pages.yml。这个文件将定义自动化流程。编写 Workflow 配置
用文本编辑器(如 VS Code)打开pages.yml文件,将以下内容复制进去。这是 Hexo 官方推荐的配置,你需要修改其中的node-version(例如20,具体版本号可参考你本地通过node --version命令查看到的主要版本) 以及PUBLISH_REPOSITORY(你的页面仓库):1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59name: Deploy Hexo to GitHub Pages
on:
push:
branches: [ main ] # 当向 main 分支推送时触发
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Source Code
uses: actions/checkout@v4
with:
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} # 使用PAT拉取代码,确保子模块也能正确拉取
submodules: recursive # 这个对处理子模块主题至关重要!
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20' # 请使用与你本地环境匹配的Node.js主版本
- name: Install Dependencies
run: npm install
- name: Build Hexo Site
run: npm run build # 这通常对应 hexo generate,生成静态文件到 public 目录
- name: Upload Build Artifact (Optional)
uses: actions/upload-artifact@v4
with:
name: generated-website
path: ./public
retention-days: 1
deploy:
needs: build # 依赖 build 任务
runs-on: ubuntu-latest
steps:
- name: Download Build Artifact (Optional)
uses: actions/download-artifact@v4
with:
name: generated-website
path: ./public
- name: Deploy to Pages Repository
uses: peaceiris/actions-gh-pages@v3
with:
# 核心配置:使用PAT进行身份验证
personal_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
# 目标仓库:你的公开Pages仓库
external_repository: FountainChan/FountainChan.github.io
# 目标分支:静态文件将被推送到这个分支
publish_branch: main
# 要发布的目录:Hexo生成的静态文件所在目录
publish_dir: ./public
# 保留目标仓库的提交历史。设为false则会只保留最后一次提交,使历史更清晰。
force_orphan: false
# 可选项:配置提交信息
commit_message: 'Deploy via GitHub Actions: ${{ github.sha }}'配置Github PAT
使用peaceiris/actions-gh-pagesAction 进行跨仓库部署的完整配置。创建 Personal Access Token (PAT)
这是实现跨仓库推送的关键。
- 访问 GitHub Token 设置页面。
- 点击 Generate new token -> Generate new token (classic) 。
- 填写 Note(如
Hexo Blog Deploy)。 - 过期时间:建议设置为自定义,并选择一个较长的期限(例如1年)。
- 权限范围:务必勾选
repo(包含所有仓库的完全控制权限)。 - 点击生成,并立即安全地复制生成的 token 字符串。
在源码仓库配置 Secret
- 进入你的私有源码仓库
SourceHexoBlog。 - 点击 Settings -> Secrets and variables -> Actions。
- 点击 New repository secret。
- Name 输入:
PERSONAL_ACCESS_TOKEN(必须与此名称完全一致)。 - Value 粘贴你刚才复制的 token。
- 点击 Add secret。
- 进入你的私有源码仓库
推送代码到源码仓库
现在,将你本地的整个博客项目(包括刚创建的.github文件夹)推送到 GitHub 的源码仓库。
在你的本地博客根目录下执行以下命令(请将<你的源码仓库地址>替换为实际地址,通常是 SSH 格式,如[email protected]:username/my-hexo-blog-source.git):1
2
3
4
5
6git init
git add .
git commit -m "Initial commit with GitHub Actions workflow"
git branch -M main # 如果默认分支是 master,则改为 git branch -M master
git remote add origin <你的源码仓库地址>
git push -u origin main
✨ 第五步:发布你的第一篇文章
现在,激动人心的时刻到了!你的自动化流水线已经就绪。
创建新文章
在本地博客目录下,使用 Hexo 命令创建一篇新文章:1
hexo new "我的第一篇文章"
这会在
source/_posts目录下生成一个 Markdown 文件(我的第一篇文章.md)。用你喜欢的 Markdown 编辑器打开它,在---之间的区域是文章头信息,下方就可以开始撰写正文了。推送并触发部署
写完文章后,将修改推送到 GitHub:1
2
3git add .
git commit -m "Publish my first post"
git push origin main # 或 master查看成果
推送完成后,打开你的 GitHub 源码仓库,点击 Actions 标签页,你会看到一个新的工作流正在运行。等待几分钟,当它出现绿色的勾号时,就意味着部署成功了!现在,你可以在浏览器中访问https://<你的用户名>.github.io查看你的线上博客了!
🌍 (可选)绑定自定义域名
如果你已经购买了域名,想要用像 blog.yourdomain.com 这样的地址访问博客,可以额外进行以下操作:
- 在博客源码的
source目录下,创建一个名为CNAME的文件(没有后缀名),文件内容就是你的一级或二级域名,例如blog.yourdomain.com。 - 在你的域名注册商(如阿里云、腾讯云)的管理后台,为这个域名添加一条 CNAME 记录,将其指向
你的用户名.github.io。 - 将
CNAME文件随代码一起推送到源码仓库。之后,在页面仓库的 Settings > Pages 中,你还可以填写你的自定义域名。
💡 温馨提示
- 核心配置:确保
pages.yml工作流文件中的node-version与你本地环境的主要版本一致,这可以避免因环境差异导致的构建失败。 - 主题注意事项:如果你使用的主题是以 Git 子模块(Submodule)方式安装的,Workflow 配置中已包含
submodules: recursive选项来正确处理它。 - 耐心等待:第一次部署和 DNS 解析可能需要一些时间,如果立即访问看不到变化,请耐心等待几分钟再刷新。
以上,就是本博客启程的基本过程,希望对各位看官也有所作用。









