Files
MC_Report/INSTALL.md

161 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MC Report System — 部署文档
## 环境要求
- Node.js ≥ 18 / npm ≥ 9
- MySQL ≥ 5.7(或 MariaDB ≥ 10.2
- 任意操作系统
## 快速开始
```bash
# 1. 安装依赖
npm install
# 2. 启动
node backend/server.js
# 3. 浏览器打开
# → 自动跳转安装向导
```
访问 `http://localhost:3100`,将自动进入安装向导。
## 安装向导
两步完成:
**第1步 — 数据库配置**
- MySQL 主机(默认 localhost
- 端口(默认 3306
- 用户名 / 密码
- 数据库名(不存在则自动创建)
**第2步 — 创建服主账号**
- 站点名称、站点地址
- 服主用户名、密码、邮箱、游戏名
点击完成后配置写入 `data/config.json`**重启服务器**即可加载业务路由。
## 生产环境
### 环境变量
| 变量 | 说明 | 默认值 |
|------|------|--------|
| `PORT` | 监听端口 | `3100` |
| `CORS_ORIGIN` | 允许的跨域来源 | `http://localhost:3100` |
### 启动(生产)
```bash
# Linux / macOS
PORT=8080 CORS_ORIGIN=https://your-domain.com node backend/server.js
# Windows PowerShell
$env:PORT="8080"
$env:CORS_ORIGIN="https://your-domain.com"
node backend/server.js
```
### 持久化进程(推荐 pm2
```bash
npm i -g pm2
pm2 start backend/server.js --name mc-report
pm2 save
pm2 startup
```
### Nginx 反代
```nginx
server {
listen 80;
server_name report.your-domain.com;
location / {
proxy_pass http://127.0.0.1:3100;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
## 配置文件
安装后生成 `data/config.json`
```json
{
"db_host": "localhost",
"db_port": 3306,
"db_user": "root",
"db_pass": "",
"db_name": "mc_report",
"jwt_secret": "(随机64位)",
"api_key": "(随机48位)"
}
```
- `jwt_secret` 安装时随机生成,用于签发登录令牌
- `api_key` 安装时随机生成,前端自动注入请求头,保护 API 接口
## 数据库
MySQL 数据库安装时自动建表。如需备份:
```bash
mysqldump -u root -p mc_report > backup_$(date +%Y%m%d).sql
```
## 上传文件
存储在 `data/uploads/`,通过 `/api/uploads/:filename` 鉴权下载。
| 限制 | 值 |
|------|----|
| 单文件上限 | 50MB |
| 每次最多 | 5 个 |
| 允许格式 | JPG/PNG/GIF/WebP/MP4/WebM |
## 邮件配置
后台"系统设置"页面配置 SMTP。未配置时注册用户自动激活。
## Webhook
后台"通知配置"页面添加 Discord 兼容 Webhook可选触发事件。
## 目录结构
```
mc-report/
├── backend/
│ ├── server.js
│ ├── db.js # MySQL 连接池 + 建表
│ ├── mailer.js # SMTP 邮件
│ ├── captcha.js # 算术验证码
│ ├── webhook.js # Webhook 通知
│ ├── middleware/
│ │ ├── auth.js # JWT 认证
│ │ ├── upload.js # 文件上传安全
│ │ └── security.js # 限速 + XSS + API Key
│ └── routes/
│ ├── install.js # 安装向导 API
│ ├── auth.js # 注册/登录
│ ├── tickets.js # 工单核心
│ ├── users.js # 用户管理
│ ├── settings.js # 设置 + 邮件模板
│ ├── export.js # 数据导出
│ ├── captcha.js # 验证码
│ ├── notifications.js # Webhook 配置
│ └── uploads.js # 附件下载
├── public/ # 前端 SPA
├── data/
│ ├── config.json # 数据库连接 + 密钥
│ └── uploads/ # 上传文件
├── package.json
└── INSTALL.md
```