Files
FunConnect/README.md
FunMC b17679cec6 feat: FunConnect v1.0.0 - Minecraft联机平台完整版
- server: Node.js TCP中继服务器,支持多节点集群
- web: React管理面板(仪表盘、房间管理、节点管理)
- client: Electron桌面客户端(连接、创建/加入房间、本地代理)
- deploy: Ubuntu一键部署脚本
2026-02-22 23:33:00 +08:00

207 lines
7.1 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.
# FunMC - Minecraft 联机平台
一个支持多节点中继的 Minecraft 联机平台让玩家无需公网IP即可轻松联机。
## 功能特性
- **TCP 中继代理** - 自动转发 Minecraft 网络流量,支持 Java 版和基岩版
- **多节点集群** - 支持添加多台 Ubuntu 中继服务器,自动负载均衡
- **房间系统** - 创建/加入房间,支持密码保护
- **Web 管理面板** - 现代化 UI支持任意平台浏览器访问
- **实时状态** - WebSocket 实时推送服务器状态
- **一键部署** - 提供 Ubuntu 自动安装脚本和 systemd 服务
## 架构设计
```
┌─────────────────────────────────────────────┐
│ Web 管理面板 │
│ (React + TailwindCSS) │
└──────────────────┬──────────────────────────┘
│ HTTP/WebSocket
┌──────────────────▼──────────────────────────┐
│ 主节点 (Master) │
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ REST API │ │ 房间管理 │ │ 节点管理 │ │
│ └──────────┘ └──────────┘ └──────────────┘ │
│ ┌──────────────────────────────────────┐ │
│ │ TCP 中继引擎 │ │
│ └──────────────────────────────────────┘ │
└──────────────────┬──────────────────────────┘
│ 心跳 + API
┌─────────────┼─────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 工作节点1 │ │ 工作节点2 │ │ 工作节点N │
│ (Ubuntu) │ │ (Ubuntu) │ │ (Ubuntu) │
└─────────┘ └─────────┘ └─────────┘
```
## 快速开始
### 前置条件
- Node.js 18+
- Ubuntu 20.04+ (中继服务器)
### 本地开发
```bash
# 1. 安装服务端依赖
cd server
npm install
# 2. 创建配置文件
cp .env.example .env
# 编辑 .env 设置 IS_MASTER=true
# 3. 启动服务端
npm run dev
# 4. 安装 Web 客户端依赖
cd ../web
npm install
# 5. 启动 Web 客户端
npm run dev
```
访问 http://localhost:5173 打开管理面板。
### Ubuntu 服务器部署
#### 部署主节点
```bash
# 上传项目文件到服务器后
sudo bash deploy/install.sh master relay-master
```
#### 部署工作节点
```bash
sudo bash deploy/install.sh worker relay-node-2
# 按提示输入主节点 URL
```
### 添加新节点
1. 在新的 Ubuntu 服务器上部署工作节点
2. 在 Web 管理面板「节点管理」→「添加节点」中注册
3. 节点会自动加入集群并接收心跳检查
## 使用流程
### 房主(开服方)
1. 启动本地 Minecraft 服务器(或开启局域网模式)
2. 在 Web 面板创建房间,记录房间号
3. 运行 FunMC 客户端连接中继服务器,注册为房主
4. 将房间号分享给好友
### 玩家(加入方)
1. 获取房间号
2. 在 Minecraft 中添加服务器,地址填写 `中继服务器IP:25565`
3. 使用 FunMC 客户端连接中继服务器,输入房间号加入
## 桌面客户端
FunConnect 桌面客户端基于 Electron 构建,提供图形化界面连接中继服务器。
### 功能
- **连接服务器** - 输入中继服务器地址一键连接
- **浏览房间** - 查看所有在线联机房间
- **创建房间** - 将本地MC服务器共享给好友
- **加入房间** - 输入房间号自动建立本地代理MC中添加 `127.0.0.1:25566` 即可联机
- **自定义窗口** - 无边框设计现代化MC风格UI
### 运行客户端
```bash
cd client
npm install
npm run dev
```
### 打包客户端
```bash
cd client
npm run dist
# 输出到 client/release/ 目录
```
## 项目结构
```
FunConnect/
├── server/ # 中继服务端
│ ├── src/
│ │ ├── index.ts # 主入口
│ │ ├── config.ts # 配置管理
│ │ ├── logger.ts # 日志系统
│ │ ├── relay.ts # TCP 中继引擎
│ │ ├── room.ts # 房间管理
│ │ ├── node-manager.ts # 多节点管理
│ │ ├── api.ts # REST API 路由
│ │ └── websocket.ts # WebSocket 实时通信
│ ├── .env.example # 配置示例
│ ├── package.json
│ └── tsconfig.json
├── web/ # Web 管理面板
│ ├── src/
│ │ ├── main.tsx # 入口
│ │ ├── App.tsx # 路由和布局
│ │ ├── api.ts # API 客户端
│ │ ├── index.css # TailwindCSS 样式
│ │ └── pages/
│ │ ├── Dashboard.tsx # 仪表盘
│ │ ├── Rooms.tsx # 房间列表
│ │ ├── CreateRoom.tsx # 创建房间
│ │ ├── Nodes.tsx # 节点管理
│ │ └── AddNode.tsx # 添加节点
│ ├── package.json
│ └── vite.config.ts
├── client/ # Electron 桌面客户端
│ ├── src/main/
│ │ ├── index.ts # Electron 主进程
│ │ ├── preload.ts # 预加载脚本
│ │ ├── api-client.ts # API 客户端
│ │ ├── relay-client.ts # TCP 中继连接
│ │ └── local-proxy.ts # 本地代理服务器
│ ├── renderer/
│ │ ├── index.html # 客户端界面
│ │ ├── style.css # 样式
│ │ └── app.js # 交互逻辑
│ └── package.json
├── deploy/
│ └── install.sh # Ubuntu 一键部署脚本
└── README.md
```
## API 文档
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/health` | 健康检查 |
| GET | `/api/stats` | 服务器统计 |
| GET | `/api/rooms` | 房间列表 |
| POST | `/api/rooms` | 创建房间 |
| DELETE | `/api/rooms/:id` | 删除房间 |
| GET | `/api/nodes` | 节点列表(主节点) |
| POST | `/api/nodes/register` | 注册节点(主节点) |
| DELETE | `/api/nodes/:id` | 移除节点(主节点) |
| GET | `/api/nodes/best` | 获取最佳节点(主节点) |
| GET | `/api/cluster/rooms` | 集群房间列表(主节点) |
## 技术栈
- **服务端**: Node.js, TypeScript, Express, WebSocket
- **Web 面板**: React 18, Vite, TailwindCSS, Lucide Icons
- **部署**: Ubuntu, systemd, Bash
## License
MIT