从零搭建个人博客:GitHub + Firefly + Cloudflare Pages

2533 字
13 分钟
从零搭建个人博客:GitHub + Firefly + Cloudflare Pages

一直想拥有一个自己的博客,用来记录学习、生活和一些零散的想法。折腾了一番之后,我终于让它通过自己的域名打开了。

这篇文章整理了我实际走通的路线:在 GitHub 创建博客仓库,使用 Firefly 主题,通过 Cloudflare Pages 发布网站,最后绑定自己的域名。 初次搭建可以主要使用浏览器完成,不必先配置本地开发环境。

我的博客地址是:litumast.top。

一、先弄清楚这几个平台的作用#

名称在博客中负责什么
Firefly提供博客主题、页面布局和文章功能
GitHub保存博客代码、配置、图片和 Markdown 文章
Cloudflare Pages将仓库中的内容构建成网站,并自动部署
Cloudflare DNS管理域名解析,让域名找到博客
Spaceship我购买和续费域名的平台

之后更新博客的流程就是:

修改文章或配置 → 提交到 GitHub → Cloudflare 自动构建 → 网站更新

域名是网站的地址,托管平台负责提供网页。域名接入 Cloudflare DNS 后,仍然在原来的注册商续费。

二、准备账号和主题仓库#

需要准备一个 GitHub 账号 和一个 Cloudflare 账号。有自己的域名就可以在后面绑定;暂时没有域名,也可以先使用 Pages 分配的地址。

1. 创建自己的博客仓库#

打开 Firefly 官方仓库。

如果页面有 Use this template,选择 Create a new repository,填写自己的账号和仓库名称。我使用的仓库名称是 litumast-blog。

也可以使用 Fork 创建自己的副本。后面的操作都在自己账号下的仓库中进行。

创建完成后,应能看到 src、public、package.json 等文件和目录。记住页面左上角的默认分支名称,我的仓库是 master,其他仓库可能是 main。

2. 修改网站基本信息#

打开仓库中的 src/config/siteConfig.ts,点击铅笔图标进入编辑模式。

找到相应字段,替换成自己的内容。例如:

title: "里托大师的博客",
subtitle: "记录学习与生活",
site_url: "https://litumast.top",
description: "分享学习笔记、生活记录和一些想法。",

这只是需要修改的字段示例,不是整个文件。保留文件中其余配置,以及原来的引号、逗号和括号。

如果暂时没有自己的域名,等 Pages 部署成功后,将 site_url 改成实际分配的 https://项目名.pages.dev 地址。

修改完成后点击 Commit changes。如果弹窗提供分支选项,选择直接提交到默认分支,再确认提交。

网页上的编辑必须提交才会保存到仓库;仅在编辑框中输入文字,还没有完成发布。

三、通过 Cloudflare Pages 部署#

1. 找到 Pages 入口#

登录 Cloudflare 控制台,进入 Workers & Pages,点击创建应用。

我当时看到的是一个写着 Make something new 的页面,里面有 GitHub、GitLab、Hello World 等选项。Pages 入口在这张卡片下方的小字中:

想要部署 Pages?开始使用

点击这里的“开始使用”,再选择 导入现有 Git 存储库。

界面之后可能调整;关键是确认自己进入的是 Pages 的 Git 部署流程。

2. 连接 GitHub#

按提示连接 GitHub 账号,授权访问自己的博客仓库,然后选中 litumast-blog。

如果列表里找不到仓库,检查 GitHub 的授权范围是否包含它。选择仓库后进入“设置构建和部署”。

3. 填写构建设置#

我成功部署时使用的是:

设置项我的配置
项目名称litumast-blog
生产分支master
框架预设Astro
构建命令pnpm run build
构建输出目录dist
根目录留空,使用仓库根目录

生产分支必须与自己的仓库一致。输出目录输入框外如果已经显示 /,框内只填 dist 即可。

在“环境变量(高级)”中,我添加了:

变量名称值
NODE_VERSION24.5.0
PNPM_VERSION11.22.0

这些是我这次部署的版本,不是所有 Firefly 版本都必须照抄。 创建仓库后,应查看 package.json:engines.node 表示 Node.js 要求,packageManager 表示项目指定的包管理器版本。将构建环境与自己的仓库要求对应起来。

Pages 会安装依赖,此页面不需要另填安装命令。这次使用主题的静态构建方式,环境变量中没有添加 CF_WORKERS。

构建环境的版本设置可参考 Cloudflare 构建环境文档。

4. 保存并部署#

点击 保存并部署,等待安装依赖、构建和发布完成。

成功后,我拿到的地址是:

https://litumast-blog.pages.dev

打开实际分配的地址,检查首页和文章。如果构建失败,先看具体错误日志,再修改配置;只看最后一句“部署失败”通常找不到原因。

到这里,博客已经有可访问的地址了。接下来是给它绑定自己的域名。

四、将域名 DNS 接入 Cloudflare#

我的域名 litumast.top 在 Spaceship 购买。绑定这个不带 www 的根域名时,需要将它的 DNS 接入与 Pages 项目相同的 Cloudflare 账号。

