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

教学视频

服务端部署

开始确定下来游玩Minecraft java 1.21.1 fabric版本(需要java jdk 21及以上),在fabric服务器启动器官网下载对应版本。

Docker容器:
Docker容器

  1. 在绿联NAS中,通过Docker下载并部署最新openjdk(容器环境变量参考基于Docker部署我的世界联机主机 - 绿联DX4600家庭私有云体验 我的世界 服务器 NAS),到最后在容器终端启动发现启动器无法启动并报错,因为java版本过低。通过openjdk文档发现早已停止维护,并列举出了替代品。
  2. 将容器更换为amazoncorretto 21-al2023-jdk(设置容器环境变量,本文按照视频的容器环境)上传fabric服务器启动器jar文件到容器根目录,在容器终端输入cd /mc(按照容器环境所设置的文件夹),输入java -Xmx6G -jar fabric-server-mc.1.21.1-loader.0.16.9-launcher.1.0.1.jar nogui启动命令(内存按需填写这里是6G),成功启动(第一次要将多出来的文件内False改为True,在重新输入启动命令启动)。
  3. 如果其中有人不是正版账户,须在容器根目录下server.properties文件内修改online-mode=false(允许非正版玩家进入)。

联机

由于和NAS不在同一局域网下,无法直接使用内网IP进行联机。就在B站(bilibili)学习了解到可以通过用公网IPv6、公网IPv4、内网穿透、虚拟局域网等方法联机。
一开始尝试发现校园网不支持IPv6,网络处于大内网的IPv4,最后决定使用zerotier虚拟局域网联机(其他方面都好,就是打洞速度时快时慢)。

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

虚拟局域网加入

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

    虚拟局域网同意加入

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

    虚拟局域网游戏内联机

    在多人游戏界面直接填写之前NAS虚拟局域网IP。(之前测试时虚拟局域网IP+默认端口号无法进入,去掉端口就成功进去了,不知是不是特殊情况)。

游戏联机:
游戏联机

总结

流程概括一句话:NAS Docker部署amazoncorretto容器部署Minecraft,通过虚拟局域网实现局域网内联机。