本文为Minecraft服务器搭建系列的第三篇。本文介绍了使用第三方面板管理Minecraft服务端的方法,本服务器采用的是MCSManager管理面板。
若Mermaid图表无法正常显示,刷新页面即可。
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
在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 更新注意: 请勿使用一键安装脚本来更新,这样做的后果将会导致您的数据全部丢失。