服务器怎么搭建游戏服务器

结论: 搭建游戏服务器的通用套路是"命令行启动 + 守护进程托管 + 端口放行":Minecraft Java 版用 Paper 服务端配 JVM 参数调优,Steam 系游戏(如 Palworld)用 SteamCMD 拉取专用服务端;再用 systemd 服务单元替代 screen 手动守护,并在云安全组与系统防火墙同时放行对应端口即可长期稳定运行。

引言:为什么游戏服务器喜欢"自己搭"

对中小服主和开黑小团体来说,租用游戏面板虽然省事,但价格高、可定制性差。自己用一台云服务器搭建游戏服务器,成本通常只有面板服的三分之一,还能自由装插件、改参数、做备份。真正的门槛不在"会不会敲命令",而在三件事:内存分配是否合理、端口是否真的放行、进程会不会因为 SSH 断开而退出。本文以 Ubuntu 24.04 LTS 为例,覆盖 Minecraft Java 版与 Palworld 两个最典型的场景,其余 Steam 系游戏流程基本通用。

搭建游戏服务器需要什么配置?

先给结论:绝大多数游戏服务端是单核性能 + 内存容量敏感型,而不是多核堆料型。下面是主流游戏服务端的推荐配置(截至 2026 年,按 10~20 人在线估算)。

游戏服务端CPU内存带宽默认端口备注
Minecraft Java 版(Paper)2~4 核,主频 ≥ 3.0 GHz4~8 GB5~10 MbpsTCP 25565(RCON 25575)单线程重,插件多时内存吃紧
Minecraft 基岩版2 核2~4 GB5 MbpsUDP 19132占用低
Palworld(幻兽帕鲁)4 核16~32 GB10 MbpsUDP 8211、27015内存泄漏明显,需定时重启
CS2 社区服4 核8 GB20 MbpsUDP/TCP 27015128 tick 对 CPU 要求高
Valheim2~4 核4~8 GB5 MbpsUDP 2456~2458三个端口连续分配

选型要点:

  • 主频优先于核心数:Minecraft 的服务端逻辑基本跑在单线程上,一颗 3.5 GHz 的 4 核通常比 2.4 GHz 的 8 核体验更好。
  • 内存留 1~2 GB 给系统:不要把全部内存都划给 JVM,否则 OOM Killer 会直接杀掉进程。
  • 带宽按"每人 50~100 kbps"估算,同时注意云服务器的出网带宽上限(1 Mbps ≈ 128 KB/s,10 人同时玩就可能跑满)。

第一步:准备系统环境与专用用户

游戏服务端绝不能用 root 跑。创建独立用户、独立目录,后续权限与备份都清晰。

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y openjdk-21-jre-headless tmux screen curl wget jq unzip

# 为 Minecraft 创建专用用户与目录
sudo useradd -r -m -d /opt/minecraft -s /bin/bash minecraft
sudo mkdir -p /opt/minecraft/server
sudo chown -R minecraft:minecraft /opt/minecraft

# 关闭 swap 过度使用(Minecraft 场景建议设低,避免卡顿)
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-game.conf
sudo sysctl --system

同时确认系统时间同步(游戏服日志与存档时间戳依赖它):

bash
sudo timedatectl set-timezone Asia/Shanghai
timedatectl status | grep -E 'NTP|Time zone'

第二步:搭建 Minecraft Java 版服务器(Paper 服务端)

结论:生产环境不要用官方 vanilla 服务端,用 Paper(或其分支 Purpur),它对 TPS 的优化和插件兼容性最好。下面用 PaperMC 官方 API 自动拉取最新构建。

bash
sudo -iu minecraft
cd /opt/minecraft/server

VERSION=1.21.4
BUILD=$(curl -s "https://api.papermc.io/v2/projects/paper/versions/${VERSION}" | jq -r '.builds[-1]')
curl -o paper.jar "https://api.papermc.io/v2/projects/paper/versions/${VERSION}/builds/${BUILD}/downloads/paper-${VERSION}-${BUILD}.jar"

# 首次启动会生成 eula.txt 与 server.properties
java -jar paper.jar --nogui
exit   # 回到 root

首次启动必然失败并提示同意 EULA,这是正常流程。修改配置后再启动:

