游戏宅必看丨把《我的世界》服务器搬进NAS

来源:新浪众测

作者:超高校级的囧小平

前言

NAS本身并不适合作为游戏的客户端玩游戏,但是借助于其空闲的运算能力,却可以用作一些游戏的服务端使用。MineCraft我的世界这款游戏想必大家都不会陌生吧。这款沙盒式建造游戏从2009年发售至今,已经经历了10多个年头,而且经久不衰,目前已经登顶世界上最畅销游戏的宝座。我的世界的游戏魅力我在这里就不必多做介绍了。我玩我的世界的历程可能和大部分玩家不一样。虽然PC版本的我的世界是我最早尝试这款游戏的平台,但是我实际花心思投入大量时间游玩的却是PSV版本的我的世界。只可惜PSV的时运不济,我的世界PSV版目前已经停止更新了,还好我也有PS4版本的我的世界,并且其存档可以通用。

经过很长时间的空档期,我最近又重新拾起这款游戏,发现其玩法和最初相比已经进化到令人惊叹的程度。我的世界不但可以单人游玩,还可以自建服务器,安装各种丰富多彩的MOD,这也是这款游戏最大的魅力之一。我的世界游戏版本很多,大致可以分为网易版和国际版。中国特色的网易版想要自建服务器需要租赁网易的主机。国际版我的世界又分为JAVA版和基岩版,都是可以使用自己的主机搭建游戏服务器。本文就以JAVA版我的世界为例,讲解游戏服务器的搭建。本来以为很简单,但是却有不少坑,还好都被我踏平了。基岩版服务器搭建的方法是类似的。至于MOD的安装,内网穿透等话题,篇幅限制本文暂不涉及。

MineCraft服务器搭建

其实,大部分软件服务端的搭建都不是一个简单的过程。毕竟大家使用的主机的系统不一样,版本不一样,软件环境不一样。为了能让服务端稳定运行,常常需要进行繁琐的系统环境配置和软件依赖下载。好在Docker的出现改变了这一情况,它让服务端的搭建变得快捷、简便、轻量、整洁。搭建MineCraft服务器的方法有很多,但是基于Docker的搭建方法可能是最适合NAS的方法。在QNAP NAS上使用Docker就要用到Container Station这个大型组件了,因此要求必须是X86 CPU的NAS。如果你用NAS只是简单的影片照片的存储和播放,以及文件的备份等简单功能,那么ARM架构的NAS便宜也够用。如果你的要求更多一点,除了常规的存储备份需求,还喜欢玩各种各样的网络服务和应用程序,那么X86架构的NAS就必不可少了。在QNAP的QTS系统中,Container Station、Virtualization Station、Linux Station绝对是玩转NAS,发掘新鲜事物,榨干机器机能的三大利器。那么,要做的第一步,就是在应用商店直接搜索Container Station,下载安装即可。

接着,就是找合适的Docker镜像了。目前人气最高,更新及时的我的世界服务端Docker镜像,应该就是下面这个了:

https://hub.docker.com/r/itzg/minecraft-server

如果要搭建基岩版我的世界服务器,可以选择这个镜像:

https://hub.docker.com/r/itzg/minecraft-bedrock-server

两个版本镜像的作者都是同一个人,请放心使用。

在“创建”页面的搜索框里,直接搜索“minecraft-server”,也可以找到这个Docker镜像。此时点击安装的话,就会直接进入容器配置、镜像下载安装、容器运行的流程,但是我不建议这么做。一方面,容器配置页面的内容相对繁琐,也不够直观,估计很多用户看着都会一头雾水。另一方面,鉴于墙内的网络环境,Docker镜像下载失败是十分常见的事情。这种一条龙的执行步骤看似简便,但前提是有着通畅无阻的网络和准确无误的配置,否则任何一步出错都会增加排查问题解决问题的时间成本。

所以,我建议一步一步来,先把镜像文件准确无误地拉下来再说吧。点击“镜像文件”那一页,点击“提取”,镜像文件名称输入“itzg/minecraft-server”,版本就选latest,等待一段时间,看看能否成功把镜像下载下来。如果失败了,多试几次看看行不行。如果还是不行,心中默默骂上几句GFW,然后接着往下看。

根据我的经验,从hub.docker.com拉取镜像,失败的概率挺高的,尤其是那些体积比较大镜像。所以,作为替代,我使用了阿里云提供的镜像加速服务。如果你也想使用阿里云的镜像加速服务,首先要注册一个阿里云的账号。然后在产品列表里面找到容器镜像服务,点击“镜像加速器”,就可以看到类似下面的一个地址。以后拉取Docker镜像的时候使用这个地址就行。