1. 从 Pages 添加自定义域#

进入 Workers & Pages → 博客项目 → 自定义域 → 设置自定义域,输入自己的域名。

如果出现“DNS 转移管理”,按提示开始接入。在“添加站点”页面选择 连接域名,选择免费方案,并扫描已有 DNS 记录。

这里的“连接域名”是将 DNS 交给 Cloudflare 管理。域名的注册和续费仍在 Spaceship。

2. 检查导入的记录#

自动扫描不一定包含所有记录,需要与原 DNS 平台核对。使用域名邮箱或其他子域服务的人,还应保留对应的记录。

我之前试过其他托管平台,扫描结果中出现了两条旧博客的根域名 A 记录。我在确认它们指向旧站点后,将它们替换成新博客的 CNAME:

设置项示例
类型CNAME
名称@
内容litumast-blog.pages.dev
代理状态已代理
TTL自动

@ 表示根域名。内容填写自己项目的 Pages 地址,不加 https:// 和末尾斜杠。不要为了处理博客解析而清空其他服务的记录。

3. 修改名称服务器#

继续激活后,Cloudflare 会分配两条名称服务器地址。

一定复制自己页面提供的两条地址,不要使用其他教程里的示例。

我在 Spaceship 中的操作顺序是:

  1. 打开“域名管理器”,选择自己的域名。
  2. 进入“名称服务器和 DNS”。
  3. 点击名称服务器旁的“更改”。
  4. 选择“自定义名称服务器”。
  5. 用 Cloudflare 提供的两条地址替换原来的 Spaceship 名称服务器。
  6. 保存设置。

这是修改名称服务器,不是在“高级 DNS”中新增两条 NS 记录。若原平台已开启 DNSSEC,先按迁移提示处理并关闭旧 DNSSEC,接入完成后再配置。

4. 等待激活#

返回 Cloudflare 检查名称服务器。我的页面提示通常需要 1~2 小时,最长可能到 24 小时,以实际检测结果为准。

等待期间不必反复更换地址。当页面显示“您的域现在受 Cloudflare 保护”时,说明域名接入已经完成。

五、完成 Pages 自定义域绑定#

DNS 激活后,还需要完成 Pages 项目中的域名绑定。

重新进入 Workers & Pages → litumast-blog → 自定义域,添加 litumast.top,确认页面显示的 CNAME 目标是自己的 Pages 地址,然后点击 激活域。

我之前已经添加过 CNAME,所以确认页中的新旧记录完全一样,这是正常的。此时仍需点击激活,完成项目关联。

等待自定义域和证书就绪后,打开:

https://litumast.top

当自己的域名能够通过 HTTPS 正常显示博客首页,整条发布流程就走通了。只添加 DNS 记录并不能代替 Pages 的自定义域绑定,具体要求见 Cloudflare 自定义域文档。

六、以后如何更新博客#

Firefly 的文章可以使用 .md 格式,存放在 src/content/posts 中。文件开头是一段文章信息,后面是正文,例如:

---
title: 我的第一篇文章
published: 2026-09-27
description: 记录一次新的开始。
tags: [生活, 随笔]
category: 生活记录
draft: false
---
这里开始写正文。
## 一个小标题
记录今天学到的东西。

通过 GitHub 网页发布文章时,进入 src/content/posts,使用 Add file → Upload files 上传 Markdown 文件,再点击 Commit changes 提交到生产分支。Cloudflare 会自动构建,成功后文章就会出现在网站上。

如果在电脑上使用 GitHub Desktop 编辑,则需要完成保存、Commit 和 Push。Commit 只记录本地修改,Push 才会将提交上传到 GitHub。

七、这次搭建中容易弄混的地方#

遇到的情况应该检查什么
创建应用后不知道如何进入 Pages查看创建页是否有单独的 Pages 入口
修改后网站一直没变化是否提交成功,以及 Cloudflare 最新部署是否成功
仓库中找不到自己的修改是否编辑了正确仓库、正确分支
部署失败后网页还是旧内容失败的构建不会替换上次成功发布的版本
域名已在 Cloudflare 激活,但博客打不开Pages 的自定义域绑定是否完成,HTTPS 是否就绪
修改头像或背景后不显示文件名、大小写、路径与扩展名是否一致

此外,不要混淆两个管理入口:以后调整 DNS 到 Cloudflare 操作,域名到期续费仍在 Spaceship 操作。

从模板仓库到自己的网址,真正需要弄明白的就是代码、部署和域名之间的关系。网站上线之后,接下来就是慢慢写文章,把这片小天地填充起来。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
从零搭建个人博客:GitHub + Firefly + Cloudflare Pages
https://litumast.top/posts/build-personal-blog/
作者
里托大师
发布于
2026-09-27
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
里托大师
Nothing-personal
公告
愿你效仿韩立的和光同尘,王林的逆修踏天,石昊的独断万古。 借用韩立的话:“或许就是因为起点低,所以遇见任何能改变自己命运的机会时才会抓的更牢,这没什么可耻的。”
分类
标签
最新动态
站点统计
文章
15
分类
4
标签
24
总字数
25,160
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录