先确认环境
- 系统
- Windows 64 位或 Linux 64 位
- 推荐规格
- 4 核以上 CPU、16 GB 内存、SSD
- 默认端口
- UDP 8211,可通过启动参数更改
- 公开联机
- 路由器转发 UDP 端口,并允许主机防火墙入站
8 GB 内存可以启动,但官方提示内存不足时更容易崩溃;长期多人服建议预留更多内存与磁盘空间。
8 GB 内存可以启动,但官方提示内存不足时更容易崩溃;长期多人服建议预留更多内存与磁盘空间。
新手可在 Steam 工具库安装 Palworld Dedicated Server。需要自动化管理时,使用 SteamCMD 下载官方 App ID 2394010:
steamcmd +login anonymous +app_update 2394010 validate +quit
下载完成后,先以默认方式启动一次,让配置目录自动生成。
# Windows
cd .\steamapps\common\PalServer
PalServer.exe
# Linux
cd ~/Steam/steamapps/common/PalServer
./PalServer.sh
首次启动后确认控制台没有立即退出,再停止服务器进行配置。不要直接编辑 DefaultPalWorldSettings.ini,该文件不是实际生效文件。
先把默认配置复制到实际配置路径;Windows 与 Linux 的目标目录不同。
# Windows PowerShell
Copy-Item steamapps\common\PalServer\DefaultPalWorldSettings.ini steamapps\common\PalServer\Pal\Saved\Config\WindowsServer\PalWorldSettings.ini
# Linux
cp steamapps/common/PalServer/DefaultPalWorldSettings.ini steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
在复制后的 PalWorldSettings.ini 中,找到既有的 OptionSettings=(...) 内容并修改对应字段。私人服至少应设置 ServerName、ServerPassword、AdminPassword、ServerPlayerMaxNum 和 bIsUseBackupSaveData=True。
bIsUseBackupSaveData 会增加磁盘读写,但能保留服务器自动备份。默认使用 UDP 8211。局域网测试成功后,再在路由器将该 UDP 端口转发到服务器的固定内网 IP,并在 Windows 防火墙或 Linux 防火墙放行同一端口。
# Windows: 16 人私服示例
PalServer.exe -port=8211 -players=16
# Linux: 16 人私服示例
./PalServer.sh -port=8211 -players=16
玩家在游戏服务器列表下方输入 公网 IP:端口 加入。若外网朋友无法连接,优先检查运营商是否提供公网 IPv4、路由器端口转发是否指向固定内网 IP,以及主机防火墙是否已放行 UDP。
只想和熟人通过 IP 加入时,不需要社区服。希望出现在社区服务器列表时,在启动参数中追加 -publiclobby;必要时再使用 -publicip 与 -publicport 手动声明公网地址和端口。
在游戏聊天框中先执行管理员认证,再使用官方管理命令维护服务器:
/AdminPassword <你的管理员密码>
/Save
/Broadcast 服务器将在 60 秒后维护
/Shutdown 60 服务器维护,请稍后重连
更新、迁移或排查前,先执行 /Save,等待写盘完成后使用 /Shutdown 正常关服。不要把强制结束进程作为日常关服方式;它只适合服务器已经无响应的情形。
官方自动备份开启后会在存档目录建立 backup,并按短、中、长周期轮换。它不能替代异机备份:每次大版本更新前,把整个存档目录复制到另一块磁盘或云端,并保留可回退版本。
/Save、/Shutdown 正常关服。steamcmd +login anonymous +app_update 2394010 validate +quit 更新并校验。Docker 只建议熟悉容器与存储挂载的维护者使用。官方提供镜像和 Compose 示例,但同时明确不建议在 Docker Desktop 上部署,因为额外的存储 I/O 开销会增加存档损坏与异常风险。
这一方案适合已经在 Linux 主机上使用 Docker 的维护者。下面的 Compose 文件沿用 SteamCMD 镜像 cm2network/steamcmd:镜像只提供 SteamCMD 运行环境,帕鲁专用服务器仍由 Steam 官方 App ID 2394010 下载。不要在 Windows 或 macOS 的 Docker Desktop 上长期运行存档服,官方提示其存储 I/O 性能可能增加存档损坏和异常风险。
在服务器上创建独立目录,例如 /opt/palworld;以下命令均在该目录执行。./data 是唯一需要保留的数据目录,里面会保存游戏文件、配置和存档,迁移服务器时也应完整复制它。
mkdir -p /opt/palworld
cd /opt/palworld
mkdir -p data
chmod 700 data
在 /opt/palworld/compose.yaml 写入以下内容。它将宿主机的 UDP 8211 映射到容器,并把 ./data 挂载为 Steam 安装目录;不要把 RCON 或 REST API 端口暴露到公网,除非你已额外配置访问控制。
services:
steamcmd:
image: cm2network/steamcmd:latest
stdin_open: true
tty: true
volumes:
- ./data:/home/steam/Steam
restart: always
ports:
- "8211:8211/udp"
command: /home/steam/Steam/steamapps/common/PalServer/PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS 是官方文档列出的多线程启动参数。若要改监听端口或人数,在末行追加 -port=8211 -players=16;端口变化后,Compose 映射、防火墙和路由器转发必须同步修改。
上面的 command 只负责启动已有的服务器程序,首次部署必须先下载。以下命令把游戏安装到已经挂载的 /home/steam/Steam,因此下载结果会保留在宿主机的 data 内。
docker compose run --rm --entrypoint /bin/bash steamcmd -lc '\
~/steamcmd/steamcmd.sh +force_install_dir /home/steam/Steam +login anonymous +app_update 2394010 validate +quit'
docker compose up -d
docker compose logs -f --tail=100
看到服务器正常开始监听后,可按 Ctrl+C 退出日志查看而不停止容器。首次启动会生成 data/steamapps/common/PalServer/Pal/Saved;先确认目录出现且日志没有反复重启,再进行下一步配置。
先使用游戏内 /Save 与 /Shutdown 正常关服,再执行 docker compose down。将默认配置复制到 Linux 实际生效的配置位置:
cp data/steamapps/common/PalServer/DefaultPalWorldSettings.ini \
data/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
chmod 600 data/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
编辑复制后的 PalWorldSettings.ini,在既有的 OptionSettings=(...) 中设置 ServerName、ServerPassword、AdminPassword、ServerPlayerMaxNum 和 bIsUseBackupSaveData=True。不要编辑 DefaultPalWorldSettings.ini,它不会被游戏读取。管理员密码不要与玩家密码相同,也不要把该文件提交到公开仓库。
# Ubuntu / Debian(使用 UFW)
sudo ufw allow 8211/udp
# RHEL / AlmaLinux / Rocky(使用 firewalld)
sudo firewall-cmd --permanent --add-port=8211/udp
sudo firewall-cmd --reload
docker compose up -d
局域网外联机还需要在路由器或云安全组放行并转发 UDP 8211 到这台主机的固定内网 IP。外网玩家用 公网 IP:8211 加入;如使用不同端口,应输入相应端口。
常用运维命令如下。docker compose down 会删除容器但不会删除 ./data,因为它是宿主机绑定目录;不要执行带 -v 的清理命令,也不要删除 data。
# 查看运行状态与实时日志
docker compose ps
docker compose logs -f --tail=200
# 正常停止与重新启动
docker compose down
docker compose up -d
# 完整备份 Saved(建议在服务器已正常停止后执行)
mkdir -p backups
tar -C data/steamapps/common/PalServer/Pal \
-czf "backups/pal-saved-$(date +%F-%H%M).tar.gz" Saved
更新顺序应为:在游戏内执行 /Save、/Shutdown,等待玩家退出;执行 docker compose down;备份完整 Saved;再运行 SteamCMD 校验更新;最后启动并观察日志。更新后先确认能读取原存档和正常联机,再恢复任何 MOD 或额外改动。
docker compose down
mkdir -p backups
tar -C data/steamapps/common/PalServer/Pal \
-czf "backups/pre-update-$(date +%F-%H%M).tar.gz" Saved
docker compose run --rm --entrypoint /bin/bash steamcmd -lc '\
~/steamcmd/steamcmd.sh +force_install_dir /home/steam/Steam +login anonymous +app_update 2394010 validate +quit'
docker compose up -d
docker compose logs -f --tail=200
docker compose logs --tail=200,确认 data/steamapps/common/PalServer/PalServer.sh 已由首次下载生成,且宿主机目录可写。backup,但它不是异机备份。每次大版本更新前,把生成的压缩包再复制到另一块磁盘或云端。