在 Compute Engine 中設定 Minecraft 伺服器

本教學課程未經 Mojang 或 Minecraft 核准或與其相關聯。

如要執行專用的 Minecraft 伺服器,您必須擁有專用的伺服器機器、大量 RAM 以及充裕的頻寬。就讓 Google 為您處理這些需求如何?在本教學課程中,您將學會如何在 Compute Engine 上安裝、設定及執行標準 Java Minecraft 伺服器。此伺服器可與標準的 Java 型 Minecraft 桌面用戶端相容。

您的 Minecraft 伺服器軟體會在 Compute Engine 執行個體 (也就是在 Google 基礎架構中運作的虛擬機器) 中運作。本教學課程採用 Compute Engine 執行個體的預設機器類型n1-standard-1n1-standard-1 機器類型中包含 10 GB 開機磁碟、1 個虛擬 CPU (vCPU) 和 3.75 GB RAM。根據預設,這個機器類型會執行 Debian Linux

您也可以將高效能 50 GB 永久固態硬碟 (SSD) 附加至執行個體,以確保能有充裕的空間容納 Minecraft 伺服器世界的資料。如果加上這個永久 SSD,您的執行個體就能滿足專用 Minecraft 伺服器的系統需求,最多可輕鬆支援 50 位玩家。

目標

  • 建立 Compute Engine 虛擬機器執行個體
  • 安裝及設定 Minecraft 伺服器
  • 設定自動備份 Minecraft 世界的資料

費用

本教學課程使用下列 Google Cloud Platform 計費元件:

  • Compute Engine 虛擬機器
  • Compute Engine 永久磁碟
  • Cloud Storage

您可以使用 Pricing Calculator,根據您的預測使用量來產生預估費用。 初次使用 GCP 的使用者可能符合申請免費試用的資格。

事前準備

  1. 登入您的 Google 帳戶。

    如果您沒有帳戶,請申請新帳戶

  2. 選取或建立 Google Cloud Platform 專案。

    前往「Manage resources」(管理資源) 頁面

  3. 請確認您已啟用 Google Cloud Platform 專案的計費功能。

    瞭解如何啟用計費功能

建立及設定 Compute Engine 執行個體

一開始先建立及設定新的 Compute Engine 執行個體。

  1. 前往 GCP 主控台的「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

    畫面上會顯示對話方塊,提示您建立新的 Compute Engine 執行個體。

  2. 一開始請先按一下 [Create] (建立)。

  3. 在「Create an instance」(建立執行個體) 頁面上,按照下列方式設定執行個體:

    • 為執行個體命名。本教學課程全程都會使用 mc-server 當做執行個體名稱。
    • 選擇您要託管執行個體的地區與區域。本教學課程全程都會使用 us-central1 (Iowa) 地區與 us-central1-f 區域。
    • 在「Boot disk」(開機磁碟) 區段,按一下 [Change] (變更)。隨即會彈出「Boot disk」(開機磁碟) 對話方塊。
    • 將磁碟類型變更為 [SSD Persistent Disk] (SSD 永久磁碟)
  4. 按一下 [Select] (選取) 以提交變更並關閉對話方塊。

這樣就完成基本設定了!不過,請先暫緩建立新的執行個體。要符合專用 Minecraft 伺服器的需求,您還需要進行幾項進階設定。

為執行個體啟用 Google Cloud Storage 存取權

本教學課程稍後將說明如何將世界資料備份至 Cloud Storage,要達到此目的,執行個體需要具備讀取和寫入 Cloud Storage 的存取權。如何啟用存取權:

  1. 在「Identity and API access」(身分及 API 存取權) 底下,按一下 [Service account] (服務帳戶) 下拉式清單,並選取 [Compute Engine default service account] (Compute Engine 預設服務帳戶)
  2. 將「Access scopes」(存取權範圍) 設為 [Set access for each API] (針對各個 API 設定存取權)
  3. 在 [Storage] (儲存空間) 下拉式清單中,選取 [Read Write] (讀取/寫入)

標記執行個體

接下來,請標記您的執行個體。在稍後的教學課程中,您將使用此標記建立防火牆規則,允許外部 Minecraft 用戶端存取您的伺服器。

  1. 按一下 [Management, security, disks, networking, sole tenancy] (管理、安全性、磁碟、網路、單獨租用) 即可開啟一系列的進階設定分頁。
  2. 在「Networking」(網路) 分頁中,將標記 minecraft-server 新增至「Network tags」(網路標記) 欄位。

