Linux服务器搭建Minecraft原版/Mod服务器详细教程

3,889 阅读16分钟

Minecraft(我的世界)是一款非常好玩的游戏,其多人联机玩法,更是增加了许多乐趣。不过我们应当如何搭建服务器,才能和我们的小伙伴们一起玩呢?

今天我就来介绍一下,如何搭建Minecraft原版或者模组服务器。在学习该教程之前,需要大家对Linux操作系统有一定的基础,至少要熟悉常用命令的使用。

1,准备

首先,我们需要购买一台Linux服务器,并推荐使用Debian系统,建议选择国内节点,延迟会低很多。

然后下载安装远程服务器管理软件例如FinalShell

2,服务器安装Java运行环境

需要注意的是,不同版本的Minecraft服务端需要使用的Java版本也可能有所不同,对于一些老版本例如1.12及其以下的,基本使用Java 8即可,对于新版本更推荐使用Java 17或者21版本,选择正确的Java版本可以减少内存占用,提高CPU效率。

当然这里做一个推荐。

原版服务器

  • 1.11.2及其以下版本:Java 8
  • 1.12-1.16.5版本:Java 11
  • 1.17-1.20.4版本:Java 17
  • 1.20.5及其以上版本:Java 21

Forge服务器

  • 1.12.2其以下版本:Java 8
  • 1.13-1.16.5版本:Java 11
  • 1.17及其以上版本:Java 17或Java 21

NeoForge服务器

  • 1.20.4及其以下版本:Java 17
  • 1.20.5及其以上版本:Java 21

Fabric服务器

  • 1.16.5及其以下版本:Java 8
  • 1.17-1.20.4版本:Java 17
  • 1.20.5及其以上版本:Java 21

这里推荐几个OpenJDK下载:

选择对应版本的JRE(Java Runtime Environment, Java运行环境)安装包或者压缩包下载即可(不要下载JDK),将其上传至服务器解压或者安装。

如果你下载的deb安装包,则通过下列命令安装:

# 安装
sudo dpkg -i "deb安装包路径"

# 若出现错误则执行
sudo apt install -f

如果你下载的压缩包,则将其解压到某个位置,并配置环境变量,环境变量配置可以看这个博客的Linux配置部分:链接

配置完成,断开重连服务器,输入命令:

java -version

有版本信息输出则成功:

image-20241230133049377

到此Java的安装和配置就完成了!

3,开服

下面就可以启动Minecraft服务器了!这里分为原版和常见模组服务器分别讲解。

(1) 原版

原版服务器适用于纯净版Minecraft,仅包含游戏内部内容,不包含模组和插件。

① 下载服务器核心

MCVersions下载你想要的版本的服务端核心,在网站左侧稳定版找到你想要的版本点击Download按钮,我这里下载1.21.4版本:

image-20241229150405434

进入下载页面,点击Download Server jar下载服务端核心:

image-20241229150417318

然后将下载的jar文件上传至你的服务器的某个文件夹下,然后使用cd命令进入该文件夹(一定要使用cd命令进入!)

② 初始化并配置服务器

我下载文件名为server.jar,上传并cd进所在文件夹之后执行命令,首先执行下列命令初始化服务器配置

java -jar server.jar --initSettings

此时会释放依赖库文件,并生成服务器配置文件server.properties和用户许可协议eula.txt文件:

image-20241229150825735

我们需要先同意一下EULA协议,否则后续会启动失败,编辑eula.txt文件,修改里面的falsetrue如下:

image.png

然后修改服务器配置,配置文件是server.properties,里面涉及到游戏服务器的众多配置例如难度、人数限制等等,其内容如下:

image-20241229151237700

配置项都是配置名=配置值的形式,根据自己的情况修改对应配置值,这里讲解一下常用的配置选项:

  • gamemode 游戏模式,有如下值可选:
    • survival 生存模式
    • creative 创造模式
    • adventure 冒险模式
    • spectator 旁观模式
  • difficulty 游戏难度,有如下值可选
    • peaceful 和平
    • easy 简单
    • normal 普通
    • hard 困难
  • allow-flight 允许玩家飞行,配置truefalse分别表示允许和不允许,该配置会影响一些带有飞行模组的服务器
  • level-seed 生成世界的种子,留空则生成世界时随机
  • level-name 世界名称,将作为世界名称及其文件夹名
  • max-players 最大玩家数
  • motd 服务器欢迎消息
  • online-mode 是否开启正版验证,若设为true则仅允许登录了正版账户的玩家加入服务器
  • pause-when-empty-seconds 服务器在没有玩家在线时,指定秒数后自动停止计算,设置为负数则不会自动停止计算
  • player-idle-timeout 设定服务器将在玩家的空闲挂机达到指定时长(单位为分钟)时将玩家踢出服务器,若设为0则不会踢出空闲玩家
  • pvp 是否开启玩家PVP(伤害)
  • server-port 服务器端口号
  • view-distance 能见度,即世界渲染距离
  • white-list 是否开启白名单,若开启后,仅有白名单以及管理员才能加入服务器
  • spawn-protection 出生点保护,通过将该值进行2x + 1的运算来决定出生点保护区域的边长,例如设置为1会保护以出生点为中心的3 × 3方块的区域,被保护的区域非管理员玩家无法破坏或者互动(例如开门、开箱子等),如果服务器没有管理员,出生点保护不生效,此外设置为0或负数会禁用出生点保护

