# 项目技术栈文档 本文件详细说明 InterConnect-Server 的技术组成、模块职责与关键依赖版本。 ## 1. 运行环境 - **Node.js**: 建议 v18+(Docker 镜像使用 `node:18-alpine`) - **包管理**: npm - **平台**: Windows / Linux / macOS ## 2. 核心依赖与用途 ### 2.1 后端服务 - **express@4.18.x** - REST API 服务框架 - 路由结构:`src/routes/*.js` - 入口:`src/server.js` - **ws@8.14.x** - WebSocket 服务端实现 - 协议:`/ws?api_key=...` - 连接管理:`src/websocket.js` - **sql.js@1.10.x** - SQLite 在内存中运行并导出文件 - 本地持久化文件:`minecraft_ws.db` - 初始化与表结构:`src/database.js` - **bcryptjs@2.4.x** - Key 哈希存储 - 认证校验:`db.verifyApiKey()` - 恢复 Token 哈希:`admin_recovery` 表 - **uuid@9.0.x** - 生成密钥 ID 与原始 Key - **dotenv@16.3.x** - 读取环境变量 - 用于命令过滤与数据库路径等配置 ### 2.2 CLI 工具 - **commander@11.1.x** - CLI 命令定义 - 命令入口:`cli/cli.js` - 支持管理 Key / health / reset-admin - **http / https (Node 内置)** - CLI 直接调用 API ### 2.3 前端 Dashboard 纯静态页面,无前端框架。 - `dashboard/public/index.html` - `dashboard/public/app.js` - `dashboard/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 直接运行 ```bash npm install npm start ``` ### 6.2 Docker ```bash docker-compose up -d ``` ### 6.3 数据持久化 必须保留 `minecraft_ws.db`,否则 Admin Key 将重新生成。 ## 7. 关键配置项 ```env 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,禁止删除数据库