How to Host a Palworld Server on a VPS (And the SteamCMD Error Nobody Mentions)
Start with the thing every other guide omits.
We ran the standard install on 18 August 2026 and it failed:
ERROR! Failed to install app '2394010' (Missing configuration)
We tried it four ways — anonymous login, force_install_dir before and after logon, and with both Linux and Windows platform overrides. Same error every time.
But the app is definitely there. Querying Steam’s own metadata anonymously works fine:
steamcmd +login anonymous +app_info_print 2394010 +quit
Which returns "name" "Palworld Dedicated Server" and "oslist" "windows,linux".
So the server exists, is listed for Linux, and its metadata is publicly readable — but the anonymous download refused. That points at the content depots requiring an account that owns Palworld, or a transient Steam-side problem. If you hit this exact error, you are not doing it wrong, and no amount of re-ordering flags will fix it. Try a Steam account that owns the game, and check Steam’s status before assuming your server is at fault.
Everything below is the correct path. We’re publishing it because it’s right, while being clear we could not complete the download to test it end to end.
Prepare the box
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd lib32gcc-s1
Run the server as its own user, not root. A game server exposed to the internet should not have root:
sudo useradd -m -s /bin/bash palworld
sudo su - palworld
Install the server
steamcmd +force_install_dir ~/palworld +login anonymous +app_update 2394010 validate +quit
Note the order: force_install_dir comes before login. SteamCMD tells you off otherwise — we saw it say “Please use force_install_dir before logon!” when we tried the other way round.
Steam’s app metadata gives the install directory as PalServer and the Linux executable as PalServer.sh — the Windows equivalent is PalServer.exe, which is worth knowing when a guide’s paths don’t match yours.
The launch flags, from Steam itself
This is the part usually copied from forum posts. Steam’s own app configuration lists the launch arguments as:
EpicApp=PalServer -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -publiclobby
Those three performance flags — -useperfthreads, -NoAsyncLoadingThread, -UseMultithreadForDS — are the official ones, not community folklore. -publiclobby is for community-server listing; drop it if your server is private.
A systemd unit that restarts on failure
Without this, a crash means a dead server until someone notices.
[Unit]
Description=Palworld Dedicated Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=palworld
WorkingDirectory=/home/palworld/palworld
ExecStart=/home/palworld/palworld/PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Save as /etc/systemd/system/palworld.service, then:
sudo systemctl daemon-reload
sudo systemctl enable --now palworld
Firewall: open one port, not all of them
Palworld’s documented default game port is UDP 8211.
sudo ufw default deny incoming
sudo ufw allow OpenSSH
sudo ufw allow 8211/udp
sudo ufw enable
Do not open a range. Exposed game servers are scanned continuously, and every port you open that isn’t the game is a port you’re defending for no reason. SSH plus 8211/udp is the whole list.
One caveat we’d rather flag than hide: we could not verify 8211 against a running server, because we could not complete the install. It’s the widely documented default — confirm it in your own PalWorldSettings.ini before opening anything.
The nightly restart is not optional
Palworld’s dedicated server is widely reported to grow its memory footprint over long uptime. The standard mitigation is a scheduled restart while nobody is playing:
sudo crontab -e
# restart at 05:00 daily
0 5 * * * /usr/bin/systemctl restart palworld
Do this from day one. We sized Palworld’s memory from published host tiers — about 4.25GB of baseline plus 186MB per player — and the growth behaviour is exactly why the advice there is to buy one tier above your calculated figure.
If the server dies without warning, confirm the cause before spending money:
sudo dmesg -T | grep -i -E 'killed process|out of memory'
A match means the kernel killed it for memory. No match means more RAM isn’t your fix.
Settings worth changing
PalWorldSettings.ini is where server rates and rules live. The ones people actually change are player count, XP and capture rates, gathering and drop multipliers, day/night length, PvP on or off, and whether death drops items.
Two rules that save pain:
Stop the server before editing. A running server rewrites the file and will overwrite your changes.
Change a few values at a time. Rate multipliers interact, and a world tuned by changing eight numbers at once is a world nobody can retune.
We have not published specific values or key names here, because we could not run the server to confirm them against a real config file, and a settings key that’s subtly wrong is worse than no list at all.
What it costs
| Option | RAM | Monthly |
|---|---|---|
| Hostinger KVM | 8 GB | $14.99 |
| Hostinger KVM | 4 GB | $11.99 |
| Cloudzy | 4 GB | $17.37 |
| UltaHost (3 vCPU) | 4 GB | $15.87 |
8GB is the right buy for anything up to about sixteen players, per our sizing work — and a VPS carries no player cap, unlike a slot plan.
Hostinger — $14.99 for 8GB, root access, and its VPS line is KVM, which matters for anything containerised later. The default recommendation here, and refund terms cover renewals if you size wrong.
Hetzner — the value answer above 8GB, with a dedicated-vCPU CCX line sold explicitly for “constantly high CPU usage”. Note availability limits since June and backups that exclude attached Volumes — relevant, since your world save is the thing you’d hate to lose.
Cloudzy — $17.37 for 4GB billed monthly with no term, the low-commitment option while you find out whether the server survives its first month.
UltaHost — $15.87 for 4GB with 3 vCPU, and its two-year rate is also its renewal rate.
Against a slot plan, an 8GB VPS at $14.99 undercuts Shockbyte’s 20-player Palworld tier at $21.99 by $7 and removes the player cap — but you own the setup, the restarts and the backups.
How we checked this
The failed install is our own result, on 18 August 2026. steamcmd +login anonymous +app_update 2394010 validate returned ERROR! Failed to install app '2394010' (Missing configuration) across four attempts: force_install_dir before logon and after, with @sSteamCmdForcePlatformType set to both linux and windows. The “Please use force_install_dir before logon!” message is also verbatim from our own run.
The metadata we could read. app_info_print 2394010 under anonymous login returned successfully, giving "name" "Palworld Dedicated Server", "oslist" "windows,linux", "installdir" "PalServer", the executables PalServer.sh and PalServer.exe, and the launch arguments EpicApp=PalServer -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -publiclobby. Those launch flags are from Steam’s own app configuration, which is why we’ve published them and not a list of settings keys.
The consequence: this tutorial is not end-to-end tested. We never had a running Palworld server. The apt commands, the systemd unit, the ufw rules and the cron entry are standard Linux practice we’re confident in — the unit file follows the executable name and flags Steam itself specifies — but we did not start this service and watch it come up. That’s a real limitation for a tutorial and you should treat the sequence as a correct plan rather than a verified transcript.
Specifically unverified: that UDP 8211 is the port your install uses, and any PalWorldSettings.ini key names or values — which is why the settings section describes what to change without listing keys. We’d rather leave that gap than fill it with a subtly wrong config line.
The memory-growth behaviour behind the nightly restart is the widely-held community position, not something we measured or confirmed against Pocketpair’s documentation. The sizing figures come from our fit through published host tiers, described in full in that article.
The OOM diagnostic is generic Linux behaviour we’ve documented first-hand elsewhere, not Palworld-specific testing.
Provider prices are figures established across this series rather than re-read today.
What we did not do: complete the server install, start the service, connect a client, edit a live config, or observe a restart.
The host links above are affiliate links. The most useful thing in this article is the error message at the top, which tells you a failed install isn’t your fault — and costs nothing.
FAQ
Why does SteamCMD say “Missing configuration” for app 2394010?
We hit this on every variant we tried, while Steam’s metadata for the app read fine anonymously. It points at the content depots needing an account that owns Palworld, or a transient Steam issue — not at a mistake in your command.
What port does a Palworld server use?
UDP 8211 is the documented default. Open that and SSH only — exposed game servers are scanned constantly, so don’t open a range.
What are the correct Palworld launch options?
Steam’s own app configuration lists -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS, plus -publiclobby for community listing. Those are official rather than community folklore.
How do I stop my Palworld server crashing after a few days?
Schedule a nightly systemctl restart while nobody is playing. The server is widely reported to grow its memory use over long uptime.
How much RAM do I need?
About 4.25GB of baseline plus 186MB per player by our derivation from published host tiers — so 8GB covers up to roughly sixteen players comfortably.
Should I run the server as root?
No. Create a dedicated user. An internet-facing game server with root access is an unnecessary risk for zero benefit.
Is a VPS cheaper than a Palworld host?
Usually. An 8GB VPS at $14.99 undercuts a 20-player slot plan at $21.99 and has no player cap — but you own the setup, restarts and backups.