教程 10 分钟阅读

0 技术基础、0 费用:30 分钟搭好你的顶级域名独立博客(CF CMS 保姆级教程)

除了域名本身 0 费用、0 技术基础:用 CF CMS 在 Cloudflare 免费套餐上搭一个顶级域名独立博客的 8 个步骤,以及上线后的日常运维。

你有没有过这种时刻:

在平台上写了两年,一次限流、一次封号,内容和粉丝说没就没。

想搭个属于自己的博客,一搜教程:买服务器、装环境、配 Nginx、上 HTTPS、天天防攻击……还没开始写,就先被劝退了。

今天这篇,就是写给你的。

我会带你用开源项目 CF CMS,在 Cloudflare 上搭一个带顶级域名的独立博客。你现在看到的这个站,就是这么搭起来的。

先把话说在前面:

  • 0 技术基础:不用会写代码。全程就是复制、粘贴、回车;嫌麻烦,还可以把命令直接交给 AI Agent 去跑。
  • 0 费用:除了域名本身(便宜的后缀一年几美元),网站、数据库、图片存储、自动翻译全部跑在 Cloudflare 免费套餐上,不用租服务器。

准备好了吗?我们开始。

先看结论:你能得到什么

  • ✅ 一个属于你自己的顶级域名,比如 yourdomain.com
  • ✅ 自动 HTTPS + 全球 CDN,打开速度不输大站
  • ✅ 中、英、日、西、阿五种语言,写一篇中文,保存时自动翻译
  • ✅ 8 套预制模板 + 一键生成 logo、favicon、主题色
  • ✅ 后台藏在随机秘密路径后面,直接访问 /admin 是 404
  • ✅ 自带 MCP 接口,以后让 AI Agent 帮你发文章、改设置

你需要准备的只有三样:

  • 一个域名(下面教你买)
  • 一个 Cloudflare 免费账号
  • 一台能打开终端的电脑(macOS / Linux;Windows 建议用 WSL)

一张图看懂:它到底跑在哪

CF CMS 架构图:访客通过 yourdomain.com 访问,经 Cloudflare DNS 与 CDN,到达 Pages Functions,后端是 D1 数据库、R2 图片存储和 Workers AI 翻译

简单说:

  • Pages:网站本体,负责渲染页面
  • D1:数据库,存文章、标签、设置
  • R2:存图片
  • Workers AI:你保存文章时,帮你翻译成另外四种语言

没有一台需要你维护的服务器。 打补丁、扩容、防 DDoS,都是 Cloudflare 的事。

全流程一图看懂:8 步

从 0 到上线的 8 个步骤:买域名、接入 Cloudflare、建 API Token、开通 R2、拿代码、一条命令部署、进隐藏后台、写作与运维

顺利的话 30–60 分钟。其中真正需要你动脑的,只有第 1 步:起个好名字。

第 1 步:选购域名

域名是你在互联网上的门牌号,也是这套方案里唯一要花钱的地方。

在任意一家正规注册商购买都可以,比如 Spaceship、Cloudflare Registrar、Namecheap。选一家价格透明、续费不坑、支持 WHOIS 隐私保护的就行。

挑域名的 3 个小建议:

  1. 短、好记、好拼。能口述给朋友听的,就是好域名。
  2. 看续费价,别只看首年价。有些后缀首年很便宜,第二年翻好几倍。
  3. 后缀不必执着 .com:.cc、.dev、.me 都很适合个人博客。

第 2 步:把域名接入 Cloudflare

  1. 打开 Cloudflare 官网,注册一个免费账号。
  2. 点 Add a site / 添加站点,输入你的域名,套餐选 Free。
  3. Cloudflare 会给你**两个 Nameserver(名称服务器)**地址。
  4. 回到你买域名的注册商后台,把 Nameserver 改成这两个。
  5. 等几分钟到几小时,Cloudflare 显示 Active 就成了。

关键点:域名要和后面部署用的,是同一个 Cloudflare 账号。 安装脚本会用 API Token 去找这个域名。

第 3 步:创建 API Token(照抄就行)

路径:Cloudflare 右上角头像 → My Profile → API Tokens → Create Token → Create Custom Token。

按下面这张图,一项一项勾上:

Cloudflare API Token 权限清单:Account 级 Cloudflare Pages Edit、D1 Edit、Workers R2 Storage Edit、Account Settings Read;Zone 级 Zone Read、DNS Edit

  • Account · Cloudflare Pages · Edit
  • Account · D1 · Edit
  • Account · Workers R2 Storage · Edit
  • Account · Account Settings · Read
  • Zone · Zone · Read(要绑自己的域名时)
  • Zone · DNS · Edit(要绑自己的域名时)

