2021年7月6日

技术教程:在Linux系统里搭建Minecraft服务器

作者 TheWhiteDog9487

-2:说明

这个操作我已经做了视频版放在Bilibili,如果希望跟着视频操作的话可以看这个这个

-1:一个问题

有人可能要问:为什么不用Windows Server?Linux这东西看着就头疼
我自己的观点如下:

  • 如果你在Linux领域是纯小白,我并不建议你使用Linux,Windows Server可能会是更好的选择
  • Linux服务器的优点:资源占用少,比RDP流畅(用过远程桌面的都知道我这是什么意思,相对来说流畅些)
  • Linux的缺点:入门门槛相对较高
  • Windows Server的优点: 门槛简直不要再低一点,只要你会用Windows电脑开服那你肯定就能用Windows Server开服,全程图形化界面
  • Windows Server的缺点:贵(因为这货是个商业软件,如果你买的是云服务器你可能会发现同配置Windows Server会比Linux贵出来一截,这就是许可证费用,当然某些不用付许可证费用的异类除外啊),RDP不流畅,容易被攻击(相对)
  • 建议各位按需选择,拒绝盲从,从自己做起

0:准备工作

你需要:

  • 一台Linux,带公网IPv4的服务器(我演示的是Ubuntu,Debian因为官方仓库里只有JDK11所以会更麻烦一些,这两种系统之外的话建议去找其他文章,至于IPv4,如果只有IPv6也不是不行,只是所有玩家都需要IPv6地址罢了)
  • 一些时间
  • 不怕困难敢于折腾的心
  • 一个顺手的终端
  • 一个传输文件的方式
  • Root权限
  • 礼貌地提问,并说声谢谢(如果需要的话)

1:正片

首先连接服务器(我用虚拟机和MobaXtern演示)

点击左上角的Session添加会话
再点击左上角的SSH,这个界面Remote Host输入服务器IP,Specify Username打勾并输入用户名,之后点击下面的OK保存
如果你不能直接访问Root用户,你可以先用普通用户的身份登录,然后sudo -i或者sudo su提权
这个地方输入用户的密码,输入的东西不会显示,输完之后回车
这样就成功了

我们需要OpenJRE16来运行Minecraft服务器,就像你在自己电脑上想玩Minecraft需要装Java一样

更新:Minecraft 1.18+需要OpenJRE 17

apt install openjdk-16-jre

注意:这个指令在Debian下面用不了,因为Debian的官方仓库里只有OpenJDK 11,而Minecraft 1.17服务器需要JRE16

如果你用的是Debian,需要用软件包(或压缩文件)安装JDK16后手动配置环境变量,这篇文章暂不介绍

输入y或者yes继续安装
这样就可以了

然后我们需要传一份Minecraft服务器核心文件进去,可以用这个:

在此之前我建议创建一个专门存放服务器文件的文件夹,不然文件满天飞看着不好看找也不好找

mkdir /home/MinecraftServer
cd /home/MinecraftServer
这个浏览器的位置可能要手动修改一下,地址栏输入/home/MinecraftServer回车就行
拖过去,像这样
正在上传
上传完之后应该是这样

这个时候终端内直接输入下面的指令就可以开服了

java -jar minecraft_server.1.17.jar
你的电脑上可能会闪过一个窗口,可能没有

第一次会报错,正常的,需要同意最终用户许可协议才能继续使用,用这个指令打开文件

nano eula.txt
什么编辑器无所谓,喜欢哪个用哪个

这个文件有两个地方需要注意

将下面的设置更改为 TRUE,即表示您同意我们的 EULA(Translate By Google)

By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).

几乎所有的教程都直接让你把下面的false改成true,但我没看到任何一个教程解释这是为什么,我觉得我有必要说一下

https://account.mojang.com/documents/minecraft_eula

将eula=false改为eula=true是必须的,但一旦你这么做,即表示你同意EULA
虽然这个不重要,但我有必要进行说明

改成这样,Ctrl+O→回车→Ctrl+X

之后再次运行启动服务器的指令

会出现这么一个窗口

当出现Done (*.*s)! For help, type “help”之后就完成了(*代表通配,通配任意多个任意字符)

java -jar *.jar nogui

有些教程这么写(参数可能更多,大部分是设置最大最小内存,小部分其他用途),后面nogui的作用是不要开X11转发启动上面这个窗口(会有这一段说明同样是因为很多教程只教你怎么做,不告诉你为什么),如果你服务器上X11开不起来的话就要加这个参数(选项),如果开的起来我也不建议你多弄一个窗口,原因等下会说

这个时候你可能会发现把终端(或上面这个窗口)一关服务器也会被马上关掉,这样导致的一个严重问题就是必须有一台电脑一直开着终端,服务器不关这台电脑就不能关
这好吗?这不好。所以我们需要screen软件包的帮助,使用这个指令安装

apt install screen

首先介绍一下常用指令的语法:

screen -S 名称     // 创建指定名称的后台会话
screen -ls         // 显示所有会话
screen -r 名称     // 进入指定会话

创建一个会话后会自动进入
在会话内输入exit则会删除这个会话并返回主终端
在后台会话内按Ctrl+A+D可以把会话挂在后台而不退出里面的进程

所以我们只需要:

  • screen -S MinecraftServer
  • java -jar *.jar nogui
  • Ctrl+A+D
  • 关闭终端(可选)

再提醒一次!*代表通配符,通配任意多个任意字符,实际指令不能这么写!*.jar要换成自己的服务器核心名称!

这么做过后你就可以把终端关了,需要在服务器层面执行指令的时候可以用这个指令返回:

screen -r MinecraftServer

2:常见问题

0:连不上
这一个情况需要具体问题具体分析,因为可以导致连不上的可能性实在是太多了,包括但不限于:

  • ufw没放行端口
  • 服务器配置中的端口不是标准的25565
  • ISP层面的防火墙没配置
  • ISP封端口
  • 开了白名单但是没把自己加进去
  • 开了CDN但是没加SRV记录(这个搞得我也很头疼,因为一旦加入SRV记录源服务器IP就会被暴露,CDN白开了)
  • 服务器根本就没开起来(报错包括但不限于:X11开不起来,端口无法绑定,内存不够用,没同意EULA)

2:服务器核心上哪里去搞

原版的可以这么下载,其它非官方的自己去官网找

3:Minecraft服务器侧重于吃什么资源
我不知道,但据我的观察得出的结论是:全部。特别是处理器,内存和网络,如果玩家多硬盘消耗也很猛,可能唯一不需要的是显卡?我不知道,没试过

4:能不能不用JRE16
能但不完全能,如果服务器版本大于等于1.17的话你可以用旧版本JRE试试,保证试试就逝世(其实是会报错而已),小于1.17的话随你便

5:用OracleJDK还是OpenJDK?
随意

6:为什么不用apt install default-jre?
主要是避免争议,至于能不能用,为什么不能呢?那肯定能啊!但要注意这个包指向的是JRE11(通过apt info default-jre 可以查看),如果是1.17的服务器你大可试试,保证试试就逝世