starraid/star-raid/DEPLOY.md
JOJO ab403f4cc7 后端化:账号系统+排行榜+图鉴收集同步+飞行员大厅(零依赖Node+SQLite)
- server/:node:http+node:sqlite 零依赖后端(users/sessions/user_stats/codex_unlocks/runs 五表)
- 安全:scrypt密码哈希/服务端session/全prepared statement/输入白名单/限流/CSP等安全头/静态白名单防穿越
- 前端:o-auth登陆注册 + o-home飞行员大厅(排行榜Top100三排序+图鉴展柜背景:随机3主3副2僚机+刷怪巡游)
- 图鉴改为收集点亮制(未收集=剪影+???),服务端codex_unlocks与本地并集同步
- 修复:回标题/大厅后背景卡在上场残影——render按battleUI门控+离场G=null;空闲=星空
- 结算上报:endRun/rush胜利两处submitRun,Boss击杀计数入排行榜
- playwright全流程验证通过(注册/登陆/游戏/结算/图鉴/安全注入/限流);游戏视觉未验收(用户亲自)
2026-08-06 04:20:25 +08:00

62 lines
2.6 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.

# Star Raid 部署指南
## 运行要求
- **Node.js ≥ 22.5**(使用内置 `node:sqlite`,零 npm 依赖,无需 `npm install`
- SQLite 数据库文件自动创建于 `star-raid/data/starraid.db`(已在 .gitignore
## 启动
```bash
cd star-raid
npm start # = node server/server.js
# 或指定环境变量
PORT=8643 HOST=0.0.0.0 node server/server.js
```
| 环境变量 | 默认 | 说明 |
|---|---|---|
| `PORT` | `8643` | 监听端口 |
| `HOST` | `0.0.0.0` | 监听地址 |
| `COOKIE_SECURE` | 空 | **HTTPS 部署时必须设为 `1`**Cookie 加 Secure |
| `DATA_DIR` | `star-raid/data` | 数据库目录 |
## 公网部署nginx + HTTPS 推荐)
```nginx
server {
listen 443 ssl;
server_name your-domain.com;
# ssl_certificate / certbot 申请
location / {
proxy_pass http://127.0.0.1:8643;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr; # 限流按真实 IP
}
}
```
启动时 `COOKIE_SECURE=1 PORT=8643 node server/server.js`,用 systemd/supervisor 守护进程。
## 已实现的安全措施
- 密码scrypt + 每用户随机盐 + 时序安全比较;登陆失败统一报错(不泄露账号是否存在),不存在账号也跑一次哈希防时序探测
- 会话32 字节随机 token 存服务端 SQLiteHttpOnly + SameSite=Lax7 天滑动续期,可吊销
- SQL 注入:全部 prepared statement图鉴 key 服务端白名单(`server/api.js` 的 `CODEX_KEYS`**新增装备时必须同步**
- 输入:用户名/邮箱/密码白名单校验;请求体 ≤16KBPOST 强制 `application/json`(配合 SameSite 防 CSRF
- 限流:注册 10 次/5 分钟/IP登陆 20 次/5 分钟/IP成绩上报 20 次/5 分钟/账号
- 静态资源白名单:只放行 `/`、`/css/`、`/js/``server/`、`data/`、`demo/` 不可访问),防目录穿越
- 安全头CSP / X-Frame-Options / X-Content-Type-Options / Referrer-Policy
## v1 边界(明确不做)
- 邮箱仅作唯一标识,**无验证邮件、无找回密码**(需 SMTP 服务,留 v2
- **反作弊仅为基础校验**(数值范围/限流):纯客户端游戏无法杜绝作弊,有志者改内存照样能伪造高分。如需严肃竞技,要加服务端回放校验(大工程)
- 星币/机库强化/机体解锁仍存浏览器 localStorage**不随账号同步**(跨设备冲突解决复杂,留 v2
- 排行榜 = 全服单榜,无分页/赛季
## 数据维护
- 备份:拷贝 `data/starraid.db`WAL 模式,建议先 `PRAGMA wal_checkpoint` 或直接停服拷贝)
- 重置排行榜:停服后删除 `data/` 下文件,重启自动重建空库