搭建Minecraft空岛服务器:基于docker和CarpetSkyAdditions

2024 年 7 月 18 日 星期四(已编辑)
/ ,
335
1
摘要
这篇文章详细介绍了如何使用Linux服务器和Docker来搭建一个Minecraft空岛服务器,特别是通过使用CarpetSkyAdditions模组实现空岛世界的创建和配置。作者从准备工作开始,包括服务器的配置建议和所需软件工具的安装,到具体的Docker配置和docker-compose文件的编写。文章还包括了如何配置服务器属性文件、添加和启用数据包,以及常见的服务器维护和管理技巧。最后,作者分享了个人的部署体验和一些建议,鼓励读者根据自己的喜好和需求定制和优化Minecraft服务器。
这篇文章上次修改于 2024 年 7 月 18 日 星期四,可能部分内容已经不适用,如有疑问可询问作者。

搭建Minecraft空岛服务器:基于docker和CarpetSkyAdditions

引言

前几天无聊的时候,偶然在视频平台刷到了我小时候,可能上至小学五六年级,最喜欢玩的游戏之一——我的世界,minecraft。想当初在手机上长按第二个格子便可以刷出很多物品的乐趣,现在长大了,对于儿时的记忆仍然尤新,还是能切身体会到那种“逃课”的快乐(当然,现在在塞尔达里面也经常能体验到)。

然而,儿时较大的遗憾是没有技术,不会自己组建服务器,通常都是在别人的服务器里肝得开开心心,转头关服又灰心丧气,所以,儿时的快乐总是极致而又短暂的。不过到了现在,自己已经有了技术,对服务器也了解一二,反而对这种游戏没有太大兴趣了。因此自己开服玩游戏其实一直都没有很多机会。这段时间偶尔的“上号”,才按照最好的方式部署了一次 Minecraft 服务器。因此,本文在我成功部署之后,将此步骤作为记录,以提供给想要自行部署服务器玩的朋友们,愿你们能在这个世界中玩的开心。

本文将讲述如何使用 Linux 服务器,通过 docker 和 CarpetSkyAdditions 来搭建一个 minecraft 空岛服务器。对于 windows 开服的玩家来说,步骤可能有些许不同,如果有不懂的问题,请随时提问,我将在本文章评论区提供帮助。

准备工作

服务器

  • Linux 系统
  • 按照Wiki给出的配置菜单,用于 Unix 的 Minecraft 服务器不应当小于以下配置
需求玩家CPU内存硬盘上传带宽下载带宽[隐藏]注释
最低配置1-2Intel Pentium 4 1.8 GHz 或 AMD Athlon XP 1600+ 或 PowerPC 750 1000 MHz/G4 1 GHz 以上512 MB2 GB 可用空间 (5GB -如果经常备份服务器)3 Mbit/s2 Mbit/s(Minecraft 服务器能勉强在 1Mbit/s 的上传带宽上运行)
Acceptable2-4Intel Pentium 4 2.6 GHz 或 AMD Athlon XP 2000+ 或 G4/Frescale 7xxx 1.8 GHz 以上2 GB8 GB 可用空间6 Mbit/s3 Mbit/s
推荐配置4-5Intel Pentium 4 3.6 GHz 或 AMD Phenom 3600+ G4 2.0 GHz 或 IBM 970 以上3 GB16 GB 可用空间8 Mbit/s4 Mbit/s
优良配置5-7Intel Core-Based CPUs 或 AMD K8-Based CPUs IBM 970 2.0 GHz 以上5 GB25 GB 可用空间14 Mbit/s7 Mbit/s
最佳配置7+Intel Core-Based CPUs 或 AMD K8-Based CPUs at 3.6GHz 或 higher IBM 970 2.0 GHz 以上6 GB35 GB 可用空间30 Mbit/s15 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: {}

    注意,上面的内容请不要照抄,请修改自己对应的内存MEMORY。如果你想跟我一样玩空岛并想自己写配置文件的话,请先参考CarpetSkyAdditions对应的MC的最新版本,由于写这篇文章时最新版为1.20.1,因此本文以版本为主。

    按下Esc键并输入`:wq`回车保存
  • 运行 docker compose 并创建默认文件

    docker compose up

    等待运行完成,会生成默认世界,世界生成完毕后 Ctrl+C 退出 docker 页面并停止容器

    docker compose down

    至此,我们对于 docker 和 mc 的创建就已经完成,如果你想要体验原汁原味的生存,就可以开始了。

空岛配置

配置 CarpetSkyAdditions

  • 从 Github 官网下载

    • 下载CarpetSkyAdditions模组

      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文件夹中)

  • 从本站下载

    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 IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
      1fca3576a47fitzg/minecraft-server"/start"4 days agoUp 4 days (healthy)0.0.0.0:25565->25565/tcp, :::25565->25565/tcpmc-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文件夹中,并且在游戏配置中启用,才能获得更好的体验。

此外,我强烈建议您在客户端安装MiniHUDmod,这在空岛生存中非常有用

常见问题解答

  • 为何我连接不上?
    • 首先,通过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 模组来定制和优化自己的游戏服务器。

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...