PrimeEdge 主题教程

系统架构

PrimeEdge 博客、后台管理和评论服务的协作方式

系统架构

PrimeEdge 完整方案不是单个应用,而是三套独立部署、相互协作的系统。

三个项目

项目类型核心职责
kokblogHugo 静态博客渲染博客、文档、相册、书签、友链、搜索、RSS 和评论前端
primeedge-adminEdgeOne Pages 后台通过 Gitee / GitHub API 读写博客仓库内容
waline-oeEdgeOne Pages 评论服务提供 Waline API、评论管理后台和评论数据存储

三者可以部署到三个不同域名,也可以按需要绑定到同一主域名下的不同子域名。

数据流

flowchart TD
  Admin["PrimeEdge Admin"] -->|Gitee/GitHub API| Repo["博客 Git 仓库"]
  Repo -->|EdgeOne Pages 构建| Blog["Hugo 静态博客"]
  Blog -->|加载 /search.json| Search["前端 Fuse.js 搜索"]
  Blog -->|@waline/client 请求| Waline["Waline On EdgeOne"]
  Waline -->|读写| WalineKV["WALINE_KV"]
  Admin -->|可选:评论管理| WalineKV
  Admin -->|设置/缓存/图床配置| AdminKV["ADMIN_KV"]

存储分工

数据存储位置说明
文章、笔记、文档、好物、投资笔记博客 Git 仓库的 Markdown 文件Hugo 构建时转成静态页面
相册、友链、书签博客 Git 仓库的 _index.md Front Matter后台可视化编辑后提交
站点配置博客仓库 config.toml后台可表单编辑或源码编辑
搜索索引Hugo 构建输出 /search.json浏览器端加载
RSS / FeedHugo 构建输出 /rss.xml/feed.xmlFullRSS / Feed 输出格式生成
后台设置和缓存ADMIN_KVGit 仓库配置、列表缓存、登录限流、图床配置
评论、用户、计数器、评论设置WALINE_KVWaline On EdgeOne 的持久化数据
后台图床图片GitHub 图床仓库PrimeEdge Admin 图片管理模块使用
评论图片WALINE_KV / 七牛云 / 又拍云Waline 登录用户上传评论图片

部署顺序

推荐顺序:

  1. 部署 waline-oe,绑定 WALINE_KV,配置 JWT_SECRET
  2. 注册第一个 Waline 管理员账号,进入 /ui/worker-setting 配置站点信息和评论策略。
  3. 部署 kokblog,在 config.toml 中配置 params.waline.serverURL
  4. 部署 primeedge-admin,绑定 ADMIN_KV,配置 ADMIN_PASSWORDJWT_SECRET
  5. 在 PrimeEdge Admin 的系统设置中填写 Gitee / GitHub 仓库 API。
  6. 如需在 Admin 中管理评论,再给 Admin 项目绑定评论服务同一个 WALINE_KV

更新链路

后台编辑内容后的完整生效链路是:

  1. Admin 调用 Gitee / GitHub API 修改博客仓库文件。
  2. Git 仓库出现新的提交。
  3. EdgeOne Pages 重新部署 Hugo 博客。
  4. 读者访问静态页面看到新内容。

因此后台保存成功不代表线上博客页面立刻变化。是否自动部署,取决于 EdgeOne Pages 项目的 Git 触发部署设置。

评论链路

评论不经过博客仓库:

  1. 博客页面加载 @waline/client
  2. Waline 前端请求 params.waline.serverURL 下的 /api/comment
  3. Waline On EdgeOne 将评论写入 WALINE_KV
  4. 博客页面再次请求评论 API 时读取最新评论。

评论是动态数据,不需要重新部署博客。

安全边界

  • 博客前端只能看到公开配置,例如 serverURL 和极验 Captcha ID。
  • Git Token 保存在 ADMIN_KV 或 Admin 环境变量中,不写入博客前端。
  • Waline 的 Captcha Key、SMTP 密码、PushPlus Token 保存在 WALINE_KV 或 Waline 环境变量中。
  • SECURE_DOMAINS 可以限制评论 API 只接受指定博客域名跨域请求。
  • Admin 登录失败会在 ADMIN_KV 中记录并递增锁定。

典型域名规划

服务示例
博客https://kok.plus
评论https://wl.kok.plus
后台https://admin.kok.plus

博客配置中只需要公开评论服务地址:

[params.waline]
  enable = true
  serverURL = "https://wl.kok.plus"

后台域名不需要写进博客配置。

下一步

评论

0%