2026 年遊戲伺服器架設:Minecraft 與 Valheim 自架指南

modern%20workspace%20with%20laptop%2C%20smartphone...
發表時間:2026 年 09 月 13 日 | 更新日期:2026 年 09 月 13 日 | 編輯:雅寶社區編輯團隊
2026 年遊戲伺服器架設:Minecraft 與 Valheim 自架指南 - 雅寶社區 · 頂客論壇

初期投入

0 至 25,000 元(可用既有舊機)

0 元

0 元

月費估算

電費約 150 至 400 元

約 600 至 1,500 元

約 400 至 1,200 元

規格自由度

最高,硬體隨你換

中,受限於方案

低,多為共用 CPU

模組自由度

完全自由

完全自由

常受面板限制

維護負擔

高(你要自己顧)

中(系統仍要自己顧)

低(廠商處理)

停電與斷網風險

有,需 UPS 與備援

資料主權

完全在自己手上

在雲端業者手上

在服務商手上

看到這裡你可能會想:「家用自架月費便宜這麼多,那還需要考慮嗎?」關鍵在於「隱形成本」。你的時間是成本,停電中斷是成本,ISP 業者半夜施工斷網是成本,家用 IP 被 DDoS 攻擊也是成本。如果你的團隊成員分布在不同時區、或者你希望伺服器 24 小時全年無休且 SLA 有保障,雲端 VPS 仍然是更穩妥的選擇。反之,如果你的朋友群都是同一個時區、遊玩時段集中在晚上,家用自架的性價比幾乎無人能敵。

2026 年的硬體與網路環境有什麼不同

