用 Astro 和 Cloudflare 搭一个自己的博客
从零到一个能访问的静态博客:Astro 负责生成,Cloudflare 负责分发。
这个博客就是这套流程的产物。没有数据库,没有服务器,也没有后台管理面板;文章是仓库里的 Markdown 文件,push 之后自动构建、自动上线。
为什么是静态站点
博客的内容在发布之后就很少变化,没必要每次访问都去查数据库、拼页面。构建时把 Markdown 一次性生成 HTML,之后所有访客拿到的都是现成文件——快,而且几乎没有被攻击的面。
需要动态能力时再补:评论用 Giscus,搜索用 Pagefind,统计用 Cloudflare Web Analytics。它们都不需要我维护一台服务器。
初始化
确保本机有 Node 22 和 pnpm,然后:
pnpm create astro@latest my-blog
cd my-blog
pnpm install
pnpm dev
打开 http://localhost:4321,能看到 Astro 的默认首页就说明环境没问题。
我删掉了模板自带的示例页面,只保留:
src/
├── components/
├── content/posts/
├── layouts/
├── pages/
└── styles/
写第一篇文章
在 src/content/posts/ 下新建一个 .md 文件,文件名就是 URL:
---
title: 第一篇文章
description: 一句话说明这篇文章写什么。
pubDate: 2026-11-06
tags: [日常]
draft: false
---
正文用 Markdown 写。Astro 的 Content Collections 会校验 frontmatter,字段写错时构建直接报错,不会等到线上才发现。
部署到 Cloudflare
把仓库推到 GitHub,然后在 Cloudflare 控制台:
- Workers & Pages → Create → Workers → Connect to Git;
- 选择仓库;
- 构建命令填
pnpm build,部署命令填npx wrangler deploy; - 环境变量加一个
NODE_VERSION=22。
首次部署会得到一个 *.workers.dev 地址。确认能打开后,在 Settings → Domains & Routes 里绑定自己的域名,证书由 Cloudflare 自动签发。
花了多少钱
0 元/月。静态请求和带宽不限量,构建次数每月 500 次,个人博客用不完。唯一固定支出是域名续费。
真正花时间的地方不是部署,是决定写什么、以及把一篇东西写完。