為執行個體設定靜態 IP 位址

您的執行個體必須具備靜態 IP 位址,系統才能將傳入要求可靠地轉送到該執行個體。如何將靜態 IP 位址新增至執行個體:

  1. 在「Networking」(網路) 分頁的「Network interfaces」(網路介面) 區段中,按一下 [Default] (預設)。畫面即會顯示「Network interface」(網路介面) 設定選單。
  2. 按一下 [External IP] (外部 IP) 下拉式清單,然後選取 [Create IP address] (建立 IP 位址)。畫面隨即彈出對話方塊:

    建立新的靜態 IP 位址

  3. 將 IP 位址命名為 mcs-ip

  4. 按一下 [Reserve] (預約) 即可建立位址。

  5. 按一下 [Done] (完成) 以提交變更並關閉「Network interface」(網路介面) 設定選單。

新增永久磁碟至您的執行個體

接下來,請將永久磁碟附加至執行個體。和開機磁碟不同,永久磁碟與 Compute Engine 執行個體的生命週期無關。比方說,如果您的託管需求會隨時間而變化,之後可以將磁碟移到更合適的機器類型。

您在本教學課程中使用的特定永久磁碟類型為永久 SSD。此類型的永久磁碟支援非常快速的 I/O 作業,因此可減少伺服器的延遲。

如何新增永久磁碟至您的執行個體:

  1. 在「Disk」(磁碟) 分頁的「Additional disks」(其他磁碟) 區段中,按一下 [Add new disk] (增加新磁碟)。磁碟建立對話方塊將會出現:

    建立新磁碟

  2. 在對話方塊中,按照下列方式填寫表單:

    • 「Name」(名稱)minecraft-disk
    • 「Disk type」(磁碟類型):SSD Persistent Disk (SSD 永久磁碟)
    • 「Source type」(來源類型):Blank disk (空白磁碟)
    • 「Size (GB)」(大小 (GB))50
  3. 按一下 [Done] (完成)。在您建立執行個體時,系統會自動建立及附加此磁碟。

建立執行個體

這樣就完成執行個體的設定了!按一下頁面底部的 [Create] (建立) 按鈕以建立新的執行個體。執行這項操作後即會返回「VM 執行個體」頁面。

格式化並掛接永久磁碟

此時,系統已將磁碟附加至執行個體,但是尚未進行掛接。這樣沒關係,因為如果您現在掛接磁碟,就無法進行其他設定。原因和任何磁碟一樣,您必須先使用可讓作業系統 (在此案例中為 Debian Linux) 瞭解的檔案系統來格式化永久磁碟。

一開始先建立和執行個體的 SSH 連線。在「VM 執行個體」頁面的「mc-server」資料列中,按一下 [SSH] 以開啟在瀏覽器中運作的 SSH 終端機:

SSH 終端機

SSH 終端機開啟後,在執行個體的 home 目錄中建立名為 minecraft 的新目錄。

user@mc-server: sudo mkdir -p /home/minecraft

之後您將會使用此目錄當做永久磁碟的掛接點。

接下來格式化磁碟:

user@mc-server: sudo mkfs.ext4 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/google-minecraft-disk

最後掛接磁碟:

user@mc-server: sudo mount -o discard,defaults /dev/disk/by-id/google-minecraft-disk /home/minecraft

在執行個體上安裝並執行 Minecraft 伺服器

系統已正式掛接您的永久磁碟,現在要進行您一開始打算執行的工作:安裝並執行 Minecraft 伺服器。

設定 Java Runtime Environment (JRE)

Minecraft 伺服器會在 Java Virtual Machine (JVM) 上方執行,因此您必須先執行 Java Runtime Environment (JRE)。伺服器不需要圖形使用者介面,因此本教學課程採用無圖形使用者介面版本的 JRE。這種方法可減少在機器上耗用 JRE 資源,有助於確保 Minecraft 伺服器具有充裕的空間,以視需要擴展自己的資源使用量。

您必須更新 Debian 安裝上的 Debian 存放區,之後才能下載並安裝無圖形使用者介面版本的 JRE。如要進行此操作,請在 SSH 終端機上執行下列指令:

