Palworld Dedicated Server: Linux + Docker Setup for 1.0
Two production-ready paths for hosting a Palworld 1.0 dedicated server: SteamCMD on a Linux VPS (raw control, smallest footprint) and Docker Compose on Linux/Windows/macOS (easiest ops, automatic updates). Covers port forwarding, server settings, save migration, and backups.
TL;DR: Two paths. (A) SteamCMD on Linux VPS — best for full control and smallest footprint. (B) Docker Compose — easiest ops, automatic updates, works on Linux / Windows / macOS. Either way: open UDP port 8211 on your firewall, set a strong
AdminPassword, and back upSaved/SaveGames/before every patch. AppID2394010is the dedicated server; the client AppID is1623730.
This guide sits alongside Getting Started and Breeding & Condenser Guide — if you’re hosting for a small friend group who wants to long-term breed Pals, this is the setup you need.
0. Before you start
You’ll need:
| Resource | Minimum | Recommended for 8+ players |
|---|---|---|
| CPU | 4 cores | 6–8 cores, high frequency |
| RAM | 8 GB (16 GB for >4 players) | 16 GB + 2 GB / player |
| Storage | 30 GB SSD | 50 GB+ NVMe SSD |
| Network | Stable upstream 10 Mbps+ | 100 Mbps+ symmetric, low latency |
| OS | Ubuntu 22.04 LTS (or any modern Linux) / Windows 10+ / macOS 12+ | Ubuntu 22.04 LTS server, headless |
| Public IP or port-forwarded router | Yes | Yes |
The server build uses ~2 GB RAM per concurrent player. Plan headroom accordingly.
1. Choose your path
Path A: SteamCMD on Linux VPS
Best for: full control, smallest resource footprint, “I want to understand every byte.”
Path B: Docker Compose
Best for: easy updates, declarative config, reproducible deployments, “I want it to just work.”
If you’ve never run a game server before, start with Path B. You can migrate to Path A later if you need more control.
2. Path A: SteamCMD on Linux VPS
This is the official Pocketpair-supported flow.
Step 1: Install SteamCMD
Ubuntu / Debian:
sudo apt update
sudo apt install -y software-properties-common
sudo dpkg --add-architecture i386
sudo add-apt-repository multiverse
sudo apt update
sudo apt install -y steamcmd
If the apt steamcmd package is unavailable in your distro, use Valve’s official install method: https://developer.valvesoftware.com/wiki/SteamCMD#Linux.
Step 2: Create a non-root user for the server
sudo useradd -m -s /bin/bash palworld
sudo passwd palworld
sudo -u palworld -i
Common pitfall: running the server as root. If the server is compromised, the attacker has root. Always use a dedicated unprivileged user.
Step 3: Install / update the dedicated server
steamcmd +login anonymous +app_update 2394010 validate +quit
This downloads the server build to ~/Steam/steamapps/common/PalServer/. The first run takes a few minutes; subsequent runs are quick incremental updates.
Step 4: First launch to generate config
cd ~/Steam/steamapps/common/PalServer
./PalServer.sh
The first run creates Pal/Saved/Config/LinuxServer/PalWorldSettings.ini. Stop the server (Ctrl+C), edit the file, then restart.
Step 5: Configure
PalWorldSettings.ini controls everything. Key settings:
[/Script/Pal.PalGameWorldOptions]
ServerName=My Palworld Server
ServerDescription=Hosted on a t3.medium
AdminPassword=CHANGE_ME_TO_A_LONG_RANDOM_STRING
ServerPassword=
PublicPort=8211
PublicIP=
RCONEnabled=True
RCONPort=25575
Region=eu
bEnableInvaderEnemy=True
bEnableFastTravel=True
bIsMultiplayer=True
bIsPvP=False
Difficulty=Normal
DayTimeSpeedRate=1.000000
NightTimeSpeedRate=1.000000
ExpRate=1.000000
PalCaptureRate=1.000000
PalSpawnNumRate=1.000000
PalDamageRate=1.000000
PlayerDamageRate=1.000000
PlayerStomachDecreaseRate=1.000000
PlayerStaminaDecreaseRate=1.000000
PlayerAutoHPRegeneRate=1.000000
PlayerAutoHPRegeneRateInSleep=1.000000
PalEggHatchingTime=72.000000
BuildObjectDamageRate=1.000000
BuildObjectDeteriorationDamageRate=1.000000
CollectionDropRate=1.000000
CollectionObjectHpRate=1.000000
CollectionObjectRespawnSpeedRate=1.000000
EnemyDropItemRate=1.000000
bEnableAimAssistPad=True
bEnableAimAssistKeyboard=False
The 1.0 default config is in DefaultPalWorldSettings.ini — copy it over and edit rather than starting from scratch.
Step 6: Firewall
Open UDP 8211 inbound. If you use UFW:
sudo ufw allow 8211/udp
If you use iptables directly:
sudo iptables -A INPUT -p udp --dport 8211 -j ACCEPT
For cloud providers (AWS, GCP, Azure), also open the port in the security group / network ACL.
Step 7: Run as a systemd service
Create /etc/systemd/system/palworld.service:
[Unit]
Description=Palworld Dedicated Server
After=network.target
[Service]
Type=simple
User=palworld
WorkingDirectory=/home/palworld/Steam/steamapps/common/PalServer
ExecStart=/home/palworld/Steam/steamapps/common/PalServer/PalServer.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Then:
sudo systemctl daemon-reload
sudo systemctl enable --now palworld
sudo systemctl status palworld
journalctl -u palworld -f to follow logs.
3. Path B: Docker Compose
Best for: easy updates, declarative config, cross-platform.
Step 1: Install Docker
Linux: < > Windows / macOS: Docker Desktop from < >
Step 2: Pick a Docker image
Multiple community-maintained projects exist; the most actively maintained as of August 2026 include:
- thijsvanloef/palworld-server-docker — 1,839 commits as of 2026-07, supports x64 + ARM64, Linux / Windows / macOS
- KagurazakaNyaa/palworld-docker — 97 commits, auto-update
- hmes98318/palworld-docker — 44 commits, multi-language README
- BillWilson/palworld-docker — minimal fork
- karnzx/palworld-server-docker — variant
Recommendation: pick one and pin to a specific image tag (e.g.
thijsvanloef/palworld-server-docker:v1.0.2) rather than:latestin production —:latestwill silently update when 1.0.3 lands and could break your config.
Step 3: docker-compose.yml
services:
palworld:
image: thijsvanloef/palworld-server-docker:v1.0.2
container_name: palworld
restart: unless-stopped
ports:
- "8211:8211/udp"
- "25575:25575/tcp" # RCON
environment:
PORT: "8211"
PLAYERS: "16"
SERVER_NAME: "My Palworld Server"
SERVER_DESCRIPTION: "Hosted via Docker"
SERVER_PASSWORD: ""
ADMIN_PASSWORD: "CHANGE_ME_TO_A_LONG_RANDOM_STRING"
MULTITHREADING: "true"
COMMUNITY: "false"
RCON_ENABLED: "true"
RCON_PORT: "25575"
TZ: "UTC"
volumes:
- ./palworld-data:/palworld/Pal/Saved
Step 4: First launch
mkdir palworld-data
docker compose up -d
docker compose logs -f
The first run takes a few minutes as the image downloads and the server initializes. Once you see “World saved” or similar in the logs, the server is up.
Step 5: Update to a new patch
docker compose pull
docker compose up -d
This pulls the new image and recreates the container. The palworld-data volume persists saves and config.
4. Connecting to your server
From the Palworld client:
- Open Multiplayer from the main menu.
- Click Add server (or use the server list if Public is enabled).
- Enter your server’s public IP and port
8211. - If you set
ServerPassword, enter it. - Connect.
If you set PublicIP in PalWorldSettings.ini, your server will appear in the community server list automatically.
5. Save migration and backups
Before every patch
# Path A
cp -r ~/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames/ ~/backups/palworld-$(date +%Y%m%d-%H%M)/
# Path B
cp -r ./palworld-data/SaveGames/ ./backups/palworld-$(date +%Y%m%d-%H%M)/
The 1.0 migration is one-way. If a 1.0.2 → 1.0.3 patch goes wrong, your only rollback is the save backup.
Moving a save between hosts
Both Path A and Path B use the same save layout: Saved/SaveGames/<save-id>/. To move:
- Stop the server.
- Copy the
<save-id>/directory to the new host at the same path. - Restart the server. The new host should pick up the save automatically.
Pitfall: don’t copy saves between hosts running different patch versions. The format may differ.
6. RCON — remote administration
If you enabled RCON (port 25575 by default), you can administer the server from a remote shell:
# Using mcrcon or any RCON client
rcon -H your.server.ip -P 25575 -p YOUR_ADMIN_PASSWORD "broadcast Hello world"
Available RCON commands include: broadcast <msg>, shutdown, save, kick <player>, ban <player>, teleport. See Pocketpair’s documentation for the full command list.
Security: never expose RCON (25575) to the public internet. Bind it to localhost or a VPN.
7. Common pitfalls
| Pitfall | Symptom | Fix |
|---|---|---|
| Forgot to open UDP 8211 | Connection timeouts | Open the port in firewall AND cloud security group |
| Running as root | Server compromise = root compromise | Always use a dedicated unprivileged user |
Using :latest Docker tag | Silent breakage when patch lands | Pin to a specific tag like v1.0.2 |
| No backup before patch | Lose save if migration fails | Always backup SaveGames/ before patching |
| Public RCON | Anyone can shut down / ban | Bind RCON to localhost or VPN |
Setting bIsPvP=False then expecting PvP | Players can’t damage each other | Toggle bIsPvP=True for PvP servers |
High PalSpawnNumRate | Server lags, memory spikes | Cap at 1.5x even on high-RAM hosts |
| Hosting on home internet | Lag for players in other regions | Use a VPS with a geographically close region setting |
8. Performance tuning (post-launch)
If you see lag:
- Reduce player count —
PLAYERS=8is comfortable on a 4-core 8 GB host. - Lower
PalSpawnNumRate— 0.7–0.8x for 8+ players. - Enable
MULTITHREADING=true— almost always a win on 4+ core hosts. - Monitor with
docker stats(Path B) orhtop(Path A). - SSD or NVMe only — HDD will tank performance.
- Check region — pick the
Regionsetting closest to your players.
9. When the next patch lands (1.0.3+)
The same workflow handles every patch:
- Backup
SaveGames/first (non-negotiable). - Stop the server.
- Pull the new image (Path B) or run
steamcmd +app_update 2394010 validate(Path A). - Restart.
- Connect and verify the world loads.
If the world doesn’t load:
- Check the server logs for the actual error.
- Confirm the client is on the same patch version as the server (Steam auto-updates clients).
- If all else fails, restore from backup and stay on the previous patch until community confirms the new one is stable.
10. Where to go next
- Palworld Getting Started — client-side setup for connecting to your new server.
- Palworld Core Mechanics — once players are on the server, the gameplay rules.
- Breeding & Condenser Guide — long-term breeding projects work great on a private server.
- 1.0 World Tree New Content — what’s new in 1.0 that your server should explore.
Sources
- thijsvanloef/palworld-server-docker — primary Docker image (1,839 commits as of 2026-07-16)
- KagurazakaNyaa/palworld-docker — alternate Docker image
- hmes98318/palworld-docker — multi-language README variant
- Pocketpair’s official Palworld dedicated server documentation — referenced via the Docker project READMEs (link may rotate)
- Docker docs (Compose reference) + SteamCMD developer documentation (SteamCMD reference) — Docker Compose pattern and SteamCMD Linux flow match the Pocketpair-recommended setup
Updated 2026-08-10 — written against the Palworld 1.0.2 build. Save migration and Docker pinning advice assume you want a stable production server; if you’re spinning up a quick test server, the :latest tag is fine.
Send us feedback
Found something wrong, missing info, or have a tip? Let us know — we read every message.