完整版本的Minecraft服务器建设

首先在我经营的Minecraft服务器迎来运营4周年之际,我将基于这4年的经验,全面记录下Minecraft Java Edition中的多人游戏服务器的建设方法,以及管理和运营方法,一丝不落地逐步展开。

1. 环境编写首先,让我们来确认一下运行Minecraft服务器所需的环境。

需要专用的服务器吗?根据运营方式的不同,是否需要专用PC(服务器)来运行Minecraft服务器的问题。例如,如果想要24小时不间断开放服务器,或者想要与许多玩家一起玩(将来的目标是大型服务器),则需要准备专门用于运行Minecraft服务器的服务器设备。但是,如果只是在与朋友玩的时候才想要开放,或者是在私人环境中使用,通常使用的PC作为服务器也没有问题。但是,请注意如果通常使用的PC是笔记本电脑是需要注意的。

1-2. 笔记本电脑是危险的。考虑到火灾风险,应该避免将笔记本电脑作为服务器全天候运行。首先,笔记本电脑并不是设计成连续运行作为服务器的,长时间运行会给其带来相当的负载,加速电池的老化并缩短电脑的寿命。如果只有笔记本电脑且想要搭建Minecraft服务器,那就必须准备专用的服务器设备。

1-3. 使用VPS有一种使用专用服务器的方法是通过VPS(虚拟私人服务器)等服务器租赁服务以固定费用租赁。VPS是指服务器主机安装在企业的数据中心,通过远程操作从其他地方自己构建Minecraft服务器的方式。以下总结了使用VPS的优缺点。

VPS的好处:
・稳定性高
・无需在家安装服务器设备
・不必担心电费
・不需要自行维护故障时的维修工作

■ VPS的缺点:
– 多数情况下,CPU、内存/带宽等资源与其他用户共享,会出现延迟问题。
– 遭受DoS攻击时,服务会停止运行。
– 价格高昂,与性能不符,性价比低。

作者在过去的两年中,使用两家VPS运行了Minecraft服务器,但由于许多缺点,最终转换回了家庭服务器。这是由于连接人数的增加导致性能不足以及性能成本比较高的原因。

在VPS中,有些服务会根据服务器的启动时间进行收费,还有些在遭受DoS攻击时会产生大额费用,需要注意。

但对于初次运营Minecraft服务器的人来说,我还是推荐使用VPS。因为可以按月租赁,所以即使遇到挫折也可以很快停止,而且可以全天候运行而不必担心电费。但是,需要意识到在长期运营中,会出现性能不足的问题,并且需要升级到高级计划时,运营成本会变得更高。

1-4. 家用服务器就像其名称所示,自己购买服务器主机,并在家中安装服务器主机来进行运营。下面是自家服务器的优缺点总结:

■ 自家服务器的好处
• 在硬件、软件和网络相关方面,可以获得相当丰富的学习经验
• 可以根据预算和用途自行选择服务器零件并进行自主组装
•(根据配置而定)与虚拟专用服务器相比,性价比非常高。

自宅服务器的缺点:
· 初始投资较大
· 需要相关知识来进行运维
· 电费需自行承担
· 需要自己维修零部件故障
· 需要自行监控服务器并进行安全防护

如果要设置自宅服务器,需要较大的初期投资和相应的准备工作,所以不建议初次运营Minecraft服务器的人这样做。另外,如果要在自宅服务器上运营Minecraft服务器,注意必须使用光纤网络才能实现几乎流畅的运营。

1-6. 最低必要的性能在运营游戏服务器时,服务器需要具备相应的性能。如果服务器性能不足,玩家甚至无法正常玩游戏。由于人们不会聚集在延迟高的服务器上,因此首先需要准备一个至少能够舒适游玩的最低环境。

即使使用VPS,选择最便宜的方案也很大程度上无法快速运营Minecraft服务器,因此建议在比较以下列出的每个组件的最低性能要求时选择方案。

中央处理器【最低配置要求】至少2核心
【推荐配置要求】至少4核心以上

只要时钟频率在3.0GHz以上,基本上就没有问题。

图形处理器由于服务器的性质,基本上不需要图形性能。

内存【最低配置】2GB
【建议配置】4GB以上

基本上,只要滿足以下表格中所示的記憶體容量,就足夠了。但是,即使沒有完全滿足表格中的記憶體容量,通常也能夠很舒適地運行。例如,筆者的伺服器在分配了4GB的記憶體時,即使有20人同時連接,也能夠運行得相當舒適。

