Minecraft/Java版服务器

来自 ArchWiki

Minecraft 是一个 多人游戏。它使用 客户端-服务器模型,其中游戏本身是一个客户端,可以单机游玩,也可以在客户端连接到公共服务器时与其他玩家一起游玩。

注意: Minecraft 服务器由第三方运行。您应该阅读他们的隐私政策,了解他们如何处理您的数据。一些服务器需要第三方帐户才能登录,而另一些服务器则支持微交易,允许您为服务器上的物品付费,尽管这可能会违反 Minecraft EULA,具体取决于服务器销售的内容。

安装

Java 版 Minecraft 服务器可以通过 minecraft-serverAUR 软件包安装。它提供了额外的 systemd 单元文件,并包含一个小的控制脚本。

另请参阅 #替代方案,以了解用于托管 Minecraft 的替代程序的概述。

配置

在安装过程中,会创建 minecraft 用户和组。建议建立一个 Minecraft 专用用户以提高安全性。通过在非特权用户帐户下运行 Minecraft,任何成功利用您的 Minecraft 服务器的人都只能访问该用户帐户,而不能访问您的帐户。但是,您可以安全地将您的用户添加到 minecraft 组,并向目录 /srv/minecraft (默认)添加组写入权限,以修改 Minecraft 服务器设置。确保 /srv/minecraft 目录中的所有文件都归 minecraft 用户所有,或者该用户通过其他方式拥有读写权限。如果服务器无法访问某些文件,将会报错,甚至可能没有足够的权限将相应的错误消息写入日志。

该软件包提供了一个 systemd 服务和定时器,用于进行自动备份。默认情况下,备份位于服务器根目录下的 backup 文件夹中。虽然为了保持磁盘占用空间较小,只保留最近的 10 个备份(可通过 KEEP_BACKUPS 配置)。相关的 systemd 文件是 minecraftd-backup.timerminecraftd-backup.service。可以很容易地调整它们以满足您的喜好,例如,遵循自定义的备份间隔。

启动服务器

要启动服务器,您可以使用 systemd 或直接从命令行运行。无论哪种方式,服务器都封装在由 minecraft 用户拥有的 tmux 会话中。使用 systemd,您可以启动/启用包含的 minecraftd.service。或者,运行

# minecraftd start

接受 EULA

为了运行 Minecraft 服务器,您必须接受终端用户许可协议 (End User License Agreement)。这只需要在安装后发生一次。 EULA 文件在软件包创建后位于 /srv/minecraft/eula.txt 下。您需要编辑此文件,声明您已同意合同才能运行服务器。您只需将

eula=false

更改为值 true。这是一个已接受 EULA 的示例

/srv/minecraft/eula.txt
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Sat Sep 11 11:11:11 PDT 2011
eula=true

防火墙配置

server.properties 中有三个设置决定了您的服务器将使用的端口。

server-port 确定服务器将监听传入连接的 TCP 端口。默认端口为 25565

query.port 确定服务器将共享游戏信息/广告信息的 UDP 端口。默认端口为 25565。请注意,由于服务器端口和查询端口是 TCP 和 UDP,它们可以共享同一个端口。要启用查询,您还需要指定 enable-query=true

rcon.port 确定您选择允许远程访问管理控制台的 TCP 端口。默认端口为 25575。要启用 rcon,您还需要指定 enable-rcon=truercon.password=...

您至少需要在 server-port 上允许传入连接。建议允许查询及其 query.port。另一方面,启用远程控制台访问存在安全风险,您应该谨慎允许它。

以上信息适用于官方 Minecraft 服务器。如果您使用的是替代服务器,请参阅其文档以了解有关其配置的详细信息。

有关更多信息,请参阅 [1][2]

服务器管理脚本

为了轻松控制服务器,您可以使用提供的 minecraftd 脚本。它可以执行基本命令,如 startstoprestart,或使用 console 连接到会话。此外,它还可以用于使用 status 显示状态信息,使用 backup 备份服务器世界目录,使用 restore 从备份还原世界数据,或使用 command do-something 在服务器控制台中运行单个命令。

注意: 关于服务器控制台(可通过 minecraftd console 访问),请记住您可以使用 ctrl+b d 退出任何 tmux 会话。

调优

要调整默认设置(例如最大 RAM、线程数等),请编辑文件 /etc/conf.d/minecraft

