Game Hosting home

Palworld Linux Server: Install It on Ubuntu with SteamCMD

Install a Palworld Linux server on Ubuntu with SteamCMD, configure its Linux settings, expose UDP 8211, and manage safe updates and backups.

Difficulty
HardDifficulty Hard
Time to do
25 min
Reading
10 min
Updated
By
Game Hosting team

You will need

  • An Ubuntu 24.04 LTS x86_64 host with sudo access
  • An internet connection and several gigabytes of free SSD space
  • 16 GB of memory recommended by Pocketpair
  • Access to UDP 8211 at the host firewall or network edge

Yes. Pocketpair supports a native 64-bit Palworld dedicated server on Linux. On Ubuntu 24.04, you can install app 2394010 with SteamCMD and run PalServer.sh without the game client. This guide puts the server under its own Linux account, sets up a systemd service, opens the documented game port, and gives you a backup-first update routine. Pocketpair names Linux 64-bit, not a specific Ubuntu release; 24.04 is the target used here. A firewall rule alone does not prove that your friends can connect. For the shared app command and default paths, see the Palworld SteamCMD reference; for the other ways to run a server, see the dedicated-server overview.

Choose a 64-bit Ubuntu host with enough memory#

Pocketpair lists Windows 64-bit and Linux 64-bit as supported server operating systems. Its current requirements recommend 16 GB of memory and a four-core CPU; it says 8 GB can boot but raises the chance of an out-of-memory crash. The guide does not list a supported Ubuntu release, so these steps use Ubuntu 24.04 LTS on x86_64 rather than claiming Pocketpair tested that exact release. Check your VPS architecture before you create it: an ARM instance is not the Linux 64-bit x86 build this recipe targets.

Use an SSD. Pocketpair warns that slow storage can corrupt saved data, so a server disk is part of your save-protection plan, not just a place to install binaries. Keep enough free space for the game, updates and a separate copy of Pal/Saved. If you would rather package the service with Compose, see Docker as the alternative on Linux.

The 16 GB figure is official guidance, not a guarantee for every world or player group. Avoid copying old forum estimates about a universal memory leak or a mandatory restart schedule. Observe your own workload and keep a backup before changing the server or its world.

Keep the server on a machine that can stay powered on for the hours your group wants to play. A VPS removes home power and router upkeep from your list, but its firewall and operating system are still yours to maintain. Linux gives you control over the process; it does not turn a self-managed machine into a managed game service.

Create a separate account for the server#

Run Palworld as a dedicated Linux user, not as root. This keeps the server’s files and permissions separate from system files and from the account you use to administer Ubuntu.

  1. Create the steam account

    bash
    sudo adduser --disabled-password --gecos "" steam

    Check that Ubuntu created the account and its home directory:

    bash
    getent passwd steam

    The output should include /home/steam and a shell such as /bin/bash. This Linux account does not set the password players use inside Palworld.

  2. Create SteamCMD and server folders

    bash
    sudo install -d -o steam -g steam /home/steam/steamcmd /home/steam/Palworld

    Check the owner before installing anything:

    bash
    stat -c '%U:%G %n' /home/steam/steamcmd /home/steam/Palworld

    Both folders should belong to steam. If they do not, correct ownership before running SteamCMD; installing once as root can leave files the service user cannot update.

    Keep administrator commands separate from the game process. Use sudo for system packages, the service file, and firewall rules; run SteamCMD and Palworld as steam. That division also makes it easier to see which files should be writable by the server and which changes require an administrator.

Install SteamCMD and download Palworld’s server app#

Pocketpair’s Linux deployment guide uses SteamCMD app 2394010 and launches PalServer.sh. The download is several gigabytes, so start it in a terminal session that can stay connected until SteamCMD finishes. These dependency commands were exercised in a clean Ubuntu 24.04 container; the account and downloaded files stayed inside that disposable test environment.

SteamCMD is a 32-bit Linux command-line tool. Add its architecture support and install its runtime libraries; this is not a claim that Palworld’s 64-bit server has a 32-bit-library defect.

