如何建立一个现代的 Minecraft 服务器
哪个男孩不想有一台 Minecraft 服务器?
系统
Minecraft 服务端使用 Java 编写,可以跨平台运行,因此可以使用各种 Linux 发行版,甚至可以用 Windows 开服务器。不过为了服务器的稳定运行,还是不建议使用 Windows 开服务器。
本文使用 Debian 10 作为服务器系统,其他系统操作方法大同小异。
安装 Java 运行环境
Debian 安装 Java 环境很方便,直接使用 apt 安装即可。
apt install default-jre
下载 Paper 服务端
Minecraft 有官方服务端,当然也有很多第三方服务端。这里我选择了 Paper 服务端。
Paper 服务端可以直接从他们的官网下载到:papermc.io/downloads
下载后得到的 jar 文件用 scp 上传到服务器即可。
建立运行用户
为了服务器的安全,需要建立一个专门用于运行 Paper 服务端的用户:
adduser minecraft
将 Paper 服务端移动到 /opt/minecraft
并赋予用户权限:
mv /path/to/paper.jar /opt/minecraft/paper.jar
chown -R minecraft:minecraft /opt/minecraft
初次运行
使用下面的命令运行服务端:
java -Xmx4G -Xms2G -jar paper.jar nogui
第一次运行服务端会提示需要同意许可协议,打开 eula.txt
将 eula
改为 true
即可。
建立 systemd 服务
作为一台 Minecraft 服务器,Paper 服务端需要 24 小时运行,为了方便管理这里使用 systemd 进行管理。
首先需要安装依赖的软件:
apt install screen
建立 /lib/systemd/system/minecraft.service
文件,内容如下,注意需要修改对应的目录、服务端文件和使用内存的大小:
# From: https://minecraft.gamepedia.com/Tutorials/Server_startup_script
[Unit]
Description=Minecraft Server
After=network.target
[Service]
WorkingDirectory=/opt/minecraft
PrivateUsers=true
User=minecraft
Group=minecraft
ProtectSystem=full
ProtectHome=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
ExecStart=/bin/sh -c '/usr/bin/screen -DmS minecraft /usr/bin/java -server -XX:+UseCompressedOops -Xss256k -XX:ParallelGCThreads=16 -Xms3G -Xmx5G -jar paper.jar'
ExecReload=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "reload"\\015'
ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "say SERVER SHUTTING DOWN. Saving map..."\\015'
ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "save-all"\\015'
ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "stop"\\015'
ExecStop=/bin/sleep 10
Restart=on-failure
RestartSec=60s
[Install]
WantedBy=multi-user.target
现在就可以使用 systemd 管理 Paper 服务端了:
systemctl enable minecraft.service
systemctl start minecraft.service
最后修改于 2020-02-24