如何在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 版本。
先决条件
为了遵循本指南,您需要:
- 全新安装 Ubuntu 22.04 的服务器,具有
sudo
权限的非 root 用户,并启用了 SSH。 您可以按照本指南来初始化您的服务器并完成这些步骤。 Minecraft 可能会占用大量资源,因此在选择服务器大小时请记住这一点。 如果您使用 DigitalOcean 并需要更多资源,您可以随时调整 Droplet 的大小以添加更多 CPU 和 RAM。 - 安装在本地 Mac、Windows 或 Linux 机器上的 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
) - 设置游戏的难度,例如造成多少伤害以及元素如何影响玩家。 选项为peaceful
、easy
、normal
和hard
。gamemode
(默认survival
) - 设置游戏模式。 选项为survival
、creative
、adventure
和spectator
。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:
Outputubuntu@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 世界中尽情探索、制作和生存。 请记住:提防悲伤者。