Please use the official docs: https://palworld-server-docker.loef.dev/
Caution
The docs have been moved to: https://palworld-server-docker.loef.dev/zh/
加入我们的 Discord
Tip
不知道从何开始? 看看这里吧!
这是一个 Docker 容器,可帮助您创建自己的 幻兽帕鲁 专用服务器。
此 Docker 容器经过测试,可在以下操作系统上运作:
- Linux (Ubuntu/Debian)
- Windows 10,11
- MacOS (包括 Apple Silicon M1/M2/M3).
此容器也经过测试,可在 x64
和 ARM64
基于的 CPU 架构上运作。
Important
目前,Xbox Game Pass/Xbox 主机玩家无法加入专用服务器。
他们只能通过邀请码加入,并且最多允许 4 人游玩。
向以下赞助商致以衷心的感谢!
资源 | 最小 | 推荐 |
---|---|---|
CPU | 4 核 | 4+ 核以上 |
内存 | 16GB | 推荐 32GB 以上以稳定运行 |
存储空间 | 8GB | 20GB |
注意,您需要配置 环境变量。
您可以直接使用 docker-compose.yml 来配置您的服务器:
services:
palworld:
image: thijsvanloef/palworld-server-docker:latest
restart: unless-stopped
container_name: palworld-server
ports:
- 8211:8211/udp
- 27015:27015/udp
environment:
- PUID=1000
- PGID=1000
- PORT=8211 # 可选但推荐
- PLAYERS=16 # 可选但推荐
- SERVER_PASSWORD=worldofpals # 可选但推荐
- MULTITHREADING=true
- RCON_ENABLED=true
- RCON_PORT=25575
- TZ=Asia/Shanghai
- ADMIN_PASSWORD=adminPasswordHere
- COMMUNITY=false # 如果您希望服务器显示在社区服务器页中,请启用此选项(注意配置SERVER_PASSWORD!)
- SERVER_NAME=World of Pals
- SERVER_DESCRIPTION=palworld-server-docker by Thijs van Loef
volumes:
- ./palworld:/palworld/
将<palworld-folder>
修改为您自己的路径。
docker run -d \
--name palworld-server \
-p 8211:8211/udp \
-p 27015:27015/udp \
-v ./<palworld-folder>:/palworld/ \
-e PUID=1000 \
-e PGID=1000 \
-e PORT=8211 \
-e PLAYERS=16 \
-e MULTITHREADING=true \
-e RCON_ENABLED=true \
-e RCON_PORT=25575 \
-e TZ=Asia/Shanghai \
-e ADMIN_PASSWORD=adminPasswordHere \
-e SERVER_PASSWORD=worldofpals \
-e COMMUNITY=false \
-e SERVER_NAME=World of Pals \
-e SERVER_DESCRIPTION=palworld-server-docker by Thijs van Loef \
--restart unless-stopped \
--stop-timeout 30 \
thijsvanloef/palworld-server-docker:latest
作为一个替代方案,你可以复制.env.example文件,并把文件重命名为 .env 。 根据您的需求,查看环境变量 部分并调整。调整你的docker启动命令如下:
docker run -d \
--name palworld-server \
-p 8211:8211/udp \
-p 27015:27015/udp \
-v ./<palworld-folder>:/palworld/ \
--env-file .env \
--restart unless-stopped \
--stop-timeout 30 \
thijsvanloef/palworld-server-docker:latest
将此容器部署到 Kubernetes 的所有文件都位于此文件夹中。
请按照 此处 进行部署。
请按照 此处 进行部署。
您可以使用以下值来修改服务器设置。
强烈建议您在启动服务器之前设置以下变量:
- PLAYERS
- PORT
- PUID
- PGID
变量 | 信息 | 默认值 | 允许值 |
---|---|---|---|
TZ | 备份服务器时所使用的时间戳。 | UTC | 参见 时区列表 |
PLAYERS* | 可同加入服务器的最大玩家数。 | 16 | 1-32 |
PORT* | 服务器将开放的 UDP 端口。 | 8211 | 1024-65535 |
PUID* | 服务器运行时的用户的 UID。 | 1000 | !0 |
PGID* | 服务器运行时的组的 GID。 | 1000 | !0 |
MULTITHREADING** | 提高多线程 CPU 环境下的性能。它最多对 4 个线程有效,分配超过这个数量的线程没有太大意义。 | false | true/false |
COMMUNITY | 服务器是否显示在社区服务器页中(建议设置SERVER_PASSWORD)。 | false | true/false |
PUBLIC_IP | 您可以手动指定服务器 IP 地址。若未指定,将自动检测。 | x.x.x.x | |
PUBLIC_PORT | 您可以手动指定服务器端口。若未指定,将自动检测。 | 1024-65535 | |
SERVER_NAME | 服务器名称。 | "string" | |
SERVER_PASSWORD | 为服务器设置密码。 | "string" | |
ADMIN_PASSWORD | 为服务器设置管理员密码。 | "string" | |
UPDATE_ON_BOOT** | 在启动 Docker 容器时更新/安装服务器(需要在第一次运行时启用)。 | true | true/false |
RCON_ENABLED*** | 为服务器启用 RCON。 | true | true/false |
RCON_PORT | RCON 连接端口。 | 25575 | 1024-65535 |
QUERY_PORT | 用于与 Steam 服务器通信的查询端口。 | 27015 | 1024-65535 |
BACKUP_CRON_EXPRESSION | 自动备份的频率。 | 0 0 * * * | 需要一个Cron表达式 - 参见 使用 Cron 执行自动备份。 |
BACKUP_ENABLED | 启用自动备份。 | true | true/false |
DELETE_OLD_BACKUPS | 在一定天数后删除备份。 | false | true/false |
OLD_BACKUP_DAYS | 保留备份的天数。 | 30 | 任何正整数 |
AUTO_UPDATE_CRON_EXPRESSION | 自动更新的频率。 | 0 * * * * | 需要一个Cron表达式 - 参见 使用 Cron 执行自动更新。 |
AUTO_UPDATE_ENABLED | 启用自动更新。 | false | true/false |
AUTO_UPDATE_WARN_MINUTES | 在通知玩家后等待多长时间更新服务器。 | 30 | !0 |
AUTO_REBOOT_CRON_EXPRESSION | 设置自动重启的频率。 | 0 0 * * * | 需要一个Cron表达式 - 参见 使用 Cron 执行自动重启。 |
AUTO_REBOOT_ENABLED | 启用自动重启 | false | true/false |
AUTO_REBOOT_WARN_MINUTES | 在通知玩家后等待多长时间重启服务器。 | 5 | !0 |
DISCORD_WEBHOOK_URL | Discord 服务器上创建 Webhook 后的 Discord Webhook URL | https://discord.com/api/webhooks/<webhook_id> |
|
DISCORD_CONNECT_TIMEOUT | Discord 命令初始连接超时 | 30 | !0 |
DISCORD_MAX_TIMEOUT | Discord 超时时间 | 30 | !0 |
DISCORD_PRE_UPDATE_BOOT_MESSAGE | 服务器开始更新时发送到 Discord 的消息 | Server is updating... | "string" |
DISCORD_POST_UPDATE_BOOT_MESSAGE | 服务器完成更新时发送到 Discord 的消息 | Server update complete! | "string" |
DISCORD_PRE_START_MESSAGE | 服务器启动时发送到 Discord 的消息 | Server is started! | "string" |
DISCORD_PRE_SHUTDOWN_MESSAGE | 服务器关闭时发送到 Discord 的消息 | Server is shutting down... | "string" |
DISCORD_POST_SHUTDOWN_MESSAGE | 服务器停止时发送到 Discord 的消息 | Server is stopped! | "string" |
- 强烈建议设置。
** 启用该选项时,请确保您知道自己在做什么。
*** 是使用docker命令保存并关闭服务器的必要条件。
Important
环境变量中使用的布尔值区分大小写,因为它们是在 shell 脚本中使用的。
必须准确使用 true
或 false
设置它们,选项才能生效。
端口 | 信息 |
---|---|
8211 | 游戏端口 (UDP) |
27015 | 查询端口 (UDP) |
25575 | RCON 端口 (TCP) |
RCON 已在此项目中默认开启。
使用 RCON CLI 非常简单:
docker exec -it palworld-server rcon-cli
这将打开一个 CLI,使用 RCON 使用服务器命令。
命令 | 信息 |
---|---|
Shutdown {秒} {信息} | 服务器将在{秒}后关闭 |
DoExit | 强制关闭服务器。 |
Broadcast | 向服务器中所有玩家发送消息。 |
KickPlayer {SteamID} | 从服务器中踢出玩家。 |
BanPlayer {SteamID} | 从服务器中封禁玩家。 |
TeleportToPlayer {SteamID} | 传送到目标玩家。 |
TeleportToMe {SteamID} | 将目标玩家传送到身边。 |
ShowPlayers | 显示所有已连接玩家信息。 |
Info | 显示服务器信息。 |
Save | 保存游戏。 |
请查看 官方文档 以获取所有命令。
想要在游戏保存的时间点创建一个备份,使用以下命令:
docker exec palworld-server backup
执行后将在 /palworld/backups/
文件夹中生成备份。
若启用了 RCON,服务器将在备份前进行保存。
要从备份中恢复,请使用以下命令:
docker exec -it palworld-server restore
必须将 RCON_ENABLED
环境变量设置为 true
以使用此命令。
Important
如果 Docker 重启策略不是设为 always
或 unless-stopped
,那么服务器将会关闭,需要手动重新启动。
在 开始使用 中的示例 Docker run 命令和 Docker Compose 文件已经使用了所需的策略。
在 /palworld/backups/
中找到要恢复的备份并解压缩它。
删除位于 /palworld/Pal/Saved/SaveGames/0/<old_hash_value>
的旧保存数据文件夹。
将新解压缩的保存数据文件夹 Saved/SaveGames/0/<new_hash_value>
的内容复制到 palworld/Pal/Saved/SaveGames/0/<new_hash_value>
。
将 palworld/Pal/Saved/Config/LinuxServer/GameUserSettings.ini
中的 DedicatedServerName
替换为新文件夹名称。
DedicatedServerName=<new_hash_value> # 替换为新的保存数据文件夹名称
重新启动游戏。(如果您正在使用 Docker Compose)
docker compose down && docker compose up -d
服务器将在每天午夜根据 TZ 设置的时区自动备份。
设置 BACKUP_ENABLED
启用或禁用自动备份(默认启用)。
BACKUP_CRON_EXPRESSION
是一个 cron 表达式,在 Cron 表达式中,您可以定义运行作业的间隔。
设置 BACKUP_CRON_EXPRESSION
以更改默认时程。
使用示例:如果 BACKUP_CRON_EXPRESSION
设置为 0 2 * * *
,备份脚本将在每天凌晨 2:00 运行。
如果要在伺服器上使用自动更新功能, 必须 将以下环境变数设置为 true
:
- RCON_ENABLED
- UPDATE_ON_BOOT
Important
如果 Docker 重启策略不是设为 always
或 unless-stopped
,那么服务器将会关闭,需要手动重新启动。
在 开始使用 中的示例 Docker run 命令和 Docker Compose 文件已经使用了所需的策略。
设置 AUTO_UPDATE_ENABLED
以启用或禁用自动更新(默认为禁用)。
AUTO_UPDATE_CRON_EXPRESSION
是一个cron表达式,在Cron表达式中,需要定义了运行作业的间隔。
Tip
这个镜像使用 Supercronic 来执行 cron 任务。 查阅 supercronic 或者 Crontab Generat.
設置 AUTO_UPDATE_CRON_EXPRESSION
以更改默认时程。
为了能够使用该服务器的自动重启功能,需要启用 RCON_ENABLED
。
Important
如果 Docker 重启策略不是设为 always
或 unless-stopped
,那么服务器将会关闭,需要手动重新启动。
在 开始使用 中的示例 Docker run 命令和 Docker Compose 文件已经使用了所需的策略。
设置 AUTO_REBOOT_ENABLED
以启用或禁用自动备份(默认为禁用)。
AUTO_REBOOT_CRON_EXPRESSION
是一个cron表达式,在Cron表达式中,需要定义了运行作业的间隔。
Tip
该镜像使用 Supercronic 进行 cron 作业。 请参阅 supercronic 或 Crontab Generator.
设置 AUTO_REBOOT_CRON_EXPRESSION
以更改时程, 默认为每天午夜,根据设置的时区进行调整。
环境变量 | 描述 | 默认值 | 可用值 |
---|---|---|---|
DIFFICULTY | 游戏难度 | None | None ,Normal ,Difficult |
DAYTIME_SPEEDRATE | 白天流逝速度 - 更小的值代表更快的白天 | 1.000000 | Float |
NIGHTTIME_SPEEDRATE | 夜晚流逝速度 - 更小的值代表更快的夜晚 | 1.000000 | Float |
EXP_RATE | 经验值获取比率 | 1.000000 | Float |
PAL_CAPTURE_RATE | 帕鲁捕捉比率 | 1.000000 | Float |
PAL_SPAWN_NUM_RATE | 帕鲁刷新比率 | 1.000000 | Float |
PAL_DAMAGE_RATE_ATTACK | 多人游戏中来自帕鲁的伤害比率 | 1.000000 | Float |
PAL_DAMAGE_RATE_DEFENSE | 多人游戏中对帕鲁的伤害比率 | 1.000000 | Float |
PLAYER_DAMAGE_RATE_ATTACK | 多人游戏中来自玩家的伤害比率 | 1.000000 | Float |
PLAYER_DAMAGE_RATE_DEFENSE | 多人游戏中对玩家的伤害比率 | 1.000000 | Float |
PLAYER_STOMACH_DECREASE_RATE | 玩家饱食度流逝比率 | 1.000000 | Float |
PLAYER_STAMINA_DECREASE_RATE | 玩家体力减少比率 | 1.000000 | Float |
PLAYER_AUTO_HP_REGEN_RATE | 玩家生命值自动恢复比率 | 1.000000 | Float |
PLAYER_AUTO_HP_REGEN_RATE_IN_SLEEP | 玩家睡眠时生命值自动恢复比率 | 1.000000 | Float |
PAL_STOMACH_DECREASE_RATE | 帕鲁饱食度流逝比率 | 1.000000 | Float |
PAL_STAMINA_DECREASE_RATE | 帕鲁体力减少比率 | 1.000000 | Float |
PAL_AUTO_HP_REGEN_RATE | 帕鲁生命值自动恢复比率 | 1.000000 | Float |
PAL_AUTO_HP_REGEN_RATE_IN_SLEEP | 帕鲁生命值自动恢复比率(在终端盒中) | 1.000000 | Float |
BUILD_OBJECT_DAMAGE_RATE | 多人游戏中对建筑结构的伤害比率 | 1.000000 | Float |
BUILD_OBJECT_DETERIORATION_DAMAGE_RATE | 建筑结构的自然劣化比率 | 1.000000 | Float |
COLLECTION_DROP_RATE | 多人游戏中道具掉落比率 | 1.000000 | Float |
COLLECTION_OBJECT_HP_RATE | 多人游戏中对象生命比率 | 1.000000 | Float |
COLLECTION_OBJECT_RESPAWN_SPEED_RATE | 可获取对象的刷新速度 - 更小的值代表更快的刷新速度 | 1.000000 | Float |
ENEMY_DROP_ITEM_RATE | 多人游戏中敌人掉落道具的比率 | 1.000000 | Float |
DEATH_PENALTY | 死亡惩罚 None: 没有死亡惩罚 Item: 更高几率掉落道具 ItemAndEquipment: 掉落所有道具 All: 掉落所有道具和帕鲁 |
All | None ,Item ,ItemAndEquipment ,All |
ENABLE_PLAYER_TO_PLAYER_DAMAGE | 允许 PVP 伤害 | False | Boolean |
ENABLE_FRIENDLY_FIRE | 允许队友伤害 | False | Boolean |
ENABLE_INVADER_ENEMY | 启用营地入侵 | True | Boolean |
ACTIVE_UNKO | 启用 UNKO (?) | False | Boolean |
ENABLE_AIM_ASSIST_PAD | 启用控制器辅助瞄准 | True | Boolean |
ENABLE_AIM_ASSIST_KEYBOARD | 启用键盘辅助瞄准 | False | Boolean |
DROP_ITEM_MAX_NUM | 世界中最大掉落物品数量 | 3000 | Integer |
DROP_ITEM_MAX_NUM_UNKO | 世界中最大 UNKO 掉落数量 | 100 | Integer |
BASE_CAMP_MAX_NUM | 最大营地数量 | 128 | Integer |
BASE_CAMP_WORKER_MAX_NUM | 营地最大工位数量 | 15 | Integer |
DROP_ITEM_ALIVE_MAX_HOURS | 掉落物品移除时间 | 1.000000 | Float |
AUTO_RESET_GUILD_NO_ONLINE_PLAYERS | 无玩家在线时自动重置公会 | False | Bool |
AUTO_RESET_GUILD_TIME_NO_ONLINE_PLAYERS | 无玩家在线时自动重置公会的时间 | 72.000000 | Float |
GUILD_PLAYER_MAX_NUM | 公会最大成员数量 | 20 | Integer |
PAL_EGG_DEFAULT_HATCHING_TIME | 孵化巨大型帕鲁蛋所需消耗时间(小时) | 72.000000 | Float |
WORK_SPEED_RATE | 多人游戏中的工作速度比率 | 1.000000 | Float |
IS_MULTIPLAY | 启用多人游戏 | False | Boolean |
IS_PVP | 启用 PVP | False | Boolean |
CAN_PICKUP_OTHER_GUILD_DEATH_PENALTY_DROP | 允许玩家拾取其他公会玩家的掉落物品或死亡惩罚 | False | Boolean |
ENABLE_NON_LOGIN_PENALTY | 启用无登录惩罚 | True | Boolean |
ENABLE_FAST_TRAVEL | 启用快速旅行 | True | Boolean |
IS_START_LOCATION_SELECT_BY_MAP | 启用出生地选择 | True | Boolean |
EXIST_PLAYER_AFTER_LOGOUT | 玩家注销时是否删除玩家 | False | Boolean |
ENABLE_DEFENSE_OTHER_GUILD_PLAYER | 允许防御其他公会玩家 | False | Boolean |
COOP_PLAYER_MAX_NUM | 工会中的最大玩家数量 | 4 | Integer |
REGION | 地区 | String | |
USEAUTH | 使用授权验证 | True | Boolean |
BAN_LIST_URL | 使用禁用列表 | https://api.palworldgame.com/api/banlist.txt | string |
服务器启动时,PalWorldSettings.ini
文件将在 <mount_folder>/Pal/Saved/Config/LinuxServer
文件夹中生成。
所有更改将在服务器下次启动时生效。
请注意,环境变量将始终覆盖对 PalWorldSettings.ini
所做的更改。
服务器配置文件参数相关说明,请在 shockbyte 中查看。
-
在 Discord 的服务器设置中为你的 Discord 服务器生成一个 Webhook URL。
-
使用 Discord Webhook URL 的范例,将唯一的令牌设置为环境变量,附在 URL 的末尾,如下所示:
https://discord.com/api/webhooks/1234567890/abcde
使用 Docker run 命令发送 Discord 消息:
-e DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/1234567890/abcde" \
-e DISCORD_PRE_UPDATE_BOOT_MESSAGE="Server is updating..." \
使用 Docker Compose 命令发送 Discord 消息:
- DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/1234567890/abcde
- DISCORD_PRE_UPDATE_BOOT_MESSAGE=Server is updating...
Warning
降级到更低的游戏版本是可能的,但目前不清楚它对现有存档会有什么影响。
请自行承担风险!
如果 TARGET_MANIFEST_ID 环境变量被设置,服务器将锁定到特定的 manifest 版本。 manifest 对应于发布日期/更新版本。manifest 可以在 SteamCMD 或 SteamDB 等网站上找到。
版本 | Manifest ID |
---|---|
1.3.0 | 1354752814336157338 |
1.4.0 | 4190579964382773830 |
1.4.1 | 6370735655629434989 |
可通过 此链接 报告问题/功能请求。
已知问题已在 Wiki 中列出。