本文为Minecraft服务器搭建系列的第三篇。本文介绍了使用第三方面板管理Minecraft服务端的方法,本服务器采用的是MCSManager管理面板。

若Mermaid图表无法正常显示,刷新页面即可。

MCSManagerLogo.png

MCSManager 管理面板:MCSManager - A Lightweight Web Panel for Minecraft Server and more

MCSManager是一个开源,分布式,轻量级,快速部署,支持大部分游戏服务端和控制台程序的管理面板,支持中英语言,一直在为 Minecraft,Terraria,Steam 游戏服务器管理员,运维人员和个人开发者提供健康的软件支持。

使用MCSManager管理Minecraft服务端进程。面板分为面板前端和守护进程,默认端口为23333和24444

如果你使用MCDR来管理Minecraft服务端,也可以使用次管理面板,即把启动服务端的脚本替换成启动MCDR的命令。

安装

一键安装:

wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup.sh | bash

安装后使用 systemd 启动:

systemctl start mcsm-{daemon,web}.service // 启动面板
systemctl stop mcsm-{daemon,web}.service // 停止面板
systemctl restart mcsm-{daemon,web}.service // 重启面板

systemctl restart mcsm-web.service // 只重启面板 Web 服务
systemctl restart mcsm-daemon.service // 只重启面板守护进程服务

面板基本设置请参考官方文档:MCSManager 官方文档

在面板中可以设置崩溃后自动重启、开机自动启动等功能。

反代、配置TLS

参考: 配置 HTTPS (mcsmanager.com)

在VPS本地安装MCS面板,在Minecraft服务器也安装MCS面板。将Minecraft服务器的MCS daemon通过 frp TCP穿透到VPS,在VPS中配置Nginx反代与TLS,访问VPS的MCS面板前端,添加节点使用 wss.

管理面板

服务端(VPS):

flowchart LR
    client{{client}} --> |https://mc.domain| p1
    p1--> |proxy| p2(443)
    subgraph Cloudflare
    p1(443)
    end
    subgraph VPS Nginx
    p2 --> |proxy_pass| p3[http://127.0.0.1:23333]
    end
    p3 --> p4[Node.js project]
  • 使用Cloudflare代理,在DNS中添加指向VPS IP的A记录
  • 配置VPS的Nginx主文件

TLS加密使用完全加密,服务器上使用Cloudflare申请的15年Origin证书。配置反代至MCSManager面板前端的端口 23333

# MCS 反代
server {
    listen 80;
    listen 443 ssl http2;
    server_name mc.域名;
    
    ssl_certificate    /www/server/panel/vhost/cert/frps.goodnickname.ga/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/frps.goodnickname.ga/privkey.pem;
  
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    location / {
        proxy_pass http://127.0.0.1:23333;
        proxy_redirect http://$host/ http://$http_host/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
  }

之后可通过 https://mc.domain 访问面板

守护程序

将Minecraft服务器的MCS守护程序由 frp 穿透至VPS,之后在VPS面板上访问远程节点。

服务端(VPS)

graph LR
    p1--> |proxy| p2(443)
    subgraph Cloudflare
        p1(443)
    end

    subgraph VPS Nginx
        p2 --> |proxy_pass| p3[http://127.0.0.1:8088]
    end
    subgraph frps server
        p5(8088)
    end
    p3 ..-> p5
    p5 --> bind_port([bind_port])

    client{{client}} -->|wss://mcsd.domain|p1
  • 设置frps服务端
[common]
bind_port =端口
bind_addr = 0.0.0.0
vhost_http_port = http端口
vhost_https_port = https端口
authentication_method = token
token = xxxxxxxxxxxxxxxxxxx
heartbeat_timeout = 90
user_conn_timeout = 10a
tcp_mux = true

#log_file = /dev/null
log_level = info
log_max_days = 3

配合Minecraft服务器上的frpc,将客户端的 8082 端口,穿透至VPS的 8088 端口。

  • 添加proxiedA记录 mcsd.域名 ,之后配置Nginx,将 mcsd.域名443 反代至 8088,用以访问远程的MCS daemon
# deepin MCS dameon Reverse Proxy
server
{
  listen 80; 
  listen 443 ssl http2; 
  server_name mcsd.域名; #填写你需要的泛域名
  charset utf-8;
 ssl_certificate    /www/server/panel/vhost/cert/frps.goodnickname.ga/fullchain.pem;
  ssl_certificate_key    /www/server/panel/vhost/cert/frps.goodnickname.ga/privkey.pem;
  ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 10m;
  add_header Strict-Transport-Security "max-age=31536000";
  
  location / {
    resolver 8.8.8.8;
    proxy_ssl_server_name on;
    proxy_set_header Upgrade $http_upgrade;    
    proxy_set_header Connection "Upgrade";   
    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;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8088; #端口号(5678)替换为daemon服务穿透的端口
    
    }
        #access_log  /.log; #若去除行首的注释符,则需要修改成你想要存放日志的位置
    }

客户端(MC服务器)

graph LR
subgraph frpc client
    p4[frpc]
    end
    subgraph client Nginx
    p6(8082)-->|proxy_pass| p7[24444]
end

bind_port([bind_port])--> p4 -->|192.168.50.130|p6

在MC服务器中配置反代,将8082反代至24444。之后将8082穿透至VPS。

  • frpc

由于前文MC服务器已将25565穿透至腾讯云服务器,现使用副路由(192.168.50.13)配置frpc,将MC服务器(192.168.50.130:8082)穿透至面板所在VPS

# frpc configuration
[common]
server_addr = VPS地址
server_port = 端口
token = xxxxxxxxxxxxxxxxx
log_file = /dev/null
log_level = info
log_max_days = 3
tcp_mux = true
protocol = tcp
login_fail_exit = true
user = ac86u-minor
[mcsdaemon]
type = tcp
local_ip = 192.168.50.130
local_port = 8082
remote_port = 8088
use_encryption = true
use_compression = true
  • MC服务器客户端反代,将 8082 指向 24444
server {
    # Daemon 端公网访问端口
    listen 8082;

    location / {
        # Daemon 端反向代理目标(配置与 Web 端处同理)
        proxy_pass http://localhost:24444/;
        root   html;
        index  index.html index.htm;
        proxy_set_header Host localhost;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        add_header X-Cache $upstream_cache_status;
        add_header Cache-Control no-cache;
        expires 12h;
    }
}
  • frpc Client 为 AC86U 代理 至 192.168.50.130;
  • frp 采用全tcp连接,无TLS;
  • 不用http因为需要域名走443,不用https因为client不好用证书(http2https)

之后在VPS MCS 面板前端,添加远程节点,输入:

wss://mcsd.域名  port:443

更新

如果您采用一键脚本更新,那么将天然支持 git 自动更新,前往 /opt/mcsmanager/web/opt/mcsmanager/daemon 分别执行 git 拉取命令即可。

systemctl stop mcsm-{web,daemon}
cd /opt/mcsmanager/web
git pull
npm install
cd /opt/mcsmanager/daemon
git pull
npm install
systemctl start mcsm-{web,daemon}复制到剪贴板错误已复制

如果您采用手动自定义安装,则需要手动进入两个目录中,执行 git pull 命令即可。

如果有多个节点,则需要覆盖所有 daemon 文件。

Linux 更新注意: 请勿使用一键安装脚本来更新,这样做的后果将会导致您的数据全部丢失。