What you need
- Any 64-bit PC or VM running Ubuntu Server
- RAM: 16 GB recommended; 8 GB may cause issues
- Disk: ~30 GB free (the download is 12–15 GB)
- CPU: 4 cores
- A user account with
sudo— don't run game servers as root
You do not need to own Palworld to host — the server (Steam app 2394010) downloads free via anonymous login. Only players need the game.
source: docs.palworldgame.com — server requirements
Step 1 — Install SteamCMD
SteamCMD needs the multiverse repo and 32-bit support enabled:
sudo add-apt-repository multiverse -y
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd -yStep 2 — Download the Palworld server
+force_install_dir puts the files in a predictable place instead of SteamCMD's version-dependent hidden paths.
/usr/games/steamcmd +force_install_dir ~/PalServer +login anonymous +app_update 2394010 validate +quitThis is the long step: 12–15 GB. Wait for:
Success! App '2394010' fully installed.If it stalls or errors, re-run the same command — it resumes and re-validates.
Step 3 — Fix steamclient.so
The server boots without this fix, but the library is part of how it identifies players. Do this before anyone plays.
/usr/games/steamcmd +force_install_dir ~/steamworks-sdk +login anonymous +app_update 1007 +quit
mkdir -p ~/.steam/sdk64/
cp ~/steamworks-sdk/linux64/steamclient.so ~/.steam/sdk64/Step 4 — Start the server
cd ~/PalServer
./PalServer.shThe server is up when it prints Setting breakpad minidump AppID and sits there.
Step 5 — Join
In Palworld: Join Multiplayer Game → Direct Connect → enter SERVER_IP:8211
Same network: connect to the server's LAN IP (find it with ip a).
Friends over the internet: pick one:
free · no software for anyone · ✕ CGNAT
Forward 8211/UDP on your router to the server's LAN IP; friends Direct Connect to PUBLIC_IP:8211. Set a DHCP reservation so the LAN IP never changes, and a ServerPassword since the port is public.
Doesn't work behind CGNAT (T-Mobile Home Internet, Starlink, some fiber ISPs). Use Option 2, 3, or 4 instead.
free tier · nothing for friends to install · ✓ works behind CGNAT
An agent on the server opens an outbound tunnel; playit.gg hands you a public address that friends Direct Connect to like any other server.
free for personal use · everyone installs a client · ✓ works behind CGNAT
Everyone installs the client and joins your private network, then connects to the server's mesh IP (e.g. 100.x.y.z:8211). Encrypted, usually peer-to-peer, nothing exposed to the public internet.
free tier · everyone installs a client · ✓ works behind CGNAT
Run a connector on the server's network, add the server as a resource, invite friends as users. Unlike a VPN they only reach that one resource — no open ports, per-user access you can revoke. Best when the server lives in a homelab you want locked down.
Can port forward → 1. CGNAT or friends who won't install anything → 2. Small trusted group → 3. Locked-down homelab → 4.
Quick reference
# Install SteamCMD
sudo add-apt-repository multiverse -y
sudo dpkg --add-architecture i386
sudo apt update && sudo apt install steamcmd -y
# Download server
/usr/games/steamcmd +force_install_dir ~/PalServer +login anonymous +app_update 2394010 validate +quit
# steamclient.so fix (BEFORE first launch)
/usr/games/steamcmd +force_install_dir ~/steamworks-sdk +login anonymous +app_update 1007 +quit
mkdir -p ~/.steam/sdk64/
cp ~/steamworks-sdk/linux64/steamclient.so ~/.steam/sdk64/
# Firewall
sudo ufw allow 8211/udp
# Launch
cd ~/PalServer && ./PalServer.sh
# Join in-game: Direct Connect → SERVER_IP:8211