接続人数の目安メモリの量~5人2GB6~10人4GB11~20人8GB21~40人16GB41~80人32GB81~160人64GB在Minecraft服务器中,最重要的部分是内存容量,它直接影响舒适度。
根据插件数量和世界规模的不同,所需内存容量也会变化,因此最好多配备一些。

存储空间【最低需求】50GB SSD(用于操作系统启动和数据存储)/ 50GB HDD(用于备份)
【推荐需求】128GB 以上的 SSD / 512GB 以上的 HDD

连接【最低性能】100兆比特每秒
【推奨性能】1千兆比特每秒以上

如果是在家用服务器的情况下,最好使用光纤网络。

而对于VPS主机来说,通常使用共享的100Mbps网络,根据使用者增多以及夜间等时间段的不同,可能会出现延迟问题,请注意。

操作系统Linux (CentOS 或 Ubuntu)

筆者推薦的作業系統是Ubuntu。CentOS和Ubuntu的主要區別在於命令行操作,基本操作則大致相同。
如果是朋友之間等使用的話,連接數量在20以下的話,使用Windows10運作也沒問題。

2. 建立編輯好的,我们开始搭建Minecraft服务器。在这里,我们将解释在Linux系统(Ubuntu和CentOS两种方式)下的搭建方法。关于使用Windows下的bat文件进行服务器搭建的步骤,我们在这里省略不提。

2-1. 下载适用于服务器的Minecraft游戏主体首先下载适用于服务器安装的Jar文件。有官方版本和经过修改的版本,如Bukkit或Spigot,但本文将使用Spigot构建服务器。如果您有自己准备的软件,也可以使用它。

公式版本和改造版本的区别在于是否可以安装插件。显然,使用可以使用插件的版本可以进行防止恶意操作等措施,因此建议使用改造版本。

请从以下软件中选择一个进行下载。(如果没有特殊理由,建议选择Spigot)

下载Spigot
下载Bukkit
下载PaperMC
下载GlowstoneMC

2-2. 下载FTP软件在这里我们使用一个叫做FileZilla的FTP软件来进行操作。FTP软件是用来在服务器和工作计算机之间传输文件的软件。在这里我们主要使用它来将与Minecraft相关的文件传输到服务器上。除了FileZilla之外,还有其他的FTP软件如WinSCP,你也可以使用自己准备的FTP软件。

如果在自己的工作用电脑上搭建服务器的话,就不需要进行FTP文件传输操作。

请下载FileZilla

2-3. 文件传输使用FTP软件以root用户登录服务器。
登录成功后,将显示root目录。

如果在VPS上没有root权限或者想在个人电脑上搭建,可以在桌面或其他合适的位置创建一个文件夹,并在其中进行搭建。
通常情况下,我们应该使用专用的普通用户来进行搭建,而不是root用户,但本次我们将在”root”目录中新建一个名为”Minecraft”的文件夹,并在其中搭建Minecraft服务器。

/root/Minecraft

如果要创建一个专用用户(user),然后进行构建的话,路径将会如下所示。

/home/user/Minecraft

一旦你创建并移动了「Minecraft」文件夹,将刚才下载的Jar文件上传到 /root/Minecraft 目录下。
这样,使用FTP的操作就完成了。

2-4. 在服务器上安装软件这次将使用SSH连接到服务器。如果是Windows系统,可以使用专用软件TeraTerm,如果是Mac系统,则可以使用预装的终端进行访问。刚才是通过FTP连接到服务器并进行文件操作,而这次将通过SSH连接到服务器,从服务器内部执行命令。

打开TeraTerm或终端屏幕后,依次复制并使用以下命令。

※这次操作将以root用户进行。如果自己创建了Minecraft专用用户,则需通过该用户进行登录。

# ssh -l root [IPアドレス]

2-5. 安装屏幕安装Screen。
它的作用是在后台运行Minecraft 24小时。
通过在install前添加-y,可以省去Y/n确认。

# yum install screen
# apt install screen

2-6. 安装Java接下来安装Java。没有Java,Minecraft无法在服务器上运行。
如果Minecraft的版本低于1.16.5,则需要在服务器上安装Java 8;如果版本是1.17,则需要安装Java 16。
从1.18版本开始,Java 17成为了运行要求。

# yum install java-1.8.0-openjdk
# yum install -y openjdk-16-jdk
# yum install -y openjdk-17-jdk
# apt install java-1.8.0-openjdk
# apt install -y openjdk-16-jdk
# apt install -y openjdk-17-jdk

2-7.防火墙设置
在与服务器建立SSH连接的状态下进行操作。在这里,我们将进行必要的端口开放操作,以便在Minecraft中公开服务器。

在与Minecraft进行通信时需要开放端口25565。

