前言
在Mac上安装MC基岩版服务器的心路历程,不想看的直接跳到后面的具体步骤。
家中有一台长期不间断运行的服务器,平常用作Nas和假设一些需要持续运行的服务,配置为:5600g + 32g内存 ,系统:Windows专业版,其实实际上就是一台24小时不间断运行的windows主机,但没有显示器,至于为什么使用windows作为系统,是因为吃了群晖的亏,当时用群晖存数据的时候,有一次储存池丢失了,就硬盘里的数据还在,但就是因为数据格式不对读不出来,而要想让群晖使用这块盘也必须要格式化来加入储存池中(当然也有可能是我不会用),所以我决定使用windows来作为系统,搭配nas程序来实现nas的功能,不得不说非常符合操作逻辑;然后群里的朋友说想玩MC,于是我又在这个服务器上搭建了一个MC的基岩版服务器,在windows服务器上架设实在是简单,因为官网有直接下载的包,直接下载下来解压然后运行就可以了,so easy!
理论上直接这么运行就可以了,5600g能效表现和性能表现都非常出色,朋友在里面有大量生电建筑都不会有明显的卡顿,可以说就这么正常运行下去就行,但直到我买了一台mac mini m4,这玩意10核心,运行起来才15w不到,相比起我的windows服务器空闲状态都有50w功耗,四舍五入我也是在为碳中和做贡献啊!(实际上就是想折腾)那么就决定将服务器迁移到mac mini上,不过很明显,不同于Java版的跨平台能下载macos版的服务端,基岩版似乎只有window版和linux版,竟然没有支持linux版的,不合理!
思路
由于基岩版的服务器不能直接支持macos,那很明显就只能使用虚拟机来实现了,但直接使用虚拟机来安装一个浪费内存,另一个不够优雅,再一个就是性能损耗,这时候我们就能想到Linux和macos的相似性,使用docker来容器化安装就成了首选!尤其是使用arm64版的linux环境对性能的损失可以说是微乎其微了,ok确定好了思路,咱们就开干!
具体步骤
- 前往docker的官网下载Mac版的docker
2. 下载完成后直接安装,一路确定下去就行
3. 安装完成之后就可以运行Docker了,最好登陆注册一下,其实不进行注册登陆也可以
4. 搞定之后,打开设置,选择Builders你将看到如下页面,这就说明docker已经安装好了:
5. 然后我们再打开终端,运行指令docker -v
看一下是否出现版本,正常能显示版本的话就说明没问题了
6. 然后我们要下载我们需要的镜像,很幸运,在docker hub中有人已经制作了一个用于创建mc基岩版服务器的镜像,我们直接打开docker hub,在里面搜索itzg/minecraft-bedrock-server
能看到如图
7. 点击pull拉取镜像,如果下载很慢或者根本不显示镜像的话可以考虑给docker换个源(具体操作网上有很多方法,这里就不再赘述),当然有魔法上网也是可以的
8. 接着实际上只需要按照这个页面给的提示,在终端中运行下面这段代码就可以了docker run -d -it -e EULA=TRUE -p 19132:19132/udp -v mc-bedrock-data:/data itzg/minecraft-bedrock-server
,当然这样做很不优雅,且仅适合刚刚在mac上开服务器的朋友,实际上我们可能已经有了服务器的存档数据,我们需要将原服务器的存档数据迁移过来,或者我们需要多开几个相似的服务器(实际上就是方便大伙抄作业),这里我将演示用docker-compose
来创建服务器容器
9. 随便找一个文件夹,创建一个文本文件随意命名,这里我命名为docker-mc.yaml
,然后复制下面的代码填入文件中
services:
mc: #容器名
image: itzg/minecraft-bedrock-server #所用的镜像
restart: always
ports:
- "19132:19132/udp" #开放的端口
environment: #主要针对 server.properties 中的配置。启动时会根据下方内容修改 server.properties 中对应内容,也可以这里不填,手动修改 server.properties
EULA: "TRUE"
VERSION: LATEST
SERVER_NAME: 生存服 #服务器名字
GAMEMODE: survival #模式
DIFFICULTY: hard #难度
MAX_PLAYERS: 10 #最大在线人数
LEVEL_SEED: -4040081259635935366 #种子*
ONLINE_MODE: "false" #强制要求登陆 Microsoft,true 会导致登陆偶尔有点慢,特别对于大陆。但设置 false 可能导致偶尔上线后账号看似重置(实质为没有登陆成功,而对应了不同的 uid)
ALLOW_CHEATS: "false" #是否允许作弊
volumes:
- /Users/ican/Documents/Docker-MC:/data #配置和存档等文件的持久化挂载路径*
- 其中有标记为
*
的部分一定需要自己手动修改,尤其是挂载路径和种子,种子一定要填上和你原本服务器中地图相同的种子,不然地形会完全不一样,当然第一次创建服务器就无所谓,至于挂载路径,就填上自己找到的一个好文件夹路径(绝对路径):/data
,创建完成之后打开终端,进入这个yaml文件的文件夹中,输入指令docker-compose up -d
,docker就会根据你的这个文件开始自动创建容器了,下载好了容器很快的,如图所示:
- 这时我们回到docker desktop来,就能看到我们刚刚创建好的容器了
- 我们点进去,能看到如下图,就说明服务器已经成功启动了
- 到这一步我们在mac上启动mc基岩版服务器就算搞定了,但现在服务器还是一个空的服务器,我们需要将我们的数据倒进来,先关闭这个容器,然后复制我们原来基岩版服务器的worlds数据,以及几个json数据(玩家和服务器数据),还有server.properties数据,粘贴到我们之前设置的持久化文件夹,如果没出错的话现在这个文件夹中已经有了linux版基岩服务器的程序,覆盖掉就好了,如图:
- 至此,我们的所有步骤就完成了,回到docker desktop中运行容器,完成!进入mc测试一下,就能看到我们在mac中运行的服务器了!此时mac的能耗依旧仅有15w左右,完美!
结语
与其说在mac上运行mc基岩版服务器不如说是在mac上用虚拟化环境运行mc基岩服务器,但总而言之结果是好的,能效表现是真不错,其次由于在docker-compose中设置了版本为latest,每次启动容器的时候都会自动判断当前服务器是否是最新版本,如果不是就会自动从mc官网去下载最新的服务器版本然后替换掉,这点对于我们来说是很方便的,当然如果你不需要自动更新服务器,那么就在version那一行修改版本为自己需要的版本号即可,还有如果容器启动不了,或者启动后自动关闭,大概率是没能正常访问mc官网的下载服务器,可以尝试开启魔法上网,或者不让docker容器自动更新版本,然后自己手动下载一个linux版的基岩服务器文件解压到持久化的文件夹中,效果是一样的。