3.7 KiB
3.7 KiB
MC Report System — 部署文档
环境要求
- Node.js ≥ 18 / npm ≥ 9
- MySQL ≥ 5.7(或 MariaDB ≥ 10.2)
- 任意操作系统
快速开始
# 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 |
启动(生产)
# 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)
npm i -g pm2
pm2 start backend/server.js --name mc-report
pm2 save
pm2 startup
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:
{
"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 数据库安装时自动建表。如需备份:
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