前言
如果你像我一样,经常在手机上写文章,却苦于无法在手机端运行 hexo generate 和 hexo 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 | pkg update && pkg upgrade -y |
建议更换国内软件源:termux-change-repo,选择清华或中科大源,速度更快。
2. 安装 Git、OpenSSH 和 Node.js
1 | pkg install git openssh nodejs -y |
3. 配置 Git 用户信息(可选但推荐)
1 | git config --global user.name "你的GitHub用户名" |
二、GitHub 端准备工作
1. 创建两个仓库
页面仓库(公开):名称必须为 <你的GitHub用户名>.github.io,例如 myusername.github.io。初始化时不要添加 README 或 .gitignore,保持完全空白。
源码仓库(私有):名称随意,如 hexo-blog-source。
2. 生成 Personal Access Token(Classic)
这一步是让 GitHub Actions 有权将构建好的文件写入你的页面仓库。
登录 GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic)。
设置:
Note:填写 HEXO_PAGES_TOKEN
Expiration:选择 No expiration
Scopes:勾选 repo(全选即可)
点击生成,立即复制保存生成的 token(只显示一次)。
3. 将 Token 添加为仓库 Secret
进入你的源码仓库(例如 hexo-blog-source)→ Settings → Secrets and variables → Actions → New repository secret。
Name 填写 PAGES_TOKEN,Secret 粘贴刚才的 token,点击 Add secret。
三、编写 GitHub Actions 工作流
1. 在源码仓库中创建 .github/workflows/deploy.yml
在你本地的 Hexo 博客根目录下创建该文件,内容如下(需要替换仓库名):
1 |
|
2. 配置 .gitignore
确保你的 Hexo 根目录下的 .gitignore 包含以下内容(避免将无关文件上传到源码仓库):
gitignorenode_modules/public/.deploy_git/db.json*.log.DS_Store
四、本地 Hexo 项目初始化与推送
1. 确认主题中没有 .git 子文件夹
进入 themes/你的主题名/ 目录,检查是否存在 .git 文件夹(隐藏)。如果有,必须删除,否则 GitHub 会把主题当作子模块,导致线上博客空白。
1 | rm -rf themes/你的主题名/.git |
2. 将本地项目关联到源码仓库
1 | cd 你的Hexo博客根目录 |
3. 添加并推送所有源文件
1 | git add . |
如果你的网络环境需要代理,请先配置 Git 代理或改用 SSH 方式(见文末“常见问题”)。
五、验证自动化部署
访问你的源码仓库页面,点击 Actions 标签页,应该能看到一个正在运行的工作流(黄色圆点)。
等待约 2~5 分钟,工作流变为绿色 ✅。
访问你的页面仓库对应的 GitHub Pages 地址:https://你的用户名.github.io,如果博客正常显示,恭喜你成功了!
六、日常写作与更新流程
以后你只需要在手机上(或任何电脑)做以下几步:
拉取最新源码(如果多设备协作):
1 | git pull |
新建或修改文章:在 source/_posts/ 目录下编辑 .md 文件,可用 Termux 中的 nano、vim 或更友好的 Spck Editor。
提交并推送:
1 | git add . |
等待 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)添加到 GitHub → Settings → SSH 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: 页面仓库需要设置分支吗?
在页面仓库的 Settings → Pages → Build and deployment 中,选择 Deploy from a branch,并选择 main 分支(与工作流中的 publish_branch 一致)。
八、总结
通过 Termux + GitHub Actions 的双仓库方案,我们成功实现了手机端零环境依赖的博客更新流程。
你现在可以:随时随地用手机写文章
利用 GitHub 的免费云服务器完成构建
避免手机耗电、性能不足等问题
希望这篇教程对你有所帮助!如果遇到任何问题,欢迎留言交流。
Happy blogging! 🚀