博客后台和域名
2026年7月12日 7 分钟阅读 0 次阅读
从静态博客到全功能后台,评论、AI 审核、图片水印、定时发布、数据备份,全部跑在 Cloudflare 免费额度上。
距上篇文章已经过去一个多月了,本来想月更个两三篇文章的。奈何回家就想躺着刷手机。
域名这事
有个事得说一下。当初搞博客的时候就想找个短域名,eastwind.com 这种早就被注册了,east 之类的变体也全没了。没办法才用了 easte.cc,easte 是 east 的变体,能用但不好记,每次敲都怕别人打错。 5 月底刷域名的时候发现 ewd.cc 到期了,原主没续。这名字多好——三个字母,east wind 的缩写,easte.cc 的正统接班人。等了一个多月,注册局终于放出来了。现在 ewd.cc 就是我的了,三个字母,够短够好记。
为什么要自己搞后台
博客最早就是一堆静态 Markdown 文件,推到 GitHub,Actions 自动构建部署。简单粗暴,但用久了总觉得非常的割裂,文档在Github,图片在R2,评论在D1,管理起来非常的麻烦。算了干脆做个后台,把评论、配置、内容管理全收进来放在R2上。再多点MD文档也无所谓。

选型
框架用 SvelteKit。原因不复杂:Cloudflare 有官方适配器,部署几乎零配置。Svelte 5 的响应式写起来比 React 省事不少,不用满屏 useState。
数据库继续选 Cloudflare D1。直接把原来的评论架构迁移过来就行。
文件存储用 R2。图片、文章、备份全扔里面。R2 不收出口流量费,比 S3 省钱。
AI 能力直接接 Cloudflare Workers AI,用来做评论审核、文章润色、标签生成。它每天 有10,000 neurons,不同模型消耗的 neurons 不一样,比如:
- Llama 3.1 8B:约 70 neurons/千token
- 通义千问 30B:消耗更多
- Whisper(语音识别):约 800 neurons/分钟
实际能调多少次取决于你用的模型和输入输出长度。对于博客评论审核这种场景,一天几百次请求问题不大,
这些服务全部跑在 Cloudflare 免费额度上,一个月零成本。
整体架构
系统分三层。
管理界面是 SvelteKit 渲染的,部署在 Workers 上。页面包括仪表盘、评论管理、文章编辑、图片管理、系统设置、定时任务、审计日志这些。
API 层所有请求走同一个入口,靠 event 字段区分操作类型。比如 COMMENT_SUBMIT 是发评论,CONTENT_SAVE 是保存文章,AI_POLISH 是 AI 润色。这种设计不算时髦,但好处是认证、CORS、日志、限流这些公共逻辑只写一遍。
数据层,D1 存评论、配置、会话、定时任务这些结构化数据,R2 存文章和图片文件。
内容管理
文章全部以 Markdown 格式存在 R2 里。
编辑器支持 Markdown 语法,有快捷键,能拖拽上传图片。保存的时候内容写到 R2,同时触发前端仓库的 GitHub Actions 重新构建。手机上也能写,体验比命令行强太多。

图片上传走 R2。上传时可选自动转 WebP 和加水印。水印功能用 Photon 这个 WASM 图片处理库实现,支持自定义水印图片、位置、大小。 还有个全文搜索功能。输入关键词,后端遍历 R2 里的 Markdown 文件,返回匹配的标题和摘要。文件不多的时候够用了,比搭 Elasticsearch 轻量太多。
AI 功能
接了 Cloudflare Workers AI,做了几个能力。
文章润色:给 AI 一段文字,让它帮忙改通顺。流式输出,前端能实时看到生成过程,体验比等一个完整响应好很多。
元数据补充:AI 读取文章内容,自动补全 frontmatter 里的标题、日期、标签这些字段。不用手动一个个填。
模型可以切换,默认用通义千问 30B,也支持 Llama、DeepSeek 这些。每个功能用到的模型可以不一样。
定时发布
写完文章不一定马上发。可以设个时间,后台每 15 分钟跑一次定时任务,检查有没有到期的文章。到了就自动触发前端部署。
Cloudflare 的 cron 最低频率就是 15 分钟,对博客来说够了。定时任务还做了并发锁,防止两个实例同时处理同一篇文章。
安全
后台登录用密码,登录后生成一个 UUID token 存到数据库,同时写到 httpOnly cookie 里。7 天过期。
每个管理操作都要带 CSRF token,防止跨站请求伪造。token 绑定到当前会话,从专门的接口获取。
敏感操作有审计日志,谁在什么时候删了什么评论、改了什么配置,都有记录。出问题能查。
API 请求有限流。同一 IP 在一定时间内的请求数超过阈值就拒绝。用的是 D1 做分布式计数,跨实例生效。
数据备份
每天凌晨 3 点自动备份 D1 数据库到 R2。把评论、配置、访问计数、会话、定时任务、审计日志这些表导出成 JSON 文件,打包存到 R2 的 backups 目录下。保留 30 天,超期自动清理。
备份是 best-effort 的,失败了不影响正常运行,只是记一条警告日志。
系统监控
后台有个健康检查页面,检查 D1、R2、AI、配置、部署钩子这些服务的状态。每个服务返回健康、降级或不可用。还有系统统计,看评论数、文章数、图片存储量这些数据。
最后
整个后台从开始写到现在,断断续续改了好几轮。核心功能大概一周搞定,后面都是修修补补和加新功能。










