575 lines
11 KiB
Markdown
575 lines
11 KiB
Markdown
|
|
# FunMC 部署指南
|
|||
|
|
|
|||
|
|
本文档详细介绍如何部署 FunMC 服务端和客户端。
|
|||
|
|
|
|||
|
|
## 目录
|
|||
|
|
|
|||
|
|
- [系统要求](#系统要求)
|
|||
|
|
- [快速部署 (Docker)](#快速部署-docker)
|
|||
|
|
- [手动部署](#手动部署)
|
|||
|
|
- [生产环境配置](#生产环境配置)
|
|||
|
|
- [监控与维护](#监控与维护)
|
|||
|
|
- [局域网部署](#局域网部署)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 系统要求
|
|||
|
|
|
|||
|
|
### 服务器
|
|||
|
|
|
|||
|
|
| 组件 | 最低要求 | 推荐配置 |
|
|||
|
|
|------|---------|---------|
|
|||
|
|
| CPU | 1 核 | 2 核+ |
|
|||
|
|
| 内存 | 512 MB | 1 GB+ |
|
|||
|
|
| 存储 | 1 GB | 10 GB+ |
|
|||
|
|
| 系统 | Ubuntu 20.04 / Debian 11 / CentOS 8 | Ubuntu 22.04 LTS |
|
|||
|
|
| 网络 | 1 Mbps | 10 Mbps+ |
|
|||
|
|
|
|||
|
|
### 开放端口
|
|||
|
|
|
|||
|
|
| 端口 | 协议 | 用途 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 80 | TCP | HTTP (重定向到 HTTPS) |
|
|||
|
|
| 443 | TCP | HTTPS (API + WebSocket) |
|
|||
|
|
| 7900 | UDP | QUIC 中继服务 (主线路) |
|
|||
|
|
| 7901 | UDP | QUIC 中继服务 (备用) |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 快速部署 (Docker)
|
|||
|
|
|
|||
|
|
### 1. 安装 Docker
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Ubuntu/Debian
|
|||
|
|
curl -fsSL https://get.docker.com | sh
|
|||
|
|
sudo usermod -aG docker $USER
|
|||
|
|
|
|||
|
|
# 安装 Docker Compose
|
|||
|
|
sudo apt install docker-compose-plugin
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 获取配置文件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 克隆仓库
|
|||
|
|
git clone https://github.com/mofangfang/funmc.git
|
|||
|
|
cd funmc
|
|||
|
|
|
|||
|
|
# 或者只下载 Docker 配置
|
|||
|
|
mkdir funmc && cd funmc
|
|||
|
|
curl -O https://raw.githubusercontent.com/mofangfang/funmc/main/docker/docker-compose.yml
|
|||
|
|
curl -O https://raw.githubusercontent.com/mofangfang/funmc/main/.env.example
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 配置环境变量
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
编辑 `.env` 文件:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# 数据库配置
|
|||
|
|
POSTGRES_USER=funmc
|
|||
|
|
POSTGRES_PASSWORD=your_secure_password_here
|
|||
|
|
POSTGRES_DB=funmc
|
|||
|
|
|
|||
|
|
# JWT 密钥 (至少 32 字符)
|
|||
|
|
JWT_SECRET=change-this-to-a-very-long-random-string-at-least-32-chars
|
|||
|
|
|
|||
|
|
# 服务器地址
|
|||
|
|
SERVER_DOMAIN=funmc.example.com
|
|||
|
|
|
|||
|
|
# 中继服务器配置
|
|||
|
|
RELAY_PORT=7900
|
|||
|
|
RELAY_BACKUP_PORT=7901
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 启动服务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 启动所有服务
|
|||
|
|
docker compose up -d
|
|||
|
|
|
|||
|
|
# 查看运行状态
|
|||
|
|
docker compose ps
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
docker compose logs -f
|
|||
|
|
|
|||
|
|
# 停止服务
|
|||
|
|
docker compose down
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 配置 SSL 证书
|
|||
|
|
|
|||
|
|
推荐使用 Certbot 获取免费 SSL 证书:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 安装 Certbot
|
|||
|
|
sudo apt install certbot
|
|||
|
|
|
|||
|
|
# 获取证书
|
|||
|
|
sudo certbot certonly --standalone -d funmc.example.com
|
|||
|
|
|
|||
|
|
# 证书位置
|
|||
|
|
# /etc/letsencrypt/live/funmc.example.com/fullchain.pem
|
|||
|
|
# /etc/letsencrypt/live/funmc.example.com/privkey.pem
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 手动部署
|
|||
|
|
|
|||
|
|
### 1. 安装依赖
|
|||
|
|
|
|||
|
|
#### Ubuntu/Debian
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 更新系统
|
|||
|
|
sudo apt update && sudo apt upgrade -y
|
|||
|
|
|
|||
|
|
# 安装基础工具
|
|||
|
|
sudo apt install -y build-essential pkg-config libssl-dev curl git
|
|||
|
|
|
|||
|
|
# 安装 Rust
|
|||
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|||
|
|
source $HOME/.cargo/env
|
|||
|
|
|
|||
|
|
# 安装 PostgreSQL
|
|||
|
|
sudo apt install -y postgresql postgresql-contrib
|
|||
|
|
|
|||
|
|
# 启动 PostgreSQL
|
|||
|
|
sudo systemctl enable postgresql
|
|||
|
|
sudo systemctl start postgresql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### CentOS/RHEL
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 更新系统
|
|||
|
|
sudo dnf update -y
|
|||
|
|
|
|||
|
|
# 安装基础工具
|
|||
|
|
sudo dnf groupinstall -y "Development Tools"
|
|||
|
|
sudo dnf install -y openssl-devel curl git
|
|||
|
|
|
|||
|
|
# 安装 Rust
|
|||
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|||
|
|
source $HOME/.cargo/env
|
|||
|
|
|
|||
|
|
# 安装 PostgreSQL
|
|||
|
|
sudo dnf install -y postgresql-server postgresql-contrib
|
|||
|
|
sudo postgresql-setup --initdb
|
|||
|
|
sudo systemctl enable postgresql
|
|||
|
|
sudo systemctl start postgresql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 配置数据库
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 切换到 postgres 用户
|
|||
|
|
sudo -u postgres psql
|
|||
|
|
|
|||
|
|
# 在 psql 中执行:
|
|||
|
|
CREATE DATABASE funmc;
|
|||
|
|
CREATE USER funmc WITH ENCRYPTED PASSWORD 'your_password';
|
|||
|
|
GRANT ALL PRIVILEGES ON DATABASE funmc TO funmc;
|
|||
|
|
\q
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
编辑 `/etc/postgresql/14/main/pg_hba.conf` (版本号可能不同):
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
# 添加以下行允许本地密码认证
|
|||
|
|
local funmc funmc md5
|
|||
|
|
host funmc funmc 127.0.0.1/32 md5
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
重启 PostgreSQL:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo systemctl restart postgresql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 编译服务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 克隆仓库
|
|||
|
|
git clone https://github.com/mofangfang/funmc.git
|
|||
|
|
cd funmc
|
|||
|
|
|
|||
|
|
# 编译主服务器
|
|||
|
|
cargo build --release -p funmc-server
|
|||
|
|
|
|||
|
|
# 编译中继服务器
|
|||
|
|
cargo build --release -p funmc-relay-server
|
|||
|
|
|
|||
|
|
# 复制二进制文件
|
|||
|
|
sudo mkdir -p /opt/funmc/bin
|
|||
|
|
sudo cp target/release/funmc-server /opt/funmc/bin/
|
|||
|
|
sudo cp target/release/funmc-relay-server /opt/funmc/bin/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 配置服务
|
|||
|
|
|
|||
|
|
创建配置目录:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo mkdir -p /etc/funmc
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
创建主服务器配置 `/etc/funmc/server.env`:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# 数据库连接
|
|||
|
|
DATABASE_URL=postgres://funmc:your_password@localhost/funmc
|
|||
|
|
|
|||
|
|
# JWT 密钥
|
|||
|
|
JWT_SECRET=your-super-secret-jwt-key-at-least-32-characters
|
|||
|
|
|
|||
|
|
# 服务绑定地址
|
|||
|
|
BIND_ADDR=127.0.0.1:3000
|
|||
|
|
|
|||
|
|
# 内置 QUIC 中继端口
|
|||
|
|
QUIC_PORT=3001
|
|||
|
|
|
|||
|
|
# 日志级别
|
|||
|
|
RUST_LOG=funmc_server=info,tower_http=info
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
创建中继服务器配置 `/etc/funmc/relay.env`:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# 中继端口
|
|||
|
|
RELAY_PORT=7900
|
|||
|
|
|
|||
|
|
# JWT 密钥 (必须与主服务器一致)
|
|||
|
|
JWT_SECRET=your-super-secret-jwt-key-at-least-32-characters
|
|||
|
|
|
|||
|
|
# 日志级别
|
|||
|
|
RUST_LOG=funmc_relay_server=info
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 运行数据库迁移
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /path/to/funmc/server
|
|||
|
|
|
|||
|
|
# 安装 sqlx-cli
|
|||
|
|
cargo install sqlx-cli --no-default-features --features postgres
|
|||
|
|
|
|||
|
|
# 运行迁移
|
|||
|
|
DATABASE_URL=postgres://funmc:your_password@localhost/funmc sqlx migrate run
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. 创建 Systemd 服务
|
|||
|
|
|
|||
|
|
主服务器 `/etc/systemd/system/funmc-server.service`:
|
|||
|
|
|
|||
|
|
```ini
|
|||
|
|
[Unit]
|
|||
|
|
Description=FunMC API Server
|
|||
|
|
After=network.target postgresql.service
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
Type=simple
|
|||
|
|
User=funmc
|
|||
|
|
Group=funmc
|
|||
|
|
WorkingDirectory=/opt/funmc
|
|||
|
|
EnvironmentFile=/etc/funmc/server.env
|
|||
|
|
ExecStart=/opt/funmc/bin/funmc-server
|
|||
|
|
Restart=always
|
|||
|
|
RestartSec=5
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
中继服务器 `/etc/systemd/system/funmc-relay.service`:
|
|||
|
|
|
|||
|
|
```ini
|
|||
|
|
[Unit]
|
|||
|
|
Description=FunMC Relay Server
|
|||
|
|
After=network.target
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
Type=simple
|
|||
|
|
User=funmc
|
|||
|
|
Group=funmc
|
|||
|
|
WorkingDirectory=/opt/funmc
|
|||
|
|
EnvironmentFile=/etc/funmc/relay.env
|
|||
|
|
ExecStart=/opt/funmc/bin/funmc-relay-server
|
|||
|
|
Restart=always
|
|||
|
|
RestartSec=5
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
创建服务用户并启动:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 创建用户
|
|||
|
|
sudo useradd -r -s /bin/false funmc
|
|||
|
|
|
|||
|
|
# 设置权限
|
|||
|
|
sudo chown -R funmc:funmc /opt/funmc
|
|||
|
|
|
|||
|
|
# 重载 systemd
|
|||
|
|
sudo systemctl daemon-reload
|
|||
|
|
|
|||
|
|
# 启动服务
|
|||
|
|
sudo systemctl enable funmc-server funmc-relay
|
|||
|
|
sudo systemctl start funmc-server funmc-relay
|
|||
|
|
|
|||
|
|
# 检查状态
|
|||
|
|
sudo systemctl status funmc-server funmc-relay
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 生产环境配置
|
|||
|
|
|
|||
|
|
### Nginx 反向代理
|
|||
|
|
|
|||
|
|
安装 Nginx:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo apt install -y nginx
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
创建配置 `/etc/nginx/sites-available/funmc`:
|
|||
|
|
|
|||
|
|
```nginx
|
|||
|
|
# HTTP 重定向到 HTTPS
|
|||
|
|
server {
|
|||
|
|
listen 80;
|
|||
|
|
server_name funmc.example.com;
|
|||
|
|
return 301 https://$server_name$request_uri;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# HTTPS 配置
|
|||
|
|
server {
|
|||
|
|
listen 443 ssl http2;
|
|||
|
|
server_name funmc.example.com;
|
|||
|
|
|
|||
|
|
# SSL 证书
|
|||
|
|
ssl_certificate /etc/letsencrypt/live/funmc.example.com/fullchain.pem;
|
|||
|
|
ssl_certificate_key /etc/letsencrypt/live/funmc.example.com/privkey.pem;
|
|||
|
|
|
|||
|
|
# SSL 安全配置
|
|||
|
|
ssl_protocols TLSv1.2 TLSv1.3;
|
|||
|
|
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
|
|||
|
|
ssl_prefer_server_ciphers off;
|
|||
|
|
|
|||
|
|
# 日志
|
|||
|
|
access_log /var/log/nginx/funmc_access.log;
|
|||
|
|
error_log /var/log/nginx/funmc_error.log;
|
|||
|
|
|
|||
|
|
# API 代理
|
|||
|
|
location / {
|
|||
|
|
proxy_pass http://127.0.0.1:3000;
|
|||
|
|
proxy_set_header Host $host;
|
|||
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|||
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|||
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# WebSocket 代理
|
|||
|
|
location /api/v1/ws {
|
|||
|
|
proxy_pass http://127.0.0.1:3000;
|
|||
|
|
proxy_http_version 1.1;
|
|||
|
|
proxy_set_header Upgrade $http_upgrade;
|
|||
|
|
proxy_set_header Connection "upgrade";
|
|||
|
|
proxy_set_header Host $host;
|
|||
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|||
|
|
proxy_read_timeout 86400;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
启用配置:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo ln -s /etc/nginx/sites-available/funmc /etc/nginx/sites-enabled/
|
|||
|
|
sudo nginx -t
|
|||
|
|
sudo systemctl reload nginx
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 防火墙配置
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# UFW (Ubuntu)
|
|||
|
|
sudo ufw allow 80/tcp
|
|||
|
|
sudo ufw allow 443/tcp
|
|||
|
|
sudo ufw allow 7900/udp
|
|||
|
|
sudo ufw allow 7901/udp
|
|||
|
|
sudo ufw enable
|
|||
|
|
|
|||
|
|
# firewalld (CentOS)
|
|||
|
|
sudo firewall-cmd --permanent --add-service=http
|
|||
|
|
sudo firewall-cmd --permanent --add-service=https
|
|||
|
|
sudo firewall-cmd --permanent --add-port=7900/udp
|
|||
|
|
sudo firewall-cmd --permanent --add-port=7901/udp
|
|||
|
|
sudo firewall-cmd --reload
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 监控与维护
|
|||
|
|
|
|||
|
|
### 日志查看
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 主服务器日志
|
|||
|
|
sudo journalctl -u funmc-server -f
|
|||
|
|
|
|||
|
|
# 中继服务器日志
|
|||
|
|
sudo journalctl -u funmc-relay -f
|
|||
|
|
|
|||
|
|
# Nginx 访问日志
|
|||
|
|
sudo tail -f /var/log/nginx/funmc_access.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 数据库备份
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 备份
|
|||
|
|
pg_dump -U funmc -d funmc > backup_$(date +%Y%m%d).sql
|
|||
|
|
|
|||
|
|
# 恢复
|
|||
|
|
psql -U funmc -d funmc < backup_20240101.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 更新服务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /path/to/funmc
|
|||
|
|
git pull
|
|||
|
|
|
|||
|
|
# 重新编译
|
|||
|
|
cargo build --release -p funmc-server -p funmc-relay-server
|
|||
|
|
|
|||
|
|
# 更新二进制
|
|||
|
|
sudo systemctl stop funmc-server funmc-relay
|
|||
|
|
sudo cp target/release/funmc-server /opt/funmc/bin/
|
|||
|
|
sudo cp target/release/funmc-relay-server /opt/funmc/bin/
|
|||
|
|
sudo systemctl start funmc-server funmc-relay
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 局域网部署
|
|||
|
|
|
|||
|
|
如果只需要在局域网内使用 FunMC,可以使用简化配置。
|
|||
|
|
|
|||
|
|
### 局域网服务器配置
|
|||
|
|
|
|||
|
|
1. **安装依赖**(同上)
|
|||
|
|
|
|||
|
|
2. **简化配置** `/etc/funmc/server.env`:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
DATABASE_URL=postgres://funmc:password@localhost/funmc
|
|||
|
|
JWT_SECRET=local-development-secret-key-32chars
|
|||
|
|
BIND_ADDR=0.0.0.0:3000
|
|||
|
|
QUIC_PORT=3001
|
|||
|
|
RUST_LOG=info
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **启动服务**:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 直接运行
|
|||
|
|
./funmc-server
|
|||
|
|
|
|||
|
|
# 或使用 systemd
|
|||
|
|
sudo systemctl start funmc-server
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 客户端配置
|
|||
|
|
|
|||
|
|
编辑客户端配置文件,将服务器地址改为局域网 IP:
|
|||
|
|
|
|||
|
|
文件位置: `client/src/config.rs`
|
|||
|
|
|
|||
|
|
```rust
|
|||
|
|
pub const DEFAULT_SERVER_URL: &str = "http://192.168.1.100:3000";
|
|||
|
|
pub const DEFAULT_RELAY_URL: &str = "192.168.1.100:7900";
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
或者在客户端设置页面修改服务器地址。
|
|||
|
|
|
|||
|
|
### 局域网联机测试
|
|||
|
|
|
|||
|
|
1. **启动 Minecraft 服务器**
|
|||
|
|
- 在一台电脑上启动 Minecraft 服务器
|
|||
|
|
- 或在单人世界中开启局域网联机
|
|||
|
|
|
|||
|
|
2. **主机操作**
|
|||
|
|
- 打开 FunMC 客户端
|
|||
|
|
- 登录账号(首次需要注册)
|
|||
|
|
- 创建房间
|
|||
|
|
- 点击"开始托管"
|
|||
|
|
|
|||
|
|
3. **玩家操作**
|
|||
|
|
- 打开 FunMC 客户端
|
|||
|
|
- 登录账号
|
|||
|
|
- 在大厅找到房间并加入
|
|||
|
|
- 点击"连接"
|
|||
|
|
- 复制显示的地址(如 `127.0.0.1:25566`)
|
|||
|
|
- 在 Minecraft 中添加服务器并连接
|
|||
|
|
|
|||
|
|
4. **验证连接**
|
|||
|
|
- 检查 FunMC 显示的连接类型
|
|||
|
|
- 局域网内通常会显示"P2P 直连"
|
|||
|
|
- 如果是"中继",检查防火墙设置
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### 数据库连接失败
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Error: connection refused
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
解决方案:
|
|||
|
|
1. 检查 PostgreSQL 服务是否运行: `sudo systemctl status postgresql`
|
|||
|
|
2. 检查 pg_hba.conf 配置
|
|||
|
|
3. 确认用户名密码正确
|
|||
|
|
|
|||
|
|
### QUIC 端口无法连接
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Error: connection timed out
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
解决方案:
|
|||
|
|
1. 检查防火墙是否开放 UDP 端口
|
|||
|
|
2. 确认端口没有被其他程序占用: `sudo netstat -ulnp | grep 7900`
|
|||
|
|
|
|||
|
|
### WebSocket 连接断开
|
|||
|
|
|
|||
|
|
解决方案:
|
|||
|
|
1. 检查 Nginx 配置中的 `proxy_read_timeout`
|
|||
|
|
2. 确认客户端心跳正常发送
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 支持
|
|||
|
|
|
|||
|
|
如有问题,请通过以下方式获取帮助:
|
|||
|
|
|
|||
|
|
- GitHub Issues: https://github.com/mofangfang/funmc/issues
|
|||
|
|
- 官方文档: https://docs.funmc.com
|
|||
|
|
- 邮箱: support@funmc.com
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*魔幻方开发 © 2024*
|