headless-cms-hexo
1.介绍(本文就是使用headless-cms-hexo 保存部署的)
一个基于 Vue3 + FastAPI 的无头 CMS,用于通过 Web 界面管理 Hexo 博客的 Markdown 内容,并通过 Git 同步与映射hexo实现自动化发布。
github 地址:https://github.com/brightChenGit/headless-cms-hexo
当前项目前端使用地址: https://cms.brightchen.top
个人博客地址: https://www.brightchen.top
2.软件架构
前端 cms-frontend:vue3+vue-router+ts+vite+element-plus+pinia+bytemd
后端 cms-backend:python+fastapi+gitpython
时序图如下:
sequenceDiagram participant 用户 participant 前端 participant 后端 用户->>前端:1.首页设置
(后端地址+后端token
,可自定义git地址
替换后端默认) 前端->>后端:2.验证token
n次失败禁用5分钟
m次失败禁用
重启后端重新计数 用户->>前端:3.列表查询文章
(自动携带git地址
替换后端默认)
前端进行分页和模糊查询 前端->>后端:4.从缓存读取所有文章数据
(j分钟同步git拉取一次) 用户->>前端:5.保存文章 前端->>后端:6:创建目录
创建本地文章,
推送到git 用户->>前端:7.删除文章 前端->>后端:8.删除本地文章,
推送到git 用户->>前端:9.部署 前端->>后端:10.触发hexo generator生成hexo文章,
映射public目录到宿主机中,
宿主机nginx访问public目录下的hexo文章
3.功能说明
主要功能
- 1.首页设置后端地址及固定token,修改自己的hexo博客的git地址
- 2.列表查询文章,后端缓存刷新文章数据
- 3.创建文章,后端推送到git
- 4.删除文章,后端推送到git
- 5.部署自己的hexo博客,后端执行hexo的生成命令,映射目录实现部署效果
4.安装教程
4.1 后端cms-backend部署 (http://localhost:3001)
4.1.1 前提概要
配置token,hexo的git仓库地址和对应的分支
docker-compose.yml可以参考docker-compose-temp.yml
docker中docker-compose时设置的环境变量优先于config.py设置的
可以使用token_generator.py生成随机的token参数然后再复制过去配置token
注意 /usr/repos:/app/repos中的/usr/repos为hexo项目挂载地址
1.在config.py配置
1 | 配置token |
2.在docker-compose.yml中配置
1 | - ACCESS_TOKEN=your_secret_token_here |
4.1.2 dev使用
1 | #安装 |
4.1.3 docker运行使用
1 | #启动 |
4.1.4 其他问题(可能遇到的)
ssh key权限设置
linux1
chmod 600 ./ssh/id_rsa_hexo
win
1
2
3
4
5
6
7# 进入 WSL
wsl
# 或打开 Git Bash
cd /mnt/c/Users/10243/project/headless-cms-hexo/cmsBackend/ssh
chmod 600 ./ssh/id_rsa_hexowin中known_hosts问题处理
1
2ssh -T git@github.com
ssh -T git@giteee.com
4.2 前端 cms-frontend(http://localhost:3000)
4.2.1 dev使用(node24)
1 | #安装 |
4.2.2 docker运行使用
1 | docker-compose up --build -d |
5.使用说明
5.1 总体概述
- 前端可以指定后端地址及固定token,修改hexo的git地址
- 后端可以本地运行及配置hexo的git地址,固定token,对前端请求做token校验,固定token认证,同ip n次错误临时封禁5分钟,m次错误永久封禁(内存/redis实现)
- 在服务器本地维护一份 Hexo 源码仓库
- 使用
gitpython
执行 Git 操作 - 在通过 Token 验证后,异步拉取最新 Git 代码并执行
npm install
、hexo clean
、hexo generate
完成 Hexo 博客自动构建,确保每次构建基于最新内容。
5.2 前端设计
首页,文章列表页,文章编辑页面,固定菜单栏在页面上方
- 首页进行git地址,分支自定义读取展示和设置,前端自定义配置后端地址
- 文章列表页面,展示文章列表,上部分为文章标题搜索框,查询按钮,新增文章按钮,部署按钮,文章列表具有编辑,删除按钮。
- 文章编辑页面,支持文章读取到
bytemd
这个富文本编辑器,有保存按钮
6.未来可扩展方向
功能 | 描述 |
---|---|
webhook部署 | 其他远程方式部署 |
多站点支持 | 配置多个 Hexo 项目路径 |
图片上传 | 集成图床(minio,sso,rustfs) |
权限系统 | 多用户、角色管理(Admin/User) |
Draft Preview | 生成临时预览链接 |
RSS/SEO 支持 | 自动生成 sitemap |
插件机制 | 支持自定义字段、模板 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Bright Chen!
评论