How to Host a Palworld Dedicated Server on Linux
A Palworld dedicated server holds up to 32 players in one persistent world, against four in a co-op session, and the world keeps running when the host logs off. Pocketpair ships the server for Linux as a free SteamCMD download, and since version 1.0 left early access on 10 July 2026 its documentation has changed in ways older guides miss: the multithreading flags every tutorial copies are no longer recommended, and RCON is deprecated in favour of a REST API. On Ubuntu or Debian the setup runs from Pocketpair's own hardware requirements through the install, PalWorldSettings.ini and a systemd unit that saves the world before it stops, to the one port players need, crossplay for Xbox and PS5, backups and updates. Server-side mods are the one thing a Linux server cannot run.
Loading...
Palworld server hosting in short
A Palworld dedicated server is a free download from Steam (app 2394010) that runs natively on 64-bit Linux and listens on one UDP port, 8211. The procedure on a clean Ubuntu or Debian box:
- Pick a machine with at least 4 cores and 16 GB of RAM on SSD storage.
- Install SteamCMD and download the server anonymously; no Steam account or game licence is needed.
- Start it once so it writes its config folders, then stop it.
- Copy the default settings file into place and set a server name, a join password and an admin password.
- Run it under systemd with a stop script that saves the world first.
- Open 8211/udp, and add
-publiclobbyif anyone joins from Xbox or PS5. - Turn on the built-in rolling backups and copy the save folder off the machine.
The example address, 203.0.113.10, comes from the range reserved for documentation. Substitute your own.
Hardware Pocketpair recommends
Pocketpair's requirements page has five lines:
| Resource | Pocketpair's figure | What it means in practice |
|---|---|---|
| CPU | 4 cores or more, recommended | A core count only; the page sets no clock speed |
| RAM | 16 GB recommended; 32 GB for larger servers | 8 GB "is also bootable, but increases the possibility of server crashes due to out of memory" |
| Storage | A fast SSD | The page warns that "low-performance storage may corrupt saved data" |
| Network | UDP 8211, changeable | One port for players; nothing else needs to be public |
| OS | 64-bit Linux (Ubuntu, AlmaLinux and others) | The same binary covers both distribution families |
Of the three games in this series, Palworld asks for the most RAM by a wide margin. A Valheim server runs on a fraction of it, and a small Minecraft world on a quarter.
The RAM figure is the one to respect. A game server that runs out of memory does not slow down; the kernel kills it, and anything since the last save is gone. The world itself drives the load more than the player count does: Pocketpair's configuration reference flags BaseCampMaxNumInGuild, BaseCampWorkerMaxNum (maximum 50 Pals working per base) and PalSpawnNumRate as settings that raise server load when turned up. Thirty players each running a full base of workers is a different server from thirty players exploring.
Memory in use also grows the longer the process runs. Pocketpair's patch notes list fixes for dedicated-server memory leaks in v0.3.10 (30 October 2024) and v0.5.3 (9 April 2025), an optimisation for long sessions in v0.6.2 (10 July 2025), and more leak fixes in the 1.0 release notes. The measured reports predate all of those. In January 2024, users of the thijsvanloef Docker image reported an idle server at about 3.5 GB and a four-player server that ran out of its 8 GB after five hours. After 1.0, hosting provider ConnectHosting wrote on 11 July 2026 that the leak survived 1.0.3, and recommends daily restarts and 24 GB for a 32-player world, without publishing measurements.
An estimate built from those sources, with the restart interval as part of the sizing:
| Players | RAM | Scheduled restart | Basis |
|---|---|---|---|
| Up to 8 | 16 GB | Every 8 to 24 hours | Pocketpair's 16 GB; a community restart schedule gives every 8 hours for 8 users on 16 GB, written before the leak fixes |
| 9 to 16 | 32 GB | Every 12 hours | The same schedule's 16 users on 32 GB |
| 17 to 32 | 32 GB | Every 12 to 24 hours | Pocketpair's 32 GB for larger servers, above ConnectHosting's 24 GB for 32 players |
Pocketpair also deprecates Docker Desktop for running the server, saying it "increases the risk of saved data corruption and malfunction". Docker Engine on a Linux host is a separate product, and Pocketpair publishes its own compose file for it. Running the binary under systemd needs neither.
Install SteamCMD and the server
Step 1: SteamCMD
SteamCMD is Valve's command-line client for downloading dedicated servers. It is a 32-bit program, so the i386 architecture has to be enabled first. On Ubuntu, the package lives in the multiverse component:
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd
On Debian, add non-free to the components in your apt sources, then run the same dpkg, apt update and apt install lines. Valve's SteamCMD page lists both.
Step 2: A service user and the download
Run the server as its own unprivileged user, so a compromised game process owns one home directory and nothing else:
sudo useradd --create-home --shell /bin/bash steam
sudo -u steam /usr/games/steamcmd +force_install_dir /home/steam/palworld \
+login anonymous +app_update 2394010 validate +quit
+force_install_dir has to come before +login, or SteamCMD ignores it. The same command later updates the server in place.
Step 3: First start
The config and save directories only exist after the server has run once:
sudo -u steam /home/steam/palworld/PalServer.sh
Wait until the log settles, then stop it with Ctrl+C.
If that first start fails with .steam/sdk64/steamclient.so: cannot open shared object file, the fix in Pocketpair's v0.1.5.1 documentation still applies: create ~/.steam/sdk64/ for the steam user and copy in steamclient.so from the Steamworks SDK Redist (app 1007). The current documentation no longer mentions the error, and the 1.0 server download carries the Linux redistributable itself. The old page also warns that applying the fix on a server already in play sends every player back to character creation, so do it before anyone joins.
Write PalWorldSettings.ini
The server reads its settings from one file that you create by copying the default:
cd /home/steam/palworld
sudo -u steam cp DefaultPalWorldSettings.ini Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
Editing DefaultPalWorldSettings.ini itself changes nothing; Pocketpair's documentation says so, and the directory only exists after the first start. The copied file contains a section header and one long line of settings:
[/Script/Pal.PalGameWorldSettings]
OptionSettings=(ServerName="Lamball Ranch",ServerDescription="Friends only",AdminPassword="long-random-admin-password",ServerPassword="join-password",ServerPlayerMaxNum=16,RESTAPIEnabled=True,RESTAPIPort=8212,RCONEnabled=False,bIsUseBackupSaveData=True,CrossplayPlatforms=(Steam,Xbox,PS5,Mac))
Keep everything inside the one OptionSettings=(...) line and edit values in place; the real line is far longer than this excerpt and carries every gameplay rate as well. The settings that need a decision on day one, from Pocketpair's configuration reference:
| Key | Set it to |
|---|---|
ServerName, ServerDescription | What players see in the server list |
ServerPassword | A join password, unless the server is meant to be public |
AdminPassword | A long random string. It unlocks admin chat commands and the REST API |
ServerPlayerMaxNum | Your real cap. Steam's store page gives 32 as the dedicated server maximum |
RESTAPIEnabled | True, for the clean shutdown in the systemd section |
RCONEnabled | False. Pocketpair has deprecated RCON and says it "is scheduled to stop functioning in an upcoming update" |
bIsUseBackupSaveData | True. The backup section covers what it keeps |
CrossplayPlatforms | The default admits Steam, Xbox, PS5 and Mac; remove any you want to exclude |
If a change to the file seems to be ignored, look for a WorldOption.sav in the world's save folder. Hosting providers report that when one is present, typically after a world migrated from co-op, its values win over the .ini.
Launch arguments after 1.0
Most Palworld tutorials, including many written in 2024 and 2025, tell you to start the server with -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS. Pocketpair's arguments page now says the opposite: "In v1.0 and later, leaving this parameter unset may improve performance." Its own sample compose file still passes them, so treat the flags as something to test against your world rather than a default. Start without them.
The arguments still worth knowing:
| Argument | Effect |
|---|---|
-port=8211 | The UDP game port |
-players=32 | Player cap passed at launch |
-publiclobby | Registers the server as a community server, which console players need to find it |
-publicip= / -publicport= | The address and port advertised for a community server, when they differ from what the server detects |
-logformat=text | Log format, text or json |
Run it under systemd with a clean shutdown
Pocketpair's documentation says nothing about how the server treats SIGTERM, which is what systemd sends on stop. So the unit saves through the REST API and asks the server to shut itself down before systemd signals anything.
The stop script, at /home/steam/palworld-stop.sh:
#!/bin/sh
# Save, give players a 10-second warning, then wait for the process to exit.
AUTH="admin:$(cat /home/steam/.palworld-admin-password)"
API=http://127.0.0.1:8212/v1/api
curl -s -u "$AUTH" -X POST "$API/save"
curl -s -u "$AUTH" -X POST "$API/shutdown" \
-H 'Content-Type: application/json' \
-d '{"waittime": 10, "message": "Server restarting in 10 seconds"}'
while kill -0 "$MAINPID" 2>/dev/null; do sleep 1; done
Put the admin password in /home/steam/.palworld-admin-password, owned by steam with mode 600, and make the script executable. Pocketpair's REST API reference specifies HTTP Basic authentication with the admin password; the username, admin, is the one hosting providers and the API client libraries use.
The unit, at /etc/systemd/system/palworld.service:
[Unit]
Description=Palworld dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/palworld
ExecStart=/home/steam/palworld/PalServer.sh -port=8211 -players=16
ExecStop=/home/steam/palworld-stop.sh
Restart=on-failure
RestartSec=15
TimeoutStopSec=90
[Install]
WantedBy=multi-user.target
systemd hands $MAINPID to ExecStop, so the loop at the end of the script waits for the server's own exit. If the API does not answer, the 90-second TimeoutStopSec expires and systemd falls back to killing the process. Start it and follow the log:
sudo systemctl daemon-reload
sudo systemctl enable --now palworld
journalctl -u palworld -f
Put the restart interval that matches your player count into cron as systemctl restart palworld, at hours nobody plays. The stop script saves the world first, so a restart costs players a reconnect and nothing more.
Ports, crossplay and joining
One firewall rule lets players in:
sudo ufw allow 8211/udp comment 'Palworld'
Leave 8212 (REST) and 25575 (RCON) closed. Both of Pocketpair's API pages carry the same warning, that the APIs "are not designed to be exposed directly to the Internet", and Basic authentication over plain HTTP sends the admin password in a reversible form with every request. Reach them from the server itself, as the stop script does, or through an SSH tunnel. Some guides also open 27015/udp as a Steam query port; Pocketpair's own compose file publishes only 8211.
How players join depends on their platform. Crossplay across Steam, Xbox, PS5 and Mac is on by default, but the Xbox and PS5 versions cannot type in an address: they only see community servers. Add -publiclobby to the ExecStart line and the server appears in the in-game community list for everyone. Steam players can skip the list and connect directly with 203.0.113.10:8211 and the join password.
Hosting at home adds one more trap. Pocketpair's community server page notes that if your router does not support hairpin NAT, you cannot join a community server running on your own network, even though friends outside can.
Admin commands and the REST API
In game, type /AdminPassword followed by the admin password in chat to unlock the admin commands. The useful ones, from Pocketpair's command list:
| Command | Does |
|---|---|
/ShowPlayers | Lists connected players with their IDs |
/KickPlayer <SteamID>, /BanPlayer <SteamID>, /UnBanPlayer <SteamID> | Removes or bans a player by Steam ID |
/Broadcast <message> | Sends a message to everyone |
/Save | Writes the world to disk now |
/Shutdown <seconds> <message> | Stops the server after a countdown |
/DoExit | Force stop, with no countdown |
The REST API covers the same ground without anyone being in game, which suits scripts. Pocketpair labels it experimental. GET /v1/api/players lists who is online, GET /v1/api/metrics reports server FPS, player count and uptime, and POST /v1/api/announce posts a message. A cron job that announces the nightly restart five minutes ahead is three lines of shell built from the stop script.
Backups and moving a co-op world
With bIsUseBackupSaveData=True, the server keeps rolling copies of the world by itself. The configuration reference gives the schedule as 5 copies at 30-second intervals, 6 at 10 minutes, 12 at one hour and 7 at one day, and notes that the option increases disk load, which is one more reason for an SSD.
Those copies sit on the same disk as the world, so they protect against a bad save, not a dead drive. Copy the whole Pal/Saved directory off the machine every night:
tar -C /home/steam/palworld -czf /var/backups/palworld-$(date +%F).tar.gz Pal/Saved
rsync -a /var/backups/ backup@198.51.100.20:/srv/palworld/
The world lives under Pal/Saved/SaveGames/0/, in a folder named with the world's ID, holding Level.sav, LevelMeta.sav and a Players directory with one file per character. Unpack a backup into a scratch install once and start a server against it; a backup nobody has restored is an assumption.
Moving a co-op world onto the server uses the same folder: copy the world directory from the host's PC into Pal/Saved/SaveGames/0/, and set DedicatedServerName in Pal/Saved/Config/LinuxServer/GameUserSettings.ini to that folder's name. Every guest keeps their character. The host does not: in co-op the host's character file is always 00000000000000000000000000000001.sav, and the server treats the host as a new player unless that file is remapped to their real player ID. The community tools that did the remapping were built for pre-1.0 save formats, so test on a copy.
Updating after a patch
Pocketpair has shipped five patches since 1.0, the latest being v1.0.5 on 15 September 2026, and a client on a newer version than the server cannot join it. Updating is the SteamCMD command from the install step, with the server stopped:
sudo systemctl stop palworld
sudo -u steam /usr/games/steamcmd +force_install_dir /home/steam/palworld \
+login anonymous +app_update 2394010 validate +quit
sudo systemctl start palworld
Take a backup first. If a patch damages the world, the backup is the only way back.
Mods on a Linux server
Palworld gained Steam Workshop support in the v0.7 update of December 2025, but Pocketpair's mod documentation is explicit about servers: "At this time, server-side mods work only on the dedicated server with Windows edition." On Linux the server runs unmodded. Client-only cosmetic mods do not need server support, and whether the server accepts modded clients is the bAllowClientMod setting.
If a server-side mod is the point of the whole server, that decides the operating system first. Pocketpair also warned on 9 July 2026, the eve of 1.0, that mods written for early-access builds cause crashes and corrupt saves on 1.0.
FAQ
How much RAM does a Palworld server need?
Pocketpair recommends 16 GB and 32 GB for larger servers. Its requirements page says 8 GB will boot but raises the chance of the server crashing when it runs out of memory. Budget the RAM for the server alone and leave the operating system its own couple of gigabytes on top.
Which ports does a Palworld server use?
Players connect on 8211/udp, and that is the only port Pocketpair's own Docker Compose file publishes. RCON (25575/tcp) and the REST API (8212/tcp) are admin interfaces that Pocketpair says should stay on the LAN, so keep them closed in the firewall and reach them from the server itself or over SSH.
Can Xbox and PS5 players join a Palworld dedicated server?
Yes. Crossplay across Steam, Xbox, PS5 and Mac is on by default, but console players can only find the server if it is launched as a community server with -publiclobby. Steam players can also join by typing the address and port directly.
Can I move my co-op world to a dedicated server?
Yes, by copying the world folder into the server's save directory, but the co-op host's character does not come across cleanly: the host's player file has a fixed ID, and the host starts a new character unless that file is remapped. Back up both sides before trying it.
Do mods work on a Linux Palworld server?
Not server-side ones. Pocketpair's mod documentation states that server-side mods currently work only on the Windows edition of the dedicated server. A Linux server runs unmodded.
Deploying on Serverside
Palworld wants 16 GB of RAM for the server process alone, and a world full of working bases runs on one machine's CPU for every player on it. A Serverside game server is a single-tenant AMD Ryzen box with full root on our own network, AS55285, provisioned in under a minute, so the SteamCMD download is the longest wait in the setup. Port 8211 is also a DDoS target the moment its address is shared. Always-on mitigation runs inline in front of every Serverside server, so a UDP flood is filtered upstream instead of filling the link your players share; the DDoS attack types guide explains why that filtering cannot happen on the host.
The same machine can host more than one world. Each Palworld instance needs its own port, install directory and memory budget, and the game server hosting guide covers running several titles side by side under a panel. For the other two games in this series, see how to host a Valheim server and how to host a Minecraft server.
Written by
CEO, Serverside.com & Host Havoc
Clay is the CEO of Serverside.com and Host Havoc, with more than a decade of experience running globally distributed hosting infrastructure and a game-server platform that has served over 200,000 customers.
Keep reading
View all articlesEnjoyed this article?
Get new guides and engineering write-ups in your inbox. No spam, unsubscribe anytime.