幾個值得注意的趨勢變化:

  • 單核效能仍是關鍵。不論 Minecraft 還是 Valheim,兩者的主遊戲邏輯都跑在單一主執行緒上。這意味著「16 核心」對遊戲效能的幫助遠不如「高時脈的 4 到 6 核心」。選 CPU 時請優先看單核跑分,而不是核心數。
  • NVMe SSD 已是標配。Minecraft 的世界檔案在區塊載入時會產生大量隨機 I/O,Valheim 的 .db 檔案在世界變大後也會膨脹到數百 MB。傳統硬碟會讓玩家明顯感受到「卡頓尖峰」。
  • IPv6 普及改變了連線方式。多數家用寬頻已經配發 IPv6 位址,這對遊戲伺服器是個好消息——你不再需要為每個服務做 NAT 轉發,只要在防火牆放行即可。
  • CGNAT 成為最大的隱形殺手。不少電信業者為了節省 IPv4 位址,會把用戶放在 CGNAT 後面。這會導致你「根本無法做連接埠轉發」,是自架新手最容易撞牆的地方。
  • 模組生態進入新舊交替期。Minecraft 的 Forge 與 NeoForge 分家後,2026 年的模組圈已經明顯往 Fabric 與 NeoForge 兩大陣營靠攏;Valheim 則仍以 BepInEx 為主要模組框架。
  • 二、動手前的規劃:需求、規格與架構

    很多人失敗的原因不是技術不夠,而是「還沒想清楚就開始裝」。這一節請當成施工前的設計圖,把需求寫下來,後面選硬體、選核心、選方案都會輕鬆很多。

    先算出你真正需要多少資源

    記憶體是最常被高估也最常被低估的資源。原版 Minecraft 伺服器的記憶體需求其實不高,但如果裝了 200 個模組、開啟大範圍視野距離,需求會直線上升。以下為實務經驗值,供你抓個大概:

    使用情境

    建議記憶體

    建議 CPU

    儲存空間

    原版 Vanilla,2 至 5 人

    2 至 4 GB

    2 核

    10 GB SSD

    Paper 加少量外掛,5 至 15 人

    4 至 8 GB

    4 核

    40 GB SSD

    輕度模組包(約 50 模組),5 至 10 人

    8 至 12 GB

    4 至 6 核

    80 GB NVMe

    大型模組包(150 模組以上),10 至 20 人

    12 至 16 GB

    6 核高時脈

    160 GB NVMe

    Valheim 專用伺服器,2 至 6 人

    4 至 6 GB

    2 至 4 核

    20 GB SSD

    Valheim 大型建築群,6 至 10 人

    8 GB

    4 核高時脈

    40 GB SSD

    請注意,記憶體「不是愈大愈好」。JVM 的堆積記憶體配置過大,反而會讓垃圾回收的停頓時間變長,造成週期性的卡頓。後面談 JVM 參數時會再詳細說明。

    網路環境自我檢測:三個必做檢查

    在花錢之前,請先花十分鐘做以下三項檢查,這能幫你省下大量挫折。

  • 上傳頻寬。用 Speedtest 之類的工具測上傳速度。粗略估算:Minecraft 每位玩家平均消耗 20 至 100 KB/s,Valheim 因為要同步物理與物件狀態,約 100 至 300 KB/s。10 位 Valheim 玩家尖峰時可能吃掉 2 至 3 Mbps 上傳,這對多數光纖方案都不成問題,但如果你還在用 ADSL 或有線電視網路,就要留意。
  • 是否位於 CGNAT。登入你的路由器管理介面,查看 WAN 端的 IP 位址。如果它落在 100.64.0.0/10 這個網段,或者與你從 whatismyip 網站查到的公網 IP 不同,那你大概率在 CGNAT 後面,傳統的連接埠轉發會失效。解法有三:打電話請業者配發真實 IP、改用 IPv6 直連、或改用內網穿透工具。
  • IPv6 是否可用。在 test-ipv6.com 檢查。若你的裝置拿到可用的 IPv6 位址,恭喜你,可以直接讓玩家用 IPv6 連線,繞過整個 NAT 問題。缺點是 IPv6 位址較長,建議搭配 DDNS 或網域使用。
  • 三種常見部署架構,你適合哪一種?

    架構 A:家用裸機。直接把伺服器裝在 Windows 或 Linux 主機上。優點是設定最快、除錯最直覺;缺點是這台機器不能做別的事,而且一旦系統要更新或重開機,伺服器就中斷。適合「有一台閒置電腦」的玩家。

    架構 B:家用虛擬化平台。用 Proxmox VE 或 Unraid 當底層,把遊戲伺服器裝在 LXC 容器或虛擬機裡。優點是備份與快照極其方便,還能同時跑 NAS、影音服務;缺點是需要一點學習曲線,而且底層系統本身要維護。

    架構 C:雲端 VPS。在 Vultr、Hetzner、Linode 或 Oracle Cloud 開一台虛擬主機。優點是網路穩定、有固定 IP、不怕停電;缺點是成本較高,而且部分入門方案是共用 vCPU,在玩家上線尖峰時會出現「搶不到 CPU」的現象。挑選時務必注意:避開「Burstable」或「Shared vCPU」的入門方案,遊戲伺服器需要穩定可用的運算資源。

    三、Minecraft 伺服器架設完整實戰

    Minecraft 的伺服器架設彈性極大,正因為選項多,新手最容易在「該用哪個核心」這一步就卡住。我們先從核心選擇談起。

    核心選擇:原版、Paper、Purpur、Fabric、NeoForge

    Minecraft Java 版的伺服器核心大致可以分成三類:

  • 原版(Vanilla):Mojang 官方發布的 server.jar。特性是完全忠於原版遊戲機制,紅石、生怪、農場行為與單人遊戲一致。缺點是效能最差,且幾乎沒有管理功能(沒有白名單以外的權限管理、沒有好用的備份指令)。適合小型、純原版體驗的私服。
  • Paper 與其衍生(Purpur、Pufferfish):基於 Spigot 的高度最佳化核心,是目前最主流的選擇。Paper 內建大量效能修正、可調整的遊戲機制參數、完整的 API 供外掛使用。Purpur 在此之上又加了更多「可自訂的遊戲規則」。這類核心的缺點是部分原版機制會被「修正」而改變(例如生怪機制、紅石時序),對極度硬核的技術玩家可能不友善。
  • Fabric 與 NeoForge:這是模組(Mod)生態的兩大陣營。Fabric 輕量、更新快、載入速度快,是目前中小型模組包的首選;NeoForge 由 Forge 分裂而來,生態圈較大、相容舊模組較多。請注意:外掛(Plugin)與模組(Mod)是兩套完全不同的系統,前者跑在 Bukkit 系核心上,後者需要對應的 Mod Loader,兩者不能混用(除非使用混合核心,但那類核心通常穩定性堪憂)。
  • 決策建議:如果你只是要跟朋友玩原版生存,選 Paper;如果想玩模組包,先確認你朋友想玩的那個整合包支援哪個 Loader,再決定。不要為了「想要兩者兼得」而去用混合核心,那通常會讓你花更多時間在除錯上。

    Java 環境與 JVM 參數調校

    Minecraft 從 1.20.5 開始要求 Java 21。2026 年的主流選擇是 Java 21 LTS(最穩定)或 Java 25 LTS(效能略佳,但部分舊模組可能有相容性問題)。強烈建議使用 Eclipse Temurin 或 Amazon Corretto 的發行版,不要用 Oracle JDK 的商業版。

    JVM 啟動參數對 Minecraft 效能的影響非常巨大。目前社群公認的最佳實踐仍是 Aikar's Flags 的現代版本,以下是針對 G1GC 的建議參數(假設配置 8 GB 堆積記憶體):

    java -Xms8G -Xmx8G \

    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 \

    Dusing.aikars.flags=https://mcflags.emc.gs \

    Daikars.new.flags=true \

    jar server.jar nogui

    幾個重點說明:-Xms 與 -Xmx 設成相同數值(避免執行期動態擴張堆積造成額外停頓)、-XX:+AlwaysPreTouch 會在啟動時就把記憶體實際配置好(啟動變慢但執行期更穩)、MaxTenuringThreshold=1 讓短命物件更快被回收。如果你使用的是 Java 21 以上的版本,-XX:+UnlockExperimentalVMOptions 有些參數已經不需要這個旗標,若啟動時出現警告可以忽略或移除對應參數。

    另外提醒:不要把所有實體記憶體都給 JVM。作業系統、檔案快取、外掛本身都需要記憶體。一般建議 JVM 堆積上限不超過機器總記憶體的 70%。

    Linux 環境下的安裝步驟與 systemd 服務

    以 Ubuntu Server 24.04 LTS 為例,以下是完整的安裝流程。

    第一步,建立專用使用者。永遠不要用 root 跑遊戲伺服器。

    sudo adduser --system --home /srv/minecraft --shell /bin/bash mcserver

    sudo mkdir -p /srv/minecraft

    sudo chown -R mcserver:mcserver /srv/minecraft

    第二步,安裝 Java。

    sudo apt update

    sudo apt install -y temurin-21-jdk

    java -version

    第三步,下載 Paper 核心。建議直接到 PaperMC 官網查詢最新版本編號,或使用其 API。以下示範手動下載,將 1.21.x 與 build 替換成當前版本。

    sudo -u mcserver -i

    cd /srv/minecraft

    curl -o server.jar "https://api.papermc.io/v2/projects/paper/versions/1.21.x/builds/XXX/downloads/paper-1.21.x-XXX.jar"

    echo "eula=true" > eula.txt

    第四步,首次啟動產生設定檔。第一次啟動會產生 server.properties、world 資料夾等。建議先啟動一次,看到「Done」訊息後輸入 stop 關閉。

    sudo -u mcserver java -Xms2G -Xmx2G -jar server.jar nogui

    第五步,建立 systemd 服務。這樣就能用 systemctl 管理,並設定開機自動啟動。

    [Unit]

    Description=Minecraft Paper Server

    After=network.target

    [Service]

    Type=simple

    User=mcserver

    WorkingDirectory=/srv/minecraft

    ExecStart=/usr/bin/java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -jar /srv/minecraft/server.jar nogui

    Restart=on-failure

    RestartSec=15

    StandardInput=tty-force

    [Install]

    WantedBy=multi-user.target

    將上述內容存成 /etc/systemd/system/minecraft.service,接著執行:

    sudo systemctl daemon-reload

    sudo systemctl enable minecraft

    sudo systemctl start minecraft

    sudo systemctl status minecraft

    若你需要透過終端機輸入指令(例如 op、whitelist add),可以搭配 screen 或 tmux 來包裝,或者安裝 RCON 客戶端工具。另一個更優雅的選擇是使用 Crafty Controller 或 Pterodactyl Panel,這些網頁管理面板可以讓你直接從瀏覽器看即時日誌、下指令、排程備份。

    Windows 環境下的安裝與自動啟動

    如果你的伺服器是 Windows 主機,流程相對簡單:安裝對應版本的 JDK、把 server.jar 放進資料夾、寫一個 start.bat:

    @echo off

    java -Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -jar server.jar nogui

    pause

    要設定開機自動啟動,可以使用 NSSM(Non-Sucking Service Manager)把這個批次檔包成 Windows 服務,好處是當機時會自動重啟,且不需要使用者登入。另一個做法是用「工作排程器」設定「登入時執行」,但這樣就需要保持使用者登入狀態。

    Windows 上還有一個常見陷阱:Windows Defender 防火牆預設會封鎖外部連線。記得在「進階安全性防火牆」中新增輸入規則,放行 TCP 25565(或你自訂的埠)。

    外掛、模組與資源包管理

    Paper 系的外掛只需丟進 plugins/ 資料夾即可,重啟後生效。幾個實用且維護活躍的外掛:LuckPerms(權限管理)、CoreProtect(方塊記錄與回溯,強烈建議裝)、EssentialsX(基礎指令)、spark(效能分析)。

    Fabric 模組則分為「伺服器端」與「客戶端」兩種。放在 mods/ 資料夾的模組,如果只在客戶端生效(例如光影、介面優化),放進伺服器反而可能造成崩潰。反之,某些模組(例如 Lithium、FerriteCore、Krypton)是純伺服器端的效能優化模組,裝了對客戶端毫無影響但能大幅降低 CPU 與記憶體負擔,非常值得安裝。

    資源包(Resource Pack)方面,如果你要強制玩家使用特定材質包,可以在 server.properties 中設定 resource-pack 指向一個可直接下載的 URL,並用 resource-pack-sha1 驗證完整性。

    跨平台需求:GeyserMC 讓基岩版玩家也能進來

    如果你有朋友只玩手機版、Switch 或 Windows 基岩版,可以安裝 GeyserMC 外掛。它是一個翻譯層,讓基岩版客戶端能連上 Java 版伺服器。安裝方式是在 plugins/ 放入 Geyser-Spigot.jar 與 Floodgate.jar,重啟後基岩版玩家就能用 UDP 19132 連入。

    要注意幾點:Geyser 並非完美,紅石機制、部分物品欄操作、地圖與告示牌的顯示都會有落差;某些反作弊外掛也會誤判基岩版玩家。建議把 Geyser 當成「讓朋友方便進來玩」的輔助,而不是主要遊玩方式。

    四、Valheim 專用伺服器架設完整實戰

    Valheim 的伺服器架構與 Minecraft 完全不同。它由 Iron Gate 官方提供一個專用伺服器執行檔(透過 SteamCMD 下載),沒有像 Paper 那樣的最佳化分支,也很少有官方的效能調校選項。這使得「硬體選擇」與「世界維護」變得格外重要。

    SteamCMD 安裝與檔案結構

    SteamCMD 是 Valve 提供的命令列工具,用來下載專用伺服器檔案。以 Ubuntu 為例:

    sudo adduser --system --home /srv/valheim --shell /bin/bash valheim

    sudo apt install -y lib32gcc-s1 curl

    sudo -u valheim -i

    mkdir -p ~/steamcmd && cd ~/steamcmd

    curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

    ./steamcmd.sh +login anonymous +force_install_dir /srv/valheim/server +app_update 896660 validate +quit

    這裡的 896660 是 Valheim 專用伺服器的 App ID。下載完成後,/srv/valheim/server 目錄下會有 valheim_server.x86_64(Linux 版執行檔)與相關的 Unity 函式庫。

    啟動參數與伺服器設定

    Valheim 伺服器的啟動參數都是命令列旗標,沒有圖形介面。以下是一個典型的啟動指令:

    export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH

    export SteamAppId=892970

    ./valheim_server.x86_64 \

    name "My Valheim Server" \

    port 2456 \

    world "Dedicated" \

    password "YourStrongPassword" \

    public 1 \

    savedir "/srv/valheim/data"

    參數說明:-name 是伺服器名稱(會顯示在 Steam 伺服器列表中)、-port 是遊戲埠(UDP 2456,查詢埠會自動使用 2457)、-world 是世界名稱(會對應到 worlds_local 下的檔案)、-password 至少 5 個字元且不能出現在伺服器名稱中、-public 1 表示公開到社群列表(設 0 則只有知道 IP 的人能連)。

    若你的朋友中有使用 Xbox 或 Microsoft Store 版本的玩家,可以加上 -crossplay 參數啟用跨平台連線,但這會讓伺服器改走 PlayFab 中繼,且無法使用部分模組。此外,-savedir 建議指向一個獨立目錄,方便備份。

    與 Minecraft 一樣,建議用 systemd 管理。需要注意的是,Valheim 伺服器在收到終止訊號時需要一點時間寫入世界檔,因此 systemd 的 ExecStop 建議用 kill -INT 而非強制殺掉:

    [Unit]

    Description=Valheim Dedicated Server

    After=network.target

    [Service]

    Type=simple

    User=valheim

    WorkingDirectory=/srv/valheim/server

    Environment="LD_LIBRARY_PATH=/srv/valheim/server/linux64"

    Environment="SteamAppId=892970"

    ExecStart=/srv/valheim/server/valheim_server.x86_64 -name "My Server" -port 2456 -world "Dedicated" -password "YourStrongPassword" -public 1 -savedir /srv/valheim/data

    ExecStop=/bin/kill -INT $MAINPID

    Restart=on-failure

    RestartSec=20

    TimeoutStopSec=60

    [Install]

    WantedBy=multi-user.target

    模組同步的地獄與解法

    Valheim 的模組框架主要是 BepInEx。安裝方式是把 BepInEx 解壓到伺服器根目錄,模組 DLL 放進 BepInEx/plugins/。問題在於:大部分模組要求客戶端與伺服器版本完全一致,只要有玩家版本不同,就會出現「連線逾時」或「版本不符」的錯誤,而且錯誤訊息通常非常模糊,難以診斷。

    實務上的解法有三個方向:

  • 建立模組包標準。把所有需要的模組打包成一個壓縮檔,附上清楚的說明與版本號,要求每位玩家解壓到遊戲目錄。這聽起來很土,但對於 10 人以下的小圈圈是最可靠的做法。
  • 使用模組管理器。例如 Thunderstore Mod Manager 或 r2modman,可以匯出與匯入設定檔(profile),讓玩家一鍵同步。伺服器端則手動安裝同樣的模組清單。
  • 盡量減少客戶端模組。純伺服器端的模組(例如效能優化、增加怪物種類但不改行為的模組)不會造成同步問題。把「非必要」的客戶端模組砍掉,能大幅降低版本對不上的機率。
  • 另外提醒:Valheim 每次官方更新後,模組通常需要幾天甚至幾週才會跟上。如果你打算長期經營,建議在 Steam 上鎖定伺服器版本(使用 +app_update 896660 -beta default 或指定 build id),避免自動更新導致所有模組失效。

    效能特性與調校重點

    Valheim 的效能瓶頸與 Minecraft 類似但更嚴峻。它是 Unity 引擎開發,遊戲世界中的所有物件(建築、樹木、掉落物、怪物)都以 ZDO(Zoned Object)形式存在,每次玩家移動時都會觸發大量同步。這導致幾個現象:

  • 世界檔案會持續膨脹。一個活躍數月的世界,.db 檔案很容易長到 300 MB 以上,載入與存檔時間會明顯變長。
  • 地面掉落物是隱形殺手。玩家打完怪不撿東西、砍樹後樹枝散落一地,這些物件都會常駐記憶體並持續同步。定期清理掉落物(或使用自動清理模組)能有效改善卡頓。
  • 大型建築群會拖垮伺服器。特別是大量使用「建造模式下可放置的裝飾物件」時,每個物件的狀態同步都會累積負擔。
  • 單核時脈決定一切。Valheim 無法有效利用多核心,因此一台 4 核高時脈的 CPU 會完勝 16 核低時脈的伺服器 CPU。
  • 調校建議:記憶體配置 4 至 8 GB(視人數與建築規模)、確保使用 SSD、定期重啟伺服器(例如每天凌晨四點自動重啟,可釋放累積的記憶體碎片)、限制同時在線人數不超過硬體能承擔的上限。社群也有一些工具可以「重建」世界檔案,把已刪除物件的殘留資料清除,能有效縮小 .db 檔案。

    五、對外連線:連接埠、網域與穿透方案

    伺服器跑起來了,但朋友連不進來,這是自架最常見的挫折。這一節把連線問題一次講清楚。

    連接埠一覽與轉發設定

    遊戲

    協定

    預設埠

    用途

    Minecraft Java

    TCP

    25565

    遊戲連線

    Minecraft Bedrock

    UDP

    19132

    遊戲連線

    GeyserMC

    UDP

    19132

    基岩版翻譯層

    Valheim

    UDP

    2456 至 2457

    遊戲連線與查詢

    RCON(選用)

    TCP

    自訂

    遠端管理,切勿公開

    在路由器上設定「連接埠轉發(Port Forwarding)」時,請把外部埠對應到伺服器的內網 IP。強烈建議為伺服器設定固定內網 IP(在路由器中綁定 MAC 位址),否則重開機後 IP 變動會讓轉發規則失效。

    安全性提醒:不要把 RCON 埠或是 SSH 埠直接暴露在公網上。RCON 如果沒有設定密碼或密碼太弱,等於把伺服器管理權交給全世界。SSH 則建議改用金鑰登入、關閉密碼認證、並考慮更換預設埠或限制來源 IP。

    DDNS、網域與 IPv6 直連

    家用 IP 通常是浮動的,每隔幾天或重開機就換一次。解決方案是 DDNS(動態 DNS):註冊一個免費服務(例如 DuckDNS、No-IP),在伺服器上跑一個更新腳本定時回報當前 IP,玩家就能用固定的網域名稱連線。

    如果你有自己的網域,也可以用 Cloudflare 的 API 寫一個簡單的 DDNS 腳本,把 mc.example.com 指向家用 IP。這樣看起來專業,也方便日後換主機時只要改 DNS 記錄。

    IPv6 直連是另一個選項。若你的 ISP 提供 IPv6,且伺服器有可用的 IPv6 位址,玩家可以用 [2001:db8::1]:25565 的形式直接連線。優點是完全不需要 NAT 轉發,缺點是位址難記,且部分玩家的網路環境不支援 IPv6(特別是行動網路或校園網路有時會限制)。

    不想開埠?內網穿透與 VPN 方案

    如果你在 CGNAT 後面,或是不想讓家用 IP 曝光,以下三種方案可以考慮:

  • Tailscale:基於 WireGuard 的 Mesh VPN,免費方案對個人使用非常夠用。你只需要在伺服器與每位玩家電腦上安裝 Tailscale、登入同一個帳號(或使用分享功能),玩家就能用 Tailscale 配發的虛擬 IP 連線。優點是設定極簡、加密傳輸、不需要開任何埠;缺點是每位玩家都要安裝軟體。
  • ZeroTier:概念類似,提供較多的自訂網路設定,適合稍微進階的使用者。
  • playit.gg:專門為遊戲伺服器設計的隧道服務,提供一個公開的網域與埠,玩家不需要安裝任何軟體就能連線。免費方案會有限速與連線品質波動,適合小型私服測試用。
  • 選擇建議:朋友都是固定班底、願意裝軟體,選 Tailscale;想要「任何人給個位址就能連」,用 playit.gg 或直接租一台便宜的 VPS 做反向代理。

    六、資安、備份與日常維運

    伺服器架起來只是開始,能不能「活得久」取決於維運。這一節談三件最重要的事:安全、備份、監控。

    最小權限原則與防火牆設定

    主機層面的防護,請至少做到以下幾點:

    遊戲伺服器以專用使用者身分執行,不使用 root。

  • 使用 ufw 或 nftables 設定防火牆,只開放必要的埠(SSH、遊戲埠),其餘一律拒絕。
  • SSH 關閉密碼登入、改用金鑰、關閉 root 直接登入。

    安裝 fail2ban 監控 SSH 與服務日誌,自動封鎖暴力破解來源。

    定期執行 apt upgrade 更新系統安全性修補。

  • Minecraft 若使用 online-mode=false(離線模式),任何人都能用任何暱稱登入,包含管理員帳號。除非你有特殊理由,否則永遠保持 online-mode=true。
  • 遊戲層面的防護,Minecraft 請務必安裝白名單(whitelist on)並搭配 CoreProtect 記錄所有方塊變動。Valheim 沒有內建白名單,只能靠密碼保護,因此密碼強度非常重要——建議至少 16 個字元、混合大小寫與數字,並且不要在 Discord 或其他公開頻道張貼。

    自動備份與災難還原演練

    備份是維運的核心。請記住三二一原則:三份副本、兩種媒介、一份異地。實作上可以這樣做:

  • 每日自動備份。Minecraft 建議先執行 save-all flush 再打包世界資料夾;Valheim 則建議在重啟伺服器時進行備份(因為執行中複製 .db 可能得到不完整的檔案)。
  • 保留多個版本。至少保留最近 7 天的每日備份與最近 4 週的每週備份。不要只保留「最新一份」,因為如果存檔損毀是漸進式的(例如某個模組造成的慢性破壞),你可能需要回溯到更早的版本。
  • 異地備份。用 rclone 把備份同步到 Google Drive、Backblaze B2 或另一台機器。雲端空間成本極低,卻能在硬碟故障時救你一命。
  • 定期演練還原。備份最可怕的狀況是「從來沒測過能不能還原」。建議每季做一次演練:把備份解壓到另一個目錄、用不同埠啟動、確認世界能正常載入。
  • 以下是 Minecraft 的簡易備份腳本範例:

    #!/bin/bash

    DATE=$(date +%Y%m%d)

    BACKUP_DIR=/srv/backups/minecraft

    WORLD_DIR=/srv/minecraft

    mkdir -p "$BACKUP_DIR"

    透過 RCON 或 tmux 送出存檔指令

    mcrcon -H 127.0.0.1 -P 25575 -p "your_rcon_password" "save-all flush"

    sleep 5

    tar -czf "$BACKUP_DIR/world-$DATE.tar.gz" \

    C "$WORLD_DIR" world world_nether world_the_end plugins config

    只保留 14 天

    find "$BACKUP_DIR" -name "world-*.tar.gz" -mtime +14 -delete

    同步到雲端

    rclone copy "$BACKUP_DIR" remote:minecraft-backups

    監控、告警與效能診斷

    你不會想等到玩家抱怨「好卡」才發現問題。基本的監控可以這樣做:

  • 資源監控:安裝 netdata 或 Prometheus + Grafana,監看 CPU、記憶體、磁碟 I/O 與網路流量。netdata 開箱即用,對個人伺服器非常友善。
  • 程序存活監控:systemd 的 Restart=on-failure 已經能處理大部分狀況。若你需要更即時的告警,可以用 Uptime Kuma 監控遊戲埠是否可連線,並在異常時發送 Discord 通知。
  • Minecraft 效能分析:使用 spark 外掛,執行 /spark profiler start 收集 30 秒的資料,然後用網頁介面查看是哪個外掛或哪個實體吃掉了 TPS。這比盲目地加記憶體有效得多。
  • Valheim 效能診斷:官方工具較少,主要靠觀察伺服器日誌與系統資源。若 CPU 單核長期 100%、記憶體持續成長不下降,通常代表世界檔案需要清理或重建。
  • 七、常見問題與排錯速查

    以下是自架玩家最常遇到的問題與處理方向。

    Q1:朋友顯示「Can't connect to server」或「連線逾時」。先確認三件事:伺服器是否在執行(systemctl status)、防火牆是否放行、路由器轉發是否正確。若前三項都沒問題,大概率是 CGNAT 或 ISP 阻擋,改用 Tailscale 測試即可確認。

    Q2:自己用內網 IP 連得上,但外網 IP 連不上。這通常是「NAT 迴環(NAT Loopback)」問題,部分路由器不支援從內網存取自己的公網 IP。請用外部網路(例如手機熱點)測試,或請朋友幫忙驗證。

    Q3:Minecraft 玩家進去後一直被踢,顯示「Outdated server」或「Outdated client」。客戶端與伺服器版本不一致。請統一版本,或安裝 ViaVersion 系列外掛讓不同版本的客戶端都能連入。

    Q4:Valheim 卡在「Connecting...」然後失敗。最常見原因是模組版本不一致,其次是密碼含特殊字元導致解析錯誤,或是世界檔案損毀。建議先移除所有模組測試,確認基本連線正常後再逐一加回。

    Q5:伺服器跑一段時間後愈來愈卡,TPS 掉到 10 以下。用 spark 找出元凶。常見原因包括:實體數量爆炸(村民、掉落物、生怪磚)、某個外掛有記憶體洩漏、世界檔案過大、或是 JVM 參數不當導致 GC 頻繁。先加記憶體通常沒用,找出根因才是關鍵。

    Q6:停電或當機後世界檔案損壞。這就是為什麼要備份。Minecraft 有 --forceUpgrade 與區域檔案修復工具;Valheim 的 .db 若損毀,可以嘗試用 .db.old 備份還原,或使用社群的修復工具。無論如何,請養成「每天自動備份 + 異地保存」的習慣。

    Q7:想從家用搬到 VPS,或從 VPS 搬回家用,該注意什麼?基本上只需搬移世界資料夾與設定檔。Minecraft 要一併搬 server.properties、plugins/、mods/、ops.json 等;Valheim 要搬 worlds_local/ 與模組。搬移前先在目的地測試啟動,確認版本一致後再切換 DNS 或通知玩家新 IP。

    八、結語:自架的核心價值在於「可控」

    從 2026 年的角度回頭看,自架遊戲伺服器早已不是「硬派玩家的專利」。拜 Docker、內網穿透工具與高效能低功耗硬體之賜,現在一台放在書桌角落的迷你主機,就能撐起一群朋友長達數年的遊戲世界。真正需要投入的,其實是對「維運」這件事的理解:備份、監控、更新、除錯。

    本文從需求評估、硬體規格、Minecraft 與 Valheim 的完整架設流程,一路談到網路連線、資安防護與自動化備份。你不需要一次全部做到位——先讓伺服器跑起來,跟朋友玩個幾晚,再逐步補上防火牆、備份腳本與監控。過程中遇到問題是很正常的,社群資源(包括雅寶社區 · 頂客論壇的 3C 科技教學版)隨時可以發問交流。

    最後給準備動手的人三句話:第一,先確認你的網路能不能開埠,這會決定你要走哪條路線;第二,備份永遠比效能調校重要,一個能還原的爛伺服器勝過一個跑很快但存檔消失的神機;第三,選擇你真正會維護的方案,而不是規格表上最漂亮的方案。祝你的世界長長久久,玩家絡繹不絕。

    ```

    🏠 返回首頁