需要注意的是:

  • 建议online-mode设为false,除非都有正版账户,否则会无法加入服务器
  • 1.14版本以前,gamemode配置使用数字0-3表示生存、创造、冒险和旁观模式,difficulty配置使用数字0-3表示和平、简单、普通和困难难度,在后续版本中才替换成字符串形式,但新版本仍然兼容使用数字配置
  • server-port配置服务器的端口,默认25565,需要确保你配置的端口号在服务器防火墙配置中已放行

③ 启动服务器

修改完成配置后,就可以启动服务器了,使用下列命令:

java -jar server.jar nogui

也可以加上JVM参数限制运行内存:

# 限制最小内存为256MB,最大内存为1024MB
java -Xms256M -Xmx1024M -jar server.jar nogui

此外,如果你使用的是Java 17及其以上版本,建议加上-XX:+UseZGC参数使用ZGC垃圾回收器,该垃圾回收器在停顿时间以及回收性能上有着较好的表现:

# 限制内存为256M-1G,并使用ZGC垃圾回收器
java -Xms256M -Xmx1G -XX:+UseZGC -jar server.jar nogui

稍等片刻,最后显示Done!字样说明启动成功:

image.png

后续若要修改服务器配置,可以在控制台输入/stop关闭服务器,然后修改配置文件后重启即可。

然后打开游戏->多人游戏->添加服务器(或者直接连接),地址填:你的服务器外网地址:服务器端口

然后就可以进入游戏了!

(2) Forge模组服务器

Forge是一个经典的Minecraft模组加载器,虽然如今对于新版本Minecraft来说,Forge的开发迭代进度和生态有所滞后,但是对于一些经典版本例如1.7.101.12.2以及1.16.5来说,其模组数量仍然是相当丰富的。

① 下载服务器安装程序

Forge官网下载你想要的版本的Forge,下载Installer,以1.21.4为例:

image-20241229154144230

等待广告后,点击右上角SKIP下载服务器文件:

image-20241229154231316

得到一个jar文件,我这里文件名为forge-1.21.4-54.0.13-installer.jar,将其上传至服务器某个目录下,并使用cd命令进入该目录,执行下列命令安装Forge服务器

java -jar forge-1.21.4-54.0.13-installer.jar --installServer

然后它就开始下载相应的依赖库,需要等一会,因为是从外网下载因此可能很慢或者失败,可以多试几次。

如果一直下载不成功且你有代理的话,可以在执行Forge Installer时通过JVM参数指定代理:

# 例如:java -Dhttp.proxyHost="127.0.0.1" -Dhttp.proxyPort="1080" -Dhttps.proxyHost="127.0.0.1" -Dhttps.proxyPort="1080" -jar "forge-1.12.2-14.23.5.2855-installer.jar" --installServer
java -Dhttp.proxyHost="http代理地址" -Dhttp.proxyPort="http代理端口" \
	-Dhttps.proxyHost="https代理地址" -Dhttps.proxyPort="https代理端口" \
	-jar forge-1.21.4-54.0.13-installer.jar --installServer

最后出现successfully字样则成功:

image-20241230142341954

到此,Forge服务端安装完成,我们可以先删除Installer的jar文件和log文件,因为用不着了:

image-20241230142542270

② 初始化并配置服务器

在上述安装完成后,我们可以发现生成了服务端启动脚本文件run.batrun.sh,分别是Windows和Linux操作系统对应的启动脚本:

image-20241230142651519

后续调用该启动脚本,我们就可以启动Forge服务器,这里在Linux上我们调用run.sh即可。

同样地我们还是先初始化服务器配置,执行下列命令:

./run.sh --initSettings

执行完成后,可见生成了eula.txt文件,但是没有生成server.properties文件:

image-20241230144315768

这时我们先修改一下eula.txt文件同意协议,和上面的原版服务器步骤一样,然后再执行一次初始化服务器的命令:

./run.sh --initSettings

可见这时就会生成配置文件server.properties了!

image-20241230144549387

现在就可以修改server.properties指定配置,配置意义和上述原版服务器一样,这里不再赘述。

此外,我们发现还生成了mods文件夹:

image-20241230144615691

