想和朋友长期玩《Palworld / 幻兽帕鲁》,自建专用服务器通常比让某位玩家一直开着游戏更稳定,也能自己控制人数、密码、掉落倍率、存档和更新时间。真正容易踩坑的地方并不是“把服务端下载下来”,而是内存不足、8211 端口协议开错、改错配置文件、跨平台入口选错,以及更新前没有可恢复的备份。
本文以 Ubuntu 24.04 LTS、官方 SteamCMD 服务端和 systemd 为例,从零完成安装、端口放行、PalWorldSettings.ini 配置、跨平台连接、备份恢复和更新。命令适合一台干净的 Linux VPS,也明确区分了普通专用服务器、社区服务器和官方 Docker 镜像。
Pocketpair 当前官方要求给出的基线是 4 核以上 CPU、16GB 内存和快速 SSD;8GB 虽然可能启动,但内存不足会提高崩溃概率,官方对较大服务器建议 32GB 以上。Palworld 不需要独立显卡,购买时应优先考虑稳定的 CPU 性能、真实可用内存、NVMe 磁盘和 UDP 网络质量。
下面是便于购买 VPS 的实际起步建议,不是官方并发保证:
| 使用规模 | 建议 VPS 起点 | 磁盘 | 说明 |
|---|---|---|---|
| 4-8 人私人服 | 4 个高性能 vCPU、16GB 内存 | 80GB NVMe | 默认倍率、少量建筑 |
| 8-16 人长期服 | 6 个高性能 vCPU、24GB 内存 | 120GB NVMe | 较多基地和长期存档 |
| 16-32 人社区服 | 8 核以上、32GB+ 内存 | 160GB+ NVMe | 公开列表、活跃玩家、较大存档 |
机房应靠近主要玩家,并确认服务商允许游戏服务器、支持 UDP、提供足够流量和合理的 DDoS 防护。公开服还要问清楚被攻击后的封禁策略与换 IP 成本。需要比较线路和配置时,可先看游戏服务器 VPS 推荐与配置指南。
| 方案 | 优点 | 代价 | 适合谁 |
|---|---|---|---|
| SteamCMD + systemd | 路径直观、依赖少、方便定位日志和存档 | 主要通过 SSH 管理 | 单台 VPS、一个 Palworld 实例 |
| 官方 Docker 镜像 | 官方维护镜像和 Compose 示例,迁移方便 | 需要理解卷、镜像标签和容器更新 | 已经标准化使用 Docker 的团队 |
| Pterodactyl | Web 面板、账户、配额、多实例管理 | 需要额外维护 Panel、Wings 和数据库 | 托管多个游戏服或多人运维 |
Pocketpair 已提供官方 Docker 镜像,但明确不建议在 Windows/macOS 的 Docker Desktop 上运行,原因是磁盘 I/O 可能带来存档损坏和故障风险。本文选择 Linux 原生 SteamCMD,路径更透明,也更适合第一次自建。如果你要在同一台机器管理 Minecraft、Rust、Palworld 等多个实例,可改用VPS 搭建 Pterodactyl 游戏服务器面板;想比较另一种游戏服管理方式,也可查看Rust 专用服务器 LinuxGSM 教程。
最小可用部署只需要公开一个游戏端口:
| 端口 | 协议 | 用途 | 公网策略 |
|---|---|---|---|
| 8211 | UDP | 玩家连接、默认游戏监听端口 | 对玩家开放 |
| 8212 | TCP | REST API 默认端口 | 不对公网开放,只允许本机或管理内网 |
| 25575 | TCP | 旧 RCON 默认端口 | 不建议新部署使用 |
官方文档已把 RCON 标记为弃用,并说明未来更新会停止支持。新服不要再围绕 RCON 搭建管理流程;确实需要远程管理时,优先使用 REST API,并把它限制在 127.0.0.1、局域网或 WireGuard/Tailscale 管理网络内。REST API 是管理接口,直接暴露到互联网可能导致未授权操作。
服务器类型也会影响加入方式:
- 普通专用服务器:玩家通过公网 IP 和端口加入,适合 Steam 玩家和小圈子。
- 社区服务器:启动时加入
-publiclobby,服务器会出现在游戏内列表。Xbox 或 PS5 玩家要加入自建服时,需要使用社区服务器入口。 - 当前官方配置的默认跨平台列表是 Steam、Xbox、PS5 和 Mac;不要再使用已经失效的
AllowConnectPlatform,应使用CrossplayPlatforms。
先用有 sudo 权限的管理员账号更新系统并安装依赖:
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl ca-certificates tar lib32gcc-s1 ufw
创建不用于日常登录的服务账号,并准备 SteamCMD 与 Palworld 目录:
sudo adduser --disabled-password --gecos "" palworld
sudo install -d -o palworld -g palworld /opt/steamcmd
sudo install -d -o palworld -g palworld /opt/palworld
sudo -iu palworld
不要以 root 身份长期运行游戏服务端。独立用户能限制文件权限,也能避免服务端进程直接拥有整台 VPS 的管理权限。
以下命令以 palworld 用户执行。先从 Valve 的 Steam CDN 下载 Linux 版 SteamCMD:
cd /opt/steamcmd
curl -fsSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz -o steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
./steamcmd.sh +quit
然后匿名登录并安装 Palworld Dedicated Server。官方服务端 App ID 是 2394010:
/opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/palworld \
+login anonymous \
+app_update 2394010 validate \
+quit
出现 Success! App '2394010' fully installed. 后检查核心文件:
test -x /opt/palworld/PalServer.sh
ls -lah /opt/palworld
validate 适合首次安装或修复损坏文件。日常更新可以省略它,避免每次都完整校验并增加磁盘读写。
配置目录只有在服务端至少启动一次后才会生成。先前台运行:
cd /opt/palworld
./PalServer.sh -port=8211 -players=16 -logformat=text
等待日志进入正常运行状态后按 Ctrl+C 停止。确认 Linux 配置目录已经存在:
test -d /opt/palworld/Pal/Saved/Config/LinuxServer
从官方默认模板复制一份真实配置:
cp /opt/palworld/DefaultPalWorldSettings.ini \
/opt/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
chmod 600 /opt/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
真正生效的是 Pal/Saved/Config/LinuxServer/PalWorldSettings.ini。直接编辑根目录的 DefaultPalWorldSettings.ini 不会改变服务器设置,这是最常见的“改了配置却不生效”原因。
先生成两个不同的随机密码,并保存到密码管理器:
openssl rand -base64 32
openssl rand -base64 32
第一个可作为玩家加入密码,第二个作为管理员密码。编辑真实配置文件:
nano /opt/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
该文件的主要设置集中在一行 OptionSettings=(...) 中。不要删掉模板里的其他键,也不要把示例拆成多行;在现有行中找到并修改这些字段:
ServerName="My Palworld Server"
ServerDescription="Private server for friends"
ServerPassword="替换为玩家密码"
AdminPassword="替换为不同的管理员密码"
ServerPlayerMaxNum=16
CrossplayPlatforms=(Steam,Xbox,PS5,Mac)
bIsUseBackupSaveData=True
RESTAPIEnabled=True
RESTAPIPort=8212
RCONEnabled=False
保存后检查关键字段确实存在,但不要把带密码的整行复制到工单、聊天或公开仓库:
grep -oE 'ServerName="[^"]*"|ServerPlayerMaxNum=[0-9]+|CrossplayPlatforms=\([^)]*\)|bIsUseBackupSaveData=(True|False)|RESTAPIEnabled=(True|False)|RCONEnabled=(True|False)' \
/opt/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
bIsUseBackupSaveData=True 会让服务端在存档目录中创建 backup 子目录,并按官方策略保留多档短期备份。它会增加磁盘负载,因此仍应使用 NVMe,并额外保留异机备份。
退出 palworld 用户回到管理员账号:
exit
sudo nano /etc/systemd/system/palworld.service
写入以下单实例服务:
[Unit]
Description=Palworld Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=palworld
Group=palworld
WorkingDirectory=/opt/palworld
ExecStart=/opt/palworld/PalServer.sh -port=8211 -players=16 -logformat=text
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
TimeoutStopSec=120
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
官方参数页提醒:从 Palworld 1.0 开始,不设置旧的 -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS 组合反而可能获得更好性能,因此不要照搬旧教程。只有压测证明有收益时再调整线程参数。
加载、启动并检查:
sudo systemctl daemon-reload
sudo systemctl enable --now palworld
sudo systemctl status palworld --no-pager
sudo journalctl -u palworld -n 100 --no-pager
确认 8211/UDP 和本机管理端口正在监听:
sudo ss -lunp | grep ':8211'
sudo ss -lntp | grep ':8212'
如果暂时不使用 REST API,把 RESTAPIEnabled 改回 False,重启服务即可减少一个管理面。
先保持当前 SSH 会话不要关闭,并放行 SSH 与游戏 UDP 端口:
sudo ufw allow OpenSSH
sudo ufw allow 8211/udp
sudo ufw deny 8212/tcp
sudo ufw deny 25575/tcp
sudo ufw status numbered
sudo ufw enable
云厂商安全组也要放行 8211/UDP。只开放 TCP 8211 没有用;云安全组和 UFW 任意一层遗漏,外部玩家都无法连接。
REST API 即使开启,也不要在云安全组中放行 8212。需要从个人电脑管理时,先建立 WireGuard、Tailscale 或 SSH 隧道,再通过私网或本机地址访问。普通 Cloudflare 橙云代理也不能直接代理 Palworld 的 UDP 游戏流量;域名 A 记录应保持 DNS only,或直接使用公网 IP。
Steam 玩家小范围使用时,保持当前 systemd 启动命令即可,玩家通过公网 IP 和端口加入:
203.0.113.20:8211
把示例 IP 换成 VPS 的真实公网 IPv4。若要让 Xbox 或 PS5 玩家从游戏内列表找到服务器,把 ExecStart 改成社区服务器模式:
ExecStart=/opt/palworld/PalServer.sh -port=8211 -players=16 -publiclobby -publicip=203.0.113.20 -publicport=8211 -logformat=text
然后重新加载并重启:
sudo systemctl daemon-reload
sudo systemctl restart palworld
sudo journalctl -u palworld -n 100 --no-pager
-publicport 只声明社区列表显示的外部端口,不会改变服务端真实监听端口;真正监听端口仍由 -port 决定。服务器列表注册需要时间,如果列表暂时搜不到,先检查日志、UDP 防火墙和公网 IP,不要盲目同时开放一串来源不明的端口。
官方 REST API 支持查询服务器信息、玩家、设置与指标,也能保存世界、广播、踢人、封禁和关服。它使用 HTTP Basic Auth,但官方文档没有在通用说明页固定写死用户名,因此应以当前服务端版本和实际客户端配置为准,不要把第三方教程中的默认用户名当成永远不变的事实。
先只在 VPS 本机测试接口是否回应:
curl -i http://127.0.0.1:8212/v1/api/info
返回 401 Unauthorized 反而说明接口存在且认证生效。配置管理脚本时,让它读取受限的环境文件或密码管理器,不要把管理员密码直接写进 shell 历史。运维程序应先调用官方 /save 保存世界,再调用 /shutdown 优雅关服;不要默认使用 /stop 强制终止。
如果你的需求只是定期更新和备份,完全可以不开放 REST API,仅通过 SSH、systemd 和停服备份完成,不必为了“有面板”增加公网攻击面。
Palworld 的内置备份适合快速回滚,但不能替代 VPS 故障、误删和磁盘损坏场景下的异机备份。建议同时使用:
bIsUseBackupSaveData=True生成短周期内部备份。- 停服后打包整个
Pal/Saved,再同步到另一台机器或对象存储。
创建本机备份目录:
sudo install -d -m 750 -o root -g palworld /var/backups/palworld
在维护窗口停服并打包存档、配置和内部备份:
sudo systemctl stop palworld
sudo tar -C /opt/palworld/Pal -czf \
"/var/backups/palworld/palworld-$(date -u +%Y%m%dT%H%M%SZ).tar.gz" \
Saved
sudo systemctl start palworld
sudo systemctl is-active palworld
列出压缩包并抽查内容:
sudo ls -lh /var/backups/palworld
sudo tar -tzf /var/backups/palworld/palworld-YYYYMMDDTHHMMSSZ.tar.gz | head -n 30
把示例文件名换成实际文件。备份至少要异机保存一份,并定期做恢复演练。需要把 restic、rclone、数据库和 Docker 一起纳入灾备时,可参考VPS 备份与恢复演练指南。
恢复前先停止服务并检查压缩包,绝不能直接覆盖唯一一份现有世界:
sudo systemctl stop palworld
sudo tar -tzf /var/backups/palworld/palworld-YYYYMMDDTHHMMSSZ.tar.gz | head -n 30
sudo mv /opt/palworld/Pal/Saved \
"/opt/palworld/Pal/Saved.before-restore-$(date -u +%Y%m%dT%H%M%SZ)"
sudo tar -C /opt/palworld/Pal -xzf \
/var/backups/palworld/palworld-YYYYMMDDTHHMMSSZ.tar.gz
sudo chown -R palworld:palworld /opt/palworld/Pal/Saved
sudo systemctl start palworld
随后检查服务、日志和世界是否正确:
sudo systemctl status palworld --no-pager
sudo journalctl -u palworld -n 150 --no-pager
sudo find /opt/palworld/Pal/Saved/SaveGames -maxdepth 3 -type f | head
进入游戏确认角色、公会、基地和世界日期后,才算恢复成功。仅仅“压缩包能解压”不能证明业务可恢复。确认无误前保留 Saved.before-restore-*,不要急着删除。
客户端与服务端版本不一致时,玩家通常无法正常加入。更新前应先通知玩家、保存世界并备份,再运行 SteamCMD:
sudo systemctl stop palworld
sudo tar -C /opt/palworld/Pal -czf \
"/var/backups/palworld/palworld-before-update-$(date -u +%Y%m%dT%H%M%SZ).tar.gz" \
Saved
sudo -u palworld /opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/palworld \
+login anonymous \
+app_update 2394010 \
+quit
sudo systemctl start palworld
更新后立刻检查:
sudo systemctl is-active palworld
sudo journalctl -u palworld -n 150 --no-pager
sudo ss -lunp | grep ':8211'
不要在进程运行时覆盖二进制,也不要设置“Steam 一发布更新就立刻无人值守重启”。更稳妥的做法是在固定维护窗口执行:提前广播、确认无人在线、备份、停止、更新、启动、验证,再允许玩家进入。
先看真实资源,而不是凭“vCPU 数量”猜测:
free -h
df -h /opt/palworld /var/backups/palworld
uptime
ps -C PalServer-Linux-Test -o pid,%cpu,%mem,rss,etime,cmd
sudo journalctl -u palworld --since "30 minutes ago" --no-pager
长期观察这些信号:
- 内存持续逼近上限、日志出现 OOM 或进程被系统杀死:升级内存,不要依赖 swap 硬扛。
- 单核长期满载但总体 CPU 不高:优先换更强单核的节点,而不是只增加慢核数量。
- 玩家集中在大型基地时延迟上升:减少过度建筑、基地工作帕鲁和高负载倍率,并在低峰期重启。
- 存档和内部备份快速增长:扩大磁盘、设置外部备份保留策略,并监控 inode 与剩余空间。
- 网络抖动或丢包:迁移到更靠近玩家、UDP 质量和防护更稳定的机房。
公开服不要一开始就把玩家上限设到 32。先按 8-16 人运行一周,记录高峰内存、CPU、存档增长和延迟,再逐步扩容。
依次确认服务进程、UDP 监听、UFW 和云安全组:
sudo systemctl status palworld --no-pager
sudo ss -lunp | grep ':8211'
sudo ufw status numbered
sudo journalctl -u palworld -n 200 --no-pager
最常见原因是把 8211 开成 TCP、云安全组漏配 UDP、服务只启动后立即崩溃,或玩家使用了错误公网 IP。
普通专用服务器不会自动成为社区服务器。要进入公共列表,需要 -publiclobby;自动识别公网地址失败时,再显式添加正确的 -publicip 和 -publicport。Xbox 与 PS5 玩家无法像 Steam 玩家一样依赖直接 IP 加入时,应使用社区服务器列表。
检查是否编辑了真实文件:
/opt/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
如果改的是 DefaultPalWorldSettings.ini,不会生效。还要确认 OptionSettings=(...) 语法没有被拆坏,并在修改后重启服务。命令行中的 -port、-players 等参数会覆盖对应设置,排查时要同时检查 systemd 的 ExecStart。
先保留存档,重新校验服务端文件:
sudo systemctl stop palworld
sudo -u palworld /opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/palworld \
+login anonymous \
+app_update 2394010 validate \
+quit
sudo systemctl start palworld
sudo journalctl -u palworld -n 200 --no-pager
不要删除 Pal/Saved 来“重装”,那里面包含世界、玩家与配置。客户端也必须完成对应版本更新。
查看内核是否记录 OOM:
sudo journalctl -k --since "24 hours ago" | grep -iE 'oom|out of memory|killed process'
sudo systemctl show palworld -p NRestarts -p ExecMainStatus
如果是内存不足,先降低玩家上限和负载,再升级到 24GB 或 32GB。8GB “能启动”不代表能稳定承载长期世界。
- 服务端以独立
palworld用户运行,不使用 root。 -
systemctl is-active palworld返回active。 -
ss能看到8211/UDP监听。 - 云安全组与 UFW 都只公开需要的
8211/UDP。 - REST API 8212 与旧 RCON 25575 没有暴露到公网。
- 修改的是 LinuxServer 下的真实
PalWorldSettings.ini。 - 玩家密码和管理员密码不同,且未出现在 shell 历史或公开文件中。
- Steam 玩家能用公网 IP 加入;Xbox/PS5 需求已切换社区服务器模式。
- 内置备份已开启,并有一份异机备份。
- 已实际做过一次恢复并进入游戏核对世界数据。
- 更新流程包含通知、备份、停服、更新、启动和日志验证。
在 VPS 上搭建 Palworld 专用服务器,核心不是一次启动成功,而是把 16GB 以上内存、8211/UDP、真实配置路径、跨平台入口、systemd 守护、双层备份和可控更新一起做好。小型私人服用 Ubuntu 24.04、SteamCMD 和 systemd 已经足够;多实例或多人管理再考虑 Pterodactyl,已有成熟容器规范的团队则可选 Pocketpair 官方 Docker 镜像。
上线后先用 8-16 人规模观察一周,再根据峰值内存、单核负载、存档增长和网络质量扩容。只要 REST API 不裸露公网、更新前先备份、恢复流程真正演练过,这台服务器就具备长期运行的基础。
