「Do-Blog」新一代无服务器博客系统

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社...
「Do-Blog」新一代无服务器博客系统
「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_lang Cookie > Accept-Language 请求头 > 默认中文

设计

  • 几何创意设计风格,双色调色板(主色 + 强调色,可配置)
  • 亮色/暗色主题,支持 prefers-color-scheme 自动检测 + 手动切换
  • 响应式布局,CSS Grid / Flexbox,移动端优先断点
  • 字体方案:Space Grotesk(标题)+ Inter(正文)+ JetBrains Mono(代码)
    UI根据我自己的审美设计
    image
    image

安全机制

  • PBKDF2-SHA256 密码哈希(100,000 次迭代),通过 Web Crypto API 实现
  • JWT Bearer Token 无状态认证,可配置过期时间
  • API 路由 CORS 策略
  • 安全响应头:X-Content-Type-OptionsX-Frame-OptionsReferrer-Policy
  • 所有用户生成内容均做 HTML 实体转义(防 XSS)
  • 评论点赞使用 IP 哈希去重
  • 管理后台路由添加 noindex, nofollow 元标签

部署

可以参考MD 文件

github.com

GitHub - Hello-Application-XH/Do-Blog: **DOBLOG** 是一个生产级、零服务器的博客系统,完整运行于 Cloudflare...

**DOBLOG** 是一个生产级、零服务器的博客系统,完整运行于 Cloudflare 边缘网络之上。它通过服务端渲染 (SSR) 输出页面,采用几何创意设计体系,内置全功能 SPA 管理后台和中英双语国际化支持 -- 全程无需任何传统服务器。

UI 演示:https://cf-blog.b6q775tzkq.workers.dev/
admin:admin/12345678

感谢ChatGPT/qoder的帮助

8 个帖子 - 8 位参与者

阅读完整话题

来源: linux.do查看原文