這是我們面向遊戲伺服器的 VPS 頁面的動手搭檔。那一頁講的是哪個方案合適;這一頁講的是真正把伺服器立起來——Paper、一個正經的 systemd 服務、省 RAM 的設定、防火牆和備份。讀到最後,您會有一台熬過崩潰、熬過重新啟動、也不會悄悄吃掉您整台機器的 Minecraft 伺服器。
開始前一個誠實的說明:那個用例頁裡的 CPU 和 RAM 界限仍然適用。Paper 在一個 Small 或 Medium 方案上給一群朋友玩很棒。一個給大社群的 150 mod 整合包不是這些方案的用途,再多的設定也修不了那個。說清楚這點,我們開搭。
1. 裝 Java
Paper 跑在 Java 上。裝一個 headless JDK——對目前的 Minecraft 版本那是 Java 21:
sudo apt update
sudo apt install -y openjdk-21-jre-headless
java -version
如果您的 Minecraft 版本更老,裝它要求的 Java(1.18-1.20 時代是 17)。如果版本不對,伺服器記錄會大聲抱怨。
2. 設好伺服器目錄和 Paper
以它自己的使用者跑伺服器,而不是 root——萬一出岔子,您想讓爆炸半徑小。
sudo adduser --system --group --home /opt/minecraft minecraft
sudo -u minecraft mkdir -p /opt/minecraft/server
cd /opt/minecraft/server
下載您 Minecraft 版本的 Paper jar(從他們的下載頁拿 URL)、儲存為 server.jar:
sudo -u minecraft wget -O server.jar "PASTE_PAPER_DOWNLOAD_URL_HERE"
跑一次以產生設定檔案,然後接受 EULA:
sudo -u minecraft java -Xms1G -Xmx3G -jar server.jar --nogui
# 它會立刻停下、要你接受 EULA
sudo -u minecraft sed -i 's/eula=false/eula=true/' eula.txt
-Xmx3G 是 JVM 堆的上限。在一個 4 GB 的 Small 方案上,給 JVM 約 3 GB 讓作業系統有喘息空間。別把它設成您的全部 RAM——JVM 在堆之外還有開銷,而 OOM 殺手不談判。
3. 調 server.properties 省 RAM
這是您免費給自己買來效能的地方。開啟 server.properties、設:
view-distance=8
simulation-distance=6
max-players=10
view-distance—— 每個玩家周圍保持載入的區塊數。預設的 10 很慷慨;8(甚至 6)明顯省 RAM 和 CPU,幾乎沒人注意到差別。simulation-distance—— 實體、紅石和作物生長實際 tick 的距離。更低更便宜。6 是一個合理的起點。max-players—— 設成您實際預期的數,這樣一群意外來客不會炸掉您的 RAM 預算。
記住單執行緒的現實:Minecraft 的 tick 依賴一個核。如果 TPS 掉了,更多 RAM 幫不上——降低 simulation-distance 和怪物上限會。
4. 作為 systemd 服務來跑
這是把「一個我跑過一次的 jar」變成「一台伺服器」的部分。建立 /etc/systemd/system/minecraft.service:
[Unit]
Description=Minecraft Paper Server
After=network.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx3G -jar server.jar --nogui
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 143
[Install]
WantedBy=multi-user.target
Restart=on-failure 是要緊的那行——如果 JVM 崩潰,systemd 在十秒內把它拉回來。SuccessExitStatus=... 143 讓 systemd 不把一次正常的 SIGTERM 關機當成失敗。啟用並啟動它:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft
sudo journalctl -u minecraft -f # 即時日誌
現在它開機就起、崩潰就重新啟動,記錄進 journald。
5. 開防火牆埠
Minecraft 預設監聽 TCP 25565。只開那個:
sudo ufw allow 25565/tcp
sudo ufw enable
把伺服器的 IP 給您的朋友(如果您改了埠就加 :25565)。別開任何您不需要的——跑自己機器的全部意義就是您決定什麼可達。
6. 備份世界
那件人們一直跳過、直到希望自己沒跳過的那天。一個簡單的指令碼:
#!/bin/bash
cd /opt/minecraft/server
TS=$(date +%Y%m%d-%H%M)
tar czf /opt/minecraft/backups/world-$TS.tar.gz world world_nether world_the_end
從 cron 跑它,而且——這是重要的一半——把封存拷到伺服器之外,到物件儲存或另一台機器。一個跟世界在同一塊磁碟上的備份隨磁碟一起死。如果您的世界要緊,在打 tar 之前先在伺服器控制台裡跑 save-off 和 save-all,這樣您永遠不會在寫入中途做備份。
就這樣
Java、Paper、調好的設定、一個自動重新啟動的 systemd 服務、一個防火牆埠,以及住在別處的備份。那就是一台像樣運轉的 Minecraft 伺服器。
如果您還沒有機器:挑一個方案——一小群人用 Small($8)、往十個玩家推就用 Medium($12)——用 USDC 或 USDT 付款(免 KYC、不用檔案),您大約 60 秒就有 root。然後照著這一頁往下做。最後再誠實提醒一次:這是給原版或跟朋友玩 Paper 的對的設定。一個給大社群的重整合包需要不同的硬體,我們寧願您先從我們這兒聽到這句。
評論
目前還沒有評論。歡迎成為第一位。