Spaces:
Sleeping
Sleeping
项目技术栈文档
本文件详细说明 InterConnect-Server 的技术组成、模块职责与关键依赖版本。
1. 运行环境
- Node.js: 建议 v18+(Docker 镜像使用
node:18-alpine) - 包管理: npm
- 平台: Windows / Linux / macOS
2. 核心依赖与用途
2.1 后端服务
-
- REST API 服务框架
- 路由结构:
src/routes/*.js - 入口:
src/server.js
-
- WebSocket 服务端实现
- 协议:
/ws?api_key=... - 连接管理:
src/websocket.js
-
- SQLite 在内存中运行并导出文件
- 本地持久化文件:
minecraft_ws.db - 初始化与表结构:
src/database.js
-
- Key 哈希存储
- 认证校验:
db.verifyApiKey() - 恢复 Token 哈希:
admin_recovery表
-
- 生成密钥 ID 与原始 Key
-
- 读取环境变量
- 用于命令过滤与数据库路径等配置
2.2 CLI 工具
-
- CLI 命令定义
- 命令入口:
cli/cli.js - 支持管理 Key / health / reset-admin
http / https (Node 内置)
- CLI 直接调用 API
2.3 前端 Dashboard
纯静态页面,无前端框架。
dashboard/public/index.htmldashboard/public/app.jsdashboard/public/style.css
3. 关键模块职责
3.1 src/server.js
- 服务入口
- REST API 路由挂载
- WebSocket 升级与连接管理
- 初始化数据库与 Admin Key / Recovery Token
3.2 src/database.js
- SQLite 初始化与持久化
- Key 创建 / 激活 / 停用 / 删除
- Admin Recovery Token 管理
- 事件日志写入
3.3 src/auth.js
- Bearer Token 认证中间件
- Admin / Regular 权限判断
3.4 src/routes/keys.js
- Key CRUD
/manage/keys/server-keys列表与激活/停用逻辑
3.5 src/routes/server.js
- 服务器信息与命令入口
- Admin 命令过滤(可配置 allowlist / blocklist)
3.6 src/websocket.js
- WebSocket 连接管理
- 广播消息
4. 数据结构
4.1 api_keys
| 字段 | 类型 | 说明 |
|---|---|---|
| id | TEXT | 主键 |
| name | TEXT | Key 名称 |
| description | TEXT | 描述 |
| key_hash | TEXT | bcrypt 哈希 |
| key_prefix | TEXT | mc_admin_ / mc_key_ / mc_server_ |
| key_type | TEXT | admin / regular / server |
| server_id | TEXT | 关联服务器 |
| regular_key_id | TEXT | 关联 Regular Key |
| created_at | TEXT | 创建时间 |
| last_used | TEXT | 最近使用 |
| is_active | INTEGER | 是否启用 |
4.2 event_logs
事件上报记录。
4.3 admin_recovery
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 固定为 1 |
| token_hash | TEXT | 恢复 Token 哈希 |
| created_at | TEXT | 创建时间 |
| last_used | TEXT | 最近使用 |
5. 权限与安全策略
- Admin Key:完整管理权限
- Regular Key:只允许操作自身 Server Key
- Server Key:仅用于插件/Mod,不允许登录 Dashboard
- Admin 命令过滤:
ADMIN_ALLOWED_COMMANDS非空时为 allowlist- 否则使用
ADMIN_BLOCKED_COMMANDS作为默认拦截表
6. 部署与运行
6.1 直接运行
npm install
npm start
6.2 Docker
docker-compose up -d
6.3 数据持久化
必须保留 minecraft_ws.db,否则 Admin Key 将重新生成。
7. 关键配置项
SERVER_HOST=0.0.0.0
SERVER_PORT=8000
DATABASE_PATH=minecraft_ws.db
ADMIN_ALLOWED_COMMANDS=list,tps,version
ADMIN_BLOCKED_COMMANDS=stop,deop,op,ban
8. 兼容与约束
- WebSocket 与 REST 使用同一端口
- Dashboard 只通过
/dashboard提供 - Admin Key 恢复必须使用 recovery token,禁止删除数据库