跳转至

Docker 部署幻兽帕鲁(Palworld)服务器

简介

幻兽帕鲁(Palworld)是一款支持多人联机的开放世界生存建造游戏。使用 Docker 部署服务器可以方便地实现数据持久化、备份和迁移。

本文使用镜像 kagurazakanyaa/palworld 部署服务器。

整体架构

宿主机(飞牛或其他 Linux)
  └── Docker 容器(Palworld 服务)
        ↓ 数据卷映射
  宿主机存储(持久化 + 备份)

环境准备

  • 操作系统:Linux(推荐 Ubuntu 22.04+)
  • Docker 已安装
  • 开放端口:8211/UDP(游戏主端口)、27015/UDP(Steam 查询端口,可选)
  • 网络:公网 IP 或内网穿透(如 cpolar)

镜像说明

kagurazakanyaa/palworld 是社区维护的 Palworld 专用服务器镜像,开机即用,无需手动安装 SteamCMD。

主要特性: - 内置 SteamCMD 自动更新 - 支持 SaveData 持久化 - 可通过环境变量或配置文件调整服务器参数 - 兼容 Windows/Linux/macOS

部署步骤

Step 1:拉取镜像

docker pull kagurazakanyaa/palworld:latest

Step 2:创建数据持久化目录

# 在宿主机创建存储目录
mkdir -p /mnt/palworld/save
mkdir -p /mnt/palworld/config
mkdir -p /mnt/palworld/backup

Step 3:启动容器(基础持久化)

docker run -d \
  --name palworld-server \
  --restart unless-stopped \
  -p 8211:8211/udp \
  -p 27015:27015/udp \
  -v /mnt/palworld/save:/palworld/Pal/Saved \
  -v /mnt/palworld/config:/palworld/Pal/Saved/Config/LinuxServer \
  -e PUID=1000 \
  -e PGID=1000 \
  kagurazakanyaa/palworld

数据卷映射说明: - /palworld/Pal/Saved → 存档数据(玩家数据、基地、帕鲁等) - /palworld/Pal/Saved/Config/LinuxServer → 服务器配置文件(WorldOptions.sav、GameUserSettings.ini 等) - 两者映射到宿主机后,即使删除重建容器,数据也不会丢失

Step 4:验证运行状态

# 查看容器日志
docker logs -f palworld-server

# 查看容器状态
docker ps | grep palworld

日志中看到类似以下内容表示正常运行:

[Server] SteamAPI initialized!
[Server] Palworld Server started!

Step 5:连接服务器

在 Palworld 游戏中: 1. 打开游戏 → 多人游戏 → 加入服务器 2. 输入服务器公网 IP 或域名(端口默认 8211) 3. 如果在内网,需要用 cpolar 等工具穿透


服务器配置

环境变量配置(启动时指定)

docker run -d \
  --name palworld-server \
  --restart unless-stopped \
  -p 8211:8211/udp \
  -p 27015:27015/udp \
  -v /mnt/palworld/save:/palworld/Pal/Saved \
  -v /mnt/palworld/config:/palworld/Pal/Saved/Config/LinuxServer \
  -e PUID=1000 \
  -e PGID=1000 \
  -e SERVER_NAME="My Palworld Server" \
  -e SERVER_DESCRIPTION="A fun Palworld server" \
  -e MAX_PLAYERS=16 \
  -e DIFFICULTY="None" \
  -e DAY_SPEED_SCALE="1.0" \
  -e NIGHT_SPEED_SCALE="1.0" \
  -e EXP_RATE="1.0" \
  -e PAL_CAPTURE_RATE="1.0" \
  -e PAL_SPAWN_RATE="1.0" \
  kagurazakanyaa/palworld

常用配置参数

参数 说明 默认值
SERVER_NAME 服务器名称 Palworld Server
MAX_PLAYERS 最大玩家数 16
DIFFICULTY 难度(None/Normal/Hard) None
EXP_RATE 经验值倍率 1.0
PAL_CAPTURE_RATE 捕获概率倍率 1.0
DAY_SPEED_SCALE 白天时间速度 1.0
NIGHT_SPEED_SCALE 夜间时间速度 1.0

手动修改配置文件

配置文件位于映射的宿主机目录:

/mnt/palworld/config/
├── DefaultGameUserSettings.ini   # 游戏设置(地图种子等)
└── WorldOptions.sav              # 世界存档配置

