How to set up a Palworld dedicated server
Self-host a Palworld dedicated server on Windows, Linux, or Docker with SteamCMD app 2394010. Configure PalWorldSettings.ini, open its UDP game port, verify whether it bound the optional 27015 query port, and keep it running after reboots.
A Palworld dedicated server is SteamCMD app 2394010. You can run it on 64-bit Windows, 64-bit Linux, or Pocketpair's official Docker image. The process is the same on every platform: download the server, boot it once, configure the generated files, open the UDP ports the process actually binds, and arrange for the process to restart after a reboot.
Check the machine first
Pocketpair's published requirements are a starting point, not a guarantee for a busy world:
| Resource | Requirement |
|---|---|
| CPU | 4 cores or more |
| RAM | 8GB can boot, 16GB recommended, 32GB or more for a large server |
| Storage | 30–50GB free on a fast SSD |
| Network | A public route to the UDP game port, 8211 by default |
| OS | 64-bit Windows or Linux |
The operating system, Docker, backups, and anything else on the machine need memory too. An 8GB computer does not leave all 8GB available to Palworld. Read the full Palworld RAM sizing guide before putting a large world on a small home PC.
If the hardware is already below those targets, a managed Palworld server avoids buying a dedicated PC just to reach the minimum.
Set up on Windows
Install SteamCMD
Download SteamCMD, extract it to a
permanent folder such as C:\steamcmd, and run it once so it can update itself.
Download PalServer
Open Command Prompt in the SteamCMD folder and install the server into a path without spaces.
steamcmd.exe +force_install_dir C:\palworld-server +login anonymous +app_update 2394010 validate +quitStart it once
Boot the server from its install folder. -publiclobby publishes it to Community Servers;
-players=32 sets the ceiling, which you can lower later.
cd /d C:\palworld-server
PalServer.exe -port=8211 -players=32 -publiclobbyStop and configure it
After the world finishes loading, press CTRL+C and edit
C:\palworld-server\Pal\Saved\Config\WindowsServer\PalWorldSettings.ini. The first boot
creates the Saved tree.
Open Windows Firewall
Run PowerShell as Administrator and allow the game port. Add the query rule only if
Get-NetUDPEndpoint shows that this server build bound UDP 27015.
New-NetFirewallRule -DisplayName "Palworld game" -Direction Inbound -Protocol UDP -LocalPort 8211 -Action Allow
Get-NetUDPEndpoint -LocalPort 8211,27015
# Optional: only when 27015 appears in the listener output
New-NetFirewallRule -DisplayName "Palworld query" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action AllowWindows updates and Palworld patches still need attention. If you do not want to maintain SteamCMD and startup tasks, Palworld hosting with automatic updates removes that work.
Set up on Linux
Create a dedicated user and keep the install outside a personal home
directory. The commands below assume SteamCMD is already installed and
available as steamcmd.
Create an install directory
sudo useradd --system --create-home --shell /usr/sbin/nologin palworld
sudo mkdir -p /opt/palworld
sudo chown palworld:palworld /opt/palworldDownload the server
sudo -u palworld steamcmd +force_install_dir /opt/palworld +login anonymous +app_update 2394010 validate +quitStart it once
cd /opt/palworld
sudo -u palworld ./PalServer.sh -port=8211 -players=32 -publiclobbyStop and configure it
After startup completes, press CTRL+C. Edit
/opt/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini as the palworld user.
Allow the UDP ports
For UFW, allow the game port. Run ss -lunp after startup and add the 27015 rule only if the
Palworld process also listens there.
sudo ufw allow 8211/udp
# Optional: only when Palworld bound this query port
sudo ufw allow 27015/udpIf the machine uses firewalld, nftables, a cloud security group, or a provider firewall, create equivalent inbound UDP rules there as well.
The server is not reachable until every firewall in front of it agrees. Check the host, router, VPS control panel, and cloud security group separately.
Set up with Docker
Pocketpair publishes an official Palworld dedicated-server image and a sample Compose file. Start from that sample so the image tag and helper script match, then make these changes:
services:
palworld-server:
restart: unless-stopped
command:
- -port=8211
- -players=32
- -publiclobby
ports:
- "8211:8211/udp"
volumes:
- ./Saved:/pal/Package/Pal/SavedRun docker compose up -d, then follow startup with docker compose logs -f.
Configuration appears on the host at
./Saved/Config/LinuxServer/PalWorldSettings.ini; worlds and backups remain
under the same ./Saved volume. Add a 27015:27015/udp mapping only when your
container command or image configuration enables and binds that query port.
Pocketpair does not recommend Docker Desktop on Windows or macOS for this server. Its slower
storage path can cause malfunctions or save corruption. Use the native Windows install or a
Linux Docker host, and verify that the Saved volume survives before inviting players.
Containers remove dependency setup, not networking, updates, or backups. Run Palworld on managed infrastructure if maintaining the image tag and persistent volume is the part you want to skip.
Configure PalWorldSettings.ini
The live file is inside the generated Saved directory:
| Platform | Configuration file |
|---|---|
| Windows | Pal/Saved/Config/WindowsServer/PalWorldSettings.ini |
| Linux | Pal/Saved/Config/LinuxServer/PalWorldSettings.ini |
| Official Docker image | Host: ./Saved/Config/LinuxServer/PalWorldSettings.ini |
DefaultPalWorldSettings.ini in the install root is only a template. Changes
there do not affect the running server. Boot once, stop cleanly, copy the
template's contents into the live file if it is empty, and edit the single
OptionSettings=(...) line.
For a public crossplay server, check at least these values:
OptionSettings=(ServerName="A unique server name",ServerPlayerMaxNum=32,CrossplayPlatforms=(Steam,Xbox,PS5,Mac))Always stop the server before editing. Palworld can overwrite changes made while it is running. Use the Palworld settings generator or read the complete configuration guide instead of rebuilding the long line by hand.
If hand-editing one long INI line is slowing the setup down, berrybyte's settings editor exposes the common controls in the dashboard.
Publish it for Xbox and PlayStation
Steam players can connect to public-ip:8211. Xbox and PS5 players cannot
paste that address; they search Community Servers for the exact
ServerName.
Use these launch flags on Windows, Linux, or in Compose:
| Flag | Purpose |
|---|---|
-port=8211 | Sets the UDP game port |
-players=32 | Sets the maximum concurrent players |
-publiclobby | Lists the server in Community Servers |
-publicip=x.x.x.x | Overrides public-IP detection when it is wrong |
-publicport=8211 | Overrides the advertised port; it does not change the listening port |
Keep CrossplayPlatforms=(Steam,Xbox,PS5,Mac) in the INI file. Give the
community list a minute after each restart. Routers without hairpin NAT may
prevent you from joining your own public listing from inside the same network;
test the LAN address locally and ask someone outside the network to test the
public listing.
Open the game port and verify the query port
Give the server a fixed LAN address or DHCP reservation, then forward the ports the process actually bound:
| Port | Protocol | Purpose |
|---|---|---|
| 8211 | UDP | Default player game traffic; required unless changed with -port |
| 27015 | UDP | Optional query/browser port used by some deployments; forward only when bound |
Palworld's current official launch example exposes the game port without a
separate query argument, and berrybyte's Palworld egg also allocates one UDP
game port. Older guides commonly list 27015. Check with
Get-NetUDPEndpoint on Windows, ss -lunp on Linux, or docker compose ps
for a container instead of opening it by assumption.
The host firewall, router, VPS firewall, and cloud security group are separate layers. Opening one does not open the others. Do not expose RCON or the REST API to the public internet just because their ports appear in the config.
Check for CGNAT
Port forwarding cannot work when your ISP controls another NAT layer upstream.
Compare the WAN/Internet address shown by your router with the public IPv4
address reported by an external IP checker. If they differ, or the router WAN
address is in 100.64.0.0/10, your connection is probably behind CGNAT.
Private WAN addresses in 10.0.0.0/8, 172.16.0.0/12, or 192.168.0.0/16
also show that the router does not directly own a public IPv4 address. Ask the
ISP for a public IPv4 address, use a tunnel or VPN that explicitly supports
inbound UDP port forwarding, move the server to a VPS, or use
Palworld hosting with public ports already assigned.
A normal consumer VPN does not automatically solve inbound UDP.
Run it after logout and reboot
Linux with systemd
Create /etc/systemd/system/palworld.service:
[Unit]
Description=Palworld dedicated server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=palworld
WorkingDirectory=/opt/palworld
ExecStart=/opt/palworld/PalServer.sh -port=8211 -players=32 -publiclobby
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
TimeoutStopSec=120
[Install]
WantedBy=multi-user.targetThen run:
sudo systemctl daemon-reload
sudo systemctl enable --now palworld
sudo journalctl -u palworld -fUse systemctl stop palworld before SteamCMD updates or config edits.
Windows with Task Scheduler
Create a StartServer.bat containing the cd and PalServer.exe command from
the Windows section. In Task Scheduler, create a task that:
- runs whether or not the user is logged in,
- triggers At startup,
- starts
cmd.exewith/c "C:\palworld-server\StartServer.bat"as its arguments, - restarts after failure, and
- allows enough shutdown time for Palworld to save the world.
Task Scheduler is appropriate for a batch file; sc.exe create is not,
because PalServer.exe is not a native Windows Service executable.
Docker
The Compose restart: unless-stopped policy restarts the container after a
failure and when the Docker daemon starts. Enable Docker itself at boot, and
stop cleanly with docker compose down before changing the image tag.
Order a managed Palworld server
If SteamCMD, CGNAT, firewall rules, and service supervision are more work than you want, choose a berrybyte Palworld plan. Plans are available for 4, 8, 16, or 32 players; the 8-player tier fits most groups. Checkout installs the server, assigns reachable ports, enables crossplay and community listing, and opens the dashboard once setup finishes.
Next steps
Connect by IP from Steam or search by name from a console.
Configure server settingsSet rates, difficulty, passwords, crossplay, and player limits.
How much RAM?Size a small group, active world, or full 32-player community.
Fix connection problemsWork through versions, ports, passwords, CGNAT, and community listing.
Frequently asked questions
How do I set up a Palworld dedicated server?
Install SteamCMD, download app 2394010, start PalServer.exe on Windows or PalServer.sh on Linux, and edit PalWorldSettings.ini after the first boot. Forward the UDP game port, 8211 by default. Forward UDP 27015 only if your deployment actually binds it for queries. Add -publiclobby for Community Servers.
What ports does a Palworld dedicated server use?
UDP 8211 is the default game port and must be reachable. Some deployments also bind UDP 27015 for server queries, but Palworld's current official launch command and berrybyte's egg do not require a separate query port. Check the process's listeners and forward only the ports it actually uses.
Where is PalWorldSettings.ini?
From the PalServer install folder, Windows uses Pal/Saved/Config/WindowsServer/PalWorldSettings.ini and Linux uses Pal/Saved/Config/LinuxServer/PalWorldSettings.ini. The official Docker image exposes the LinuxServer path under the host's ./Saved volume.
Why does port forwarding not work for my Palworld server?
Your ISP may put your connection behind carrier-grade NAT (CGNAT), so your router does not own the public IPv4 address. A forwarding rule on your router cannot cross the ISP's upstream NAT. Ask for a public IPv4 address, use a service that supports inbound UDP, rent a VPS, or use managed hosting.
How can Xbox or PS5 players find a self-hosted Palworld server?
Start the server with -publiclobby, give it a unique ServerName, and keep Xbox and PS5 in CrossplayPlatforms. Console players cannot paste an IP address; they search Community Servers by name.