Minecraft 模組包服務器
從 CurseForge/Modrinth 服務器包 zip 文件設置一個模組化 Minecraft 服務器。涵蓋 NeoForge/Forge 安裝、Java 版本、JVM 調優、防火牆、局域網配置、備份和啟動腳本。
技能元數據
| 來源 | 捆綁(默認安裝) |
| 路徑 | skills/gaming/minecraft-modpack-server |
參考:完整 SKILL.md
信息
以下是 Hermes 在觸發此技能時加載的完整技能定義。這是技能激活時代理所看到的指令。
Minecraft 模組包服務器設置
何時使用
- 用戶希望從服務器包 zip 文件設置模組化 Minecraft 服務器
- 用戶需要 NeoForge/Forge 服務器配置方面的幫助
- 用戶詢問 Minecraft 服務器性能調優或備份相關問題
首先收集用戶偏好
在開始設置之前,詢問用戶以下信息:
- 服務器名稱 / MOTD — 在服務器列表中應顯示什麼內容?
- 種子 (Seed) — 指定種子還是隨機生成?
- 難度 — 和平 / 簡單 / 普通 / 困難?
- 遊戲模式 — 生存 / 創造 / 冒險?
- 在線模式 — true(Mojang 認證,正版賬戶)或 false(兼容局域網/離線賬戶)?
- 玩家數量 — 預計有多少玩家?(影響內存和視距調優)
- 內存分配 — 或由代理根據模組數量和可用內存決定?
- 視距 / 模擬距離 — 或由代理根據玩家數量和硬件配置選擇?
- PvP — 開啟或關閉?
- 白名單 — 開放服務器或僅限白名單?
- 備份 — 是否需要自動備份?頻率如何?
如果用戶不在意,請使用合理的默認值,但在生成配置前務必詢問。
步驟
1. 下載並檢查模組包
mkdir -p ~/minecraft-server
cd ~/minecraft-server
wget -O serverpack.zip "<URL>"
unzip -o serverpack.zip -d server
ls server/
查找:startserver.sh、安裝程序 jar 文件(neoforge/forge)、user_jvm_args.txt、mods/ 文件夾。
檢查腳本以確定:模組加載器類型、版本以及所需的 Java 版本。
2. 安裝 Java
- Minecraft 1.21+ → Java 21:
sudo apt install openjdk-21-jre-headless - Minecraft 1.18-1.20 → Java 17:
sudo apt install openjdk-17-jre-headless - Minecraft 1.16 及以下 → Java 8:
sudo apt install openjdk-8-jre-headless - 驗證:
java -version
3. 安裝模組加載器
大多數服務器包都包含安裝腳本。使用 INSTALL_ONLY 環境變量進行安裝而不啟動:
cd ~/minecraft-server/server
ATM10_INSTALL_ONLY=true bash startserver.sh
# Or for generic Forge packs:
# java -jar forge-*-installer.jar --installServer
這將下載庫文件、修補服務器 jar 文件等。
4. 接受 EULA
echo "eula=true" > ~/minecraft-server/server/eula.txt
5. 配置 server.properties
模組化/局域網的關鍵設置:
motd=\u00a7b\u00a7lServer Name \u00a7r\u00a78| \u00a7aModpack Name
server-port=25565
online-mode=true # false for LAN without Mojang auth
enforce-secure-profile=true # match online-mode
difficulty=hard # most modpacks balance around hard
allow-flight=true # REQUIRED for modded (flying mounts/items)
spawn-protection=0 # let everyone build at spawn
max-tick-time=180000 # modded needs longer tick timeout
enable-command-block=true
性能設置(根據硬件調整):
# 2 players, beefy machine:
view-distance=16
simulation-distance=10
# 4-6 players, moderate machine:
view-distance=10
simulation-distance=6
# 8+ players or weaker hardware:
view-distance=8
simulation-distance=4
6. 調優 JVM 參數 (user_jvm_args.txt)
根據玩家數量和模組數量調整內存。模組化的經驗法則:
- 100-200 個模組:6-12GB
- 200-350+ 個模組:12-24GB
- 至少為操作系統/其他任務保留 8GB 空閒內存
-Xms12G
-Xmx24G
-XX:+UseG1GC
-XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=200
-XX:+UnlockExperimentalVMOptions
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-XX:G1NewSizePercent=30
-XX:G1MaxNewSizePercent=40
-XX:G1HeapRegionSize=8M
-XX:G1ReservePercent=20
-XX:G1HeapWastePercent=5
-XX:G1MixedGCCountTarget=4
-XX:InitiatingHeapOccupancyPercent=15
-XX:G1MixedGCLiveThresholdPercent=90
-XX:G1RSetUpdatingPauseTimePercent=5
-XX:SurvivorRatio=32
-XX:+PerfDisableSharedMem
-XX:MaxTenuringThreshold=1
7. 開放防火牆
sudo ufw allow 25565/tcp comment "Minecraft Server"
檢查命令:sudo ufw status | grep 25565
8. 創建啟動腳本
cat > ~/start-minecraft.sh << 'EOF'
#!/bin/bash
cd ~/minecraft-server/server
java @user_jvm_args.txt @libraries/net/neoforged/neoforge/<VERSION>/unix_args.txt nogui
EOF
chmod +x ~/start-minecraft.sh
注意:對於 Forge(非 NeoForge),參數文件路徑不同。請檢查 startserver.sh 以獲取確切路徑。
9. 設置自動備份
創建備份腳本:
cat > ~/minecraft-server/backup.sh << 'SCRIPT'
#!/bin/bash
SERVER_DIR="$HOME/minecraft-server/server"
BACKUP_DIR="$HOME/minecraft-server/backups"
WORLD_DIR="$SERVER_DIR/world"
MAX_BACKUPS=24
mkdir -p "$BACKUP_DIR"
[ ! -d "$WORLD_DIR" ] && echo "[BACKUP] No world folder" && exit 0
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_FILE="$BACKUP_DIR/world_${TIMESTAMP}.tar.gz"
echo "[BACKUP] Starting at $(date)"
tar -czf "$BACKUP_FILE" -C "$SERVER_DIR" world
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
echo "[BACKUP] Saved: $BACKUP_FILE ($SIZE)"
BACKUP_COUNT=$(ls -1t "$BACKUP_DIR"/world_*.tar.gz 2>/dev/null | wc -l)
if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then
REMOVE=$((BACKUP_COUNT - MAX_BACKUPS))
ls -1t "$BACKUP_DIR"/world_*.tar.gz | tail -n "$REMOVE" | xargs rm -f
echo "[BACKUP] Pruned $REMOVE old backup(s)"
fi
echo "[BACKUP] Done at $(date)"
SCRIPT
chmod +x ~/minecraft-server/backup.sh
添加每小時 cron 任務:
(crontab -l 2>/dev/null | grep -v "minecraft/backup.sh"; echo "0 * * * * $HOME/minecraft-server/backup.sh >> $HOME/minecraft-server/backups/backup.log 2>&1") | crontab -
常見陷阱
- 對於模組化服務器,務必設置
allow-flight=true— 否則帶有噴氣揹包/飛行功能的模組會導致玩家被踢出 max-tick-time=180000或更高 — 模組化服務器在世界生成期間通常會有較長的 tick 時間- 首次啟動很慢(大型模組包可能需要幾分鐘)— 不要驚慌
- 首次啟動時出現 "Can't keep up!" 警告是正常的,初始區塊生成完成後會穩定下來
- 如果 online-mode=false,也請設置 enforce-secure-profile=false,否則客戶端會被拒絕連接
- 模組包的 startserver.sh 通常包含自動重啟循環 — 創建一個不含此循環的乾淨啟動腳本
- 刪除 world/ 文件夾以使用新種子重新生成世界
- 某些模組包使用環境變量來控制行為(例如,ATM10 使用 ATM10_JAVA、ATM10_RESTART、ATM10_INSTALL_ONLY)
驗證
- 使用
pgrep -fa neoforge或pgrep -fa minecraft檢查是否正在運行 - 檢查日誌:
tail -f ~/minecraft-server/server/logs/latest.log - 在日誌中查找 "Done (Xs)!" = 服務器已就緒
- 測試連接:玩家在多人遊戲中添加服務器 IP