Ubuntu 20.04架設Minecraft伺服器

Minecraft 一直是最流行的遊戲之一。它是一個沙盒視訊遊戲,使用者可以體驗無限的世界,並且可以構建不同的結構,從簡單的房子到高聳的摩天大樓。

這個指南解釋如何在 Ubuntu 20.04 上搭建我的世界伺服器。我們將會使用 Systemd 來執行我的世界伺服器以及mcrcon工具來連線執行的實例。我們也將向你展示如何建立一個計劃任務,執行常規的伺服器備份。

一、前提

根據 Minecraft 官方網站,4GB RAM 記憶體是最基本的配置。

安裝必要的軟體包來構建mcrcon工具:

sudo apt update
sudo apt install git build-essential

二、安裝 Java 執行環境

Minecraft 需要 Java 8 或者更高版本。 我的世界 伺服器不需要圖形用戶界面,因此我們將會安裝 Java 的無頭模式版本。這個版本更適合伺服器應用,因為它有更少的依賴,並且使用更少的系統資源。

執行下面的命令,安裝 OpenJRE 11 無頭模式軟體包:

sudo apt install openjdk-11-jre-headless

驗證安裝,列印 Java 版本:

java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)

三、建立 Minecraft 使用者

因為安全原因, Minecraft 不應該在 root 使用者下執行。我們將會建立一個新的系統使用者和使用者組,使用者主目錄/opt/minecraft。這個使用者有最小許可權,來執行 Minecraft 伺服器:

sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft

我們不會為這個使用者設定密碼。這樣,這個使用者將不能通過 SSH 登錄。想要修改minecraft使用者,你將需要使用 root 登錄伺服器,或者其他有 sudo 許可權的使用者。

四、在 Ubuntu 上安裝 Minecraft

在開始安裝過程之前,切換到minecraft使用者:

sudo su - minecraft

執行下面的命令在使用者主目錄下建立三個新的目錄:

mkdir -p ~/{backups,tools,server}

backups目錄將會儲存 伺服器備份。你可以同步這個目錄到你的遠端備份伺服器。
tools 目錄將會託管mcrcon客戶端和備份指令碼。
server目錄將會包含實際的 Minecraft 伺服器和它的數據。

4.1 下載並且編譯mcrcon

RCON 是一個協議,它允許你連線到 Minecraft 伺服器,並且執行命令。mcron是一個 RCON 客戶端,使用 C 語言編寫而成。

我們將會從 Github 下載最新的原始碼,並且構建mcrcon二進制檔案。

從 Github 克隆Tiiffi/mcrcon源到~/tools/mcron目錄:

git clone https://github.com/Tiiffi/mcrcon.git ~/tools/mcrcon

一旦完成,驗證mcrcon編譯成功,列印它的版本:

./mcrcon -v

輸出看起來像是這樣:

mcrcon 0.7.1 (built: Jun 23 2020 15:49:44) - https://github.com/Tiiffi/mcrcon
Bug reports:
    tiiffi+mcrcon at gmail
    https://github.com/Tiiffi/mcrcon/issues/

4.2 下載 Minecraft 伺服器

有一些 Minecraft 伺服器 mods 例如 Craftbukkit 或者 Spigot ,允許你在你的伺服器上新增特性(外掛)以及定製,以及調整伺服器設定。

在這個指南中,我們將會安裝最新的 Mojang 官方 vanilla 我的世界伺服器。同樣的指令,同樣適合於其他的伺服器 mods。

去 Minecraft 下載頁面 下載最新的 Minecraft 伺服器 Java 壓縮包(JAR)。在寫作的時候,最新的版本是1.16。

使用wget下載 jar 檔案到~/server目錄。

wget https://launcher.mojang.com/v1/objects/a0d03225615ba897619220e256a266cb33a44b6b/server.jar -P ~/server

4.3 配置 Minecraft 伺服器

一旦下載完成,切換到~/server目錄,並且啟動 Minecraft 伺服器:

cd ~/server
java -Xmx1024M -Xms1024M -jar server.jar nogui

第一次啟動的時候,伺服器執行一些操作,建立server.properties和eula.txt檔案,並且停止。

[17:35:14] [main/ERROR]: Failed to load properties from file: server.properties
[17:35:15] [main/WARN]: Failed to load eula.txt
[17:35:15] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

想要執行伺服器,你需要同意Minecraft EULA,就像上面輸出所有提示的。

打開eula.txt檔案,並且修改 eula=false 為 eula=true:

nano ~/server/eula.txt

