因为上小学的娃在鼓动他同学和他一块来玩Minecraft,已经成功的拉了两个,但其他小朋友又没有正版微软游戏账号,所以就需要搭建一个私服。于是,有了这个游戏私服的搭建过程。

2025.03 天津·和平大悦城·内山书店

部署实施

节点拓扑

我手头正好有两个阿里云的低价促销主机,其中99元的主机承载了包括blog、rss阅读器、看板等角色,就拿它来当管理面板。另外,还有一台199的2核4G内存服务器除了测试和学习外,其他负载不大,这里就把它作为游戏私服。

基本情况如下:

主机 域名 功能 配置 备注
wulan mcsm.contoso.com 控制面板 2核2G 搭建MCSM的管理面板
beijing mc.contoso.com 部署站点、服务站点 2核4G 通过MCSM daemon来部署Minecraft的服务器

部署方式

MCSManager 是一款开源,分布式,一键部署,支持 MinecraftSteam 游戏服务器 的控制面板,具有快捷上手、部署方便、支持分布式部署的优点。MCSM可以本地部署使用,也可以使用Docker来部署。其实,两种方法大同小异。我们这里就使用本地安装来进行部署。首先,要在阿里云上开通23333 24444 25655 这三个端口的安全组,其次,要配置DNS解析来访问主机。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 在wulan主机上拉取安装脚本并进行安装
sudo su -c "wget -qO- https://script.mcsmanager.com/setup_cn.sh | bash"
# 拉起面板管理的服务进程。
systemctl enable --now mcsm-web.service
systemctl enable --now firewalld
# 开启web访问端口
firewall-cmd --permanent --add-port=23333/tcp
firewall-cmd --reload

# 在beijing主机上拉取安装脚本并进行安装
sudo su -c "wget -qO- https://script.mcsmanager.com/setup_cn.sh | bash"
# 拉起终端管理的服务进程。
systemctl enable --now mcsm-web.service
systemctl enable --now firewalld
# 开启管理进程端口
firewall-cmd --permanent --add-port=24444/tcp
# 开启游戏连接端口
firewall-cmd --permanent --add-port=25655/tcp
firewall-cmd --reload

运维管理

登陆管理页面

  1. 访问 http://mcsm.contoso.com:23333 管理入口

  2. 创建管理账号

  3. 添加远程节点

  4. 主机管理界面

搭建应用实例

  1. 添加应用实例

  2. 选择快速部署

  3. 选择不同预制部署方案,拉取服务端和配置文件

  4. 启动应用进程,部署Paper版本MC的Server

玩家界面

获取启动器

下载客户端

注意: 客户端版本要与服务器版本一致

登陆游戏

配置私服地址

在多人游戏中,指定服务器地址

进阶调整

由于MCSM管理默认为非加密通信,同时还要访问自定义端口,需要格外配置防火墙,因此我将这些端口反向代理到常用端口上去,可以相对的提高安全性.由于MCSM的控制流量实际是web socket的协议,仅仅将网页前端加密是无法正常访问后端的守护进程的,必须要将两端的通信都要加密才可以.因此,就需要配置两台服务器的SSL.

创建SSL证书

1
2
3
# 获取SSL证书
# 配置SSL

管理面板的代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 安装Nginx
dnf install -y nginx
systemctl enable --now nginx

# 配置防火墙
firewall-cmd --permanent --add-service={http,https}
firewall-cmd --reload

# 配置Nginx
cat > /etc/nginx/conf.d/05-mcsm-web.conf <<EOF
server {
listen 443 ssl ;
listen 80 ;
charset utf-8;
server_name mcsm.contoso.com ;
resolver 223.5.5.5;

error_page 497 https://$host$request_uri;
if ($scheme = "http"){
return 302 https://$host$request_uri;
}

location / {
proxy_pass http://localhost:23333 ;

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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
add_header X-Cache $upstream_cache_status;
proxy_cookie_flags ~ secure;
}
}
EOF

nginx -t
nginx -s reload

# 关闭多余端口
firewall-cmd --permanent --remove-port=23333/tcp
firewall-cmd --reload

管理进程的代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 安装Nginx
dnf install -y nginx
systemctl enable --now nginx

# 配置防火墙
firewall-cmd --permanent --add-service={http,https}
firewall-cmd --reload

# 配置Nginx,使用443端口代理mcsm-daemon程序
cat > /etc/nginx/conf.d/05-mcsm-daemon.conf <<EOF
server
{
listen 443 ssl;
server_name mc.contoso.com;
resolver 223.5.5.5;
charset utf-8;
include /etc/nginx/ssl/ssl.conf;

proxy_hide_header Upgrade;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;

proxy_pass http://127.0.0.1:24444;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

proxy_request_buffering off;
proxy_buffering off;
}
}
EOF

nginx -t
nginx -s reload

# 关闭多余端口
firewall-cmd --permanent --remove-port=24444/tcp
firewall-cmd --reload

相关网址

  1. MC原版服务端下载
  2. MCSM管理面板下载
  3. PaperMC版本服务端下载
  4. PCL2 启动器下载