以后在手机上用 Termux 和 GitHub Actions 更新 Hexo 博客 0 次阅读

前言

如果你像我一样,经常在手机上写文章,却苦于无法在手机端运行 hexo generatehexo deploy(耗电且容易出错),那么这篇教程正是为你准备的。我们将利用 Termux 在手机上完成 Git 操作,再借助 GitHub Actions 在云端自动构建和部署博客——你只需要专注写作,剩下的交给云端。

最终效果:在手机上写完文章 → git push → 等待 2~5 分钟 → 博客自动更新。全程无需在手机运行 Hexo 或 Node.js。

整体思路

采用双仓库隔离方案:

  • 私有源码仓库(例如 hexo-blog-source):存放 Hexo 的源文件(source/themes/_config.yml 等)。
  • 公开页面仓库(例如 yourname.github.io):存放 Hexo 生成的静态网站文件,用于 GitHub Pages 展示。

自动化流程:当你向源码仓库推送代码时,GitHub Actions 会自动拉取、安装依赖、生成静态文件,并将 public/ 文件夹推送到页面仓库,最后通过 GitHub Pages 发布。

一、手机端环境搭建(Termux)

1. 安装 Termux 并更新基础包

从 F-Droid 或 Google Play 下载 Termux,打开后执行:

1
2
pkg update && pkg upgrade -y

建议更换国内软件源:termux-change-repo,选择清华或中科大源,速度更快。

2. 安装 Git、OpenSSH 和 Node.js

1
2
pkg install git openssh nodejs -y

3. 配置 Git 用户信息(可选但推荐)

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

二、GitHub 端准备工作

1. 创建两个仓库

页面仓库(公开):名称必须为 <你的GitHub用户名>.github.io,例如 myusername.github.io。初始化时不要添加 README 或 .gitignore,保持完全空白。

源码仓库(私有):名称随意,如 hexo-blog-source

2. 生成 Personal Access Token(Classic)

这一步是让 GitHub Actions 有权将构建好的文件写入你的页面仓库。

登录 GitHubSettingsDeveloper settingsPersonal access tokensTokens (classic)Generate new token (classic)

设置:

Note:填写 HEXO_PAGES_TOKEN

Expiration:选择 No expiration

Scopes:勾选 repo(全选即可)

点击生成,立即复制保存生成的 token(只显示一次)。

3. 将 Token 添加为仓库 Secret

进入你的源码仓库(例如 hexo-blog-source)→ SettingsSecrets and variablesActionsNew repository secret

Name 填写 PAGES_TOKEN,Secret 粘贴刚才的 token,点击 Add secret。

三、编写 GitHub Actions 工作流

1. 在源码仓库中创建 .github/workflows/deploy.yml

在你本地的 Hexo 博客根目录下创建该文件,内容如下(需要替换仓库名):

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

yaml
name: Build and Deploy Hexo

on:
push:
branches:
- main # 监听 main 分支

jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install hexo-cli
run: npm install -g hexo-cli

- name: Install dependencies
run: npm install

- name: Generate static files
run: hexo clean && hexo generate

- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
personal_token: ${{ secrets.PAGES_TOKEN }}
external_repository: 你的GitHub用户名/你的页面仓库名 # 例如 myusername/myusername.github.io
publish_branch: main # 页面仓库的分支,通常是 main
publish_dir: ./public
commit_message: ${{ github.event.head_commit.message }}
注意:external_repository 请替换为你真实的页面仓库,格式为 用户名/仓库名。

2. 配置 .gitignore

确保你的 Hexo 根目录下的 .gitignore 包含以下内容(避免将无关文件上传到源码仓库):

gitignore
node_modules/
public/
.deploy_git/
db.json
*.log
.DS_Store

四、本地 Hexo 项目初始化与推送

1. 确认主题中没有 .git 子文件夹

进入 themes/你的主题名/ 目录,检查是否存在 .git 文件夹(隐藏)。如果有,必须删除,否则 GitHub 会把主题当作子模块,导致线上博客空白。

1
2
rm -rf themes/你的主题名/.git

2. 将本地项目关联到源码仓库

1
2
3
4
5
cd 你的Hexo博客根目录
git init
git remote add origin https://github.com/你的GitHub用户名/源码仓库名.git
git branch -M main

3. 添加并推送所有源文件

1
2
3
4
git add .
git commit -m "首次提交 Hexo 源码"
git push -u origin main

如果你的网络环境需要代理,请先配置 Git 代理或改用 SSH 方式(见文末“常见问题”)。

五、验证自动化部署

访问你的源码仓库页面,点击 Actions 标签页,应该能看到一个正在运行的工作流(黄色圆点)。

等待约 2~5 分钟,工作流变为绿色 ✅。

访问你的页面仓库对应的 GitHub Pages 地址:https://你的用户名.github.io,如果博客正常显示,恭喜你成功了!

六、日常写作与更新流程

以后你只需要在手机上(或任何电脑)做以下几步:

拉取最新源码(如果多设备协作):

1
2
git pull

新建或修改文章:在 source/_posts/ 目录下编辑 .md 文件,可用 Termux 中的 nano、vim 或更友好的 Spck Editor。

提交并推送:

1
2
3
4
git add .
git commit -m "更新文章:xxxx"
git push

等待 GitHub Actions 自动构建部署,几分钟后线上博客即更新。

七、常见问题及解决

Q1: Git push 时报错 Failed to connect to 127.0.0.1 port xxx

原因:你的 VPN 或代理软件开了,但 Git 代理端口不一致。
解决:推荐改用 SSH 方式 推送,彻底绕开 HTTP 代理。

生成 SSH 密钥:ssh-keygen -t ed25519 -C "你的邮箱"

将公钥(~/.ssh/id_ed25519.pub)添加到 GitHubSettingsSSH and GPG keys

修改远程仓库地址:git remote set-url origin git@github.com:用户名/源码仓库名.git

Q2: Actions 运行失败,报错 Docker build failed

原因:某些第三方 action 年久失修。
解决:使用推荐的 peaceiris/actions-gh-pages,如本文提供的 YAML 所示。

Q3: 部署后博客空白,或者没有主题样式

原因:主题文件夹内残留 .git 子文件夹。
解决:删除 themes/你的主题/.git,然后重新 git push

Q4: 推送时提示 src refspec main does not match any

原因:本地没有任何 commit。
解决:先执行 git add .git commit -m "xxx",再 push

Q5: 页面仓库需要设置分支吗?

在页面仓库的 SettingsPagesBuild and deployment 中,选择 Deploy from a branch,并选择 main 分支(与工作流中的 publish_branch 一致)。

八、总结

通过 Termux + GitHub Actions 的双仓库方案,我们成功实现了手机端零环境依赖的博客更新流程。

你现在可以:随时随地用手机写文章

利用 GitHub 的免费云服务器完成构建

避免手机耗电、性能不足等问题

希望这篇教程对你有所帮助!如果遇到任何问题,欢迎留言交流。

Happy blogging! 🚀

下一篇 自制的一些免费API接口第二弹(获取QQ昵称、头像、抖音/豆包视频去水印等...)
感谢您的支持!
微信赞赏码 微信赞赏
支付宝赞赏码 支付宝赞赏