修改后重启容器生效:

docker restart palworld-server

备份与恢复

备份策略

Palworld 服务器数据包含两类:

  1. Config 配置文件(服务器设置)
  2. SaveData 存档数据(玩家进度、帕鲁数据、基地)

建议备份策略: - 每日自动备份:保留最近 7 天的备份 - 重要节点备份:每次大版本更新前手动备份

手动备份

# 备份整个数据目录
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
tar -czf /mnt/palworld/backup/palworld_backup_${TIMESTAMP}.tar.gz \
  /mnt/palworld/save \
  /mnt/palworld/config

echo "备份完成: palworld_backup_${TIMESTAMP}.tar.gz"

自动备份脚本(crontab)

创建备份脚本 /mnt/palworld/backup.sh:

#!/bin/bash
# palworld_backup.sh

BACKUP_DIR="/mnt/palworld/backup"
DATA_DIR="/mnt/palworld"
DAYS_TO_KEEP=7

TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/palworld_backup_${TIMESTAMP}.tar.gz"

# 创建备份
tar -czf "$BACKUP_FILE" "$DATA_DIR/save" "$DATA_DIR/config"

# 删除 7 天前的备份
find "$BACKUP_DIR" -name "palworld_backup_*.tar.gz" -mtime +${DAYS_TO_KEEP} -delete

echo "[$(date)] 备份完成: $BACKUP_FILE"

添加到 crontab,每天凌晨 3 点自动备份:

chmod +x /mnt/palworld/backup.sh
crontab -e

添加行:

0 3 * * * /mnt/palworld/backup.sh >> /mnt/palworld/backup/backup.log 2>&1

恢复备份

# 停止容器
docker stop palworld-server

# 解压备份(以最新备份为例)
LATEST_BACKUP=$(ls -t /mnt/palworld/backup/palworld_backup_*.tar.gz | head -1)
tar -xzf "$LATEST_BACKUP" -C /

# 重启容器
docker start palworld-server

echo "恢复完成,从备份: $LATEST_BACKUP"

单存档恢复(精确恢复)

如果只想恢复特定存档(不覆盖整个目录):

# 解压备份到临时目录
mkdir -p /tmp/palworld_restore
tar -xzf /mnt/palworld/backup/palworld_backup_20260415_030000.tar.gz -C /tmp/palworld_restore

# 恢复 SaveData(玩家数据)
cp -r /tmp/palworld_restore/mnt/palworld/save/* /mnt/palworld/save/

# 恢复 Config(可选)
cp -r /tmp/palworld_restore/mnt/palworld/config/* /mnt/palworld/config/

# 重启
docker restart palworld-server

数据迁移(换机器)

在原机器上打包:

tar -czf palworld_full_backup.tar.gz /mnt/palworld/

到新机器后解压:

tar -xzf palworld_full_backup.tar.gz -C /

然后直接启动容器即可,数据完整保留。


常见问题

Q1:容器无法启动,提示端口被占用

# 检查端口占用
ss -ulnp | grep 8211

# 如果端口被占用,停止占用进程或换端口

Q2:玩家无法连接

  • 检查防火墙/安全组是否开放 8211/UDP 和 27015/UDP
  • 检查 cpolar 等穿透工具是否正常运行
  • 确认服务器 IP 是否可公网访问

Q3:如何更新服务器版本

# 拉取最新镜像
docker pull kagurazakanyaa/palworld:latest

# 停止并删除旧容器(数据不会丢失)
docker stop palworld-server
docker rm palworld-server

# 用同样的命令重新启动(卷映射不变)
docker run -d ...(同上)

Q4:存档损坏怎么办

  • 从备份恢复(见「恢复备份」章节)
  • 如果没有备份,尝试在游戏客户端验证存档完整性

Q5:如何查看玩家列表

docker exec palworld-server rcon "ShowPlayers"

相关资源

  • Docker Hub 镜像:https://hub.docker.com/r/kagurazakanyaa/palworld
  • Palworld 官方:https://www.pocketpair.jp/
  • SteamCMD 文档:https://developer.valvesoftware.com/wiki/SteamCMD

核心:数据卷映射实现持久化,备份脚本实现自动化,备份文件实现可迁移。Docker 部署的 Palworld 服务器,维护成本极低。