Games Palworld
Palworld server requirements
Requirements
| Our benchmark | |||
|---|---|---|---|
| CPU | 7% of one core, idle | 4+ cores recommended | No figure, lag spikes CPU-related |
| RAM | 0.8 GB idle, 1.4 GB peak | 16 GB, 32 GB+ recommended, 8 GB boots | 8 GB floor, 16 GB comfortable |
| Disk | 4.7 GB install | Fast SSD recommended | |
| Network | UDP 8211 and 27015 | UDP 8211, port forwarding | |
| OS | Linux, native | Windows or Linux, 64-bit |
RAM by players
16 to 32 GB
6 to 8 GB
- Recommended
- Pocketpair docs: "16GB Recommended for larger than 32GB. 8GB is also bootable, but increases the possibility of server crashes due to out of memory."
- WinterNode: "1-3 players: 6GB. 4-6: 8GB. 7-10: 12-16GB. 10-20: 16-24GB. 20+: 32GB."
Memory over time
- In use
- Peak, with cache
Pending
- 24 hours idle
- One player for 30 minutes
- Three warm restarts
- Backup disk use after 24 hours
Reported by others
- WinterNode: "Palworld's server process gradually allocates more memory over time and never releases it." bEnableInvaderEnemy=False "roughly halves RAM consumption over a play session"; restart every 4 to 6 hours.
Ports
| Port | Protocol | Use | Our server |
|---|---|---|---|
8211 | UDP | Game traffic. Set with -port or PublicPort. Forward this one. | Open |
27015 | UDP | Steam query. Open by default; not on Pocketpair's requirements page. | Open |
25575 | TCP | RCON, only with RCONEnabled=True. Off by default. Keep off the internet. | Off |
8212 | TCP | REST API, only with RESTAPIEnabled=True. Off by default. Keep local. | Off |
Forward UDP 8211. Keep RCON and the REST API closed to the internet.
Docker setup
5 steps
Download
Free anonymous download, Steam app 2394010, about 4.7 GB.
docker run --rm -v /srv/games/palworld:/data steamcmd/steamcmd:latest \ +@sSteamCmdForcePlatformType linux +force_install_dir /data \ +login anonymous +app_info_update 1 +app_update 2394010 validate +quitImage
Ubuntu 24.04 plus libcurl for the bundled crash reporter. Runs as the image's regular user, not root, so that user owns the files.
mkdir -p palworld-image && cat > palworld-image/Dockerfile <<'EOF' FROM ubuntu:24.04 RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates libcurl4t64 && rm -rf /var/lib/apt/lists/* USER ubuntu WORKDIR /palworld EOF docker build -t palworld_runtime palworld-image chown -R 1000:1000 /srv/games/palworldRun
Exact bench command. Add
-p8211:8211/udp to publish the game port.docker run -d --name palworld --memory 14g \ -v /srv/games/palworld:/palworld -w /palworld palworld_runtime \ ./PalServer.sh -port=8211 -players=32Ready line
Fresh world ready 4.4 seconds after container start.
docker logs -f palworld | grep "Running Palworld dedicated server"Settings
docker stop palworld cp /srv/games/palworld/DefaultPalWorldSettings.ini \ /srv/games/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini # edit ServerName, ServerPassword, AdminPassword and so on, then: docker start palworld
Settings
20 settings
File: Pal/Saved/Config/LinuxServer/PalWorldSettings.ini. Copy DefaultPalWorldSettings.ini into it first.
| Setting | What it does |
|---|---|
ServerName="Default Palworld Server" | Name players see. |
ServerPassword="" | Join password. Empty by default: open to anyone who reaches the port. |
AdminPassword="" | For admin commands, RCON and the REST API. Set before enabling either. |
ServerPlayerMaxNum=32 | Maximum players. |
PublicPort=8211 | Port advertised for community servers. Match -port. |
AutoSaveSpan=30.000000 | Seconds between autosaves. |
bIsUseBackupSaveData=True | World backups. On by default. Save folder with backups: 134 KB after 30 minutes, fresh world. |
bEnableInvaderEnemy=True | Base raids. Some hosts suggest off to cut memory growth; not yet tested. |
RCONEnabled=False | Remote console. Port set by RCONPort=25575. |
RESTAPIEnabled=False | HTTP admin API. Port set by RESTAPIPort=8212. |
bIsPvP=False | Player versus player combat. |
DeathPenalty=Item | What players drop on death. |
ExpRate=1.000000 | Experience multiplier. |
PalCaptureRate=1.000000 | Capture rate multiplier. |
BaseCampMaxNum=128 | Maximum bases on the server. |
BaseCampWorkerMaxNum=15 | Maximum working Pals per base. |
GuildPlayerMaxNum=20 | Maximum players per guild. |
CoopPlayerMaxNum=4 | Players in co-op mode. |
bShowPlayerList=False | Player list in the menu. |
LogFormatType=Text | Log format: Text or JSON. |
Troubleshooting
5 problems
- crashpad_handler: libcurl.so.4: cannot open shared object file
- Bundled crash reporter needs libcurl; the server runs without it. Install libcurl4t64 (Ubuntu 24.04) or libcurl4 (older releases).
- Settings file changes ignored
- Edit Pal/Saved/Config/LinuxServer/PalWorldSettings.ini, not DefaultPalWorldSettings.ini; if empty, copy the defaults in first. Stop the server before editing, or it may write the file back.
- [S_API FAIL] Tried to access Steam interface ... before SteamAPI_Init succeeded
- Harmless on a dedicated server. Startup continues normally.
- Memory grows until the server crashes
- Hosts call it a memory leak. Room above 8 GB, backups on, scheduled restarts (hosts: every 4 to 6 hours on well-equipped servers).
- No connections from outside the network
- Forward UDP 8211 (or the
-portvalue). RCON and the REST API need no forwarding.
Method
build 25247047
| Server | Palworld dedicated server, Steam build 25247047, game version v1.0.5.102999, downloaded 2026-10-05. |
|---|---|
| Image | Minimal ubuntu:24.04 image with ca-certificates and libcurl4t64, run as a regular user (uid 1000). |
| Machine | AMD Ryzen 9 5950X, Proxmox VE 9, each game server in Docker inside a dedicated LXC container. 14 GB memory limit, no swap. |
| Command | ./PalServer.sh -port=8211 -players=32 |
Changes from defaults
- Start command unchanged: Pocketpair's plain script, default port and player count.
- World settings at defaults. PalWorldSettings.ini created empty, so DefaultPalWorldSettings.ini values apply.
- No
-publiclobby: not listed as a community server.