初始化:Astro 站点 + Sveltia CMS 后台 + 部署配置

This commit is contained in:
2026-06-11 17:18:51 +08:00
commit 53092b52db
37 changed files with 7586 additions and 0 deletions

82
docs/CMS.md Normal file
View File

@@ -0,0 +1,82 @@
# 在线内容管理方案Gitea + Sveltia CMS
> 目标:让维护人员通过网页在线编辑博客/项目,富文本写作、上传图片、插入视频,
> 发布后自动构建上线。全部自托管,数据在自己服务器。
## 1. 方案概述
采用 **Gitea自托管 Git+ Sveltia CMS在线写作后台+ Gitea Actions自动部署**
- Sveltia CMS 是 Decap CMS原 Netlify CMS的现代继任者**原生支持 Gitea 后端**
通过 Gitea OAuth 登录鉴权,无需额外搭建鉴权中转服务。
- 内容仍以 Markdown 形式存放在 Gitea 仓库,结构化、可版本管理、可回滚。
- 站点保持静态,安全、运维轻。
## 2. 架构
```
维护人员浏览器
├─► https://shizhui.xyz/admin Sveltia CMS 后台(写作/上传/发布)
│ │ Gitea OAuth 登录
│ ▼
└─► https://git.shizhui.xyz 自托管 Gitea内容 .md + 代码仓库)
│ 提交触发 Gitea Actions
npm run build → /var/www/shizhui → Nginx → https://shizhui.xyz
```
## 3. 组件角色
| 组件 | 作用 | 访问地址 |
|------|------|----------|
| Astro 站点 | 内容展示(已完成) | shizhui.xyz |
| Gitea | 自托管 Git、内容存储、CIActions | git.shizhui.xyz |
| Sveltia CMS | 在线写作后台(静态页面,挂在站点 /admin | shizhui.xyz/admin |
| Gitea Actions Runner | 监听提交,自动构建并发布 | 服务器内部 |
| Nginx | 托管静态站 + 反向代理 Gitea | — |
## 4. 编辑能力
- **富文本 + Markdown 双模式**:标题、加粗、列表、链接、代码块、引用等。
- **图片**:拖拽上传,自动存入仓库 `public/` 或指定媒体目录。
- **视频**
- 推荐嵌入式B站 / YouTube文章中粘贴嵌入不占服务器带宽。
- 也可自托管:上传视频文件,用 HTML5 `<video>` 播放(需注意带宽/存储)。
- 视频渲染能力由 Astro 站点模板提供CMS 负责录入。
## 5. 落地步骤(待用户授权 SSH 后执行)
> 以下涉及服务器操作,按 `.kiro/steering/commands.md` 规则,需用户确认授权后执行。
### 阶段一:基础设施
1. 服务器初始化Nginx、防火墙`docs/DEPLOY.md`)。
2. 安装 Gitea二进制或 docker数据目录规划配置 `git.shizhui.xyz`
3. Nginx 反向代理 Gitea申请 HTTPS 证书(含 git 子域名)。
4. 创建管理员账号,建立本项目仓库,推送现有代码。
### 阶段二CI 自动部署
5. 安装并注册 Gitea Actions Runner。
6. 编写 workflow`push` 到主分支 → `npm ci && npm run build` → 发布到 `/var/www/shizhui`
### 阶段三:接入 CMS
7. 在站点加入 `/admin`Sveltia CMS 页面 + `config.yml`)。
8. 在 Gitea 注册 OAuth 应用,把 client_id 配到 CMS。
9. 配置内容模型collectionsblog、projects字段对齐现有 frontmatter。
10. 配置媒体上传目录、视频嵌入支持。
### 阶段四:验证
11. 登录 /admin → 新建测试文章 → 发布 → 确认自动构建并上线。
12. 移交维护文档(如何写文章、加项目、插图插视频)。
## 6. 待确认 / 前置条件
- [ ] 用户授权 SSH 连接服务器执行安装(提供临时密码或 SSH 密钥,勿用长期密码)
- [ ] 确认服务器配置(内存/CPU足以同时运行 Gitea + 构建
- [ ] 确认 git 子域名方案git.shizhui.xyz并添加 DNS 解析
- [ ] 是否需要多个维护账号 / 权限分级
## 7. 备注
- 当前阶段网站已可用,内容用 Markdown 文件维护CMS 为平滑叠加,不推翻现有结构。
- 凭据不写入仓库与文档。