kotoyuuko

CORE

昨日より、明日より、笑える今が一番大好き。
github
telegram
email

如何建立一個現代的 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.txteula 改為 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
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。