两个提醒:

  • Workers AI 不用额外权限,网站运行时走 Pages 的 AI 绑定。
  • 这个 Token 只给安装脚本用,别交给写作 Agent。 生成后只显示一次,先存好。

第 4 步:开通 R2

R2 是放图片的地方,必须提前在控制台手动开通,脚本没法替你点。

进入 Cloudflare 控制台左侧的 R2,点开通即可。

⚠️ 实话实说:有的账号开通 R2 时要先绑一张卡或 PayPal。别慌,绑了不等于扣钱,在免费额度(10 GB 存储)以内不收费。一个个人博客的图片,很难用完。

我第一次部署就卡在这里:脚本跑到一半报 10042,原因就是 R2 没开通。开通之后重跑,一次过。

第 5 步:拿到代码

CF CMS 是开源的,代码在 GitHub:github.com/jemkuo/cf-cms

二选一:

  • 推荐:在 GitHub 上点 Fork,复制一份到你自己的账号,以后改起来方便。
  • 或者直接克隆:
git clone https://github.com/jemkuo/cf-cms.git
cd cf-cms

电脑上需要先装好 Node.js 20 或更新版本(官网下载安装包,一路下一步)。

第 6 步:一条命令部署 ⭐

这是整篇最核心的一步。先把第 3 步的 Token 放进环境变量(它只存在你的终端里,脚本不会打印出来):

export CLOUDFLARE_API_TOKEN=粘贴你的token

然后,一条命令:

npm install && ./scripts/setup.sh --project myblog --domain yourdomain.com

把 myblog 换成你想要的项目名,yourdomain.com 换成你的域名。

不放心?先加 --dry-run 预演一遍,只检查、不创建任何东西:

./scripts/setup.sh --project myblog --domain yourdomain.com --dry-run

它会先给你做一次「体检」

脚本动手之前,会打印一份预检清单:Token、账号、Pages、D1、R2、域名,逐项打勾。

setup.sh 预检清单终端示意:第一次运行时 R2 未开通显示错误 10042,开通 R2 后重跑全部通过,并提示域名已有旧 DNS 记录

  • 全是 ✓:自动建 D1 数据库、R2 存储桶、Pages 项目、各种密钥,然后发布网站。
  • 有 ✗:一个资源都不建,直接告诉你哪一步有问题、去控制台哪里改、改完用哪条命令重跑,中英文都有。
  • account id 不用自己找:Token 只能看到一个账号时,脚本自动填。

半路失败?直接重跑

进度记在本地的 .cf-cms-setup.json 里。重跑会接着做,已经建好的 D1、R2、Pages 都会复用,不会重复创建,也不会清空你的文章。

域名上有旧记录?它会先问你

如果你的域名以前指向别的服务器,脚本会先列出旧的 A / AAAA / CNAME 记录,默认不删。

你确认可以替换后,加上 --replace-dns 重跑(或者在提示里回答 y),它会换成一条指向 Pages 的 CNAME:

DNS 记录切换前后对比:两条指向旧服务器的 A 记录被替换为指向 yourproject.pages.dev 的橙色云 CNAME,TXT 验证记录保留

注意:替换之后,旧服务器在这个域名上的服务就访问不到了。TXT 之类的其他记录会保留。

跑完之后

终端最后会打印一行 Admin 地址,长这样:

Admin:      https://yourdomain.com/<ADMIN_SAFEPATH>/admin/

后台密码是随机生成的,写在项目目录的 .dev.vars 文件里,不会显示在屏幕上。

👉 把 Admin 地址和 .dev.vars 一起存好,这就是你博客的钥匙。

域名状态如果显示 pending,别急,证书签发和 DNS 生效一般要几分钟。

第 7 步:进入隐藏后台,换上你的风格

打开那个 Admin 地址,输入密码:

CF CMS 隐藏后台登录页真实截图,地址为 yourdomain.com/<ADMIN_SAFEPATH>/admin/

为什么要藏起来? 绝大多数扫描器都在撞 /admin、/wp-login。CF CMS 的后台在一串随机路径后面,直接访问 /admin 返回 404,连登录框都看不到。

进去之后先做两件事:

  1. 选模板:个人技术博客(Dispatch、Signal)、生活方式(Atelier、Hearth)、企业首页(Practice、Civic)、科技公司(Launch、Orbit),外加原创的 Paper、Ink、Terminal。
  2. 一键生成视觉套件:点 Generate visual kit,自动生成和模板配套的 logo、favicon、主题色。不满意就再生成,或者换成自己的图。