user@mc-server: sudo apt-get update

更新存放區後,您就可以安裝無圖形使用者介面的 JRE:

user@mc-server: sudo apt-get install -y default-jre-headless

安裝 Minecraft 伺服器

現在您已經設定 JRE,可以開始下載及安裝 Minecraft 伺服器。一開始先前往 minecraft 目錄:

user@mc-server: cd /home/minecraft

minecraft 目錄含有掛接的永久磁碟,因此您必須具備稱為超級使用者存取權的特殊存取權層級,才能在該目錄中執行指令。執行下列指令以取得根使用者的身分:

user@mc-server: sudo su

接下來,將目前 Minecraft 伺服器的 Java 封存檔 (JAR) 下載到您的執行個體:造訪 Minecraft 下載頁面,從下載連結複製檔案的網址,然後將下列指令中的網址替換為該網址。

root@mc-server: wget https://launcher.mojang.com/v1/objects/f1a0073671057f01aa843443fef34330281333ce/server.jar

首次啟動伺服器:

root@mc-server: java -Xms1G -Xmx3G -d64 -jar server.jar nogui

第一次執行看似草草了事,伺服器只是啟動並報告了幾個問題,然後就停止了。但如果您執行下列指令,就會發現系統已在 minecraft 目錄中建立一些新檔案。

root@mc-server: ls -l

在這些檔案中,您可以找到名為 eula.txt 的檔案。請開啟這個檔案進行編輯。

root@mc-server: nano eula.txt

這個檔案包含一個布林變數 eula。您必須接受 Minecraft 使用者授權協議 (EULA) 的條款,方可使用 Minecraft 伺服器。如果您接受 EULA 的條款,請將 eula 的值從 false 變更為 true,然後儲存並結束。

執行 Minecraft 伺服器

如果這時再次啟動 Minecraft 伺服器,則伺服器只會存在 SSH 工作階段的生命週期內;也就是說,如果關閉 SSH 終端機,就會一併關閉伺服器。您可以透過 screen 來解決這個問題,使用該應用程式建立的虛擬終端機可「卸離」而成為背景處理程序,也可以「重新連接」而成為前景處理程序。將虛擬終端機卸離至背景時,無論您處於登入或登出狀態,該終端機都會繼續執行。

在 SSH 終端機上,執行下列指令以安裝 screen

root@mc-server: apt-get install -y screen

接著,在 screen 虛擬終端機內啟動 Minecraft 伺服器。使用 -S 標記將終端機命名為 mcs

root@mc-server: screen -S mcs java -Xms1G -Xmx3G -d64 -jar server.jar nogui

按下 Ctrl + a,並輸入 d,藉此卸離 screen 終端機。終端機會繼續在背景執行。如要重新連接該終端機,請執行 screen -r <terminal_name>,如下所示:

root@mc-server: screen -r mcs

最後,請視需要再次卸離 screen 終端機。輸入 exit 一次會離開根使用者模式,再次輸入 exit 即可關閉 SSH 連線。

恭喜!您現在擁有一個正在運作的 Minecraft 伺服器,但還不能和其他人共用。您必須先設定防火牆規則允許其他人存取該伺服器,這樣才能進行共用。

允許用戶端存取 Minecraft 伺服器

您必須建立防火牆規則,系統才能將傳入要求可靠地轉送到執行個體。方法如下:

  1. 前往 GCP 主控台的「Firewall rules」(防火牆規則) 頁面:

    前往「Firewall rules」(防火牆規則) 頁面

  2. 按一下 [Create firewall rule] (建立防火牆規則)

  3. 在「Create a firewall rule」(建立防火牆規則) 頁面上,按照下列方式填寫表單:

    • 「Name」(名稱)minecraft-rule
    • 「Target tags」(目標標記)minecraft-server
    • 「Source filter」(來源篩選器):IP 範圍
    • 「Source IP ranges」(來源 IP 範圍)0.0.0.0/0
    • 「Protocols or ports」(通訊協定或通訊埠):選取 [TCP],然後將通訊埠 25565 輸入至畫面中的欄位。
  4. 按一下 [Create] (建立) 即可建立新的防火牆規則。使用者現在就能從他們自己的本機 Minecraft 用戶端存取您的伺服器。

設定 Minecraft 伺服器

