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

2.6 KiB
Raw Blame History

Star Raid 部署指南

运行要求

  • Node.js ≥ 22.5(使用内置 node:sqlite,零 npm 依赖,无需 npm install
  • SQLite 数据库文件自动创建于 star-raid/data/starraid.db(已在 .gitignore

启动

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 部署时必须设为 1Cookie 加 Secure
DATA_DIR star-raid/data 数据库目录

公网部署nginx + HTTPS 推荐)

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.jsCODEX_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.dbWAL 模式,建议先 PRAGMA wal_checkpoint 或直接停服拷贝)
  • 重置排行榜:停服后删除 data/ 下文件,重启自动重建空库