该文件夹就是存放模组的文件夹,这时将你需要添加的模组文件上传进去即可。

③ 启动服务器

最后使用命令启动Forge服务端即可:

./run.sh nogui

出现Done!字样则成功:

image-20241230144708800

到此,服务器已启动并加载了模组,可以打开游戏加入了!

如果需要增加一些例如-Xmx这样的JVM参数,可以编辑服务端程序目录下的user_jvm_args.txt文件:

image-20241230144937600

其默认内容如下:

image-20241230144957547

Forge服务端启动时会读取该文件参数作为JVM启动参数,其中以#开头的行都是注释,不会被读取(你也可以删掉),要加入参数,在文件末尾加入即可,一行一个参数例如:

-Xms2G
-Xmx4G
-XX:+UseZGC

如下图:

image-20241230145230209

再次启动服务器,就会应用这些参数。

④ 老版本说明

对于旧版本的Forge,有一点和上面不太一样,就是旧版本Forge在安装完成后,不会生成run.shrun.bat启动脚本,需要我们手动运行jar文件启动,其中:

  • 1.7.10版本或者低版本,安装完成后会生成一个名为forge-x.x.xx-xxx-universal.jar形式的文件,即为Forge服务端主程序
  • 1.12版本及其以上部分版本,安装完成后会生成一个名为forge-x.x.xx-xxx.jar形式的文件,即为Forge服务端主程序

我们使用java命令执行它,生成配置、修改并启动即可,和原版类似:

# 假设你已经安装完成
# 首先生成配置,会生成eula.txt和server.properties文件
# 如果没有生成server.properties文件,那就先修改eula.txt同意协议后再执行初始化命令
java -jar forge-x.x.xx-xxx.jar --initSettings

# 修改eula.txt同意协议,并按需配置server.properties,加入模组后,即可启动
java -jar -Xms1G -Xmx2G -XX:+UseZGC -jar forge-x.x.xx-xxx.jar nogui

(3) NeoForge服务器

NeoForge是从Forge项目分支出来的,并单独成为了一个新的模组加载器项目,可以理解为是Forge的后继者,主要适用于新版本Minecraft,目前NeoForge也兼容Forge的模组文件,但是以后可能不会再兼容。

① 下载服务器安装程序

进入NeoForge官网页面,点击展开For Other Versions下的Click here to go to the version list!按钮以选择你想要的版本下载:

image-20241230150435470

选择你想要的版本:

image-20241230150556400

beta的版本是测试版本,不建议使用,这里以1.21.3游戏版本为例,我这里下载的文件名为neoforge-21.3.58-installer.jar,将其上传至服务器某个目录下,并使用cd命令进入该目录,执行下列命令安装NeoForge服务器

java -jar neoforge-21.3.58-installer.jar --install-server

和Forge类似,安装时会下载很多依赖,若下载频繁失败,可以加上参数使用代理服务器:

java -Dhttp.proxyHost="http代理地址" -Dhttp.proxyPort="http代理端口" \
	-Dhttps.proxyHost="https代理地址" -Dhttps.proxyPort="https代理端口" \
	-jar neoforge-21.3.58-installer.jar --install-server

出现successfully字样则安装完成:

image-20241230151206221

现在可以删除installer安装程序文件和log日志文件,后续不需要了:

image-20241230151316711

② 初始化并配置服务器

和Forge一样,生成了run.batrun.sh两个启动脚本,分别是Windows和Linux系统对应的启动脚本:

image-20241230151439439

后续调用该启动脚本,我们就可以启动NeoForge服务器,这里在Linux上我们调用run.sh即可。

同样地我们还是先初始化服务器配置,执行下列命令:

./run.sh --initSettings

可见生成了eula.txt但是没有生成server.properties文件:

image-20241230151710610

我们需要修改eula.txt同意协议,和原版一样,然后再执行一次初始化命令:

./run.sh --initSettings

此时,生成了server.properties文件,修改该配置文件,并将你的模组文件上传到mods文件夹下即可。

image-20241230152142345

③ 启动服务器

执行下列命令启动即可:

./run.sh nogui

出现Done!字样则启动成功:

image-20241230152314400

此时,服务器启动,可以打开游戏并连接加入。

和Forge一样,如果需要增加一些例如-Xmx这样的JVM参数,可以编辑服务端程序目录下的user_jvm_args.txt文件:

image-20241230152357868

其中#开头的是注释,不会被读取,可以删除,在文件末每行一个参数即可,例如:

image-20241230152457941

再次使用run.sh启动服务器,就会应用这些参数。

(4) Fabric服务器

Fabric是一个轻量级的模组加载器,作为后起之秀,其优化好、速度快等特性,使其在玩家与开发者群体中越来越受欢迎。在高版本的Minecraft中,Fabric模组数量已经超过了Forge模组的数量(在CurseForge粗略统计)。

