如何在Ubuntu22.04上创建Minecraft服务器

来自菜鸟教程
跳转至:导航、​搜索

作为 Write for DOnations 计划的一部分,作者选择了 Tech Education Fund 来接受捐赠。

介绍

Minecraft 是一款流行的沙盒视频游戏。 它最初于 2009 年发布,允许玩家在块 3D 生成的世界中构建、探索、制作和生存。 截至 2022 年初,它是有史以来最畅销的电子游戏。 在本教程中,您将创建自己的 Minecraft 服务器,以便您和您的朋友一起玩。 具体来说,您将安装运行 Minecraft 所需的软件包,配置服务器以运行,然后部署游戏。

或者,您可以探索 DigitalOcean 的 One-Click Minecraft: Java Edition Server 作为另一个安装路径。

本教程使用Java版的Minecraft。 如果您通过 Microsoft App Store 购买了您的 Minecraft 版本,您将 无法 连接到此服务器。 在 PlayStation 4、Xbox One 或 Nintendo Switch 等游戏机上购买的大多数 Minecraft 版本也是 Microsoft 版本的 Minecraft。 这些控制台也 无法 连接到本教程中构建的服务器。 您可以在此处 获取 Minecraft 的 Java 版本。


先决条件

为了遵循本指南,您需要:

第 1 步 — 安装必要的软件包并配置防火墙

初始化服务器后,第一步是安装 Java; 你需要它来运行 Minecraft。 默认情况下,Ubuntu 22.04 不提供足够新的 Java 版本来运行最新版本的 Minecraft。 幸运的是,有第三方维护者继续为旧的 Ubuntu 版本构建更新的 Java 包,您可以通过将他们的 PPA 或个人包档案库添加到您自己的包源列表中来安装它们。 您可以使用以下命令执行此操作:

sudo add-apt-repository ppa:openjdk-r/ppa

接下来,更新您的包源以反映此添加:

sudo apt update

提示确认时按 Y。 如果系统提示您重新启动任何服务,请按 ENTER 接受默认设置并继续。

最后,安装 Java 的 OpenJDK 版本 17,特别是无头 JRE。 这是 Java 的最小版本,它删除了对 GUI 应用程序的支持。 这使其非常适合在服务器上运行 Java 应用程序:

sudo apt install openjdk-17-jre-headless

您还需要使用一个名为 screen 的软件来创建可分离的服务器会话。 screen 允许您创建一个终端会话并从中分离,让启动的进程继续运行。 这很重要,因为如果您要启动服务器然后关闭终端,这将终止会话并停止您的服务器。 现在安装screen

sudo apt install screen

现在您已经安装了软件包,我们需要启用防火墙以允许流量进入我们的 Minecraft 服务器。 在您执行的 初始服务器设置 中,您只允许 ssh 流量。 现在您需要允许流量通过端口 25565 进入,这是 Minecraft 用来允许连接的默认端口。 在某些情况下,ufw 会使用命名流量规则,例如 ssh,默认情况下始终使用端口 22,但在这种不太常见的情况下,我们将手动指定端口号。 通过运行以下命令添加必要的防火墙规则:

sudo ufw allow 25565

现在您已经安装了 Java 并正确配置了防火墙,您将从 Minecraft 网站下载 Minecraft 服务器应用程序。

第 2 步 — 下载最新版本的 Minecraft

现在您需要下载当前版本的 Minecraft 服务器。 您可以通过导航到 Minecraft 的网站 并复制显示 Download minecraft_server.XXXjar 的链接来完成此操作,其中 X 是服务器的最新版本.

您现在可以使用 wget 和复制的链接将服务器应用程序下载到您的服务器:

wget https://launcher.mojang.com/v1/objects/c8f83c5655308435b3dcf03c06d9fe8740a77469/server.jar

服务器应用程序将下载为 server.jar。 如果您需要管理 Minecraft 的版本,或者想要升级您的 Minecraft 服务器,将下载的 server.jar 重命名为 minecraft_server_1.18.2.jar 可能会有所帮助,将突出显示的版本号与任何版本匹配您刚刚下载:

mv server.jar minecraft_server_1.18.2.jar

