Palworld is one of the game servers running on my Steam Game Server Framework. Native Linux server, no Wine workarounds -- just pull the image and start.
Here's everything you need to set up your own Palworld server.
Quick Start
Create a directory and add a docker-compose.yml:
mkdir palworld-server && cd palworld-server
services:
palworld:
# Docker Hub:
image: rndmjoker/gameserver-steam-palworld:latest
# Or from GitHub Container Registry:
# image: ghcr.io/rndmjoker/gameserver-steam-palworld:latest
container_name: palworld-server
restart: unless-stopped
network_mode: host
mem_limit: 12g
volumes:
- serverdata:/home/steam/serverdata
- serverconfig:/home/steam/serverconfig
environment:
- ServerName=My Palworld Server
- AdminPassword=secure-password
- ServerPlayerMaxNum=16
volumes:
serverdata:
serverconfig:
docker compose up -d
docker compose logs -f
The first start takes a bit longer because SteamCMD downloads the full server (~7 GB). After that it's fast.
Alternative with docker run
docker run -d \
--name palworld-server \
--restart unless-stopped \
--network host \
--memory 12g \
-e ServerName="My Palworld Server" \
-e AdminPassword="secure-password" \
-e ServerPlayerMaxNum=16 \
-v serverdata:/home/steam/serverdata \
-v serverconfig:/home/steam/serverconfig \
rndmjoker/gameserver-steam-palworld:latest
Technical Details
| Property | Value |
|---|---|
| Steam App ID | 2394010 |
| Platform | Linux (native) |
| Default Port | 8211/udp |
| RCON Port | 25575/tcp |
| RAM Recommendation | 12 GB |
| Server Binary | PalServer.sh |
Networking
The server runs in host network mode. That means the ports are directly open on your machine.
| Port | Protocol | Description |
|---|---|---|
8211 |
UDP | Game port (player connections) |
25575 |
TCP | RCON (remote console, optional) |
If you have an external firewall (e.g. at your hosting provider), you need to open port 8211/udp there. Docker doesn't do that automatically in host mode.
Configuration
The entire server is configured via environment variables. You don't need to edit any config files -- anything you want to change, you just add as -e VARIABLE=value to your docker run or in the environment: section of your docker-compose.yml. The actual config files are generated from these variables on every container start.
The Quick Start above shows a minimal example. If you want to see all available settings at once, grab the complete docker-compose.yml or the .env.example from the GitHub repo -- they contain over 80 parameters with descriptions and default values.
Here's an excerpt of the most important settings:
Server Basics
| Variable | Default | Description |
|---|---|---|
ServerName |
My Palworld Server |
Server name |
ServerDescription |
(empty) | Description |
ServerPassword |
(empty) | Password to join |
AdminPassword |
changeme |
Admin password (change this!) |
ServerPlayerMaxNum |
32 |
Max players |
GAME_PORT |
8211 |
Game port |
RCON_PORT |
25575 |
RCON port |
RCONEnabled |
False |
Enable RCON |
Game Balance
| Variable | Default | Description |
|---|---|---|
DayTimeSpeedRate |
1.0 |
Day time speed |
NightTimeSpeedRate |
1.0 |
Night time speed |
ExpRate |
1.0 |
Experience rate |
PalCaptureRate |
1.0 |
Capture rate |
PalSpawnNumRate |
1.0 |
Pal spawn rate |
WorkSpeedRate |
1.0 |
Work speed |
PlayerDamageRateAttack |
1.0 |
Player attack damage |
PlayerDamageRateDefense |
1.0 |
Player defense |
DeathPenalty |
All |
Death penalty (None, Item, ItemAndEquipment, All) |
All other parameters (PvP, Hardcore, Randomizer, building limits, etc.) are in the docker-compose.yml on GitHub.
Build from Source
If you want to modify the Dockerfile or the hooks:
git clone https://github.com/RndmJoker/gameserver-steam-palworld.git steam-palworld
cd steam-palworld
cp .env.example .env
nano .env
docker compose up -d --build
Server Management
View logs
docker compose logs -f
Restart (applies config changes)
docker compose restart
Stop the server
docker compose down
Force update
The server is automatically updated on every container start. For a manual update, just restart:
docker compose restart
Fast restart (skip update)
- SKIP_STEAM_UPDATE=true
Backups
Save games are stored in the serverdata volume. To create a backup:
docker cp palworld-server:/home/steam/serverdata/Pal/Saved ./palworld-backup-$(date +%Y%m%d)
Troubleshooting
Server crashes immediately
Check if you have enough RAM:
free -h
docker stats palworld-server --no-stream
Palworld needs at least 8 GB, 12 GB is better.
Players can't connect
- Server running?
docker ps | grep palworld - Port open?
ss -tulnp | grep 8211 - Firewall checked? Port
8211/udpmust be open externally
Crash logs
docker logs palworld-server 2>&1 | tail -50
Links
- GitHub: github.com/RndmJoker/gameserver-steam-palworld
- Docker Hub: hub.docker.com/r/rndmjoker/gameserver-steam-palworld
- Official Palworld Docs: docs.palworldgame.com
- Framework: Steam Game Server Framework
If you have questions or need help, reach out via the contact form.