# ufw allow 25565
# firewall-cmd --zone=public --add-port=25565/tcp --permanent

用重载设置来进行更新。

# ufw reload
# firewall-cmd --reload

如果是在家服务器的情况下,还需要开放路由器的端口。您可以通过访问http://192.168.0.1等进入路由器的设置页面,然后在各种端口设置中,使用“TCP”协议来开放“25565”端口。由于不同的制造商和服务提供商在端口开放的步骤上可能会有所不同,因此请自行查询。

プレゼンテーション1.png在搭建家庭服务器时,许多人会在端口开放上遇到困难和挫折,但其实其思路是非常简单的。为了便于理解,我准备了上面这样的图示。如果只在操作系统或者路由器上进行端口开放,那么就会像例子2和3一样,通信路径中断从客户端(玩家)到服务器的通信。只要中途的路径中断了一处,就无法连接到服务器,因此在例子2和3中无法与服务器通信,说明端口开放没有成功。

所以,只需像例1所示,尽量在所有路径中释放端口即可。

请注意,上图所示的路径仅作为一个例子,在不同的网络服务提供商的情况下,可能会在客户端和路由器之间加入光网络单元(ONU),或者如果电脑安装了防病毒软件,该软件可能会成为阻断路径的因素。

无论是供应商还是路由器制造商,虽然在一些步骤上会有些差异,但最终目标仍然是达到示例1的状态。

2月8日。首次启动。移动到放置有Minecraft服务器主程序的Jar文件的目录中。

# cd /root/Minecraft/

启动Minecraft。以下命令中的文件名应为「spigot.jar」。请各位将其替换为相应的Jar文件名。

# java -Xmx1024M -Xms1024M -jar spigot.jar

等待片刻后,初始启动将完成。在初始启动时,将在 /root/Minecraft 目录下生成各种文件。

在这里,由于需要同意使用条款,您必须在生成的文件中找到eula.txt并进行适当的更改。

# vi /root/Minecraft/eula.txt

执行该命令后,将显示eula.txt文件的内容,然后按下 “A键” 进入编辑模式,使用 “↑”、 “→”、 “←”、 “↓” 键将光标移动到最底部。

eula=false

正在成为的地方

eula=true

改为”No Chinese options available.”

2-9. 启动启动屏幕。

# screen

以下是Minecraft的启动命令,但在以下命令中已分配了2GB(2048MB)的内存。如果要更改内存分配量,可以在启动时更改该数值。使用MB单位进行设置时,请使用1024的倍数。
通过将”Xmx”和”Xms”的值设置为相同的数值,可以减轻对内存的负担。

# java -Xmx2048M -Xms2048M -jar spigot.jar

2-10. 从客户端登录

スクリーンショット 2021-06-20 20.08.58.png

2-11. 授予权限在初始状态下,玩家没有任何权限,因此可以在控制台中执行/op [MinecraftID]命令,给予自己权限。

2-12. 服务器停止如果要停止服务器,可以在Minecraft内使用“/stop”命令来停止。
基本上使用Screen运行,因此即使关闭控制台也不会停止。

一次执行/stop指令,停止服务器。

2020-11-29_21.46.23.png

3. 插件编程在运营Minecraft服务器时,不可或缺的是 “插件”。为了确保防止破坏和确立服务器的独特性,安装插件是必不可少的。

3-1. 插件的安装方法请在以下目录中进行插件的安装。

/root/Minecraft/plugins

请注意,如果不使用Spigot等修改版本,无法安装插件。这是在”构建版”中提到的。

3-2. 下载插件在这里,我整理了应该安装在服务器上的插件。一旦下载完成,将下载的Jar文件放入之前提到的目录,然后安装就完成了。重新启动服务器或执行/reload命令,以加载插件到服务器中。

世界编辑建筑插件。不仅可以对大规模的方块进行操作,还可以生成球体等对象。它还支持建筑物的复制和旋转,并且已经在许多服务器上安装了。

请下载这个插件。

核心保护防止破坏的插件。当遇到破坏行为时,通过撤销破坏者的行动来恢复到破坏之前的状态。只要安装了这个插件,玩家破坏服务器也将变得无意义。

请下载这个插件。

世界卫士能够保护大厅和禁止进入区域等的插件。可以根据区域对玩家的行动进行限制。能够进行整体的破坏行为防范。

请下载这个插件。

多重宇宙核心管理多个世界的插件。默认情况下,一个服务器只能管理一个世界,但通过使用此插件,可以管理和移动多个世界。

请下载此插件。

