「Do-Blog」新一代无服务器博客系统
- 内容介绍
- 文章标签
- 相关推荐
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 LINUX DO 社区: 是
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
前言
作为技术员的我们,肯定都有过羡慕别人博客的经历。但如果我们想自己搭建一个呢?
就两个问题
a.不知道怎么写
我之前也尝试过自己编写博客系统,但是想要做好一个可用的实在是太难了。一个现实的项目就是 https://blog.qinyining.cn。
当然,相关的开源博客架构也是有的,但这就出现了第二个问题:
b.没有服务器
现在想做一个网站,你至少需要服务器和域名,服务器的价格对很多人来说是一个巨大的开销,而域名也是一个门槛。更何况服务器还有不稳定的风险…
所以,为什么就不能有一个项目,任何人使用它都可以没有任何成本的在几分钟之内上线博客呢?
于是我做了: Do-Blog
这是一个完全无服务器、边缘原生的博客平台,基于 Cloudflare Workers + D1 + KV 构建
系统架构
+--------------------+
用户请求 ------->| Cloudflare 边缘 |
| (Workers) |
+--------+-----------+
|
+--------------+--------------+
| | |
+-----v----+ +-----v----+ +------v-----+
| Hono | | D1 | | Workers |
| 路由器 | | (SQLite) | | KV |
| + SSR | | | | (缓存 + |
| 引擎 | | 文章 | | 计数器) |
+----------+ | 评论 | +------------+
| 设置 |
+----------+
技术架构分层
| 层级 | 技术选型 | 职责 |
|---|---|---|
| 运行时 | Cloudflare Workers | 边缘计算、请求处理、服务端渲染 |
| 框架 | Hono v4 | 路由、中间件、CORS、请求上下文 |
| 数据库 | D1 (SQLite) | 全部内容的持久化存储 |
| 缓存 | Workers KV | 直读缓存、访问计数器、配置项缓存 |
| 认证 | JWT + PBKDF2-SHA256 | 无状态管理员身份认证 |
| 渲染 | 服务端 TypeScript 模板 | 公共页面零 JS、SEO 友好 |
| 管理后台 | 单文件 SPA (Hash 路由) | 客户端管理面板、无需构建步骤 |
功能
实现了一个博客系统基本完整的功能。
内容管理
- 文章系统 – Markdown 撰写 + 实时预览,自动 slug 生成,封面图片,摘要提取,阅读时间估算
- 分类管理 – 多级树形结构,支持无限嵌套,slug 路由,自定义排序
- 标签管理 – 扁平标签体系,自动统计关联文章数量
- 评论系统 – 嵌套回复,审核队列(通过/待审/拒绝),IP 去重防刷
- 文章版本 – 完整修订历史,版本编号 + 变更说明
- 关于页面 – 可配置的 Markdown 内容,渲染为独立页面
Markdown 编辑器
- 18 个工具栏按钮:加粗、斜体、删除线、H1-H3、无序/有序/任务列表、引用、行内代码、代码块、链接、图片、表格、分割线
- 快捷键:
Ctrl+B加粗、Ctrl+I斜体、Ctrl+K插入链接、Ctrl+S保存、Tab缩进 - 实时分栏预览(200ms 防抖)
- 分类/标签选择器(Chip 式 UI,异步从 API 加载)
- 标题自动生成 slug(支持中日韩字符音译)
- 状态栏显示字数/字符数/行数统计
- 已有文章每 30 秒自动保存
性能优化
- KV 直写缓存 – 设置项、文章列表、单篇文章均缓存于 KV,可配置 TTL
- 缓存自动失效 – 内容变更时通过
CacheService自动清除对应缓存 - 定时计数刷写 – 阅读量先写入 KV 缓冲,每 5 分钟通过
scheduled()批量回写 D1 - 零客户端 JS – 公共页面为纯 SSR HTML/CSS,无 JavaScript 负载(评论表单除外)
国际化 (i18n)
- 中英双语支持(简体中文 / English)
- 前台页面:语言检测链路 –
?lang查询参数 >blog_langCookie >Accept-Language请求头 > 默认中文
设计
- 几何创意设计风格,双色调色板(主色 + 强调色,可配置)
- 亮色/暗色主题,支持
prefers-color-scheme自动检测 + 手动切换 - 响应式布局,CSS Grid / Flexbox,移动端优先断点
- 字体方案:Space Grotesk(标题)+ Inter(正文)+ JetBrains Mono(代码)
UI根据我自己的审美设计
image2492×1708 161 KB
image2492×1708 184 KB
安全机制
- PBKDF2-SHA256 密码哈希(100,000 次迭代),通过 Web Crypto API 实现
- JWT Bearer Token 无状态认证,可配置过期时间
- API 路由 CORS 策略
- 安全响应头:
X-Content-Type-Options、X-Frame-Options、Referrer-Policy - 所有用户生成内容均做 HTML 实体转义(防 XSS)
- 评论点赞使用 IP 哈希去重
- 管理后台路由添加
noindex, nofollow元标签
部署
可以参考MD 文件
GitHub - Hello-Application-XH/Do-Blog: **DOBLOG** 是一个生产级、零服务器的博客系统,完整运行于 Cloudflare...
**DOBLOG** 是一个生产级、零服务器的博客系统,完整运行于 Cloudflare 边缘网络之上。它通过服务端渲染 (SSR) 输出页面,采用几何创意设计体系,内置全功能 SPA 管理后台和中英双语国际化支持 -- 全程无需任何传统服务器。
UI 演示:https://cf-blog.b6q775tzkq.workers.dev/
admin:admin/12345678
感谢ChatGPT/qoder的帮助
网友解答:--【壹】--:
不错不错,谢谢分享。。。有需要的用得上的可以用用
--【贰】--:
好感谢佬友分享的项目先marks一下还有应该可以调用cf的模型让blog有更加现在化的(好像有的网络现在好像直接使用ai来自动渲染网站实现个性化)
--【叁】--:
感谢佬 分享思路,这渲染效果还需要再优化一下子
image1912×952 235 KB
--【肆】--:
很强很强啊
但是:
不是
https://blog.qinyining.cn。
1033了还拿出来鞭笞()
--【伍】--: RenQirui:
定时计数刷写 – 阅读量先写入 KV 缓冲,每 5 分钟通过
scheduled()批量回写 D1
还没看代码,但这句描述是不是有点问题?
KV是读缓存,写入性能是很差的,且没有顺序一致性。
另外,对于论坛、博客、商城这种少写多读多场景,现在可以用D1的 Global read replication,大幅缩短D1查询的往返时间,这样就不那么依赖KV的缓存了(毕竟KV写入次数太少了)。需要顺序一致性的场景可以使用 Sessions API:
Use Sessions API - Global read replication
By using Sessions API for read replication, all of your queries from a single session read from a version of the database which ensures sequential consistency. This ensures that the version of the database you are reading is logically consistent even...
--【陆】--:
感谢佬 没有自己的vps 这个方案很不错 等下搭一下
--【柒】--:
我在国内申请了一个个人备案的域名,打算做成工具站,也就是想宣传一下自己做的工具和服务这些,也不知道做什么样的,感觉花20多天过备案毫无意义的感觉,现在搞个人博客有啥用呢?
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 LINUX DO 社区: 是
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
前言
作为技术员的我们,肯定都有过羡慕别人博客的经历。但如果我们想自己搭建一个呢?
就两个问题
a.不知道怎么写
我之前也尝试过自己编写博客系统,但是想要做好一个可用的实在是太难了。一个现实的项目就是 https://blog.qinyining.cn。
当然,相关的开源博客架构也是有的,但这就出现了第二个问题:
b.没有服务器
现在想做一个网站,你至少需要服务器和域名,服务器的价格对很多人来说是一个巨大的开销,而域名也是一个门槛。更何况服务器还有不稳定的风险…
所以,为什么就不能有一个项目,任何人使用它都可以没有任何成本的在几分钟之内上线博客呢?
于是我做了: Do-Blog
这是一个完全无服务器、边缘原生的博客平台,基于 Cloudflare Workers + D1 + KV 构建
系统架构
+--------------------+
用户请求 ------->| Cloudflare 边缘 |
| (Workers) |
+--------+-----------+
|
+--------------+--------------+
| | |
+-----v----+ +-----v----+ +------v-----+
| Hono | | D1 | | Workers |
| 路由器 | | (SQLite) | | KV |
| + SSR | | | | (缓存 + |
| 引擎 | | 文章 | | 计数器) |
+----------+ | 评论 | +------------+
| 设置 |
+----------+
技术架构分层
| 层级 | 技术选型 | 职责 |
|---|---|---|
| 运行时 | Cloudflare Workers | 边缘计算、请求处理、服务端渲染 |
| 框架 | Hono v4 | 路由、中间件、CORS、请求上下文 |
| 数据库 | D1 (SQLite) | 全部内容的持久化存储 |
| 缓存 | Workers KV | 直读缓存、访问计数器、配置项缓存 |
| 认证 | JWT + PBKDF2-SHA256 | 无状态管理员身份认证 |
| 渲染 | 服务端 TypeScript 模板 | 公共页面零 JS、SEO 友好 |
| 管理后台 | 单文件 SPA (Hash 路由) | 客户端管理面板、无需构建步骤 |
功能
实现了一个博客系统基本完整的功能。
内容管理
- 文章系统 – Markdown 撰写 + 实时预览,自动 slug 生成,封面图片,摘要提取,阅读时间估算
- 分类管理 – 多级树形结构,支持无限嵌套,slug 路由,自定义排序
- 标签管理 – 扁平标签体系,自动统计关联文章数量
- 评论系统 – 嵌套回复,审核队列(通过/待审/拒绝),IP 去重防刷
- 文章版本 – 完整修订历史,版本编号 + 变更说明
- 关于页面 – 可配置的 Markdown 内容,渲染为独立页面
Markdown 编辑器
- 18 个工具栏按钮:加粗、斜体、删除线、H1-H3、无序/有序/任务列表、引用、行内代码、代码块、链接、图片、表格、分割线
- 快捷键:
Ctrl+B加粗、Ctrl+I斜体、Ctrl+K插入链接、Ctrl+S保存、Tab缩进 - 实时分栏预览(200ms 防抖)
- 分类/标签选择器(Chip 式 UI,异步从 API 加载)
- 标题自动生成 slug(支持中日韩字符音译)
- 状态栏显示字数/字符数/行数统计
- 已有文章每 30 秒自动保存
性能优化
- KV 直写缓存 – 设置项、文章列表、单篇文章均缓存于 KV,可配置 TTL
- 缓存自动失效 – 内容变更时通过
CacheService自动清除对应缓存 - 定时计数刷写 – 阅读量先写入 KV 缓冲,每 5 分钟通过
scheduled()批量回写 D1 - 零客户端 JS – 公共页面为纯 SSR HTML/CSS,无 JavaScript 负载(评论表单除外)
国际化 (i18n)
- 中英双语支持(简体中文 / English)
- 前台页面:语言检测链路 –
?lang查询参数 >blog_langCookie >Accept-Language请求头 > 默认中文
设计
- 几何创意设计风格,双色调色板(主色 + 强调色,可配置)
- 亮色/暗色主题,支持
prefers-color-scheme自动检测 + 手动切换 - 响应式布局,CSS Grid / Flexbox,移动端优先断点
- 字体方案:Space Grotesk(标题)+ Inter(正文)+ JetBrains Mono(代码)
UI根据我自己的审美设计
image2492×1708 161 KB
image2492×1708 184 KB
安全机制
- PBKDF2-SHA256 密码哈希(100,000 次迭代),通过 Web Crypto API 实现
- JWT Bearer Token 无状态认证,可配置过期时间
- API 路由 CORS 策略
- 安全响应头:
X-Content-Type-Options、X-Frame-Options、Referrer-Policy - 所有用户生成内容均做 HTML 实体转义(防 XSS)
- 评论点赞使用 IP 哈希去重
- 管理后台路由添加
noindex, nofollow元标签
部署
可以参考MD 文件
GitHub - Hello-Application-XH/Do-Blog: **DOBLOG** 是一个生产级、零服务器的博客系统,完整运行于 Cloudflare...
**DOBLOG** 是一个生产级、零服务器的博客系统,完整运行于 Cloudflare 边缘网络之上。它通过服务端渲染 (SSR) 输出页面,采用几何创意设计体系,内置全功能 SPA 管理后台和中英双语国际化支持 -- 全程无需任何传统服务器。
UI 演示:https://cf-blog.b6q775tzkq.workers.dev/
admin:admin/12345678
感谢ChatGPT/qoder的帮助
网友解答:--【壹】--:
不错不错,谢谢分享。。。有需要的用得上的可以用用
--【贰】--:
好感谢佬友分享的项目先marks一下还有应该可以调用cf的模型让blog有更加现在化的(好像有的网络现在好像直接使用ai来自动渲染网站实现个性化)
--【叁】--:
感谢佬 分享思路,这渲染效果还需要再优化一下子
image1912×952 235 KB
--【肆】--:
很强很强啊
但是:
不是
https://blog.qinyining.cn。
1033了还拿出来鞭笞()
--【伍】--: RenQirui:
定时计数刷写 – 阅读量先写入 KV 缓冲,每 5 分钟通过
scheduled()批量回写 D1
还没看代码,但这句描述是不是有点问题?
KV是读缓存,写入性能是很差的,且没有顺序一致性。
另外,对于论坛、博客、商城这种少写多读多场景,现在可以用D1的 Global read replication,大幅缩短D1查询的往返时间,这样就不那么依赖KV的缓存了(毕竟KV写入次数太少了)。需要顺序一致性的场景可以使用 Sessions API:
Use Sessions API - Global read replication
By using Sessions API for read replication, all of your queries from a single session read from a version of the database which ensures sequential consistency. This ensures that the version of the database you are reading is logically consistent even...
--【陆】--:
感谢佬 没有自己的vps 这个方案很不错 等下搭一下
--【柒】--:
我在国内申请了一个个人备案的域名,打算做成工具站,也就是想宣传一下自己做的工具和服务这些,也不知道做什么样的,感觉花20多天过备案毫无意义的感觉,现在搞个人博客有啥用呢?

