系统架构
PrimeEdge 博客、后台管理和评论服务的协作方式
系统架构
PrimeEdge 完整方案不是单个应用,而是三套独立部署、相互协作的系统。
三个项目
| 项目 | 类型 | 核心职责 |
|---|---|---|
kokblog | Hugo 静态博客 | 渲染博客、文档、相册、书签、友链、搜索、RSS 和评论前端 |
primeedge-admin | EdgeOne Pages 后台 | 通过 Gitee / GitHub API 读写博客仓库内容 |
waline-oe | EdgeOne 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 / Feed | Hugo 构建输出 /rss.xml、/feed.xml | 由 FullRSS / Feed 输出格式生成 |
| 后台设置和缓存 | ADMIN_KV | Git 仓库配置、列表缓存、登录限流、图床配置 |
| 评论、用户、计数器、评论设置 | WALINE_KV | Waline On EdgeOne 的持久化数据 |
| 后台图床图片 | GitHub 图床仓库 | PrimeEdge Admin 图片管理模块使用 |
| 评论图片 | WALINE_KV / 七牛云 / 又拍云 | Waline 登录用户上传评论图片 |
部署顺序
推荐顺序:
- 部署
waline-oe,绑定WALINE_KV,配置JWT_SECRET。 - 注册第一个 Waline 管理员账号,进入
/ui/worker-setting配置站点信息和评论策略。 - 部署
kokblog,在config.toml中配置params.waline.serverURL。 - 部署
primeedge-admin,绑定ADMIN_KV,配置ADMIN_PASSWORD和JWT_SECRET。 - 在 PrimeEdge Admin 的系统设置中填写 Gitee / GitHub 仓库 API。
- 如需在 Admin 中管理评论,再给 Admin 项目绑定评论服务同一个
WALINE_KV。
更新链路
后台编辑内容后的完整生效链路是:
- Admin 调用 Gitee / GitHub API 修改博客仓库文件。
- Git 仓库出现新的提交。
- EdgeOne Pages 重新部署 Hugo 博客。
- 读者访问静态页面看到新内容。
因此后台保存成功不代表线上博客页面立刻变化。是否自动部署,取决于 EdgeOne Pages 项目的 Git 触发部署设置。
评论链路
评论不经过博客仓库:
- 博客页面加载
@waline/client。 - Waline 前端请求
params.waline.serverURL下的/api/comment。 - Waline On EdgeOne 将评论写入
WALINE_KV。 - 博客页面再次请求评论 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"
后台域名不需要写进博客配置。
评论