bash
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y ca-certificates wget tar libc6:i386 libstdc++6:i386 lib32gcc-s1

Download Valve’s SteamCMD Linux archive as the steam user:

bash
sudo -u steam -H bash -lc 'cd ~/steamcmd && wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && tar -xzf steamcmd_linux.tar.gz'

Then refresh app information, select Linux, set the install folder before login, and download the server anonymously:

bash
sudo -u steam -H /home/steam/steamcmd/steamcmd.sh \
  +app_info_update 1 \
  +@sSteamCmdForcePlatformType linux \
  +force_install_dir /home/steam/Palworld \
  +login anonymous \
  +app_update 2394010 validate \
  +quit

The shorter command on Pocketpair’s page returned Failed to install app '2394010' (Missing configuration) in the clean test. The explicit platform and install folder command above proceeded to download the app; if Steam still returns that error, check its output and retry the same command once before changing unrelated libraries or server files. This observed workaround does not explain why SteamCMD produced the first error.

Confirm both expected files exist before you move on:

bash
test -x /home/steam/Palworld/PalServer.sh && echo 'PalServer.sh is ready'
test -f /home/steam/Palworld/DefaultPalWorldSettings.ini && echo 'Default settings template is ready'

If either check fails, the download did not finish into /home/steam/Palworld. Do not start a systemd service against an empty or partial directory.

The explicit install directory makes the later service and backup paths predictable. If you choose another folder, replace /home/steam/Palworld everywhere in this guide, including WorkingDirectory, ExecStart, and the Pal/Saved copy. Mixing two paths can produce a server that appears to start but uses a different world than the one you meant to preserve.

Start PalServer.sh before editing Linux settings#

Start the executable from its install directory. The first run creates the Linux settings path and other saved data directories.

  1. Start the server from its install folder

    bash
    sudo -u steam -H bash -lc 'cd /home/steam/Palworld && ./PalServer.sh'

    Watch the console for startup errors. Stop this first foreground run with Ctrl+C after you have confirmed the process stays up; do not treat that as proof that a player can reach it over the internet.

  2. Create the active Linux settings file

    Pocketpair’s configuration guide places the Linux file at Pal/Saved/Config/LinuxServer/PalWorldSettings.ini. The first run creates the directory and can leave a one-byte, empty active file there. Copy the default template into that placeholder on the first setup:

    bash
    sudo -u steam cp \
      /home/steam/Palworld/DefaultPalWorldSettings.ini \
      /home/steam/Palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

    Confirm that the copied file has content and is writable by the service account:

    bash
    stat -c '%U:%G %n' /home/steam/Palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

    Edit that file, not the template. A change does not apply until the server restarts. If the destination does not exist, check that the first run completed and that you used the same install directory.

    Before replacing a non-empty active file, make a dated copy: copying the template over customized settings resets them to defaults. For later changes, edit the active file and change only the options you intend to adjust; check the server log after restart if a setting seems to be ignored.

Leave old performance flags such as -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS out unless you have a specific reason to test them. Pocketpair’s current launch arguments reference says leaving that group unset may improve performance in v1.0 and later. This guide does not benchmark either setting.

Let systemd start the server and retry a crash#

A systemd unit starts the server during boot and can restart it after a failed process exit. It does not restore a save or prove that the world shut down cleanly. Use an explicit working directory so the executable finds the files installed under the steam account.

Open /etc/systemd/system/palworld.service in a root editor:

bash
sudo nano /etc/systemd/system/palworld.service

Save this content in that file:

ini
[Unit]
Description=Palworld Dedicated Server
Wants=network-online.target
After=network-online.target