LuckPerms- 功能强大的权限管理插件权限插件。可以管理没有操作员权限的玩家的权限。权限管理在防止恶意破坏方面非常重要。可以在网站上设置权限组,非常方便。

请下载这个插件。

3-3. 插件的注意事项以下是关于安装插件时需要注意的事项总结。

・透過引入多个插件可能会导致插件之间出现兼容性问题。
・有恶意开发者制作的插件可能会导致服务器被黑客攻击。
・不要随意引入不可信任的开发者插件。
・不能随意满足玩家对于引入插件的要求。
・并不总是会有插件升级,无法确定开发何时停止。

4. 利用编程为了更高效地运营Minecraft服务器,在这里我们将实现重新启动和备份的全自动化。

给屏幕起名字给Screen命名后,即使会话断开,也能轻松重新连接。

# screen -S [名前]

要打开名为「MC」的屏幕

# screen -S MC

启动Minecraft服务器后,可以在名为“MC”的Screen上进行操作。同时按下“Control键”+“A键”+“D键”,可以从Screen中分离出来。

要再次連接到這個主持人,

# screen -r MC

只需执行它即可。使用它,您可以在一个服务器上运行多个Minecraft服务器。

如果想进入忘记分离的Screen,请在参数中添加-x。

# screen -rx MC

4-2. 启动脚本
由于每次启动服务器都需要运行java -Xmx1024M -Xms1024M -jar spigot.jar这个命令非常繁琐,所以我们创建一个脚本来简化启动流程。

请使用作业用电脑上的文本编辑器创建下面的Shell脚本。

# ------------設定箇所---------------
# 再起動までの待機時間(秒)
MEM=<割り当てるメモリの量>

# jarファイルの名前
JAR=<jarファイルの名前>
# ---------------------------------

java -${MEM} -${MEM} -jar ${JAR} nogui

使用时,请根据自己的环境将被< >括起的项目进行修改。

# ------------設定箇所---------------
# 再起動までの待機時間(秒)
MEM=1024M

# jarファイルの名前
JAR=spigot.jar
# ---------------------------------

一旦完成后,将其上传至/root/Minecraft/文件夹中。

因此,从下一次开始手动启动服务器时,需要输入的命令将减少为以下两个。

# cd /root/Minecraft
# ./start.sh

4-3. 实现自动重新启动。如果长时间连续运行的话会导致服务器崩溃,特别是如果已经安装了插件的话,每天重启一次是必须的。

安装Cron。

# yum install cron
# apt install cron

Cron是一个软件,可以在设定的时间运行脚本。

然后,在工作用电脑上创建一个用于重新启动的Shell脚本。

#!/bin/bash

# ------------設定箇所---------------
# 再起動までの待機時間(秒)
WAIT=30

# screenの名前
SCREEN_NAME=<screenの名前>

# メモリの割り当て量
MEM=<割り当てるメモリの量>

# サーバーJarのあるディレクトリ
DIR=<Jarファイルの存在するディレクトリ>

# サーバーJarの場所
JAR=<Jarファイルのパス>
# ---------------------------------

screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "say '${WAIT}'秒後にサーバーを再起動します\015"'

sleep $WAIT

screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "stop\015"'

sleep 20

screen -S ${SCREEN_NAME} -X stuff "cd ${DIR}"`echo -ne '\015'`

screen -S ${SCREEN_NAME} -X stuff "java -${MEM} -${MEM} -jar "${JAR}" nogui"`echo -ne '\015'`

接下来,在/root/Minecraft下创建一个新的/script目录。
将之前创建的restart.sh放入/root/Minecraft/script中。

接下来进行Cron的配置。

# crontab -e

在底部添加一行代码:0 4 * * * cd /root/Minecraft/script; ./restart.sh。

#
#
#
#
#
:
# m h  dom mon dow   command

0 4 * * * cd /root/Minecraft/script: ./restart.sh

我在这里设置了每天早上4点执行/root/Minecraft/script/restart.sh的设定。

如果想要每天9:30执行脚本,可以将其设置为30 9 * * *。

# service crontab restart

完成设置后,重新启动Cron并应用配置。这样自动重启就会生效了。

4-4. 实现自动备份
运营Minecraft服务器时,备份服务器是必不可少的。如果不备份,当服务器突然停止时,世界可能会受损,无法挽回。由于数据意外被重置会导致玩家失去信任,所以要注意。

首先创建一个/root/Backup文件夹。

接下来,用工作电脑编写Shell脚本。

#!/bin/bash

# バックアップ処理(ディレクトリのコピー) ->
cp -r /root/Minecraft /root/Backup

#zipに圧縮
zip -r Backup.zip /root/Backup/Minecraft

