How to Host a Palworld Dedicated Server on LinuxGo back

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.

24 September 2026

by Clay Berndt

Palworld

Game Servers

SteamCMD

Self-Hosting

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:

  1. Pick a machine with at least 4 cores and 16 GB of RAM on SSD storage.
  2. Install SteamCMD and download the server anonymously; no Steam account or game licence is needed.
  3. Start it once so it writes its config folders, then stop it.
  4. Copy the default settings file into place and set a server name, a join password and an admin password.
  5. Run it under systemd with a stop script that saves the world first.
  6. Open 8211/udp, and add -publiclobby if anyone joins from Xbox or PS5.
  7. 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:

ResourcePocketpair's figureWhat it means in practice
CPU4 cores or more, recommendedA core count only; the page sets no clock speed
RAM16 GB recommended; 32 GB for larger servers8 GB "is also bootable, but increases the possibility of server crashes due to out of memory"
StorageA fast SSDThe page warns that "low-performance storage may corrupt saved data"
NetworkUDP 8211, changeableOne port for players; nothing else needs to be public
OS64-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:

PlayersRAMScheduled restartBasis
Up to 816 GBEvery 8 to 24 hoursPocketpair's 16 GB; a community restart schedule gives every 8 hours for 8 users on 16 GB, written before the leak fixes
9 to 1632 GBEvery 12 hoursThe same schedule's 16 users on 32 GB
17 to 3232 GBEvery 12 to 24 hoursPocketpair'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:

KeySet it to
ServerName, ServerDescriptionWhat players see in the server list
ServerPasswordA join password, unless the server is meant to be public
AdminPasswordA long random string. It unlocks admin chat commands and the REST API
ServerPlayerMaxNumYour real cap. Steam's store page gives 32 as the dedicated server maximum
RESTAPIEnabledTrue, for the clean shutdown in the systemd section
RCONEnabledFalse. Pocketpair has deprecated RCON and says it "is scheduled to stop functioning in an upcoming update"
bIsUseBackupSaveDataTrue. The backup section covers what it keeps
CrossplayPlatformsThe 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:

ArgumentEffect
-port=8211The UDP game port
-players=32Player cap passed at launch
-publiclobbyRegisters 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=textLog 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:

CommandDoes
/ShowPlayersLists 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
/SaveWrites the world to disk now
/Shutdown <seconds> <message>Stops the server after a countdown
/DoExitForce 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.

Clay Berndt

Written by

Clay Berndt

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 articles