跳到主要内容

OneBlog部署

最后更新于:

OneBlog 部署文档

文档版本:2026-07-06
仓库:https://cnb.cool/onedayxyy/hugo-teek-private
博客站点:https://onedayxyy.cn
管理后台:https://oneblogadmin.onedayxyy.cn


目录

  1. 项目简介
  2. 技术架构
  3. 特色优势
  4. 部署文档
  5. 待优化项
  6. 附录

版权

次项目是在上游 余温大佬开发的 Hugo Teek / RouxZhee 主题能力之上 二开的,增加了可视化运维后台(基于 PrimeEdge Admin 适配),使用户可以在浏览器中编辑 Markdown、调整站点配置、上传媒体,而无需在本机安装 Hugo 或手工改 Git。

感谢余温大佬开发的优秀项目❤️❤️❤️(也感谢KOK大佬贡献的基于EO的博客后台)

这里说下关于oneblog项目的迭代历程:

vdoing博客(基于vuepress,Evan大佬开发)-->teek博客(基于vitepress,天客大佬开发)-->RouxZhee博客(基于hugo, 余温大佬开发)-->oneblog博客(基于RouxZhee博客二开,one菜鸡二开)。(这一路走来实属不易哈哈哈🤣🤣🤣)

仓库地址

待更新。

1. 项目简介

OneBlog 是一套「静态博客 + Web 管理后台」一体的个人站全栈方案,以 monorepo 形态托管于腾讯云开发者平台 CNB(Cloud Native Build)。

它在上游 Hugo Teek / RouxZhee 主题能力之上,增加了可视化运维后台(基于 PrimeEdge Admin 适配),使作者可以在浏览器中编辑 Markdown、调整站点配置、上传媒体,而无需在本机安装 Hugo 或手工改 Git。

组件说明生产域名
博客前台Hugo Extended 静态站点,主题 hugo-teekhttps://onedayxyy.cn
管理后台EdgeOne Pages(静态资源 + Edge Functions + KV)https://oneblogadmin.onedayxyy.cn
源码仓库CNB 唯一真相源;Admin 写入与 CI 均在此仓onedayxyy/hugo-teek-private
对象存储站点静态产物同步到腾讯云 COS,由 EdgeOne CDN 加速COS Bucket + onedayxyy.cn
媒体 / 备份七牛云 Kodo(图床、媒体库、JSON 配置备份)oneblogoss.onedayxyy.cn(可选)
评论Twikoo站点内嵌
代码备份CNB master push 时同步到 Giteegitee.com/onlyonexl/ongblog-gitee-backup

核心产品定位:

  • 面向技术博客 / 文档库 / 个人知识站
  • 「Git 即数据库」:文章、文档、TOML/JSON 配置全部落盘在 Git,可版本回滚
  • 「无传统服务端数据库」:后台态用 EdgeOne KV,内容态用 Git
  • 「保存即可发布」:Admin 写入 → commit/push → CNB CI 构建 → COS + CDN 刷新