① 下载服务器核心

进入Fabric官网下载页面,点击Other installation options下面的Minecraft Server选项:

image-20241229161033120

选择Minecraft版本后下载服务器安装程序:

image-20241229161137117

得到一个jar文件就是Fabric服务器核心文件,我这里下载的文件名是fabric-server-mc.1.21.4-loader.0.16.9-launcher.1.0.1.jar,将其上传至服务器某个目录下。

② 初始化并配置服务器

并使用cd命令进入jar所在目录下,执行下列命令初始化服务器的配置文件和协议文件等:

java -jar fabric-server-mc.1.21.4-loader.0.16.9-launcher.1.0.1.jar --initSettings

类似的,第一次启动时会下载依赖库文件,若下载的速度很慢,也可以加上对应参数配置代理:

java -Dhttp.proxyHost="代理服务器地址" -Dhttp.proxyPort="代理服务器端口" \
	-Dhttps.proxyHost="代理服务器地址" -Dhttps.proxyPort="代理服务器端口" \
	-jar fabric-server-mc.1.21.4-loader.0.16.9-launcher.1.0.1.jar --initSettings

初始化完成后会生成eula.txt以及server.properties文件,修改eula.txt同意协议,并按需修改server.properties修改服务器配置,此时mods文件夹也已经生成,可以将你要加入的模组文件放进去,这一点和上面Forge服务器一样的。

③ 启动服务器

执行下列命令启动Fabric服务器即可:

# 请按需自行修改JVM参数
java -Xms256M -Xmx1G -XX:+UseZGC -jar fabric-server-mc.1.21.4-loader.0.16.9-launcher.1.0.1.jar nogui

出现Done!字样则启动成功:

image-20241229162357500

到此,可以打开游戏并加入服务器。

4,关于世界

所有的服务器其世界数据都位于服务器文件夹的world文件夹下:

image-20241229162655617

我们初次启动服务器时,这个world文件夹不存在,因此启动时会自动生成一个世界,后续则会加载这个world文件夹。

在某些情况下,我们需要重新生成世界

  • 不想玩当前世界了,或者要换个种子重新玩
  • 新增了一些模组,且模组中包含一些自然生成的矿物、生物群系等需要重新生成(例如工业2模组包含很多自然生成的矿物)
  • ...

此时只需停止服务器后,删除这个world目录即可,再次启动服务器即可重新生成,也可以将这个world文件夹备份下来。

此外,本地游戏存档(位于游戏目录/.minecraft/versions/游戏版本/saves或者游戏目录/.minecraft/saves目录下的每个文件夹都是一个存档)也可以上传至服务器,改名为world,这样服务器启动时会加载该存档。

事实上,这个world是默认的世界名称,你可以通过修改server.properties里的level-name来修改世界名称,该配置值将作为世界名称及其文件夹名,你也可以把你已生成的世界存档复制过来,然后让这个值与那个文件夹的名字保持一致,服务器就可以载入该存档。

5,后台运行

不过有一个问题,当我们关闭FinalShell远程窗口会话之后,服务端也跟着终止了

我们需要借助screen软件使其后台运行。

首先安装screen软件:

sudo apt install screen

然后新建一个名为mc的窗口:

# screen -S 新窗口名
screen -S mc

这个时候你就进入了这个新窗口了,这个窗口和我们远程会话进程是分离的,在这个窗口中,使用cd命令进入服务端核心所在文件夹并执行我们上面启动服务端的一系列操作即可。

在这个新窗口启动服务端之后,直接关闭FinalShell断开连接,服务端仍然还在运行,我们就可以正常进入游戏。

以后再连接服务器,可以使用screen命令再进入我们的服务端的命令窗口对服务端进行操作:

# screen -r 窗口名,进入窗口
screen -r mc

还可通过下列命令查看所有screen窗口:

# 查看所有窗口
screen -ls

6,总结

看起来Minecraft开服的步骤很多,其实并不难,总结起来就是:

  • 下载服务器核心
  • 初始化配置
  • 同意eula.txt,修改server.properties,加入模组(模组服务器)
  • 启动服务器

这样就完成了初步配置。

以后关闭服务端就是进入服务端运行的screen窗口,执行stop命令停止即可。

再启动只需使用java -jar命令运行服务端/Forge/Fabric服务端核心jar文件即可。

参考文档:

  • Minecraft Wiki - Java版服务器搭建指南:传送门
  • Minecraft Wiki - 服务器配置属性:传送门
  • Fabric服务器无GUI安装指南:传送门

附上文一些文件备用下载地址(提取码都是2333):

  • Minecraft原版服务端核心:传送门
  • Forge服务端(已完成配置,加入mod后即可启动):传送门
  • Fabric服务端(已完成配置,加入mod后即可启动):传送门