← all guides

Host Your Own Palworld 1.0 Dedicated Server (Ubuntu + SteamCMD)

Last verified
July 10, 2026 — Palworld 1.0 launch day
Time
~10 minutes (mostly download time)

What you need

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 -y

Step 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 +quit

This 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

⚠ Character-wipe trap

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.sh

An error at startup is normal — every launch prints:

dlopen failed trying to load: steamclient.so ... No such file or directory

Ignore it. The next line should say OK — that means Step 3 worked:

[S_API] SteamAPI_Init(): Loaded '/home/YOU/.steam/sdk64/steamclient.so' OK.

The 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:

Option 1 — Port forwarding 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.

Option 2 — Tunnel service (playit.gg) 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.

Option 3 — Mesh VPN (Tailscale / NetBird) 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.

Option 4 — ZTNA (Twingate) 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.

Which one?

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