本通用指南将 Linux(Ubuntu 或 Debian)或 Windows Server 机器准备好以托管任意游戏服务器:选择托管商、非 root 用户、SSH 密钥、防火墙、fail2ban、SteamCMD、Docker、systemd 服务、监控和备份。预计 1 到 2 小时;之后请按您游戏的安装指南继续。
分步安装
选择托管商和套餐(见“选择托管商”),订购运行 Ubuntu LTS 或 Debian stable 的 VPS 或独立服务器。
用提供的 root 账号通过 SSH 登录并更新系统。
创建带 sudo 的非 root 用户;绝不要以 root 运行游戏服务器。
安装 SSH 公钥,然后禁用 root 登录和密码登录。
启用 ufw 防火墙:拒绝所有入站,放行 SSH 和游戏端口。
安装 fail2ban 以拦截重复的 SSH 登录尝试。
根据游戏安装 SteamCMD(Steam 游戏)或 Docker(社区镜像)。
按游戏指南安装服务器,并开放其端口(使用“端口检查器”工具)。
创建 systemd 服务(或 tmux 会话)以自动启动和重启服务器。
配置监控(日志、资源)和经过测试的定时备份。
选择托管商与套餐
- VPS(每月几欧元起):足够小型服务器;检查 CPU 是否被过度共享,因为大多数游戏依赖单个高速核心。
- 独立服务器:适合多个服务器或大量槽位;选 SSD/NVMe 和较高 CPU 主频。
- 标准:靠近玩家的位置(延迟)、含 DDoS 防护、流量不限或配额充足、网络防火墙(“security group”)、快照、支持。用“服务器资源计算器”估算资源。
首次登录与非 root 用户
将 203.0.113.10 替换为服务器 IP,gameadmin 替换为您想用的用户名:
ssh [email protected]
apt update && apt upgrade -y
adduser gameadmin
usermod -aG sudo gameadminSSH 密钥与 sshd 加固
在本机执行 ssh-keygen -t ed25519,然后 ssh-copy-id [email protected]。在禁用密码之前,务必在第二个终端测试密钥登录,然后创建 /etc/ssh/sshd_config.d/99-hardening.conf(Ubuntu 22.04+、Debian 12):
# /etc/ssh/sshd_config.d/99-hardening.conf
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# Apply: sudo sshd -t && sudo systemctl reload sshufw 防火墙
启用 ufw 之前先放行 SSH,避免把自己锁在外面。然后添加游戏端口(FiveM 示例:30120 的 TCP 与 UDP;各游戏端口见“端口检查器”,“防火墙规则”工具可生成命令)。同时在托管商的网络防火墙(OVH、Hetzner、Scaleway 等:“security group”)中做同样设置。
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 30120/tcp
sudo ufw allow 30120/udp
sudo ufw enable
sudo ufw status verbosefail2ban
fail2ban 会临时封禁多次登录失败的地址。创建 /etc/fail2ban/jail.local(不要修改 jail.conf):
# sudo apt install fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
# sudo systemctl enable --now fail2ban
# sudo fail2ban-client status sshdSteamCMD(Steam 游戏)
从 Valve 官方压缩包手动安装(以 gameadmin 身份,不要用 root)。将 APPID 替换为游戏专用服务器的 ID(见 SteamDB 或游戏指南)。部分服务器需要 Steam 账号而非 “anonymous”,请查阅游戏文档。
sudo apt install -y lib32gcc-s1 curl ca-certificates
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
./steamcmd.sh +force_install_dir ~/server +login anonymous +app_update APPID validate +quitDocker(社区镜像)
Docker 便捷脚本适合测试;生产环境请按 docs.docker.com 的 apt 仓库方式安装。加入 docker 组后需重新登录。用 -p 发布的容器会绕过 ufw:请同时用托管商防火墙限制。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker gameadmin
# log out, log back in, then:
docker run --rm hello-worldsystemd 服务
创建 /etc/systemd/system/gameserver.service(按游戏启动脚本调整 User、WorkingDirectory 和 ExecStart),然后执行:sudo systemctl daemon-reload && sudo systemctl enable --now gameserver。日志:journalctl -u gameserver -f。
[Unit]
Description=Game server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=gameadmin
WorkingDirectory=/home/gameadmin/server
ExecStart=/home/gameadmin/server/start.sh
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target替代方案:tmux
tmux 可在 SSH 断开后保持服务器运行,并可访问其控制台(便于输入命令)。先按 Ctrl+B 再按 D 脱离。它不会在崩溃或重启后自动重启服务器,生产环境请优先使用 systemd。
sudo apt install -y tmux
tmux new -s game
# inside tmux: run ./start.sh, then press Ctrl+B then D
tmux attach -t gameWindows Server 方案
通过远程桌面连接(将 3389 端口限制为您的 IP 或使用 VPN),在 C:\gameserver 安装 SteamCMD 或游戏服务器,在管理员 PowerShell 中开放端口,并用计划任务在开机时启动服务器。请规划 Windows Update 的重启时间,避免意外停机。
New-NetFirewallRule -DisplayName "Game UDP 27015" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow
New-NetFirewallRule -DisplayName "Game TCP 27015" -Direction Inbound -Protocol TCP -LocalPort 27015 -Action Allow
schtasks /Create /TN "GameServer" /TR "C:\gameserver\start.bat" /SC ONSTART /RU SYSTEM /RL HIGHEST /F家庭托管:端口转发
- 给机器分配固定内网 IP(路由器 DHCP 预留)。
- 在路由器中将游戏的每个端口按正确协议转发(NAT)到该内网 IP。
- 同时放行本机防火墙。请从外网(4G/5G)测试,而不是在局域网内。
- 如果运营商使用 CGNAT(没有独立公网 IP),则无法端口转发:请申请公网 IP,或改用 VPS 或隧道。
- 暴露个人 IP 存在风险(针对性 DDoS):公开服务器使用有防护的 VPS 更安全。
关于 DDoS 攻击的说明
- 对于流量型攻击,本机防火墙不够:防护须在上游由托管商提供。
- 确认套餐的抗 DDoS 覆盖范围(UDP/游戏协议、“gaming”模式):各托管商并不相同。
- 使用代理或隧道时不要泄露源站 IP;不要暴露 RCON 或 Web 控制台。
监控
常用命令:服务日志、实际监听的端口(与防火墙核对)、CPU/内存负载和磁盘空间。若需持续监控,可加入 Netdata 或 Prometheus,并为内存和磁盘设置告警。
journalctl -u gameserver -f
sudo ss -lntup
htop
free -h
df -h备份
每天备份世界和配置,保留多个版本并复制到服务器之外。“备份脚本生成器”工具可生成带保留策略的完整脚本;最简示例(crontab):
30 4 * * * tar -czf /backups/gameserver-$(date +\%Y\%m\%d).tar.gz -C /home/gameadmin server && find /backups -name 'gameserver-*.tar.gz' -mtime +7 -delete故障排除
- 玩家无法连接:检查协议(UDP 还是 TCP)、ufw、托管商防火墙,以及服务器是否确实在监听(sudo ss -lntup)。
- “Permission denied (publickey)”:密钥不在该用户的 ~/.ssh/authorized_keys 中,或权限过宽(chmod 700 ~/.ssh,chmod 600 ~/.ssh/authorized_keys)。
- 服务器被杀死(“Killed”,OOM):内存不足;查看 “dmesg | grep -i oom”,增加内存或减少槽位和 Mod。交换文件可减少崩溃但会变慢。
- 服务反复重启:查看 “journalctl -u gameserver -n 100”;检查路径、权限(服务器须属于 gameadmin)以及 SteamCMD 缺失的 32 位库。
- 服务器不出现在列表中:查询(query)端口被拦截或服务器未登记;请到 game-rank.com/jeux 添加以便收录。
常见问题
- 游戏服务器该用 VPS 还是独立服务器?
- 小型服务器或测试用 VPS 就够了。需要多个服务器、大量槽位或稳定性能(无吵闹邻居)时再换独立服务器。
- Ubuntu 还是 Debian?
- 两者皆可,命令几乎相同。请选择受支持的版本(Ubuntu LTS 或 Debian stable),并核对游戏发行商声明的兼容性。
- 真的需要禁用 root 登录和密码登录吗?
- 强烈建议:暴露的服务器每天会遭受数千次尝试。SSH 密钥加非 root 用户能消除大部分风险;请在托管商处保留救援控制台。
- Docker 还是直接安装?
- 用 SteamCMD 和 systemd 直接安装最简单,发行商文档也最完善。Docker 便于隔离并在一台机器上运行多个服务器,但会多出需要理解的层(网络、卷、防火墙)。