1.1 仓库目录一览

 1hugo-teek-private/
 2├── hugo-teek-site/           # Hugo 站点(内容、主题、静态资源)
 3│   ├── content/              # posts / docs 等 Markdown
 4│   ├── data/                 # 侧边栏、分析、图库等数据
 5│   ├── themes/hugo-teek/     # Teek 移植主题
 6│   └── static/               # 静态资源
 7├── user-configuration/       # 用户层配置(覆盖主题默认)
 8│   ├── hugo.toml
 9│   ├── themes/hugo-teek/*.toml
10│   └── teek-plugins/*.toml
11├── oneblog-admin/            # EdgeOne Pages:Functions + public 输出
12│   ├── functions/            # Edge Functions(API / SPA / 静态透传)
13│   ├── public/               # EO 静态输出目录
14│   └── edgeone.json
15├── admin-frontend/           # Vue3 + Element Plus 管理前端(build 产物写入 oneblog-admin/public)
16├── bin/                      # Windows/Linux 构建工具与 Hugo 二进制
17├── .cnb.yml                  # CNB CI:构建、COS、EO Admin、Gitee 备份
18├── Makefile                  # 本地 / Docker 构建入口
19└── LOCAL_DEV.md              # 本地开发快速指南

2. 技术架构

2.1 架构总览

截图:

flowchart TB subgraph Author["作者侧"] Browser["浏览器"] Local["本地编辑 / start-blog-*.bat"] end subgraph EOAdmin["腾讯云 EdgeOne Pages"] AdminUI["Admin SPA
public/admin"] EF["Edge Functions
functions/[[default]].js"] KV["ADMIN_KV
密钥 / 会话状态"] end subgraph CNB["腾讯云 CNB"] Repo["Git 仓库
hugo-teek-private"] CI["CI 流水线
.cnb.yml"] Docker["hugo-teek-blog Docker 镜像"] end subgraph Publish["前台发布"] COS["腾讯云 COS"] CDN["EdgeOne CDN
onedayxyy.cn"] end subgraph Optional["可选能力"] Qiniu["七牛 Kodo
图床 / 备份"] Gitee["Gitee 备份仓"] Twikoo["Twikoo 评论"] Ding["钉钉机器人通知"] end Browser --> AdminUI AdminUI --> EF EF --> KV EF -->|api_trigger_admin_write / Git API| Repo Local -->|git push| Repo Repo --> CI CI --> Docker Docker -->|hugo-teek-site/public| COS COS --> CDN CI -->|ifModify oneblog-admin / admin-frontend| EF CI --> Gitee CI --> Ding EF --> Qiniu CDN --> Twikoo

2.2 分层说明

层级技术选型职责
内容渲染Hugo Extended ≥ 0.150,主题 hugo-teekMarkdown → 静态 HTML/CSS/JS
构建工具链hugo-teek-tools(Go)+ Makefile配置合并、permalink、索引、VitePress 语法转换、分析统计、搜索索引
管理前端Vue 3、Vite、Element Plus、Pinia、md-editor-v3、ECharts仪表盘、文章/文档、站点配置、媒体、备份等 GUI
管理后端EdgeOne Pages Functions(JS)JWT 鉴权、Git/CNB 流水线触发、七牛上传签名、配置读写
状态存储EdgeOne KV(ADMIN_KV密码、JWT_SECRET、Git Token 覆盖项、会话限流等
内容存储Git(CNB)hugo-teek-site/contentuser-configurationdata
静态托管腾讯云 COS + EdgeOne CDN博客前台全球加速
媒体对象七牛云 Kodo(可选,未配置则回退 Git 图床)uploads / imagebed / backup
CI/CDCNB .cnb.ymlpush 构建、大文件 admin write、手动重建、Admin 条件部署

2.3 数据流:保存一篇文章发生了什么

  1. 作者在 oneblogadmin.onedayxyy.cn 登录(JWT + HttpOnly Cookie)。
  2. 编辑 Markdown,点保存。
  3. Edge Function 将内容 Base64(大文件可 gzip) 提交给 CNB 流水线 api_trigger_admin_write
  4. CI Runner 落盘到目标路径 → git commitgit push origin master
  5. master.push 流水线启动:
    • 同步到 Gitee 备份仓
    • make build-docker 构建 Hugo
    • coscli sync 推送到 COS -(若改动了后台代码)edgeone makers deploy 更新 Admin
    • EdgeOne CDN 路径刷新 + 钉钉通知
  6. 读者访问 https://onedayxyy.cn 获取最新静态页。

2.4 配置合并模型

线上与本地一致,采用「用户配置覆盖默认主题配置」:

  1. user-configuration/:你在后台或手工维护的配置真相源
  2. hugo-teek-tools config merge:合并进 hugo-teek-site/config/_default/
  3. Hugo 构建读取合并结果

因此:改配置只改 user-configuration/,不要直接改构建产物目录。


3. 特色优势

3.1 GitOps 式内容管理

  • 每篇文档都是可跟踪、可回滚、可协作的 Git 对象
  • 无独立 CMS 数据库,避免数据割裂与厂商锁定
  • 后台写入与手工 git push 走同一条 CI,行为一致

3.2 前后台分离但同仓协作

  • 博客站点与 Admin 同 monorepo,发版、备份、权限一套即可
  • Admin 仅在 oneblog-admin/**admin-frontend/** 变更时重新部署,避免每次改文都重部署后台

3.3 Edge 原生后台,成本低、运维轻

  • EdgeOne Pages Functions + KV,无需自建 Node/PHP 宿主机
  • 登录限流、密钥注入均在边缘侧完成
  • 静态 SPA + catch-all Function 分路由处理 API / 页面 / 静态资源透传

3.4 Hugo 极速构建 + Teek 级阅读体验

  • VitePress Teek 风格 UI、暗色模式、三栏文档布局
  • FlexSearch 离线全文搜索
  • Twikoo 评论、多种统计、VitePress 容器语法自动转换
  • 响应式首页卡片、波浪封面、侧栏组件等定制能力

3.5 可本地、可云端双模式

模式启动方式数据读写
本地start-blog-frontend.bat / start-blog-admin.bat直接读写仓库文件,无需 Token
线上EO Pages + CNBJWT + Git/流水线 Token

本地改完 → git push origin master 即可上线。

3.6 备份与可观测性

  • Gitee 只读镜像式备份(git-sync,含 tags)
  • 构建耗时统计 + 钉钉完成通知
  • Admin /api/setup/status 诊断密钥是否就绪

3.7 媒体与配置备份能力

七牛侧约定布局:

前缀用途
media/uploads/编辑器 / 云存储上传
media/imagebed/媒体库默认图床
backup/oneblog/配置 JSON 备份
gallery/相册(预留)

4. 部署文档

4.1 整体部署拓扑

生产环境由三条主链路组成:

链路触发产物
A. 博客发布master push / web_trigger / api_trigger_rebuildhugo-teek-site/public → COS → CDN 刷新
B. Admin 发布master push 且 oneblog-admin/**admin-frontend/** 有变更edgeone makers deploy ./oneblog-admin
C. Admin 写内容Admin 保存 API → api_trigger_admin_writeRunner 写文件 commit/push → 再走链路 A

不要把整个博客静态站部署到 EdgeOne Pages 作为主发布路径。 当前博客体量大,Hugo 构建在 CNB Docker 中完成,再 coscli sync 到 COS,由 EdgeOne CDN 源站 加速;Pages 只承载 管理后台

4.2 前置准备与密钥清单

账号与产品

  • 腾讯云账号,开通:CNB、COS、EdgeOne(CDN + Pages)
  • (可选)七牛云 Kodo
  • (可选)钉钉群机器人
  • (可选)Gitee 私人仓库作备份

CNB Secret(https://cnb.cool/onedayxyy/secretenvs.yml

建议至少包含:

变量用途
COS_SECRET_ID / COS_SECRET_KEYCOS 与 CDN 刷新鉴权
COS_BUCKET / COS_REGION博客静态桶与地域
EDGEONE_API_TOKENedgeone makers deploy 部署 Admin
GIT_USERNAME / GIT_ACCESS_TOKEN同步 Gitee 备份仓
SECRET / WEBHOOK钉钉通知
QINIU_*(可选)与 EO Admin 环境变量对齐,便于对照

CNB Runner 通过 .cnb.ymlimports 注入上述密钥,不要把真实密钥写进仓库。

EdgeOne Pages 环境变量(Admin 项目)

4.4.3

CNB Token(供 Admin 写入)

在 CNB 个人设置中创建访问令牌,权限建议:

用途Token 变量权限
Admin 内容写入GIT_TOKEN(或 CNB_TOKENrepo-code:r + repo-code:rw,建议含触发流水线以支持 api_trigger_admin_write
仅手动重建可选独立 CNB_TOKEN额外勾选「触发流水线」

4.3 博客前台部署(Hugo → COS → EdgeOne CDN)

4.3.1 COS 桶准备

  1. 创建私有或公有读 Bucket(与 COS_BUCKET 一致)。
  2. 该桶作为 EdgeOne CDN 源站。
  3. 确认 coscli 使用的密钥具备列表与写入权限。

4.3.2 EdgeOne CDN(博客域名)

  1. EdgeOne 控制台添加站点 onedayxyy.cn
  2. 源站指向上述 COS 桶(或加速域名)。
  3. HTTPS 证书自动签发或上传自有证书。
  4. 首页路由与静态资源按默认对象存储源即可;Hugo 已输出完整 HTML。

4.3.3 CNB 仓库与流水线

  1. 将本仓库推送到 cnb.cool/onedayxyy/hugo-teek-private
  2. .cnb.yml 已包含:
    • master.push:备份 → 构建 → COS →(条件)Admin → CDN → 钉钉
    • web_trigger:控制台手动「构建&部署」
    • api_trigger_admin_write:后台写文件
    • api_trigger_rebuild:后台手动重建
  3. Secret 库 envs.yml 已在 imports 中引用。
  4. Docker 镜像:docker.cnb.cool/yuwen-gueen/docker-images-chrom/hugo-teek-blog:latest(内置 Hugo、hugo-teek-tools)。

4.3.4 手动触发一次发布(验证)

1# 在本机推送到 CNB master
2git push origin master

或在 CNB 页面使用 构建&部署web_trigger)。

成功标志:

  • Runner 阶段 build 与「部署到 cos」为绿色
  • 访问 https://onedayxyy.cn/ 内容已更新(注意 CDN 刷新后可能仍有极短缓存)

4.3.5 核心构建命令(理解即可)

CI 中实际执行:

1make build-docker
2# 合并配置 → frontmatter → permalink → index → sidebar → VitePress 转换
3# → doc analysis → search index → hugo --minify
4# 输出:hugo-teek-site/public

随后:

1coscli sync ./hugo-teek-site/public cos://$COS_BUCKET/ -r \
2  --delete --force --routines=1000 --thread-num=1000

CDN 刷新(首页路径示例):

1kind: tencenteo
2rtype: path
3domain: onedayxyy.cn
4urls: https://onedayxyy.cn/

如需全站更强一致,可在流水线中扩展刷新 URL 列表(注意接口配额)。

4.4 博客后台部署到 EdgeOne Pages(重点)

生产后台项目名:oneblog-admin,域名:oneblogadmin.onedayxyy.cn

后台由两部分组成,部署前需理解:

部分目录说明
Functionsoneblog-admin/functions/API、登录页、SPA 回退、/js /css 透传
静态输出oneblog-admin/public/admin/ SPA、css、js、version.json
前端源码admin-frontend/Vue 工程;npm run build 产物进 public/
Pages 配置oneblog-admin/edgeone.jsonoutputDirectory: public,KV 绑定 ADMIN_KV

edgeone.json 关键内容:

1{
2  "name": "oneblog-admin",
3  "version": "1.0.0-mvp",
4  "outputDirectory": "public",
5  "bindings": [
6    { "type": "kv", "name": "ADMIN_KV" }
7  ]
8}

4.4.1 方式一:CNB 自动部署(推荐生产流程)

仓库已内置:当 oneblog-admin/**admin-frontend/** 变更并 push 到 master 时:

1- name: deploy to edgeone makers
2  ifModify:
3    - "oneblog-admin/**"
4    - "admin-frontend/**"
5  image: node:20
6  script: |
7    cd admin-frontend && npm ci && npm run build && cd ..
8    test -f oneblog-admin/public/admin/index.html
9    npx edgeone makers deploy ./oneblog-admin -n oneblog-admin -t $EDGEONE_API_TOKEN

前置条件:

  1. Secret 中已配置 EDGEONE_API_TOKEN(EdgeOne API 令牌,具备 Pages / Makers 部署权限)。
  2. EdgeOne Pages 上已存在项目名 oneblog-admin(首次需手工创建一次,见 4.4.2)。
  3. Pages 项目侧环境变量、KV、自定义域名已配好(CLI 不会自动同步 QINIU_*ADMIN_PASSWORD 等密钥,必须在控制台维护)。

日常更新后台:

1# 修改 admin-frontend 或 oneblog-admin 后
2git add admin-frontend oneblog-admin
3git commit -m "feat(admin): ..."
4git push origin master

等 CI 中 deploy to edgeone makers 成功后,访问 https://oneblogadmin.onedayxyy.cn 验证。

仅改博客正文(hugo-teek-site/content)时,Admin 不会 重新部署,仅重建前台。这是预期行为。


4.4.2 方式二:控制台首次创建 Pages 项目

适用于第一次把后台放到 EO,或 CI Token 不可用时的手工部署。

步骤:

  1. 打开 EdgeOne Pages 控制台
  2. 新建项目 → 关联 Git 仓库 hugo-teek-private(若平台支持 CNB/导入压缩包,则导入 oneblog-admin 目录内容)。
  3. 构建配置(强烈建议):
配置项推荐值说明
项目根目录 / Root Directoryoneblog-admin避免根目录 catch-all 路由与路径混淆
构建命令留空(或见下方「含前端构建」)Functions 为原生 JS,无需编译框架
输出目录public必须与 edgeone.jsonoutputDirectory 一致
Functions 目录functionsEdge Functions

若希望控制台构建也最新 SPA,可将构建命令设为(需把根目录设为仓库根,并调整输出路径,复杂度更高——更推荐用 CNB 构建 + makers deploy):

1cd admin-frontend && npm ci && npm run build

输出仍为 oneblog-admin/public

  1. 添加 KV 命名空间绑定
  • 绑定名称必须为:ADMIN_KV
  • 类型:KV
  • edgeone.jsonbindings[].name 一致
  1. 保存并首次部署。部署完成后会得到形如 *.edgeone.cool 的默认域名。

4.4.3 配置环境变量与 KV

混清点先讲清:

概念含义
ADMIN_KVPages 绑定名(命名空间别名),代码里通过这个名字访问 KV
JWT_SECRET / ADMIN_PASSWORD可以是 Pages 环境变量,也可以是 KV 里的数据键;代码支持两端读取

推荐:方式 A — Pages 环境变量(更清晰、更安心)

项目设置 → 环境变量:

变量必填说明
ADMIN_PASSWORD后台登录密码
JWT_SECRETJWT 签名密钥,openssl rand -base64 32
GIT_TOKENCNB 访问令牌(也可写 CNB_TOKEN),需 repo 读写
GIT_PLATFORM默认 cnb
GIT_OWNER默认 onedayxyy
GIT_REPO默认 hugo-teek-private
GIT_BRANCH默认 master
SITE_BASE_URLhttps://onedayxyy.cn(Twikoo 跳转)
QINIU_AK / QINIU_SK否*七牛 AK/SK(仅服务端,勿下发前端)
QINIU_BUCKET默认 oneblogoss
QINIU_DOMAIN默认 oneblogoss.onedayxyy.cn
QINIU_REGION默认 z0(华东)
CNB_TOKEN独立流水线触发 Token(可与 GIT_TOKEN 共用)

* 未配置七牛时,云存储相关能力回退 Git 图床。

修改环境变量后需要 重新部署 Pages 才生效。

方式 B — 在 ADMIN_KV 中写数据键

适用于不想把密码放在环境变量列表、或希望改密钥后无需重新部署的场景:

KV 键说明
JWT_SECRETJWT 密钥
ADMIN_PASSWORD登录密码明文
GIT_TOKENGit 令牌
QINIU_AK / QINIU_SK / QINIU_BUCKET / QINIU_DOMAIN / QINIU_REGION七牛相关

KV 变更通常 无需重新部署

健康检查:

1GET https://oneblogadmin.onedayxyy.cn/api/setup/status

期望:ready: true,且 sources 标明 kvenv(表示已读到密钥)。

示例(结构示意):

1{
2  "ready": true,
3  "sources": {
4    "ADMIN_PASSWORD": "env",
5    "JWT_SECRET": "env",
6    "GIT_TOKEN": "env"
7  }
8}

4.4.4 绑定自定义域名

  1. Pages 项目 → 域名管理 → 添加 oneblogadmin.onedayxyy.cn
  2. 在域名 DNS(如已由 EdgeOne 托管 onedayxyy.cn,在站点 DNS 下)添加控制台提示的 CNAME
  3. 等待 SSL 证书签发。
  4. 访问 https://oneblogadmin.onedayxyy.cn/,应出现登录页。

4.4.5 本机 CLI 手工部署(应急)

需本机安装 Node.js 20+,并有 EDGEONE_API_TOKEN

 1# 在仓库根目录
 2cd admin-frontend
 3npm ci
 4npm run build
 5cd ..
 6
 7# 确认 SPA 产物存在
 8test -f oneblog-admin/public/admin/index.html   # Linux/macOS
 9# Windows PowerShell:
10# Test-Path oneblog-admin/public/admin/index.html
11
12npx edgeone makers deploy ./oneblog-admin -n oneblog-admin -t $EDGEONE_API_TOKEN

Windows PowerShell:

1$env:EDGEONE_API_TOKEN = "你的Token"
2cd admin-frontend
3npm ci
4npm run build
5cd ..
6npx edgeone makers deploy ./oneblog-admin -n oneblog-admin -t $env:EDGEONE_API_TOKEN

注意: CLI 不会改写控制台里的环境变量;QINIU_* / ADMIN_PASSWORD 等仍需在 EO 控制台维护。


4.4.6 首次登录与系统设置

  1. 打开 https://oneblogadmin.onedayxyy.cn/
  2. 使用 ADMIN_PASSWORD 登录。
  3. 进入 系统设置 → Git 仓库
    • 平台:CNB
    • Owner:onedayxyy
    • Repo:hugo-teek-private
    • Branch:master
    • Token:已由环境变量注入时可为空;未注入则在此填写并保存到 KV
  4. 点击 测试连接
  5. 使用 文档管理 / 文章管理 / 站点配置 试保存一篇内容。
  6. 到 CNB 流水线确认 api_trigger_admin_writemaster.push 成功。
  7. 打开 https://onedayxyy.cn 验证前台。

4.4.7 Admin 路由与静态资源机制(理解排错)

关键文件:

1oneblog-admin/functions/
2├── [[default]].js     # API + /admin SPA 回退
3├── js/[[path]].js     # /js/* 透传(优先于 catch-all)
4├── css/[[path]].js    # /css/* 透传
5├── version.json.js
6└── index.js           # 登录页 /

常见故障:登录后侧栏在、主区空白

Workaround / 根因:

  • functions/[[default]].js 会拦截未匹配路由;若 /js/app.js/css/style.css 未从正确 public/ 发布,或被 catch-all 先吞,前端脚本 404,主区空白。
  • 本仓库已通过 outputDirectory: public + 专属 js/[[path]].jscss/[[path]].js 透传修复。

排查步骤:

  1. DevTools → Network:确认 /js/app.js/css/style.css/admin//admin/assets/*200
  2. 确认 Pages 根目录oneblog-admin输出目录public
  3. 确认 public/admin/index.html 在部署包内存在(CI 已有 test -f 守护)。
  4. 修改后必须重新 edgeone makers deploy 或等待 CI。

4.5 CNB CI 流水线说明

触发器阶段概要
master.pushGitee 备份 → make build-docker → COS sync →(条件)EO Admin deploy → CDN 刷新 → 钉钉
web_trigger构建 → COS → CDN(控制台按钮,不部署 Admin)
api_trigger_admin_writeBase64/gzip 落盘或删除 → commit → push master(再触发 push)
api_trigger_rebuild仅重建前台并部署 COS(不部署 Admin)

大文件写入:Admin 侧 prepareCnbWritePayload() 对超限内容启用 ADMIN_WRITE_ENCODING=gzip,Runner 用 gunzip 解压后写入,避免「文件过大无法经后台写入」类错误。当前写接口字节上限接近约 96KB(Base64 后),gzip 后通常远低于此。

4.6 Gitee 备份同步

master.push 阶段使用 tencentcom/git-sync

1target_url: https://gitee.com/onlyonexl/ongblog-gitee-backup.git
2branch: master
3force: true
4push_tags: true

Secret 需提供:

  • GIT_USERNAME:Gitee 用户名
  • GIT_ACCESS_TOKEN:具备 projects 写权限的私人令牌

Gitee 不是 CI 构建源,仅作备份。请勿把 Admin 默认远程改到仅有 Gitee 而无 CNB CI 的仓。

4.7 本地开发联调

详见根目录 LOCAL_DEV.md。摘要:

脚本用途地址
start-blog-frontend.batHugo 预览http://localhost:9090
start-blog-admin.batAdmin API + Vuehttp://localhost:6173/admin

依赖:Hugo Extended、Node.js 18+、pnpm(脚本可协助安装)。仓库已附带 bin/windows 工具链。

本地保存后需自行:

1git add user-configuration hugo-teek-site
2git commit -m "更新站点配置"
3git push origin master

线上 Admin 保存则自动 commit/push,无需本机介入。

4.8 验证与排错

现象排查方向
Admin 无法登录ADMIN_PASSWORD / JWT_SECRET 是否就绪;/api/setup/status
登录后主区空白/js/* /css/* 是否 200;outputDirectory 是否为 public
保存失败「文件过大」已支持 gzip;若仍失,检查 api_trigger_admin_write env 与 Runner 日志
保存成功但前台未变CNB master.push 是否成功;COS / CDN 刷新是否失败
Admin CI 未部署本次 commit 是否触及 oneblog-admin/**admin-frontend/**
七牛上传失败EO 环境变量 QINIU_*(CLI 不注入,必须控制台配置)
Gitee 备份失败GIT_USERNAME / GIT_ACCESS_TOKEN / 目标仓权限

5. 待优化项

结合当前仓库实现与运维现状,建议按优先级推进如下优化。

5.1 高优先级(稳定性 / 成本 / 体验)

#说明
1CI 耗时master.push 同步 Gitee、完整 Hugo 构建、COS 全量 sync 串联,后台写一文也走全量链路。可评估:Gitee 异步化、增量 COS sync、文档路径级 CDN 刷新列表。
2COS 成本优化静态站可评估迁到七牛 Kodo 作源 + EdgeOne 拉源,节省 COS 月费;需改 .cnb.yml 同步目标与 CDN 源。
3CDN 刷新覆盖面当前刷新主要为首页路径,深层文章/静态资源可能依赖 TTL。扩展刷新列表或版本化静态资源文件名。
4写入并发与冲突api_trigger_admin_write 采用 commit + pull --rebase + push,多端同时编辑可能冲突,需更友好的冲突提示或锁。
5密钥轮转与最小权限拆分「只写内容 Token」与「触发流水线 Token」;定期轮换 JWT_SECRET、Git Token、COS Key。

5.2 中优先级(后台功能完善)

#说明
6批量操作 APIFunctions 中仍有 Phase 2/3 批量操作占位(menus/media 等),需补齐真实实现。
7栏目映射等 Stub部分 Section Mapping POST/DELETE 等接口能力不完整,GUI 与后端需对齐。
8多用户与审计现单密码模式,缺角色、操作审计日志(谁在何时改了哪篇)。
9图片 / 媒体库体验七牛与 Git 图床双路径的 UI 一致性、失败重试、体积压缩(WebP)、引用检查待加强。
10主题配置表单覆盖度teek-plugins/*.tomlhugo.toml 部分高级项仍依赖预览 TOML 手改。
11版本检测与升级version.json 已有基础,可与主题远程版本、变更日志联动,降低「后台新、主题旧」错配。

5.3 工程与质量

#说明
12Automated 测试Admin Functions、写入流水线、关键配置合并缺回归测试;建议至少冒烟集。
13admin-frontend TypeScript / PINIA 类型化当前以 JS 为主,大型表单易出现隐式错误。
14Edge Function 体积与模块化[[default]].js 体量很大,后续宜拆分路由模块,提升可维护性与冷启动可读性。
15文档与 README 同步根 README 仍偏上游 RouxZhee 描述,可与 OneBlog 产品说明、本部署文档互链。
16大仓库与 content 膨胀_cache、历史归档目录体积大,会影响 clone/CI(可考虑 Git LFS 或内容分层仓)。

5.4 前台体验

#说明
17首页卡片与响应式持续打磨已修复 14" 比例、hover 接缝线等问题,不同 DPR / 浏览器需持续回归。
18无障碍与 SEO图片 alt、结构化数据、sitemap 增量策略可继续强化。
19Service Worker / 离线阅读(可选)文档站场景下,可评估本地缓存策略。

5.5 安全相关建议

#说明
20Admin 域名与博客域名隔离策略已分离;可加强制 HTTPS、安全头(CSP、HSTS)、登录二次验证(TOTP)。
21限流与防暴破已有登录限流雏形,可补 IP 级网关规则与告警。
22备份恢复演练Gitee / 七牛 backup JSON 定期验证「能完整拉起」。

6. 附录

6.1 相关文件索引

文件用途
.cnb.yml生产 CI 定义
.cnb-cos.yml / .cnb-qn.yml备用 / 试验部署配置
oneblog-admin/README.mdAdmin 模块说明
oneblog-admin/edgeone.jsonEO Pages 绑定与输出目录
oneblog-admin/.env.example环境变量模板
LOCAL_DEV.md本地开发
Makefilebuild / build-docker / dev

6.2 生产 URL 速查

服务URL
博客https://onedayxyy.cn
后台https://oneblogadmin.onedayxyy.cn
后台健康检查https://oneblogadmin.onedayxyy.cn/api/setup/status
CNB 仓库https://cnb.cool/onedayxyy/hugo-teek-private
Gitee 备份https://gitee.com/onlyonexl/ongblog-gitee-backup

6.3 一键「内容保存 → 上线」心智模型

 1Admin 保存
 2  → Edge Function
 3  → CNB api_trigger_admin_write(落盘 + commit + push)
 4  → master.push
 5      → Gitee backup
 6      → Hugo build (Docker)
 7      → COS sync
 8      → CDN refresh
 9      → 钉钉通知
10  → 读者看到更新

后台代码变更额外多一步:

1admin-frontend / oneblog-admin 变更进 master
2  → npm run build
3  → edgeone makers deploy ./oneblog-admin

文档维护: 部署架构变更(域名、存储、CI 阶段)时,请同步更新本文档日期与对应章节。

oneblog / hugo-teek-private · 2026-07-06

最新文章

本页导航

文档导航