这篇文章记录我把本地(或 VPS 上)的 Hugo 静态博客迁移到 Cloudflare Pages 的全过程,并实现:
- GitHub 仓库驱动发布:每次
git push都会触发自动构建与部署 - pages.dev 域名直接上线(也支持后续绑定自定义域名)
我的目标很简单:以后只管写文章 + push,其它交给 Cloudflare。
0. 你需要准备什么
- 一个 Hugo 站点(例如本地
myblog/) - 一个 GitHub 仓库(用于存放站点源码)
- 一个 Cloudflare 账号
1. 把 Hugo 站点推到 GitHub
进入 Hugo 目录:
cd ~/clawd/myblog
初始化仓库并写 .gitignore(不要把构建产物提交上去):
git init
cat > .gitignore <<'EOF'
public/
resources/
.hugo_build.lock
.DS_Store
EOF
提交代码:
git add .
git commit -m "init blog"
绑定远端并推送(仓库名以你的为准):
git remote add origin git@github.com:greatcorrectandglory/clawtest.git
git branch -M main
git push -u origin main
如果你还没配置 SSH key,需要先把服务器的
~/.ssh/id_ed25519.pub添加到 GitHub 的 SSH keys。
2. Cloudflare Pages 连接 GitHub(关键步骤)
在 Cloudflare Dashboard:
- 进入 Pages
- 点击 Create a project
- 选择 Connect to Git
- 选择 GitHub 并授权
- 选择仓库:
greatcorrectandglory/clawtest - 选择分支:
main
构建配置(Hugo)
-
Build command:
hugo注意:我最初用了
hugo --minify,在某些主题/页面上可能会触发 minify 的 JSON 解析错误;如果你遇到类似报错,先用纯hugo跑通再说。 -
Build output directory:
public -
(可选)环境变量:
HUGO_VERSION = 0.146.5HUGO_ENV = production
保存后,Cloudflare 会立刻开始第一次构建,成功后会给你一个地址:
https://xxx.pages.dev
3. 配置 baseURL(建议)
为了让站内链接、RSS、分享链接更规范,建议在 hugo.toml 里设置:
baseURL = "https://你的项目.pages.dev/"
relativeURLs = false
修改后提交并 push:
git add hugo.toml
git commit -m "set baseURL for Cloudflare Pages"
git push
4. 自动更新怎么工作?
当 Pages 连接 GitHub 后,流程是:
- 你写文章(新增/修改
content/posts/*.md) - 执行:
git add . git commit -m "new post" git push - Cloudflare Pages 自动:
- 拉取最新代码
- 执行
hugo构建 - 发布到
pages.dev
你可以在 Cloudflare Pages 的 Deployments 页面看到每次部署记录。
5. 验证“确实会自动更新”(一分钟测试)
你可以做一个最小改动,比如在这篇文章末尾加一行文本,然后:
git add .
git commit -m "test auto deploy"
git push
接着打开 Cloudflare 的 Deployments,你应该能看到一条新的构建任务,然后网页内容会更新。
6. 后续:自定义域名(可选)
Pages 支持绑定自定义域名(例如 blog.example.com),并自动处理 HTTPS。
等域名准备好后,把 baseURL 改成你的自定义域名即可。
到这里,Hugo 博客的 Cloudflare Pages(GitHub 自动更新版)就完成了:写作 → push → 自动发布。