#ファイル名に日付を付ける
cp -aiv Backup.zip /root/Backup/Minecraft-`date "+%Y%m%d_%H%M"`.zip

#元ファイルの削除
rm -r /root/Backup/Minecraft
rm Backup.zip

如果按照本文所述建立服务器,可以直接使用此shell脚本而无需担心问题。但如果目录名称或结构不同,请根据自己的环境进行修改。

将此脚本放置在/root/script/路径下,并像自动重新启动脚本一样,将其注册到Cron中。

在底部添加:30 4 * * * cd /root/Minecraft/script && ./backup.sh。

#
#
#
#
#
:
# m h  dom mon dow   command

0 4 * * * cd /root/Minecraft/script: ./restart.sh
30 4 * * * cd /root/Minecraft/script: ./backup.sh

为了避免与重新启动同时进行可能导致故障,我们将备份时间推迟30分钟。

# service crontab restart

完成設定后,重新启动Cron以应用设置。

5. BungeeCord编程如果希望将Minecraft服务器分布到多个服务器上,可以使用名为BungeeCord的软件。
它主要用于在PVP服务器、生存服务器、大厅服务器等不同的服务器主机上运行。

搭建服务器由于BungeeCord在端口25565上开放,因此需要将另一个端口分配给Minecraft服务器。在这里,我们假设已经建立了两个以上的Minecraft服务器,每个服务器都在不同的端口上进行配置。
将这些服务器分别命名为”Server1″和”Server2″,并将”Server1″设为主服务器。

在服务器上使用的端口可以通过server.properties文件中的server-port字段进行更改。

5-2. 下载BungeeCord首先,下载BungeeCord核心插件。

请下载 BungeeCord

创建专用目录创建用于运行BungeeCord的专用目录。
将其命名为/root/BungeeCord。

请把刚刚下载的Jar文件放在这里。

5-4. BungeeCord的启动可以通过以下命令启动BungeeCord。

# java -Xmx512M -Xms512M -jar BungeeCord.jar

在首次启动之后,必要的文件将会在/root/BungeeCord目录下生成。

5-5. BungeeCord配置端的设定需要为自己的MCID授予权限。从目录中生成的文件中查找config.yml,并将其中的groups:的md_5更改为自己的MCID。以下是将权限传递给Nether2046的示例。

groups:
  Nether2046:
  - admin

接下来,要设置BungeeCord认可的服务器。
127.0.0.1等同于本地主机。如果在不同的服务器上构建了服务器,则要替换为该服务器的IP地址和端口号。

在同一台服务器上的设置示例中,如果Server1在端口25566上运行,Server2在端口25567上运行。

servers:
  Server1: #サーバー名
    address: 127.0.0.1:25566 #サーバーIP:ポート
    restricted: false #権限がないプレイヤーがサーバーに入れるかどうか
    motd: 'A Minecraft Server' #基本的には使わないのでいじらない
  Server2:
    address: 127.0.0.1:25567
    restricted: false
    motd: 'A Minecraft Server'

为了成功获取玩家的UUID,还需将ip_forward更改为true。此外,为了阻止非正式玩家登录,将online_mode也设置为true。

5-6. 水龙头一侧的配置接下来,如果在服务器注册中使用的软件是Spigot,需要将位于服务器目录下的spigot.yml文件的第31行附近的bungeecord设为true。

  bungeecord: true

然后,在server.properties文件的第23行附近,将online-mode设为false。

  online-mode=false

起动当设置完成并覆盖所有文件后,请启动屏幕。

# screen -S BungeeCord

运行BungeeCord。

# java -Xmx512M -Xms512M -jar BungeeCord.jar

在控制台上输入”end”并执行,可以停止。

5-8. 服务器之间的迁移在Minecraft中,要进行服务器间的移动,可以使用命令“/server [服务器名称]”。如果想让普通玩家进行服务器间的移动,可以将其嵌入NPC中等方式进行实现。还有一些插件可以通过右击告示牌来实现服务器间的移动。

5-9. 插件的安装
BungeeCord可以安装插件。只需将插件本体放入/root/BungeeCord/plugins文件夹中。将插件安装到这里后,该插件将在与BungeeCord相连接的所有服务器上生效。如果安装了LunaChat插件,可以在与BungeeCord相连接的不同服务器之间共享聊天功能。另外,如果安装了Votifier等插件,则可以在服务器之间共享投票奖励的发放。

#更新历史

更新日バージョン変更内容2023/04/06V1.1一部修正を行いました2021/07/11V1.0BungeeCord編を追加しました2021/06/20オリジナル記事を公開しました

bannerAds