幻兽帕鲁联机服务器的核心矛盾,是官方服务器和 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 掉档。推荐配置如下:
| 项目 | 最低要求 | 推荐配置 | 说明 |
|---|---|---|---|
| CPU | 4 核 | 4 核以上 | 服务端吃单核性能,主频建议 2.5GHz 以上 |
| 内存 | 8GB | 16GB | 8GB 只适合极少数玩家,20 人建议 16GB |
| 系统盘 | 20GB | 40GB | 服务端本体加存档备份,空间要留出余量 |
| 带宽 | 5Mbps | 10Mbps | 游戏联机带宽占用不大,重点看延迟和丢包 |
| 操作系统 | Ubuntu 22.04 | Ubuntu 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 lib32stdc++6第一行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/palworld:
cd /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=(Difficulty=None,ExpRate=1.000000,PalCaptureRate=1.000000,ServerName="Default Palworld Server")所有键值对用英文逗号分隔,双引号用于包裹文本值。不要移除OptionSettings=(...)的外层结构,也不要只保留其中几个字段。保险做法是从模板复制完整内容,在完整内容上改参数。
4.2 核心参数说明与推荐值
以下参数是搭建小团队服务器时最常调整的项:
| 参数 | 默认值 | 含义 | 推荐值 |
|---|---|---|---|
| ServerName | "Default Palworld Server" | 服务器名称,显示在 Steam 列表 | 改成自己的服务器名 |
| ServerDescription | 空 | 服务器描述 | 可填写规则说明 |
| ServerPassword | 空 | 玩家连接密码,留空则无密码 | 小团队建议留空或设简单密码 |
| AdminPassword | 空 | 管理员密码,用于 RCON 管理 | 必须改成强密码 |
| ServerPlayerMaxNum | 32 | 最大玩家数 | 按实际人数设置,16 或 32 |
| PublicPort | 8211 | 游戏 UDP 端口 | 一般保持 8211 |
| PublicIP | 空 | 公网 IP,一般留空自动识别 | 多网卡或 NAPT 环境再手动指定 |
| RCONEnabled | False | 是否开启 RCON 远程管理 | True,配合管理脚本使用 |
| RCONPort | 25575 | RCON TCP 端口 | 保持 25575 |
| Difficulty | None | 服务器难度 | None 为常规难度 |
| ExpRate | 1.000000 | 经验倍率 | 团队服可调到 2 或 3 |
| PalCaptureRate | 1.000000 | 帕鲁捕捉率倍率 | 休闲服可调到 1.5 或 2 |
| PalSpawnNumRate | 1.000000 | 帕鲁刷新数量倍率 | 调高会明显增加服务器负载 |
| WorkSpeedRate | 1.000000 | 工作速度倍率 | 建议 1.5 到 2 |
| DeathPenalty | 按模板默认 | 死亡掉落规则 | 看团队偏好,休闲服可调低 |
修改配置的推荐方式是保留模板中所有字段,只改其中的值。例如把服务器名、管理员密码、经验倍率和人数上限改掉:
[/Script/Pal.PalGameWorldSettings] OptionSettings=(Difficulty=None,ExpRate=2.000000,PalCaptureRate=1.500000,PalSpawnNumRate=1.500000,WorkSpeedRate=2.000000,DeathPenalty=Item,ServerName="我的帕鲁服务器",ServerDescription="朋友联机专用",AdminPassword="改成强密码",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=True,RCONPort=25575,ServerPlayerMaxNum=16)这里没有列出全部字段,实际文件里比这长很多。所以落地时,从模板复制出来的文件要完整保留,不要删字段。
4.3 修改配置后如何让参数生效
注意:PalWorldSettings.ini 只在服务端启动时读取一次,修改后必须重启服务才能生效。
如果已经配置了 systemd 服务:
sudo systemctl restart palworld如果当前还是前台运行模式,就按Ctrl + C停掉进程后重新执行./PalServer.sh。
验证配置是否生效,最直接的方式是进入游戏连接服务器,查看服务器列表里的名称和倍率表现。修改连接密码后要特别注意:客户端里保存的旧密码会被缓存,老玩家需要先删除服务器记录再重新添加,否则会一直提示密码错误。
5. 用 systemd 托管服务,解决“突然掉线”和“自动恢复”
5.1 为什么不能只用 nohup 方式长期运行
不少教程会让玩家用这种命令后台启动:
nohup ./PalServer.sh > pal.log 2>&1 &它在一次临时测试里够用,但进入生产环境后有明显问题。首先,进程崩溃后没有人会把它拉起来,玩家在游戏里会看到“服务器连接已断开”,而主机使用者可能还在睡觉。其次,没有开机自启,云主机一旦因维护或故障重启,所有玩家只能干等。再次,日志管理混乱,nohup.out或重定向日志不会自动切割,排错时很难定位问题发生的时间。
systemd 可以解决这三个问题:守护进程、崩溃自动拉起、统一日志查看。
5.2 编写 Palworld 服务单元文件
创建服务文件/etc/systemd/system/palworld.service:
[Unit] Description=Palworld Dedicated Server Wants=network-online.target After=network-online.target [Service] Type=simple User=steam Group=steam WorkingDirectory=/opt/palworld/PalServer ExecStart=/opt/palworld/PalServer/PalServer.sh Restart=on-failure RestartSec=10 LimitNOFILE=1048576 [Install] WantedBy=multi-user.target保存后执行:
sudo systemctl daemon-reload sudo systemctl enable --now palworld sudo systemctl status palworldenable --now的含义是设置开机自启并立即启动服务。Restart=on-failure让服务端在异常退出时自动重启,RestartSec=10表示等待 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。游戏走的是 UDP,TCP 放行得再完整也连不上。验证进程确实在监听:
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 -h,journalctl -k | 定期重启、加内存或加 swap |
7.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 后,管理员可以在不进入游戏的情况下执行部分管理操作。配置中确认:
RCONEnabled=True RCONPort=25575 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、每日重启和自动备份这三项基础运维补齐。这样得到的才是一台低延迟、少掉线、数据安全的幻兽帕鲁专用联机服务器。