如果你想下载旧版本的 Minecraft,你可以在 mcversions.net 找到它们。 但本教程将重点介绍当前的最新版本。 现在您已经下载完毕,让我们开始配置您的 Minecraft 服务器。

第 3 步 — 配置和运行 Minecraft 服务器

现在您已经下载了 Minecraft jar,您可以运行它了。

首先,通过运行 screen 命令启动屏幕会话:

screen

阅读出现的横幅后,按空格键。 screen 将向您显示正常的终端会话。 此会话现在是可分离的,这意味着您将能够在此处启动命令并使其运行。

您现在可以执行初始配置。 当下一个命令抛出错误时不要惊慌。 Minecraft 以这种方式设计了它的安装方式,因此用户必须首先同意公司的许可协议。 接下来您将执行此操作:

java -Xms1024M -Xmx1024M -jar minecraft_server_1.18.2.jar nogui

在检查这个命令的输出之前,让我们仔细看看所有这些命令行参数,它们正在调整你的服务器:

  • Xms1024M - 这会将服务器配置为以 1024MB 或 1GB 的 RAM 开始运行。 如果您希望服务器以更多 RAM 启动,则可以提高此限制。 M 代表兆字节和 G 代表千兆字节都是受支持的选项。 例如:Xms2G 将启动具有 2 GB RAM 的服务器。
  • Xmx1024M - 这会将服务器配置为最多使用 1024M 的 RAM。 如果您希望服务器以更大的尺寸运行、允许更多玩家使用,或者您觉得服务器运行缓慢,您可以提高此限制。 Java 程序的独特之处在于它们总是要求您指定它们可以使用的最大内存量。
  • jar - 此标志指定要运行的服务器 jar 文件。
  • nogui - 这告诉服务器不要启动 GUI,因为这是一个服务器,而且你没有图形用户界面。

第一次运行此命令(通常会启动服务器)时,您将收到以下输出:

Output[22:05:31] [environment second]
[22:05:31] [main/ERROR]: Failed to load properties from file: server.properties
[22:05:31] [main/WARN]: Failed to load eula.txt
[22:05:31] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

生成这些错误是因为服务器找不到执行所需的两个必要文件:EULA(最终用户许可协议),位于 eula.txt 和配置文件 server.properties。 由于服务器无法找到这些文件,因此它在您当前的工作目录中创建了它们。 Minecraft 这样做是为了确保您已阅读并同意其 EULA。

nano 或您喜欢的文本编辑器中打开 eula.txt

nano eula.txt

在此文件中,您将看到指向 Minecraft EULA 的链接。 复制网址:

~/eula.txt

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Tue Mar 24 22:05:31 UTC 2020
eula=false

在 Web 浏览器中打开 URL 并阅读协议。 然后返回文本编辑器并在 eula.txt 中找到最后一行。 在这里,将 eula=false 更改为 eula=true。 然后,保存并关闭文件。 在nano中,这意味着按“Ctrl+X”退出,然后在提示保存时按“Y”,然后回车。

现在您已接受 EULA,您可以根据您的规格配置服务器。

在您当前的工作目录中,您还将找到新创建的 server.properties 文件。 此文件包含 Minecraft 服务器的所有配置选项。 您可以在 Official Minecraft Wiki 上找到所有服务器属性的详细列表。 在启动服务器之前,您应该使用您的首选设置修改此文件。 本教程将介绍一些基本设置:

nano server.properties

您的文件将如下所示:

~/server.properties

#Minecraft server properties
#Thu Apr 30 23:42:29 UTC 2020
spawn-protection=16
max-tick-time=60000
query.port=25565
generator-settings=
force-gamemode=false
allow-nether=true
enforce-whitelist=false
gamemode=survival
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=easy
spawn-monsters=true
broadcast-rcon-to-ops=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
function-permission-level=2
rcon.port=25575
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=false
level-name=world
view-distance=10
resource-pack=
spawn-animals=true
white-list=false
rcon.password=
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=A Minecraft Server
enable-rcon=false

