banner
约 900 字
3 分钟

从零开始:在 Cloudflare 上搭建一个全栈博客

摘要

本文分享在 Cloudflare 上搭建全栈博客的经验。利用 Workers、D1、R2 等免费服务构建架构,结合 React 和 Tailwind CSS。作者还自研了基于地理位置的访问分析面板及 UptimeFlare 监控工具。尽管文章不多,但拥有全球加速、零成本的稳定基础设施,为写作提供了坚实保障。

从零开始:在 Cloudflare 上搭建一个全栈博客#

当你在网上找到一个心仪的博客主题,Fork 下来,准备开始写作——却发现文章没写几篇,基础设施倒是越建越多。

这不是自嘲,这是真实写照。

为什么选 Cloudflare?#

很简单:免费额度够用,全家桶齐全。

Workers 每天 10 万次请求、D1 数据库 500 万行读写、R2 对象存储 10GB 免费空间、KV 键值存储——对一个个人博客来说,这些数字约等于"用不完"。

更关键的是,Cloudflare 全球有 300+ 边缘节点。你的文章不需要从某个遥远的机房传到读者眼前,而是从离读者最近的地方直接被访问——比绝大多数收费主机都要快。

技术栈一览#

博客基于 flare-stack-blog,架构大致是这样:

层级

技术

用途

前端

React 19 + TanStack Router/Query TailwindCSS 4 React Hook Form + Zod Recharts

页面渲染、路由

样式

Tailwind CSS

UI 设计

后端

Cloudflare Workers

无服务器 API

数据库

D1 (SQLite)

文章、用户、标签

存储

R2

图片和媒体文件

缓存

KV

站点配置、会话

认证

Arctic + GitHub OAuth

管理员登录

部署

GitHub Actions

CI/CD 自动部署

编辑器

Tiptap 富文本

所见即所得写作

自建访问分析面板#

博客内置的分析只显示基本计数。想要看到访问者的国家分布、浏览器类型、设备比例——数据不够细。

"为什么不自己做一个?"

用 Hono + D1 + Chart.js 搭了一个独立的分析面板。核心逻辑不到 300 行:

  • 前端埋点脚本通过 request.cf API 自动获取访问者国家/城市(不需要额外的 IP 数据库)

  • D1 表记录每次页面浏览,用 bot_score 字段过滤爬虫

  • 后端 API 按时间窗口聚合数据

  • 前端用 Chart.js 渲染流量趋势折线图、地域柱状图、浏览器分布图

面板通过自定义域名独立部署,和博客本身完全解耦。

最大的收获:CF Workers 的 request.cf 对象自带地理位置信息——免费的! 不用接任何第三方 IP 库。

服务监控:UptimeFlare#

博客断线了怎么办?总不能整天手动刷新。

UptimeFlare 是一个开源的 Cloudflare 服务监控工具,同样基于 Workers + D1。它在状态页上展示每个监控项的健康状况,检测到异常时通过 Webhook 发送通知。

数据存在 D1 里,界面是纯静态的 Pages 部署。零运营成本。

GitHub 链接#

  1. Flare-Stack-blog:https://github.com/du2333/flare-stack-blog

  2. UptimeFlare:https://github.com/lyc8503/UptimeFlare

  3. 监控面板(AI 制作):https://github.com/snsmacher/Seval-Panel

最后#

这篇文章本身是这个博客的前几篇内容。前面的时间全花在了建基础设施上——主题、分析、监控、部署流水线。

这可能有点滑稽:一个全栈博客,文章屈指可数,但架构却已经坚如磐石。

但换个角度看,当你写第一篇真正想表达的东西时,你知道它会被免费托管、全球边缘加速、实时监控,然后在一个好看的界面上被来自世界各地的读者阅读。

也算一种仪式感。

END