ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

幻兽帕鲁专用联机服务器搭建指南:从SteamCMD部署到systemd运维

幻兽帕鲁专用联机服务器搭建指南:从SteamCMD部署到systemd运维 幻兽帕鲁联机服务器的核心矛盾是官方服务器和 P2P 联机都不适合一帮朋友长期稳定地玩。P2P 模式下房主的电脑和上行带宽决定所有玩家的体验房主一掉线房间就没了官方服务器在高峰期又容易出现排队和延迟波动。自己搭一台专用联机服务器把 Palworld 服务端跑在 7x24 小时在线的云主机上才能同时解决在线时长、人数上限和存档自主管理的问题。下面直接按一套完整落地方案来写从服务器选型、SteamCMD 部署、配置参数、systemd 托管、低延迟调优到备份恢复最终得到的是一台可以长期运行、崩溃自动拉起、定期备份的幻兽帕鲁 1.0 专用联机服务器。1. 先想清楚专用服务器到底解决了 P2P 联机的哪些问题1.1 P2P 联机和专用服务器的本质区别幻兽帕鲁有两条联机路线。一条是游戏内直接创建多人房间这会进入 P2P 模式另一条是单独部署专用服务器玩家通过 IP 或 Steam 服务器列表连接。两条路线的运行方式完全不同。P2P 模式把游戏角色和服务器角色压在同一个进程里。房主的电脑既要渲染画面又要计算世界逻辑、同步玩家数据。玩家一多CPU 负载迅速上升画面和联机体验互相抢资源。更现实的问题是房主退出游戏这个房间就关闭了其他人想继续玩也进不去。对固定小团队来说这意味着每次上线都要等房主开机体验非常割裂。专用服务器把世界托管从客户端里拆出来。服务端进程不渲染画面只负责模拟世界、处理玩家输入、维护存档。它跑在云主机上没有显卡资源需求CPU 和内存是主要消耗项。服务器 7x24 小时运行任何玩家随时都能进入房主在不在线都不影响世界继续存在。存档也由服务器统一管理管理员可以直接备份、迁移甚至从备份中恢复。一句话概括P2P 联机适合临时开黑专用服务器适合长期运行、固定人群、需要存档保障的场景。1.2 一台“够用”的服务器需要什么配置Palworld 服务端不是轻量应用。以 20 人左右的小团队为例服务端进程在运行数小时后内存占用会明显上升配置选低了最容易出现的问题不是卡顿而是直接 OOM 掉档。推荐配置如下项目最低要求推荐配置说明CPU4 核4 核以上服务端吃单核性能主频建议 2.5GHz 以上内存8GB16GB8GB 只适合极少数玩家20 人建议 16GB系统盘20GB40GB服务端本体加存档备份空间要留出余量带宽5Mbps10Mbps游戏联机带宽占用不大重点看延迟和丢包操作系统Ubuntu 22.04Ubuntu 22.04 LTS本方案按 Linux 环境演示这里要解释一下为什么内存比 CPU 更容易成为瓶颈。Palworld 服务端长期运行后会持续占用内存玩家加载的地图区域越多、帕鲁越多内存占用越难降下来。物理内存不够时Linux 内核的 OOM Killer 会挑选进程杀掉服务端被杀死后玩家集体掉线存档可能停留在上一次写入的状态。标题里提到的“可试用”在搭建阶段体现为一个很实用的验证思路如果云厂商提供试用实例例如玄幻云这类支持先试用再购买的平台先用试用实例按本方案的流程跑通验证连接延迟、稳定性和管理方式再决定是否购买长期包年包月。这里的“低价”也不是单纯看购买单价而是看实例规格是否匹配帕鲁服务端的实际消耗。省内存导致掉档远比每个月多几十元的成本更伤。2. 环境准备操作系统、依赖和目录规划2.1 服务器操作系统与基础依赖生产环境建议使用 Ubuntu 22.04 LTS 或 Debian 12。SteamCMD 在 Ubuntu 生态里最常见软件源更新快遇到问题也容易搜到同类案例。新机器到手后先安装基础工具和 32 位兼容库sudo dpkg --add-architecture i386 sudo apt update sudo apt install -y curl wget tar lib32gcc-s1 lib32stdc6第一行dpkg --add-architecture i386给系统添加 32 位架构支持。SteamCMD 虽然运行在 64 位系统上但它内部仍会加载部分 32 位组件缺少这些库时启动 steamcmd.sh 会报steamcmd: command not found或找不到libgcc_s.so.1之类的错误。装完这一步后续安装过程会顺畅很多。2.2 用最小权限账号运行游戏服务Palworld 服务端会直接接收公网玩家的连接数据不要用 root 用户运行它。推荐创建一个专用系统用户并规划好独立目录sudo useradd -m -s /bin/bash steam sudo mkdir -p /opt/palworld sudo chown -R steam:steam /opt/palworld创建完成后切换到 steam 用户继续操作sudo -u steam -H bash这个最小权限思路和 Web 服务、数据库服务是一样的即使服务端程序被利用攻击者拿到的也只是 steam 用户的权限而不是 root。后续所有安装文件都放在/opt/palworld下存档路径、备份目录和日志目录都从这一层开始维护结构清晰。切换用户后可以先确认当前身份id预期输出中 uid 对应的用户名是 steam。如果执行命令后发现当前用户仍然是某个其他账号说明没有正确切换后续安装文件的所有者会混乱。3. 使用 SteamCMD 安装幻兽帕鲁服务器端3.1 SteamCMD 的下载和解压SteamCMD 是 Valve 提供的命令行客户端用于在服务器上拉取 Steam 游戏内容。下载并解压到/opt/palworldcd /opt/palworld curl -sL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz -o steamcmd_linux.tar.gz tar -xzf steamcmd_linux.tar.gz rm -f steamcmd_linux.tar.gz如果服务器到官方 CDN 的下载速度慢可以把curl换成wget。解压完成后目录里应有steamcmd.sh和linux32目录。确认文件存在ls -lah /opt/palworld/steamcmd.sh3.2 拉取 Palworld 专用服务器内容Palworld 专用服务器在 SteamCMD 中的 App ID 是 2394010。执行以下命令开始安装cd /opt/palworld ./steamcmd.sh login anonymous force_install_dir /opt/palworld/PalServer app_update 2394010 validate quit逐段解释这条命令login anonymous匿名登录 Steam。专用服务器内容不需要游戏账号也不需要购买凭证。force_install_dir /opt/palworld/PalServer把所有内容强制安装到指定目录。app_update 2394010安装或更新 App ID 为 2394010 的内容也就是 Palworld Dedicated Server。validate校验已有文件完整性。下载中断、磁盘写入异常等情况都能在下一轮安装时自动补齐。quit安装完成后退出 SteamCMD。首次安装会下载约 10GB 级别的服务端数据时间取决于服务器带宽。安装完成后看到Success! App 2394010 already up to date或正常退出的提示说明安装成功。检查安装目录ls /opt/palworld/PalServer/预期能看到PalServer.sh、Pal、steamapps等文件或目录。3.3 第一次启动先验证服务端能跑起来在修改任何配置之前先用默认配置启动一次cd /opt/palworld/PalServer ./PalServer.sh启动过程会初始化世界数据生成存档目录。保持运行几十秒看到服务端输出类似Server is Running的日志后按Ctrl C停止。这次启动的主要目的是让服务端自动生成目录结构和配置模板尤其是Pal/Saved/Config/LinuxServer/PalWorldSettings.ini。如果直接手动创建配置文件漏掉字段或写错格式后面排查起来会很痛苦。第一次启动后你会发现/opt/palworld/PalServer/ PalServer.sh Pal/ Saved/ Config/LinuxServer/PalWorldSettings.ini SaveGames/ Logs/这里要特别提醒如果刚才使用了 root 用户启动过生成的文件所有者会是 root之后再切回 steam 用户服务端可能因为没有写权限而报错。正确做法是全程以 steam 用户启动或者启动前执行一次sudo chown -R steam:steam /opt/palworld修正所有权。4. 配置 PalWorldSettings.ini一份参数一份责任4.1 配置文件位置和生成逻辑Palworld 服务端的实际配置位于/opt/palworld/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini服务端安装包中还有一个模板文件DefaultPalWorldSettings.ini。第一次启动生成 PalWorldSettings.ini 时如果内容不完整或全是空行可以从模板复制一份再修改cp /opt/palworld/PalServer/DefaultPalWorldSettings.ini /opt/palworld/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini修改前先理解文件结构。PalWorldSettings.ini 的实际生效内容被包在一对括号里外层由[/Script/Pal.PalGameWorldSettings]标记里面是OptionSettings(...)结构。例如[/Script/Pal.PalGameWorldSettings] OptionSettings(DifficultyNone,ExpRate1.000000,PalCaptureRate1.000000,ServerNameDefault Palworld Server)所有键值对用英文逗号分隔双引号用于包裹文本值。不要移除OptionSettings(...)的外层结构也不要只保留其中几个字段。保险做法是从模板复制完整内容在完整内容上改参数。4.2 核心参数说明与推荐值以下参数是搭建小团队服务器时最常调整的项参数默认值含义推荐值ServerNameDefault Palworld Server服务器名称显示在 Steam 列表改成自己的服务器名ServerDescription空服务器描述可填写规则说明ServerPassword空玩家连接密码留空则无密码小团队建议留空或设简单密码AdminPassword空管理员密码用于 RCON 管理必须改成强密码ServerPlayerMaxNum32最大玩家数按实际人数设置16 或 32PublicPort8211游戏 UDP 端口一般保持 8211PublicIP空公网 IP一般留空自动识别多网卡或 NAPT 环境再手动指定RCONEnabledFalse是否开启 RCON 远程管理True配合管理脚本使用RCONPort25575RCON TCP 端口保持 25575DifficultyNone服务器难度None 为常规难度ExpRate1.000000经验倍率团队服可调到 2 或 3PalCaptureRate1.000000帕鲁捕捉率倍率休闲服可调到 1.5 或 2PalSpawnNumRate1.000000帕鲁刷新数量倍率调高会明显增加服务器负载WorkSpeedRate1.000000工作速度倍率建议 1.5 到 2DeathPenalty按模板默认死亡掉落规则看团队偏好休闲服可调低修改配置的推荐方式是保留模板中所有字段只改其中的值。例如把服务器名、管理员密码、经验倍率和人数上限改掉[/Script/Pal.PalGameWorldSettings] OptionSettings(DifficultyNone,ExpRate2.000000,PalCaptureRate1.500000,PalSpawnNumRate1.500000,WorkSpeedRate2.000000,DeathPenaltyItem,ServerName我的帕鲁服务器,ServerDescription朋友联机专用,AdminPassword改成强密码,ServerPassword,PublicPort8211,PublicIP,RCONEnabledTrue,RCONPort25575,ServerPlayerMaxNum16)这里没有列出全部字段实际文件里比这长很多。所以落地时从模板复制出来的文件要完整保留不要删字段。4.3 修改配置后如何让参数生效注意PalWorldSettings.ini 只在服务端启动时读取一次修改后必须重启服务才能生效。如果已经配置了 systemd 服务sudo systemctl restart palworld如果当前还是前台运行模式就按Ctrl C停掉进程后重新执行./PalServer.sh。验证配置是否生效最直接的方式是进入游戏连接服务器查看服务器列表里的名称和倍率表现。修改连接密码后要特别注意客户端里保存的旧密码会被缓存老玩家需要先删除服务器记录再重新添加否则会一直提示密码错误。5. 用 systemd 托管服务解决“突然掉线”和“自动恢复”5.1 为什么不能只用 nohup 方式长期运行不少教程会让玩家用这种命令后台启动nohup ./PalServer.sh pal.log 21 它在一次临时测试里够用但进入生产环境后有明显问题。首先进程崩溃后没有人会把它拉起来玩家在游戏里会看到“服务器连接已断开”而主机使用者可能还在睡觉。其次没有开机自启云主机一旦因维护或故障重启所有玩家只能干等。再次日志管理混乱nohup.out或重定向日志不会自动切割排错时很难定位问题发生的时间。systemd 可以解决这三个问题守护进程、崩溃自动拉起、统一日志查看。5.2 编写 Palworld 服务单元文件创建服务文件/etc/systemd/system/palworld.service[Unit] DescriptionPalworld Dedicated Server Wantsnetwork-online.target Afternetwork-online.target [Service] Typesimple Usersteam Groupsteam WorkingDirectory/opt/palworld/PalServer ExecStart/opt/palworld/PalServer/PalServer.sh Restarton-failure RestartSec10 LimitNOFILE1048576 [Install] WantedBymulti-user.target保存后执行sudo systemctl daemon-reload sudo systemctl enable --now palworld sudo systemctl status palworldenable --now的含义是设置开机自启并立即启动服务。Restarton-failure让服务端在异常退出时自动重启RestartSec10表示等待 10 秒后再拉起避免快速循环重启把系统负载打满。LimitNOFILE提高文件描述符上限防止长时间运行后出现句柄不足。5.3 查看服务状态和日志服务运行后查看实时状态systemctl status palworld查看日志journalctl -u palworld -f-f参数会持续跟踪日志输出适合在玩家反馈进不去的时候实时观察。日志中可以关注几个关键词Server is Running服务端正常启动。Port 8211监听端口是否正常。Save complete自动保存是否执行。Out of memory是否触发了 OOM。Palworld 服务端有一个不能忽略的现象运行数小时后内存占用会缓慢上涨这不是当前版本独有的问题而是服务端长期运行后比较常见的表现。即使没到 OOM也建议每天固定一个低峰时段重启一次服务释放内存sudo crontab -u root -e添加一行凌晨 5 点重启0 5 * * * /usr/bin/systemctl restart palworld执行前在游戏群里公告一下避免有玩家正在关键战斗时被踢下线。6. 低延迟判断与网络调优从物理距离到端口安全组6.1 延迟从哪里来如何量化测试联机延迟的第一决定因素是物理距离。国内玩家连国内服务器延迟通常在 20 到 60ms跨海连接美国或欧洲服务器基础延迟就可能超过 150ms这还不算路由绕路和丢包。所以服务器地域选择不能只看价格要看核心玩家群体在哪个城市、哪个运营商。在部署前或部署后先用 ping 和 mtr 做一次基础链路测试ping -c 10 服务器IP mtr -rw 服务器IPping 给出平均延迟mtr 能看到每一跳的延迟和丢包率。如果到达目标前的最后一跳没有明显丢包只是中间某几个公有网络节点丢包往往说明线路存在绕路或拥塞可以尝试换一个地域或向服务商反馈。6.2 防火墙和安全组要放行哪些协议Palworld 默认游戏端口是 UDP 8211这个端口负责承载玩家连接和游戏数据。RCON 默认端口是 TCP 25575只在需要远程管理时开放。主机防火墙放行sudo ufw allow 8211/udp sudo ufw allow 25575/tcp云厂商控制台的安全组也要放行相同端口。这里最容易踩的坑是只放行 TCP 8211忘了 UDP。游戏走的是 UDPTCP 放行得再完整也连不上。验证进程确实在监听sudo ss -ulpn | grep 8211输出里有udp和0.0.0.0:8211说明监听正常。如果没有输出先重启服务再检查是否被其他进程占用端口。6.3 玩家侧的网络排查顺序玩家反馈“看得到服务器但连不上”时按顺序排查。第一步确认 UDP 可达nc -uvz 服务器IP 8211需要系统里有 netcat。nc -uvz对 UDP 的可达性判断不一定完全准确但能大致验证端口是否响应。第二步确认版本一致客户端版本更新后服务端没有同步更新也会出现转圈或版本不匹配。第三步检查 IPv4/IPv6 问题。部分云主机默认启用了 IPv6但游戏进程绑定的是 IPv4。如果玩家通过 IPv6 地址解析到服务器安全组没有放行对应协议时连接就会卡住。遇到这种情况可以在 PalWorldSettings.ini 中手动指定PublicIP为 IPv4 地址强制玩家走 IPv4 连接。7. 常见故障清单连接超时、版本不匹配和内存泄漏7.1 按故障现象快速定位现象可能原因检查方式处理建议Steam 列表里看不到服务器UDP 8211 未放行sudo ss -ulpn | grep 8211检查云安全组和 UFW能看到但连接超时版本不一致或网络丢包查看服务端日志版本号mtr 测链路更新服务端或换线路连接后提示密码错误客户端缓存了旧密码游戏内删除服务器记录重新添加服务器并输入新密码服务启动后很快退出端口被占用sudo ss -ulpn | grep 8211杀掉旧进程或改 PublicPort服务器越跑越卡内存不足free -hjournalctl -k定期重启、加内存或加 swap7.2 存档丢失与 OOM 的典型案例Palworld 服务端在内存不足时很容易被 Linux 的 OOM Killer 杀死。判断是否被 OOM 杀掉dmesg | grep -i oom或者journalctl -k | grep -i killed如果日志里出现Out of memory: Kill process并指向 PalServer 相关进程说明内存配置确实不够。此时加 swap 只能是缓冲手段不能解决根本问题sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab注意swap 只能作为缓冲不能替代物理内存扩容。固定团队长期开服建议物理内存直接上 16GB。除了内存还要养成备份习惯。存档路径在/opt/palworld/PalServer/Pal/Saved/SaveGames备份时要把整个 SaveGames 目录打包不要只复制部分文件。7.3 版本更新后客户端连不上怎么办Steam 客户端推送幻兽帕鲁更新后服务端版本如果还是旧的玩家连接时可能出现“版本不匹配”或者无限转圈。服务端的更新流程是sudo systemctl stop palworld cd /opt/palworld sudo -u steam ./steamcmd.sh login anonymous force_install_dir /opt/palworld/PalServer app_update 2394010 validate quit sudo systemctl start palworld更新前建议先备份存档因为某些服务端版本更新会改动世界数据格式。更新后如果配置模板中出现了新字段需要把新字段同步到 PalWorldSettings.ini否则服务器可能继续按旧配置运行。8. 生产环境的最后一步备份、更新、RCON 和持续优化8.1 自动备份脚本与恢复演练备份脚本可以放在/opt/palworld/backup_palworld.sh#!/bin/bash set -euo pipefail SAVE_DIR/opt/palworld/PalServer/Pal/Saved/SaveGames BACKUP_BASE/backup/palworld DATE$(date %F_%H%M%S) mkdir -p $BACKUP_BASE tar -czf $BACKUP_BASE/palworld_${DATE}.tar.gz -C $SAVE_DIR . find $BACKUP_BASE -name palworld_*.tar.gz -mtime 7 -delete echo backup ok: $BACKUP_BASE/palworld_${DATE}.tar.gz加入定时任务chmod x /opt/palworld/backup_palworld.sh sudo crontab -u root -e添加一行凌晨 4 点 30 分执行30 4 * * * /opt/palworld/backup_palworld.sh恢复时先停服再解压最后启动sudo systemctl stop palworld tar -xzf /backup/palworld/palworld_20250102_043000.tar.gz -C /opt/palworld/PalServer/Pal/Saved/SaveGames/ sudo systemctl start palworld注意不要省略停服这一步。进程正在运行时直接覆盖存档很容易出现存档文件不一致恢复后世界状态错乱。备份方案可以简单但要至少演练一次完整恢复流程。8.2 服务端更新流程长期运行的服务端需要固定更新节奏。推荐流程是在游戏群公告停机时间。systemctl stop palworld停止服务。执行自动备份脚本。用 SteamCMD 执行app_update 2394010 validate。检查Pal/Saved/Config/LinuxServer/PalWorldSettings.ini是否缺少新字段。systemctl start palworld启动服务。用客户端连接验证版本号。8.3 用 RCON 远程管理服务器开启 RCON 后管理员可以在不进入游戏的情况下执行部分管理操作。配置中确认RCONEnabledTrue RCONPort25575 AdminPassword你的强密码常用命令包括命令作用ShowPlayers查看当前在线玩家Save立即保存世界Broadcast 维护公告向全服广播消息KickPlayer SteamID踢出指定玩家BanPlayer SteamID封禁指定玩家DoExit保存并退出服务端RCON 客户端工具很多但核心都是一样的连接 127.0.0.1:25575用 AdminPassword 认证发送命令文本。这里要强调RCON 端口不要直接暴露到公网最佳做法是限制安全组只允许管理机 IP 访问或者通过 SSH 隧道访问否则管理员密码一旦泄露攻击者可以直接执行关闭服务器等操作。8.4 上线前检查清单与长期运维计划在正式拉朋友进服之前把下面这些项逐条过一遍服务是否使用非 root 的 steam 用户运行。是否设置了 systemd 开机自启systemctl is-enabled palworld。UDP 8211 是否已在云安全组和主机防火墙放行。RCON 端口是否只对内网或管理 IP 开放。AdminPassword 和 ServerPassword 是否已从默认值改掉。是否配置了每日固定时间的服务重启。是否配置了自动备份并至少演练过一次恢复。磁盘空间是否足够日志和备份是否有多级清理策略。系统是否关闭了不必要的公网端口SSH 是否使用密钥登录。Palworld 专用服务器真正考验人的地方不在部署而在长期运维。部署一次可能只需要半小时但把稳定性、备份、更新节奏都建立起来需要提前做规划。建议新玩家先跑通部署流程在试用实例上验证一次完整闭环确认要长期运营后再把 systemd、每日重启和自动备份这三项基础运维补齐。这样得到的才是一台低延迟、少掉线、数据安全的幻兽帕鲁专用联机服务器。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进