让我们仔细看看这个列表中一些最重要的属性:

  • difficulty (默认 easy) - 设置游戏的难度,例如造成多少伤害以及元素如何影响玩家。 选项为 peacefuleasynormalhard
  • gamemode (默认 survival) - 设置游戏模式。 选项为 survivalcreativeadventurespectator
  • level-name(默认 world) - 这设置将出现在客户端中的服务器的名称。 诸如撇号之类的特殊字符可能需要以反斜杠开头。 这被称为 转义 字符,并且在特殊字符可能无法在上下文中正确解析时是常见的做法。
  • motd(默认 A Minecraft Server)- Minecraft 客户端的服务器列表中显示的消息。
  • pvp(默认 true) - 启用玩家对玩家的战斗。 如果设置为 true,玩家将能够进行战斗并互相伤害。

设置所需选项后,保存并关闭文件。

现在您可以成功启动您的服务器了。

和上次一样,让我们用 1024M 的 RAM 启动您的服务器。 这一次,您还应该授予 Minecraft(我的世界)在必要时使用最多 4G RAM 的能力。 请记住,欢迎您调整此数字以适应您的服务器限制或用户需求:

java -Xms1024M -Xmx4G -jar minecraft_server_1.18.2.jar nogui

给初始化一些时间。 很快您的新 Minecraft 服务器将开始生成类似于以下内容的输出:

Output[21:08:14] [Server thread/INFO]: Starting minecraft server version 1.18.2
[21:08:14] [Server thread/INFO]: Loading properties
[21:08:14] [Server thread/INFO]: Default game type: SURVIVAL
[21:08:14] [Server thread/INFO]: Generating keypair
[21:08:15] [Server thread/INFO]: Starting minecraft server on *:25565

服务器启动并运行后,您将看到以下输出:

Output[21:15:37] [Server thread/INFO]: Done (30.762s)! For help, type "help"

您的服务器现在正在运行,并且您已经看到了服务器管理员控制面板。 尝试输入 help

help

会出现这样的输出:

Output[21:15:37] [Server thread/INFO]: /advancement (grant|revoke)
[21:15:37] [Server thread/INFO]: /ban <targets> [<reason>]
[21:15:37] [Server thread/INFO]: /ban-ip <target> [<reason>]
[21:15:37] [Server thread/INFO]: /banlist [ips|players]
...

在此终端中,您可以运行管理员命令并控制您的 Minecraft 服务器。 现在您将学习使用 screen 在您退出终端后让您的 Minecraft 服务器保持运行。 然后您可以连接到您的 Minecraft 客户端并开始新游戏。

第 4 步 — 保持服务器运行

现在您的服务器已经启动,您希望它即使在您与 SSH 会话断开连接后也能保持运行。 由于您之前使用了 screen,因此您可以通过按 Ctrl + A + D 从此会话中分离。 你应该看到你回到了原来的 shell:

Output​​ubuntu@minecraft-2204:~$ screen
[detached from 3626.pts-0.minecraft-2204]
$

运行此命令以查看所有屏幕会话:

screen -list

您将获得包含会话 ID 的输出,您需要使用该 ID 来恢复该会话:

OutputThere is a screen on:
        3626.pts-0.minecraft-2204  (03/02/22 22:56:33) (Detached)
1 Socket in /run/screen/S-root.

要恢复会话,请将 -r 标志传递给 screen 命令,然后输入您的会话 ID:

screen -r 3626

当您准备再次退出终端时,请务必使用 Ctrl + A + D 退出会话,然后退出。

第 5 步 — 从 Minecraft 客户端连接到您的服务器

现在您的服务器已启动并正在运行,让我们通过 Minecraft 客户端连接到它。 那你就可以玩了!

启动您的 Minecraft Java 版副本并在菜单中选择 Multiplayer

接下来,您需要添加要连接的服务器,因此单击 Add Server 按钮。

在显示的 Edit Server Info 屏幕中,为您的服务器命名并输入服务器的 IP 地址。 这与您用于通过 SSH 连接的 IP 地址相同。

输入服务器名称和 IP 地址后,您将返回多人游戏屏幕,您的服务器现在将在该屏幕上列出。

从现在开始,您的服务器将始终出现在此列表中。 选择它并单击加入服务器

你在你的服务器上,准备好玩了!

结论

您现在拥有一个运行在 Ubuntu 22.04 上的 Minecraft 服务器,供您和您所有的朋友玩! 在粗糙的 3D 世界中尽情探索、制作和生存。 请记住:提防悲伤者。