参考教程

前言

前几个月心血来潮想玩个Minecraft,但是没有服务器,朋友正好有台绿联DXP4800NAS,所以就一拍即合在NAS上部署Minecraft服务端。

服务端部署

开始经过商量确定下来游玩Minecraft java 1.21.1 fabric版本(需要java jdk 21及以上),在fabric服务器启动器官网下载对应版本服务端文件fabric-server-mc.1.21.1-loader.0.16.9-launcher.1.0.1.jar

  1. Docker下载并部署最新openjdk,修改环境属性和容器设置,到最后在容器终端使用启动命令发现启动器无法启动并报错,通过报错了解因为java版本过低。通过openjdk文档发现早已停止维护,并列举出了替代方案。
  2. 将容器更换为amazoncorretto 21-al2023-jdk。在NAS新建新文件夹命名为mc,创建容器选择amazoncorretto 21-al2023-jdk镜像,填写一个便于区分的容器名字,调整资源限制,在存储空间设定中添加NAS新建的mc装载路径为/mc,设置网络 容器端口映射 容器环境变量
  3. 上传fabric服务器启动器jar文件到mc文件夹内,在容器终端输入cd /mc(按照容器环境所设置的文件夹),输入java -Xmx6G -jar fabric-server-mc.1.21.1-loader.0.16.9-launcher.1.0.1.jar nogui启动命令(内存按需填写这里是6G),成功启动后第一次要将多出来的文件eula.txteula=False改为eula=True,在重新输入启动命令启动,当在命令行出现done时,服务器启动成功。

  4. 如果其中有玩家不是正版账户,须在容器根目录下server.properties文件内修改为online-mode=false(允许非正版玩家进入)。

Docker容器(第一个和第四个):
Docker容器

容器配置
名称
容器名称mc1.21.1-fabric
资源限制-CPU4
资源限制-内存6G
基础设置-交互(-i)true
基础设置-TIY(-t)true
网络-网络名称host
存储空间-文件/文件夹-mc文件夹路径/mc
容器端口映射-容器端口25565
容器端口映射-主机端口25565
环境变量增加与修改
名称
LANGzh_CN.UTF-8
LC_ALLzh_CN.UTF-8
TZAsia/Shanghai
LANGUAGEzh_CN.UTF-8

(容器环境变量参考基于Docker部署我的世界联机主机 - 绿联DX4600家庭私有云体验 我的世界 服务器 NAS)

联机

由于部分玩家和NAS不在同一局域网下,无法直接使用内网IP进行联机。
当时网络环境不支持IPv6,后面使用zerotier虚拟局域网联机(其他方面都好,就是打洞速度时快时慢)。

虚拟局域网加入:
虚拟局域网加入

虚拟局域网加入

  1. zerotier官网注册并登录一个账号,Networks新建一个网络,Network ID列下是虚拟网络ID下面加入时会用到。
  2. Docker搜索下载并部署zerotier/zerotier(网络模式host,特权模式开启),在终端输入zerotier-cli join <Network ID>加入虚拟网络
  3. 客户端用户下载安装zerotier的客户端,点击Join填写Network ID加入虚拟网络

    虚拟局域网同意加入

    zerotier网站进入刚刚新建的虚拟网络,界面中的Auth?勾选要加入的设备并备注,Managed IPs列是虚拟局域网的IP,在后面联机中填入。

    虚拟局域网游戏内联机

    在多人游戏界面直接填写之前NAS虚拟局域网IP虚拟局域网IP+端口

游戏联机:
游戏联机

结语

感谢您的观看,如有描述不清或表达不正确的地方可在评论区指正。🤗