建議您編輯伺服器的預設屬性。方法如下:

  1. 重新附加伺服器的 screen 終端機。

    root@mc-server: screen -r mcs
  2. 輸入 \stop 以停止 Minecraft 伺服器。

  3. 編輯檔案 server.properties。您可以在 Minecraft Wikiserver.properties 頁面中找到各個屬性類型的資訊和可能的值。

    $ nano server.properties
  4. 重新啟動伺服器。

    root@mc-server: screen -S mcs java -Xms1G -Xmx3G -d64 -jar server.jar nogui
  5. 卸離 screen 終端機。

安排定期備份

無論您執行的是本機 Minecraft 用戶端或 Minecraft 伺服器,最好還是要定期備份 Minecraft 世界資料。本節說明如何設定使用 Cloud Storage 定期備份世界資料。

Cloud Storage 提供多個儲存空間級別,這些級別已依據不同用途完成最佳化處理。本教學課程使用的是 Standard Storage,這項產品每月最多提供 5 GB 的免費用量

建立備份指令碼

一開始先在 GCP 主控台的「VM instances」(VM 執行個體) 頁面上建立與執行個體的 SSH 連線。開啟終端機之後,您就能取得超級使用者的身分。

user@mc-server: sudo su

建立新的 Cloud Storage Standard Storage 值區,將 us-central1 替換為與您最相近的 Cloud Storage 地區,並將 [PROJECT_ID] 改為您的專案 ID。您將會使用這個值區來儲存備份資料。

root@mc-server: gsutil mb -c standard -l us-central1 gs://[PROJECT_ID]-minecraft-backup

接下來,請在 minecraft 資料夾中建立新的殼層指令碼檔案 backup.sh,並開啟檔案以進行編輯。

root@mc-server: nano /home/minecraft/backup.sh

將下列指令碼貼到檔案中。將 [BUCKET_NAME] 替換為 Cloud Storage 值區名稱:

