没有服务器,如何用github创建自己的Hexo的博客

本来想在VPS上面部署一个博客应用的,但是坑爹的服务商VKVM直接把我的服务器回收并退款了!哎~~😫,被逼无奈,唯有去了解一下有没有其他方式可以部署。不得不说,AI是个好东西,问了下Deepseek,给了我一个详细的基于GithubAction部署的方案,我觉得觉得还是不错的。

#📥从零开始使用 GitHub Actions 部署 Hexo 博客

下面是deepseek规划的一份清晰的路线图,它将引导你一步步完成所有必要的环节。整个流程可以概括为以下几个主要阶段:

1
2
3
4
5
6
7
8
9
flowchart TD
A[准备阶段<br>安装Node.js与Git] --> B[初始化Hexo项目<br>创建博客骨架]
B --> C[配置GitHub仓库<br>创建源码库与Pages库]
C --> D[配置GitHub Actions<br>设置自动化工作流]
D --> E[撰写内容与部署<br>发布第一篇文章]
E --> F{是否绑定域名?}
F -- 是 --> G[绑定自定义域名]
F -- 否 --> H[完成]
G --> H

接下来,我们详细看看每个步骤具体需要做什么。

#🔧 第一步:准备你的创作环境

在开始构建博客之前,你需要先在本地电脑上准备好必要的工具。

  1. 安装 Node.js 和 npm
    Hexo 基于 Node.js,所以首先需要安装它。请访问 Node.js 官网,下载并安装 LTS(长期支持版) 。安装程序会同时包含 npm(Node.js 的包管理器)。

  2. 安装 Git
    Git 是版本管理工具,也是与 GitHub 通信的桥梁。请访问 Git 官网下载并安装。安装后,打开命令行(终端或 Git Bash),设置你的全局用户名和邮箱,这在后续的 Git 提交中会用到:

    1
    2
    git config --global user.name "你的GitHub用户名"
    git config --global user.email "你的GitHub邮箱"
  3. (可选但推荐)配置 SSH 密钥
    为了避免每次与 GitHub 通信都输入密码,可以配置 SSH 密钥进行安全连接。

    • 生成密钥对:在命令行中运行 ssh-keygen -t rsa -C "你的邮箱",连续按回车使用默认设置即可。
    • 添加公钥到 GitHub:登录 GitHub,进入 Settings > SSH and GPG keys,点击 “New SSH key”,将生成的 .pub 公钥文件内容粘贴进去。

#🌱 第二步:创建你的 Hexo 博客项目

环境准备好后,就可以创建博客的核心项目了。

  1. 安装 Hexo 命令行工具(CLI)
    在命令行中执行以下命令进行全局安装:

    1
    npm install -g hexo-cli
  2. 初始化博客
    找一个你喜欢的目录,例如 D:\Projects,然后执行以下命令来初始化一个名为 myblog 的博客项目(你可以换成任何你喜欢的名字):

    1
    2
    hexo init myblog
    cd myblog

    进入项目文件夹后,安装基础依赖:

    1
    npm install
  3. 本地预览
    现在,你可以尝试在本地启动 Hexo 自带的服务器,看看你的博客雏形:

    1
    2
    hexo server
    # 或简写为 hexo s

    成功后在浏览器中访问 http://localhost:4000,你应该能看到默认的 Hexo 欢迎页面。

#📦 第三步:在 GitHub 上安放你的博客

你的博客内容将存放在两个 GitHub 仓库里:一个存放 Hexo 的源码,另一个由 GitHub Actions 自动生成,用于存放编译好的静态网页。

  1. 创建源码仓库(Source Repository)
    这个仓库用于保存你所有的博客文章、主题和配置文件。登录 GitHub,点击右上角 “+” 号,选择 “New repository”。

    • 仓库名:可以任意取名,例如 my-hexo-blog-source
    • 权限:建议设置为 Private(私有) ,这样你的文章草稿和配置就不会公开。
    • 其他保持默认,点击创建。
  2. 创建页面仓库(Pages Repository)
    这个仓库将用来托管你的公开博客网站。同样创建一个新仓库。

    • 仓库名必须严格遵守格式:<你的GitHub用户名>.github.io。例如,如果你的用户名是 johnsmith,仓库名就是 johnsmith.github.io
    • 权限:必须设置为 Public(公开) ,否则 GitHub Pages 无法免费托管。
    • 点击创建。

