PopJ0ker Workshop
Published on

Minecraft Server架構與開發筆記

Minecraft 雲端伺服器系統架構書

本專案利用 Docker 容器化技術,打造一個高可管理性、具備即時監控通知,且支援內網穿透的 Minecraft 伺服器架構。


系統整體架構圖


核心容器組件說明

1. 遊戲核心:itzg/minecraft-server

  • 定位:開源且功能強大的 Minecraft 伺服器 Docker 映像檔。
  • 優勢:
    • 極佳的伺服器運行管控能力。
    • 環境變數設定友善,可一鍵切換與部署 Forge、Fabric 等模組伺服器。

2. 監控與串接:Node.js

  • 定位:系統的控制與通知中樞,負責狀態串接與即時通知。

  • 開發動機:

    說明:免去頻繁遠端進 VPS 或 PC 主機下指令的麻煩,解決無法即時觀察運行情況的痛點。透過自動化通知,避免需要時刻擔心伺服器運行狀態。

    • 實作功能:
      1. 串接 Webhook:實時發送伺服器運行狀態(如:開服成功、異常警告)。
      2. 輕量化 Web 監控介面:視覺化確認伺服器當前狀態。

3. 安全外網穿透:ngrok

  • 定位:監控介面的對外通道。
  • 優勢:
    • 搭配 Node.js 使用,直接對應指定頁面的 Port。
    • 無需設定實體 IP、免去動態 DNS(浮動 IP)與對外 Port Forwarding 的煩惱,相對安全。

4. 遊戲連線穿透:playit (Docker Image)

  • 定位:專為遊戲設計的內網穿透工具,供外部玩家連線。

開發踩坑筆記 (Troubleshooting)

  • 目前調查到的版本為舊版 Image,雖能正常開啟,但在設定 Port 時發現映射機制異常(例如:設定 22575 但實測一直被映射到 66750)。
  • 目前解法:直接查閱該容器的 log,查看系統隨機分派了哪個 Port,再手動對應調整。

為什麼選擇這個架構?

  1. 維運成本低:透過 Docker 封裝,方便管理伺服器運行,升級或調整配置也較為便利。
  2. 告別遠端焦慮:Node.js 監控與 Webhook 機制,讓伺服器狀態一手掌握,不需一直連線回主機觀察。
  3. 網路環境簡化:網路穿透(ngrok / playit)全部容器化,不用處理複雜的實體網路與動態 IP 設定。