#!/bin/bash
screen -r mcs -X stuff '/save-all\n/save-off\n'
/usr/bin/gsutil cp -R ${BASH_SOURCE%/*}/world gs://[BUCKET_NAME]/$(date "+%Y%m%d-%H%M%S")-world
screen -r mcs -X stuff '/save-on\n'

此指令碼一開始會先儲存世界資料目前的狀態,並暫停伺服器的自動儲存功能。接著,指令碼會備份伺服器的世界資料目錄 (world),將其中的內容放置到 Cloud Storage 值區內加上時間戳記的目錄 ([TIMESTAMP]-world)。指令碼完成資料備份後,就會恢復 Minecraft 伺服器上的自動儲存功能。

儲存並結束,然後執行下列指令,讓指令碼變成可執行:

root@mc-server: chmod 755 /home/minecraft/backup.sh

測試指令碼:

root@mc-server: /home/minecraft/backup.sh

指令碼結束後,透過 GCP 主控台造訪 Storage 瀏覽器,然後點選您的值區。您應該會看到加上時間戳記的 world 目錄備份。

安排 cron 工作

除非您想要以手動方式初始化每個備份作業,否則應該希望系統能依預測的時間自動執行指令碼。如要完成此任務,您必須排定新的 cron 工作

如要安排 cron 工作,請先開啟 cron 資料表以進行編輯。

root@mc-server: crontab -e

捲動至檔案底部並貼上下列字行,其中的內容會指定每隔 4 小時執行 backup.sh

0 */4 * * * /home/minecraft/backup.sh

儲存並結束。

這樣就可以了!您的 Compute Engine 執行個體現在會每 4 小時將世界資料自動備份至 Cloud Storage 值區一次。

自動移除舊備份

如果您每隔 4 小時就備份世界資料,這表示一天備份 6 次,一週備份 72 次,一個月大約備份 300 次。您可以使用 Cloud Storage 中名為物件生命週期管理的功能自動移除舊備份。此功能可讓您設定 Cloud Storage 值區,當過了一段時間之後或是有更新的備份可用時,自動封存或刪除舊備份。

如何設定 Cloud Storage 值區以自動移除備份:

  1. 在 GCP 主控台中開啟 Cloud Storage 瀏覽器:

    前往 Cloud Storage 瀏覽器

  2. 在值區清單中,找到您的 Minecraft 備份值區。

  3. 在值區的「Lifecycle」(生命週期) 欄中按一下 [None] (無)。隨即會出現「View object lifecycle rules」(查看物件生命週期規則) 頁面。

  4. 按一下 [Add rule] (新增規則)

  5. 在「Select object conditions」(選取物件條件) 區段中,選取 [Age] (時間長度)。將時間上限設為 7 天,然後按一下 [Continue] (繼續)

  6. 在「Select action」(選取動作) 區段中,選取 [Delete] (刪除),然後按一下 [Continue] (繼續)

  7. 按一下 [Save] (儲存) 來儲存設定,系統就會帶您回到「View object lifecycle rules」(查看物件生命週期規則) 頁面。

現在當您的備份指令碼將備份資料傳送至 Cloud Storage 一週後,系統就會刪除該筆備份。

關閉 Minecraft 伺服器

如果不需要執行 Minecraft 伺服器,則應關閉以避免產生不必要的費用。

一開始先在 GCP 主控台的「VM instances」(VM 執行個體) 頁面上建立與執行個體的 SSH 連線。終端機開啟後,將 \stop 指令傳送至正在執行伺服器的 screen 終端機,即可停止 Minecraft 伺服器。

user@mc-server: sudo screen -r -X stuff '/stop\n'

現在您已經停止 Minecraft 伺服器,因此可以放心地關閉執行個體。在「VM Instances」(VM 執行個體) 頁面上,點選執行個體的名稱,然後按一下頁面頂端的 [Stop] (停止) 按鈕,您就會登出 SSH 工作階段。

如要再次啟動執行個體,請前往執行個體頁面,然後按一下頁面頂端的 [Start] (開始) 按鈕。如要再次啟動 Minecraft 伺服器,您可以按照執行 Minecraft 伺服器一節所述方式建立與執行個體的 SSH 連線、重新掛接永久磁碟,並在新的 screen 終端機中啟動 Minecraft 伺服器。

自動化啟動和關閉程序

如果您規劃定期關閉伺服器,請考慮在執行個體新增啟動和關閉指令碼,以自動執行一般啟動和關閉程序。您可如下所示自動化啟動程序:

  1. 前往 GCP 主控台的「VM instances」(VM 執行個體) 頁面:

    前往「VM instances」(VM 執行個體) 頁面

  2. 點選執行個體名稱。

  3. 按一下 [Edit] (編輯)

  4. 在「Custom metadata」(自訂中繼資料) 專區中新增名為「startup-script」的鍵,並將下列指令碼複製到該鍵的「Value」(值) 欄位:

    #!/bin/bash
    mount /dev/disk/by-id/google-minecraft-disk /home/minecraft
    (crontab -l | grep -v -F "/home/minecraft/backup.sh" ; echo "0 */4 * * * /home/minecraft/backup.sh")| crontab -
    cd /home/minecraft
    screen -d -m -S mcs java -Xms1G -Xmx3G -d64 -jar server.jar nogui
    

當您重新啟動執行個體時,此指令碼就會自動將 Minecraft 磁碟掛接到適當的目錄,重新安裝 cron 工作,在 screen 工作階段啟動 Minecraft 伺服器,然後卸離工作階段。

如要自動執行關閉程序,請新增另一個名為「shutdown-script」的鍵,並將下列指令碼複製到該鍵的「Value」(值) 欄位:

#!/bin/bash
/home/minecraft/backup.sh
sudo screen -r mcs -X stuff '/stop\n'

在頁面底部按一下 [Save] (儲存) 以提交變更。當您停止執行個體時,此指令碼將會在執行個體關閉前,先建立最新遊戲資料的備份並關閉 Minecraft 伺服器。

後續步驟

造訪 Minecraft Wiki

Minecraft Wiki 為 Minecraft 玩家和 Minecraft 伺服器管理員等人提供大量的實用資訊。

試試其他 Minecraft 伺服器

您在本教學課程中安裝未經修改的 Minecraft 伺服器只是眾多可用 Minecraft 伺服器中的其中一款。請造訪 Minecraft Wiki 中的定製伺服器頁面,查看已針對遊戲類型、機器需求、修改難易度等因素進行最佳化處理的其他伺服器清單。

試試其他教學課程

歡迎親自試用其他的 Google Cloud Platform 功能,請參考我們的教學課程

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
解決方案