部署环境
系统:Debian 12
软件:
Docker version 24.0.5, build ced0996
MCSManager 面板版本:9.9.0,远程节点版本:3.4.0
安装 MCSManager 控制台面板
| 1 | wget -qO- <https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh> | bash | 
构建适用于 MCSM 启动 MC 服务器的 OpenJDK17 的容器镜像
新建Dockerfile 文件,写入以下内容:
| 1 | FROM ubuntu:22.04 | 
在Dockerfile 文件所在文件夹执行下列命令:
| 1 | docker build -t mcjdk:17 . | 
下载 Velocity 及 Paper MC 服务器核心
下载地址:
我下载到的版本分别为: velocity-3.2.0-SNAPSHOT-265.jar 和 paper-1.20.1-167.jar 请依实际情况修改后续命令。
建立代理端实例
登入 MCSM 面板(http://服务器IP:23333),在左侧应用实例页面中,选择 新建实例,选择 Java 版 Minecraft 游戏服务端,选择 上传单个服务端软件(推荐),设置实例名为 代理端,启动命令为:
| 1 | java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity-3.2.0-SNAPSHOT-265.jar | 
选择上传 Velocity 核心文件 velocity-3.2.0-SNAPSHOT-265.jar ,上传完成后自动建立实例并跳转到实例配置详情页面。
配置代理端实例为虚拟化容器启动模式
在实例配置详情页面最下方,找到 进程启动方式(推荐) 选项,修改为 虚拟化容器(Linux Docker) ,环境镜像选择刚才构建的 mcjdk:17 镜像,开放端口设置为 25577:25577/tcp ,容器名设置为 velocity ,网络模式设置为 bridge ,保存配置,打开控制台页面。
启动代理端
在左侧实例控制组中点击启动实例,右侧实例控制台中显示 Done 即为启动成功。
建立主世界实例
在左侧应用实例页面中,选择 新建实例,选择 Java 版 Minecraft 游戏服务端,选择 上传单个服务端软件(推荐),设置实例名为 主世界,启动命令为:
| 1 | java -Xms2048M -Xmx4096M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper-1.20.1-167.jar nogui | 
选择上传 paper 核心文件 paper-1.20.1-167.jar ,上传完成后自动建立实例,点击跳转到实例配置详情页面。
配置主世界实例为虚拟化容器启动模式
在实例配置详情页面最下方,找到 进程启动方式(推荐) 选项,修改为 虚拟化容器(Linux Docker) ,环境镜像选择刚才构建的 mcjdk:17 镜像,容器名设置为 mainworld ,网络模式设置为 bridge ,保存配置,打开控制台页面。
启动主世界服务器
在左侧实例控制组中点击启动实例,稍等片刻,实例会自动关闭,点击实例功能组中的服务端配置文件,找到 eula.txt ,点击浏览,将 eula 后的选项修改为是,保存配置,回到控制台,再次启动实例,右侧实例控制台中显示 Done 即为启动成功。
建立其他世界实例
建立步骤与主世界类似,暂不细说。
配置代理端与 MC 服务器的连接
查看各实例容器的内部 IP 地址
MCSM 面板左侧节点管理页面,选择对应节点点击控制台,打开控制台页面,下方点击开启命令,开启控制台实例。在控制台窗口中输入如下命令:
| 1 | docker network inspect bridge | 
检查各个实例容器名下方的 IPv4Address ,即IPv4地址,详细输出结果如下:
| 1 | [ | 
可以看到,代理端容器IP为 172.17.0.3 ,主世界容器IP为 172.17.0.4 ,创造世界容器IP为 172.17.0.5 。
修改代理端配置接入服务器
进入代理端实例控制台,选择文件管理,找到velocity.toml ,点击其后的编辑按钮,找到第15行左右,修改 [server] 部分如下:
| 1 | [servers] | 
保存关闭之后,找到 forwarding.secret ,点击编辑,复制其中的内容。
回到控制台页面,选择服务端配置文件,点击 [Velocity] velocity.toml ,找到 player-info-forwarding-mode 选项,将值修改为 MODERN 。
修改各世界服务器配置
进入世界服务器实例控制台,选择服务器端配置文件,点击 [通用] server.properties ,将 online-mode 即正版验证修改为否,保存,回到配置文件列表,点击 [Paper] paper-global.yml ,找到 proxies/velocity/enabled 选项及 proxies/velocity/online-mode 选项,都修改为是,并将事先复制的 forwarding.secret 中的内容粘贴到 proxies/velocity/secret 的值中,保存。
修改完成后依次重启代理端实例及各世界服务器实例。
开启我的世界客户端,建立一个新的多人游戏,IP 为服务器外部 IP,端口为代理端的端口,即 25577 ,进入服务器开始游玩吧!
 
          
          
          
         
       
    
 
          
         
          
        