换新机再次折腾 Hexo blog

本文最后更新于:2025年3月24日 凌晨

换到 Mac mini 没有用 Time Machine 之类的迁移,选择手动配置,开箱新的机器,然后又要重新配置 Hexo 了。

安装 Git 和 Node.js

安装 Homebrew

1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

用 Qutumult X 开启 SS 服务器功能,代理终端流量后才得以安装 Homebrew,很奇怪,之前不用这不操作。

接着安装 Node.js 和 Git:

1
brew install node
1
brew install git

测试是否安装成功:

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

有版本号即可。

安装 Hexo

1
npm install -g hexo-cli

文件夹一开始还找不到,后来发现在 /Users/XXX/hexo,不然同名的 hexo 太多了会弄错。

新建一个名为 blog 的文件夹(可以自定义 blog 名字)

1
hexo init blog

安装 Hexo 主题(具体去主题文档里面找)

1
npm install --save hexo-theme-XXX

添加 SSH Key 到 Github

接着又到了最头疼的一个地方了,绊倒了我三次,我也是真不长记性呵。

使用相同的 SSH 密钥**

像我这样两台设备又不想搞死的,其实可以共用一个 SSH 密钥。

步骤:

在第一台设备上导出原有的公钥,找到公钥文件 ~/.ssh/id_rsa.pub 并复制内容。

将公钥添加到 GitHub:在 GitHub 上进入 Settings > SSH and GPG keys,添加新的 SSH 密钥,粘贴你复制的公钥。

在第二台设备上使用同一个 SSH 密钥:将公钥文件(id_rsa.pub)复制到第二台设备的 ~/.ssh/ 目录下,然后重复上述步骤,将公钥添加到 GitHub 上。

使用相同的 SSH 密钥的好处是操作简单,尤其是在你不想管理多个密钥时。

当然如果这一步出问题了,也可以 为每台设备生成不同的 SSH 密钥,方法如下:

1. 编辑 SSH 配置文件

打开终端(Terminal),执行命令来生成:

1
nano ~/.ssh/config

复制公钥内容:

1
cat ~/.ssh/id_rsa.pub

测试是否能联通

1
ssh -T git@github.com

将每个设备的公钥分别添加到 GitHub 上。

问题

  1. 不知道是不是和 npm,node 版本有关系,用 npm update --save hexo-theme-xxx 升级 blog 主题版本失败,只能回退版本。手动解压主题到博客 Theme 文件夹里。但是这也很容易出兼容性问题,暂时没找到更好的方法,可能别的主题有解决办法也说不定
  2. 之前一直出问题的是 22 端口(SSH 连接)被屏蔽无法使用,要改到 443 端口(HTTPS 协议)
  3. 可是即使我配置了两个 SSH 密钥,在打开域名的时候还是会出现 GitHub Pages 404 的报错,弄到这里,真的很抓狂,已经折腾一晚上加一上午了,换个思路,以后也一劳永逸吧。

从 GitHub Pages 迁移至 Cloudflare Pages

接着,才是本文的重头戏。折腾了一晚上,最后都不知道问题出在哪里和线头一样,越理越乱,最后在余光的建议下,决定搬家到 Cloudflare Pages,相比 GitHub Pages 有更快的全球 CDN 和性能优化,有更高的构建时间或带宽上限。只是把源代码托管在 GitHub 的私人仓库里,隐私保护更佳

跟着官方页面一步一步来,因为刚刚已经配置好其余条件,直接从 Create a GitHub repository 建立 GitHub 仓库开始:

在博客根目录下,

1
2
git init
git remote add origin https://github.com/<your-gh-username>/<repository-name> 【尖括号要删掉】

若提示:「错误:远程 origin 已经存在」,用这条命令:

1
git remote set-url origin git@github.com:xxxx/xxxx.git

转换成 SSH 协议,接着:

1
2
3
git add .
git commit -m "Initial commit"
git branch -M main 【这几步没反应是正常的】