https://xxxxxxxx.mirror.aliyuncs.com

在QTS的Container Station里面想要使用这个地址,要把它添加到Registry服务器中。具体步骤如下:在上面拉取镜像的时候,填写镜像名称的那个页面,在Registry服务器那一列右边点击新增。

在弹出页面填入名称和地址即可,用户名和密码不用填写,其它选项也不用修改。填写完毕后测试一下,没问题的话,点击新增即可。

然后再拉取镜像的时候,其他填写内容不变,Registry服务器选择自己添加的阿里云容器镜像服务器即可。有了容器镜像加速服务,下载速度快多了。

有了docker镜像之后,下面我们就要用这个镜像创建自己的Docker应用了。在QTS里面创建并运行Docker应用有三种方式:1。直接使用Container Station的UI界面创建应用。2。使用Container Station的Docker Compose的文件编辑器创建应用。3.ssh连接到NAS的shell,命令行下创建运行应用。

我个人的话比较推荐Docker Compose和shell下直接命令行的方式,因为这样子最灵活和直观。毕竟我是程序员出身,Docker用的也比较久,所以对于官方支持的这两种方式接受程度比较高。至于UI界面的方式,本质上也是对命令行参数的封装和UI展示,只是我用不习惯而已。下面的操作,我就直接按照我最喜欢的方式进行了。先确保NAS的ssh服务是开启的,

然后,使用你喜欢的ssh客户端,个人推荐Termius,界面简洁,功能丰富,用着很顺手。在Termius中新建一个HOST端,输入NAS的IP地址,以及用户名密码即可。

双击进入NAS的shell,下面的环节应该是整个我的世界服务器搭建最容易出问题的地方了。我们要输入正确的命令创建和运行Docker应用。这里我要纠正一下许多人的误区,我们在命令行中输入的一串串字符是程序封装的指令加上指令需要的必要参数,这些字符不叫代码。另外,在许多其他服务器的搭建教程中,出现的类似xml、config、properties、json、yaml等后缀的文件里面的内容,是服务器的配置参数,这些配置也不叫代码。每次看到许多用户把指令和配置称作代码我就有点强迫症接受不了。话归正题,https://hub.docker.com/r/itzg/minecraft-server这里详细介绍了运行minecraft-server这个Docker镜像需要的指令以及各个参数的具体含义。因为不涉及MOD的配置,所以一个最简单的纯净版我的世界服务器的运行理论上只需要执行下面的指令即可。如果你用了前面介绍的阿里云镜像加速服务,还需要将最后一个参数修改为xxxxxx.mirror.aliyuncs.com/itzg/minecraft-server。

docker run -d -p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server

Docker应用启动之后,就会开始下载服务器文件了。如果你是墙内用户,这个jar文件我估计你是大概率没法下载下来的,最后很容易导致Docker启动失败。小白用户的话,很可能根本不知道为什么就失败了。

其实这个文件用迅雷并不难下载下来,文件的下载地址在这里可以找到。我的世界其他游戏资源也可以在这个论坛里面找到。https://www.mcbbs.net/thread-946592-1-1.html

把这个server.jar文件下载下来后,只需要在docker命令中通过参数指定这个jar文件,就可以跳过下载步骤,直接使用这个文件。这样,我们的命令就变成了:

docker run -d -p 25566:25566 -e EULA=TRUE -e TYPE=CUSTOM -e CUSTOM_SERVER=/data/server.jar -v /share/Public:/data --name mc xxxxxxx.mirror.aliyuncs.com/itzg/minecraft-server

注意几个关键参数,下面逐个解释一下。

TYPE=CUSTOM,表示要使用自己的服务端文件。

-v /share/Public:/data,将NAS的/share/Public路径映射为Docker内部的/data路径,这样服务器运行时产生的配置文件和存档文件也会一并存放到NAS的指定路径,即使Docker重启这些文件也不会丢失。

CUSTOM_SERVER=/data/server.jar,指定了Docker内部加载服务器文件的路径,/data/server.jar就意味着你要将server.jar文件放到NAS的/share/Public/下,具体可以根据自己的情况调整。

再次运行这个命令,通过观察控制台log,可以发现我的世界服务端已经可以正常运行起来了。

我本以为一切都大功告成了,急切地使用服务器对应版本的我的世界Java客户端尝试了一下。却发现客户端完全无法连接到服务器。