[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/Palworld
ExecStart=/home/steam/Palworld/PalServer.sh
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
TimeoutStopSec=180

[Install]
WantedBy=multi-user.target

SIGINT mirrors an interrupt from a terminal, and the three-minute timeout gives the process time to exit before systemd forces it down. Do not use automatic restart as a backup policy. If you need to maintain the server, use systemctl stop and wait for it to become inactive before copying or updating files.

Load the unit, start it, and enable it at boot:

bash
sudo systemctl daemon-reload
sudo systemctl enable --now palworld
sudo systemctl status palworld --no-pager

Check recent output with:

bash
sudo journalctl -u palworld -n 50 --no-pager

A failed unit or a rapid restart loop usually means the path, permissions, or server process needs attention. Read the journal first; do not repeatedly reinstall the app while the service is still running.

After you enable the service, test a planned host reboot while nobody is playing, then check systemctl status and the journal before opening the world again. enable records the boot behavior; it does not prove your particular provider, VM, or storage comes back as expected after maintenance.

Allow UDP 8211 through the firewall#

Palworld uses UDP 8211 by default. Pocketpair’s current server requirements identify that game port; they do not establish UDP 27015 as a universal requirement.

If UFW is active, allow the game traffic:

bash
sudo ufw allow 8211/udp
sudo ufw status verbose

On a VPS, also allow UDP 8211 in the provider’s network firewall or security group. On a home connection, forward the same UDP port from the router to the Ubuntu host and keep its local address stable. You do not need router forwarding on a VPS unless another network device sits in front of it.

A UFW rule confirms only the local firewall setting. A provider rule, router rule, public address, and client route can still prevent a join. Check the server from a client on the network you intend to support before inviting the group; the commands here do not test an outside connection. If UFW is inactive, do not enable it over SSH until you have allowed your SSH port too.

If the process is running but nobody outside the host can reach it, verify each layer once: the Palworld listener, the Linux firewall, then the provider firewall or router. Ask the VPS provider about inbound UDP access if those settings are correct. Do not add random ports from an older guide as a substitute for locating the blocked layer.

Back up the world before updating with SteamCMD#

Stop the service and copy the saved files to a separate directory before changing server binaries. The copy below is on the same machine, so it protects against a bad update but not against loss of the host or disk; keep another copy off the server.

bash
sudo systemctl stop palworld
sudo systemctl status palworld --no-pager

Proceed only after the unit reports inactive. Then make a dated copy of the server’s Pal/Saved folder:

bash
stamp=$(date -u +%Y%m%d-%H%M%S)
sudo install -d -o steam -g steam /home/steam/backups
sudo -u steam cp -a \
  /home/steam/Palworld/Pal/Saved \
  "/home/steam/backups/Saved-$stamp"

Run the same SteamCMD update against the exact install folder, then start the service again:

bash
sudo -u steam -H /home/steam/steamcmd/steamcmd.sh \
  +app_info_update 1 \
  +@sSteamCmdForcePlatformType linux \
  +force_install_dir /home/steam/Palworld \
  +login anonymous \
  +app_update 2394010 validate \
  +quit
sudo systemctl start palworld
sudo journalctl -u palworld -n 50 --no-pager

Keep the old copy until the server is running on the intended build and your players have checked their world. validate checks the installed app files; it does not test a save restore. Preserve the backup instead of deleting it just because the service reached active.

If maintaining a Linux account, service, update window, and backup routine is more work than your group wants, Game Hosting’s Palworld hosting includes an integrated panel for settings and restarts plus three free backup slots. That moves routine host controls into the panel; it does not remove the need to check your world or keep a recovery plan.

Quest complete

Before you invite your friends, check that the intended world loaded and that each player can connect. If those checks pass, you're ready for a session; if you'd rather not keep a PC on, that's what we're here for.

Quick answers

Can you run a Palworld dedicated server on Linux?

Yes. Pocketpair documents a native 64-bit Linux server installed with SteamCMD.

What Ubuntu version does the Palworld server need?

Pocketpair lists Linux 64-bit but does not name an Ubuntu release. This recipe targets Ubuntu 24.04 LTS.

How do I update a Palworld server on Linux?

Stop the service, copy Pal/Saved to a separate backup location, update app 2394010 with SteamCMD, then start the service and inspect its logs.

Which port does a Palworld Linux server use?

UDP 8211 is the default game port. Allow it through each relevant firewall; a local rule does not prove that an outside player can reach the server.

How much RAM does a Palworld server need?

Pocketpair recommends 16 GB. An 8 GB server can boot, but has a higher risk of an out-of-memory crash.