创立新仓库后需要 push 一下,不然看不到生产分支的 main 选项

1
git push -u origin main

其他高级参数不用管。Using a specific Node.js version 那步骤可以跳过。

控制台里有 preview url(部署-制作-访问)测试一下,页面能打开就没问题了。

添加自定义域名

因为我之前已经在 Cloudflare 托管域名了,可以省去这一步,根据他的流程来,Done!

之后就用这几个指令来完成,比以前 hexo 的指令稍微复杂些,因为是标准的 Git 操作了。

1
2
3
4
git add .
git commit -m "Initial commit"
hexo s
git push -u origin main

可以用诸如 fork.dev,GitHub Desktop 之类的图形界面工具来完成。这个之后再折腾了。

另,因为 blog 里经常有图片上传的需求,PicGo,无法用 Quantunlut X 来实现 HTTP 代理,折腾了很久无果,用这个软件只能换回 ClashX Pro 很遗憾,期待两位作者日后能更新下。

配置 SSH 通过 HTTPS 端口连接 GitHub

最后还是要上一道保险, 以免日后出问题。

为什么需要这么做?

  • 网络限制:某些网络会封锁默认 SSH 端口(22),但允许 HTTPS(443)流量。
  • 绕过限制:通过 443 端口建立 SSH 连接,解决无法推送/拉取代码的问题。

步骤 1:修改 SSH 配置文件

  1. 打开终端(Linux/macOS)或 Git Bash(Windows)。
  2. 编辑 SSH 客户端配置文件 ~/.ssh/config
1
nano ~/.ssh/config
  1. 添加以下配置
1
2
3
4
Host github.com
Hostname ssh.github.com
Port 443
User git

步骤 2:测试 SSH 连接

运行以下命令测试连接:

1
2
3
ssh -T git@github.com
# Hi USERNAME! You've successfully authenticated, but GitHub does not
# provide shell access.

如果和我一样,遇到文件权限问题(Permission denied),别急,也有办法可以解决。

首先,确认你的用户名和组名是否正确。你可以通过以下命令检查当前用户名和所属的组:

1
id
  • uid 是用户 ID
  • gid 是组 ID,通常与用户名相同
  • groups 列出了用户所属的所有组

像我就是 gid 和所有 group 是 staff,那就:

1
2
sudo chown user:staff ~/.ssh/config
chmod 700 ~/.ssh

最后进行

1
nano ~/.ssh/config

就会成功进入编辑页面,编辑完成后,

  1. 按下 Ctrl + O
  2. 在屏幕底部,你会看到类似的提示:File Name to Write: ~/.ssh/config。直接按下 Enter 键确认保存
  3. 按下 Ctrl + X 退出 nano 编辑器

大功告成!

如何在另一台设备使用

直接把新仓库 Clone 下来用

  1. 获取仓库的 HTTPS URL

在 GitHub 上打开仓库页面,点击绿色的 Code 按钮,选择 HTTPS,然后复制仓库的 URL,例如:

1
https://github.com/你的用户名/你的仓库名.git
  1. 克隆仓库

打开终端,进入你希望存储项目的目录,然后执行以下命令:

1
git remote add origin https://github.com/你的用户名/你的仓库名•git
  1. 输入 GitHub 用户名和个人访问令牌
  • 当提示输入 GitHub 用户名和密码时,密码应为 GitHub 个人访问令牌(PAT),而不是 GitHub 密码。
  • 如果你没有生成个人访问令牌,可以在 GitHub 的 设置页面 创建一个新的 PAT(只选 repo 即可)

最后的最后使用指令奉上:


Ref:https://blog.l3zc.com/2022/05/mac%E7%8E%AF%E5%A2%83%E4%B8%8B%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/#%E5%BC%80%E5%A7%8B%E5%86%99%E4%BD%9C


换新机再次折腾 Hexo blog
http://example.com/hexo-to-cloudflare/
作者
John Doe
发布于
2025年3月14日
更新于
2025年3月24日
许可协议