Skip to content

从 GitHub Pages 迁移到 EdgeOne Pages

背景

本博客使用 VitePress 构建,最初部署在 GitHub Pages 上:https://gin4ever688.github.io/blog/ ,但是GitHub Pages 在国内访问不稳定,经常打不开,体验很差。

于是我开始寻找新的部署方案,目标很明确:

  • 博客能稳定访问,不再依赖 GitHub Pages
  • 部署流程尽量简单,最好不用买服务器
  • 能用自己的域名,而不是每次访问临时链接
  • 后续还能扩展,比如用子域名部署其他项目

一句话,花小钱办大事

解决方案

静态博客的选择其实不少,各有侧重:

方案是否免费是否需要服务器是否需要备案国内访问
EdgeOne Pages(不含中国大陆)免费不需要不需要香港/海外节点,速度一般但稳定可用
EdgeOne Pages(含中国大陆)免费不需要需要大陆节点,速度最快
Vercel / Cloudflare Pages免费不需要不需要时好时坏,不够稳定
阿里云 OSS / 腾讯云 COS + CDN低费用不需要需要稳定,适合长期运营
Gitee Pages / GitCode Pages曾免费不需要视情况基本停服,不建议

我最终选择的是 EdgeOne Pages + 自定义域名

  • 免费托管,不用买服务器
  • 加速区域选择全球可用区(不含中国大陆),不用备案
  • 绑定自己的域名 gin4ever.top,十几块一年,可按年续费,很划算
  • GitHub 继续作为源码仓库,用户访问的是 EdgeOne 的节点

如果之后想要大陆节点的最快速度,再补 ICP 备案,把加速区域切换为“含中国大陆”即可。

部署

在 EdgeOne Pages 创建项目并导入 GitHub 仓库即可,VitePress 项目的构建配置如下:

配置项
安装命令npm install
构建命令npm run docs:build
输出目录docs/.vitepress/dist
Node 版本22
生产分支main

注意:VitePress 的 base 默认是 /,当前配置使用 process.env.BASE_URL || '/',部署到 EdgeOne 时不设置 BASE_URL 即可。

部署成功后,EdgeOne Pages 会生成一个预览链接,但这个链接只有 3 小时有效期,到期后不能长期访问。项目本身还在,只是临时地址过期,所以要绑定自定义域名。

可多个项目

EdgeOne Pages 支持一个账号下创建多个项目,每个项目对应一个 GitHub 仓库:

  1. 在 EdgeOne Pages 创建新项目:https://console.cloud.tencent.com.cn/edgeone/makers
  2. 导入你的 GitHub 仓库
  3. 按该项目的框架配置构建命令和输出目录
  4. 在新项目的域名管理中绑定一个子域名

一个账号最多 40 个项目,单个项目最多绑定 20 个自定义域名,个人博客足够用。

域名

域名在腾讯云、阿里云等注册商购买即可。我在腾讯云买的 gin4ever.top 这个主域名,子域名并不是单独注册的,购买地址:https://cloud.tencent.com/product/domain

只要 gin4ever.top 的 DNS 由你控制,那么 a.gin4ever.topxxx.gin4ever.top 这类子域名都归你管理,别人无法注册属于你的子域名。

但子域名不会自动生效,需要两步:

  1. 在对应 EdgeOne Pages 项目的“域名管理”中添加自定义域名,例如 a.gin4ever.top
  2. 在 DNS 服务商处为该子域名添加 CNAME 记录,指向该项目提供的目标地址

域名绑定示例:

子域名用途CNAME 指向
gin4ever.top博客主页博客项目的目标地址
a.gin4ever.top第二个项目第二个项目的目标地址
demo.gin4ever.top演示项目演示项目的目标地址

每个项目都有自己独立的 CNAME 目标地址,不能把博客项目的 CNAME 直接复制给其他项目。

注意事项

  • EdgeOne Pages 的默认预览链接只有 3 小时有效期,只是临时地址,不代表项目被删除,绑定自定义域名后才能长期访问。
  • 选择“全球可用区(不含中国大陆)”或“中国香港”区域时,自定义域名不需要备案;选择“含中国大陆”区域时,自定义域名必须先完成 ICP 备案。
  • ICP 备案备案的是“域名 + 网站”,不是服务器本身,但首次备案需要一台满足条件的大陆云资源作为接入服务商,例如腾讯云 CVM 或轻量应用服务器,EdgeOne Pages 本身不能作为备案云资源。
  • 备案通常要求大陆服务器包年包月 3 个月以上,备案本身免费,花钱的是云资源。
  • 备案通过后不建议立刻退掉服务器,先保持一段时间,避免备案被核查。
  • DNS 不建议直接配 *.gin4ever.top 泛解析,会影响 mailapi 等记录,稳妥做法是每个子域名单独添加 CNAME。
  • 多个项目之间相互独立,修改其中一个项目的部署不会影响其他项目。
  • GitHub 只作为源码仓库和构建触发源,网站最终由 EdgeOne Pages 提供服务,不再依赖 GitHub Pages 的访问稳定性。

Released under the MIT License.