后来我灵机一动,在命令中加了-net=host,服务器终于被客户端发现了。

你以为这样就结束了?并没有,虽然客户端探寻到了服务器,但是连接的时候却出现了下面这样的错误。还好这个问题属于常见问题,网上搜索一下报错的log,就可以找到解决方法。解决方法也很简单,进入Docker的shell终端修改个配置文件即可。

如下图标出的字符串,就是你Docker应用的ID,使用下面的命令进入Docker应用的shell。

docker exec -it 9e04f87e94f7 /bin/bash

然后在Docker的shell中执行vi server.properties。先按i,找到online-mode=true改成flase,按Esc,然后按shift 冒号,输入wq,回车。哈哈,不会用vi的话就用nano吧。

修改完毕,重启服务器,再次尝试用客户端连接,终于可以正常进入了。真是不容易啊。

看起来是不是很复杂,其实一点不复杂,总结起来就下面三步:

1。手动下载server.jar文件,并放到NAS的指定路径了。

2。执行下面的命令启动Docker。注意各个参数的配置。

docker run -d -p 25566:25566 -e EULA=TRUE -e TYPE=CUSTOM -e CUSTOM_SERVER=/data/server.jar -v /share/Public:/data --name mc xxxxxxx.mirror.aliyuncs.com/itzg/minecraft-server

3。进Docker的shell,修改vi server.properties配置,将online-mode改成flase。重启Docker

以上,大功告成。目前只是实现了一个最简单的,只能在内网游玩的纯净版服务器,更多玩法我目前也在探索之中。有了现在这个基础,后面增加MOD,以及实现内网穿透将服务器提供给更多玩家玩耍也不是不可能。

QNAP TVS-951N介绍

最后再来介绍一下我用来搭建我的世界服务器的这款NAS吧。这是一款九盘位的NAS,其中五个3.5寸硬盘盘位,四个2.5寸硬盘盘位。TVS-951N的整体造型十分紧凑,虽然是九盘位,但是实际体积也没有感觉很大。外壳采用黑色的磨砂材质,看起来很稳重。

TVS-951N背部的散热风扇占据了不小的空间,毕竟是九盘位,散热能力一定要足。接口方面,TVS-951N具备一个千兆网口,一个5GBASE-T网口,一个USB3.0接口、两个USB2.0接口,以及一个HDMI接口。5GBASE-T网口可以轻松让你的内网传输速度达到机械硬盘上限。HDMI接口的存在,也使得这款NAS具备了视频输出的能力。

硬盘方面,我采用机械硬盘加固态硬盘的配置。利用QTS独有的Qtier技术,可以在存储容量和读写速度上得到很好的平衡。

TVS-951N的CPU采用Intel Celeron 3865U处理器,内置了Intel HD 610 显示芯片,标配了4GB内存。这款3865U处理器采用Kaby Lake架构,具备两个核心,主频为1.8GHz,相比我们熟悉的J3455,单核性能和图形性能要好一些,多核性能因为后者是4核心,就没有什么优势了。我开启了我的世界服务器之后,客户端进入服务器游玩,大部分时间CPU占用率在20%~50%之间,偶尔会飙到70%。内存方面,因为我安装了一些重量级应用,所以4GB内存快被吃光了。如果喜欢折腾NAS的用户,加到8GB以上才够用。总之,TVS-951N的性能在加够内存的前提下,运行我的世界服务器,再跑几个常见服务,还是可以撑得住的。服务器本身估计容纳三五个玩家应该也是可以的,虽然我没有实际试过,但可以肯定的是再多估计就撑不住了。

总结

作为一款NAS,平时用于存储、下载、影音、网络等用途的比较多。然而借助于强大的Container Station,我们甚至可以把它作为游戏服务器来使用。作为24小时运行的NAS,天生就是被当作服务器的命。TVS-951N也是一款性价比比较高的九盘位NAS。丰富的接口,充足的盘位,够用的性能可以满足你文件存储、影音播放、架设服务等需求。当然,如果折腾的比较厉害的话,先把内存加够。

我的世界的玩法丰富多彩,本文所涉猎的内容也是很有限的。而且,我还没有进行内网穿透,所以这个服务器目前只能被我独享。后面,我也会再研究研究,将更多有趣的内容加入到自建的我的世界服务器中。

版权声明:本文源自 网络, 于,由 楠木轩 整理发布,共 5803 字。

转载请注明: 游戏宅必看丨把《我的世界》服务器搬进NAS - 楠木轩