要為日本、韓國和東亞玩家搭建遊戲伺服器,可以購買 JUSTG 東京或首爾雲伺服器,在防火牆中放行遊戲連接埠,再把遊戲服務端配置成 systemd 服務,實現開機自啟、崩潰後自動重啟。本文按步驟介紹 Linux 下的搭建方法,以及更新、備份和 Windows Server 方案。
第 1 步:選擇機房和套餐
選擇離大多數玩家更近的城市:東京或首爾。兩地都配備日本或韓國原生 IPv4、免費 IPv6、亞洲最佳化線路和 500 Mbps 連接埠。拿不準的話,可以提交工單申請測試伺服器,先讓玩家試一試。
請先檢視遊戲服務端文件中的 CPU 和記憶體要求,再選擇留有餘量的套餐。兩地套餐完全相同:
| 套餐 | CPU | 記憶體 | SSD | 流量 | 月付 |
|---|---|---|---|---|---|
| 01 | 2 核 | 1 GB | 20 GB | 1 TB | $29.99 |
| 02 | 3 核 | 2 GB | 40 GB | 2 TB | $39.99 |
| 03 | 4 核 | 4 GB | 80 GB | 3 TB | $49.99 |
| 04 | 5 核 | 8 GB | 160 GB | 4 TB | $79.99 |
| 05 | 6 核 | 16 GB | 240 GB | 5 TB | $129.99 |
| 06 | 7 核 | 24 GB | 320 GB | 6 TB | $169.99 |
玩家變多後,可以在服務詳情頁升級套餐。
第 2 步:在防火牆中放行連接埠
不同遊戲使用的連接埠和協議(UDP、TCP 或兩者)各不相同,請檢視對應文件。下面示例中的 7777 連接埠僅作演示。在 Debian 或 Ubuntu 上使用 ufw 時,務必先放行 SSH 再啟用防火牆:
apt update && apt install -y ufw
ufw allow OpenSSH
ufw allow 7777/udp
ufw allow 7777/tcp
ufw enable
ufw status verbose
例如,Minecraft Java 版可以在 Linux 上執行,預設監聽 TCP 25565 連接埠,這種情況下應放行 25565/tcp。
第 3 步:建立專用使用者並安裝服務端
不要用 root 執行遊戲服務端,而是使用專用使用者。本例安裝在 /opt/game,服務端程式為 /opt/game/server:
useradd -r -m -d /opt/game -s /usr/sbin/nologin game
chown -R game:game /opt/game
按照遊戲官方說明,把服務端檔案複製或下載到 /opt/game,然後再執行一次 chown -R game:game /opt/game。
第 4 步:配置為 systemd 服務
建立 /etc/systemd/system/game.service:
[Unit]
Description=Game server
After=network-online.target
Wants=network-online.target
[Service]
User=game
WorkingDirectory=/opt/game
ExecStart=/opt/game/server --port 7777
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
把 ExecStart 改成遊戲實際的啟動命令,然後啟動服務並設定開機自啟:
systemctl daemon-reload
systemctl enable --now game
systemctl status game
journalctl -u game -f
Restart=on-failure 會在服務端崩潰後自動重新拉起,journalctl -u game -f 可以實時檢視日誌。
第 5 步:保持服務端和系統更新
更新遊戲服務端時,先停止服務、快速備份、替換檔案,再重新啟動:
systemctl stop game
tar -czf /root/game-$(date +%F).tar.gz -C /opt game
# replace the files in /opt/game with the new version
chown -R game:game /opt/game
systemctl start game
在 Debian 或 Ubuntu 上自動安裝系統安全更新:
apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
第 6 步:備份存檔和配置
下面是一個簡單的每日備份,保留最近 7 天的壓縮包:
mkdir -p /root/backups
tar -czf /root/backups/game-$(date +%F).tar.gz -C /opt game
find /root/backups -name 'game-*.tar.gz' -mtime +7 -delete
把這些命令寫進指令碼,用 cron 每天執行一次,例如安排在玩家較少的時段。再定期把備份複製到伺服器以外的地方,例如在你自己的電腦上執行:
rsync -avz [email protected]:/root/backups/ ./game-backups/
Windows Server 方案
有些遊戲的獨立服務端只能在 Windows 上執行。JUSTG 雲伺服器可以安裝 Windows Server 來代替 Linux。透過 RDP 遠端桌面連線後安裝服務端,並以管理員身份在 PowerShell 中為 Windows Defender 防火牆放行連接埠:
New-NetFirewallRule -DisplayName "Game 7777 UDP" -Direction Inbound -Protocol UDP -LocalPort 7777 -Action Allow
New-NetFirewallRule -DisplayName "Game 7777 TCP" -Direction Inbound -Protocol TCP -LocalPort 7777 -Action Allow
如需重啟後自動執行,可以使用遊戲自帶的服務模式,或在“任務計劃程式”中建立開機啟動的任務。
FAQ
我的遊戲伺服器需要哪個套餐?
這取決於遊戲本身、模組和線上人數,建議以遊戲官方配置要求為準並留出餘量。之後可以在服務詳情頁升級套餐,購買前也可以透過工單申請測試伺服器。
以後可以把遊戲伺服器從東京遷到首爾嗎?
可以。雲伺服器每 30 天可以在客戶中心自助更換一次機房(東京、首爾、莫斯科之間)。更換後會得到一臺使用新 IP 的全新 VPS,資料不會複製,舊 VPS 會被刪除,所以請先備份,並把新 IP 告訴玩家。
玩家連不上伺服器,應該檢查什麼?
確認服務正在執行(systemctl status game),確認它在正確的連接埠上監聽(ss -tulpn),並確認防火牆已放行對應的連接埠和協議。仍無法解決的話,請提交工單,附上伺服器 IP、連接埠、帶時區的時間和報錯資訊。