~/projects / mc-server
completed 2026—

MCSF - Minecraft 本地伺服器管理框架

— 模組化的 Minecraft 本地伺服器管理框架,支援多實例啟動停止、多版本 Java 切換、自動備份、Cloudflare DDNS 動態 IP 更新、PlayIt.gg 隧道穿透(CGNAT bypass)與 RCON 遠端控制台,並可打包為免安裝的 Windows 獨立執行檔。

模組化的 Minecraft 本地伺服器管理框架,支援多實例啟動停止、多版本 Java 切換、自動備份、Cloudflare DDNS 動態 IP 更新、PlayIt.gg 隧道穿透(CGNAT bypass)與 RCON 遠端控制台,並可打包為免安裝的 Windows 獨立執行檔。

STATUS
completed

專案總覽

專案簡介

MC-Server-Framework 是一個模組化 Python CLI 框架,用於管理本地 Minecraft Java 版伺服器。涵蓋完整的伺服器生命週期管理——從啟動停止到備份、動態 DNS 更新、NAT 穿透與遠端控制台存取——並可打包為 Windows 獨立執行檔。

核心理念

  • 零依賴部署:透過 PyInstaller 打包為單一 EXE,終端使用者無需安裝 Python

  • 多實例管理:從單一 CLI 管理多個 Minecraft 伺服器實例,各自擁有獨立設定

  • 網路可及性:內建 DDNS 與隧道整合,解決家用伺服器的連線難題(CGNAT、動態 IP)


我的職責

作為本專案唯一開發者,我負責:

系統架構設計

  • 設計基於 Typer 框架的模組化 CLI 架構

  • 規劃基於 YAML 的逐伺服器設定系統

  • 設計搭配策略式保留的備份系統

核心功能實作

  • 伺服器生命週期:多實例的啟動、停止、重啟、狀態監控

  • Java 管理:逐伺服器 Java 版本切換搭配自動註冊

  • 備份系統:策略式備份搭配可設定保留(份數或天數)、包含/排除篩選

  • DNS 整合:Cloudflare(A + SRV 紀錄)與 DuckDNS 動態 DNS 更新

  • NAT 穿透:PlayIt.gg 隧道整合用於繞過 CGNAT

  • 遠端控制台:RCON 客戶端用於遠端伺服器管理

  • 系統診斷:互動式選單搭配健康檢查與首次執行初始化


核心功能

1. 多實例伺服器管理

  • 每個伺服器實例擁有自己的目錄與 server.yml 設定

  • 框架自動掃描與發現伺服器實例

  • 支援 Forge 1.17+ 特殊啟動模式

2. Java 版本管理

  • java_registry.yml 追蹤可用 Java 安裝

  • 逐伺服器 Java 版本指派

  • 自動路徑解析與驗證

3. 策略式備份系統

  • 可設定保留:保留最近 N 份備份或 N 天內的備份

  • 包含/排除檔案模式篩選

  • 壓縮封存輸出

4. 動態 DNS 整合

  • Cloudflare:A 紀錄 + SRV 紀錄更新(讓玩家不需輸入埠號即可連線)

  • DuckDNS:簡單 A 紀錄更新

  • 伺服器啟動時自動偵測 IP 並更新

5. PlayIt.gg 隧道(CGNAT 繞過)

  • 整合隧道管理,讓處於電信級 NAT 後的玩家也能連線

  • 隧道隨伺服器生命週期自動建立與關閉

6. RCON 遠端控制台

  • 內建 RCON 客戶端用於遠端伺服器管理

  • 支援互動模式與命令列模式


使用技術

核心

  • Python 3.8+:主要開發語言

  • Typer:CLI 框架搭配自動產生說明

  • Rich:終端 UI 搭配格式化輸出、進度條、表格

基礎設施

  • PyYAML:設定管理

  • Requests:HTTP 客戶端用於 Cloudflare 與 DuckDNS API

  • psutil:程序監控與管理

建構與發行

  • PyInstaller:獨立 EXE 打包(約 30-50 MB)

  • PowerShell:建構腳本(build.ps1


專案狀態

目前版本:v0.2.0(Phase 2)

  • ✅ Phase 1:核心伺服器管理、Java 管理、備份系統、CLI

  • ✅ Phase 2:RCON、PlayIt.gg 隧道、互動式選單、系統診斷、首次執行初始化

  • 🔄 Phase 3(規劃中):自動辨識伺服器類型、排程備份、當機自動重啟、日誌串流


開發挑戰與成就

1. CGNAT 繞過方案

挑戰:許多家用網路使用 CGNAT,無法直接進行連接埠轉發。

解法:整合 PlayIt.gg 隧道服務,隧道隨伺服器啟停自動管理。

2. 零依賴發行

挑戰:終端使用者不應該需要安裝 Python 或管理依賴。

解法:PyInstaller 打包產生包含所有依賴的單一 EXE,以 ZIP 壓縮包發行。

3. SRV 紀錄自動化

挑戰:玩家不喜歡為非標準 Minecraft 埠輸入埠號。

解法:自動化 Cloudflare SRV 紀錄建立搭配 A 紀錄,讓玩家只需輸入網域名稱即可連線。


未來規劃

Phase 3(v0.3.0)

  • 自動偵測伺服器類型(Paper、Fabric、NeoForge 等)

  • 排程備份(類 cron)

  • 當機自動重啟搭配可設定重試策略

  • 日誌彙總與即時串流


專案亮點

技術創新

  • ✅ 整合 DDNS + SRV 紀錄自動化實現無縫多人連線

  • ✅ PlayIt.gg 隧道整合解決 CGNAT 可及性

  • ✅ 策略式備份系統搭配彈性保留規則

使用者體驗

  • ✅ 單一 EXE 發行——零安裝需求

  • ✅ 搭配 Rich 的互動式 CLI 終端 UI

  • ✅ 首次執行初始化精靈快速上手


技術棧:Python 3.8+、Typer、Rich、PyInstaller、Cloudflare API、PlayIt.gg 發行方式:Windows 獨立 EXE(約 30-50 MB) 目前階段:Phase 2 完成,Phase 3 規劃中

相關作品