# FunConnect Server Minecraft 联机中继服务端,包含 TCP 中继引擎、REST API、WebSocket 实时通信、Web 管理面板。 ## 功能 - **TCP 中继引擎** - 转发 Minecraft 客户端与服务端之间的流量 - **多节点集群** - 支持主节点 + 工作节点架构,水平扩展 - **房间管理** - 创建、加入、密码验证、过期清理 - **玩家管理** - 玩家列表、踢出玩家 - **流量监控** - 实时统计各房间流量 - **Token 认证** - 保护写操作 API - **Web 管理面板** - React + Vite + TailwindCSS 构建的可视化管理界面 ## 快速开始 ### 安装依赖 ```bash # 服务端 npm install # Web 管理面板 cd web && npm install ``` ### 配置 复制 `.env.example` 为 `.env` 并修改: ```bash cp .env.example .env ``` 关键配置项: - `API_PORT` - HTTP API 端口(默认 3000) - `RELAY_PORT` - TCP 中继端口(默认 25565) - `IS_MASTER` - 是否为主节点 - `SECRET` - API 认证密钥(留空则不启用认证) ### 启动 ```bash # 开发模式 npm run dev # 生产模式 npm run build npm start ``` ### 启动 Web 管理面板 ```bash cd web npm run dev # 访问 http://localhost:5173 ``` ### Ubuntu 一键部署 ```bash chmod +x deploy/install.sh sudo ./deploy/install.sh ``` > **详细部署教程**(主节点、工作节点、Nginx、SSL、多节点集群)请查看 [DEPLOY.md](DEPLOY.md) ## 项目结构 ``` server/ ├── src/ │ ├── index.ts # 主入口 │ ├── config.ts # 配置管理 │ ├── logger.ts # 日志系统 │ ├── relay.ts # TCP 中继引擎 │ ├── room.ts # 房间管理 │ ├── node-manager.ts # 多节点管理 │ ├── api.ts # REST API │ └── websocket.ts # WebSocket 实时通信 ├── web/ # Web 管理面板 │ ├── src/ │ │ ├── App.tsx # 主组件 │ │ ├── api.ts # API 客户端 │ │ └── pages/ # 页面组件 │ └── package.json ├── deploy/ │ └── install.sh # Ubuntu 部署脚本 ├── .env.example ├── package.json └── tsconfig.json ``` ## API 文档 | 方法 | 路径 | 说明 | 认证 | |------|------|------|------| | GET | `/api/health` | 健康检查 | 否 | | GET | `/api/stats` | 服务器统计 | 否 | | GET | `/api/rooms` | 房间列表 | 否 | | POST | `/api/rooms` | 创建房间 | 是 | | GET | `/api/rooms/:id` | 房间详情 + 玩家列表 | 否 | | POST | `/api/rooms/:id/join` | 加入验证(密码校验)| 是 | | POST | `/api/rooms/:id/kick/:pid` | 踢出玩家 | 是 | | DELETE | `/api/rooms/:id` | 删除房间 | 是 | | GET | `/api/traffic` | 流量统计 | 否 | | GET | `/api/nodes` | 节点列表(主节点)| 否 | | POST | `/api/nodes/register` | 注册节点 | 是 | | DELETE | `/api/nodes/:id` | 移除节点 | 是 | ## 技术栈 - **Node.js + TypeScript** - **Express** - HTTP API - **ws** - WebSocket - **Winston** - 日志 - **React 18 + Vite + TailwindCSS** - Web 管理面板