bash
sudo -iu minecraft bash -c 'cd /opt/minecraft/server && echo "eula=true" > eula.txt'
sudo tee /opt/minecraft/server/server.properties <<'EOF'
server-port=25565
max-players=20
view-distance=10
simulation-distance=6
level-type=minecraft:normal
spawn-protection=0
online-mode=true
enable-rcon=true
rcon.port=25575
rcon.password=改成强密码
EOF

关键参数说明:

  • view-distance:视距,影响带宽与内存最大,10 是流畅与体验的平衡点;卡顿可降到 6。
  • simulation-distance:实体运算范围,比视距小能显著降低 CPU 压力。
  • online-mode:设为 false 即为离线模式(盗版可进),有安全风险,不建议。
  • RCON:远程控制台,用于脚本执行 save-all、定时备份,务必改默认密码。

第三步:JVM 参数怎么调才不卡

结论:Minecraft 服务端 90% 的"卡顿"来自垃圾回收(GC,Garbage Collection)停顿。社区公认的 Aikar's Flags 针对 G1 收集器做了调优,直接套用即可。

bash
java -Xms6G -Xmx6G \
  -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:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:+PerfDisableSharedMem \
  -jar paper.jar --nogui

调优要点:

  • -Xms 与 -Xmx 必须相等,避免堆动态扩容带来的停顿;8 GB 内存的机器建议各设 6G,留 2 GB 给系统与页缓存。
  • 不要盲目加大内存:堆越大,单次 GC 扫描时间越长。10 人以下的服 4G 通常比 8G 更顺。
  • 堆超过 12 GB 时把 G1HeapRegionSize 调到 16M,否则区域数过多影响效率。
  • 想进一步降负载,可用 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true 让部分分析工具识别。

第四步:用 SteamCMD 搭建 Palworld 专用服务器

结论:所有 Steam 系游戏(Palworld、CS2、Valheim、ARK)的专用服务端都用同一套流程——SteamCMD 下载、脚本启动、systemd 托管。区别只在 App ID 和启动参数。

bash
# 启用 32 位库支持
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd lib32gcc-s1 lib32stdc++6

sudo useradd -r -m -d /opt/steam -s /bin/bash steam
sudo -iu steam bash -c '
mkdir -p /opt/steam/palworld
steamcmd +force_install_dir /opt/steam/palworld \
  +login anonymous +app_update 2394010 validate +quit
'

Palworld 的专用服务端 App ID 是 2394010(截至 2026 年仍适用)。启动参数建议固定在脚本里,避免每次手敲出错:

bash
sudo tee /opt/steam/palworld/start.sh <<'EOF'
#!/bin/bash
cd /opt/steam/palworld
./PalServer.sh \
  -port=8211 \
  -players=32 \
  -useperfthreads \
  -NoAsyncLoadingThread \
  -multithreadingenabled \
  -Epicasync
EOF
sudo chmod +x /opt/steam/palworld/start.sh
sudo chown -R steam:steam /opt/steam

参数含义:

  • -port=8211:游戏连接端口(UDP),客户端连接时填 IP:8211。
  • -players=32:最大同时在线人数,超过配置会明显掉帧。
  • -useperfthreads + -multithreadingenabled:启用多线程优化,对高核数机器收益明显。
  • Palworld 服务端存在已知内存增长问题,必须配置每日定时重启,否则 2~3 天后 OOM。

第五步:端口放行(云安全组 + 系统防火墙双层)

结论:游戏服务器连不上,八成是端口没放行,而且是"两层墙"都要开——云厂商的安全组和系统内的防火墙,任意一层挡住都不通。

bash
# Ubuntu / Debian 使用 ufw
sudo ufw allow 25565/tcp comment 'Minecraft Java'
sudo ufw allow 25575/tcp comment 'Minecraft RCON'
sudo ufw allow 19132/udp comment 'Minecraft Bedrock'
sudo ufw allow 8211/udp comment 'Palworld game'
sudo ufw allow 27015/udp comment 'Palworld Steam query'
sudo ufw reload && sudo ufw status numbered

# CentOS / Rocky / AlmaLinux 使用 firewalld
sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --permanent --add-port=8211/udp
sudo firewall-cmd --reload

验证端口是否真的通(在另一台机器上测,别在本机测):

bash
nc -vzu <你的公网IP> 8211     # UDP
nc -vz  <你的公网IP> 25565    # TCP

同时记得去云控制台的安全组里添加对应规则:协议选 TCP 还是 UDP 一定要看清楚,Palworld、基岩版、Valheim 都是 UDP,填成 TCP 是最常见的低级错误。