#🤖 第四步:配置自动化引擎 GitHub Actions

这是最关键的一步,我们将设置一个自动化流程:每当你把新的文章或修改推送到源码仓库时,GitHub Actions 会自动帮你构建网站,并部署到页面仓库

  1. 创建 Workflow 文件
    在你的本地博客根目录(myblog 文件夹)下,手动创建一个新文件,路径为:.github/workflows/pages.yml。这个文件将定义自动化流程。

  2. 编写 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
    59
    name: 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 }}'
  3. 配置Github PAT
    使用 peaceiris/actions-gh-pages Action 进行跨仓库部署的完整配置。

    1. 创建 Personal Access Token (PAT)

      这是实现跨仓库推送的关键。

      • 访问 GitHub Token 设置页面
      • 点击 Generate new token -> Generate new token (classic)
      • 填写 Note(如 Hexo Blog Deploy)。
      • 过期时间:建议设置为自定义,并选择一个较长的期限(例如1年)。
      • 权限范围:务必勾选 repo(包含所有仓库的完全控制权限)。
      • 点击生成,并立即安全地复制生成的 token 字符串。
    2. 在源码仓库配置 Secret

      • 进入你的私有源码仓库 SourceHexoBlog
      • 点击 Settings -> Secrets and variables -> Actions
      • 点击 New repository secret
      • Name 输入:PERSONAL_ACCESS_TOKEN(必须与此名称完全一致)。
      • Value 粘贴你刚才复制的 token。
      • 点击 Add secret
  4. 推送代码到源码仓库
    现在,将你本地的整个博客项目(包括刚创建的 .github 文件夹)推送到 GitHub 的源码仓库
    在你的本地博客根目录下执行以下命令(请将 <你的源码仓库地址> 替换为实际地址,通常是 SSH 格式,如 [email protected]:username/my-hexo-blog-source.git):

    1
    2
    3
    4
    5
    6
    git 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

#✨ 第五步:发布你的第一篇文章

现在,激动人心的时刻到了!你的自动化流水线已经就绪。

  1. 创建新文章
    在本地博客目录下,使用 Hexo 命令创建一篇新文章:

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

    这会在 source/_posts 目录下生成一个 Markdown 文件(我的第一篇文章.md)。用你喜欢的 Markdown 编辑器打开它,在 --- 之间的区域是文章头信息,下方就可以开始撰写正文了。

  2. 推送并触发部署
    写完文章后,将修改推送到 GitHub:

    1
    2
    3
    git add .
    git commit -m "Publish my first post"
    git push origin main # 或 master
  3. 查看成果
    推送完成后,打开你的 GitHub 源码仓库,点击 Actions 标签页,你会看到一个新的工作流正在运行。等待几分钟,当它出现绿色的勾号时,就意味着部署成功了!现在,你可以在浏览器中访问 https://<你的用户名>.github.io 查看你的线上博客了!

#🌍 (可选)绑定自定义域名

如果你已经购买了域名,想要用像 blog.yourdomain.com 这样的地址访问博客,可以额外进行以下操作:

  1. 在博客源码的 source 目录下,创建一个名为 CNAME 的文件(没有后缀名),文件内容就是你的一级或二级域名,例如 blog.yourdomain.com
  2. 在你的域名注册商(如阿里云、腾讯云)的管理后台,为这个域名添加一条 CNAME 记录,将其指向 你的用户名.github.io
  3. CNAME 文件随代码一起推送到源码仓库。之后,在页面仓库的 Settings > Pages 中,你还可以填写你的自定义域名。

#💡 温馨提示

  • 核心配置:确保 pages.yml 工作流文件中的 node-version 与你本地环境的主要版本一致,这可以避免因环境差异导致的构建失败。
  • 主题注意事项:如果你使用的主题是以 Git 子模块(Submodule)方式安装的,Workflow 配置中已包含 submodules: recursive 选项来正确处理它。
  • 耐心等待:第一次部署和 DNS 解析可能需要一些时间,如果立即访问看不到变化,请耐心等待几分钟再刷新。

以上,就是本博客启程的基本过程,希望对各位看官也有所作用。