要为日本、韩国和东亚玩家搭建游戏服务器,可以购买 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、端口、带时区的时间和报错信息。