例如,更高级的用户可能希望通过将其设置为 true 来启用 IDLE_SERVER。这将使管理脚本能够在至少 IDLE_IF_TIME 时间(默认为 20 分钟)没有玩家在线时暂停服务器。当服务器暂停时,idle_server 将使用来自 nmapncat(1) (或 netcat 的任何其他实现)监听 Minecraft 端口,并在第一个传入连接时立即启动服务器。虽然这显然会延迟首次暂停后加入的时间,但它显着降低了 CPU 和内存使用率,从而降低了资源和功耗水平。

注意: 如果首次启用此选项运行,则不会创建 /srv/minecraft/eula.txt 文件。您需要禁用它才能最初启动。

替代方案

Spigot (以及 Craftbukkit)

Spigot 是世界上使用最广泛的模组 Minecraft 服务器。它可以使用 spigotAUR 软件包安装。 spigot PKGBUILD 基于 minecraft-serverAUR 软件包中的文件构建。这意味着 spigot 服务器提供了自己的 systemd 单元文件、spigot 脚本和相应的脚本配置文件。二进制文件名为 spigot,能够执行与 minecraftd 相同的命令。配置文件位于 /etc/conf.d/spigot 下。

请务必阅读 #配置,并在您遇到 minecraftd 的任何地方将其替换为 spigot

它在某种程度上隶属于 Bukkit,并且自 Bukkit 衰落以来人气大增。

Cuberite

Cuberite 是一款高效且可广泛修改的 Minecraft 服务器,用 C++ 和 Lua 编写。它比原版 Minecraft 服务器实现了更好的性能,但它与最新的 Minecraft 客户端不完全兼容(某些游戏方面可能缺失或无法工作)。

Cuberite Minecraft 服务器可以作为 cuberiteAUR 软件包安装,该软件包默认在端口 8080 上提供一个简单的 Web 界面,大多数服务器操作都可以通过浏览器轻松完成。 cuberite PKGBUILD 基于 minecraft-serverAUR 软件包中的文件构建。这意味着 cuberite 服务器提供了自己的 systemd 单元文件、cuberite 脚本和相应的脚本配置文件。二进制文件名为 cuberite,能够执行与 minecraftd 相同的命令。配置文件位于 /etc/conf.d/cuberite 下。

请务必阅读 #配置,并在您遇到 minecraftd 的任何地方将其替换为 cuberite

PaperMC

PaperMC 是一款 Minecraft 服务器,与旨在提供更好性能的 Spigot 插件兼容。它可以通过 papermcAUR 安装。

请务必阅读 #配置,并在您遇到 minecraftd 的任何地方将其替换为 papermc

Forge

Forge 是广泛使用的 Minecraft 模组 API。以下服务器软件包可用

请务必阅读 #配置 部分,并将所有出现的 minecraftd 替换为 forged (旧版本为 forge-x.x.xd)。

Fabric

Fabric 是一个轻量级的、实验性的 Minecraft Modding 工具链。服务器包可以通过 fabric-serverAUR 安装。

请务必阅读 #配置 部分,并将所有出现的 minecraftd 替换为 fabricd

Quilt

Quilt 是一个开源的、社区驱动的 Modding 工具链,主要为 Minecraft 设计。服务器包可以通过 quilt-serverAUR 安装。

请务必阅读 #配置 部分,并将所有出现的 minecraftd 替换为 quiltd

它最初是从 Fabric 分叉而来,这意味着它在很大程度上向后兼容 Fabric Mod。

提示和技巧

Minecraft 服务器端口

此文章或章节需要扩充。

原因: 记录 SRV 记录支持,以便在使用域名时允许使用非默认端口,而无需指定端口 (在 Talk:Minecraft/Java_Edition server 中讨论)

默认情况下,Minecraft 服务器在端口 25565 上运行。如果输入的地址未指定端口,则假定使用此端口。

大多数 Minecraft 服务器提供商会对使用默认 Minecraft 端口的服务器收取额外费用。因此,如果您的端口与 25565 不同,您必须通过在主机名或地址末尾附加冒号 (:) 并紧跟分配给您服务器的端口来指定端口。例如,如果您的地址是 43.12.122.96 且端口是 28543,您将连接到 43.12.122.96:28543

参见

  • 有几个服务器包装器可用,提供从自动备份到并行管理数十个服务器的一切功能;有关更多信息,请参阅 服务器包装器。但是,AUR 软件包提供的管理脚本应该足以满足大多数需求。
  • 您可能希望使用 systemd 定时器 以及例如 mapper 来生成您世界的定期地图。
  • 请务必进行定期备份,例如使用提供的管理脚本(参见 #配置)或纯 rsync