功能介绍
Think Site Manager 是一套企业级文档站点管理平台,用于管理基于 VitePress / VuePress 构建的文档站点,提供文章付费控制、成员权限管理和数据可视化看板。
用户与权限体系
平台采用 三级角色 + License 授权 的双层权限控制。
角色定义
| 角色 | 标识 | 权限范围 |
|---|---|---|
| 系统管理员 | system | 全平台管理,拥有所有权限 |
| 平台管理员 | admin | 管理全部站点、用户、邀请码 |
| 站点管理员 | site_admin | 创建和管理自己的站点,绑定成员 |
| 普通用户 | user | 查看被授权访问的站点链接,通过插件阅读文章 |
权限控制流程
提示
普通用户注册需要通过邀请码完成,确保平台封闭可控。
站点管理
核心功能
- 站点 CRUD:创建、编辑、删除文档站点,配置站点名称、描述、URL
- API Token:每个站点自动生成唯一 Token,供插件接口认证使用
- 在线检测:站点在线状态实时轮询检测(
ONLINE/OFFLINE/ENABLED/DISABLED) - Token 重新生成:支持一键重新生成站点 Token
站点实体字段
| 字段 | 说明 |
|---|---|
name | 站点名称 |
description | 站点描述 |
url | 站点访问地址 |
site_token | API Token(UUID 格式,自动生成) |
status_flag | 在线状态 |
文章管理
核心功能
- 文章 CRUD:创建、编辑、删除站点内的文章,定义文章路径和标题
- 付费/免费切换:每篇文章可单独标记为付费或免费
- 批量操作:支持勾选多篇文章,一键切换付费状态
- 构建同步:文档构建时可自动同步文章列表到平台
文章访问控制流程
访客访问文章 → 插件发起权限校验 → 免费文章直接放行
→ 付费文章弹出登录窗口
→ 用户登录后校验权限 → 放行注意
付费文章通过 is_paid 字段标记(0=免费,1=付费),文章路径必须与文档站点路由一致。
成员绑定
将用户绑定到站点,并分配在该站点下的操作角色。
绑定角色
| 角色 | 说明 |
|---|---|
ADMIN | 站点内的管理员,可以管理该站点的文章和成员 |
MEMBER | 站点内的普通成员,可以阅读该站点的付费文章 |
功能亮点
- 穿梭框选择用户:使用 Ant Design Transfer 组件,直观地从用户列表中勾选成员
- 角色分配:在绑定界面同时设置成员在站点中的角色
- 去重保护:同一用户对同一站点不能重复绑定
邀请码管理
TIP
邀请码系统确保平台的封闭性,防止未授权的用户注册。
核心功能
- 生成邀请码:设置最大使用次数和过期时间,生成 8 位随机码
- 一键禁用:随时禁用已生成的邀请码
- 复制邀请链接:一键复制完整注册链接(含邀请码参数),方便分享
- 使用统计:每个邀请码记录已使用次数 / 总次数
数据看板
首页提供丰富的可视化数据看板,根据用户角色展示不同范围的数据。
概览卡片
4 个核心指标卡片:用户总数、站点总数、文章总数、在线站点数。
图表清单
| 图表 | 类型 | 数据说明 |
|---|---|---|
| 站点文章排行 | 柱状图 | Top 10 站点按文章数量排序 |
| 站点状态分布 | 饼图 | 在线/离线/启用/禁用 占比 |
| 用户注册趋势 | 折线图 | 近 30 天每日注册人数 |
| 文章付费比例 | 环图 | 付费文章 vs 免费文章占比 |
角色数据范围
| 角色 | 数据范围 |
|---|---|
system / admin | 全平台数据,4 卡片 + 4 图表 |
site_admin | 仅自己管理的站点数据 |
user | 展示绑定站点卡片列表,可点击访问 |
VitePress / VuePress 认证插件
平台提供即装即用的认证插件,为文档站点快速接入文章付费控制。
插件特性
- 🔒 路由级权限校验:每次页面切换自动验证当前文章是否需要登录
- 🎨 美观登录弹窗:与 VitePress / VuePress 主题风格统一
- 💾 Token 持久化:登录状态存储在 localStorage,刷新后自动恢复
- 🌐 全局 API:提供
$siteAuth全局属性,可在任意 Vue 组件中调用
下载方式
在站点管理页面,点击对应站点的 插件下载 按钮,选择 VitePress 或 VuePress 版本即可下载 ZIP 包。
主机管理
平台把"文档站点最终部署到哪台 Linux 服务器"抽象成 Host 实体,在「主机管理」面板统一管理。SSH 凭据用 AES-256-GCM 加密存 host 表,任何明文不落盘。
核心功能
- 主机 CRUD:录入 / 编辑 / 删除目标 Linux 主机(IP + SSH 端口 + 用户名 + 密码或私钥)
- 连通性探测:一键 SSH 进主机,自动识别发行版(Ubuntu / CentOS / Rocky),探测 nginx 当前状态,回写
last_check_*字段 - 一键初始化 nginx:9 步流水线(SSH → 装包 → 启服务 → 校验 → 平台主动 HTTP 探测 → 防火墙 → 放行 → 重测),前端竖向 Stepper 实时展示,详见 一键初始化 nginx
- Web 终端:浏览器内 xterm.js 直连主机 PTY,排查 nginx / 防火墙问题不用 ssh 堡垒机
- 凭据加密:SSH 密码 / 私钥 / passphrase 用
THINK_HOST_CRYPTO_KEY256 bit 主密钥 AES-256-GCM 加密,启动校验 fail-fast
主机状态机
nginx_status | 含义 | 可执行操作 |
|---|---|---|
NOT_INSTALLED | 主机已加但 nginx 没装 | 初始化 |
INSTALLED_ACTIVE | nginx 安装 + 运行中 | 发布站点 |
INSTALLED_INACTIVE | 已装但未运行 | 重新初始化 |
INIT_FAILED | 上次初始化失败 | 查看错误日志 + 重试 |
详见 主机管理。
站点发布到主机
构建好的 VitePress / VuePress 产物,可以一键发布到「主机管理」里任何 INSTALLED_ACTIVE 的目标主机。全异步流水线,前端 SSE 实时进度 + 日志轮询。
核心功能
- 一键发布:选站点 + 选主机 → 后端 build → SCP → 解压 → reload nginx,7 步全自动
- 构建产物复用:已构建过的 build task 可以直接复用,跳过重新 build(节省时间)
- 历史版本管理:每次发布独立 build task,versionNo 倒序展示,可回滚到任意历史版本
- 实时进度:发布抽屉左侧历史列表(状态 + versionNo + 时间),右侧详情 + 实时日志框(2s 轮询
getDeployHistory,带[HH:mm:ss]时间戳) - Web 终端排查:点击终端按钮直接进主机 shell,看 deploy 错误 / nginx error log
- 回滚:用历史的
buildTaskUnCode重新触发 deploy,新 history 标ROLLED_BACK,旧 history log 追加审计记录 - 跨平台中文文件名:tar.gz 走 Commons Compress
TarArchiveOutputStream("UTF-8")+ pax header,任何版本 GNU tar 都能正确解码;旧 .zip 产物走unzip -O UTF-8兜底
部署流程(7 步)
[1] 启动 → [2] SSH 预检 → [3] 复用/构建 → [4] SCP 上传
→ [5] 解压 webRoot → [6] reload nginx → [7] 清理临时 → SUCCESS详见 站点发布到主机。
个人中心
登录用户可在「个人信息」页面修改自己的资料:
- 📝 编辑用户名、邮箱
- 🔑 修改登录密码
- 👤 查看当前角色和权限