📝 docs: Add documentation

This commit is contained in:
web@ppanel
2025-12-11 03:29:07 +00:00
parent 50e695a1bb
commit 99e7f6062d
135 changed files with 79115 additions and 8 deletions
+380
View File
@@ -0,0 +1,380 @@
# 公告管理
公告管理模块用于发布和管理系统公告,向用户传达重要信息。
## 功能概述
### 公告列表
查看和管理所有公告:
- **公告标题**: 公告主题
- **公告类型**: 系统/维护/活动/更新
- **发布状态**: 草稿/已发布/已下线
- **发布时间**: 公告发布时间
- **显示位置**: 首页/用户中心/管理后台
- **优先级**: 高/中/低
- **阅读量**: 公告查看次数
### 创建公告
发布新的公告:
#### 基本信息
- **公告标题**: 简明扼要的标题
- **公告类型**: 选择公告类型
- **公告内容**: 详细公告内容(支持富文本)
- **公告摘要**: 简短摘要(列表显示)
#### 显示设置
- **显示位置**: 选择显示位置
- 首页Banner
- 首页公告栏
- 用户中心
- 管理后台
- 弹窗提醒
- **显示样式**: 配置显示样式
- Banner样式
- 列表样式
- 弹窗样式
- 浮动提醒
#### 发布设置
- **发布时间**:
- 立即发布
- 定时发布
- 指定发布时间
- **下线时间**:
- 永久显示
- 指定下线时间
- 手动下线
- **优先级**: 设置显示优先级
#### 目标用户
- **所有用户**: 向全部用户展示
- **新用户**: 仅向新注册用户
- **老用户**: 仅向老用户
- **特定用户组**: 指定用户组
- **VIP用户**: 仅向VIP用户
### 编辑公告
修改已发布的公告:
- 更新公告内容
- 调整显示设置
- 修改发布时间
- 变更目标用户
::: tip 提示
修改已发布的公告会影响正在展示的内容,请谨慎操作。
:::
### 删除公告
删除公告:
- **下线**: 停止展示但保留数据
- **删除**: 彻底删除公告
- 阅读记录会保留用于统计
## 公告类型
### 系统公告
系统重要通知:
**使用场景**:
- 系统升级通知
- 服务条款变更
- 政策调整说明
- 重要功能上线
**示例**:
- 系统将于XX时间进行升级维护
- 服务协议更新通知
- 新功能上线公告
### 维护公告
系统维护通知:
**使用场景**:
- 计划维护通知
- 故障说明
- 服务恢复通知
**示例**:
- 定期维护公告
- 紧急故障通知
- 服务已恢复正常
### 活动公告
营销活动通知:
**使用场景**:
- 促销活动预告
- 优惠信息发布
- 活动规则说明
**示例**:
- 双十一大促预告
- 限时优惠活动
- 新用户专享活动
### 更新公告
产品更新说明:
**使用场景**:
- 功能更新说明
- 产品优化通知
- Bug修复说明
**示例**:
- v2.0版本更新说明
- 新增XX功能
- 性能优化公告
## 公告展示
### Banner公告
首页轮播Banner:
- 大图展示,视觉冲击力强
- 支持多张轮播
- 点击跳转详情页
- 适合重要活动推广
### 列表公告
公告列表展示:
- 标题列表形式
- 支持分类筛选
- 点击查看详情
- 适合常规公告
### 弹窗公告
弹窗提醒:
- 登录时弹出
- 强制阅读
- 确认后关闭
- 适合重要通知
### 浮动公告
浮动提醒栏:
- 页面顶部浮动
- 可手动关闭
- 不影响操作
- 适合温馨提示
## 公告推送
### 站内推送
系统内推送公告:
- **首页展示**: 在首页显著位置展示
- **消息中心**: 推送到用户消息中心
- **弹窗提醒**: 登录时弹窗提醒
- **邮件推送**: 发送公告邮件
### 定向推送
针对特定用户推送:
- 根据用户分组推送
- 根据用户标签推送
- 根据用户行为推送
- 个性化公告内容
### 推送时机
选择合适的推送时机:
- **即时推送**: 紧急公告立即推送
- **定时推送**: 选择最佳时间推送
- **事件触发**: 特定事件触发推送
- **周期推送**: 定期推送公告
## 公告统计
### 阅读统计
统计公告阅读情况:
- **阅读量**: 公告查看次数
- **阅读率**: 阅读用户占比
- **阅读用户**: 查看公告的用户列表
- **阅读时段**: 用户查看时间分布
### 点击统计
统计公告点击:
- **点击量**: 公告点击次数
- **点击率**: 点击/展示比例
- **跳转链接**: 外部链接点击统计
- **转化数据**: 公告带来的转化
### 效果分析
分析公告效果:
- **到达率**: 公告推送到达率
- **互动率**: 用户互动情况
- **转化效果**: 公告带来的转化
- **用户反馈**: 用户反馈意见
## 公告模板
### 常用模板
预设公告模板:
- **系统维护模板**: 维护通知标准格式
- **活动推广模板**: 活动公告格式
- **功能更新模板**: 更新说明格式
- **紧急通知模板**: 紧急公告格式
### 自定义模板
创建自定义模板:
- 设计公告样式
- 定义内容结构
- 保存为模板
- 重复使用
## 公告审核
### 审核流程
公告发布审核:
1. **创建草稿**: 编辑公告内容
2. **提交审核**: 提交给审核人员
3. **审核**: 审核人员审核内容
4. **发布**: 审核通过后发布
5. **监控**: 发布后效果监控
### 审核权限
设置审核权限:
- **创建权限**: 谁可以创建公告
- **审核权限**: 谁可以审核公告
- **发布权限**: 谁可以发布公告
- **删除权限**: 谁可以删除公告
## 公告管理最佳实践
### 内容编写
- 标题简洁明了,突出重点
- 内容准确完整,避免歧义
- 语言通俗易懂,用户友好
- 重要信息加粗突出
- 提供联系方式
### 发布时机
- 选择用户活跃时段发布
- 避免节假日发布重要公告
- 紧急公告及时发布
- 常规公告定时发布
### 频率控制
- 避免过度打扰用户
- 合理控制公告数量
- 重要公告优先展示
- 定期清理过期公告
### 效果追踪
- 监控公告阅读数据
- 收集用户反馈
- 分析公告效果
- 持续优化改进
## 公告场景示例
### 系统维护通知
**标题**: 系统维护通知
**内容**:
- 维护时间: 2024-01-01 02:00-06:00
- 维护内容: 系统升级和性能优化
- 影响范围: 所有服务暂时不可用
- 补偿方案: 赠送1天会员时长
### 活动预告
**标题**: 双十一狂欢节来袭
**内容**:
- 活动时间: 11月11日 00:00-23:59
- 活动内容: 全场5折起
- 优惠券: 满100减20优惠券
- 参与方式: 点击查看详情
### 功能上线
**标题**: 新功能上线通知
**内容**:
- 功能名称: 流量统计功能
- 功能说明: 实时查看流量使用情况
- 使用方法: 进入用户中心-流量统计
- 意见反馈: 欢迎提出建议
## 常见问题
### 公告不显示
检查:
1. 公告是否已发布
2. 发布时间是否正确
3. 目标用户设置是否正确
4. 显示位置设置是否正确
### 公告显示异常
可能原因:
1. 内容格式问题
2. 图片链接失效
3. 样式冲突
4. 浏览器兼容性
### 推送失败
检查:
1. 推送配置是否正确
2. 用户联系方式是否有效
3. 推送服务是否正常
4. 是否达到推送限制
## 下一步
- [营销管理](/zh/admin/commerce/marketing) - 策划营销活动
- [用户管理](/zh/admin/users-support/users) - 管理目标用户
- [系统配置](/zh/admin/system/config) - 配置公告系统
+176
View File
@@ -0,0 +1,176 @@
<div v-pre>
# 优惠券管理
管理系统中的优惠券,包括创建、编辑、启用/禁用等功能。优惠券用于为用户提供购买折扣。
## 表格列说明
### 启用 (Enable)
开关按钮,控制优惠券是否可用。关闭后用户无法使用此优惠券。
### 名称 (Name)
优惠券的名称,用于管理标识。
### 代码 (Code)
优惠券兑换码,用户购买时输入此代码使用优惠券。
### 类型 (Type)
优惠券折扣类型:
- **百分比** - 按百分比折扣(如 10%)
- **金额** - 固定金额折扣(如 ¥50)
### 折扣 (Discount)
折扣值:
- 百分比类型显示百分比(如 10%)
- 金额类型显示货币金额(如 ¥50)
### 数量 (Count)
显示三行信息:
- **数量** - 优惠券总可用次数(0 = 无限)
- **剩余次数** - 还可使用次数
- **已使用次数** - 已被使用次数
### 有效期 (Validity Period)
优惠券的有效时间范围:
- 显示开始时间和结束时间
- 只有开始时间则显示单个时间
- 无限制显示 "--"
## 表格操作
### 编辑
打开侧边抽屉表单修改优惠券信息。
### 删除
删除优惠券(需确认),已使用的优惠券也可删除。
### 批量删除
选中多个优惠券后批量删除。
## 优惠券表单
### 名称 (必填)
优惠券的管理名称,不对用户显示。
### 自定义优惠券代码 (可选)
自定义兑换码,留空则系统自动生成。
### 优惠券类型 (必填)
单选按钮选择类型:
- **百分比折扣** - 按订单金额百分比折扣
- **金额折扣** - 固定金额减免
### 折扣值 (必填)
根据类型输入:
- **百分比**: 输入 1-100 的数字,带 % 后缀
- **金额**: 输入货币金额
### 指定订阅 (可选)
多选下拉框选择适用的产品套餐:
- 留空表示适用所有产品
- 选择特定产品则只对这些产品有效
### 开始时间 (可选)
优惠券生效时间:
- 使用日期选择器
- 不能选择过去的日期(昨天之前)
- 留空表示立即生效
### 结束时间 (可选)
优惠券失效时间:
- 使用日期选择器
- 留空表示永不过期
### 最大使用次数 (可选)
优惠券总共可使用次数:
- 0 或留空表示无限制
- 达到次数后自动失效
### 每用户最大使用次数 (可选)
单个用户可使用此优惠券的次数:
- 0 或留空表示无限制
- 防止单个用户重复使用
## 筛选功能
### 订阅筛选
选择产品套餐,查看该产品的专属优惠券。
### 关键词搜索
输入名称或代码搜索优惠券。
## 使用场景
### 场景一: 创建新用户注册优惠券
**表单配置**:
- 名称: 新用户优惠
- 代码: NEWUSER2024 (自定义)
- 类型: 百分比折扣
- 折扣: 20%
- 指定订阅: 留空(所有产品)
- 开始时间: 2024-01-01
- 结束时间: 2024-12-31
- 最大使用次数: 0 (无限)
- 每用户最大使用次数: 1
**效果**: 每个新用户可使用一次,全年有效,所有产品享受 8 折。
### 场景二: 创建限时促销优惠券
**表单配置**:
- 名称: 双11促销
- 代码: 留空(自动生成)
- 类型: 金额折扣
- 折扣: ¥50
- 指定订阅: 选择"年付套餐"
- 开始时间: 2024-11-11 00:00
- 结束时间: 2024-11-11 23:59
- 最大使用次数: 100
- 每用户最大使用次数: 1
**效果**: 双11当天前100位用户购买年付套餐减50元,每人限用一次。
### 场景三: 创建专属VIP优惠券
**表单配置**:
- 名称: VIP专享
- 代码: VIP888 (自定义)
- 类型: 百分比折扣
- 折扣: 30%
- 指定订阅: 选择"高级套餐"
- 开始时间: 留空
- 结束时间: 留空
- 最大使用次数: 0 (无限)
- 每用户最大使用次数: 0 (无限)
**效果**: VIP用户可无限次使用,购买高级套餐享受 7 折。
### 场景四: 创建一次性优惠码
**表单配置**:
- 名称: 感谢回馈
- 代码: THANKS100 (自定义)
- 类型: 金额折扣
- 折扣: ¥100
- 指定订阅: 留空(所有产品)
- 开始时间: 留空
- 结束时间: 留空
- 最大使用次数: 1
- 每用户最大使用次数: 1
**效果**: 单次有效的感谢券,先到先得。
## 重要提示
1. **启用控制**: 新优惠券默认禁用,需手动启用后用户才能使用
2. **代码唯一**: 自定义代码必须唯一,重复会创建失败
3. **自动生成**: 留空代码系统会自动生成随机代码
4. **产品限制**: 指定订阅后只对选定产品有效
5. **时间范围**: 开始时间不能是过去,结束时间可留空
6. **使用次数**: 0 或留空表示无限制
7. **用户限制**: 每用户限制可防止滥用
8. **删除影响**: 删除优惠券不影响已使用的订单
</div>
+354
View File
@@ -0,0 +1,354 @@
# 优惠券管理
优惠券管理模块用于创建和管理各类优惠券,是促销活动的重要工具。
## 功能概述
### 优惠券列表
查看和管理所有优惠券:
- **优惠券名称**: 优惠券显示名称
- **优惠券类型**: 满减/折扣/兑换券
- **优惠金额**: 减免金额或折扣比例
- **使用条件**: 满多少可用
- **发放数量**: 总发放量和剩余量
- **有效期**: 优惠券有效时间范围
- **适用范围**: 适用的产品或用户
- **状态**: 进行中/已结束/已暂停
### 创建优惠券
创建新的优惠券:
#### 基本信息
- **优惠券名称**: 便于识别的名称
- **优惠券描述**: 详细说明优惠内容
- **优惠券代码**: 兑换码(可自动生成)
- **优惠券类型**: 选择优惠类型
#### 优惠设置
**满减券**
- 满X元减Y元
- 可设置多档满减
**折扣券**
- 折扣比例(如8折)
- 最高优惠上限
**兑换券**
- 直接抵扣固定金额
- 或兑换指定商品
#### 使用条件
- **最低消费**: 订单满多少可用
- **适用产品**: 指定可用产品
- **适用用户**: 新用户/老用户/全部
- **使用次数**: 每人限用次数
- **叠加规则**: 是否可与其他优惠叠加
#### 发放设置
- **发放方式**:
- 公开领取: 所有人可领
- 定向发放: 指定用户
- 兑换码: 输入码领取
- 自动发放: 满足条件自动获得
- **发放数量**: 限制发放总量
- **领取限制**: 每人限领数量
#### 有效期设置
- **固定时间**: 指定起止日期
- **领取后N天**: 领取后N天内有效
- **永久有效**: 无时间限制
### 编辑优惠券
修改优惠券配置:
- 调整优惠金额和条件
- 增加发放数量
- 延长有效期
- 修改适用范围
::: tip 提示
已被用户领取的优惠券,修改配置不影响已领取的券。
:::
### 删除优惠券
删除优惠券:
- **软删除**: 下架但保留数据
- **硬删除**: 彻底删除
- 已被使用的优惠券记录会保留
## 优惠券类型
### 满减券
满足金额条件后减免:
**使用场景**:
- 促进大额订单
- 提高客单价
- 清仓促销
**配置示例**:
- 满100减10
- 满200减30
- 满500减100
### 折扣券
按比例折扣:
**使用场景**:
- 节假日促销
- 会员专享
- 新品推广
**配置示例**:
- 9折券
- 8折券(最高优惠50元)
- 7折券(仅限新用户)
### 兑换券
直接抵扣金额:
**使用场景**:
- 用户补偿
- 推广奖励
- 积分兑换
**配置示例**:
- 10元无门槛券
- 50元体验券
- 100元代金券
### 商品券
兑换指定商品:
**使用场景**:
- 赠品发放
- 活动奖励
- 积分商城
**配置示例**:
- 1个月套餐兑换券
- 100GB流量包兑换券
## 优惠券发放
### 批量发放
向多个用户发放优惠券:
1. 选择要发放的优惠券
2. 选择目标用户群
3. 设置发放数量
4. 确认发放
**发放对象**:
- 全部用户
- 指定用户组
- 新注册用户
- 高价值用户
- 即将流失用户
### 兑换码生成
生成优惠券兑换码:
- **批量生成**: 一次生成多个兑换码
- **自定义前缀**: 设置兑换码前缀
- **导出兑换码**: 导出Excel文件
- **兑换码管理**: 查看使用状态
### 自动发放
配置自动发放规则:
**触发条件**:
- 用户注册时发放
- 首次购买后发放
- 订阅到期前发放
- 达到消费额度发放
- 生日当天发放
**发放内容**:
- 指定优惠券
- 随机优惠券
- 不同档位优惠券
## 优惠券使用
### 使用流程
用户使用优惠券的流程:
1. **领取优惠券**: 用户领取或获得优惠券
2. **查看优惠券**: 在账户中查看可用券
3. **下单使用**: 下单时选择优惠券
4. **系统验证**: 验证使用条件
5. **计算优惠**: 自动计算优惠金额
6. **完成支付**: 按优惠后价格支付
### 使用限制
控制优惠券使用:
- **单次限制**: 一个订单限用几张
- **时间限制**: 特定时间段可用
- **产品限制**: 指定产品可用
- **用户限制**: 特定用户组可用
- **设备限制**: 限制使用设备
### 使用规则
优惠券使用的规则设置:
- **优先级**: 多张券的使用顺序
- **叠加规则**: 是否可与其他优惠叠加
- **部分退款**: 退款时优惠券处理
- **过期提醒**: 到期前提醒用户
## 优惠券统计
### 发放统计
统计优惠券发放情况:
- **发放总量**: 已发放的优惠券数量
- **领取情况**: 领取率和领取用户
- **库存剩余**: 剩余可发放数量
- **发放趋势**: 每日发放数量变化
### 使用统计
分析优惠券使用情况:
- **使用率**: 已使用/已发放比例
- **使用金额**: 优惠券减免总金额
- **使用订单**: 使用优惠券的订单数
- **使用用户**: 使用优惠券的用户数
### 效果分析
评估优惠券促销效果:
- **转化率**: 领取后的购买转化
- **客单价**: 使用券的平均订单金额
- **ROI分析**: 投入产出比
- **用户分布**: 使用优惠券的用户画像
## 优惠券推广
### 推广渠道
通过多种渠道推广优惠券:
- **站内推广**: 首页banner、弹窗
- **邮件推送**: 发送优惠券邮件
- **短信通知**: 短信告知优惠活动
- **社交媒体**: 分享到社交平台
- **推广链接**: 生成专属推广链接
### 推广活动
策划优惠券推广活动:
- **限时抢券**: 限量优惠券抢购
- **分享领券**: 分享后获得优惠券
- **签到送券**: 每日签到赠券
- **推荐有礼**: 推荐好友得券
- **消费返券**: 购买后返还优惠券
## 优惠券模板
### 常用模板
预设常用优惠券模板:
- 新用户专享券
- 会员生日券
- 节日促销券
- 满减优惠券
- 复购优惠券
### 自定义模板
创建自定义优惠券模板:
- 保存常用配置
- 快速创建同类券
- 模板复制和编辑
## 风控管理
### 防作弊
防止优惠券被恶意使用:
- **领取限制**: IP限制、设备限制
- **实名验证**: 要求实名认证
- **使用监控**: 监控异常使用行为
- **黑名单**: 拉黑作弊用户
### 风险预警
优惠券风险提醒:
- 异常领取预警
- 库存不足提醒
- 预算超支警告
- 作弊行为告警
## 最佳实践
- 合理设置使用门槛,避免亏损
- 控制发放总量和预算
- 定期分析优惠券效果
- 针对不同用户群发放不同优惠券
- 配合营销活动使用优惠券
- 及时清理过期和无效券
## 常见问题
### 优惠券无法使用
检查以下几点:
1. 是否满足使用条件
2. 优惠券是否已过期
3. 产品是否在适用范围内
4. 是否达到最低消费额
### 优惠计算不正确
可能原因:
1. 优惠券配置错误
2. 多张券叠加规则问题
3. 满减档位设置问题
### 发放失败
检查:
1. 库存是否充足
2. 用户是否符合领取条件
3. 系统配置是否正确
## 下一步
- [营销管理](/zh/admin/commerce/marketing) - 创建营销活动
- [订单管理](/zh/admin/commerce/orders) - 查看优惠券使用订单
- [用户管理](/zh/admin/users-support/users) - 向用户发放优惠券
+354
View File
@@ -0,0 +1,354 @@
# 营销管理
营销管理模块用于策划和执行各类营销活动,帮助提升用户增长和收入。
## 功能概述
### 营销活动列表
查看和管理所有营销活动:
- **活动名称**: 营销活动标题
- **活动类型**: 促销/拉新/留存/转化
- **活动状态**: 未开始/进行中/已结束
- **活动时间**: 开始和结束时间
- **参与人数**: 活动参与用户数
- **转化效果**: 转化率和收入
- **活动预算**: 预算和实际花费
### 创建营销活动
策划新的营销活动:
#### 活动信息
- **活动名称**: 活动主题名称
- **活动类型**: 选择活动类型
- **活动描述**: 详细活动说明
- **活动标签**: 便于分类管理
#### 活动时间
- **开始时间**: 活动开始日期时间
- **结束时间**: 活动结束日期时间
- **预热期**: 活动预告时间
- **冷静期**: 活动结束后的处理期
#### 活动规则
- **参与条件**: 用户参与资格
- **活动奖励**: 奖励内容和规则
- **限制条件**: 参与次数、人数限制
- **计算规则**: 积分、排名计算方式
#### 营销素材
- **活动图片**: 宣传海报、Banner
- **活动文案**: 宣传文案内容
- **分享素材**: 社交媒体分享图文
- **落地页**: 活动专题页面链接
## 营销活动类型
### 拉新活动
吸引新用户注册:
**活动形式**:
- 新用户注册送优惠券
- 首次购买特惠
- 邀请好友注册奖励
- 新用户专享套餐
**效果指标**:
- 新用户注册数
- 新用户转化率
- 获客成本(CAC)
- 新用户质量
### 促销活动
刺激用户购买:
**活动形式**:
- 限时折扣
- 满减优惠
- 买一送一
- 套餐组合优惠
**效果指标**:
- 销售额增长
- 订单数量
- 客单价变化
- ROI
### 留存活动
提高用户留存:
**活动形式**:
- 每日签到奖励
- 连续登录奖励
- 会员日特惠
- 续费优惠
**效果指标**:
- 用户活跃度
- 留存率提升
- 流失率下降
- 生命周期价值
### 转化活动
促进用户付费:
**活动形式**:
- 试用转付费优惠
- 升级套餐折扣
- 首单立减
- 限时抢购
**效果指标**:
- 付费转化率
- 升级转化率
- 平均付费金额
- 付费用户增长
## 推广渠道
### 站内推广
在系统内推广活动:
- **首页Banner**: 首页轮播图展示
- **弹窗通知**: 登录时弹窗提醒
- **消息推送**: 站内信通知
- **活动专区**: 活动汇总页面
### 邮件推广
通过邮件推广:
- **营销邮件**: 发送活动邮件
- **邮件模板**: 设计精美邮件模板
- **分组发送**: 针对不同用户群
- **效果追踪**: 邮件打开率、点击率
### 短信推广
通过短信推广:
- **短信通知**: 发送活动短信
- **短信模板**: 预设短信内容
- **定时发送**: 设置发送时间
- **效果统计**: 短信送达率
### 社交媒体
在社交平台推广:
- **社交分享**: 用户分享到社交平台
- **社群运营**: 微信群、QQ群推广
- **KOL合作**: 与意见领袖合作
- **内容营销**: 发布营销内容
## 用户分群
### 用户画像
根据用户特征分群:
- **基础属性**: 年龄、地区、性别
- **行为特征**: 活跃度、使用频率
- **消费特征**: 消费金额、购买频次
- **生命周期**: 新用户、活跃、沉睡、流失
### 精准营销
针对不同用户群推送:
- **新用户**: 欢迎活动、新手引导
- **活跃用户**: 付费转化、升级优惠
- **高价值用户**: VIP特权、专属优惠
- **沉睡用户**: 唤醒活动、回归奖励
- **流失预警**: 挽留优惠、专属服务
## 活动执行
### 活动上线
活动正式开始:
1. **最终确认**: 检查活动配置
2. **资源准备**: 准备优惠券、奖品
3. **渠道通知**: 各渠道开始推广
4. **实时监控**: 监控活动数据
### 活动监控
实时监控活动进展:
- **参与数据**: 实时参与人数
- **转化数据**: 转化率、订单量
- **预算消耗**: 已使用预算
- **异常预警**: 异常情况告警
### 活动调整
根据数据优化活动:
- **规则调整**: 优化活动规则
- **预算调整**: 增加或减少预算
- **渠道优化**: 调整推广渠道
- **素材更新**: 更换营销素材
### 活动结束
活动收尾工作:
- **停止推广**: 关闭推广渠道
- **数据结算**: 统计活动数据
- **奖励发放**: 发放活动奖励
- **效果评估**: 评估活动效果
## 活动数据分析
### 参与数据
分析活动参与情况:
- **参与人数**: 总参与用户数
- **参与率**: 目标用户参与比例
- **参与渠道**: 各渠道参与占比
- **参与时段**: 参与时间分布
### 转化数据
分析转化效果:
- **转化率**: 参与到购买的转化
- **订单数**: 活动产生的订单
- **销售额**: 活动带来的收入
- **客单价**: 平均订单金额
### ROI分析
计算投资回报率:
- **总投入**: 活动总成本
- **总产出**: 活动总收入
- **ROI**: 投资回报率
- **盈亏平衡**: 达到盈亏平衡的时间
### 用户分析
分析参与用户:
- **用户构成**: 新老用户占比
- **用户质量**: 后续留存和复购
- **用户价值**: 生命周期价值
- **用户反馈**: 用户满意度
## A/B测试
### 测试设计
设计A/B测试方案:
- **测试目标**: 明确测试目的
- **测试变量**: 确定测试变量
- **对照组**: 设置对照组
- **实验组**: 设置实验组
### 测试执行
执行A/B测试:
- **随机分组**: 随机分配用户
- **同步开始**: 同时开始测试
- **数据收集**: 收集测试数据
- **结果分析**: 分析测试结果
### 结果应用
应用测试结果:
- **选择方案**: 选择最优方案
- **全量推广**: 向所有用户推广
- **持续优化**: 继续迭代优化
## 营销自动化
### 自动化流程
设置自动化营销流程:
**触发条件**:
- 用户注册
- 首次登录
- 订阅到期
- 长期未登录
- 购买完成
**自动操作**:
- 发送欢迎邮件
- 推送优惠券
- 发送提醒通知
- 推荐相关产品
### 生命周期营销
基于用户生命周期自动营销:
- **获客期**: 注册引导、首购优惠
- **成长期**: 使用指导、升级推荐
- **成熟期**: VIP服务、续费优惠
- **衰退期**: 唤醒活动、挽留优惠
- **流失期**: 回归奖励、重新激活
## 最佳实践
- 明确营销目标和KPI指标
- 了解目标用户需求和痛点
- 设计吸引人的活动规则
- 选择合适的推广渠道
- 实时监控和快速调整
- 做好数据分析和总结
- 建立营销活动SOP
## 活动案例
### 双十一大促
**活动目标**: 提升销售额
**活动内容**:
- 全场5折起
- 满减优惠券
- 限时秒杀
- 分享抽奖
**效果**:
- 销售额增长300%
- 新用户增长200%
- ROI达到3.5
### 邀请有礼
**活动目标**: 拉新获客
**活动内容**:
- 邀请好友注册得优惠券
- 好友首购双方都有奖
- 邀请排行榜奖励
**效果**:
- 新增用户5000+
- 获客成本降低40%
- 病毒系数1.8
## 下一步
- [优惠券管理](/zh/admin/commerce/coupons) - 配置营销优惠券
- [公告管理](/zh/admin/commerce/announcements) - 发布活动公告
- [用户管理](/zh/admin/users-support/users) - 分析用户数据
+148
View File
@@ -0,0 +1,148 @@
<div v-pre>
# 订单管理
查看系统中所有用户订单,支持订单状态修改和详细信息查看。这是一个只读为主的订单查询页面,主要用于订单信息查看和异常处理。
## 页面功能
订单管理页面是一个简单的订单查询和状态管理工具,提供以下功能:
1. **订单列表查看** - 表格展示所有订单
2. **状态修改** - 修改特定状态的订单
3. **金额详情** - 悬浮卡片查看价格明细
4. **筛选搜索** - 快速定位目标订单
## 表格列说明
### 订单号
系统生成的唯一订单编号,用于订单追踪和查询。
### 类型
订单的业务类型:
- **新购** - 用户首次购买套餐
- **续费** - 为现有订阅延长时间
- **重置流量** - 单独购买流量重置
- **充值** - 充值账户余额
### 订阅
显示关联的产品信息:
- 新购/续费/重置流量订单: 显示 `产品名 × 数量`
- 充值订单: 显示 "充值"
### 金额
订单总金额,点击可查看详细价格构成。
### 用户
下单用户信息,点击可查看用户详情。
### 更新时间
订单最后状态变更时间。
### 状态
订单当前状态,部分状态支持修改:
- **待支付** (橙色) - 可修改
- **已支付** (绿色) - 只读
- **已取消** (灰色) - 可修改
- **已关闭** (红色) - 可修改
- **已完成** (绿色) - 只读
## 核心功能
### 1. 订单状态修改
**可修改状态**: 待支付、已取消、已关闭
操作步骤:
1. 找到需要修改的订单
2. 点击状态列的下拉选择器
3. 选择新的状态
4. 系统自动保存并刷新
**不可修改状态**: 已支付、已完成
这两种状态显示为只读标签,无法修改。
**常见操作**:
- 待支付 → 已支付: 手动标记支付完成
- 待支付 → 已取消: 取消超时订单
- 待支付 → 已关闭: 关闭异常订单
- 已取消 → 待支付: 恢复误操作订单
### 2. 查看金额详情
鼠标悬停在金额上,显示完整价格明细:
**价格构成**:
- 订阅价格 - 产品原价
- 折扣金额 - 批量购买折扣
- 优惠券折扣 - 使用的优惠券
- 手续费 - 支付平台费用
- 总计 - 实际支付金额
**其他信息**:
- 交易号 - 第三方支付交易编号
- 支付方式 - 使用的支付平台
### 3. 筛选和搜索
**状态筛选**: 选择订单状态查看对应订单
**产品筛选**: 选择产品套餐查看相关订单
**用户筛选**: 输入用户 ID 查看该用户所有订单
**关键词搜索**: 输入订单号精确查找
可同时使用多个筛选条件。
## 使用场景
### 场景一: 手动标记支付完成
用户支付成功但订单状态未自动更新:
1. 使用订单号搜索找到订单
2. 点击金额查看交易号
3. 确认第三方支付平台已收款
4. 点击状态下拉选择 "已支付"
5. 系统自动处理并分配权益
### 场景二: 取消超时订单
定期清理超时未支付订单:
1. 筛选 "待支付" 状态
2. 查看更新时间判断是否超时
3. 点击状态选择 "已取消"
4. 订单标记为已取消
### 场景三: 用户订单查询
用户咨询订单问题:
1. 在用户筛选中输入用户 ID
2. 查看该用户所有订单
3. 找到对应订单查看状态
4. 点击金额查看详细信息
5. 根据情况处理问题
### 场景四: 产品销售查询
查看某个产品的销售情况:
1. 在产品筛选中选择套餐
2. 查看该产品的所有订单
3. 查看不同状态的订单数量
4. 分析销售趋势
## 注意事项
1. **只能修改部分状态** - 仅待支付、已取消、已关闭可修改
2. **已支付不可改** - 已支付和已完成订单不可修改
3. **修改需谨慎** - 状态修改会触发权益变更
4. **核对支付** - 修改为已支付前务必确认实际收款
5. **价格明细** - 通过金额悬浮卡片核对价格计算
6. **用户问题** - 使用用户筛选快速查询用户订单
</div>
+291
View File
@@ -0,0 +1,291 @@
# 订单管理
订单管理模块用于处理用户的购买订单,是系统收入和业务流程的核心环节。
## 功能概述
### 订单列表
查看和管理所有订单:
- **订单号**: 唯一的订单标识
- **用户信息**: 购买用户的姓名和邮箱
- **产品信息**: 购买的产品名称和规格
- **订单金额**: 实付金额和原价
- **支付方式**: 支付宝/微信/虚拟货币等
- **订单状态**: 待支付/已支付/已完成/已取消/已退款
- **创建时间**: 订单创建的时间
- **支付时间**: 订单支付完成的时间
### 订单筛选
快速查找特定订单:
- **按状态筛选**: 待支付/已支付/已完成等
- **按时间范围**: 今天/本周/本月/自定义
- **按支付方式**: 按支付渠道筛选
- **按用户**: 查看特定用户的订单
- **按产品**: 查看特定产品的销售订单
- **按金额**: 按订单金额范围筛选
### 创建订单
为用户手动创建订单:
#### 选择用户
- 搜索已存在的用户
- 或创建新用户
- 填写用户基本信息
#### 选择产品
- 从产品列表选择套餐
- 设置购买数量
- 查看价格详情
#### 优惠设置
- 应用优惠券
- 手动折扣
- 余额抵扣
- 积分抵扣
#### 订单备注
- 添加订单备注
- 标记特殊订单
- 记录沟通内容
### 订单详情
查看订单的完整信息:
#### 基本信息
- 订单号和创建时间
- 用户信息和联系方式
- 产品详情和规格
- 订单金额明细
#### 支付信息
- 支付方式和支付流水号
- 支付时间和支付状态
- 第三方平台订单号
- 支付凭证(如有)
#### 订单状态
- 当前订单状态
- 状态变更历史
- 操作日志记录
#### 售后信息
- 退款申请记录
- 客服沟通记录
- 问题处理进度
## 订单操作
### 订单审核
审核待处理的订单:
- **自动审核**: 在线支付自动完成
- **人工审核**: 银行转账等需要人工确认
- **审核通过**: 开通服务并通知用户
- **审核拒绝**: 拒绝订单并说明原因
### 订单处理
处理已支付的订单:
- **自动开通**: 支付完成自动激活服务
- **手动开通**: 管理员手动开通服务
- **延迟开通**: 设置未来开通时间
- **批量处理**: 批量处理多个订单
### 订单取消
取消未支付或异常的订单:
- **用户取消**: 用户主动取消订单
- **超时取消**: 未在规定时间内支付
- **管理员取消**: 管理员手动取消
- **系统取消**: 检测到异常自动取消
### 订单退款
处理退款请求:
#### 退款审核
- 查看退款原因
- 评估退款合理性
- 决定是否同意退款
#### 退款处理
- **全额退款**: 退还全部订单金额
- **部分退款**: 退还部分金额
- **退款到余额**: 退款到用户账户余额
- **原路退回**: 退款到原支付方式
#### 退款后处理
- 回收已开通的服务
- 更新用户账户状态
- 记录退款原因和处理结果
## 支付管理
### 支付方式
支持多种支付渠道:
- **支付宝**: 扫码支付/当面付
- **微信支付**: 扫码支付/H5 支付
- **虚拟货币**: USDT/BTC 等
- **银行转账**: 线下转账
- **余额支付**: 使用账户余额
### 支付配置
配置支付渠道参数:
- **商户信息**: 商户号/密钥
- **支付回调**: 异步通知 URL
- **支付限额**: 最低/最高支付金额
- **支付手续费**: 手续费率和承担方
### 支付回调
处理支付平台回调:
- **验证签名**: 验证回调数据真实性
- **更新状态**: 更新订单支付状态
- **开通服务**: 自动开通购买的服务
- **发送通知**: 通知用户支付成功
## 订单统计
### 销售统计
分析订单销售数据:
- **订单数量**: 总订单数和增长趋势
- **订单金额**: 总销售额和平均客单价
- **转化率**: 订单转化率分析
- **复购率**: 用户复购情况
### 支付统计
分析支付方式使用:
- **各支付方式占比**: 支付宝/微信等占比
- **支付成功率**: 各渠道支付成功率
- **支付时效**: 从下单到支付的时长
### 产品统计
分析产品销售情况:
- **热销产品**: 销量最高的产品
- **收入贡献**: 各产品收入占比
- **库存预警**: 库存不足的产品
## 订单导出
导出订单数据用于分析:
### 导出选项
- **导出格式**: Excel/CSV/PDF
- **导出范围**: 全部/筛选结果
- **导出字段**: 自定义导出字段
- **数据脱敏**: 敏感信息脱敏处理
### 导出用途
- **财务对账**: 核对收入数据
- **数据分析**: 进行业务分析
- **报表生成**: 生成销售报表
- **备份存档**: 数据备份归档
## 异常订单处理
### 订单异常类型
- **重复支付**: 同一订单多次支付
- **支付未到账**: 已支付但系统未收到
- **金额不符**: 支付金额与订单金额不一致
- **恶意订单**: 刷单或欺诈订单
### 处理流程
1. **识别异常**: 系统自动标记或人工发现
2. **调查原因**: 查看支付记录和日志
3. **联系用户**: 与用户沟通确认情况
4. **处理方案**: 退款/补发/人工处理
5. **记录备案**: 记录处理过程和结果
## 订单安全
### 风控措施
- **实名认证**: 要求用户实名认证
- **支付限额**: 设置单笔支付限额
- **异常检测**: 检测异常支付行为
- **黑名单**: 拉黑恶意用户
### 防刷单
- **频率限制**: 限制下单频率
- **IP 检测**: 检测异常 IP 行为
- **设备指纹**: 识别重复设备
- **人工审核**: 可疑订单人工审核
## 最佳实践
- 及时处理待审核订单
- 保证支付回调的稳定性
- 定期核对财务数据
- 快速响应退款请求
- 记录完整的操作日志
- 分析订单数据优化运营
## 常见问题
### 支付成功但未到账
处理步骤:
1. 查看支付平台订单状态
2. 检查支付回调日志
3. 手动触发回调处理
4. 联系支付平台客服
### 订单无法取消
可能原因:
1. 订单已经支付
2. 服务已经开通
3. 系统权限不足
### 退款失败
检查以下几点:
1. 退款接口配置是否正确
2. 账户余额是否充足
3. 退款信息是否完整
4. 是否超过退款时限
## 下一步
- [优惠券管理](/zh/admin/commerce/coupons) - 创建优惠活动
- [用户管理](/zh/admin/users-support/users) - 管理用户账户
- [财务统计](/zh/admin/logs/balance) - 查看收支明细
+204
View File
@@ -0,0 +1,204 @@
<div v-pre>
# 产品管理
管理系统中的订阅套餐产品,包括价格、流量配额、节点权限等设置。产品是用户购买的基本单位。
## 表格列说明
### 显示 (Show)
开关按钮,控制产品是否在前台显示。关闭后用户无法看到此产品。
### 售卖 (Sell)
开关按钮,控制产品是否允许购买。可以显示但不售卖(预告模式)。
### 名称 (Name)
产品套餐名称。
### 单价 (Unit Price)
显示价格和计费周期,格式如 `¥10/月`
### 套餐价 (Replacement)
优惠价格或一次性购买价格。
### 流量 (Traffic)
每周期提供的流量配额,0 显示为"无限"。
### 设备限制 (Device Limit)
同时在线设备数限制,0 显示为"无限"。
### 库存 (Inventory)
剩余可售数量,0 显示为"无限"。
### 配额 (Quota)
总销售限额,0 显示为"无限"。
### 语言 (Language)
产品适用的语言限制,用于多语言站点。
### 已售 (Sold)
已售出数量统计。
## 表格操作
### 编辑
打开侧边抽屉表单修改产品信息。
### 删除
删除产品(需确认),已有订阅的产品可能无法删除。
### 复制
快速复制产品创建新套餐,自动设置为不显示、不售卖。
### 批量删除
选中多个产品后批量删除。
### 拖拽排序
拖动产品行调整显示顺序,影响前台展示顺序。
## 产品表单
表单包含三个标签页:
### 基础 (Basic) 标签页
**名称和语言**:
- **名称** (必填) - 产品套餐名称
- **语言** (可选) - 语言限制,如 `zh-CN``en`
**流量和限制**:
- **流量** - 每周期流量配额 (GB),0 = 无限
- **限速** - 带宽限制 (Mbps),0 = 不限速
- **设备限制** - 同时在线设备数,0 = 无限
**库存和配额**:
- **库存** - 剩余可售数量,0 = 无限
- **配额** - 总销售限额,0 = 无限
**产品描述** (JSON编辑器):
```json
{
"description": "产品描述文字",
"features": [
{
"type": "default",
"icon": "uil:shield-check",
"label": "功能特性"
}
]
}
```
### 定价 (Pricing) 标签页
**基础定价**:
- **单价** (必填) - 基础价格
- **计费周期** (必填) - 选项:
- NoLimit (不限时)
- Year (年)
- Month (月)
- Day (日)
- Hour (小时)
- Minute (分钟)
- **套餐价** - 优惠价格
- **重置周期** - 流量重置方式:
- 不重置
- 每月1号重置
- 按月重置
- 按年重置
**批量折扣**:
动态数组,支持添加多个折扣梯度:
- **数量** - 购买周期数
- **折扣** - 折扣百分比 (1-100%)
- **价格** - 折后价格
系统自动计算:修改任意两个值,第三个值自动计算。
**扣费设置**:
- **扣费比例** - 节点流量倍率 (0-100%),留空为自动
- **续费重置** - 开关,续费时是否重置流量
- **购买时使用折扣** - 开关,是否允许使用优惠券
### 服务器 (Servers) 标签页
**节点标签选择**:
手风琴式列表,显示所有标签和标签下的节点:
- 勾选标签,自动包含该标签下所有节点
- 显示节点数量
- 展开查看标签内节点详情(名称、地址、协议)
**单独节点选择**:
选择没有标签的节点:
- 逐个勾选节点
- 显示节点名称、地址:端口、协议
## 使用场景
## 使用场景
### 场景一: 创建基础月付套餐
**基础标签页**:
- 名称: 标准月付
- 流量: 100 GB
- 限速: 0 (不限速)
- 设备限制: 3
- 库存: 0 (无限)
**定价标签页**:
- 单价: 30
- 计费周期: Month
- 重置周期: 按月重置
- 批量折扣:
- 3 个月, 10% 折扣, 81 元
- 6 个月, 15% 折扣, 153 元
- 12 个月, 20% 折扣, 288 元
**服务器标签页**:
- 勾选"基础节点"标签
### 场景二: 创建流量包产品
**基础标签页**:
- 名称: 500GB流量包
- 流量: 500 GB
- 设备限制: 0 (无限)
**定价标签页**:
- 单价: 50
- 计费周期: NoLimit (不限时)
- 重置周期: 不重置
- 续费重置: 关闭
**服务器标签页**:
- 勾选所有高速节点标签
### 场景三: 创建高级年付套餐
**基础标签页**:
- 名称: 高级年付
- 流量: 0 (无限)
- 限速: 200 Mbps
- 设备限制: 10
**定价标签页**:
- 单价: 300
- 计费周期: Year
- 重置周期: 按月重置
- 续费重置: 开启
**服务器标签页**:
- 勾选所有节点标签
## 重要提示
1. **显示控制**: 新产品默认不显示、不售卖,需手动开启
2. **节点配置**: 必须配置节点,否则用户无法使用
3. **批量折扣**: 修改单价或周期后,折扣价格自动重新计算
4. **库存配额**: 0 表示无限,非零值会限制销售数量
5. **语言限制**: 留空表示所有语言可见
6. **拖拽排序**: 排序会立即保存并影响前台显示
7. **复制功能**: 复制的产品不会自动上架
8. **已售产品**: 修改已售产品配置会影响现有订阅
</div>
+225
View File
@@ -0,0 +1,225 @@
# Dashboard 仪表盘
Dashboard 是管理后台的首页,实时展示系统核心数据和运营状况。
## 页面概览
Dashboard 主要包含三大区域:
1. **关键指标卡片** - 6个核心业务指标
2. **数据统计图表** - 收入、用户、流量三大统计图
3. **赞助商展示** - 显示支持 PPanel 的赞助商
## 关键指标卡片
顶部展示 6 个关键业务指标卡片:
### 在线用户数
- **显示内容**: 当前系统在线用户数量
- **副标题**: "Currently Online"
- **点击跳转**: `/dashboard/user` 用户管理页面
- **图标**: 蓝色用户图标
### 今日流量
- **显示内容**: 今日上传+下载总流量
- **副标题**: 显示上传/下载流量明细
- ↑ 上传流量
- ↓ 下载流量
- **图标**: 紫色交换图标
- **格式**: 自动转换为合适单位 (KB/MB/GB/TB)
### 本月流量
- **显示内容**: 本月上传+下载总流量
- **副标题**: 显示本月上传/下载流量明细
- **图标**: 橙色云数据图标
- **格式**: 自动转换为合适单位
### 服务器总数
- **显示内容**: 在线服务器数 + 离线服务器数
- **副标题**: 显示在线/离线服务器数量明细
- "在线 X 离线 Y"
- **点击跳转**: `/dashboard/servers` 服务器管理页面
- **图标**: 绿色服务器图标
### 待回复工单
- **显示内容**: 等待管理员回复的工单数量
- **副标题**: "Pending"
- **点击跳转**: `/dashboard/ticket` 工单管理页面
- **图标**: 红色工单图标
### 系统版本信息
- **显示内容**:
- 后端服务版本号
- Web 管理端版本号
- 版本更新状态
- **操作功能**:
- 检查更新
- 一键更新(如有新版本)
- 重启系统
- 查看更新日志
::: tip 提示
点击有链接的卡片可以快速跳转到对应的管理页面。
:::
## 数据统计图表
### 收入统计图表 (Revenue Statistics)
展示系统收入数据,支持三个时间维度切换:
**时间维度**:
- **今日 (Today)**: 今日收入数据
- **本月 (Month)**: 本月每日收入趋势
- **累计 (Total)**: 历史累计收入数据
**今日数据** - 饼图展示:
- **新购收入**: 新用户购买订单金额
- **续费收入**: 老用户续费订单金额
- **中心数字**: 今日总收入
**本月数据** - 柱状图展示:
- X轴: 每日日期
- Y轴: 收入金额
- 显示本月每日收入柱状图
- 支持鼠标悬停查看详细数据
**累计数据** - 面积图展示:
- **新购订单数**: 累计新购订单数量
- **续费订单数**: 累计续费订单数量
- **订单总数**: 累计订单总数
- 趋势面积图展示长期变化
**底部汇总**:
- 新购金额 / 订单数
- 续费金额 / 订单数
- 总金额 / 总订单数
### 用户统计图表 (User Statistics)
展示用户相关数据,支持三个时间维度切换:
**时间维度**:
- **今日 (Today)**: 今日用户数据
- **本月 (Month)**: 本月每日用户趋势
- **累计 (Total)**: 历史累计用户数据
**今日数据** - 饼图展示:
- **注册用户**: 今日新注册用户数
- **新购用户**: 今日首次购买用户数
- **续费用户**: 今日续费用户数
- **中心数字**: 今日总用户数(注册+新购+续费)
**本月数据** - 柱状图展示:
- X轴: 每日日期
- Y轴: 用户数量
- 三种颜色柱状图:
- 注册用户 (蓝色)
- 新购用户 (绿色)
- 续费用户 (橙色)
**累计数据** - 面积图展示:
- **注册用户**: 累计注册用户趋势
- **新购用户**: 累计新购用户趋势
- **续费用户**: 累计续费用户趋势
- 三条面积曲线展示长期变化
**底部汇总**:
- 注册用户总数
- 新购用户总数
- 续费用户总数
### 流量排名图表 (Traffic Rank)
展示节点或用户的流量使用排名:
**时间切换** (右上角标签):
- **今日 (Today)**: 今日流量排名
- **昨日 (Yesterday)**: 昨日流量排名
**类型切换** (下拉选择):
- **节点流量 (Nodes)**: 显示各服务器节点的流量消耗排名
- **用户流量 (Users)**: 显示用户流量使用排名
**图表展示** - 横向柱状图:
- Y轴: 排名序号(1, 2, 3...)
- X轴: 流量大小(自动转换单位)
- 柱状图: 流量大小可视化
- 柱内标签: 显示节点名称或用户ID
**交互功能**:
- 鼠标悬停: 显示详细流量数据
- 节点模式: 显示节点名称和流量
- 用户模式: 显示用户订阅详情(ID、套餐、到期时间等)
**空数据处理**:
- 无数据时显示空状态提示
::: tip 流量计算
流量 = 上传流量 + 下载流量,自动换算为 KB/MB/GB/TB 单位。
:::
## 赞助商展示
页面底部显示支持 PPanel 项目的赞助商:
**显示内容**:
- 赞助商 Logo
- 赞助商名称
- 简要描述
**数据来源**:
- 从 GitHub 仓库获取最新赞助商列表
- CDN 加速访问
- 自动过滤已过期的赞助
**交互**:
- 点击卡片跳转到赞助商网站
- 新窗口打开,不影响当前页面
::: tip 支持 PPanel
赞助帮助 PPanel 持续发布更新! 点击赞助商卡片可访问他们的服务。
:::
## 数据刷新
- **自动刷新**: 页面数据根据查询配置自动更新
- **手动刷新**: 刷新浏览器页面可立即更新所有数据
- **实时性**: 关键指标实时获取最新数据
## 使用建议
1. **每日查看**: 建议每天查看 Dashboard 了解运营状况
2. **关注指标**: 重点关注在线用户、待回复工单等实时指标
3. **趋势分析**: 定期查看图表趋势,分析业务变化
4. **异常处理**: 发现数据异常及时点击卡片跳转处理
5. **版本更新**: 有新版本提示时及时更新系统
## 常见问题
### 数据不准确怎么办?
1. 刷新浏览器页面重新获取数据
2. 检查服务器时间是否正确
3. 查看系统日志是否有错误
### 图表显示为空?
可能原因:
- 时间段内确实没有数据
- 数据统计服务异常
- 刷新页面重试
### 赞助商不显示?
可能原因:
- 网络连接问题,无法访问 CDN
- 当前没有有效期内的赞助商
- 浏览器拦截了外部资源
## 下一步
- [用户管理](/zh/admin/users-support/users) - 查看用户详情和流量使用
- [工单管理](/zh/admin/users-support/tickets) - 处理待回复工单
- [服务器管理](/zh/admin/maintenance/servers) - 管理服务器节点
- [订单管理](/zh/admin/commerce/orders) - 查看收入和订单详情
+136
View File
@@ -0,0 +1,136 @@
<div v-pre>
# 余额日志
查看用户余额变动记录,包含充值、消费、奖励等所有余额操作。
## 表格列说明
### 用户 (User)
余额变动的用户(可点击查看详情)。
### 金额 (Amount)
余额变动金额:
- 正数表示增加
- 负数表示减少
### 订单号 (Order No.)
关联的订单号(可点击查看订单详情)。
### 余额 (Balance)
变动后的用户余额。
### 类型 (Type)
余额变动类型(Badge显示):
**流量重置类(23x)**:
- 自动重置 (231)
- 提前重置 (232)
- 付费重置 (233)
**充值提现类(32x)**:
- 充值 (321)
- 提现 (322)
- 付款 (323)
- 退款 (324)
- 奖励 (325)
- 管理员调整 (326)
**购买类(33x)**:
- 购买 (331)
- 续费 (332)
- 退款 (333)
- 提现 (334)
- 管理员调整 (335)
**调整类(34x)**:
- 增加 (341)
- 减少 (342)
### 时间 (Time)
余额变动时间。
## 筛选功能
### 日期筛选
选择查看指定日期的余额记录,默认今天。
### 用户ID筛选
输入用户ID查看该用户的余额变动。
## 使用场景
### 场景一: 查看今日充值
1. 默认显示今天的余额记录
2. 筛选类型"充值"
3. 统计充值金额
4. 分析充值用户
### 场景二: 追踪用户余额
**查看用户消费**:
1. 输入用户ID筛选
2. 查看所有余额变动
3. 分析消费习惯
4. 验证账单正确性
### 场景三: 排查异常交易
**检查大额变动**:
1. 浏览余额记录
2. 关注大额充值/消费
3. 点击订单号查看详情
4. 验证交易合法性
### 场景四: 管理员调整余额
**手动调整后验证**:
1. 筛选"管理员调整"类型
2. 查看调整记录
3. 验证调整是否正确
4. 通知用户(如需要)
## 余额类型说明
### 充值相关
- **充值**: 用户通过支付渠道充值
- **奖励**: 推广奖励、活动奖励
- **退款**: 订单退款到余额
### 消费相关
- **购买**: 购买新套餐
- **续费**: 续费现有套餐
- **付款**: 其他付款操作
### 调整相关
- **管理员调整**: 手动增加或减少余额
- **提现**: 用户申请提现(扣除余额)
## 财务对账
### 日常对账
每日检查:
1. 充值总额与支付平台一致
2. 消费总额与订单总额一致
3. 无异常大额变动
4. 退款记录完整
### 月度对账
每月汇总:
1. 总充值额
2. 总消费额
3. 总余额变化
4. 手续费支出
## 重要提示
1. **日志保留**: 根据系统配置保留时间
2. **金额正负**: 注意金额的正负号含义
3. **订单关联**: 有订单号的可追溯来源
4. **类型识别**: 通过类型码快速识别操作
5. **余额快照**: 记录变动后的余额值
6. **管理员操作**: 管理员调整会有记录
7. **定期对账**: 建议每日核对财务数据
</div>
+80
View File
@@ -0,0 +1,80 @@
<div v-pre>
# 佣金日志
查看用户推广佣金记录,包含佣金来源和金额。
## 表格列说明
### 用户 (User)
获得佣金的用户(可点击查看详情)。
### 金额 (Amount)
佣金金额。
### 订单号 (Order No.)
产生佣金的订单号(可点击查看订单详情)。
### 类型 (Type)
佣金类型(Badge显示):
- 推广佣金
- 返现佣金
- 奖励佣金
- 其他类型
### 时间 (Time)
佣金发放时间。
## 筛选功能
### 日期筛选
选择查看指定日期的佣金记录,默认今天。
### 用户ID筛选
输入用户ID查看该用户的佣金记录。
## 使用场景
### 场景一: 查看今日佣金
1. 默认显示今天的佣金记录
2. 统计佣金总额
3. 分析推广效果
### 场景二: 追踪用户佣金
**查看推广收益**:
1. 输入用户ID筛选
2. 查看所有佣金记录
3. 统计累计收益
4. 验证佣金正确性
### 场景三: 分析推广效果
**统计推广数据**:
1. 选择时间范围
2. 查看佣金记录
3. 识别优质推广者
4. 优化推广策略
## 佣金规则
### 佣金来源
- **推广佣金**: 推荐用户消费产生
- **返现佣金**: 自己消费返现
- **奖励佣金**: 活动奖励
### 佣金计算
- 按订单金额的百分比
- 实时到账或定期结算
- 关联原始订单
## 重要提示
1. **日志保留**: 根据系统配置保留
2. **订单关联**: 可追溯佣金来源
3. **类型识别**: 通过类型快速分类
4. **实时统计**: 查看推广效果
5. **定期对账**: 验证佣金发放正确性
</div>
+149
View File
@@ -0,0 +1,149 @@
<div v-pre>
# 邮件日志
查看系统发送的所有邮件记录,包含发送状态和内容。
## 表格列说明
### 平台 (Platform)
邮件发送平台(Badge显示):
- SMTP
- SendGrid
- Mailgun
- AWS SES
- 其他邮件服务商
### 收件人 (To)
接收邮件的邮箱地址。
### 主题 (Subject)
邮件主题。
### 内容 (Content)
邮件内容(JSON格式显示):
- 纯文本内容
- HTML内容
- 模板变量
- 最大显示480px宽度
### 状态 (Status)
邮件发送状态(Badge显示):
- **已发送** (绿色) - 成功发送
- **发送失败** (红色) - 发送失败
- **未知** (灰色) - 状态未知
### 时间 (Time)
邮件发送时间。
## 筛选功能
### 关键词搜索
搜索收件人地址或邮件主题。
### 日期筛选
选择查看指定日期的邮件记录,默认今天。
## 使用场景
### 场景一: 查看今日邮件
1. 默认显示今天的邮件记录
2. 查看发送数量
3. 检查发送状态
4. 统计成功率
### 场景二: 排查发送失败
**检查失败邮件**:
1. 筛选"发送失败"状态
2. 查看收件人地址
3. 检查邮件内容
4. 分析失败原因
5. 重新发送或修复配置
### 场景三: 验证邮件内容
**检查邮件模板**:
1. 搜索特定主题
2. 查看邮件内容
3. 验证变量替换
4. 确认格式正确
### 场景四: 追踪用户邮件
**查看用户收信**:
1. 搜索用户邮箱
2. 查看所有邮件
3. 确认是否送达
4. 验证邮件类型
## 邮件类型
### 系统邮件
- 注册验证邮件
- 密码重置邮件
- 登录验证码
- 账户通知
### 营销邮件
- 推广邮件
- 活动通知
- 优惠信息
- 产品更新
### 交易邮件
- 订单确认
- 支付成功
- 发票通知
- 到期提醒
## 发送监控
### 成功率监控
关注指标:
- 每日发送总量
- 发送成功率
- 失败率趋势
- 不同平台表现
### 异常处理
发现问题时:
1. 检查SMTP配置
2. 验证邮件服务商状态
3. 检查发送频率限制
4. 查看错误日志
## 邮件内容说明
### JSON格式
内容字段包含:
```json
{
"text": "纯文本内容",
"html": "<p>HTML内容</p>",
"variables": {
"username": "用户名",
"code": "验证码"
}
}
```
### 变量替换
- {{username}}: 用户名
- {{code}}: 验证码
- {{link}}: 链接地址
- {{expire}}: 过期时间
## 重要提示
1. **日志保留**: 根据系统配置保留
2. **内容截断**: 过长内容会被截断显示
3. **JSON显示**: 内容以JSON格式展示
4. **平台识别**: 通过平台字段识别发送渠道
5. **状态监控**: 关注发送失败记录
6. **隐私保护**: 邮件内容可能包含敏感信息
7. **定期检查**: 每日检查发送状态
8. **配额管理**: 注意邮件服务商配额限制
</div>
+129
View File
@@ -0,0 +1,129 @@
<div v-pre>
# 赠送日志
查看流量、时长、余额等赠送记录,包含赠送来源和备注。
## 表格列说明
### 用户 (User)
接收赠送的用户(可点击查看详情)。
### 订阅 (Subscribe)
赠送关联的订阅ID(可点击查看订阅详情)。
### 订单号 (Order No.)
关联的订单号(可点击查看订单详情)。
### 金额 (Amount)
赠送的金额(余额赠送时显示)。
### 余额 (Balance)
赠送后的用户余额。
### 类型 (Type)
赠送类型(Badge显示):
- 流量赠送
- 时长赠送
- 余额赠送
- 活动赠送
- 管理员赠送
### 备注 (Remark)
赠送备注说明。
### 时间 (Time)
赠送时间。
## 筛选功能
### 日期筛选
选择查看指定日期的赠送记录,默认今天。
### 用户ID筛选
输入用户ID查看该用户的赠送记录。
## 使用场景
### 场景一: 查看今日赠送
1. 默认显示今天的赠送记录
2. 统计赠送数量
3. 分析赠送成本
### 场景二: 追踪用户赠送
**查看用户获得**:
1. 输入用户ID筛选
2. 查看所有赠送记录
3. 验证赠送是否到账
4. 查看赠送来源
### 场景三: 核对活动赠送
**验证活动发放**:
1. 筛选活动时间
2. 查看赠送记录
3. 核对发放数量
4. 验证备注信息
### 场景四: 管理员赠送记录
**查看手动赠送**:
1. 筛选"管理员赠送"类型
2. 查看赠送记录
3. 验证操作是否正确
4. 查看备注原因
## 赠送类型说明
### 流量赠送
- 赠送流量包
- 增加订阅流量
- 显示在订阅详情
### 时长赠送
- 延长订阅时间
- 增加有效天数
- 显示在订阅详情
### 余额赠送
- 赠送账户余额
- 可用于购买套餐
- 显示金额和余额
### 活动赠送
- 营销活动奖励
- 批量发放
- 带活动备注
### 管理员赠送
- 手动操作赠送
- 需要备注原因
- 用于补偿或奖励
## 成本分析
### 赠送统计
每日/月统计:
1. 流量赠送总量
2. 时长赠送总天数
3. 余额赠送总额
4. 分类型统计
### 效果评估
- 赠送后用户留存
- 赠送后用户付费
- 投入产出比
## 重要提示
1. **日志保留**: 根据系统配置保留
2. **订阅关联**: 流量和时长赠送关联订阅
3. **余额记录**: 余额赠送记录变动金额
4. **备注重要**: 手动赠送必须填写备注
5. **类型识别**: 通过类型区分赠送来源
6. **成本统计**: 定期分析赠送成本
7. **防止滥用**: 关注异常大量赠送
</div>
+93
View File
@@ -0,0 +1,93 @@
<div v-pre>
# 登录日志
查看用户登录记录,包含登录方式、IP地址和设备信息。
## 表格列说明
### 用户 (User)
登录的用户,显示:
- 登录方式Badge(邮箱/手机/Google等)
- 用户ID(可点击查看详情)
### IP地址 (IP)
登录IP地址(可点击查看IP信息)。
### User Agent
用户设备和浏览器信息:
- 鼠标悬停显示完整内容
- 截断显示避免过长
### 成功状态 (Success)
登录是否成功:
- **成功** (绿色Badge)
- **失败** (红色Badge)
### 时间 (Time)
登录时间。
## 筛选功能
### 日期筛选
选择查看指定日期的登录记录,默认今天。
### 用户ID筛选
输入用户ID查看该用户的登录记录。
## 使用场景
### 场景一: 查看今日登录
1. 默认显示今天的登录记录
2. 查看登录频率
3. 分析活跃用户
### 场景二: 排查异常登录
**检查失败登录**:
1. 筛选登录失败记录
2. 查看IP地址
3. 分析失败原因
4. 必要时封禁IP
**检查异地登录**:
1. 查看用户登录IP
2. 点击IP查看地理位置
3. 对比历史登录位置
4. 发现异常通知用户
### 场景三: 追踪用户登录
**查看特定用户**:
1. 输入用户ID筛选
2. 查看登录历史
3. 分析登录设备
4. 验证账号安全
## 安全监控
### 异常模式
关注以下异常:
- 短时间大量失败登录
- 同一IP多账号登录
- 异常国家/地区登录
- 罕见设备类型登录
### 防护措施
发现异常时:
1. 临时封禁IP
2. 强制用户重置密码
3. 发送安全通知
4. 启用二次验证
## 重要提示
1. **日志保留**: 根据系统配置自动清理
2. **IP查询**: 点击IP可查看地理位置
3. **User Agent**: 包含操作系统和浏览器信息
4. **隐私保护**: 敏感信息仅管理员可见
5. **失败记录**: 重点关注失败登录异常
6. **定期检查**: 建议每日检查登录情况
</div>
+165
View File
@@ -0,0 +1,165 @@
<div v-pre>
# 短信日志
查看系统发送的所有短信记录,包含发送状态和内容。
## 表格列说明
### 平台 (Platform)
短信发送平台(Badge显示):
- 阿里云短信
- 腾讯云短信
- Twilio
- AWS SNS
- 其他短信服务商
### 收件人 (To)
接收短信的手机号码。
### 主题 (Subject)
短信主题/类型。
### 内容 (Content)
短信内容(JSON格式显示):
- 短信文本
- 模板变量
- 签名信息
- 最大显示480px宽度
### 状态 (Status)
短信发送状态(Badge显示):
- **已发送** (绿色) - 成功发送
- **发送失败** (红色) - 发送失败
- **未知** (灰色) - 状态未知
### 时间 (Time)
短信发送时间。
## 筛选功能
### 关键词搜索
搜索收件人手机号或短信主题。
### 日期筛选
选择查看指定日期的短信记录,默认今天。
## 使用场景
### 场景一: 查看今日短信
1. 默认显示今天的短信记录
2. 查看发送数量
3. 检查发送状态
4. 统计成功率
### 场景二: 排查发送失败
**检查失败短信**:
1. 筛选"发送失败"状态
2. 查看收件人号码
3. 检查短信内容
4. 分析失败原因(号码无效/余额不足/服务商问题)
5. 重新发送或修复配置
### 场景三: 验证短信内容
**检查短信模板**:
1. 搜索特定主题
2. 查看短信内容
3. 验证变量替换
4. 确认签名正确
### 场景四: 追踪用户短信
**查看用户收信**:
1. 搜索用户手机号
2. 查看所有短信
3. 确认是否送达
4. 验证短信类型
## 短信类型
### 验证码短信
- 注册验证码
- 登录验证码
- 重置密码验证码
- 绑定手机验证码
### 通知短信
- 订单通知
- 支付成功通知
- 到期提醒
- 系统公告
### 营销短信
- 推广短信
- 活动通知
- 优惠信息
## 发送监控
### 成功率监控
关注指标:
- 每日发送总量
- 发送成功率
- 失败率趋势
- 不同平台表现
### 异常处理
发现问题时:
1. 检查短信服务商配置
2. 验证API密钥有效性
3. 检查余额和配额
4. 查看错误日志
5. 联系服务商技术支持
## 短信内容说明
### JSON格式
内容字段包含:
```json
{
"template_id": "SMS_123456",
"sign_name": "品牌名",
"params": {
"code": "123456",
"minutes": "5"
}
}
```
### 模板变量
- {{code}}: 验证码
- {{minutes}}: 有效时间
- {{product}}: 产品名称
- {{amount}}: 金额
## 成本管理
### 费用统计
- 每日短信数量
- 单价计算
- 月度费用
- 不同类型占比
### 成本优化
- 控制验证码发送频率
- 优化短信模板
- 选择性价比高的服务商
- 避免无效发送
## 重要提示
1. **日志保留**: 根据系统配置保留
2. **内容截断**: 过长内容会被截断显示
3. **JSON显示**: 内容以JSON格式展示
4. **平台识别**: 通过平台字段识别发送渠道
5. **状态监控**: 关注发送失败记录
6. **号码隐私**: 手机号敏感信息需保护
7. **定期检查**: 每日检查发送状态
8. **配额管理**: 注意短信服务商配额和余额
9. **频率限制**: 防止短信轰炸
10. **合规要求**: 遵守短信发送法律法规
</div>
+152
View File
@@ -0,0 +1,152 @@
<div v-pre>
# 注册日志
查看用户注册记录,包含注册方式、IP地址和设备信息。
## 表格列说明
### 用户 (User)
注册的用户(可点击查看详情)。
### 标识符 (Identifier)
注册使用的账号标识:
- 注册方式Badge(邮箱/手机/Google等)
- 具体账号(邮箱地址/手机号等)
### IP地址 (IP)
注册IP地址(可点击查看IP信息)。
### User Agent
注册设备和浏览器信息:
- 鼠标悬停显示完整内容
- 截断显示避免过长
### 时间 (Time)
注册时间。
## 筛选功能
### 日期筛选
选择查看指定日期的注册记录,默认今天。
### 用户ID筛选
输入用户ID查看该用户的注册信息。
## 使用场景
### 场景一: 查看今日注册
1. 默认显示今天的注册记录
2. 统计注册数量
3. 分析注册来源
4. 识别注册方式分布
### 场景二: 追踪用户来源
**查看注册信息**:
1. 查看用户注册记录
2. 确认注册时间
3. 查看注册IP位置
4. 分析注册渠道
### 场景三: 排查异常注册
**检查可疑注册**:
1. 查看注册日志
2. 关注同一IP多次注册
3. 检查异常国家/地区
4. 识别批量注册行为
5. 必要时限制注册
### 场景四: 分析注册趋势
**统计注册数据**:
1. 选择时间范围
2. 统计注册总量
3. 分析注册高峰
4. 评估推广效果
## 注册方式
### 邮箱注册
- 显示邮箱地址
- 需要邮箱验证
- 最常用方式
### 手机注册
- 显示手机号
- 需要短信验证
- 国内常用
### 社交账号注册
- **Google**: Google账号
- **GitHub**: GitHub账号
- **Facebook**: Facebook账号
- **Apple**: Apple ID
- **Telegram**: Telegram账号
## 安全监控
### 异常模式
关注以下异常:
- 短时间大量注册
- 同一IP多次注册
- 异常国家/地区注册
- 批量邮箱/手机号注册
- 临时邮箱注册
### 防护措施
发现异常时:
1. 启用注册验证码
2. 限制单IP注册频率
3. 封禁可疑IP
4. 启用邮箱/手机验证
5. 启用邀请码机制
## 注册来源分析
### 地理分布
- 国家/地区统计
- 城市分布
- 识别主要市场
### 设备分析
从User Agent获取:
- 操作系统分布
- 浏览器类型
- 设备类型(PC/Mobile)
- 识别用户习惯
### 注册渠道
- 直接访问
- 搜索引擎
- 推广链接
- 社交媒体
## 数据统计
### 日常统计
- 每日新增注册
- 注册转化率
- 注册方式占比
- 地域分布
### 推广评估
- 推广活动期间注册量
- 不同渠道效果
- 注册后留存率
- 注册后付费率
## 重要提示
1. **日志保留**: 根据系统配置保留
2. **IP追踪**: 可查看IP地理位置
3. **设备识别**: User Agent包含设备信息
4. **隐私保护**: 注册信息敏感,需保密
5. **异常监控**: 关注批量和异地注册
6. **方式分布**: 了解用户偏好注册方式
7. **定期分析**: 每周分析注册趋势
8. **反作弊**: 防止恶意批量注册
</div>
+145
View File
@@ -0,0 +1,145 @@
<div v-pre>
# 流量重置日志
查看订阅流量重置记录,包含重置类型和关联订单。
## 表格列说明
### 用户 (User)
订阅所属用户(可点击查看详情)。
### 订阅ID (Subscribe ID)
被重置的订阅ID(可点击查看订阅详情,悬停显示卡片)。
### 类型 (Type)
重置类型(Badge显示):
- **自动重置** - 按周期自动重置
- **提前重置** - 用户主动提前重置
- **付费重置** - 购买流量重置服务
### 订单号 (Order No.)
关联的订单号(付费重置时显示,可点击查看订单详情)。
### 时间 (Time)
重置时间。
## 筛选功能
### 日期筛选
选择查看指定日期的重置记录,默认今天。
### 订阅ID筛选
输入订阅ID查看该订阅的重置记录。
## 使用场景
### 场景一: 查看今日重置
1. 默认显示今天的重置记录
2. 统计重置数量
3. 分析重置类型分布
4. 识别高频重置用户
### 场景二: 追踪订阅重置
**查看订阅历史**:
1. 输入订阅ID筛选
2. 查看所有重置记录
3. 分析重置频率
4. 验证重置是否正常
### 场景三: 分析付费重置
**统计付费数据**:
1. 筛选"付费重置"类型
2. 统计付费重置数量
3. 计算付费重置收入
4. 分析用户需求
### 场景四: 排查异常重置
**检查可疑重置**:
1. 查看重置日志
2. 关注高频提前重置
3. 识别异常重置行为
4. 验证订单关联
## 重置类型说明
### 自动重置 (Auto Reset)
- 按订阅周期自动重置
- 每月/每周/每日重置
- 系统定时任务执行
- 最常见的重置方式
### 提前重置 (Advance Reset)
- 用户主动提前重置
- 需要消耗重置次数
- 或者付费购买重置
- 适合流量用尽场景
### 付费重置 (Paid Reset)
- 用户购买流量重置服务
- 生成订单记录
- 支付后立即重置
- 有订单号关联
## 重置规则
### 自动重置时间
- **月重置**: 每月1号0点
- **周重置**: 每周一0点
- **日重置**: 每天0点
### 重置次数限制
- 套餐包含重置次数
- 超出次数需付费
- 次数每周期重置
### 付费重置价格
- 按套餐流量配置
- 一般为套餐价格20-30%
- 可在产品管理配置
## 流量管理
### 重置策略
- 设置合理重置周期
- 配置重置次数限制
- 定价付费重置服务
- 通知用户重置规则
### 用户提醒
- 流量即将用尽提醒
- 重置时间提醒
- 付费重置推荐
- 升级套餐建议
## 数据统计
### 重置分析
每日/月统计:
- 自动重置数量
- 提前重置数量
- 付费重置数量
- 付费重置收入
### 用户行为
- 高频重置用户
- 付费重置转化率
- 重置后流量使用
- 升级套餐转化
## 重要提示
1. **日志保留**: 根据系统配置保留
2. **订阅关联**: 每条记录关联订阅ID
3. **类型识别**: 通过类型区分重置方式
4. **订单关联**: 付费重置有订单号
5. **时间准确**: 记录精确重置时间
6. **次数管理**: 跟踪用户重置次数
7. **定期分析**: 每周分析重置数据
8. **策略优化**: 根据数据优化重置规则
</div>
+149
View File
@@ -0,0 +1,149 @@
<div v-pre>
# 服务器流量日志
查看各服务器的每日流量统计,支持查看详细流量消费明细。
## 表格列说明
### 服务器 (Server)
服务器信息显示:
- 服务器ID(Badge显示)
- 服务器名称
### 上传 (Upload)
当日上传流量,自动转换单位(B/KB/MB/GB/TB)。
### 下载 (Download)
当日下载流量,自动转换单位。
### 总计 (Total)
当日总流量(上传+下载)。
### 日期 (Date)
流量统计日期。
## 表格操作
### 查看详情 (Detail)
点击"详情"按钮跳转到流量详细记录页面:
- 查看该日期该服务器的详细流量
- 按用户分组显示
- 按订阅统计
## 筛选功能
### 日期筛选
选择查看指定日期的流量记录,默认今天。
### 服务器ID筛选
输入服务器ID查看该服务器的流量记录。
## 使用场景
### 场景一: 查看今日流量
1. 默认显示今天的流量记录
2. 查看各服务器流量消耗
3. 识别高流量服务器
4. 分析流量分布
### 场景二: 追踪服务器负载
**查看服务器使用**:
1. 输入服务器ID筛选
2. 查看历史流量记录
3. 分析流量趋势
4. 评估服务器负载
### 场景三: 排查流量异常
**检查异常消耗**:
1. 浏览流量记录
2. 关注异常高流量服务器
3. 点击"详情"查看明细
4. 按用户分析流量分布
5. 检查是否存在滥用
### 场景四: 流量统计分析
**生成报表**:
1. 选择日期范围
2. 导出流量数据
3. 分析流量高峰时段
4. 优化服务器资源分配
5. 制定扩容计划
## 流量详情页
点击"详情"后显示:
### 用户流量明细
- 每个用户的流量消耗
- 订阅流量统计
- 连接时长记录
### 节点流量统计
- 每个节点的流量总计
- 流量占比分析
- 用户分布情况
## 流量监控
### 正常模式
- 流量均匀分布
- 符合用户数量
- 波峰波谷规律
### 异常模式
关注以下异常:
- 单服务器流量突然激增
- 流量分布严重不均
- 异常时间段高流量
- 单用户流量过高
## 服务器管理
### 负载均衡
根据流量数据:
- 识别高负载服务器
- 分配用户到其他服务器
- 调整服务器权重
- 优化节点配置
### 容量规划
根据流量趋势:
- 预测流量增长
- 规划服务器扩容
- 优化带宽配置
- 控制运营成本
## 数据分析
### 流量统计
每日/月统计:
- 总流量消耗
- 各服务器占比
- 流量增长趋势
- 带宽使用率
### 成本分析
- 流量成本计算
- 服务器ROI分析
- 优化空间识别
- 成本控制建议
## 重要提示
1. **日志保留**: 根据系统配置保留
2. **单位换算**: 自动转换为易读单位
3. **服务器关联**: 可查看单个服务器历史
4. **详情跳转**: 点击详情查看用户级明细
5. **实时性**: 流量数据可能有延迟
6. **总计准确**: 总计包含上传和下载
7. **定期分析**: 建议每周分析流量趋势
8. **负载监控**: 关注服务器负载情况
9. **扩容预警**: 流量接近上限时扩容
10. **成本优化**: 根据流量数据优化配置
</div>
+120
View File
@@ -0,0 +1,120 @@
<div v-pre>
# 订阅流量日志
查看用户订阅的每日流量使用统计,支持查看详细流量消费明细。
## 表格列说明
### 用户 (User)
使用流量的用户(可点击查看详情)。
### 订阅 (Subscribe)
关联的订阅ID(可点击查看订阅详情,悬停显示卡片)。
### 上传 (Upload)
当日上传流量,自动转换单位(B/KB/MB/GB/TB)。
### 下载 (Download)
当日下载流量,自动转换单位。
### 总计 (Total)
当日总流量(上传+下载)。
### 日期 (Date)
流量统计日期。
## 表格操作
### 查看详情 (Detail)
点击"详情"按钮跳转到流量详细记录页面:
- 查看该日期该订阅的详细流量
- 按节点分组显示
- 按服务器统计
## 筛选功能
### 日期筛选
选择查看指定日期的流量记录,默认今天。
### 用户ID筛选
输入用户ID查看该用户的流量记录。
### 订阅ID筛选
输入订阅ID查看该订阅的流量记录。
## 使用场景
### 场景一: 查看今日流量
1. 默认显示今天的流量记录
2. 查看总流量消耗
3. 识别高流量用户
4. 分析流量趋势
### 场景二: 追踪用户流量
**查看用户使用**:
1. 输入用户ID筛选
2. 查看所有订阅流量
3. 分析使用习惯
4. 预测流量需求
### 场景三: 排查流量异常
**检查异常消耗**:
1. 浏览流量记录
2. 关注异常高流量
3. 点击"详情"查看明细
4. 按节点分析流量分布
5. 检查是否存在滥用
### 场景四: 流量统计分析
**生成报表**:
1. 选择日期范围
2. 导出流量数据
3. 分析流量高峰时段
4. 优化节点资源分配
## 流量详情页
点击"详情"后显示:
### 节点流量明细
- 每个节点的流量消耗
- 上传/下载分开统计
- 连接时长记录
### 服务器流量统计
- 每台服务器的流量总计
- 流量占比分析
- 负载情况评估
## 流量监控
### 异常模式
关注以下异常:
- 单日流量突然激增
- 流量远超套餐限制
- 异常时间段高流量
- 单节点流量过高
### 处理措施
发现异常时:
1. 查看流量详情
2. 确认是否滥用
3. 限速或暂停订阅
4. 通知用户核实
## 重要提示
1. **日志保留**: 根据系统配置保留时间
2. **单位换算**: 自动转换为易读单位
3. **订阅关联**: 可跨查用户的多个订阅
4. **详情跳转**: 点击详情查看节点级明细
5. **实时性**: 流量数据可能有延迟
6. **总计准确**: 总计包含上传和下载
7. **定期分析**: 建议每周分析流量趋势
</div>
+127
View File
@@ -0,0 +1,127 @@
<div v-pre>
# 订阅日志
查看用户订阅链接的请求记录,包含IP、设备和时间信息。
## 表格列说明
### 用户 (User)
请求订阅的用户(可点击查看详情)。
### 订阅ID (Subscribe)
请求的订阅ID(可点击查看订阅详情,悬停显示卡片)。
### IP地址 (IP)
请求IP地址(可点击查看IP信息)。
### User Agent
客户端设备和系统信息:
- 鼠标悬停显示完整内容
- 截断显示避免过长
### 时间 (Time)
请求时间。
## 筛选功能
### 日期筛选
选择查看指定日期的订阅记录,默认今天。
### 用户ID筛选
输入用户ID查看该用户的订阅请求。
### 订阅ID筛选
输入订阅ID查看该订阅的请求记录。
## 使用场景
### 场景一: 查看今日请求
1. 默认显示今天的订阅记录
2. 查看请求频率
3. 分析活跃订阅
4. 识别异常请求
### 场景二: 追踪用户请求
**查看用户活动**:
1. 输入用户ID筛选
2. 查看所有订阅请求
3. 分析使用频率
4. 验证设备类型
### 场景三: 排查订阅异常
**检查异常请求**:
1. 查看订阅日志
2. 关注IP地址变化
3. 检查User Agent
4. 识别可疑设备
5. 必要时封禁订阅
### 场景四: 分析客户端分布
**统计客户端类型**:
1. 查看User Agent信息
2. 统计客户端分布
3. 了解用户使用习惯
4. 优化客户端支持
## 订阅请求监控
### 正常模式
- 定期请求订阅链接
- 更新节点信息
- 同步配置变更
### 异常模式
关注以下异常:
- 短时间高频请求
- 同一IP多订阅请求
- 异常国家/地区访问
- 陌生客户端类型
## 安全防护
### 检测措施
- 请求频率限制
- IP黑白名单
- 订阅Token验证
- 设备数量限制
### 处理措施
发现滥用时:
1. 限制请求频率
2. 临时封禁IP
3. 重置订阅Token
4. 通知用户确认
## User Agent分析
### 常见客户端
- **Clash**: Clash for Windows/Mac/Android
- **Shadowrocket**: iOS客户端
- **V2rayN**: Windows客户端
- **Quantumult**: iOS客户端
- **Surfboard**: Android客户端
### 识别信息
从User Agent获取:
- 客户端名称和版本
- 操作系统类型
- 设备型号
- 系统版本
## 重要提示
1. **日志保留**: 根据系统配置保留
2. **IP追踪**: 可查看IP地理位置
3. **设备识别**: User Agent包含客户端信息
4. **请求频率**: 正常客户端定期请求
5. **异常监控**: 关注高频和异地请求
6. **隐私保护**: IP和设备信息敏感
7. **定期分析**: 每周分析订阅请求趋势
8. **防止泄露**: 订阅链接不应公开分享
</div>
+172
View File
@@ -0,0 +1,172 @@
<div v-pre>
# 流量详情日志
查看流量消费的详细记录,支持按服务器、用户、订阅多维度筛选。
## 表格列说明
### 服务器 (Server)
产生流量的服务器:
- 服务器名称
- 服务器ID
### 用户 (User)
使用流量的用户(可点击查看详情)。
### 订阅 (Subscribe)
关联的订阅ID(可点击查看订阅详情,悬停显示卡片)。
### 上传 (Upload)
上传流量,自动转换单位(B/KB/MB/GB/TB)。
### 下载 (Download)
下载流量,自动转换单位。
### 时间 (Time)
流量产生时间。
## 筛选功能
### 日期筛选
选择查看指定日期的流量详情,默认今天。
### 服务器ID筛选
输入服务器ID查看该服务器的流量详情。
### 用户ID筛选
输入用户ID查看该用户的流量详情。
### 订阅ID筛选
输入订阅ID查看该订阅的流量详情。
## 使用场景
### 场景一: 查看服务器流量明细
从服务器流量日志点击"详情"进入:
1. 自动带入日期和服务器ID
2. 查看该服务器所有用户流量
3. 按用户排序查看
4. 识别高流量用户
### 场景二: 查看用户流量详情
从订阅流量日志点击"详情"进入:
1. 自动带入日期、用户ID和订阅ID
2. 查看该用户该订阅流量
3. 按服务器查看分布
4. 分析使用习惯
### 场景三: 排查流量异常
**详细排查**:
1. 选择异常日期
2. 输入相关筛选条件
3. 查看详细流量记录
4. 按时间排序分析
5. 识别异常流量来源
### 场景四: 流量统计分析
**多维度分析**:
1. 选择时间范围
2. 组合不同筛选条件
3. 导出详细数据
4. 生成流量报表
5. 制定优化策略
## 数据关联
### 从服务器流量跳转
- 带入服务器ID和日期
- 查看该服务器所有流量
- 可进一步筛选用户
### 从订阅流量跳转
- 带入用户ID、订阅ID和日期
- 查看该订阅所有流量
- 可查看不同服务器
## 流量分析
### 时间分布
- 查看流量时间分布
- 识别使用高峰时段
- 分析用户活跃时间
- 优化服务器调度
### 服务器分布
- 统计各服务器流量占比
- 分析负载分布
- 识别热门服务器
- 优化负载均衡
### 用户分布
- 识别高流量用户
- 分析用户使用习惯
- 检查是否存在滥用
- 优化套餐配置
## 流量监控
### 正常模式
- 流量均匀分布
- 时间规律性
- 符合用户数量
- 无异常峰值
### 异常模式
关注以下异常:
- 单次流量异常大
- 异常时间段流量
- 单用户高频请求
- 流量分布不合理
## 排查步骤
### 发现异常
1. 从统计日志发现异常
2. 点击详情进入
3. 查看详细记录
### 定位问题
1. 按时间排序
2. 识别异常记录
3. 查看用户信息
4. 确认订阅状态
### 处理措施
1. 验证是否正常使用
2. 检查是否滥用
3. 限速或暂停订阅
4. 通知用户确认
## 数据导出
### 导出用途
- 生成流量报表
- 财务对账
- 用户分析
- 容量规划
### 导出内容
- 所有列数据
- 筛选后的数据
- CSV或Excel格式
- 支持批量导出
## 重要提示
1. **日志保留**: 根据系统配置保留
2. **单位换算**: 自动转换为易读单位
3. **多维筛选**: 支持多个条件组合
4. **跳转带参**: 从统计日志跳转自动带入参数
5. **实时性**: 流量数据可能有延迟
6. **详细程度**: 最详细的流量记录
7. **性能考虑**: 大量数据时注意筛选
8. **定期清理**: 详情日志占用空间较大
9. **导出限制**: 单次导出可能有数量限制
10. **隐私保护**: 详细记录包含用户行为信息
</div>
+187
View File
@@ -0,0 +1,187 @@
# 节点管理
管理面向用户的代理节点,配置节点与服务器的关联、入口地址和标签。节点是用户实际连接的端点,一个服务器可以对应多个节点。
## 页面组成
### 节点列表
以表格形式展示所有节点的配置信息。
**列信息:**
- **启用状态 (Enabled)**: 开关按钮,实时控制节点是否对用户可见
- 开启: 节点在订阅中显示,用户可连接
- 关闭: 节点隐藏,用户无法连接
- 即时生效,无需重启
- **名称 (Name)**: 节点显示名称,会展示在用户的客户端中
- **地址:端口 (Address:Port)**: 用户连接的入口地址和端口
- **服务器 (Server)**: 显示关联的服务器名称和 IP 地址
- 格式: `服务器名称:服务器IP`
- **协议:端口 (Protocol:Port)**: 使用的代理协议类型及服务器监听端口
- 格式: `协议类型:服务器端口`
- 示例: `vless:443`, `vmess:80`, `trojan:8443`
- **标签 (Tags)**: 节点分组标签,以徽章形式显示
- 用于权限分组和套餐绑定
- 用于流量分发策略
- 支持多个标签
**操作功能:**
- **搜索**: 根据关键词快速筛选节点
- **排序**: 通过拖拽行调整节点显示顺序,影响用户订阅中的节点排序
- **分页**: 支持大量节点的分页浏览
- **批量删除**: 选中多个节点后批量删除
**单个节点操作:**
- **编辑 (Edit)**: 修改节点配置
- **删除 (Delete)**: 删除节点
- **复制 (Copy)**: 复制节点配置创建新节点(新节点默认禁用)
## 节点表单
点击"创建 (Create)"或"编辑 (Edit)"时打开的侧边栏表单。
### 表单字段
**1. 服务器 (Server)** - 必填
- 选择节点关联的物理服务器
- 下拉列表显示: `服务器名称 (服务器IP)`
- 选择后自动触发智能填充
**2. 协议 (Protocol)** - 必填
- 选择使用的代理协议
- 下拉列表仅显示所选服务器已启用的协议
- 格式: `协议类型 (端口号)`
- 支持的协议: shadowsocks, vmess, vless, trojan, hysteria, tuic, anytls, naive, http, socks, mieru
- 选择后自动填充对应端口
**3. 名称 (Name)** - 必填
- 节点的显示名称
- 会展示在用户的代理客户端中
- 支持自动填充(从服务器名称)
**4. 地址 (Address)** - 必填
- 用户连接的入口地址
- 可以是域名或 IP 地址
- 支持自动填充(从服务器地址)
- 可手动修改为 CDN 域名或其他入口
**5. 端口 (Port)** - 必填
- 用户连接的入口端口号
- 范围: 1-65535
- 支持自动填充(从协议端口)
- 可手动修改为不同端口(如使用端口转发时)
**6. 标签 (Tags)** - 可选
- 节点分组标签,支持多标签
- 可从已有标签中选择或输入新标签
- 使用回车键或逗号(,)添加多个标签
- 作用:
- **权限分组**: 与套餐绑定,控制不同套餐用户可见的节点
- **流量策略**: 用于节点流量分发和负载均衡
### 智能填充机制
表单具有智能填充功能,提高配置效率:
**触发条件:**
1. 选择服务器时
2. 选择协议时
**填充规则:**
- **选择服务器后**:
- 名称自动填充为服务器名称
- 地址自动填充为服务器 IP
- 协议自动选择第一个可用协议
- 端口自动填充为协议对应端口
- **选择协议后**:
- 端口自动填充为该协议的端口号
**手动修改:**
- 任何字段手动修改后,该字段不再自动填充
- 重新选择服务器或协议会刷新自动填充状态
## 使用场景
### 场景 1: 创建基础节点
1. 点击"创建 (Create)"按钮
2. 选择服务器(自动填充其他字段)
3. 确认或调整自动填充的配置
4. 点击"确认 (Confirm)"
### 场景 2: 创建 CDN 节点
1. 点击"创建 (Create)"按钮
2. 选择服务器
3. 修改名称为: `香港 01 [CDN]`
4. 修改地址为 CDN 域名: `hk01.cdn.example.com`
5. 修改端口为 CDN 端口: `443``80`
6. 点击"确认 (Confirm)"
### 场景 3: 标签分组管理
**用于套餐绑定:**
- 高级套餐节点: 添加标签 `premium`, `vip`
- 普通套餐节点: 添加标签 `standard`
- 试用套餐节点: 添加标签 `trial`
- 在产品管理中绑定标签,实现不同套餐看到不同节点
**用于地区分类:**
- 香港节点: 添加标签 `hk`, `asia`
- 美国节点: 添加标签 `us`, `americas`
- 日本节点: 添加标签 `jp`, `asia`
### 场景 4: 批量管理
1. 使用搜索功能筛选特定节点
2. 勾选多个节点
3. 点击批量删除或批量操作
4. 确认操作
## 节点与服务器的关系
**服务器 (Server):**
- 物理服务器或 VPS
- 运行代理服务程序
- 配置监听协议和端口
- 一台服务器可配置多种协议
**节点 (Node):**
- 用户可见的连接端点
- 关联到某台服务器的某个协议
- 配置用户连接的入口地址(可与服务器地址不同)
- 一台服务器可创建多个节点
**示例:**
```
服务器: 香港-HK01 (192.168.1.100)
├── 协议: vless:443
├── 协议: vmess:80
└── 协议: trojan:8443
节点配置:
1. 节点名称: 香港 01 [直连]
- 服务器: 香港-HK01
- 协议: vless:443
- 地址: 192.168.1.100
- 端口: 443
2. 节点名称: 香港 01 [CDN]
- 服务器: 香港-HK01
- 协议: vmess:80
- 地址: hk01.cdn.example.com
- 端口: 443 (CDN端口)
3. 节点名称: 香港 01 [VIP]
- 服务器: 香港-HK01
- 协议: trojan:8443
- 地址: 192.168.1.100
- 端口: 8443
- 标签: premium, vip
```
## 注意事项
1. **协议必须已启用**: 只能选择服务器上已启用的协议,未启用的协议不会出现在下拉列表中
2. **删除影响**: 删除节点会导致使用该节点的用户无法连接,请谨慎操作
3. **禁用vs删除**: 临时下线节点建议使用"禁用"而非删除,方便后续恢复
4. **标签规划**: 建议提前规划标签体系,便于后续套餐和节点的批量管理
5. **地址配置**: 使用 CDN 时,确保 CDN 已正确配置回源到服务器地址
6. **端口映射**: 如果入口端口与服务器监听端口不同(如使用端口转发),需确保网络层面已配置正确
+261
View File
@@ -0,0 +1,261 @@
# 产品管理
产品管理模块用于创建和管理各类订阅套餐产品,是商业运营的核心模块。
## 功能概述
### 产品列表
查看和管理所有产品套餐:
- **产品名称**: 套餐的显示名称
- **产品类型**: 周期套餐/流量包/按量计费
- **价格**: 产品售价和优惠价
- **流量配额**: 总流量/每月流量
- **有效期**: 套餐时长(月/季/年)
- **节点组**: 包含的节点组
- **状态**: 上架/下架/售罄
- **销量**: 产品销售数量
### 创建产品
创建新的订阅套餐:
#### 基本信息
- **产品名称**: 用户看到的套餐名称
- **产品描述**: 详细的产品说明
- **产品分类**: 基础版/进阶版/旗舰版
- **排序**: 产品显示顺序
#### 价格设置
- **原价**: 产品原始价格
- **售价**: 实际销售价格
- **优惠**: 折扣百分比
- **货币**: 人民币/美元等
- **支付周期**: 月付/季付/年付
#### 流量配置
- **总流量**: 套餐总流量配额
- **流量周期**: 一次性/每月重置
- **流量倍率**: 流量计费倍率
- **流量超额**: 超额后的处理方式
#### 时长设置
- **有效期**: 套餐使用期限
- **计费周期**: 按月/按季/按年
- **自动续费**: 是否支持自动续费
- **续费优惠**: 续费时的折扣
#### 节点配置
- **包含节点组**: 选择套餐包含的节点组
- **节点限制**: 同时连接设备数限制
- **速度限制**: 单用户速度上限
- **可用地区**: 限制使用地区
#### 高级选项
- **库存管理**: 设置产品库存数量
- **购买限制**: 每人限购数量
- **新用户专享**: 仅新用户可购买
- **试用设置**: 提供免费试用
### 编辑产品
修改现有产品的配置:
- 调整价格和优惠
- 更新流量配额
- 修改节点范围
- 变更产品状态
::: warning 注意
修改产品配置不会影响已购买的用户,只对新订单生效。
:::
### 删除产品
删除产品前需确认:
- 是否有用户正在使用
- 是否有未完成的订单
- 是否要保留历史数据
建议先下架产品,确认无问题后再删除。
## 产品分类
### 按周期分类
#### 月付套餐
- 灵活性高,适合短期用户
- 价格相对较高
- 方便用户尝试服务
#### 季付套餐
- 适中的价格和使用期
- 平衡灵活性和优惠
- 适合大多数用户
#### 年付套餐
- 价格优惠幅度大
- 适合长期用户
- 降低用户流失率
#### 终身套餐
- 一次性付费永久使用
- 价格较高但性价比高
- 适合忠实用户
### 按流量分类
#### 流量包
- 固定流量额度
- 用完即止
- 适合流量需求明确的用户
#### 不限流量
- 无流量限制
- 可能限制速度
- 适合重度用户
#### 按量计费
- 用多少付多少
- 灵活但成本可能高
- 适合偶尔使用的用户
### 按等级分类
#### 基础版
- 价格实惠
- 基础节点组
- 适合轻度使用
#### 进阶版
- 性价比高
- 更多节点选择
- 适合日常使用
#### 旗舰版
- 全部节点访问
- 最高速度和稳定性
- 适合专业用户
## 产品定价策略
### 定价原则
- **成本导向**: 覆盖服务器和带宽成本
- **竞争导向**: 参考同行业定价
- **价值导向**: 根据提供的价值定价
- **心理定价**: 利用价格心理学
### 促销策略
#### 限时优惠
- 节假日促销
- 周年庆活动
- 新品上市优惠
#### 优惠券
- 满减优惠券
- 折扣优惠券
- 新用户优惠券
#### 会员折扣
- VIP 用户专享折扣
- 累计消费返利
- 推荐奖励
#### 组合套餐
- 多产品组合优惠
- 套餐升级优惠
- 续费优惠
## 产品展示
### 产品页面
优化产品展示提高转化率:
- **清晰的标题**: 突出产品特点
- **详细的描述**: 说明产品优势
- **价格对比**: 展示优惠力度
- **用户评价**: 展示真实反馈
- **购买引导**: 明确的购买按钮
### 产品对比
帮助用户选择合适的套餐:
- **对比表格**: 多个套餐并排对比
- **推荐标签**: 标注热门或推荐套餐
- **差异化**: 突出不同套餐的区别
- **适用场景**: 说明适合的使用场景
## 产品分析
### 销售数据
分析产品销售情况:
- **销量统计**: 各产品销售数量
- **收入统计**: 各产品产生的收入
- **转化率**: 访问到购买的转化
- **用户画像**: 购买用户特征
### 产品优化
根据数据优化产品:
- **价格调整**: 优化定价策略
- **配置优化**: 调整流量和节点
- **促销优化**: 改进促销方案
- **体验优化**: 提升购买流程
## 库存管理
### 库存设置
- **库存数量**: 设置产品库存
- **库存预警**: 低库存提醒
- **补货策略**: 自动补货规则
### 库存监控
- **实时库存**: 查看当前库存
- **库存流水**: 库存变动记录
- **销售预测**: 预测库存需求
## 最佳实践
- 提供多种价格档位满足不同需求
- 设置明确的产品特点和优势
- 定期分析销售数据优化产品
- 保持产品信息的及时更新
- 合理使用促销提高销量
- 收集用户反馈持续改进
## 下一步
- [订单管理](/zh/admin/commerce/orders) - 处理产品订单
- [优惠券管理](/zh/admin/commerce/coupons) - 创建优惠活动
- [营销管理](/zh/admin/commerce/marketing) - 推广产品
+214
View File
@@ -0,0 +1,214 @@
# 服务器管理
管理代理服务器的基础信息、协议配置和运行状态,并配置全局节点参数。
## 页面组成
服务器管理页面包含以下模块:
### 1. 动态倍率配置
位于页面顶部的卡片,用于定义不同时段的流量计费倍率。
**功能特性:**
- **时段管理**: 定义多个时间段,每个时段包含:
- 开始时间 (Start time): 格式为 HH:MM:SS
- 结束时间 (End time): 格式为 HH:MM:SS
- 倍率 (Multiplier): 该时段的流量计费倍数
- **动态计费**: 在不同时间段应用不同倍率,如高峰时段可设置更高倍率
- **灵活配置**: 支持添加、编辑、删除时间段
- **立即生效**: 保存后实时应用于流量统计
**使用场景:**
- 高峰/低峰分时计费
- 节假日特殊计费
- 限制高峰时段流量使用
### 2. 节点配置
位于页面顶部的卡片,配置节点通信和全局策略。
**基础配置 (Basic Configuration):**
- **节点密钥 (Node Secret)**: 节点与服务器通信的认证密钥
- **节点拉取间隔 (Node Pull Interval)**: 节点从服务器拉取配置的时间间隔(秒)
- **节点推送间隔 (Node Push Interval)**: 节点向服务器推送状态的时间间隔(秒)
- **流量报告阈值 (Traffic Report Threshold)**: 触发流量报告的字节数阈值
- **IP 策略 (IP Strategy)**: 选择 prefer_ipv4 或 prefer_ipv6
**DNS 配置 (DNS Configuration):**
- **协议 (Protocol)**: tcp, udp, tls, https, quic
- **地址 (Address)**: DNS 服务器地址
- **域名 (Domains)**: 使用该 DNS 解析的域名列表
- 支持配置多个 DNS 服务器
**出站规则 (Outbound Rules):**
为特定流量配置出站代理:
- **名称 (Name)**: 规则标识
- **协议 (Protocol)**: 代理协议类型
- **地址 (Address)**: 代理服务器地址
- **端口 (Port)**: 代理服务器端口
- **加密方式 (Cipher)**: Shadowsocks 等协议的加密方法
- **密码 (Password)**: 代理认证密码
- **规则列表 (Rules)**: 匹配规则,如域名或 IP 范围
**屏蔽规则 (Block Rules):**
配置需要阻止的域名或 IP 列表,支持通配符和正则表达式。
### 3. 服务器列表
页面主体部分,以表格形式展示所有服务器。
**列信息:**
- **ID**: 服务器唯一标识,以徽章形式显示
- **名称 (Name)**: 服务器自定义名称
- **地址 (Address)**: 显示国家/城市/IP 地址,使用徽章组件
- **协议 (Protocols)**: 显示已启用的协议列表,每个协议显示:
- 倍率 (如 1.00x)
- 协议类型 (如 vless, vmess, trojan, shadowsocks)
- 端口号
- **状态 (Status)**: 在线/离线状态,带圆点指示器
- 绿色圆点: 在线
- 灰色圆点: 离线
- **CPU**: CPU 使用率百分比,以进度条形式显示
- **内存 (Memory)**: 内存使用率百分比,以进度条形式显示
- **磁盘 (Disk)**: 磁盘使用率百分比,以进度条形式显示
- **在线用户 (Online Users)**: 当前连接用户数
**操作功能:**
- **搜索**: 根据关键词快速筛选服务器
- **排序**: 通过拖拽行调整服务器显示顺序,排序会保存到数据库
- **分页**: 支持大量服务器的分页浏览
- **批量删除**: 选中多个服务器后批量删除(已被节点引用的服务器不可删除)
**单个服务器操作:**
- **编辑 (Edit)**: 修改服务器配置
- **连接 (Connect)**: 显示一键安装脚本
- **删除 (Delete)**: 删除服务器(已被节点引用时禁用)
- **复制 (Copy)**: 复制服务器配置创建新服务器
## 服务器表单
点击"创建 (Create)"或"编辑 (Edit)"时打开的侧边栏表单。
**基础信息:**
- **名称 (Name)**: 必填,服务器标识名称
- **国家 (Country)**: 服务器所在国家代码(如 CN, US, JP)
- **城市 (City)**: 服务器所在城市
- **地址 (Address)**: 服务器 IP 地址或域名
**协议配置:**
支持配置多种代理协议,每种协议以手风琴形式展开配置。已在节点中使用的协议类型无法禁用。
**常见协议字段:**
- **启用 (Enable)**: 开关按钮,控制是否启用该协议
- **端口 (Port)**: 监听端口号
- **倍率 (Ratio)**: 流量计费倍数,如 1.5 表示实际流量的 1.5 倍
- **加密/安全性**: 根据协议类型不同而不同
**支持的协议类型:**
1. **Shadowsocks**
- Cipher: 加密方法(如 aes-256-gcm, chacha20-poly1305)
- Password: 认证密码,支持生成随机密码
2. **Trojan**
- Password: 认证密码,支持生成随机密码
3. **Vmess**
- UUID: 用户标识,支持自动生成
- Alter ID: 额外 ID 数量
4. **Vless**
- UUID: 用户标识,支持自动生成
- Flow: 流控模式(如 xtls-rprx-vision)
5. **Hysteria**
- Up/Down Speed: 上传/下载速度限制
- Obfs Password: 混淆密码
6. **Hysteria2**
- Password: 认证密码
- Obfs Password: 混淆密码
7. **TUIC**
- UUID: 用户标识
- Password: 认证密码
- Congestion Control: 拥塞控制算法(如 bbr, cubic)
- UDP Relay Mode: UDP 中继模式
**传输层配置 (Transport):**
每个协议可配置不同的传输层:
- **TCP**: 基础 TCP 传输
- **WS (WebSocket)**: WebSocket 传输
- Path: WebSocket 路径
- Host: WebSocket Host 头
- **gRPC**: gRPC 传输
- Service Name: gRPC 服务名
- **HTTP/2**: HTTP/2 传输
- Path: 请求路径
- Host: Host 头
- **QUIC**: QUIC 协议传输
- **HTTPUpgrade**: HTTP 升级传输
- **SplitHTTP**: 分离 HTTP 传输
- **XHTTP**: 扩展 HTTP 传输
**TLS 配置:**
- **TLS**: 是否启用 TLS
- **Server Name**: SNI 服务器名称
- **ALPN**: 应用层协议协商(如 h2, http/1.1)
- **Fingerprint**: TLS 指纹(如 chrome, firefox, safari)
- **Reality**: Reality 协议配置
- Public Key: 公钥
- Short ID: 短 ID
- Spider X: Spider X 参数
**高级配置:**
- **Multiplex**: 多路复用设置
- **Encryption**: 额外加密层
- **Flow Control**: 流量控制参数
**字段生成功能:**
部分字段支持自动生成,带有钥匙图标:
- **UUID**: 生成随机 UUID
- **密码**: 生成随机强密码
- **Reality 密钥对**: 生成 Public Key 和 Private Key
- **Short ID**: 生成随机短 ID
## 一键安装
点击"连接 (Connect)"按钮显示服务器节点的安装脚本。
**配置项:**
- **API Host**: 管理面板的 API 地址(自动从当前域名获取,可手动修改)
- **Server ID**: 当前服务器的唯一 ID(自动填充)
- **Secret Key**: 从节点配置中自动获取
**安装命令:**
生成的 bash 脚本包含:
```bash
wget -N https://raw.githubusercontent.com/perfect-panel/ppanel-node/master/scripts/install.sh && bash install.sh --api-host [域名] --server-id [ID] --secret-key [密钥]
```
**操作:**
- 点击"复制并关闭 (Copy and Close)"一键复制脚本并关闭弹窗
- 在服务器上执行该脚本即可自动安装并连接节点
## 在线用户查看
点击"在线用户 (Online Users)"数字可查看当前服务器的在线用户详情。
**显示信息:**
- **用户账号**: 链接到用户详情页
- **订阅 ID**: 订阅记录 ID
- **订阅名称**: 所用套餐名称
- **流量使用**: 已用流量 / 总流量(若无限制显示"Unlimited")
- **到期时间**: 订阅过期时间,已过期显示红色"Expired"徽章
- **IP 地址**: 用户连接 IP,可点击查看 IP 信息
- **连接时间**: 用户建立连接的时间
## 数据刷新
服务器状态(CPU、内存、磁盘、在线用户)根据"节点配置"中设置的"节点推送间隔"实时更新。
@@ -0,0 +1,59 @@
# 模板变量参考
## 节点对象 (Proxy) 字段
### 基础字段
- `Name` - 节点名称
- `Server` - 服务器地址
- `Port` - 服务器端口
- `Type` - 协议类型
- `Tags` - 标签数组
- `Sort` - 排序序号
### 安全选项
- `Security` - 安全协议
- `SNI` - TLS 服务器名称
- `AllowInsecure` - 是否允许不安全连接
- `Fingerprint` - 客户端指纹
- `RealityServerAddr` - Reality 服务器地址
- `RealityPublicKey` - Reality 公钥
- `RealityShortId` - Reality 短ID
### 传输选项
- `Transport` - 传输协议,如 ws、http、grpc
- `Host` - WebSocket/HTTP 的 Host
- `Path` - HTTP/HTTPS 路径
- `ServiceName` - gRPC 服务名
### 协议特定字段
#### Shadowsocks
- `Method` - 加密方法
- `Cipher` - 加密算法
- `ServerKey` - 服务器密钥
#### Vmess/Vless
- `UUID` - 用户ID
- `Flow` - 流控模式
- `Encryption` - 加密方式
#### Trojan
- `Password` - 密码
#### Hysteria2
- `UpMbps` - 上行带宽
- `DownMbps` - 下行带宽
- `ObfsPassword` - 混淆密码
#### TUIC
- `CongestionController` - 拥塞控制算法
- `UDPRelayMode` - UDP 中继模式
## 用户信息 (UserInfo) 字段
- `Password` - 用户密码
- `ExpiredAt` - 过期时间
- `Download` - 已下载流量
- `Upload` - 已上传流量
- `Traffic` - 总流量
- `SubscribeURL` - 订阅链接
+284
View File
@@ -0,0 +1,284 @@
<div v-pre>
# 订阅配置
配置订阅系统的全局设置和管理客户端应用的订阅模板。订阅配置决定用户如何获取和使用代理节点信息。
## 页面组成
订阅配置页面分为两大模块:
### 1. 订阅配置 (Subscription Configuration)
位于页面顶部的卡片,配置订阅系统的全局设置。
**配置选项:**
**单订阅模式 (Single Subscription Mode)**
- 类型: 开关
- 功能: 限制用户只能拥有一个激活的订阅
- 说明: 不影响已存在的订阅,仅对新订阅生效
- 使用场景: 控制订阅数量,防止账号共享
**泛域名解析 (Wildcard Resolution)**
- 类型: 开关
- 功能: 启用订阅的泛域名解析
- 说明: 允许使用通配符域名访问订阅链接
- 示例: `*.example.com` 可匹配 `sub1.example.com`, `sub2.example.com`
**订阅路径 (Subscription Path)**
- 类型: 文本输入
- 功能: 自定义订阅端点的 URL 路径
- 格式: `/your-custom-path`
- 说明: 系统重启后性能更佳
- 示例: `/api/v1/subscribe``/sub`
**订阅域名 (Subscription Domain)**
- 类型: 多行文本
- 功能: 自定义订阅链接的域名
- 格式: 每行一个域名
- 示例:
```
example.com
www.example.com
sub.example.com
```
- 使用场景:
- 使用 CDN 域名
- 多域名负载均衡
- 域名备份
**User-Agent 限制**
- 类型: 开关
- 功能: 启用基于 User-Agent 的访问控制
- 说明: 只允许白名单中的客户端访问订阅
- 使用场景: 防止爬虫、限制非法访问
**User-Agent 白名单**
- 类型: 多行文本
- 功能: 配置允许访问订阅的 User-Agent 列表
- 格式: 每行一个 User-Agent
- 示例:
```
ClashX
ClashForAndroid
Clash-verge
```
- 说明: 已配置的应用 User-Agent 会自动包含在内
### 2. 客户端管理 (Client Management)
管理不同代理客户端的订阅模板和下载链接。
**表格列信息:**
- **默认 (Default)**: 开关按钮,设置为默认客户端
- 默认客户端在订阅页面优先显示
- 同时只能有一个默认客户端
- **客户端名称 (Client Name)**: 显示客户端图标和名称
- **User-Agent**: 客户端标识符,用于识别不同客户端
- **输出格式 (Output Format)**: 订阅内容的格式类型
- Base64: Base64 编码格式
- YAML: YAML 配置文件格式
- JSON: JSON 数据格式
- CONF: 配置文件格式
- Plain Text: 纯文本格式
- **支持平台 (Supported Platforms)**: 显示该客户端支持的操作系统
- Windows, macOS, Linux, iOS, Android, HarmonyOS
- **描述 (Description)**: 客户端详细说明
**操作功能:**
- **预览 (Preview)**: 查看生成的订阅模板内容
- Base64 格式显示原始内容和解码内容
- 其他格式直接显示内容
- 支持语法高亮
- **编辑 (Edit)**: 修改客户端配置
- **删除 (Delete)**: 删除客户端配置
- **批量删除**: 选中多个客户端后批量删除
**顶部工具栏:**
- **Template Repo 链接**: 跳转到 GitHub 模板仓库
- 地址: https://github.com/perfect-panel/subscription-template
- 提供订阅模板示例和文档
- **添加 (Add)**: 创建新的客户端配置
## 客户端表单
点击"添加 (Add)"或"编辑 (Edit)"时打开的侧边栏表单,分为三个标签页。
### 基本信息 (Basic Info)
**图标 (Icon)**
- 类型: URL 输入 + 上传按钮
- 格式: 图片 URL 或 Base64 编码
- 示例: `https://example.com/icon.png`
- 功能: 支持直接上传图片,自动转换为 Base64
**名称 (Name)** - 必填
- 类型: 文本输入
- 功能: 客户端显示名称
- 示例: `Clash for Windows`, `V2rayN`
**User-Agent** - 必填
- 类型: 文本输入
- 功能: 客户端标识符,用于区分不同客户端
- 示例: `Clash`, `V2rayN`, `ClashX`
- 重要: 必须与客户端实际发送的 User-Agent 匹配
**描述 (Description)** - 可选
- 类型: 多行文本
- 功能: 客户端详细说明
- 内容: 客户端特性、使用说明等
### 模板 (Templates)
**输出格式 (Output Format)** - 必填
- 类型: 下拉选择
- 选项:
- **Base64**: 传统订阅格式,适用于大多数客户端
- **YAML**: Clash 系列客户端配置格式
- **JSON**: JSON 格式配置,适用于支持 JSON 的客户端
- **CONF**: 配置文件格式,如 Shadowrocket
- **Plain Text**: 纯文本格式
**Scheme** - 可选
- 类型: 文本输入
- 功能: 自定义 URL Scheme
- 示例: `clash://`, `vmess://`
- 用途: 一键导入订阅
**模板 (Template)** - 必填
- 类型: Go Template 编辑器
- 功能: 使用 Go 模板语法编写订阅内容
- 支持: 语法高亮、代码补全
- 变量:
- `{{.SiteName}}`: 网站名称
- `{{.SubscribeName}}`: 订阅名称
- `{{.Proxies}}`: 节点数组
- `{{.UserInfo}}`: 用户信息
**模板变量说明**
详细的模板变量参考请查看:[模板变量参考](./subscribe-variables.md)
用户信息 (UserInfo) 字段:
- `Password` - 用户密码
- `ExpiredAt` - 过期时间
- `Download` - 已下载流量
- `Upload` - 已上传流量
- `Traffic` - 总流量
- `SubscribeURL` - 订阅链接
### 下载链接 (Downloads)
配置客户端的下载地址,支持多平台:
- **Windows**: Windows 平台下载链接
- **macOS**: macOS 平台下载链接
- **Linux**: Linux 平台下载链接
- **iOS**: iOS 平台下载链接
- **Android**: Android 平台下载链接
- **HarmonyOS**: 鸿蒙系统下载链接
每个平台都是可选的,填写后会在客户端列表中显示对应的平台徽章。
## 使用场景
### 场景 1: 配置 Clash 客户端
1. 点击"添加 (Add)"
2. 基本信息:
- 名称: `Clash for Windows`
- User-Agent: `Clash`
- 图标: 上传 Clash 图标
3. 模板:
- 输出格式: 选择 `YAML`
- 模板: 编写 Clash YAML 配置模板
4. 下载链接:
- Windows: `https://github.com/Fndroid/clash_for_windows_pkg/releases`
- macOS: `https://github.com/yichengchen/clashX/releases`
5. 点击"确认 (Confirm)"
### 场景 2: 配置传统 Base64 订阅
1. 点击"添加 (Add)"
2. 基本信息:
- 名称: `Universal`
- User-Agent: `*`
3. 模板:
- 输出格式: 选择 `Base64`
- 模板: 编写标准 vmess/vless URI 列表
4. 设置为默认客户端
5. 点击"确认 (Confirm)"
### 场景 3: 限制订阅访问
1. 打开"订阅配置"
2. 启用"User-Agent 限制"
3. 在"User-Agent 白名单"中添加:
```
Clash
V2rayN
ClashX
Quantumult
```
4. 保存配置
5. 只有白名单中的客户端能访问订阅
### 场景 4: 使用自定义域名
1. 打开"订阅配置"
2. 在"订阅域名"中添加:
```
sub.example.com
cdn.example.com
```
3. 配置"订阅路径": `/api/sub`
4. 保存配置
5. 用户可使用 `https://sub.example.com/api/sub/{token}` 访问订阅
## 模板编写指南
### Base64 格式示例
```go
{{range .Proxies}}{{.Type}}://{{.UUID}}@{{.Server}}:{{.Port}}?security={{.Security}}&sni={{.SNI}}#{{.Name}}
{{end}}
```
### Clash YAML 格式示例
```yaml
proxies:
{{range .Proxies}}
- name: {{.Name}}
type: {{.Type}}
server: {{.Server}}
port: {{.Port}}
{{if eq .Type "vless"}}uuid: {{.UUID}}{{end}}
{{if eq .Type "vmess"}}uuid: {{.UUID}}{{end}}
{{if eq .Type "trojan"}}password: {{.Password}}{{end}}
{{end}}
```
### 条件判断示例
```go
{{range .Proxies}}
{{if eq .Type "vless"}}
vless://{{.UUID}}@{{.Server}}:{{.Port}}
{{else if eq .Type "vmess"}}
vmess://{{.UUID}}@{{.Server}}:{{.Port}}
{{end}}
{{end}}
```
## 注意事项
1. **User-Agent 匹配**: 必须与客户端实际发送的 User-Agent 完全匹配,否则无法正确识别
2. **模板语法**: 使用 Go Template 语法,语法错误会导致订阅生成失败
3. **输出格式**: 确保模板输出与选择的格式匹配,如 YAML 格式需要正确的缩进
4. **默认客户端**: 同时只能有一个默认客户端,设置新默认会取消旧的
5. **域名配置**: 自定义域名需要在 DNS 和 Web 服务器中正确配置
6. **路径更改**: 订阅路径更改后,需要重启系统以获得最佳性能
7. **预览功能**: 使用预览功能测试模板是否正确生成
8. **模板仓库**: 参考 GitHub 模板仓库获取更多示例和最佳实践
</div>
+131
View File
@@ -0,0 +1,131 @@
<div v-pre>
# 公告管理
创建和管理系统公告,支持显示控制、置顶和弹窗功能。
## 表格列说明
### 显示 (Show)
开关按钮,控制公告是否在前台显示。
### 置顶 (Pinned)
开关按钮,控制公告是否置顶显示。
### 弹窗 (Popup)
开关按钮,控制用户访问时是否弹窗显示公告。
### 标题 (Title)
公告标题。
### 内容 (Content)
公告正文内容(支持Markdown)。
### 更新时间 (Updated At)
最后更新时间。
## 表格操作
### 编辑
打开侧边抽屉表单修改公告信息。
### 删除
删除公告(需确认),不可恢复。
### 批量删除
选中多个公告后批量删除。
## 公告表单
### 标题 (必填)
公告的标题文字。
### 内容 (必填)
公告正文内容,支持Markdown格式:
- 标题: # ## ###
- 粗体: **文字**
- 斜体: *文字*
- 列表: - 项目
- 链接: [文字](url)
- 代码: `代码`
## 筛选功能
### 启用筛选
- 显示: 查看已显示的公告
- 隐藏: 查看已隐藏的公告
### 关键词搜索
输入标题或内容搜索公告。
## 使用场景
### 场景一: 创建重要通知
**表单配置**:
- 标题: 系统维护通知
- 内容:
```
# 系统维护通知
本系统将于 **2024年1月1日 02:00-04:00** 进行维护升级。
## 影响范围
- 网站暂时无法访问
- 服务不受影响
感谢您的理解与支持!
```
- 显示: 开启
- 置顶: 开启
- 弹窗: 开启
### 场景二: 创建活动公告
**表单配置**:
- 标题: 双11优惠活动
- 内容:
```
## 🎉 双11优惠活动
- 全场套餐 **8折** 优惠
- 年付套餐额外赠送 **30天**
- 活动时间: 11.11-11.13
[立即购买](/subscribe)
```
- 显示: 开启
- 置顶: 开启
- 弹窗: 否
### 场景三: 创建使用说明
**表单配置**:
- 标题: 新手使用指南
- 内容:
```
# 新手使用指南
## 1. 购买套餐
进入 [订阅页面](/subscribe) 选择合适的套餐
## 2. 下载客户端
前往 [文档中心](/docs) 下载对应平台客户端
## 3. 导入配置
复制订阅链接到客户端即可使用
```
- 显示: 开启
- 置顶: 否
- 弹窗: 否
## 重要提示
1. **Markdown支持**: 内容支持Markdown格式,可排版精美公告
2. **弹窗功能**: 开启后用户每次访问都会弹窗提示
3. **置顶显示**: 置顶公告会在列表最上方
4. **显示控制**: 可先创建后再开启显示
5. **批量删除**: 删除操作不可恢复,谨慎操作
6. **更新时间**: 每次编辑都会更新时间戳
</div>
+155
View File
@@ -0,0 +1,155 @@
<div v-pre>
# 营销管理
提供邮件营销和配额服务两大营销功能,用于批量触达用户和赠送福利。
## 功能模块
### 邮件营销 (Email Marketing)
包含两个功能:
#### 1. 邮件群发
批量发送营销邮件给用户。
**表单字段**:
- **邮件主题** (必填) - 邮件标题
- **邮件内容** (必填) - 支持HTML编辑器,可设计富文本邮件
- **发送范围** - 选择目标用户群体:
- 全部用户
- 有订阅用户
- 无订阅用户
- 按注册时间筛选
- **注册时间范围** (可选) - 筛选特定时间段注册的用户
- **附加邮箱** (可选) - 手动输入额外邮箱地址,每行一个
- **定时发送** (可选) - 设置未来发送时间
- **发送间隔** (可选) - 每封邮件间隔秒数(最小0.1秒)
- **每日限额** (可选) - 每天最多发送数量(最小1)
**收件人统计**:
表单实时显示:
- 系统用户数
- 附加邮箱数
- 总计收件人数
#### 2. 邮件任务管理
查看和管理邮件发送任务。
**任务列表显示**:
- 任务ID
- 主题
- 发送状态
- 已发送数量
- 总数量
- 创建时间
**任务操作**:
- 查看详情
- 暂停/恢复
- 删除任务
### 配额服务 (Quota Service)
批量赠送用户流量、天数或余额。
#### 1. 配额群发
批量赠送福利给订阅用户。
**表单字段**:
- **选择套餐** (必填) - 多选目标产品套餐
- **订阅状态** - 筛选条件:
- 仅活跃订阅
- 包含过期订阅
- **订阅时间范围** (可选) - 筛选特定时间段订阅的用户
- **是否重置流量** - 开关,赠送时是否重置用户流量
- **赠送类型** (必填) - 单选:
- 流量 (GB)
- 天数
- 余额
- **赠送数值** (必填) - 具体赠送数量
**收件人统计**:
表单实时显示符合条件的用户数。
#### 2. 配额任务管理
查看和管理配额发放任务。
**任务列表显示**:
- 任务ID
- 套餐名称
- 赠送类型和数量
- 处理状态
- 已处理/总数
- 创建时间
**任务操作**:
- 查看详情
- 删除任务
## 使用场景
### 场景一: 新用户欢迎邮件
**邮件群发配置**:
- 邮件主题: 欢迎加入!
- 邮件内容: 设计欢迎邮件(HTML)
- 发送范围: 全部用户
- 注册时间: 最近7天
- 发送间隔: 1秒
- 每日限额: 1000
### 场景二: 促销活动通知
**邮件群发配置**:
- 邮件主题: 限时优惠!年付套餐8折
- 邮件内容: 活动详情(HTML)
- 发送范围: 有订阅用户
- 定时发送: 活动开始前1小时
### 场景三: 赠送流量福利
**配额群发配置**:
- 选择套餐: 标准月付
- 订阅状态: 仅活跃订阅
- 订阅时间: 过去30天
- 重置流量: 否
- 赠送类型: 流量
- 赠送数值: 10 GB
### 场景四: 赠送会员时长
**配额群发配置**:
- 选择套餐: 所有套餐
- 订阅状态: 仅活跃订阅
- 重置流量: 否
- 赠送类型: 天数
- 赠送数值: 7
### 场景五: 充值余额返现
**配额群发配置**:
- 选择套餐: 高级套餐
- 订阅状态: 仅活跃订阅
- 订阅时间: 过去7天
- 赠送类型: 余额
- 赠送数值: 10元
## 重要提示
1. **邮件发送**: 注意发送间隔和限额,避免被判定为垃圾邮件
2. **HTML内容**: 邮件支持富文本,可设计精美营销内容
3. **定时任务**: 可设置未来时间自动发送
4. **实时统计**: 收件人数实时计算,提交前可预览
5. **任务管理**: 可查看任务执行进度和状态
6. **配额赠送**: 配额立即发放,不可撤回
7. **流量重置**: 勾选后会重置用户当前流量
8. **套餐筛选**: 可精准选择目标用户群体
</div>
+172
View File
@@ -0,0 +1,172 @@
<div v-pre>
# 广告管理
创建和管理平台广告,支持多种广告类型和有效期控制。
## 表格列说明
### 状态 (Status)
开关按钮,控制广告是否显示。
### 标题 (Title)
广告标题。
### 类型 (Type)
广告类型(Badge显示):
- Banner横幅
- Popup弹窗
- Sidebar侧边栏
- Notice通知栏
### 目标链接 (Target URL)
点击广告跳转的链接。
### 描述 (Description)
广告描述文字。
### 有效期 (Validity Period)
广告显示的时间范围:
- 开始时间
- 结束时间
## 表格操作
### 编辑
打开侧边抽屉修改广告。
### 删除
删除广告(需确认),不可恢复。
### 创建广告
添加新的广告。
## 广告表单
### 标题 (必填)
广告标题,显示给用户。
### 类型 (必填)
选择广告类型:
- **Banner**: 顶部或底部横幅广告
- **Popup**: 页面弹窗广告
- **Sidebar**: 侧边栏固定广告
- **Notice**: 通知栏滚动广告
### 目标链接 (可选)
点击广告跳转的URL:
- 外部链接: https://example.com
- 内部页面: /pricing
- 留空则不可点击
### 描述 (可选)
广告描述或详细内容。
### 图片URL (可选,部分类型需要)
广告图片地址:
- Banner和Popup通常需要图片
- 使用外链图片
- 建议尺寸: Banner 1920x200, Popup 800x600
### 有效期 (必填)
设置广告显示的时间范围:
- 开始时间: 广告开始显示
- 结束时间: 广告停止显示
- 可以提前创建定时广告
### 状态 (默认禁用)
控制广告是否立即显示:
- 创建时默认禁用
- 启用后在有效期内显示
## 筛选功能
### 状态筛选
选择"启用"或"禁用"查看对应广告。
### 关键词搜索
搜索广告标题。
## 使用场景
### 场景一: 创建促销横幅
**表单配置**:
- 标题: 双十一特惠活动
- 类型: Banner
- 目标链接: /pricing
- 描述: 全场套餐8折优惠
- 图片URL: https://cdn.example.com/banner-1111.jpg
- 有效期:
- 开始: 2024-11-11 00:00
- 结束: 2024-11-11 23:59
- 状态: 启用
### 场景二: 创建弹窗公告
**表单配置**:
- 标题: 重要系统升级通知
- 类型: Popup
- 目标链接: /announcement/123
- 描述: 系统将于今晚22:00-23:00进行维护升级...
- 图片URL: https://cdn.example.com/popup-upgrade.jpg
- 有效期:
- 开始: 2024-01-15 08:00
- 结束: 2024-01-15 23:00
- 状态: 启用
### 场景三: 创建侧边栏推广
**表单配置**:
- 标题: 推荐好友返佣
- 类型: Sidebar
- 目标链接: /invite
- 描述: 邀请好友注册,获得10%返佣
- 图片URL: https://cdn.example.com/sidebar-invite.jpg
- 有效期:
- 开始: 2024-01-01 00:00
- 结束: 2024-12-31 23:59
- 状态: 启用
### 场景四: 创建通知栏滚动
**表单配置**:
- 标题: 新节点上线
- 类型: Notice
- 目标链接: /nodes
- 描述: 新增美国洛杉矶高速节点,欢迎体验!
- 有效期:
- 开始: 2024-01-20 00:00
- 结束: 2024-01-27 23:59
- 状态: 启用
## 广告显示规则
### 显示条件
广告需同时满足:
1. 状态为"启用"
2. 当前时间在有效期内
3. 对应页面支持该类型
### 显示位置
- **Banner**: 页面顶部或底部
- **Popup**: 页面加载时弹出
- **Sidebar**: 页面右侧固定
- **Notice**: 页面顶部滚动条
### 显示频率
- Popup类型:每个用户每天只显示一次
- 其他类型:持续显示
## 重要提示
1. **有效期**: 过期广告自动不显示,无需手动关闭
2. **图片外链**: 图片使用CDN外链,确保加载速度
3. **链接测试**: 创建前测试目标链接是否正确
4. **尺寸规范**: 不同类型广告建议不同图片尺寸
5. **内容合规**: 广告内容需符合法律法规
6. **提前创建**: 可以提前创建定时广告
7. **Popup频率**: 弹窗广告不要过于频繁
8. **移动适配**: 确保图片在移动端正常显示
</div>
+114
View File
@@ -0,0 +1,114 @@
# 认证控制
>`系统 -> 认证控制` 聚焦“怎么让用户登录和校验身份”, 而不是角色/权限。这里可以集中配置邮箱、短信、社交账号以及设备认证等多种方式, 并内置测试工具确保配置可立即生效。
## 模块概览
- **通信方式**: 邮箱登录与短信登录, 支持验证码流程、白名单策略以及模板维护。
- **社交账号**: Apple、Google、Facebook、GitHub、Telegram 五种主流 OAuth/机器人方案, 均可独立开启/关闭。
- **设备认证**: 针对客户端设备的登录策略, 支持虚拟机拦截及通信密钥。
下面内容与后台页面的分区保持一致, 建议依次配置、测试并保存。
## 通信方式
### 邮箱认证
1. **基础开关**
- `启用邮箱登录`: 控制是否在用户端展示邮箱登录入口。
- `邮箱验证`: 要求新用户或敏感操作必须先完成验证码校验。
- `域名白名单`: 仅允许特定后缀(如 `gmail.com`)注册/登录, 可在下方列表一行一个填入。
2. **SMTP 平台配置**
- `服务器地址``端口`: 对应 SMTP Host/Port, 常用端口 25/465/587。
- `SSL/TLS` 开关: 与邮件服务提供商支持的加密方式保持一致。
- `账号/密码`: SMTP 鉴权凭证, 通常为邮箱与应用专用密码。
- `发件地址 From`: 用户看到的发件邮箱, 需与 SMTP 账号匹配。
- `发送测试邮件`: 在配置下方输入收件邮箱即可发送, 立刻验证能否投递成功。
3. **模板管理** (位于页签 `验证邮件 / 到期提醒 / 维护公告 / 流量超限`)
- 模板支持 HTML 并带有变量, 常用变量如下:
- `{{.Type}}`: 邮件类型 (1 注册, 2 重置密码), 可结合 `{{if eq .Type 1}}` 编写条件。
- `{{.SiteLogo}}` / `{{.SiteName}}`: 站点 Logo 与名称。
- `{{.Expire}}`: 验证码过期时间; `{{.ExpireDate}}`: 订阅到期日。
- `{{.Code}}`: 验证码内容。
- `{{.MaintenanceDate}}``{{.MaintenanceTime}}`: 维护公告专用。
- 所有模板使用统一的所见即所得编辑器, 保存后立即作用于新发邮件。
### 手机(短信)认证
1. **登录策略**
- `启用短信登录`: 控制手机号验证码入口。
- `区号白名单`: 打开后仅允许填写白名单区号, 列表通过输入框逐个添加, 例如 `1, 852, 886`
2. **平台选择与动态字段**
- 下拉选择 SMS 平台后, 系统会自动展示该平台所需字段并提供“去申请”链接。
- 常见字段: `Access Key / Secret Key / Endpoint / Template Code / Sign Name / 专用手机号`
- 如果平台支持自定义模板, 需要在文本框内填入包含 `{{code}}`(或供应商自定义变量)的正文。
3. **测试短信**
- 右下角可选择区号 + 填写手机号, 点击“测试短信”直接调用短信网关。
- 发送失败通常与 AccessKey、签名或模板审核状态有关, 建议先在供应商控制台验证。
## 社交认证
每个社交方式都使用统一的抽屉式设置, 包含「启用开关」与所需凭证字段。所有凭证填写完成后点击“保存”即可立即在登录页展示相应按钮。
### Apple Sign-In
- **Team ID / Key ID**: 来自 Apple Developer 账户。
- **Service ID (Client ID)**: 在 Apple Developer -> Identifiers 中创建。
- **Private Key**: `.p8` 文件内容, 需要完整包含 `BEGIN/END`
- **Redirect URL**: 登录完成后跳转回后台的 API 地址, 不要以 `/` 结尾。
### Google Sign-In
- **Client ID** 与 **Client Secret**: 在 Google Cloud Console 的 OAuth 同意屏幕中创建, 类型选择 Web 应用。
- 需要在 Google 控制台中为 Redirect URI 配置管理员站点的 `/api/auth/google/callback`(示例)。
### Facebook 登录
- **App ID / App Secret**: 来源于 Facebook Developer 平台。确保将站点域名加入“有效 OAuth 重定向 URI”。
### GitHub 登录
- **Client ID / Client Secret**: 在 GitHub Developer Settings -> OAuth Apps 生成。
- 请将回调地址设为 `https://your-domain.com/api/auth/github/callback` 并允许 HTTPS 访问。
### Telegram 登录
- **Bot ID / Bot Token**: 通过 @BotFather 获取, 记得开启“Login Widget”权限。
- Telegram 登录依赖机器人对话, 配置完成后即可在用户端调起官方授权弹窗。
## 设备认证
适用于需要在客户端或 Set-Top-Box 上做一次性配对登录的场景。
- `启用设备登录`: 开关后终端可以通过设备码/二维码方式登录。
- `显示广告`: 控制设备端是否展示广告位(用于商业化)。
- `阻止虚拟机`: 启用后检测到虚拟机或模拟器将拒绝登录。
- `启用通信安全`: 强制客户端每个请求都携带通信密钥。
- `通信密钥`: 管理员可以手动粘贴或使用骰子按钮自动生成 32 位 GUID, 建议每个渠道独立密钥并妥善保管。
## 操作建议
- 切换邮件/SMS 服务商前先复制旧配置, 保存为版本记录。
- 每次修改完 SMTP 或模板都使用“发送测试邮件”验证, 避免正式用户收不到通知。
- SMS 平台字段因供应商不同而改变, 如果列表中没有需要的字段, 需要在供应商配置里通过自定义模板变量兼容。
- 对于 Apple/Google 等 OAuth, 建议先在沙箱或测试账号演练一遍授权流程, 确认 Redirect URI 正确。
- `通信密钥` 属于敏感凭证, 只对接入客户端公开, 禁止写入前端代码仓库。
## 常见问题
### 邮件可以发送, 用户仍提示“验证码发送失败”?
- 检查是否开启邮箱后缀白名单, 与用户输入的邮箱域一致。
- 如果使用企业 SMTP, 需确认发件地址与 SMTP 账号一致, 否则服务商可能拦截。
### 短信发送失败
- 平台模板是否审核通过; 模板参数名是否与平台 `{{code}}`(或其别名)一致。
- 区号白名单是否包含目标国家/地区。
- 若仍失败, 打开浏览器调试台查看 API 返回的错误码, 对照短信服务商文档定位。
### OAuth 登录跳回站点后出现 `redirect_uri_mismatch`
- Facebook/Google/GitHub 都要求将回调 URL 精确填写, 包括协议与尾部路径, 需与后台配置完全一致。
## 相关文档
- [系统配置](/zh/admin/system/config): 设置站点名称、Logo、SMTP 基本参数等。
- [支付配置](/zh/admin/system/payment): 配置业务付费前, 建议先打通认证方式。
- [广告配置](/zh/admin/system/ads): 与设备认证中的“显示广告”配合使用。
+556
View File
@@ -0,0 +1,556 @@
# 系统配置
系统配置模块用于管理系统的全局设置和参数,控制系统的整体行为。
## 功能概述
### 基础设置
系统基础配置:
- **网站名称**: 系统显示名称
- **网站Logo**: 网站标识图片
- **网站图标**: 浏览器标签图标(Favicon)
- **网站描述**: 网站简介和SEO描述
- **网站关键词**: SEO关键词
- **联系方式**: 客服联系信息
### 系统信息
查看系统运行信息:
- **系统版本**: 当前系统版本号
- **运行环境**: 服务器环境信息
- **运行时间**: 系统运行时长
- **系统状态**: 当前运行状态
- **数据库信息**: 数据库配置信息
- **缓存信息**: 缓存配置和状态
## 站点配置
### 站点信息
配置站点基本信息:
- **站点名称**: 显示在页面的名称
- **站点标语**: 副标题或宣传语
- **站点Logo**: 上传网站Logo
- **站点图标**: 上传Favicon
- **版权信息**: 页脚版权说明
- **ICP备案号**: 网站备案信息
### SEO设置
搜索引擎优化配置:
- **页面标题**: 默认页面标题
- **关键词**: SEO关键词设置
- **描述**: 网站描述信息
- **robots.txt**: 搜索引擎爬虫规则
- **sitemap**: 网站地图配置
### 联系信息
设置联系方式:
- **客服邮箱**: 客服邮件地址
- **联系电话**: 客服电话号码
- **在线客服**: 在线客服链接
- **工单系统**: 工单提交地址
- **社交媒体**: 社交媒体链接
## 邮件配置
### SMTP设置
配置邮件发送服务:
- **SMTP服务器**: 邮件服务器地址
- **SMTP端口**: 服务器端口(25/465/587)
- **发件人**: 发件人邮箱地址
- **发件人名称**: 显示的发件人名称
- **SMTP用户名**: SMTP认证用户名
- **SMTP密码**: SMTP认证密码
- **加密方式**: SSL/TLS加密
### 邮件模板
配置邮件内容模板:
- **注册验证邮件**: 注册时的验证邮件
- **密码重置邮件**: 重置密码邮件
- **订单通知邮件**: 订单相关通知
- **系统通知邮件**: 系统消息通知
- **营销邮件**: 营销活动邮件
### 邮件测试
测试邮件配置:
- 发送测试邮件
- 验证配置是否正确
- 检查邮件送达率
- 查看发送日志
## 短信配置
### 短信服务商
配置短信服务:
- **服务商选择**: 阿里云/腾讯云/其他
- **AccessKey**: API访问密钥
- **AccessSecret**: API密钥
- **短信签名**: 短信发送签名
- **短信模板**: 短信内容模板
### 短信模板
配置短信内容:
- **验证码短信**: 登录/注册验证码
- **通知短信**: 订单、续费通知
- **营销短信**: 活动推广短信
### 短信测试
测试短信功能:
- 发送测试短信
- 验证配置
- 查看发送记录
## 存储配置
### 本地存储
本地文件存储配置:
- **存储路径**: 文件存储目录
- **访问URL**: 文件访问地址
- **最大大小**: 单个文件大小限制
- **允许类型**: 允许上传的文件类型
### 云存储
对象存储服务配置:
**阿里云OSS**:
- Endpoint
- AccessKey ID
- AccessKey Secret
- Bucket名称
- CDN域名
**腾讯云COS**:
- SecretId
- SecretKey
- Bucket
- Region
- CDN域名
**AWS S3**:
- Access Key
- Secret Key
- Bucket
- Region
- CDN
### CDN配置
CDN加速配置:
- **CDN域名**: 加速域名
- **缓存规则**: 缓存策略
- **防盗链**: 防盗链设置
- **HTTPS**: HTTPS配置
## 安全配置
### 访问控制
控制系统访问:
- **维护模式**: 开启维护模式
- **IP白名单**: 允许访问的IP
- **IP黑名单**: 禁止访问的IP
- **访问频率限制**: API访问频率限制
- **登录限制**: 登录失败次数限制
### 密码策略
设置密码安全策略:
- **最小长度**: 密码最小长度
- **复杂度要求**: 必须包含字母数字符号
- **密码过期**: 密码有效期
- **历史密码**: 不能使用历史密码
- **初始密码**: 新用户默认密码规则
### 双因素认证
两步验证配置:
- **启用2FA**: 强制或可选
- **认证方式**: 短信/邮箱/TOTP
- **有效时间**: 验证码有效期
- **备用方式**: 备用验证方式
### SSL/TLS
HTTPS安全配置:
- **强制HTTPS**: 强制使用HTTPS
- **SSL证书**: 上传SSL证书
- **HSTS**: HTTP严格传输安全
- **证书更新**: 证书自动更新
## 缓存配置
### 缓存类型
选择缓存方式:
- **文件缓存**: 使用文件系统缓存
- **Redis缓存**: 使用Redis缓存
- **Memcached**: 使用Memcached缓存
### Redis配置
Redis缓存设置:
- **Redis主机**: Redis服务器地址
- **Redis端口**: 默认6379
- **Redis密码**: 认证密码
- **数据库编号**: Redis数据库
- **前缀**: 缓存键前缀
### 缓存管理
管理系统缓存:
- **清除缓存**: 清除所有缓存
- **刷新缓存**: 刷新特定缓存
- **缓存统计**: 查看缓存使用情况
- **预热缓存**: 预加载常用数据
## 队列配置
### 队列驱动
配置任务队列:
- **同步**: 同步执行
- **数据库**: 使用数据库队列
- **Redis**: 使用Redis队列
- **其他**: RabbitMQ等
### 队列设置
队列配置:
- **队列名称**: 队列标识
- **重试次数**: 失败重试次数
- **超时时间**: 任务执行超时
- **并发数**: 并发执行数量
### 队列监控
监控队列状态:
- **队列长度**: 待处理任务数
- **执行中**: 正在执行的任务
- **失败任务**: 失败的任务
- **任务历史**: 历史执行记录
## 日志配置
### 日志设置
配置系统日志:
- **日志级别**: DEBUG/INFO/WARNING/ERROR
- **日志渠道**: 文件/数据库/云服务
- **日志保留**: 日志保留天数
- **日志轮转**: 日志文件轮转策略
### 日志类型
不同类型的日志:
- **系统日志**: 系统运行日志
- **错误日志**: 错误和异常日志
- **访问日志**: HTTP访问日志
- **操作日志**: 用户操作日志
- **安全日志**: 安全相关日志
### 日志查看
查看和分析日志:
- **实时日志**: 实时查看日志
- **日志搜索**: 搜索日志内容
- **日志过滤**: 按条件过滤
- **日志导出**: 导出日志文件
## 定时任务
### 任务配置
配置定时任务:
- **任务名称**: 任务标识名称
- **执行时间**: Cron表达式
- **任务类型**: 任务执行类型
- **任务参数**: 传递的参数
- **启用状态**: 启用或禁用
### 任务管理
管理定时任务:
- **启用/禁用**: 控制任务执行
- **立即执行**: 手动触发执行
- **执行历史**: 查看执行记录
- **任务日志**: 查看执行日志
### 常见任务
系统预设任务:
- **数据统计**: 每日数据统计
- **数据清理**: 清理过期数据
- **邮件发送**: 批量邮件发送
- **订单检查**: 检查订单状态
- **订阅续费**: 自动续费处理
- **备份任务**: 数据备份任务
## 通知配置
### 通知渠道
配置通知方式:
- **站内通知**: 系统消息通知
- **邮件通知**: 邮件推送
- **短信通知**: 短信推送
- **Webhook**: HTTP回调通知
- **推送服务**: App推送
### 通知事件
配置通知事件:
- **用户注册**: 新用户注册通知
- **订单支付**: 订单支付通知
- **订阅到期**: 订阅到期提醒
- **工单创建**: 新工单通知
- **系统告警**: 系统异常告警
### 通知模板
配置通知内容:
- **模板管理**: 管理通知模板
- **变量替换**: 支持动态变量
- **多语言**: 多语言模板
- **模板测试**: 测试通知模板
## API配置
### API设置
API接口配置:
- **API开关**: 启用或禁用API
- **API密钥**: 生成API密钥
- **API域名**: API访问域名
- **版本控制**: API版本管理
- **文档地址**: API文档链接
### API限制
API访问控制:
- **频率限制**: 每分钟请求次数
- **并发限制**: 并发请求数
- **IP限制**: IP访问控制
- **签名验证**: API签名验证
### Webhook
Webhook配置:
- **回调地址**: Webhook URL
- **事件订阅**: 订阅的事件
- **签名密钥**: 验证签名
- **重试策略**: 失败重试
## 第三方集成
### 支付集成
集成支付服务:
- 支付宝
- 微信支付
- PayPal
- Stripe
- 虚拟货币
### 分析集成
集成分析工具:
- Google Analytics
- 百度统计
- 友盟统计
- 自定义统计代码
### 客服集成
集成客服系统:
- 在线客服
- Zendesk
- Intercom
- 自建客服系统
## 维护模式
### 开启维护
系统维护模式:
- **维护开关**: 启用维护模式
- **维护提示**: 显示的维护信息
- **白名单**: 维护期间可访问的IP
- **预计时间**: 维护完成时间
### 维护设置
维护模式配置:
- **维护页面**: 自定义维护页面
- **允许访问**: 允许访问的路径
- **重定向**: 维护期间重定向
- **定时开启**: 定时开启维护模式
## 系统优化
### 性能优化
优化系统性能:
- **开启缓存**: 启用各类缓存
- **静态资源**: CDN加速
- **数据库**: 数据库优化
- **图片优化**: 图片压缩和懒加载
- **代码优化**: 代码压缩合并
### 数据库优化
数据库性能优化:
- **索引优化**: 添加合适的索引
- **查询优化**: 优化慢查询
- **数据归档**: 归档历史数据
- **数据清理**: 清理无用数据
## 备份恢复
### 数据备份
数据备份配置:
- **自动备份**: 定时自动备份
- **备份内容**: 数据库/文件
- **备份位置**: 本地/云存储
- **备份保留**: 保留份数和时间
- **备份通知**: 备份完成通知
### 数据恢复
数据恢复操作:
- **选择备份**: 选择备份文件
- **恢复确认**: 确认恢复操作
- **恢复执行**: 执行恢复
- **恢复验证**: 验证数据完整性
## 系统监控
### 服务器监控
监控服务器状态:
- **CPU使用率**: CPU占用情况
- **内存使用**: 内存占用情况
- **磁盘空间**: 磁盘使用情况
- **网络流量**: 网络使用情况
- **进程状态**: 进程运行状态
### 应用监控
监控应用状态:
- **在线用户**: 当前在线用户数
- **请求量**: 每秒请求数
- **响应时间**: 平均响应时长
- **错误率**: 错误发生率
- **队列状态**: 队列任务状态
### 告警设置
配置监控告警:
- **告警规则**: 设置告警条件
- **告警方式**: 邮件/短信/Webhook
- **告警级别**: 警告/错误/严重
- **告警接收人**: 接收告警的人员
## 最佳实践
- 定期备份系统数据
- 及时更新系统版本
- 合理配置缓存策略
- 监控系统运行状态
- 定期清理无用数据
- 优化数据库性能
- 做好安全防护措施
- 记录重要操作日志
## 常见问题
### 邮件发送失败
检查:
1. SMTP配置是否正确
2. 邮箱服务是否开启
3. 网络连接是否正常
4. 是否被标记为垃圾邮件
### 缓存不生效
可能原因:
1. 缓存配置错误
2. Redis连接失败
3. 缓存键设置问题
4. 缓存被清除
### 定时任务不执行
检查:
1. 任务是否启用
2. Cron表达式是否正确
3. 服务器时间是否准确
4. 队列服务是否运行
## 下一步
- [权限控制](/zh/admin/system/auth-control) - 配置权限系统
- [支付配置](/zh/admin/system/payment) - 配置支付方式
- [日志管理](/zh/admin/logs/login-logs) - 查看系统日志
+180
View File
@@ -0,0 +1,180 @@
<div v-pre>
# 支付管理
管理平台支持的支付方式,查看支付渠道统计。
## 支付方式表格
### 表格列说明
#### 状态 (Status)
开关按钮,控制支付方式是否启用。
#### 名称 (Name)
支付方式名称。
#### 类型 (Type)
支付渠道类型:
- 支付宝 (Alipay)
- 微信支付 (WeChat Pay)
- PayPal
- Stripe
- 加密货币 (Crypto)
#### 配置 (Configuration)
查看支付方式的配置状态。
#### 更新时间 (Updated At)
最后更新时间。
### 表格操作
#### 编辑
打开侧边抽屉修改支付配置:
- API密钥
- 商户号
- 回调URL
- 手续费率
- 最小/最大金额
#### 删除
删除支付方式(需确认)。
#### 创建支付方式
添加新的支付渠道。
## 支付统计面板
显示各支付方式的统计数据:
### 总交易额
各支付方式的累计交易金额。
### 交易笔数
各支付方式的交易次数。
### 成功率
支付成功率统计。
### 手续费
各支付方式产生的手续费。
## 支付配置表单
### 基本信息
- 支付方式名称
- 支付类型
- 显示图标
- 显示顺序
### API配置
不同支付方式需要不同配置:
**支付宝**:
- App ID
- 商户私钥
- 支付宝公钥
- 回调URL
**微信支付**:
- 商户号
- API密钥
- App ID
- App Secret
- 证书文件
**PayPal**:
- Client ID
- Client Secret
- Sandbox模式
**Stripe**:
- Publishable Key
- Secret Key
- Webhook Secret
**加密货币**:
- 钱包地址
- API密钥
- 确认区块数
### 交易设置
- 最小支付金额
- 最大支付金额
- 手续费率
- 支付超时时间
## 使用场景
### 场景一: 配置支付宝
**创建支付方式**:
- 名称: 支付宝
- 类型: Alipay
- App ID: 2021xxx
- 商户私钥: [私钥内容]
- 支付宝公钥: [公钥内容]
- 回调URL: https://myvpn.com/callback/alipay
- 最小金额: 1元
- 最大金额: 10000元
- 手续费率: 0.6%
- 状态: 启用
### 场景二: 配置Stripe
**创建支付方式**:
- 名称: 信用卡支付
- 类型: Stripe
- Publishable Key: pk_live_xxx
- Secret Key: sk_live_xxx
- Webhook Secret: whsec_xxx
- 回调URL: https://myvpn.com/callback/stripe
- 最小金额: $1
- 最大金额: $1000
- 手续费率: 2.9% + $0.30
- 状态: 启用
### 场景三: 配置加密货币支付
**创建支付方式**:
- 名称: USDT支付
- 类型: Crypto
- 币种: USDT (TRC-20)
- 钱包地址: TXxx...
- API密钥: [可选]
- 确认区块数: 1
- 最小金额: 10 USDT
- 汇率API: 实时获取
- 状态: 启用
## 支付回调
### 回调处理
平台自动处理支付回调:
1. 验证回调签名
2. 更新订单状态
3. 发放用户余额
4. 发送通知邮件
### 回调日志
查看支付回调日志:
- 回调时间
- 支付状态
- 订单信息
- 错误信息(如有)
## 重要提示
1. **密钥安全**: 妥善保管API密钥和证书
2. **回调验证**: 必须验证回调签名防止伪造
3. **测试环境**: 先在测试环境验证配置
4. **HTTPS要求**: 回调URL必须使用HTTPS
5. **手续费**: 计算好手续费避免亏损
6. **金额限制**: 合理设置最小/最大支付金额
7. **超时处理**: 设置合理的支付超时时间
8. **汇率更新**: 加密货币需要实时汇率
9. **证书更新**: 定期更新支付证书
10. **备用渠道**: 配置多个支付方式提高可用性
</div>
+468
View File
@@ -0,0 +1,468 @@
# 文档管理
文档管理模块用于创建和维护帮助文档、知识库,为用户提供自助服务支持。
## 功能概述
### 文档列表
查看和管理所有文档:
- **文档标题**: 文档名称
- **文档分类**: 所属分类
- **文档状态**: 草稿/已发布/已下线
- **作者**: 文档创建者
- **创建时间**: 文档创建日期
- **更新时间**: 最后修改时间
- **浏览量**: 文档查看次数
- **评价**: 用户评分和评价
### 创建文档
创建新的帮助文档:
#### 基本信息
- **文档标题**: 清晰明确的标题
- **文档分类**: 选择所属分类
- **文档标签**: 添加关键词标签
- **文档摘要**: 简短内容摘要
#### 文档内容
- **富文本编辑**: 所见即所得编辑器
- **Markdown支持**: 支持Markdown格式
- **代码高亮**: 代码块语法高亮
- **图片上传**: 插入图片和截图
- **视频嵌入**: 嵌入视频教程
- **表格支持**: 插入表格数据
#### 文档设置
- **访问权限**: 公开/仅会员/指定用户组
- **显示顺序**: 设置显示优先级
- **相关文档**: 关联相关文档
- **SEO设置**: 设置SEO关键词
### 编辑文档
修改已有文档:
- 更新文档内容
- 优化文档结构
- 添加新的信息
- 修正错误内容
::: tip 提示
文档支持版本控制,可查看历史版本并恢复。
:::
### 删除文档
删除不需要的文档:
- **软删除**: 下线但保留数据
- **硬删除**: 彻底删除文档
- 保留浏览记录用于统计
## 文档分类
### 新手入门
帮助新用户快速上手:
**内容包括**:
- 注册账户
- 首次使用
- 基础配置
- 常见问题
### 使用教程
详细功能使用指南:
**内容包括**:
- 功能说明
- 操作步骤
- 配置方法
- 最佳实践
### 常见问题
FAQ问答:
**内容包括**:
- 高频问题
- 快速解答
- 问题排查
- 解决方案
### 技术文档
技术相关文档:
**内容包括**:
- API文档
- 协议说明
- 技术参数
- 开发指南
### 政策条款
法律相关文档:
**内容包括**:
- 服务协议
- 隐私政策
- 使用条款
- 退款政策
## 文档组织
### 分类管理
管理文档分类:
- **创建分类**: 新建文档分类
- **编辑分类**: 修改分类信息
- **排序**: 调整分类顺序
- **删除分类**: 删除空分类
### 标签管理
管理文档标签:
- **添加标签**: 创建新标签
- **编辑标签**: 修改标签名称
- **合并标签**: 合并相似标签
- **删除标签**: 删除无用标签
### 目录结构
组织文档目录:
- **多级目录**: 支持多级分类
- **树形结构**: 清晰的层级关系
- **拖拽排序**: 拖拽调整顺序
- **快速导航**: 目录树快速跳转
## 文档编辑
### 富文本编辑器
强大的编辑功能:
- **格式化**: 文字格式化
- **列表**: 有序/无序列表
- **引用**: 引用块
- **代码**: 代码块
- **链接**: 超链接
- **图片**: 图片插入
- **表格**: 表格编辑
- **视频**: 视频嵌入
### Markdown编辑
支持Markdown语法:
```markdown
# 标题
## 二级标题
- 列表项
- 列表项
**粗体** *斜体*
[链接](url)
\`代码\`
\`\`\`language
代码块
\`\`\`
```
### 版本控制
文档版本管理:
- **自动保存**: 编辑时自动保存草稿
- **版本记录**: 记录每次修改
- **版本对比**: 对比不同版本
- **版本回滚**: 恢复到历史版本
## 文档发布
### 发布设置
配置文档发布:
- **立即发布**: 立即向用户展示
- **定时发布**: 设置发布时间
- **草稿保存**: 保存为草稿
- **预览**: 发布前预览效果
### 访问控制
控制文档访问权限:
- **公开文档**: 所有人可访问
- **会员文档**: 仅会员可看
- **VIP文档**: 仅VIP可看
- **内部文档**: 仅内部人员
### 多语言支持
多语言文档:
- **语言版本**: 创建不同语言版本
- **语言切换**: 用户切换语言
- **翻译管理**: 管理翻译版本
- **同步更新**: 同步更新各语言版本
## 文档搜索
### 搜索功能
帮助用户快速找到文档:
- **全文搜索**: 搜索文档内容
- **标题搜索**: 按标题查找
- **标签搜索**: 按标签筛选
- **分类筛选**: 按分类过滤
- **搜索建议**: 智能搜索建议
### 搜索优化
优化搜索体验:
- **搜索排序**: 按相关度排序
- **高亮显示**: 高亮匹配关键词
- **搜索历史**: 记录搜索历史
- **热门搜索**: 展示热门搜索
## 文档互动
### 用户评价
收集用户反馈:
- **有用/无用**: 简单评价
- **评分**: 星级评分
- **评论**: 文字评论
- **改进建议**: 收集改进意见
### 文档反馈
用户反馈问题:
- **报告错误**: 报告文档错误
- **提出建议**: 提出改进建议
- **请求更新**: 请求更新内容
- **在线咨询**: 直接咨询客服
### 社交分享
分享文档:
- **分享链接**: 生成分享链接
- **社交媒体**: 分享到社交平台
- **二维码**: 生成文档二维码
- **嵌入代码**: 嵌入到其他网站
## 文档统计
### 浏览统计
统计文档浏览:
- **浏览量**: 文档查看次数
- **独立访客**: 独立用户数
- **浏览趋势**: 浏览量变化趋势
- **热门文档**: 最受欢迎的文档
### 用户行为
分析用户行为:
- **阅读时长**: 平均阅读时长
- **跳出率**: 快速离开的比例
- **搜索关键词**: 用户搜索内容
- **点击路径**: 用户访问路径
### 效果评估
评估文档效果:
- **有用率**: 用户觉得有用的比例
- **解决率**: 解决问题的比例
- **工单减少**: 相关工单减少情况
- **用户满意度**: 整体满意度
## 知识库
### 知识库结构
构建系统化知识库:
- **产品知识**: 产品功能和使用
- **技术知识**: 技术原理和方法
- **业务知识**: 业务流程和规范
- **问题知识**: 常见问题和解决方案
### 知识沉淀
积累和沉淀知识:
- **工单转化**: 工单问题转为文档
- **经验总结**: 总结典型案例
- **最佳实践**: 记录最佳实践
- **专家贡献**: 专家分享经验
### 知识更新
保持知识库更新:
- **定期审查**: 定期审查文档
- **及时更新**: 及时更新内容
- **废弃标记**: 标记过时内容
- **版本管理**: 管理文档版本
## 文档模板
### 常用模板
预设文档模板:
- **教程模板**: 操作教程格式
- **FAQ模板**: 问答格式
- **故障排查模板**: 排查步骤格式
- **API文档模板**: API文档格式
### 自定义模板
创建自定义模板:
- 设计文档结构
- 定义内容格式
- 保存为模板
- 重复使用
## 协作功能
### 多人协作
团队协作编辑:
- **权限管理**: 分配编辑权限
- **协同编辑**: 多人同时编辑
- **评论讨论**: 添加评论讨论
- **审核流程**: 文档审核流程
### 审核发布
文档审核机制:
1. **创建草稿**: 编辑文档内容
2. **提交审核**: 提交给审核人
3. **审核**: 审核人员审核
4. **发布**: 审核通过后发布
5. **监控**: 发布后效果监控
## 最佳实践
### 内容编写
- 标题清晰明确
- 内容准确详细
- 步骤清晰易懂
- 配图辅助说明
- 定期更新维护
### 组织结构
- 合理规划分类
- 清晰的层级结构
- 统一的命名规范
- 完善的索引体系
### 用户体验
- 简洁的界面设计
- 快速的搜索功能
- 便捷的导航系统
- 友好的移动体验
### 持续优化
- 收集用户反馈
- 分析使用数据
- 优化文档内容
- 完善知识体系
## 文档示例
### 新手入门示例
**标题**: 如何开始使用
**内容结构**:
1. 注册账户
2. 选择套餐
3. 配置使用
4. 常见问题
### 使用教程示例
**标题**: XX功能使用教程
**内容结构**:
1. 功能介绍
2. 使用场景
3. 操作步骤
4. 注意事项
5. 常见问题
### FAQ示例
**标题**: 连接问题FAQ
**内容结构**:
- Q: 无法连接怎么办?
- A: 详细解决步骤...
## 常见问题
### 文档无法保存
检查:
1. 网络连接是否正常
2. 是否有编辑权限
3. 内容是否过大
4. 浏览器是否兼容
### 搜索找不到文档
可能原因:
1. 文档未发布
2. 访问权限不足
3. 关键词不匹配
4. 搜索索引未更新
### 文档格式错乱
解决方法:
1. 使用标准格式
2. 清理复制格式
3. 使用模板
4. 检查HTML代码
## 下一步
- [工单管理](/zh/admin/users-support/tickets) - 处理用户问题
- [用户管理](/zh/admin/users-support/users) - 分析用户需求
- [系统配置](/zh/admin/system/config) - 配置文档系统
+479
View File
@@ -0,0 +1,479 @@
# 工单管理
工单管理模块用于处理用户提交的各类问题和请求,提供高效的客户支持服务。
## 功能概述
### 工单列表
查看和管理所有工单:
- **工单编号**: 唯一工单ID
- **工单标题**: 问题简述
- **工单类型**: 技术支持/账户问题/投诉建议
- **优先级**: 紧急/高/中/低
- **状态**: 待处理/处理中/已解决/已关闭
- **提交用户**: 工单提交者
- **负责人**: 工单处理人员
- **创建时间**: 工单提交时间
- **更新时间**: 最后更新时间
- **响应时间**: 首次响应时长
- **解决时间**: 问题解决时长
### 工单详情
查看工单完整信息:
- **基本信息**: 标题、类型、优先级
- **工单内容**: 详细问题描述
- **附件**: 用户上传的截图、文件
- **沟通记录**: 完整的对话历史
- **处理记录**: 工单流转记录
- **用户信息**: 提交用户的详细信息
- **关联订单**: 相关订单信息
## 工单类型
### 技术支持
技术相关问题:
**常见问题**:
- 连接问题
- 配置问题
- 性能问题
- 兼容性问题
- 使用教程
**处理要点**:
- 快速诊断问题
- 提供解决方案
- 必要时远程协助
- 跟进直到解决
### 账户问题
账户相关问题:
**常见问题**:
- 登录问题
- 密码重置
- 账户安全
- 信息修改
- 账户注销
**处理要点**:
- 验证用户身份
- 保护账户安全
- 及时处理请求
- 记录操作日志
### 订单问题
订单相关问题:
**常见问题**:
- 订单查询
- 支付问题
- 退款申请
- 发票开具
- 订单修改
**处理要点**:
- 核实订单信息
- 按流程处理
- 及时反馈进度
- 确保用户满意
### 产品咨询
产品相关咨询:
**常见问题**:
- 产品功能
- 套餐选择
- 使用建议
- 升级方案
- 价格政策
**处理要点**:
- 专业解答问题
- 推荐合适方案
- 提供详细资料
- 促进转化购买
### 投诉建议
用户反馈:
**常见内容**:
- 服务投诉
- 产品建议
- 功能需求
- 体验反馈
**处理要点**:
- 认真倾听
- 及时响应
- 妥善处理
- 跟踪改进
## 工单处理流程
### 工单创建
用户提交工单:
1. **选择类型**: 选择工单类型
2. **填写标题**: 简要描述问题
3. **详细描述**: 详细说明情况
4. **上传附件**: 上传相关截图
5. **提交工单**: 提交等待处理
### 工单分配
系统自动或手动分配:
**自动分配**:
- 根据工单类型自动分配
- 按负责人工作量分配
- 根据专业领域分配
**手动分配**:
- 管理员手动指派
- 支持人员主动领取
- 根据优先级分配
### 工单处理
处理人员处理工单:
1. **接收工单**: 查看工单详情
2. **分析问题**: 了解问题情况
3. **沟通确认**: 与用户沟通
4. **提供方案**: 给出解决方案
5. **执行操作**: 执行必要操作
6. **确认解决**: 确认问题解决
7. **关闭工单**: 关闭已解决工单
### 工单升级
无法解决时升级:
- **一级升级**: 提交给高级支持
- **二级升级**: 提交给技术团队
- **紧急升级**: 提交给管理层
- **跨部门协作**: 多部门协同处理
### 工单关闭
完成处理后关闭:
- **已解决**: 问题成功解决
- **用户确认**: 用户确认满意
- **自动关闭**: 超时自动关闭
- **无需处理**: 无效工单关闭
## 工单状态管理
### 待处理
新提交的工单:
- 等待分配处理人员
- 需要尽快响应
- 按优先级排序
- SLA计时开始
### 处理中
正在处理的工单:
- 处理人员已接手
- 正在沟通解决
- 可能需要时间
- 定期更新进度
### 待用户
等待用户反馈:
- 需要用户提供信息
- 等待用户确认
- 暂停SLA计时
- 超时自动提醒
### 已解决
问题已解决:
- 解决方案已提供
- 用户问题已解决
- 等待用户确认
- 可能重新打开
### 已关闭
工单已关闭:
- 处理流程结束
- 归档保存记录
- 可查看历史记录
- 不可再次修改
## 优先级管理
### 紧急
最高优先级:
**适用场景**:
- 服务完全中断
- 安全漏洞
- 数据丢失
- 重大bug
**处理要求**:
- 立即响应
- 优先处理
- 快速解决
- 全程跟踪
### 高
高优先级:
**适用场景**:
- 核心功能故障
- 影响多个用户
- 重要客户问题
**处理要求**:
- 2小时内响应
- 当日解决
- 及时反馈
### 中
普通优先级:
**适用场景**:
- 一般功能问题
- 使用咨询
- 常规请求
**处理要求**:
- 24小时内响应
- 3天内解决
- 按流程处理
### 低
低优先级:
**适用场景**:
- 功能建议
- 体验优化
- 文档问题
**处理要求**:
- 3天内响应
- 合理安排处理
- 计划解决
## 工单沟通
### 回复工单
与用户沟通:
- **公开回复**: 用户可见的回复
- **内部备注**: 内部沟通备注
- **附件**: 上传文件、截图
- **模板**: 使用快捷回复模板
### 快捷回复
预设回复模板:
- 常见问题解答
- 标准回复话术
- 操作指引
- 一键发送
### 沟通技巧
有效沟通:
- 语气友好专业
- 回复清晰明确
- 提供具体方案
- 及时跟进反馈
- 确认用户满意
## 工单统计
### 工单数量
统计工单数量:
- **总工单量**: 所有工单数量
- **新增工单**: 每日新增数量
- **待处理**: 待处理工单数
- **已解决**: 已解决工单数
- **趋势分析**: 工单量变化趋势
### 处理效率
分析处理效率:
- **平均响应时间**: 首次响应时长
- **平均解决时间**: 问题解决时长
- **解决率**: 成功解决比例
- **超时率**: SLA超时比例
### 人员绩效
统计人员表现:
- **处理数量**: 每人处理工单数
- **解决率**: 成功解决比例
- **用户满意度**: 用户评分
- **响应速度**: 平均响应时长
### 问题分析
分析常见问题:
- **问题分类**: 各类问题占比
- **高频问题**: 最常见的问题
- **难点问题**: 难以解决的问题
- **改进建议**: 问题改进方向
## SLA管理
### SLA标准
服务水平协议:
**响应时间**:
- 紧急: 15分钟内
- 高: 2小时内
- 中: 24小时内
- 低: 3天内
**解决时间**:
- 紧急: 4小时内
- 高: 1天内
- 中: 3天内
- 低: 7天内
### SLA监控
监控SLA达成:
- 实时监控SLA状态
- 预警即将超时工单
- 统计SLA达成率
- 分析超时原因
## 工单自动化
### 自动分配
自动分配工单:
- 按类型自动分配
- 负载均衡分配
- 轮询分配
- 智能分配
### 自动回复
自动回复常见问题:
- 常见问题自动答复
- 接收确认自动回复
- 状态变更自动通知
### 自动升级
自动升级超时工单:
- 超时自动升级
- 紧急问题自动升级
- 重复问题自动升级
### 自动关闭
自动关闭工单:
- 已解决超时自动关闭
- 无响应自动关闭
- 重复工单自动合并
## 知识库集成
### 常见问题
建立FAQ知识库:
- 整理常见问题
- 提供标准答案
- 用户自助查询
- 减少工单量
### 解决方案库
沉淀解决方案:
- 记录典型案例
- 总结解决方法
- 团队知识共享
- 提高处理效率
## 最佳实践
- 及时响应用户工单
- 准确理解用户问题
- 提供专业的解决方案
- 保持友好的沟通态度
- 跟进直到问题解决
- 总结经验完善知识库
- 定期分析工单数据
- 持续优化服务流程
## 常见问题
### 工单响应慢
可能原因:
1. 工单量过大
2. 人手不足
3. 分配不合理
4. 优先级设置问题
### 工单处理质量差
改进方法:
1. 加强培训
2. 完善知识库
3. 优化流程
4. 建立考核机制
### 用户满意度低
提升方法:
1. 提高响应速度
2. 改善服务态度
3. 提升解决能力
4. 加强沟通反馈
## 下一步
- [用户管理](/zh/admin/users-support/users) - 查看用户信息
- [文档管理](/zh/admin/users-support/documents) - 完善帮助文档
- [系统配置](/zh/admin/system/config) - 配置工单系统
+335
View File
@@ -0,0 +1,335 @@
# 用户管理
用户管理模块用于管理系统中的所有用户账户,是系统运营的基础模块。
## 功能概述
### 用户列表
查看和管理所有用户:
- **用户信息**: 用户名、邮箱、手机号
- **用户组**: VIP/普通/试用等
- **账户状态**: 正常/已禁用/已过期
- **余额**: 账户余额
- **流量**: 已用流量/总流量
- **有效期**: 订阅到期时间
- **注册时间**: 账户注册日期
- **最后登录**: 最后登录时间
### 用户筛选
快速查找用户:
- **按状态**: 正常/禁用/过期
- **按用户组**: VIP/普通用户
- **按注册时间**: 时间范围筛选
- **按流量**: 按流量使用情况筛选
- **按设备**: 在线/离线用户
- **搜索**: 用户名/邮箱/手机号搜索
### 添加用户
手动创建新用户账户:
#### 基本信息
- **用户名**: 登录用户名(唯一)
- **邮箱**: 用户邮箱地址
- **手机号**: 联系电话(可选)
- **密码**: 初始密码
#### 订阅信息
- **用户组**: 选择用户组
- **流量配额**: 设置流量额度
- **有效期**: 设置到期时间
- **速度限制**: 设置速率上限
- **设备限制**: 同时在线设备数
#### 账户设置
- **余额**: 初始账户余额
- **积分**: 初始积分
- **推广码**: 自定义邀请码
- **备注**: 用户备注信息
### 编辑用户
修改用户信息和配置:
- **更新基本信息**: 修改邮箱、手机等
- **调整订阅**: 修改流量、有效期
- **余额操作**: 充值或扣减余额
- **重置密码**: 为用户重置密码
- **更改用户组**: 升级或降级用户组
### 删除用户
删除用户账户:
- **软删除**: 标记删除但保留数据
- **硬删除**: 彻底删除用户及相关数据
- **批量删除**: 批量删除多个用户
::: warning 警告
删除用户会清除其所有订阅和使用记录,请谨慎操作。
:::
## 用户操作
### 禁用/启用
控制用户账户状态:
- **禁用账户**: 暂停用户服务访问
- **启用账户**: 恢复用户正常使用
- **禁用原因**: 记录禁用理由
- **自动解封**: 设置自动解封时间
### 流量操作
管理用户流量:
- **增加流量**: 为用户添加流量
- **扣减流量**: 扣除用户流量
- **重置流量**: 重置流量到初始值
- **流量记录**: 查看流量变更历史
### 时长操作
管理用户订阅时长:
- **延长时间**: 延长订阅有效期
- **缩短时间**: 减少订阅时长
- **设置到期**: 设置具体到期日期
- **永久订阅**: 设为永不过期
### 余额操作
管理用户余额:
- **充值**: 为用户账户充值
- **扣款**: 从账户扣除余额
- **转账**: 用户间余额转移
- **余额日志**: 查看余额变动记录
## 用户详情
### 基本信息
查看用户完整信息:
- 账户基本资料
- 订阅状态和配额
- 余额和积分
- 推广信息
### 订阅信息
查看用户订阅详情:
- 当前订阅套餐
- 流量使用情况
- 剩余有效期
- 节点访问权限
### 使用统计
分析用户使用数据:
- **流量统计**: 每日/每周/每月流量
- **在线时长**: 使用时长统计
- **节点偏好**: 常用节点分析
- **设备统计**: 使用的设备数量
### 订单记录
查看用户购买记录:
- 历史订单列表
- 订单金额统计
- 购买频率分析
- 续费情况
### 登录记录
查看用户登录历史:
- 登录时间
- 登录IP
- 登录设备
- 登录地点
### 在线设备
查看用户在线设备:
- 设备类型和系统
- 连接的节点
- 在线时长
- 强制下线功能
## 用户分组
### 用户组管理
创建和管理用户组:
- **组名称**: 用户组显示名称
- **组权限**: 节点访问权限
- **流量配额**: 组默认流量
- **速度限制**: 组速率上限
- **其他限制**: 设备数、并发数等
### 批量分组
批量设置用户组:
- 选择多个用户
- 指定目标用户组
- 批量更新用户组
- 保留或重置配额
## 用户搜索
### 高级搜索
使用多条件搜索用户:
- **组合条件**: 多个条件组合搜索
- **范围搜索**: 流量、余额范围
- **时间范围**: 注册、到期时间
- **自定义字段**: 备注等字段搜索
### 保存搜索
保存常用搜索条件:
- 快速应用搜索条件
- 管理已保存的搜索
- 共享搜索条件
## 用户导出
导出用户数据:
### 导出选项
- **导出格式**: Excel/CSV
- **导出字段**: 自定义导出字段
- **数据范围**: 全部或筛选结果
- **数据脱敏**: 敏感信息处理
### 批量导入
批量导入用户:
- 下载导入模板
- 填写用户数据
- 上传Excel文件
- 验证并导入
## 用户通知
### 发送通知
向用户发送消息:
- **站内信**: 系统消息通知
- **邮件**: 发送邮件通知
- **短信**: 发送短信通知
- **批量通知**: 批量发送消息
### 通知模板
管理通知模板:
- 创建消息模板
- 使用变量替换
- 多语言模板
- 定时发送
## 用户分析
### 用户画像
分析用户特征:
- **基础属性**: 年龄、地区分布
- **行为特征**: 使用习惯、活跃度
- **消费特征**: 客单价、复购率
- **流失风险**: 流失预警分析
### 用户价值
评估用户价值:
- **RFM分析**: 最近购买、频率、金额
- **生命周期**: 用户生命周期阶段
- **贡献度**: 收入贡献排名
- **活跃度**: 使用活跃程度
## 用户安全
### 安全设置
增强用户账户安全:
- **强制2FA**: 要求两步验证
- **IP白名单**: 限制登录IP
- **设备管理**: 管理授权设备
- **异常检测**: 检测异常登录
### 风控措施
防范恶意用户:
- **行为监控**: 监控异常行为
- **风险评分**: 用户风险等级
- **自动封禁**: 触发规则自动禁用
- **黑名单**: 永久拉黑用户
## 最佳实践
- 定期审查用户账户状态
- 及时处理到期用户续费
- 关注高价值用户需求
- 分析流失用户原因
- 保护用户隐私数据
- 建立用户分级服务体系
## 常见问题
### 用户无法登录
检查以下几点:
1. 账户是否被禁用
2. 密码是否正确
3. 是否触发了安全限制
4. 系统服务是否正常
### 流量异常
可能的原因:
1. 统计服务故障
2. 节点上报异常
3. 用户设备问题
4. 恶意使用
### 批量操作失败
检查:
1. 选择的用户数量
2. 操作权限
3. 数据格式是否正确
4. 系统资源是否充足
## 下一步
- [工单管理](/zh/admin/users-support/tickets) - 处理用户工单
- [订单管理](/zh/admin/commerce/orders) - 查看用户订单
- [登录日志](/zh/admin/logs/login) - 查看登录记录
+144
View File
@@ -0,0 +1,144 @@
<div v-pre>
# 文档管理
创建和管理帮助文档,支持Markdown格式和标签分类。
## 表格列说明
### 显示 (Show)
开关按钮,控制文档是否在前台显示。
### 标题 (Title)
文档标题。
### 标签 (Tags)
文档分类标签,多个标签用逗号分隔。
### 更新时间 (Updated At)
最后更新时间。
## 表格操作
### 编辑
打开侧边抽屉表单修改文档。
### 删除
删除文档(需确认),不可恢复。
### 批量删除
选中多个文档后批量删除。
## 文档表单
### 标题 (必填)
文档标题。
### 标签 (必填)
文档分类标签,支持多个标签:
- 常用标签: 新手指南、使用教程、常见问题、技术支持
- 输入标签按回车添加
- 点击标签删除
### 内容 (必填)
文档正文,支持Markdown格式:
- 标题: # ## ### ####
- 粗体: **文字**
- 斜体: *文字*
- 代码块: ```语言
- 图片: ![alt](url)
- 链接: [文字](url)
- 列表: - 或 1.
- 引用: >
- 表格: | 列1 | 列2 |
## 筛选功能
### 关键词搜索
输入标题搜索文档。
### 标签筛选
输入标签查找对应分类文档。
## 使用场景
### 场景一: 创建新手指南
**表单配置**:
- 标题: 快速入门指南
- 标签: 新手指南, 使用教程
- 内容:
```markdown
# 快速入门指南
## 1. 注册账号
访问网站注册...
## 2. 购买套餐
进入订阅页面...
## 3. 下载客户端
支持的平台:
- Windows
- macOS
- Android
- iOS
```
- 显示: 开启
### 场景二: 创建FAQ
**表单配置**:
- 标题: 常见问题解答
- 标签: 常见问题, FAQ
- 内容:
```markdown
# 常见问题
## 如何重置密码?
答: 点击登录页面的"忘记密码"...
## 如何查看流量使用?
答: 登录后在个人中心查看...
## 订阅过期后怎么办?
答: 可以续费或购买新套餐...
```
- 显示: 开启
### 场景三: 创建平台教程
**表单配置**:
- 标题: Windows客户端使用教程
- 标签: 使用教程, Windows
- 内容:
```markdown
# Windows客户端教程
## 下载安装
1. 下载客户端
2. 运行安装程序
3. 完成安装
## 配置订阅
1. 复制订阅链接
2. 打开客户端
3. 导入订阅
## 连接服务
选择节点后点击连接即可
```
- 显示: 开启
## 重要提示
1. **Markdown支持**: 内容支持完整Markdown语法
2. **标签管理**: 合理使用标签便于用户查找
3. **显示控制**: 可先创建后再开启显示
4. **图片链接**: 图片使用外链地址
5. **代码高亮**: 代码块支持语法高亮
6. **批量操作**: 可批量删除过时文档
7. **搜索优化**: 标题和标签会被搜索索引
8. **更新提示**: 修改后更新时间会变化
</div>
+103
View File
@@ -0,0 +1,103 @@
<div v-pre>
# 工单管理
查看和处理用户提交的工单,支持回复和关闭工单。
## 表格列说明
### 标题 (Title)
工单标题。
### 用户 (User)
提交工单的用户。
### 状态 (Status)
工单当前状态(带颜色指示器):
- **待跟进** (红色) - 新提交,等待管理员处理
- **待回复** (黄色) - 管理员已回复,等待用户
- **已解决** (绿色) - 问题已解决
- **已关闭** (灰色) - 工单已关闭
### 更新时间 (Updated At)
最后更新时间。
## 表格操作
### 回复 (Reply)
打开工单对话抽屉:
- 查看工单完整对话
- 输入回复内容
- 发送回复后状态变为"待回复"
### 关闭 (Close)
关闭工单(需确认):
- 状态变为"已关闭"
- 关闭后无法再操作
- 用户可以再次查看
### 查看 (Check)
查看已关闭工单的对话记录(只读)。
## 工单对话
打开工单后显示对话界面:
**对话消息**:
- 工单描述(用户首条消息)
- 所有跟进记录
- 显示时间戳
- 区分用户/管理员消息
**回复工单**:
1. 在底部输入框输入回复
2. 点击发送按钮
3. 消息立即显示
4. 状态自动更新为"待回复"
**自动刷新**:
- 每5秒自动刷新对话
- 获取最新消息
## 筛选功能
### 状态筛选
选择"已关闭"查看关闭的工单。
## 使用场景
### 场景一: 处理新工单
1. 查看"待跟进"状态工单
2. 点击"回复"按钮
3. 阅读用户问题
4. 输入解决方案
5. 发送回复
6. 用户收到通知
### 场景二: 解决问题后关闭
1. 打开工单对话
2. 确认问题已解决
3. 点击"关闭"按钮
4. 确认关闭操作
5. 工单标记为已关闭
### 场景三: 多轮对话
1. 打开工单
2. 查看历史对话
3. 回复新消息
4. 持续跟进直到解决
## 重要提示
1. **及时回复**: 待跟进工单应尽快处理
2. **对话记录**: 所有消息永久保存
3. **自动刷新**: 对话每5秒自动更新
4. **关闭限制**: 关闭后无法再回复
5. **状态变化**: 回复后自动变为"待回复"
6. **用户通知**: 回复后用户会收到通知
7. **查看已关闭**: 已关闭工单可以查看但不能回复
</div>
+146
View File
@@ -0,0 +1,146 @@
<div v-pre>
# 用户管理
管理系统中的所有用户,包括用户信息编辑、订阅管理、余额管理等功能。
## 表格列说明
### 启用 (Enable)
开关按钮,控制用户账号是否可用。禁用后用户无法登录。
### ID
用户唯一标识ID。
### 用户名 (Username)
显示认证方式(EMAIL/GITHUB等)和认证标识(邮箱/用户名)。认证标识后有勾标记表示已验证。
### 余额 (Balance)
用户账户余额。
### 赠送金额 (Gift Amount)
系统赠送的金额。
### 佣金 (Commission)
用户通过邀请获得的佣金。
### 邀请码 (Invite Code)
用户的专属邀请码。
### 推荐人 (Referer)
邀请该用户注册的推荐人。
### 注册时间 (Created At)
用户注册时间。
## 表格操作
### 编辑 (Profile)
打开用户资料侧边抽屉,包含三个标签页:
**基础信息 (Basic Info)**:
- 启用状态
- 余额
- 赠送金额
- 佣金
- 邀请码
- 推荐人ID
**通知设置 (Notify Settings)**:
- 余额变动通知
- 登录通知
- 订阅通知
- 交易通知
**认证方式 (Auth Methods)**:
- 查看和管理用户登录方式
- 邮箱、GitHub等
### 订阅 (Subscription)
打开订阅管理侧边抽屉,查看和管理用户订阅:
- 订阅列表
- 订阅状态
- 到期时间
- 流量使用
- 操作订阅
### 删除
删除用户(需确认),不可恢复。
### 更多 (More)
下拉菜单,快速跳转到:
- 订单列表
- 登录日志
- 余额日志
- 佣金日志
- 赠送日志
## 筛选功能
### 订阅筛选
选择产品套餐,查看购买该套餐的用户。
### 关键词搜索
输入邮箱、用户名等搜索用户。
### 用户ID筛选
直接输入用户ID精确查找。
### 订阅ID筛选
输入订阅ID查找对应用户。
## 创建用户
点击"创建"按钮打开表单:
**必填字段**:
- 认证类型: EMAIL/GITHUB等
- 认证标识: 邮箱地址或用户名
- 密码: 用户登录密码
**可选字段**:
- 余额: 初始余额
- 推荐人ID: 绑定推荐关系
## 使用场景
### 场景一: 禁用违规用户
1. 找到目标用户
2. 关闭"启用"开关
3. 用户立即无法登录
### 场景二: 充值用户余额
1. 点击"编辑"按钮
2. 进入"基础信息"标签
3. 修改余额金额
4. 保存更改
### 场景三: 查看用户订阅
1. 点击"订阅"按钮
2. 查看用户所有订阅
3. 可操作订阅(续期、重置流量等)
### 场景四: 追踪用户行为
1. 点击"更多"按钮
2. 选择对应日志:
- 登录日志: 查看登录记录
- 余额日志: 查看余额变动
- 佣金日志: 查看佣金收益
- 赠送日志: 查看系统赠送
## 重要提示
1. **启用控制**: 禁用用户会立即踢出登录
2. **余额修改**: 直接修改余额,注意金额单位
3. **删除用户**: 操作不可恢复,删除前确认
4. **订阅管理**: 可以在用户订阅页面直接操作
5. **日志追踪**: 通过"更多"菜单快速查看用户各类日志
6. **推荐关系**: 创建用户时可指定推荐人
7. **批量操作**: 目前不支持批量操作
8. **邀请码**: 每个用户有唯一邀请码
</div>
+13
View File
@@ -0,0 +1,13 @@
---
title: 管理端服务 API
outline: false
aside: false
---
# 管理端服务
涵盖后台仪表盘、运维管理、商务管理、用户支持、日志分析等核心接口。
<ClientOnly>
<ScalarIframe spec-url="https://raw.githubusercontent.com/perfect-panel/ppanel-docs/refs/heads/main/public/swagger/admin.json" title="管理端服务" />
</ClientOnly>
+13
View File
@@ -0,0 +1,13 @@
---
title: 通用服务 API
outline: false
aside: false
---
# 通用服务
提供认证、工具等可复用接口,供用户端与管理端共同调用。Schema 直接来源于 GitHub 仓库,确保与后端版本保持一致。
<ClientOnly>
<ScalarIframe spec-url="https://raw.githubusercontent.com/perfect-panel/ppanel-docs/refs/heads/main/public/swagger/common.json" title="通用服务" />
</ClientOnly>
+13
View File
@@ -0,0 +1,13 @@
---
title: 网关 API
outline: false
aside: false
---
# 网关
网关接口围绕服务注册、版本发现、心跳和更新编排展开,节点通过共享的 `service_name`/`secret` 认证方式汇报状态并获取控制面的滚动指令。
<ClientOnly>
<ScalarIframe spec-url="https://raw.githubusercontent.com/perfect-panel/ppanel-docs/refs/heads/main/public/swagger/gateway.json" title="网关" />
</ClientOnly>
+16
View File
@@ -0,0 +1,16 @@
---
title: API 文档
outline: false
aside: false
---
# API 文档
本页通过 Scalar(以 iframe 嵌入方式)渲染存放在 [`public/swagger`](https://github.com/perfect-panel/ppanel-docs/tree/main/public/swagger) 目录下的 OpenAPI 文件。每个 JSON Schema 都有独立页面,方便在侧边栏快速切换:
- [通用服务](./common) — 认证、工具等可复用接口。
- [用户服务](./user) — 用户门户、订阅、订单、工单等接口。
- [管理端服务](./admin) — 仪表盘、运维、商务、日志等后台接口。
- [网关](./gateway) — 提供版本检查、心跳、注册与更新编排等节点生命周期接口。
请在左侧选择具体服务进入交互式 API 文档。
+13
View File
@@ -0,0 +1,13 @@
---
title: 用户服务 API
outline: false
aside: false
---
# 用户服务
覆盖订阅、订单、钱包、工单、资料等用户门户相关接口。
<ClientOnly>
<ScalarIframe spec-url="https://raw.githubusercontent.com/perfect-panel/ppanel-docs/refs/heads/main/public/swagger/user.json" title="用户服务" />
</ClientOnly>
+387
View File
@@ -0,0 +1,387 @@
# 贡献者
感谢所有为 PPanel 项目做出贡献的开发者!
## 项目贡献者
PPanel 是一个开源项目,我们欢迎并感谢所有形式的贡献,包括但不限于:
- 💻 代码贡献
- 📝 文档改进
- 🐛 Bug 报告
- 💡 功能建议
- 🌍 翻译工作
- ⭐ Star 和推广
## 核心贡献者
<script setup>
import { ref, onMounted } from 'vue'
const backendContributors = ref([])
const frontendContributors = ref([])
const backendLoading = ref(true)
const frontendLoading = ref(true)
onMounted(async () => {
// 获取后端相关仓库的贡献者
try {
const repos = ['server', 'ppanel', 'ppanel-node', 'subscription-template']
const contributorsMap = new Map()
for (const repo of repos) {
const response = await fetch(`https://api.github.com/repos/perfect-panel/${repo}/contributors`)
if (response.ok) {
const contributors = await response.json()
contributors.forEach(contributor => {
if (!contributorsMap.has(contributor.login)) {
contributorsMap.set(contributor.login, {
login: contributor.login,
avatar_url: contributor.avatar_url,
html_url: contributor.html_url,
contributions: contributor.contributions
})
} else {
const existing = contributorsMap.get(contributor.login)
existing.contributions += contributor.contributions
}
})
}
}
backendContributors.value = Array.from(contributorsMap.values())
.sort((a, b) => b.contributions - a.contributions)
} catch (error) {
console.error('Failed to fetch backend contributors:', error)
} finally {
backendLoading.value = false
}
// 获取前端相关仓库的贡献者
try {
const repos = ['frontend', 'ppanel-web', 'ppanel-docs']
const contributorsMap = new Map()
for (const repo of repos) {
const response = await fetch(`https://api.github.com/repos/perfect-panel/${repo}/contributors`)
if (response.ok) {
const contributors = await response.json()
contributors.forEach(contributor => {
if (!contributorsMap.has(contributor.login)) {
contributorsMap.set(contributor.login, {
login: contributor.login,
avatar_url: contributor.avatar_url,
html_url: contributor.html_url,
contributions: contributor.contributions
})
} else {
const existing = contributorsMap.get(contributor.login)
existing.contributions += contributor.contributions
}
})
}
}
frontendContributors.value = Array.from(contributorsMap.values())
.sort((a, b) => b.contributions - a.contributions)
} catch (error) {
console.error('Failed to fetch frontend contributors:', error)
} finally {
frontendLoading.value = false
}
})
</script>
### 后端仓库贡献者
<div v-if="backendLoading" class="contributors-loading">
<div class="loading-spinner"></div>
<p>正在加载贡献者信息...</p>
</div>
<div v-else-if="backendContributors.length === 0" class="contributors-empty">
<p>暂无贡献者数据</p>
</div>
<div v-else>
<div class="contributors-grid">
<a
v-for="contributor in backendContributors"
:key="contributor.login"
:href="contributor.html_url"
target="_blank"
rel="noopener noreferrer"
class="contributor-card"
>
<img
:src="contributor.avatar_url"
:alt="contributor.login"
class="contributor-avatar"
loading="lazy"
/>
<div class="contributor-info">
<div class="contributor-name" :title="contributor.login">{{ contributor.login }}</div>
<div class="contributor-contributions">
<svg class="contribution-icon" viewBox="0 0 16 16" width="12" height="12" fill="currentColor">
<path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Z"></path>
</svg>
{{ contributor.contributions }} 次贡献
</div>
</div>
</a>
</div>
</div>
### 前端仓库贡献者
<div v-if="frontendLoading" class="contributors-loading">
<div class="loading-spinner"></div>
<p>正在加载贡献者信息...</p>
</div>
<div v-else-if="frontendContributors.length === 0" class="contributors-empty">
<p>暂无贡献者数据</p>
</div>
<div v-else>
<div class="contributors-grid">
<a
v-for="contributor in frontendContributors"
:key="contributor.login"
:href="contributor.html_url"
target="_blank"
rel="noopener noreferrer"
class="contributor-card"
>
<img
:src="contributor.avatar_url"
:alt="contributor.login"
class="contributor-avatar"
loading="lazy"
/>
<div class="contributor-info">
<div class="contributor-name" :title="contributor.login">{{ contributor.login }}</div>
<div class="contributor-contributions">
<svg class="contribution-icon" viewBox="0 0 16 16" width="12" height="12" fill="currentColor">
<path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Z"></path>
</svg>
{{ contributor.contributions }} 次贡献
</div>
</div>
</a>
</div>
</div>
<style scoped>
.contributors-loading {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 3rem;
color: var(--vp-c-text-2);
}
.loading-spinner {
width: 40px;
height: 40px;
border: 3px solid var(--vp-c-divider);
border-top-color: var(--vp-c-brand);
border-radius: 50%;
animation: spin 0.8s linear infinite;
margin-bottom: 1rem;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.contributors-empty {
text-align: center;
padding: 2rem;
color: var(--vp-c-text-3);
font-style: italic;
}
.contributors-stats {
display: flex;
gap: 1rem;
margin-bottom: 1.5rem;
flex-wrap: wrap;
}
.stat-badge {
display: inline-flex;
align-items: center;
padding: 0.5rem 1rem;
background: var(--vp-c-bg-soft);
border: 1px solid var(--vp-c-divider);
border-radius: 20px;
font-size: 13px;
font-weight: 500;
color: var(--vp-c-text-2);
}
.contributors-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
gap: 1rem;
margin: 1.5rem 0;
}
.contributor-card {
display: flex;
align-items: center;
padding: 1rem;
background: var(--vp-c-bg-soft);
border: 1px solid var(--vp-c-divider);
border-radius: 12px;
text-decoration: none;
color: var(--vp-c-text-1);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.contributor-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 2px;
background: linear-gradient(90deg, var(--vp-c-brand), var(--vp-c-brand-light));
transform: scaleX(0);
transition: transform 0.3s ease;
}
.contributor-card:hover {
border-color: var(--vp-c-brand-light);
transform: translateY(-4px);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}
.contributor-card:hover::before {
transform: scaleX(1);
}
.contributor-avatar {
width: 56px;
height: 56px;
border-radius: 50%;
margin-right: 1rem;
border: 2px solid var(--vp-c-divider);
transition: all 0.3s ease;
flex-shrink: 0;
}
.contributor-card:hover .contributor-avatar {
border-color: var(--vp-c-brand);
transform: scale(1.05);
}
.contributor-info {
flex: 1;
min-width: 0;
}
.contributor-name {
font-weight: 600;
font-size: 15px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-bottom: 0.25rem;
color: var(--vp-c-text-1);
}
.contributor-contributions {
display: flex;
align-items: center;
gap: 0.25rem;
font-size: 13px;
color: var(--vp-c-text-2);
}
.contribution-icon {
opacity: 0.6;
}
@media (max-width: 768px) {
.contributors-grid {
grid-template-columns: 1fr;
}
.contributors-stats {
flex-direction: column;
}
.stat-badge {
width: 100%;
justify-content: center;
}
}
@media (prefers-color-scheme: dark) {
.contributor-card:hover {
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
}
}
</style>
### 报告问题
如果你发现了 Bug 或有功能建议:
1. 在 [GitHub Issues](https://github.com/perfect-panel/frontend/issues) 中搜索是否已有类似问题
2. 如果没有,创建一个新的 Issue
3. 提供详细的信息:
- 问题描述
- 复现步骤
- 预期行为
- 实际行为
- 环境信息(浏览器、操作系统等)
- 截图或错误日志(如果适用)
### 文档贡献
文档同样重要!你可以:
- 修正错别字和语法错误
- 改进现有文档的清晰度
- 添加缺失的文档
- 翻译文档到其他语言
- 添加使用示例和教程
文档源文件位于 `/docs` 目录中。
### 翻译贡献
我们欢迎将 PPanel 翻译成更多语言:
1. 检查 `/docs` 目录下是否已有目标语言的文件夹
2. 如果没有,创建新的语言文件夹(如 `/docs/ja` 为日语)
3. 复制英文或中文版本作为基础
4. 翻译内容
5.`.vitepress/config.mts` 中添加新语言配置
6. 提交 Pull Request
## 社区
加入我们的社区,与其他开发者交流:
- **GitHub Discussions**: [讨论区](https://github.com/perfect-panel/frontend/discussions)
- **GitHub Issues**: [问题追踪](https://github.com/perfect-panel/frontend/issues)
- **Telegram**: [加入群组](https://t.me/PPanelChat)
## 行为准则
我们致力于为所有人提供一个友好、安全和受欢迎的环境。请阅读并遵守我们的 [行为准则](https://github.com/perfect-panel/frontend/blob/main/CODE_OF_CONDUCT.md)。
## 致谢
特别感谢所有为 PPanel 项目做出贡献的开发者、测试者、文档编写者和社区成员。是你们让 PPanel 变得更好!
## 许可证
通过贡献代码,你同意你的贡献将按照项目的 [GNU License](https://github.com/perfect-panel/frontend/blob/main/LICENSE) 许可证发布。
+507
View File
@@ -0,0 +1,507 @@
# 安装部署
本指南将帮助你使用 Docker 在服务器上部署 PPanel。
## 系统要求
### 最低配置
- **操作系统**: Linux (Ubuntu 20.04+, Debian 10+, CentOS 8+)
- **CPU**: 1 核心
- **内存**: 512MB RAM
- **存储**: 1GB 可用磁盘空间
- **Docker**: 20.10+
- **Docker Compose**: 2.0+ (可选,但推荐使用)
### 推荐配置
- **CPU**: 2+ 核心
- **内存**: 2GB+ RAM
- **存储**: 5GB+ 可用磁盘空间
## 前置条件
### 安装 Docker
如果你还没有安装 Docker,请按照官方安装指南进行安装:
**Ubuntu/Debian:**
```bash
# 更新包索引
sudo apt-get update
# 安装必要的依赖包
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
```
**CentOS/RHEL:**
```bash
# 安装 yum-utils
sudo yum install -y yum-utils
# 添加 Docker 仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
```
### 验证安装
```bash
# 查看 Docker 版本
docker --version
# 查看 Docker Compose 版本
docker compose version
# 测试 Docker 安装
sudo docker run hello-world
```
## 快速开始
### 方式一:使用 Docker Run
#### 步骤 1: 拉取镜像
```bash
# 拉取最新版本
docker pull ppanel/ppanel:latest
# 或拉取指定版本
docker pull ppanel/ppanel:v0.1.2
```
#### 步骤 2: 准备配置
创建配置目录并准备配置文件:
```bash
# 创建配置目录
mkdir -p ppanel-config
# 创建配置文件
cat > ppanel-config/ppanel.yaml <<EOF
# PPanel 配置文件
server:
host: 0.0.0.0
port: 8080
database:
type: sqlite
path: /app/data/ppanel.db
# 根据需要添加更多配置
EOF
```
::: tip 提示
详细的配置选项请参考 [配置指南](/zh/guide/configuration)。
:::
#### 步骤 3: 运行容器
```bash
docker run -d \
--name ppanel \
-p 8080:8080 \
-v $(pwd)/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
--restart unless-stopped \
ppanel/ppanel:latest
```
**参数说明:**
- `-d`: 以守护进程模式运行容器(后台运行)
- `--name ppanel`: 设置容器名称
- `-p 8080:8080`: 将容器的 8080 端口映射到宿主机的 8080 端口
- `-v $(pwd)/ppanel-config:/app/etc:ro`: 挂载配置目录(只读)
- `-v ppanel-data:/app/data`: 创建数据卷用于持久化存储
- `--restart unless-stopped`: 容器自动重启(除非手动停止)
#### 步骤 4: 验证运行状态
```bash
# 查看容器状态
docker ps | grep ppanel
# 查看日志
docker logs -f ppanel
# 测试服务是否可访问
curl http://localhost:8080
```
### 方式二:使用 Docker Compose(推荐)
#### 步骤 1: 创建 docker-compose.yml
```yaml
version: '3.8'
services:
ppanel:
image: ppanel/ppanel:latest
container_name: ppanel
ports:
- "8080:8080"
volumes:
- ./ppanel-config:/app/etc:ro
- ppanel-data:/app/data
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
ppanel-data:
driver: local
```
#### 步骤 2: 准备配置
```bash
# 创建配置目录
mkdir -p ppanel-config
# 复制或创建配置文件
# 详细配置请参考配置指南
```
#### 步骤 3: 启动服务
```bash
# 以守护进程模式启动
docker compose up -d
# 查看日志
docker compose logs -f
# 查看状态
docker compose ps
```
## 部署后配置
### 访问应用
安装成功后,你可以通过以下地址访问:
- **用户面板**: `http://your-server-ip:8080`
- **管理后台**: `http://your-server-ip:8080/admin`
::: warning 默认凭据
为了安全起见,首次登录后请立即修改默认管理员密码。
:::
### 配置反向代理(可选)
对于生产环境部署,建议使用 Nginx 或 Caddy 作为反向代理以启用 HTTPS。
**Nginx 示例:**
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
**Caddy 示例:**
```
your-domain.com {
reverse_proxy localhost:8080
}
```
## 容器管理
### 查看日志
```bash
# Docker Run
docker logs -f ppanel
# Docker Compose
docker compose logs -f
```
### 停止容器
```bash
# Docker Run
docker stop ppanel
# Docker Compose
docker compose stop
```
### 重启容器
```bash
# Docker Run
docker restart ppanel
# Docker Compose
docker compose restart
```
### 删除容器
```bash
# Docker Run
docker stop ppanel
docker rm ppanel
# Docker Compose
docker compose down
```
::: warning 数据持久化
删除容器不会删除数据卷。如需同时删除数据卷,请使用:
```bash
docker compose down -v
```
:::
## 升级
### 备份配置
升级前,请先备份配置和数据:
```bash
# 备份配置
tar czf ppanel-config-backup-$(date +%Y%m%d).tar.gz ppanel-config/
# 备份数据卷
docker run --rm \
-v ppanel-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/ppanel-data-backup-$(date +%Y%m%d).tar.gz /data
```
### 升级步骤
#### 使用 Docker Run
```bash
# 拉取最新镜像
docker pull ppanel/ppanel:latest
# 停止并删除旧容器
docker stop ppanel
docker rm ppanel
# 使用相同配置启动新容器
docker run -d \
--name ppanel \
-p 8080:8080 \
-v $(pwd)/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
--restart unless-stopped \
ppanel/ppanel:latest
```
#### 使用 Docker Compose
```bash
# 拉取最新镜像
docker compose pull
# 使用新镜像重新创建容器
docker compose up -d
```
### 验证升级
```bash
# 检查容器是否正在运行
docker ps | grep ppanel
# 检查日志是否有错误
docker logs ppanel
# 验证应用是否可访问
curl http://localhost:8080
```
## 故障排除
### 容器立即退出
**检查架构兼容性:**
```bash
# 查看主机架构
uname -m
# 查看镜像架构
docker image inspect ppanel/ppanel:latest --format '{{.Architecture}}'
```
**查看日志:**
```bash
docker logs ppanel
```
### 无法访问服务
1. **检查容器是否运行:**
```bash
docker ps | grep ppanel
```
2. **检查端口映射:**
```bash
docker port ppanel
```
3. **检查防火墙规则:**
```bash
# Ubuntu/Debian
sudo ufw status
sudo ufw allow 8080
# CentOS/RHEL
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
```
### 配置未生效
1. **验证挂载路径:**
```bash
docker exec ppanel ls -la /app/etc
```
2. **检查配置语法:**
```bash
docker exec ppanel cat /app/etc/ppanel.yaml
```
3. **重启容器:**
```bash
docker restart ppanel
```
### 性能问题
1. **检查资源使用情况:**
```bash
docker stats ppanel
```
2. **增加容器资源**(如果使用 Docker Desktop:
- 打开 Docker Desktop 设置
- 转到 Resources(资源)
- 增加 CPU 和内存分配
3. **检查磁盘空间:**
```bash
df -h
docker system df
```
## 高级配置
### 使用环境变量
你可以通过环境变量覆盖配置:
```bash
docker run -d \
--name ppanel \
-p 8080:8080 \
-e SERVER_PORT=8080 \
-e DATABASE_TYPE=sqlite \
-v $(pwd)/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
--restart unless-stopped \
ppanel/ppanel:latest
```
### 运行多个实例
要运行多个实例,请使用不同的端口和容器名称:
```bash
# 实例 1
docker run -d \
--name ppanel-1 \
-p 8081:8080 \
-v $(pwd)/ppanel-config-1:/app/etc:ro \
-v ppanel-data-1:/app/data \
ppanel/ppanel:latest
# 实例 2
docker run -d \
--name ppanel-2 \
-p 8082:8080 \
-v $(pwd)/ppanel-config-2:/app/etc:ro \
-v ppanel-data-2:/app/data \
ppanel/ppanel:latest
```
### 自定义网络
创建自定义 Docker 网络以获得更好的隔离:
```bash
# 创建网络
docker network create ppanel-net
# 在自定义网络上运行容器
docker run -d \
--name ppanel \
--network ppanel-net \
-p 8080:8080 \
-v $(pwd)/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
ppanel/ppanel:latest
```
## 下一步
- [配置指南](/zh/guide/configuration) - 了解详细的配置选项
- [管理后台](/zh/admin/dashboard) - 开始管理你的面板
- [API 参考](/zh/api/reference) - 集成 PPanel API
## 需要帮助?
如果遇到任何问题:
1. 查看上面的[故障排除](#故障排除)部分
2. 搜索 [GitHub Issues](https://github.com/perfect-panel/ppanel/issues)
3. 加入我们的社区讨论
4. 创建新 issue 并附上详细的日志和系统信息
+585
View File
@@ -0,0 +1,585 @@
# 二进制部署
本指南介绍如何使用预编译的二进制可执行文件部署 PPanel。此方法适合不想使用 Docker 或需要更多部署控制权的用户。
## 前置条件
- **操作系统**: Linux (Ubuntu 20.04+, Debian 10+, CentOS 8+)
- **架构**: amd64 (x86_64) 或 arm64
- **权限**: Root 或 sudo 访问权限
- **依赖**: 无(二进制文件静态编译)
## 下载二进制文件
### 步骤 1: 检查系统架构
```bash
# 查看系统架构
uname -m
# 输出: x86_64 (amd64) 或 aarch64 (arm64)
```
### 步骤 2: 下载最新版本
访问 [GitHub Releases](https://github.com/perfect-panel/ppanel/releases) 页面或直接下载:
```bash
# 创建安装目录
sudo mkdir -p /opt/ppanel
cd /opt/ppanel
# 下载 Linux amd64 版本
wget https://github.com/perfect-panel/ppanel/releases/latest/download/ppanel-linux-amd64.tar.gz
# 或下载 Linux arm64 版本
# wget https://github.com/perfect-panel/ppanel/releases/latest/download/ppanel-linux-arm64.tar.gz
# 解压
tar -xzf ppanel-linux-amd64.tar.gz
# 验证解压的文件
ls -la
```
预期的文件结构:
```
/opt/ppanel/
├── ppanel-server # 主服务器二进制文件
├── gateway # 网关二进制文件
└── etc/ # 配置目录
└── ppanel.yaml # 配置文件
```
## 配置
### 步骤 1: 准备配置
```bash
# 复制示例配置
sudo cp etc/ppanel.yaml etc/ppanel.yaml.backup
# 编辑配置
sudo nano etc/ppanel.yaml
```
**基础配置示例:**
```yaml
server:
host: 0.0.0.0
port: 8080
mode: release # debug, release, 或 test
database:
type: sqlite
path: /opt/ppanel/data/ppanel.db
# MySQL/PostgreSQL 配置:
# type: mysql
# host: localhost
# port: 3306
# user: ppanel
# password: your_password
# database: ppanel
log:
level: info # debug, info, warn, error
path: /opt/ppanel/logs
gateway:
port: 8080
timeout: 30s
```
### 步骤 2: 创建必要的目录
```bash
# 创建数据和日志目录
sudo mkdir -p /opt/ppanel/data
sudo mkdir -p /opt/ppanel/logs
# 设置适当的权限
sudo chmod 755 /opt/ppanel
sudo chmod 700 /opt/ppanel/data
sudo chmod 755 /opt/ppanel/logs
```
## 运行服务
### 方式一: 直接运行(测试用)
用于快速测试:
```bash
# 使二进制文件可执行
sudo chmod +x /opt/ppanel/ppanel-server
sudo chmod +x /opt/ppanel/gateway
# 直接运行服务器
cd /opt/ppanel
sudo ./ppanel-server
# 在另一个终端运行网关(如果分离)
# sudo ./gateway
```
`Ctrl+C` 停止。
### 方式二: Systemd 服务(推荐)
为生产环境部署创建 systemd 服务:
#### 步骤 1: 创建服务文件
```bash
sudo nano /etc/systemd/system/ppanel.service
```
**服务文件内容:**
```ini
[Unit]
Description=PPanel Server
Documentation=https://github.com/perfect-panel/ppanel
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/ppanel
ExecStart=/opt/ppanel/ppanel-server
Restart=always
RestartSec=10
# 安全设置
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/opt/ppanel/data /opt/ppanel/logs
# 资源限制
LimitNOFILE=65535
LimitNPROC=4096
# 日志
StandardOutput=journal
StandardError=journal
SyslogIdentifier=ppanel
[Install]
WantedBy=multi-user.target
```
#### 步骤 2: 启用并启动服务
```bash
# 重新加载 systemd
sudo systemctl daemon-reload
# 启用服务(开机自启)
sudo systemctl enable ppanel
# 启动服务
sudo systemctl start ppanel
# 检查状态
sudo systemctl status ppanel
```
## 服务管理
### 检查状态
```bash
# 检查服务是否运行
sudo systemctl status ppanel
# 查看详细状态
sudo systemctl show ppanel
```
### 查看日志
```bash
# 查看 systemd 日志
sudo journalctl -u ppanel -f
# 查看最后 100 行
sudo journalctl -u ppanel -n 100
# 查看应用日志
sudo tail -f /opt/ppanel/logs/ppanel.log
```
### 启动/停止/重启
```bash
# 启动服务
sudo systemctl start ppanel
# 停止服务
sudo systemctl stop ppanel
# 重启服务
sudo systemctl restart ppanel
# 重新加载配置(如果支持)
sudo systemctl reload ppanel
```
### 启用/禁用自动启动
```bash
# 启用开机自启
sudo systemctl enable ppanel
# 禁用自动启动
sudo systemctl disable ppanel
# 检查是否已启用
sudo systemctl is-enabled ppanel
```
## 部署后配置
### 验证安装
```bash
# 检查服务是否监听端口
sudo netstat -tlnp | grep 8080
# 或使用 ss
sudo ss -tlnp | grep 8080
# 测试 HTTP 访问
curl http://localhost:8080
# 检查进程
ps aux | grep ppanel
```
### 访问应用
- **用户面板**: `http://your-server-ip:8080`
- **管理后台**: `http://your-server-ip:8080/admin`
### 配置防火墙
```bash
# Ubuntu/Debian (UFW)
sudo ufw allow 8080/tcp
sudo ufw status
# CentOS/RHEL (firewalld)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
```
### 设置反向代理
生产环境建议使用 Nginx 或 Caddy 作为反向代理:
**Nginx 配置** (`/etc/nginx/sites-available/ppanel`):
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
```
启用配置:
```bash
sudo ln -s /etc/nginx/sites-available/ppanel /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```
## 升级
### 升级前备份
```bash
# 停止服务
sudo systemctl stop ppanel
# 备份当前版本
sudo cp -r /opt/ppanel /opt/ppanel-backup-$(date +%Y%m%d)
# 备份数据库
sudo cp /opt/ppanel/data/ppanel.db /opt/ppanel/data/ppanel.db.backup-$(date +%Y%m%d)
# 备份配置
sudo cp /opt/ppanel/etc/ppanel.yaml /opt/ppanel/etc/ppanel.yaml.backup-$(date +%Y%m%d)
```
### 下载并安装新版本
```bash
# 下载新版本
cd /tmp
wget https://github.com/perfect-panel/ppanel/releases/latest/download/ppanel-linux-amd64.tar.gz
# 解压到临时位置
mkdir ppanel-new
tar -xzf ppanel-linux-amd64.tar.gz -C ppanel-new
# 备份旧的二进制文件
sudo mv /opt/ppanel/ppanel-server /opt/ppanel/ppanel-server.old
sudo mv /opt/ppanel/gateway /opt/ppanel/gateway.old
# 安装新的二进制文件
sudo cp ppanel-new/ppanel-server /opt/ppanel/
sudo cp ppanel-new/gateway /opt/ppanel/
# 设置权限
sudo chmod +x /opt/ppanel/ppanel-server
sudo chmod +x /opt/ppanel/gateway
# 启动服务
sudo systemctl start ppanel
# 检查状态
sudo systemctl status ppanel
```
### 回滚
如果升级失败:
```bash
# 停止服务
sudo systemctl stop ppanel
# 恢复旧的二进制文件
sudo mv /opt/ppanel/ppanel-server.old /opt/ppanel/ppanel-server
sudo mv /opt/ppanel/gateway.old /opt/ppanel/gateway
# 恢复数据库(如需要)
sudo cp /opt/ppanel/data/ppanel.db.backup-YYYYMMDD /opt/ppanel/data/ppanel.db
# 启动服务
sudo systemctl start ppanel
```
## 故障排除
### 服务启动失败
```bash
# 查看详细日志
sudo journalctl -u ppanel -xe
# 检查配置语法
/opt/ppanel/ppanel-server --check-config
# 验证权限
ls -la /opt/ppanel
sudo chown -R root:root /opt/ppanel
```
### 端口被占用
```bash
# 查找占用端口的进程
sudo lsof -i :8080
sudo netstat -tlnp | grep 8080
# 在配置中更改端口
sudo nano /opt/ppanel/etc/ppanel.yaml
# 更新 server.port 值
# 重启服务
sudo systemctl restart ppanel
```
### 二进制文件无法执行
```bash
# 检查架构兼容性
uname -m
file /opt/ppanel/ppanel-server
# 检查是否可执行
ls -la /opt/ppanel/ppanel-server
sudo chmod +x /opt/ppanel/ppanel-server
# 检查缺失的库(静态编译应该没有)
ldd /opt/ppanel/ppanel-server
```
### 内存使用过高
```bash
# 检查内存使用
ps aux | grep ppanel
top -p $(pgrep ppanel-server)
# 在 systemd 服务中添加内存限制
sudo nano /etc/systemd/system/ppanel.service
# 在 [Service] 下添加:
# MemoryMax=2G
# MemoryHigh=1.5G
sudo systemctl daemon-reload
sudo systemctl restart ppanel
```
### 数据库连接问题
```bash
# 检查数据库文件权限
ls -la /opt/ppanel/data/
# 对于 SQLite,验证配置中的路径
sudo nano /opt/ppanel/etc/ppanel.yaml
# 测试数据库连接
sqlite3 /opt/ppanel/data/ppanel.db "SELECT 1;"
# 检查日志中的数据库错误
sudo journalctl -u ppanel | grep -i database
```
## 卸载
完全移除 PPanel
```bash
# 停止并禁用服务
sudo systemctl stop ppanel
sudo systemctl disable ppanel
# 删除服务文件
sudo rm /etc/systemd/system/ppanel.service
sudo systemctl daemon-reload
# 删除安装目录
sudo rm -rf /opt/ppanel
# 删除防火墙规则(如果添加过)
sudo ufw delete allow 8080/tcp
# 或
sudo firewall-cmd --permanent --remove-port=8080/tcp
sudo firewall-cmd --reload
```
## 高级配置
### 以非 Root 用户运行
为了更好的安全性,使用专用用户运行:
```bash
# 创建专用用户
sudo useradd -r -s /bin/false ppanel
# 更改所有权
sudo chown -R ppanel:ppanel /opt/ppanel
# 更新 systemd 服务
sudo nano /etc/systemd/system/ppanel.service
# 更改: User=ppanel
# 如果绑定到端口 < 1024,授予能力
sudo setcap 'cap_net_bind_service=+ep' /opt/ppanel/ppanel-server
sudo systemctl daemon-reload
sudo systemctl restart ppanel
```
### 多实例部署
运行多个实例:
```bash
# 创建独立目录
sudo mkdir -p /opt/ppanel-1
sudo mkdir -p /opt/ppanel-2
# 复制二进制文件和配置
sudo cp -r /opt/ppanel/* /opt/ppanel-1/
sudo cp -r /opt/ppanel/* /opt/ppanel-2/
# 编辑配置使用不同端口
sudo nano /opt/ppanel-1/etc/ppanel.yaml # port: 8081
sudo nano /opt/ppanel-2/etc/ppanel.yaml # port: 8082
# 创建独立的 systemd 服务
sudo cp /etc/systemd/system/ppanel.service /etc/systemd/system/ppanel-1.service
sudo cp /etc/systemd/system/ppanel.service /etc/systemd/system/ppanel-2.service
# 相应编辑服务文件
sudo systemctl daemon-reload
sudo systemctl enable ppanel-1 ppanel-2
sudo systemctl start ppanel-1 ppanel-2
```
### 自定义环境变量
在 systemd 服务中添加环境变量:
```ini
[Service]
Environment="PPANEL_ENV=production"
Environment="PPANEL_DEBUG=false"
EnvironmentFile=/opt/ppanel/env.conf
```
## 性能调优
### 优化文件限制
```bash
# 编辑限制
sudo nano /etc/security/limits.conf
# 添加:
* soft nofile 65535
* hard nofile 65535
# systemd 服务中已设置:
# LimitNOFILE=65535
```
### 启用数据库优化
对于 SQLite
```bash
# 在 ppanel.yaml 中添加
database:
type: sqlite
path: /opt/ppanel/data/ppanel.db
options:
cache_size: -2000
journal_mode: WAL
synchronous: NORMAL
```
## 下一步
- [配置指南](/zh/guide/configuration) - 详细的配置选项
- [管理后台](/zh/admin/dashboard) - 开始管理你的面板
- [API 参考](/zh/api/reference) - API 集成
## 需要帮助?
- 查看 [GitHub Issues](https://github.com/perfect-panel/ppanel/issues)
- 查看 systemd 日志: `sudo journalctl -u ppanel -f`
- 查看应用日志: `tail -f /opt/ppanel/logs/ppanel.log`
@@ -0,0 +1,443 @@
# Docker Compose 部署
Docker Compose 是生产环境推荐的部署方式。它提供更好的服务管理、更简单的配置和更便捷的升级流程。
## 前置条件
### 安装 Docker
如果你还没有安装 Docker,请按照官方安装指南进行安装:
**Ubuntu/Debian:**
```bash
# 更新包索引
sudo apt-get update
# 安装必要的依赖包
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
```
**CentOS/RHEL:**
```bash
# 安装 yum-utils
sudo yum install -y yum-utils
# 添加 Docker 仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
```
### 验证安装
```bash
# 查看 Docker 版本
docker --version
# 查看 Docker Compose 版本
docker compose version
# 测试 Docker 安装
sudo docker run hello-world
```
## 部署步骤
### 步骤 1: 创建项目目录
```bash
# 创建项目目录
mkdir -p ~/ppanel
cd ~/ppanel
```
### 步骤 2: 创建 docker-compose.yml
创建 `docker-compose.yml` 文件,内容如下:
```yaml
version: '3.8'
services:
ppanel:
image: ppanel/ppanel:latest
container_name: ppanel
ports:
- "8080:8080"
volumes:
- ./ppanel-config:/app/etc:ro
- ppanel-data:/app/data
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
ppanel-data:
driver: local
```
**配置说明:**
- **image**: 使用的 Docker 镜像(latest 或指定版本如 `v0.1.2`
- **ports**: 将容器的 8080 端口映射到宿主机的 8080 端口
- **volumes**:
- `./ppanel-config:/app/etc:ro` - 配置目录(只读)
- `ppanel-data:/app/data` - 持久化数据存储
- **restart**: 自动重启策略
- **environment**: 设置时区(可改为 `Asia/Shanghai` 等)
- **healthcheck**: 服务健康检查
### 步骤 3: 准备配置
```bash
# 创建配置目录
mkdir -p ppanel-config
# 创建配置文件
cat > ppanel-config/ppanel.yaml <<EOF
# PPanel 配置文件
server:
host: 0.0.0.0
port: 8080
database:
type: sqlite
path: /app/data/ppanel.db
# 根据需要添加更多配置
EOF
```
::: tip 提示
详细的配置选项请参考 [配置指南](/zh/guide/configuration)。
:::
### 步骤 4: 启动服务
```bash
# 拉取最新镜像
docker compose pull
# 以守护进程模式启动
docker compose up -d
# 查看日志
docker compose logs -f
```
### 步骤 5: 验证部署
```bash
# 查看服务状态
docker compose ps
# 测试服务是否可访问
curl http://localhost:8080
# 查看实时日志
docker compose logs -f ppanel
```
## 部署后配置
### 访问应用
安装成功后,你可以通过以下地址访问:
- **用户面板**: `http://your-server-ip:8080`
- **管理后台**: `http://your-server-ip:8080/admin`
::: warning 默认凭据
为了安全起见,首次登录后请立即修改默认管理员密码。
:::
### 配置反向代理(推荐)
对于生产环境部署,建议使用 Nginx 或 Caddy 作为反向代理以启用 HTTPS。
**Nginx 配置:**
```nginx
server {
listen 80;
server_name your-domain.com;
# 重定向到 HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
}
```
**Caddy 配置:**
```
your-domain.com {
reverse_proxy localhost:8080
}
```
::: tip 提示
Caddy 会通过 Let's Encrypt 自动处理 SSL 证书。
:::
## 服务管理
### 查看日志
```bash
# 查看所有日志
docker compose logs
# 实时跟踪日志
docker compose logs -f
# 查看特定服务日志
docker compose logs ppanel
```
### 停止服务
```bash
# 停止所有服务
docker compose stop
# 停止特定服务
docker compose stop ppanel
```
### 重启服务
```bash
# 重启所有服务
docker compose restart
# 重启特定服务
docker compose restart ppanel
```
### 停止并删除服务
```bash
# 停止并删除容器
docker compose down
# 停止并删除容器和数据卷
docker compose down -v
```
::: warning 数据持久化
使用 `docker compose down -v` 会删除所有数据卷。只有在想完全清除所有数据时才使用此命令。
:::
## 升级
### 升级前备份
```bash
# 备份配置
tar czf ppanel-config-backup-$(date +%Y%m%d).tar.gz ppanel-config/
# 备份数据卷
docker run --rm \
-v ppanel_ppanel-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/ppanel-data-backup-$(date +%Y%m%d).tar.gz /data
```
### 升级步骤
```bash
# 拉取最新镜像
docker compose pull
# 使用新镜像重新创建容器
docker compose up -d
# 查看日志验证
docker compose logs -f
```
### 回滚
如果升级后遇到问题:
```bash
# 编辑 docker-compose.yml,将镜像改为之前的版本
# image: ppanel/ppanel:v0.1.1
# 使用之前的版本重启
docker compose up -d
```
## 高级配置
### 自定义端口
要使用不同的端口,编辑 `docker-compose.yml`
```yaml
ports:
- "3000:8080" # 宿主机端口 3000 -> 容器端口 8080
```
### 多实例部署
要运行多个实例,创建独立的目录:
```bash
# 实例 1
mkdir ~/ppanel-1
cd ~/ppanel-1
# 创建 docker-compose.yml,使用端口 8081
# 实例 2
mkdir ~/ppanel-2
cd ~/ppanel-2
# 创建 docker-compose.yml,使用端口 8082
```
### 资源限制
添加资源限制以防止过度消耗:
```yaml
services:
ppanel:
# ... 其他配置 ...
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
```
### 自定义网络
创建自定义网络以获得更好的隔离:
```yaml
version: '3.8'
services:
ppanel:
# ... 其他配置 ...
networks:
- ppanel-net
networks:
ppanel-net:
driver: bridge
```
## 故障排除
### 容器启动失败
```bash
# 查看错误日志
docker compose logs ppanel
# 检查容器状态
docker compose ps
# 验证配置
docker compose config
```
### 端口被占用
```bash
# 检查什么在使用该端口
sudo lsof -i :8080
# 在 docker-compose.yml 中更改端口
# ports:
# - "8081:8080"
```
### 权限问题
```bash
# 修复配置目录权限
sudo chown -R $USER:$USER ppanel-config/
# 确保文件可读
chmod 644 ppanel-config/ppanel.yaml
```
### 无法从外部访问
1. **检查防火墙规则:**
```bash
# Ubuntu/Debian
sudo ufw allow 8080
# CentOS/RHEL
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
```
2. **验证服务是否监听:**
```bash
docker compose ps
netstat -tlnp | grep 8080
```
## 下一步
- [配置指南](/zh/guide/configuration) - 详细的配置选项
- [管理后台](/zh/admin/dashboard) - 开始管理你的面板
- [API 参考](/zh/api/reference) - API 集成指南
## 需要帮助?
如果遇到任何问题:
1. 查看上面的[故障排除](#故障排除)部分
2. 查看 [Docker Compose 日志](#查看日志)
3. 搜索 [GitHub Issues](https://github.com/perfect-panel/ppanel/issues)
4. 创建新 issue 并附上详细的系统信息和日志
+348
View File
@@ -0,0 +1,348 @@
# Docker Run 部署
本指南介绍如何使用 `docker run` 命令部署 PPanel。此方法适合快速测试或简单部署。
::: tip 提示
对于生产环境,我们推荐使用 [Docker Compose](/zh/guide/installation/docker-compose)。
:::
## 前置条件
### 安装 Docker
**Ubuntu/Debian:**
```bash
# 更新包索引
sudo apt-get update
# 安装 Docker
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
```
**CentOS/RHEL:**
```bash
# 安装 Docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker
```
### 验证安装
```bash
docker --version
sudo docker run hello-world
```
## 快速开始
### 步骤 1: 拉取镜像
```bash
# 拉取最新版本
docker pull ppanel/ppanel:latest
# 或拉取指定版本
docker pull ppanel/ppanel:v0.1.2
```
### 步骤 2: 准备配置
```bash
# 创建配置目录
mkdir -p ~/ppanel-config
# 创建配置文件
cat > ~/ppanel-config/ppanel.yaml <<EOF
server:
host: 0.0.0.0
port: 8080
database:
type: sqlite
path: /app/data/ppanel.db
EOF
```
### 步骤 3: 运行容器
**基础命令:**
```bash
docker run -d \
--name ppanel \
-p 8080:8080 \
-v ~/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
--restart unless-stopped \
ppanel/ppanel:latest
```
**完整参数命令:**
```bash
docker run -d \
--name ppanel \
-p 8080:8080 \
-v ~/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
-e TZ=Asia/Shanghai \
--restart unless-stopped \
--memory="2g" \
--cpus="2" \
ppanel/ppanel:latest
```
**参数说明:**
- `-d`: 以守护进程模式运行(后台运行)
- `--name ppanel`: 设置容器名称
- `-p 8080:8080`: 端口映射(宿主机:容器)
- `-v ~/ppanel-config:/app/etc:ro`: 挂载配置(只读)
- `-v ppanel-data:/app/data`: 创建数据卷
- `-e TZ=Asia/Shanghai`: 设置时区
- `--restart unless-stopped`: 自动重启策略
- `--memory="2g"`: 内存限制
- `--cpus="2"`: CPU 限制
### 步骤 4: 验证运行
```bash
# 查看容器状态
docker ps | grep ppanel
# 查看日志
docker logs -f ppanel
# 测试访问
curl http://localhost:8080
```
## 容器管理
### 查看日志
```bash
# 查看所有日志
docker logs ppanel
# 实时跟踪日志
docker logs -f ppanel
# 查看最后 100 行
docker logs --tail 100 ppanel
# 显示时间戳
docker logs -t ppanel
```
### 停止容器
```bash
docker stop ppanel
```
### 启动容器
```bash
docker start ppanel
```
### 重启容器
```bash
docker restart ppanel
```
### 删除容器
```bash
# 停止并删除
docker stop ppanel
docker rm ppanel
```
::: warning 注意
删除容器不会删除数据卷。要删除数据卷:
```bash
docker volume rm ppanel-data
```
:::
## 升级
### 备份数据
```bash
# 备份配置
tar czf ppanel-config-backup-$(date +%Y%m%d).tar.gz ~/ppanel-config/
# 备份数据卷
docker run --rm \
-v ppanel-data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/ppanel-data-backup-$(date +%Y%m%d).tar.gz /data
```
### 升级流程
```bash
# 拉取最新镜像
docker pull ppanel/ppanel:latest
# 停止旧容器
docker stop ppanel
# 删除旧容器
docker rm ppanel
# 使用相同配置启动新容器
docker run -d \
--name ppanel \
-p 8080:8080 \
-v ~/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
--restart unless-stopped \
ppanel/ppanel:latest
# 验证
docker logs -f ppanel
```
## 高级用法
### 自定义网络
```bash
# 创建网络
docker network create ppanel-net
# 在自定义网络上运行
docker run -d \
--name ppanel \
--network ppanel-net \
-p 8080:8080 \
-v ~/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
ppanel/ppanel:latest
```
### 环境变量
```bash
docker run -d \
--name ppanel \
-p 8080:8080 \
-e SERVER_PORT=8080 \
-e DATABASE_TYPE=sqlite \
-e TZ=Asia/Shanghai \
-v ~/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
ppanel/ppanel:latest
```
### 多实例部署
```bash
# 实例 1 使用端口 8081
docker run -d \
--name ppanel-1 \
-p 8081:8080 \
-v ~/ppanel-config-1:/app/etc:ro \
-v ppanel-data-1:/app/data \
ppanel/ppanel:latest
# 实例 2 使用端口 8082
docker run -d \
--name ppanel-2 \
-p 8082:8080 \
-v ~/ppanel-config-2:/app/etc:ro \
-v ppanel-data-2:/app/data \
ppanel/ppanel:latest
```
### 资源限制
```bash
docker run -d \
--name ppanel \
-p 8080:8080 \
--memory="2g" \
--memory-swap="2g" \
--cpus="2" \
--pids-limit=100 \
-v ~/ppanel-config:/app/etc:ro \
-v ppanel-data:/app/data \
ppanel/ppanel:latest
```
## 故障排除
### 容器立即退出
```bash
# 查看日志
docker logs ppanel
# 检查架构
uname -m
docker image inspect ppanel/ppanel:latest --format '{{.Architecture}}'
```
### 端口被占用
```bash
# 检查什么在使用该端口
sudo lsof -i :8080
# 使用不同端口
docker run -d --name ppanel -p 8081:8080 ...
```
### 配置未加载
```bash
# 验证挂载
docker exec ppanel ls -la /app/etc
# 查看文件内容
docker exec ppanel cat /app/etc/ppanel.yaml
# 检查权限
ls -la ~/ppanel-config/
```
### 进入容器 Shell
```bash
# 进入 bash(如果可用)
docker exec -it ppanel bash
# 进入 sh
docker exec -it ppanel sh
# 运行命令
docker exec ppanel ls -la /app
```
## 下一步
- 尝试 [Docker Compose](/zh/guide/installation/docker-compose) 以获得更简单的管理方式
- 配置[反向代理](/zh/guide/installation/docker-compose#配置反向代理)
- 了解[配置选项](/zh/guide/configuration)
## 需要帮助?
- 查看 [GitHub Issues](https://github.com/perfect-panel/ppanel/issues)
- 查看 Docker 日志: `docker logs ppanel`
- 验证系统要求
+57
View File
@@ -0,0 +1,57 @@
# 安装概览
PPanel 支持多种部署方式,以适应不同的需求和环境。选择最适合你需求的部署方式。
## 部署方式
### Docker 部署(推荐)
最简单、最可靠的部署方式。Docker 确保环境一致性并简化更新流程。
- **[Docker Run](/zh/guide/installation/docker-run)** - 单命令快速部署
- **[Docker Compose](/zh/guide/installation/docker-compose)** - 生产环境推荐,更好的管理方式
### 传统部署
- **[二进制部署](/zh/guide/installation/binary)** - 使用预编译二进制文件和 systemd 服务部署
### 高级部署
- **[Kubernetes](/zh/guide/installation/kubernetes)** - 在 Kubernetes 集群中部署 PPanel 以实现高可用
- **[源码部署](/zh/guide/installation/from-source)** - 从源码构建并运行 PPanel
## 系统要求
### 最低配置
- **操作系统**: Linux (Ubuntu 20.04+, Debian 10+, CentOS 8+)
- **CPU**: 1 核心
- **内存**: 512MB RAM
- **存储**: 1GB 可用磁盘空间
### 推荐配置
- **CPU**: 2+ 核心
- **内存**: 2GB+ RAM
- **存储**: 5GB+ 可用磁盘空间
## 前置条件
所有部署方式都需要:
- 基于 Linux 的操作系统
- 基本的命令行知识
- 网络访问以下载软件包/镜像
具体的前置条件因部署方式而异 - 请查看各个指南了解详情。
## 快速开始
对于大多数用户,我们推荐从 Docker Compose 开始:
1. [安装 Docker 和 Docker Compose](/zh/guide/installation/docker-compose#前置条件)
2. [下载配置文件](/zh/guide/installation/docker-compose#下载配置)
3. [启动服务](/zh/guide/installation/docker-compose#启动服务)
## 需要帮助?
- 查看我们的[故障排除指南](/zh/guide/troubleshooting)
- 访问 [GitHub Issues](https://github.com/perfect-panel/ppanel/issues)
- 加入我们的社区讨论
+93
View File
@@ -0,0 +1,93 @@
# 简介
欢迎使用 PPanel!这是一个纯粹、专业、完美的开源代理面板工具,旨在为用户提供完整的管理解决方案。
## 什么是 PPanel
PPanel 是一个现代化的代理面板系统,采用前后端分离架构,提供完整的用户管理、订阅服务、订单管理、节点管理等功能。无论您是个人用户还是企业用户,PPanel 都能满足您的需求。
## 核心特性
- **🎯 完整管理**: 服务器管理、节点配置、订阅系统、产品管理等
- **💼 商务运营**: 订单管理、优惠券系统、营销活动、公告发布
- **👥 用户支持**: 用户管理、工单系统、文档中心,提供全方位用户服务
- **📊 数据分析**: 12 种类型日志,全面的流量、余额、佣金数据分析
- **🔧 灵活配置**: 支付配置、认证控制、广告管理,灵活的系统选项
- **🚀 现代技术栈**: 基于 React 19 + TypeScript + TailwindCSS + shadcn/ui 构建
## 术语说明
PPanel 的一些术语与其他面板系统存在差异,为确保您能准确理解文档内容并避免误解,建议在阅读前先了解以下术语:
### 用户端
为最终用户提供的界面,用户通过该界面与系统进行交互。您可以根据需求自定义或重构该界面,实现站点的个性化定制。
### 管理端
用于管理员操作的界面,负责管理系统、用户及数据。您可以根据需求对该界面进行定制或重构,以适应您的管理需求。
### 服务端
PPanel 的 API 层,处理与前端的所有数据交互,负责业务逻辑的执行与数据服务的提供。
### 节点端
负责 PPanel 服务端与各节点(落地端)的通信,确保网络节点的连接与服务的稳定性。
### 客户端
用户用来连接系统的应用程序,通常是指用户的设备端软件或应用,负责与系统建立连接并使用相关服务。
## 项目架构
PPanel 采用 Monorepo 架构,便于统一管理和维护:
### 前端应用
- **apps/admin**: 管理后台应用,提供完整的后台管理功能
- **apps/user**: 用户端应用,为最终用户提供服务界面
### 共享包
- **packages/ui**: 共享 UI 组件库,包含所有可复用的 UI 组件
- **packages/typescript-config**: 统一的 TypeScript 配置
### 技术栈
- **框架**: React 19 + TypeScript
- **路由**: TanStack Router
- **状态管理**: Zustand
- **样式**: TailwindCSS 4.0
- **UI 组件**: shadcn/ui
- **构建工具**: Vite + Turbo
- **代码规范**: Biome
- **Git 规范**: Lefthook + Gitmoji
## 主要功能
### 运维管理
- 服务器管理
- 节点管理
- 订阅配置
- 产品管理
### 商务管理
- 订单管理
- 优惠券管理
- 营销管理
- 公告管理
### 用户与支持
- 用户管理
- 工单系统
- 文档管理
### 系统管理
- 系统配置
- 认证控制
- 支付配置
- 广告配置
### 日志与分析
- 完整的操作日志记录
- 流量统计分析
- 财务数据追踪
## 下一步
- [安装部署](/zh/guide/installation/) - 了解如何部署 PPanel
- [配置指南](/zh/guide/configuration) - 配置你的 PPanel 实例
- [管理后台](/zh/admin/dashboard) - 开始使用管理功能
+168
View File
@@ -0,0 +1,168 @@
# 节点端安装
`ppanel-node` 是部署在边缘服务器上的轻量代理守护进程,基于 `xray-core`,负责同步路由、订阅、心跳与密钥。本指南提供最快速的一键安装方式,并补充源码与容器方案。
## 快速开始
```bash
wget -N https://raw.githubusercontent.com/perfect-panel/ppanel-node/master/scripts/install.sh
sudo bash install.sh --api-host https://panel.example.com --server-id 1 --secret-key <SECRET>
```
脚本会自动识别系统/架构、拉取最新版、安装 geo 数据,并配置 `ppnode` CLI 与系统服务。
### 环境要求
- 64 位 LinuxDebian/Ubuntu ≥16、CentOS ≥7、Alpine、Arch 等)
- 拥有 root 权限,且可访问 `github.com`
- 防火墙需放通对外协议端口及访问面板的 443 端口
- 面板后台已生成匹配的 **Server ID****Secret Key**
### 可选参数
- 位置参数 `vX.Y.Z`:安装指定 tag。
- `--api-host https://panel.example.com`
- `--server-id <ID>`(对应运维→服务器 管理页面中的记录)
- `--secret-key <KEY>`
若未传入参数,脚本会在安装过程中交互式询问。
### 服务管理
安装完成后可通过 CLI 管理:
```bash
ppnode status # 查看状态
ppnode start # 启动
ppnode restart # 重启 + 重新加载配置
ppnode log # 查看日志
ppnode update # 升级至最新版本
ppnode update v1.2 # 安装指定版本
ppnode uninstall # 卸载
ppnode generate # 重新生成 /etc/PPanel-node/config.yml
```
## 安装方式
### 方式一:一键脚本(推荐)
执行上方快速开始命令或运行 `sudo bash install.sh` 并按提示填写信息。脚本包含以下步骤:
1. 根据发行版安装依赖(`wget``curl``tar``socat`、cron 等)。
2. 下载 `ppanel-node-linux-<arch>.zip`(支持 amd64/arm64/s390x)。
3. 解压到 `/usr/local/PPanel-node`,安装 `geoip.dat``geosite.dat`,配置系统服务。
4. 安装 `/usr/bin/ppnode` 管理脚本并设置开机自启。
### 方式二:从源码构建
1. 安装 Go 1.21+,并启用 JSON v2 实验特性:
```bash
export GOEXPERIMENT=jsonv2
```
2. 克隆仓库并编译:
```bash
git clone https://github.com/perfect-panel/ppanel-node.git
cd ppanel-node
GOEXPERIMENT=jsonv2 go build -v -o ./ppnode -trimpath -ldflags "-s -w -buildid="
```
3. 复制二进制与 geo 数据:
```bash
sudo install -Dm755 ./ppnode /usr/local/PPanel-node/ppnode
sudo install -Dm644 ./geoip.dat /etc/PPanel-node/geoip.dat
sudo install -Dm644 ./geosite.dat /etc/PPanel-node/geosite.dat
```
4. 创建 systemd 服务:
```bash
sudo tee /etc/systemd/system/PPanel-node.service <<'EOF'
[Unit]
Description=PPanel Node
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/PPanel-node/ppnode server
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now PPanel-node
```
5. 复制仓库中的 `config.yml` 或手动创建(见配置章节),最后重启服务。
### 方式三:容器化部署
仓库自带 `Dockerfile`,可在不方便直接安装的宿主机上运行:
```bash
git clone https://github.com/perfect-panel/ppanel-node.git
cd ppanel-node
docker build -t ppanel-node:latest .
docker run -d --name ppanel-node \
--net host \
-v /etc/PPanel-node:/etc/PPanel-node \
ppanel-node:latest server
```
建议挂载的目录:
- `/etc/PPanel-node/config.yml` —— 保存 API/密钥配置。
- `/etc/PPanel-node/geoip.dat` 与 `/etc/PPanel-node/geosite.dat` —— 持久化 Geo 数据文件。
- `/var/log/ppanel-node`(可选)—— 在宿主机收集日志。
## 配置节点
运行时配置位于 `/etc/PPanel-node/config.yml`,结构如下:
```yaml
Log:
Level: warn # debug | info | warn | error
Output: "" # 为空代表 stdout,也可以写入文件
Access: none # 访问日志路径,none 为关闭
Api:
ApiHost: https://panel.example.com
ServerID: 3
SecretKey: b23d8ee1cfe44d7f
Timeout: 30
```
修改完成后重启服务:
```bash
sudo systemctl restart PPanel-node
# 或
ppnode restart
```
### 与面板的映射关系
1. 在 **运维管理 → 服务器管理** 中创建记录,获取对应的 Server ID 与 Secret Key。
2. 将上述信息填入 `config.yml``ApiHost` 必须是面板的公网可访问地址。
3. 确保节点能够访问面板 443 端口,且面板允许节点 IP 回连。
4. 节点上报后会在面板中显示为在线,通常 30 秒内即可看到心跳。
## 升级与回滚
- `ppnode update` 仅替换二进制,保留配置与 geo 文件。
- `ppnode update vX.Y.Z` 可按版本号回滚。
- 源码部署时,重新构建目标 tag,替换 `/usr/local/PPanel-node/ppnode` 并 `systemctl restart PPanel-node`。
## 故障排查
- `ppnode log` 或 `journalctl -u PPanel-node -f` 查看运行日志。
- 确认 `/etc/PPanel-node/config.yml` 中 `ApiHost`、`SecretKey` 填写正确。
- 保证服务器可访问 GitHub(更新)与面板域名的 443 端口。
- 面板显示离线时检查防火墙是否放行心跳、系统时间是否同步(`chronyc tracking`)。
更多细节可参阅源仓库:[`github.com/perfect-panel/ppanel-node`](https://github.com/perfect-panel/ppanel-node)。
+505
View File
@@ -0,0 +1,505 @@
# 后端分离部署
本指南将帮助您独立部署 PPanel 后端服务,适用于前后端分离部署场景。
## 概述
后端分离部署允许您将 PPanel 后端服务部署在独立的服务器上,提供 API 服务给前端应用。这种部署方式具有以下优势:
- 🚀 独立扩展后端服务性能
- 🔒 更好的安全隔离
- 🌐 支持多前端实例连接同一后端
- 🛠️ 便于后端服务的独立维护和升级
## 系统要求
### 最低配置
- CPU: 1 核心
- 内存: 1 GB
- 存储: 10 GB
- 操作系统: Linux (推荐 Ubuntu 20.04+, Debian 11+, CentOS 8+)
### 推荐配置
- CPU: 2 核心以上
- 内存: 2 GB 以上
- 存储: 20 GB 以上
## 部署方式
### 方式一:Docker 部署(推荐)
#### 1. 安装 Docker
```bash
# Ubuntu/Debian
curl -fsSL https://get.docker.com | sh
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
```
#### 2. 创建配置文件
创建后端配置文件 `config.yaml`
```yaml
# 数据库配置
database:
type: mysql
host: localhost
port: 3306
username: ppanel
password: your_password
database: ppanel
# Redis 配置
redis:
host: localhost
port: 6379
password: ""
db: 0
# 服务配置
server:
host: 0.0.0.0
port: 8080
# CORS 配置(重要:允许前端域名访问)
cors:
allow_origins:
- "https://your-frontend-domain.com"
- "http://localhost:3000" # 开发环境
allow_methods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
allow_headers:
- "*"
# JWT 配置
jwt:
secret: "your-secret-key"
expire: 7200 # 2小时
# API 配置
api:
prefix: "/api"
version: "v1"
```
#### 3. 准备 MySQL 数据库
```bash
# 使用 Docker 运行 MySQL
docker run -d \
--name ppanel-mysql \
-e MYSQL_ROOT_PASSWORD=root_password \
-e MYSQL_DATABASE=ppanel \
-e MYSQL_USER=ppanel \
-e MYSQL_PASSWORD=your_password \
-p 3306:3306 \
-v ppanel-mysql-data:/var/lib/mysql \
mysql:8.0
# 等待 MySQL 启动
sleep 10
```
#### 4. 准备 Redis
```bash
# 使用 Docker 运行 Redis
docker run -d \
--name ppanel-redis \
-p 6379:6379 \
-v ppanel-redis-data:/data \
redis:7-alpine
```
#### 5. 运行后端服务
```bash
# 拉取后端镜像
docker pull ghcr.io/perfect-panel/ppanel:latest
# 运行后端容器
docker run -d \
--name ppanel-backend \
-p 8080:8080 \
-v $(pwd)/config.yaml:/app/config.yaml \
--link ppanel-mysql:mysql \
--link ppanel-redis:redis \
ghcr.io/perfect-panel/ppanel:latest
```
#### 6. 初始化数据库
```bash
# 执行数据库迁移
docker exec ppanel-backend ./ppanel migrate
```
### 方式二:二进制部署
#### 1. 下载后端程序
```bash
# 下载最新版本
wget https://github.com/perfect-panel/ppanel/releases/latest/download/ppanel-linux-amd64.tar.gz
# 解压
tar -xzf ppanel-linux-amd64.tar.gz
cd ppanel
# 赋予执行权限
chmod +x ppanel
```
#### 2. 配置后端服务
创建配置文件 `config.yaml`(内容同上 Docker 部署方式)。
#### 3. 安装并配置 MySQL
```bash
# Ubuntu/Debian
sudo apt update
sudo apt install mysql-server -y
# 创建数据库和用户
sudo mysql <<EOF
CREATE DATABASE ppanel;
CREATE USER 'ppanel'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON ppanel.* TO 'ppanel'@'localhost';
FLUSH PRIVILEGES;
EOF
```
#### 4. 安装并配置 Redis
```bash
# Ubuntu/Debian
sudo apt install redis-server -y
sudo systemctl start redis-server
sudo systemctl enable redis-server
```
#### 5. 初始化数据库
```bash
# 执行数据库迁移
./ppanel migrate
```
#### 6. 创建 systemd 服务
创建服务文件 `/etc/systemd/system/ppanel.service`
```ini
[Unit]
Description=PPanel Backend Service
After=network.target mysql.service redis.service
[Service]
Type=simple
User=ppanel
WorkingDirectory=/opt/ppanel
ExecStart=/opt/ppanel/ppanel server
Restart=on-failure
RestartSec=5s
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
```
启动服务:
```bash
# 创建专用用户
sudo useradd -r -s /bin/false ppanel
# 移动文件到安装目录
sudo mkdir -p /opt/ppanel
sudo mv ppanel config.yaml /opt/ppanel/
sudo chown -R ppanel:ppanel /opt/ppanel
# 启动服务
sudo systemctl daemon-reload
sudo systemctl start ppanel
sudo systemctl enable ppanel
# 查看服务状态
sudo systemctl status ppanel
```
## 配置反向代理
### Nginx 配置
```nginx
server {
listen 80;
server_name api.your-domain.com;
# HTTPS 重定向(推荐配置 SSL 证书)
# return 301 https://$server_name$request_uri;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 超时配置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
# HTTPS 配置示例
# server {
# listen 443 ssl http2;
# server_name api.your-domain.com;
#
# ssl_certificate /path/to/cert.pem;
# ssl_certificate_key /path/to/key.pem;
#
# location / {
# proxy_pass http://127.0.0.1:8080;
# # ... 其他配置同上
# }
# }
```
重载 Nginx
```bash
sudo nginx -t
sudo systemctl reload nginx
```
### Caddy 配置
```caddy
api.your-domain.com {
reverse_proxy localhost:8080
}
```
## 验证部署
### 健康检查
```bash
# 检查后端服务是否运行
curl http://localhost:8080/api/health
# 预期输出
# {"status":"ok","version":"1.0.0"}
```
### 测试 API
```bash
# 测试公共 API
curl http://localhost:8080/api/v1/ping
# 预期输出
# {"message":"pong"}
```
## 环境变量配置
除了配置文件,您也可以使用环境变量:
```bash
# 数据库配置
export DB_HOST=localhost
export DB_PORT=3306
export DB_USER=ppanel
export DB_PASSWORD=your_password
export DB_NAME=ppanel
# Redis 配置
export REDIS_HOST=localhost
export REDIS_PORT=6379
export REDIS_PASSWORD=""
# JWT 密钥
export JWT_SECRET=your-secret-key
# 服务端口
export SERVER_PORT=8080
```
Docker 运行时使用环境变量:
```bash
docker run -d \
--name ppanel-backend \
-p 8080:8080 \
-e DB_HOST=mysql \
-e DB_USER=ppanel \
-e DB_PASSWORD=your_password \
-e REDIS_HOST=redis \
--link ppanel-mysql:mysql \
--link ppanel-redis:redis \
ghcr.io/perfect-panel/ppanel:latest
```
## 安全建议
1. **使用强密码**:为数据库和 JWT 密钥设置强密码
2. **配置防火墙**:仅开放必要端口(如 80, 443)
3. **启用 HTTPS**:使用 SSL/TLS 证书加密通信
4. **CORS 配置**:仅允许可信的前端域名访问
5. **定期备份**:定期备份数据库和配置文件
6. **监控日志**:定期检查应用日志和系统日志
## 故障排查
### 服务无法启动
```bash
# 查看服务日志
sudo journalctl -u ppanel -n 50 --no-pager
# Docker 查看日志
docker logs ppanel-backend
```
### 数据库连接失败
```bash
# 测试 MySQL 连接
mysql -h localhost -u ppanel -p -e "SELECT 1;"
# 检查 MySQL 服务状态
sudo systemctl status mysql
```
### Redis 连接失败
```bash
# 测试 Redis 连接
redis-cli ping
# 检查 Redis 服务状态
sudo systemctl status redis-server
```
### CORS 错误
确保在 `config.yaml` 中正确配置了前端域名:
```yaml
cors:
allow_origins:
- "https://your-frontend-domain.com"
```
## 性能优化
### 数据库优化
```sql
-- 创建必要的索引
CREATE INDEX idx_user_email ON users(email);
CREATE INDEX idx_order_status ON orders(status);
CREATE INDEX idx_created_at ON orders(created_at);
```
### Redis 缓存配置
```yaml
redis:
# 启用缓存
cache_enabled: true
# 缓存过期时间(秒)
cache_ttl: 3600
```
### 应用层优化
```yaml
# 启用 Gzip 压缩
server:
gzip: true
# 调整并发连接数
server:
max_connections: 1000
```
## 升级指南
### Docker 升级
```bash
# 拉取最新镜像
docker pull ghcr.io/perfect-panel/ppanel:latest
# 停止旧容器
docker stop ppanel-backend
# 备份数据
docker exec ppanel-mysql mysqldump -u ppanel -p ppanel > backup.sql
# 删除旧容器
docker rm ppanel-backend
# 运行新容器
docker run -d \
--name ppanel-backend \
-p 8080:8080 \
-v $(pwd)/config.yaml:/app/config.yaml \
--link ppanel-mysql:mysql \
--link ppanel-redis:redis \
ghcr.io/perfect-panel/ppanel:latest
# 执行数据库迁移
docker exec ppanel-backend ./ppanel migrate
```
### 二进制升级
```bash
# 停止服务
sudo systemctl stop ppanel
# 备份旧版本
sudo cp /opt/ppanel/ppanel /opt/ppanel/ppanel.backup
# 下载新版本
wget https://github.com/perfect-panel/ppanel/releases/latest/download/ppanel-linux-amd64.tar.gz
tar -xzf ppanel-linux-amd64.tar.gz
# 替换文件
sudo mv ppanel /opt/ppanel/
sudo chown ppanel:ppanel /opt/ppanel/ppanel
# 执行数据库迁移
cd /opt/ppanel
sudo -u ppanel ./ppanel migrate
# 启动服务
sudo systemctl start ppanel
```
## 下一步
- [前端分离部署](./frontend.md) - 部署前端应用
- [节点端安装](../node/installation.md) - 部署节点服务
- [API 文档](/zh/api/reference) - 查看完整 API 文档
+689
View File
@@ -0,0 +1,689 @@
# 前端分离部署
本指南将帮助您独立部署 PPanel 前端应用,连接到已部署的后端服务。
## 概述
前端分离部署允许您将 PPanel 前端应用部署在独立的服务器或 CDN 上,通过 API 与后端服务通信。
PPanel 前端包含两个独立应用:
- **用户端** (`ppanel-user-web`): 面向最终用户的界面
- **管理端** (`ppanel-admin-web`): 面向管理员的后台管理界面
### 优势
- 🚀 利用 CDN 加速静态资源访问
- 🌍 支持多地域分发
- 📦 前端独立部署,不影响后端服务
- 🔄 便于前端快速迭代和更新
- 🎨 使用现代技术栈 (React 19, TypeScript, TailwindCSS 4)
## 前提条件
- 已完成[后端部署](./backend.md)
- 后端 API 地址(如 `https://api.your-domain.com`
- 前端域名:
- 用户端:`https://user.your-domain.com`
- 管理端:`https://admin.your-domain.com`
## 技术栈
- **运行时**: Bun (推荐) / Node.js 20+
- **构建工具**: Vite 6
- **框架**: React 19 + TypeScript
- **路由**: TanStack Router
- **样式**: TailwindCSS 4
- **状态管理**: Zustand
- **国际化**: i18next
- **Monorepo**: Turborepo
## 部署方式
### 方式一:从源码构建(推荐)
#### 1. 环境准备
安装 Bun(推荐):
```bash
# Linux/macOS
curl -fsSL https://bun.sh/install | bash
# Windows (WSL2)
curl -fsSL https://bun.sh/install | bash
# 验证安装
bun --version
```
或使用 Node.js (需要 20+)
```bash
# 检查 Node.js 版本
node --version # 应该是 v20 或更高
```
#### 2. 克隆代码仓库
```bash
git clone https://github.com/perfect-panel/frontend.git
cd frontend
```
#### 3. 安装依赖
```bash
# 使用 Bun(推荐,更快)
bun install
# 或使用 npm
npm install
# 或使用 pnpm
pnpm install
```
#### 4. 配置环境变量
在应用目录下创建环境配置文件。
**管理端配置** (`apps/admin/.env.production`)
```bash
# 后端 API 地址(必需)
VITE_API_BASE_URL=https://api.your-domain.com
# CDN 地址(可选,用于加速静态资源)
VITE_CDN_URL=https://cdn.jsdmirror.com
# 启用教程文档(可选)
VITE_TUTORIAL_DOCUMENT=true
# 开发环境默认登录凭证(生产环境请留空)
VITE_USER_EMAIL=
VITE_USER_PASSWORD=
```
**用户端配置** (`apps/user/.env.production`)
```bash
# 后端 API 地址(必需)
VITE_API_BASE_URL=https://api.your-domain.com
# CDN 地址(可选)
VITE_CDN_URL=https://cdn.jsdmirror.com
# 启用教程文档(可选)
VITE_TUTORIAL_DOCUMENT=true
# 开发环境默认登录凭证(生产环境请留空)
VITE_USER_EMAIL=
VITE_USER_PASSWORD=
```
#### 5. 构建应用
构建所有应用:
```bash
# 使用 Bun
bun run build
# 或使用 npm
npm run build
```
构建特定应用:
```bash
# 进入应用目录
cd apps/admin # 或 apps/user
# 构建
bun run build # 或 npm run build
```
构建完成后,静态文件将输出到:
- 管理端:`apps/admin/dist/`
- 用户端:`apps/user/dist/`
#### 6. 预览构建结果
```bash
# 在应用目录下
bun run serve # 或 npm run serve
# 默认访问地址:
# 管理端:http://localhost:4173
# 用户端:http://localhost:4173
```
### 方式二:使用 Vercel 一键部署
#### 管理端部署
点击下方按钮一键部署到 Vercel:
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?demo-description=PPanel%20is%20a%20pure%2C%20professional%2C%20and%20perfect%20open-source%20proxy%20panel%20tool&demo-image=https%3A%2F%2Furlscan.io%2Fliveshot%2F%3Fwidth%3D1920%26height%3D1080%26url%3Dhttps%3A%2F%2Fadmin.ppanel.dev&demo-title=PPanel%20Admin%20Web&repository-url=https%3A%2F%2Fgithub.com%2Fperfect-panel%2Ffrontend&root-directory=apps%2Fadmin)
#### 用户端部署
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?demo-description=PPanel%20is%20a%20pure%2C%20professional%2C%20and%20perfect%20open-source%20proxy%20panel%20tool&demo-image=https%3A%2F%2Furlscan.io%2Fliveshot%2F%3Fwidth%3D1920%26height%3D1080%26url%3Dhttps%3A%2F%2Fuser.ppanel.dev&demo-title=PPanel%20User%20Web&repository-url=https%3A%2F%2Fgithub.com%2Fperfect-panel%2Ffrontend&root-directory=apps%2Fuser)
部署后在 Vercel 控制台配置环境变量:
- `VITE_API_BASE_URL`: 你的后端 API 地址
- `VITE_CDN_URL`: CDN 地址(可选)
### 方式三:使用 Netlify 部署
#### 1. 安装 Netlify CLI
```bash
npm install -g netlify-cli
```
#### 2. 登录 Netlify
```bash
netlify login
```
#### 3. 部署应用
```bash
# 管理端
cd apps/admin
bun run build
netlify deploy --prod --dir=dist
# 用户端
cd apps/user
bun run build
netlify deploy --prod --dir=dist
```
#### 4. 配置环境变量
在 Netlify 控制台的 Site settings → Build & deploy → Environment 中添加:
- `VITE_API_BASE_URL`
- `VITE_CDN_URL`
### 方式四:使用 Cloudflare Pages
#### 1. 连接 GitHub 仓库
登录 Cloudflare Dashboard → Workers & Pages → Create application → Pages → Connect to Git
#### 2. 配置构建设置
**管理端**
- **Framework preset**: None
- **Build command**: `cd .. && bun install && cd apps/admin && bun run build`
- **Build output directory**: `apps/admin/dist`
- **Root directory**: `apps/admin`
**用户端**
- **Framework preset**: None
- **Build command**: `cd .. && bun install && cd apps/user && bun run build`
- **Build output directory**: `apps/user/dist`
- **Root directory**: `apps/user`
#### 3. 配置环境变量
在 Settings → Environment variables 中添加:
- `VITE_API_BASE_URL`
- `VITE_CDN_URL`
## 自建服务器部署
### 使用 Nginx
#### 1. 安装 Nginx
```bash
# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y
# CentOS/RHEL
sudo yum install nginx -y
```
#### 2. 上传构建文件
```bash
# 创建目录
sudo mkdir -p /var/www/ppanel/{admin,user}
# 上传构建文件
sudo cp -r apps/admin/dist/* /var/www/ppanel/admin/
sudo cp -r apps/user/dist/* /var/www/ppanel/user/
# 设置权限
sudo chown -R www-data:www-data /var/www/ppanel
```
#### 3. 配置 Nginx
**管理端配置** (`/etc/nginx/sites-available/ppanel-admin`)
```nginx
server {
listen 80;
server_name admin.your-domain.com;
root /var/www/ppanel/admin;
index index.html;
# Gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_min_length 1024;
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# SPA 路由支持
location / {
try_files $uri $uri/ /index.html;
}
# 安全头
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
}
```
**用户端配置** (`/etc/nginx/sites-available/ppanel-user`)
```nginx
server {
listen 80;
server_name user.your-domain.com;
root /var/www/ppanel/user;
index index.html;
# 其他配置同管理端
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
location / {
try_files $uri $uri/ /index.html;
}
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
}
```
#### 4. 启用站点
```bash
# 启用站点
sudo ln -s /etc/nginx/sites-available/ppanel-admin /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/ppanel-user /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重载 Nginx
sudo systemctl reload nginx
```
#### 5. 配置 HTTPS(推荐)
使用 Certbot 自动配置 SSL 证书:
```bash
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y
# 获取证书
sudo certbot --nginx -d admin.your-domain.com
sudo certbot --nginx -d user.your-domain.com
# 自动续期
sudo certbot renew --dry-run
```
### 使用 Caddy
Caddy 自动处理 HTTPS,配置更简单。
#### 1. 安装 Caddy
```bash
# Ubuntu/Debian
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
```
#### 2. 配置 Caddyfile
创建 `/etc/caddy/Caddyfile`
```caddy
admin.your-domain.com {
root * /var/www/ppanel/admin
encode gzip
file_server
try_files {path} /index.html
@static {
path *.js *.css *.png *.jpg *.jpeg *.gif *.ico *.svg *.woff *.woff2 *.ttf *.eot
}
header @static Cache-Control "public, max-age=31536000, immutable"
header {
X-Frame-Options "SAMEORIGIN"
X-Content-Type-Options "nosniff"
X-XSS-Protection "1; mode=block"
}
}
user.your-domain.com {
root * /var/www/ppanel/user
encode gzip
file_server
try_files {path} /index.html
@static {
path *.js *.css *.png *.jpg *.jpeg *.gif *.ico *.svg *.woff *.woff2 *.ttf *.eot
}
header @static Cache-Control "public, max-age=31536000, immutable"
header {
X-Frame-Options "SAMEORIGIN"
X-Content-Type-Options "nosniff"
X-XSS-Protection "1; mode=block"
}
}
```
#### 3. 启动 Caddy
```bash
sudo systemctl restart caddy
sudo systemctl enable caddy
```
## 配置 CDN
### Cloudflare 配置
1. 添加域名到 Cloudflare
2. 配置 DNS 记录指向源服务器
3. 启用以下优化选项:
- **Auto Minify**: 启用 JavaScript、CSS、HTML 压缩
- **Brotli**: 启用 Brotli 压缩
- **Rocket Loader**: 启用 JS 异步加载(可选)
- **Caching Level**: 设置为 Standard
4. 配置页面规则:
```
*your-domain.com/*
- Cache Level: Cache Everything
- Edge Cache TTL: 1 month
- Browser Cache TTL: Respect Existing Headers
```
### 阿里云 CDN
1. 创建 CDN 加速域名
2. 配置源站:指向前端服务器
3. 配置缓存规则:
- 静态文件(js, css, 图片):缓存 1 年
- HTML 文件:缓存 5 分钟或不缓存
4. 启用 HTTPS 和 HTTP/2
## 环境变量说明
| 变量名 | 说明 | 必需 | 默认值 | 示例 |
|--------|------|------|--------|------|
| `VITE_API_BASE_URL` | 后端 API 地址 | ✅ | - | `https://api.your-domain.com` |
| `VITE_CDN_URL` | CDN 地址 | ❌ | `https://cdn.jsdmirror.com` | `https://cdn.your-domain.com` |
| `VITE_TUTORIAL_DOCUMENT` | 启用教程文档 | ❌ | `true` | `true` / `false` |
| `VITE_USER_EMAIL` | 默认登录邮箱(仅开发) | ❌ | - | - |
| `VITE_USER_PASSWORD` | 默认登录密码(仅开发) | ❌ | - | - |
## 验证部署
### 检查前端服务
```bash
# 访问前端地址
curl -I https://admin.your-domain.com
curl -I https://user.your-domain.com
# 预期输出
# HTTP/2 200
# content-type: text/html
```
### 检查 API 连接
在浏览器中打开前端地址,打开开发者工具:
1. 查看 Network 标签
2. 检查到 API 的请求是否成功
3. 确认请求地址正确(`https://api.your-domain.com`
4. 查看响应数据是否正常
### 检查构建版本
访问 `/version.lock` 文件查看当前部署的版本:
```bash
curl https://admin.your-domain.com/version.lock
# 输出示例: 1.2.0
```
## 性能优化
### 1. 启用 HTTP/2
在 Nginx 中:
```nginx
listen 443 ssl http2;
```
### 2. 启用 Brotli 压缩
```bash
# 安装 Nginx Brotli 模块
sudo apt install libnginx-mod-http-brotli-filter libnginx-mod-http-brotli-static -y
```
在 Nginx 配置中:
```nginx
brotli on;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml;
brotli_comp_level 6;
```
### 3. 预加载关键资源
构建时 Vite 已自动处理,会在 `index.html` 中添加 `<link rel="modulepreload">`。
### 4. 启用 Service Worker
前端已内置 PWA 支持,构建后自动启用 Service Worker 缓存。
### 5. 使用 CDN 加速
配置 `VITE_CDN_URL` 环境变量,将静态资源加载从 CDN 获取。
## 故障排查
### API 请求失败
**问题**: 前端无法连接到后端 API
**解决方案**:
1. 检查 `VITE_API_BASE_URL` 是否正确配置
2. 检查后端 CORS 配置是否允许前端域名
3. 打开浏览器控制台查看具体错误信息
4. 使用 `curl` 测试后端 API 是否可访问
```bash
curl https://api.your-domain.com/api/health
```
### 页面路由 404
**问题**: 刷新页面或直接访问子路由返回 404
**解决方案**: 确保 Web 服务器配置了 SPA 回退
```nginx
# Nginx
try_files $uri $uri/ /index.html;
# Apache (.htaccess)
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
```
### 静态资源加载失败
**问题**: JS/CSS 文件 404 或无法加载
**解决方案**:
1. 检查文件权限
2. 检查 Nginx `root` 路径是否正确
3. 清除浏览器缓存
4. 检查 CDN 配置
### 构建失败
**问题**: `bun run build` 或 `npm run build` 失败
**解决方案**:
1. 确保 Node.js 版本 >= 20
2. 删除 `node_modules` 和锁文件,重新安装
```bash
rm -rf node_modules bun.lockb
bun install
```
3. 检查是否有语法错误或类型错误
```bash
bun run check
```
## 更新部署
### 从源码更新
```bash
# 拉取最新代码
git pull origin main
# 重新安装依赖
bun install
# 重新构建
bun run build
# 更新文件
sudo rm -rf /var/www/ppanel/admin
sudo rm -rf /var/www/ppanel/user
sudo cp -r apps/admin/dist /var/www/ppanel/admin
sudo cp -r apps/user/dist /var/www/ppanel/user
# 清除 CDN 缓存(如使用 CDN)
```
### Vercel 更新
Vercel 会自动监听 GitHub 仓库变动并自动部署。也可以手动触发:
```bash
vercel --prod
```
### Netlify 更新
```bash
cd apps/admin # 或 apps/user
bun run build
netlify deploy --prod
```
## 安全建议
1. **启用 HTTPS**: 必须使用 SSL/TLS 证书
2. **配置 CSP**: 内容安全策略
```nginx
add_header Content-Security-Policy "default-src 'self'; connect-src 'self' https://api.your-domain.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval';";
```
3. **设置安全头**: 已在 Nginx 配置中包含
4. **禁用目录浏览**: `Options -Indexes` (Apache) 或 `autoindex off;` (Nginx)
5. **限制文件上传大小**:
```nginx
client_max_body_size 10M;
```
## 监控和分析
### 添加网站分析
支持 Google Analytics、Umami、Plausible 等。
配置方式:在 `index.html` 中添加追踪代码,或使用环境变量配置。
### 错误追踪
前端支持集成 Sentry 进行错误追踪(需要在代码中配置)。
## 开发和生产环境
### 本地开发
```bash
# 使用开发服务器
cd apps/admin # 或 apps/user
bun run dev
# 管理端默认运行在 http://localhost:3001
# 用户端默认运行在 http://localhost:3000
```
开发环境会使用 Vite 的代理功能,将 API 请求代理到后端。
### 预览生产构建
```bash
# 构建后预览
bun run build
bun run serve
```
## 下一步
- [后端分离部署](./backend.md) - 如果还未部署后端
- [节点端安装](../node/installation.md) - 部署节点服务
- [功能文档](/zh/admin/dashboard) - 了解功能使用
+90
View File
@@ -0,0 +1,90 @@
---
layout: home
tk:
teekHome: false
hero:
name: PPanel
text: Pure Professional Perfect
tagline: 以优雅的开源控制平面驾驭任意代理集群
actions:
- theme: brand
text: 安装 PPanel
link: /zh/guide/installation/
- theme: alt
text: 项目概览
link: /zh/guide/intro
image:
src: /logo.svg
alt: PPanel
features:
- icon: 🎯
title: 完整的管理功能
details: 在一个控制台内完成服务器接入、节点编排、订阅与产品发布。
- icon: 💼
title: 商务运营工具
details: 优惠券、营销、订单与公告全流程自动化,随时可扩展。
- icon: 👥
title: 用户支持体系
details: 用户目录、工单、文档三位一体,快速响应客户诉求。
- icon: 📊
title: 数据分析
details: 12 种日志维度即刻洞察流量、余额、佣金等核心指标。
- icon: 🔧
title: 灵活配置
details: 支付、认证、广告及系统开关均可配置,无需重新构建。
- icon: 🚀
title: 现代技术栈
details: React 19 + TypeScript + TailwindCSS + shadcn/ui 带来顺滑体验。
- icon: 🛡️
title: 稳健后端
details: go-zero + Gin + Gorm + Asynq 打造的 Go 1.21+ 服务,默认私密。
- icon: 🐳
title: 一体化部署
details: 官方 `ppanel/ppanel` 镜像内置 gateway 与 server,支持 amd64/arm64。
---
## 全栈一览
PPanel 由三个协同仓库组成:
- **[前端](https://github.com/perfect-panel/frontend)**React 19 UI + VitePress 文档,同时覆盖管理端与用户端。
- **[PPanel Server](https://github.com/perfect-panel/server)**Go 1.21+ API,兼顾隐私、可观测性与多协议调度。
- **[ppanel](https://github.com/perfect-panel/ppanel)**:打包 gateway 与后端二进制的 Docker 镜像,一条命令即可启动。
### 前端体验
- 响应式仪表盘、细粒度权限与实时指标支撑全角色协作。
- shadcn/ui + TailwindCSS 组件体系让管理端与用户端保持统一视觉。
- 产品与文档同源,交付团队始终参考最新部署指引。
### 后端基石
- 统一调度 Shadowsocks、V2Ray、Trojan、Trojan-Go 等协议,接口由 go-zero 生成。
- 节点全生命周期:心跳、注册、版本检测、滚动升级一步到位。
- 订阅、计费、支付、订单与工单等业务域与前端配置保持一一映射。
- 默认不开启用户日志,所有敏感配置集中在 `etc/ppanel.yaml` 中可审计。
- 多样交付形态:Go 二进制、Makefile 目标以及 `ppanel/ppanel-server:latest` 等 CI 镜像。
### Gateway 与部署
`ppanel/ppanel` 镜像同时打包 gateway 与后端(amd64/arm64),将仓库中的 `modules/<platform>/etc` 挂载至 `/app/etc`,界面即可直连内置服务。
::: tip Docker 快速启动
```bash
docker pull ppanel/ppanel:latest
docker run -d --name ppanel \
-p 8080:8080 \
-v $(pwd)/ppanel-config:/app/etc \
ppanel/ppanel:latest
```
:::
### 仓库推荐的配置步骤
1. 复制 `modules/<架构>/etc` 至持久目录(如 `ppanel-config`),并更新 `ppanel.yaml` 与密钥。
2. 先用 `docker run` 快速验证,再依据仓库提供的 Compose 模板获得自动重启与健康检查。
3. 升级流程:拉取新镜像、重启容器、由 gateway 负责节点热更新。
4. 排障时使用 `docker exec -it ppanel /bin/sh``docker logs -f ppanel`,所有文件均位于 `/app`
+88
View File
@@ -0,0 +1,88 @@
---
layout: page
sidebar: false
---
<script setup lang="ts">
import Sponsors from '../.vitepress/components/Sponsors.vue'
</script>
<div class="sponsors-header">
<div class="header-badge">💎 赞助支持</div>
<h1>感谢我们的赞助商</h1>
<p>以下赞助商慷慨支持本项目的持续发展,让我们能够为社区提供更好的服务</p>
</div>
<Sponsors
loading-text="加载中..."
error-text="加载赞助商数据失败"
empty-text="暂无赞助商"
visit-title="访问赞助商"
/>
<style scoped>
.sponsors-header {
text-align: center;
margin-bottom: 3.5rem;
padding-top: 3rem;
}
.header-badge {
display: inline-block;
padding: 0.5rem 1.25rem;
background: var(--vp-c-bg-soft);
border: 1px solid var(--vp-c-divider);
border-radius: 2rem;
font-size: 0.875rem;
font-weight: 600;
color: var(--vp-c-brand);
margin-bottom: 1.5rem;
transition: all 0.3s ease;
}
.header-badge:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.sponsors-header h1 {
font-size: 2.75rem;
font-weight: 800;
margin-bottom: 1rem;
letter-spacing: -0.02em;
line-height: 1.2;
}
@keyframes gradient-shift {
0%, 100% { background-position: 0% center; }
50% { background-position: 100% center; }
}
.sponsors-header p {
font-size: 1.125rem;
color: var(--vp-c-text-2);
max-width: 640px;
margin: 0 auto;
line-height: 1.7;
}
@media (max-width: 768px) {
.sponsors-header {
margin-bottom: 2.5rem;
padding-top: 2rem;
}
.header-badge {
font-size: 0.8rem;
padding: 0.4rem 1rem;
}
.sponsors-header h1 {
font-size: 2rem;
}
.sponsors-header p {
font-size: 1rem;
}
}
</style>