輸出:

eula=true

關閉並且儲存檔案。

下一步,打開server.properties檔案,並且啟動rcon協議,並且設定 rcon 密碼:

nano ~/server/server.properties

定位到下面的行,並且更新它們的值,就像下面顯示的一樣:

rcon.port=25575
rcon.password=strong-password
enable-rcon=true

不要忘記將strong-password修改爲一些更安全的密碼。如果你不想從遠端位置訪問 Minecraft 伺服器,確保 rcon 埠被防火墻所阻塞。
在這裡,你可以調整伺服器的預設屬性。想要獲取更多關於伺服器設定的資訊,瀏覽server.properties頁面。

五、建立 Systemd 單元檔案

與手動啟動 Minecraft 伺服器相比,我們將會建立一個 Systemd 單元檔案,並且將 Minecraft 當作服務來執行。

通過exit來切換回你的 sudo 使用者。

打開你的文字編輯器,並且在/etc/systemd/system/目錄下建立一個名為minecraft.service的檔案:

sudo nano /etc/systemd/system/minecraft.service

貼上下面的配置:

[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xmx1024M -Xms1024M -jar server.jar nogui
ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password stop

[Install]
WantedBy=multi-user.target

根據你的伺服器資源來調整Xmx和Xms標誌。Xmx標誌定義 Java 虛擬機器的最大申請記憶體。而Xms定義了初始申請記憶體。目前,確保你使用了正確的rcon埠和密碼。

儲存檔案,並且重新載入 systemd 管理配置:

sudo systemctl daemon-reload

你還可以輸入下面的命令,啟動 Minecraft 伺服器:

sudo systemctl start minecraft

當你第一次啟動服務的時候,它將會產生伺服器配置檔案和目錄,包括 我的世界。

使用下面的命令,檢查服務狀態:

sudo systemctl status minecraft

輸出:

● minecraft.service - Minecraft Server
     Loaded: loaded (/etc/systemd/system/minecraft.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-06-23 17:48:44 UTC; 8s ago
   Main PID: 1338035 (java)
      Tasks: 15 (limit: 1074)
     Memory: 465.3M
     CGroup: /system.slice/minecraft.service
             └─1338035 /usr/bin/java -Xmx1024M -Xms1024M -jar server.jar nogui

最後,啟動 Minecraft 服務開機啟動。

sudo systemctl enable minecraft

六、調整防火墻

Ubuntu 附帶防火墻工具 UFW。如果在你的系統上啟用了防火墻,你想從你的本地網路訪問 Minecraft 伺服器,你需要打開埠25565:

sudo ufw allow 25565/tcp

七、配置備份

在這一節,我們建立一個備份 shell 指令碼和計劃任務,以便自動備份 Minecraft 伺服器。
切換到minecraft:

sudo su - minecraft

打開你的文字編輯器,並且建立下面的檔案:

nano /opt/minecraft/tools/backup.sh

貼上下面的配置:

#!/bin/bash

function rcon {
  /opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password "$1"
}

rcon "save-off"
rcon "save-all"
tar -cvpzf /opt/minecraft/backups/server-$(date +%F-%H-%M).tar.gz /opt/minecraft/server
rcon "save-on"

## Delete older backups
find /opt/minecraft/backups/ -type f -mtime +7 -name '*.gz' -delete

儲存檔案,並且將指令碼設定為可執行:

chmod +x /opt/minecraft/tools/backup.sh

下一步,建立一個定時任務,每天自動在一個固定時間執行一次。

打開你的 crontab 檔案,輸入:

crontab -e

每天 23:00 執行備份指令碼,貼上下面的文字:

0 23 * * * /opt/minecraft/tools/backup.sh

八、訪問 Minecraft 終端

想要訪問 Minecraft 終端,使用mcrcon工具。你需要指定主機,rcon 埠,rcon 密碼並且使用-t(啟動mcrcon終端模式):

/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p strong-password -t

輸出:

Logged in. Type "Q" to quit!
> 

從遠端位置訪問 Minecraft 終端,確保 rcon 埠沒有被阻塞。

如果你正常連線到 Minecraft 終端,不想輸入一大串命令,你可以建立一個 bash 關聯。

九、總結

我們已經向你展示如何在 Ubuntu 20.04 上搭建一個 Minecraft(我的世界)伺服器,並且設定每天備份。
現在你可以啟動你的 Minecraft 客戶端,連線到伺服器,並且開始 Minecraft 冒險。

ICON Data Centre Limited
Latest posts by ICON Data Centre Limited (see all)