搭建Minecraft空岛服务器:基于docker和CarpetSkyAdditions
引言
前几天无聊的时候,偶然在视频平台刷到了我小时候,可能上至小学五六年级,最喜欢玩的游戏之一——我的世界,minecraft。想当初在手机上长按第二个格子便可以刷出很多物品的乐趣,现在长大了,对于儿时的记忆仍然尤新,还是能切身体会到那种“逃课”的快乐(当然,现在在塞尔达里面也经常能体验到)。
然而,儿时较大的遗憾是没有技术,不会自己组建服务器,通常都是在别人的服务器里肝得开开心心,转头关服又灰心丧气,所以,儿时的快乐总是极致而又短暂的。不过到了现在,自己已经有了技术,对服务器也了解一二,反而对这种游戏没有太大兴趣了。因此自己开服玩游戏其实一直都没有很多机会。这段时间偶尔的“上号”,才按照最好的方式部署了一次 Minecraft 服务器。因此,本文在我成功部署之后,将此步骤作为记录,以提供给想要自行部署服务器玩的朋友们,愿你们能在这个世界中玩的开心。
本文将讲述如何使用 Linux 服务器,通过 docker 和 CarpetSkyAdditions 来搭建一个 minecraft 空岛服务器。对于 windows 开服的玩家来说,步骤可能有些许不同,如果有不懂的问题,请随时提问,我将在本文章评论区提供帮助。
准备工作
服务器
- Linux 系统
- 按照Wiki给出的配置菜单,用于 Unix 的 Minecraft 服务器不应当小于以下配置
需求 | 玩家 | CPU | 内存 | 硬盘 | 上传带宽 | 下载带宽 | [隐藏]注释 |
---|---|---|---|---|---|---|---|
最低配置 | 1-2 | Intel Pentium 4 1.8 GHz 或 AMD Athlon XP 1600+ 或 PowerPC 750 1000 MHz/G4 1 GHz 以上 | 512 MB | 2 GB 可用空间 (5GB -如果经常备份服务器) | 3 Mbit/s | 2 Mbit/s | (Minecraft 服务器能勉强在 1Mbit/s 的上传带宽上运行) |
Acceptable | 2-4 | Intel Pentium 4 2.6 GHz 或 AMD Athlon XP 2000+ 或 G4/Frescale 7xxx 1.8 GHz 以上 | 2 GB | 8 GB 可用空间 | 6 Mbit/s | 3 Mbit/s | |
推荐配置 | 4-5 | Intel Pentium 4 3.6 GHz 或 AMD Phenom 3600+ G4 2.0 GHz 或 IBM 970 以上 | 3 GB | 16 GB 可用空间 | 8 Mbit/s | 4 Mbit/s | |
优良配置 | 5-7 | Intel Core-Based CPUs 或 AMD K8-Based CPUs IBM 970 2.0 GHz 以上 | 5 GB | 25 GB 可用空间 | 14 Mbit/s | 7 Mbit/s | |
最佳配置 | 7+ | Intel Core-Based CPUs 或 AMD K8-Based CPUs at 3.6GHz 或 higher IBM 970 2.0 GHz 以上 | 6 GB | 35 GB 可用空间 | 30 Mbit/s | 15 Mbit/s | 推荐使用高读写速度的机械磁盘或 SLC SSD。 |
- 我个人建议,应当保持不小于 2G 的内存空间,不小于 20G 的存储空间,上下行带宽不应小于 5Mbps 即可
所需软件和工具
必要的指令
apt install curl tar zip
Docker 的安装与配置
curl -fsSL https://get.docker.com | bash -s docker
对于国内服务器,可以使用
--mirror
参数设置镜像源进行安装,例如:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
创建并运行 docker compose 生成默认配置文件
创建 docker-compose.yml 我们选用的 Docker 镜像为广受使用的itzg 的 docker-minecraft-server,由于 CarpetSkyAdditions 是基于Fabric的,所以我们配置文件需要使用 Fabric 对应的 docker 镜像。当然如果你并不是想游玩空岛地图,你可以在官方给出的环境示例或者直接在Github 配置文件示例选择你想要的 server type 并使用即可。
mkdir mc && cd $_
当然,此处我直接给出我自己的配置文件
vi docker-compose.yml
services: mc: image: itzg/minecraft-server stdin_open: true tty: true restart: unless-stopped environment: EULA: "true" TYPE: FABRIC VERSION: 1.20.1 MEMORY: 3G ports: - "25565:25565" volumes: - ./data:/data volumes: fabric: {}
按下Esc键并输入`:wq`回车保存注意,上面的内容请不要照抄,请修改自己对应的内存
MEMORY
。如果你想跟我一样玩空岛并想自己写配置文件的话,请先参考CarpetSkyAdditions对应的MC的最新版本,由于写这篇文章时最新版为1.20.1,因此本文以版本为主。运行 docker compose 并创建默认文件
docker compose up
等待运行完成,会生成默认世界,世界生成完毕后 Ctrl+C 退出 docker 页面并停止容器
docker compose down
至此,我们对于 docker 和 mc 的创建就已经完成,如果你想要体验原汁原味的生存,就可以开始了。
空岛配置
配置 CarpetSkyAdditions
从 Github 官网下载
cd data/mods && curl -L -o carpetskyadditions-1.20.1-4.4.1.jar https://github.com/jsorrell/CarpetSkyAdditions/releases/download/v1.20.1-4.4.1/carpetskyadditions-1.20.1-4.4.1.jar
下载必须的模组,由于 Curseforge 的原因,并不方便通过
curl
或者wget
命令进行下载。通过手动访问下载并通过 ftp 上传到服务器 (上传到data
文件夹下的./mods
文件夹中)fabric-api访问的下载方式:链接
fabric-carpet访问的下载方式:链接
Cloth-config访问的下载方式:链接
此外,我还将这几个文件打包放入我的服务器中,你可以通过此方式直接下载:
从本站下载
cd data/mods && curl -L -o mods.tar.gz https://api.zty.ink/api/v2/objects/file/4k41dx7iv5onapouj7.zip && unzip mods.tar.gz
配置服务器属性文件(server.properties
)
在前面创建 docker compose 文件的时候我们已经运行过一次了,因此会在
data
目录下生成我们的server.properties
文件,直接修改即可 将level-type=minecraft\:normal
(世界生成类型:默认)修改为level-type=carpetskyadditions\:skyblock
(世界生成类型:空岛),并启用数据包carpetskyadditions:skyblock
... initial-enabled-packs=carpetskyadditions\:skyblock level-type=carpetskyadditions\:skyblock ...
如果你不清楚如何修改,直接运行下面命令即可。
请进入./data 目录下运行该指令。sed -i 's/^level-type=minecraft\\:normal/level-type=carpetskyadditions\\:skyblock/' server.properties && awk -F= '/^initial-enabled-packs=/ {print $0",carpetskyadditions:skyblock"; next} 1' server.properties > server.properties.tmp && mv server.properties.tmp server.properties
(可选)指定种子:
- 在
level-seed
中填写你对应的种子即可。
- 在
(可选)添加其他模组
以下模组均可直接下载 MC 对应版本的 mod 后添加到./data/mods
文件夹,重启服务器即可docker compose restart
- GugleCarpetAddition
- 假人模组,可以不用在空岛这么肝
- Servus
- 服务器端提供结构边界框给客户端 MiniHUD 的工具
创建世界并添加数据包
在做完以上工作后,我们便可以正常创建一个空岛世界,并添加适合空岛玩法的数据包。
删除原有世界并创造新的世界
由于我们之前的世界并不是根据 CarpetSkyAdditions 生成的,所以我们需要先删掉之前生成的 world 世界,重新由 carpetskyadditions:skyblock 生成一个世界。
rm -rf world && cd .. && docker compose up -d
添加并启用数据包
下载数据包到 datapacks 文件夹中
从官网下载
cd data/world/datapacks && curl -L -o carpetskyadditions-1.20.1-4.4.1-datapack.zip https://github.com/jsorrell/CarpetSkyAdditions/releases/download/v1.20.1-4.4.1/carpetskyadditions-1.20.1-4.4.1-datapack.zip
从本站下载
cd data/world/datapacks && curl -L -o carpetskyadditions-1.20.1-4.4.1-datapack.zip https://api.zty.ink/api/v2/objects/file/ealvz780exk9hul6cl.zip
启用数据包
进入控制台
docker ps
会输出类似于以下内容,找到其 NAMES
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1fca3576a47f itzg/minecraft-server "/start" 4 days ago Up 4 days (healthy) 0.0.0.0:25565->25565/tcp, :::25565->25565/tcp mc-mc-1 docker exec -i <NAMES> rcon-cli
将其中的< NAMES >更换为上面的内容
启用数据包 首先,通过以下命令查看哪些数据包没有被启用
> datapack list
类似于以下输出
There are 4 data pack(s) enabled: [carpetskyadditions:skyblock (built-in: Carpet Sky Additions)], [fabric (Fabric mod)], [vanilla (built-in)], [file/carpetskyadditions-1.20.1-4.4.1-datapack.zip (world)]There are 1 data pack(s) available: [carpetskyadditions:skyblock_acacia (built-in: Carpet Sky Additions)]
启用对应数据包即可 (一般来说是 carpetskyadditions-1.20.1-4.4.1-datapack.zip)
datapack enable carpetskyadditions-1.20.1-4.4.1-datapack.zip
测试服务器
外部连接测试
由于开放的是 Minecraft 标准的 25565 端口,因此在服务器地址一栏中直接输入服务器地址即可直接连接。
客户端配置
同样,您需要将datapack
文件和language
文件放入客户端的datapacks
文件夹中,并且在游戏配置中启用,才能获得更好的体验。
此外,我强烈建议您在客户端安装MiniHUD
mod,这在空岛生存中非常有用
常见问题解答
- 为何我连接不上?
- 首先,通过
docker ps
检查容器是否正常运行,如果容器发生错误,请根据 log 自行排查 - 若容器运行正常,大概率为网络问题,请先检查防火墙是否阻断,一般我习惯用 ufw 来管理防火墙。您应当检查 iptables
- 版本问题
- 首先,通过
服务器维护与管理
常见问题及解决方法
容器重启和停止命令
重启: docker compose restart 停止: docker compose down
日志查看与错误排查 Minecraft 日志存放于
./data/logs
文件夹中cat data/logs/latest.log
备份与恢复
数据备份策略 一般来说,我们只需要备份
world
文件夹(或者你创建的其他世界的名称)即可,如果 mod 使用过多或者使用了不常见的 datapacks,建议备份对应文件夹以及server.properties
tar -zcf bak.tar.gz world datapacks mods server.properties
恢复备份数据的方法 将备份文件解压到
data
目录下即可tar -zxf bak.tar.gz
结论
总体来说,通过 docker 的搭建方式让我觉得比使用其他方式更加便携和更加模块化,我更喜欢通过 docker 来部署 Minecraft 服务器,当然我也在此鼓励各位尝试更加个性化的部署方式,一方面能够体验更多的乐趣,另一方面也希望各位不要总是遵循文档办事。我相信,有自己的创造力是每一个 mc 玩家最值得骄傲的事情。
附录
这些资源可以帮助您更深入地了解如何使用 Docker 和 Minecraft 模组来定制和优化自己的游戏服务器。