第 8 步:写文章,自动变成五种语言

新部署的站点自带几篇示例文章,你可以先看看效果:

CF CMS 部署完成后的博客首页真实截图,默认 Paper 模板,顶部可切换中英日西阿五种语言

看完删掉,写你自己的:

  • 用 Markdown 写,标题、列表、代码块、图片都支持
  • 图片直接上传,存进 R2
  • 保存时勾选翻译,Workers AI 自动生成英、日、西、阿四个版本(阿拉伯语自动从右往左排版)
  • 每篇文章可以单独设置 SEO:关键词、canonical、Open Graph 分享图

写一次,五种语言的读者都能搜到你。 这是很多大平台都给不了的。

日常运维:让 AI Agent 当你的编辑

博客上线只是开始。真正省心的,是日常运维几乎可以交给 AI。

1. 一句话接入 AI Agent

CF CMS 自带 MCP 接口(地址是你域名下的 /mcp)。在 Cursor、Claude 等支持 MCP 的客户端里,贴一段项目 README 里现成的「一句话说明」,再把 .dev.vars 里的 ADMIN_API_TOKEN 填进去,Agent 就能:

  • 列出、创建、修改、发布、删除文章
  • 管理标签、栏目、模板、logo
  • 上传图片

接上之后,你可以直接说:

「帮我建一篇中文草稿,slug 叫 edge-notes,放到 notes 栏目,并翻译成其他语言。」

安全设计:ADMIN_API_TOKEN 只能管内容,动不了部署,也碰不到你的 Cloudflare 账号。这也是为什么第 3 步的 Cloudflare Token 不要给 Agent。

2. 定期轮换密钥

觉得密码或 Token 可能泄露了?一条命令换掉:

npx wrangler pages secret put ADMIN_PASSWORD --project-name myblog

ADMIN_API_TOKEN、SESSION_SECRET 也一样。部署完成后,第 3 步那个 Cloudflare API Token 也可以删掉或轮换,等下次部署再新建。

3. 免费额度心里有数

资源 在博客里干什么 常见免费额度
Pages 网站和 Functions 每月 500 次构建,每天 10 万次 Functions 请求
D1 文章、设置 5 GB,按天限制读写行数
R2 图片 10 GB 存储,有限次数的读写操作
Workers AI 保存时翻译 每天 10,000 Neurons

额度以 Cloudflare 控制台为准。个人博客的流量,基本碰不到天花板。 翻译只在保存时跑,不是每次有人访问都跑,Workers AI 额度每天重置。

4. 常见报错速查

你看到的 怎么办
✗ R2 is not enabled,错误 10042 去控制台开通 R2(可能要先绑付款方式),然后重跑
Token 无效(10000)或权限不足(9109、HTTP 403) 按第 3 步的清单补齐权限,重新 export 后重跑
域名一直 pending 看脚本列出的旧 A / AAAA / CNAME,确认后加 --replace-dns 重跑;DNS 对了之后证书还要几分钟
Pages 项目名被占用 换一个 --project 名字
D1、R2、Pages 已存在 直接重跑,同名资源会复用
网络错误 检查网络后重跑,做完的步骤会跳过

记住一句话:报错了,先看提示,改完重跑。 脚本会告诉你去哪改、怎么跑。

关于「0 技术基础」,说句实话

这套流程里,你确实要打开终端、敲几条命令。

但你不需要理解它们在干嘛。你要做的只是:

  1. 复制命令
  2. 粘贴到终端
  3. 回车,看有没有 ✗

更懒的办法:把这篇文章和 README 丢给你的 AI Agent,让它替你跑。 它卡住的时候,要么是要你去控制台点一下(比如开通 R2),要么是要你确认一下(比如替换 DNS),跟着提示做就行。

算一笔账

项目 费用
域名 每年几美元起(看后缀)
服务器 0(Cloudflare Pages)
数据库 0(D1 免费额度)
图片存储 0(R2 免费额度)
五语翻译 0(Workers AI 免费额度)
HTTPS 证书 + CDN 0
CMS 软件 0(开源)

除了域名,一分钱不花。

最后

平台给你流量,但地盘永远是平台的。

独立博客才是你的数字资产:域名是你的,内容是你的,读者能直接找到你。

今天就迈出第一步:挑一个你喜欢的域名,照着这篇走一遍。

搭建过程中遇到问题,欢迎留言。觉得项目有用,也欢迎去 GitHub 给 CF CMS 点个 ⭐。

下一篇,我们聊聊怎么让 AI Agent 每天帮你运营这个博客。