Running your own Palworld dedicated server is the difference between a co-op session that dies the moment the host logs off and a persistent world your friends can drop into at 3 a.m. while you sleep. With Palworld reaching more than 32 million players across Steam and Xbox and peaking above 2.1 million concurrent Steam players in January 2024, the demand for always-on, self-hosted worlds has never been higher — and with the game’s full 1.0 release scheduled for July 10, 2026, now is the ideal moment to get your infrastructure in place.

This tutorial walks you through building a production-grade Palworld dedicated server on Linux in 12 clearly numbered steps. The core install takes about 30 minutes on a decent connection. You will install SteamCMD, pull the server binaries with the correct Steam app ID, fix the notorious steamclient.so error, tune PalWorldSettings.ini for up to 32 players, open the right UDP ports, wrap everything in a systemd service so it restarts automatically, enable RCON for remote administration, and set up automated backups. We finish with what changes for dedicated-server admins when Palworld 1.0 introduces server clustering on July 10.

Everything here uses the free, anonymous SteamCMD download — you do not need to own Palworld to host it, only to play on it. Commands are written for Ubuntu 22.04 LTS and 24.04 LTS, the two most common choices for a self-hosted game server, but they translate cleanly to Debian and other Debian-derived distributions.

Why Run a Palworld Dedicated Server?

Palworld gives you three ways to play together, and it is worth understanding the trade-offs before you commit an evening to server setup. The simplest is invite-based co-op: one player hosts directly from the game client, up to four players join, and the world only exists while the host is online. The second is paid managed hosting, where a company spins up an instance for a monthly fee. The third — and the subject of this guide — is a self-managed dedicated server you control end to end.

A dedicated server is the only option that supports the full 32-player cap, runs 24/7 independent of any single player, and lets you edit every gameplay rate, difficulty setting, and PvP toggle in a plain-text config file. It is also the cheapest path at scale: a $5–$12/month VPS or a spare box at home can comfortably host a small community, and you keep full ownership of your save files. The trade-off is that you become the administrator — responsible for updates, backups, firewall rules, and the occasional 2 a.m. restart. This tutorial is designed to automate as much of that responsibility away as possible.

If you have already stood up an ARK dedicated server or a Valheim dedicated server, the shape of this process will feel familiar: SteamCMD download, an INI file, a handful of ports, and a service wrapper. Palworld’s quirks are specific — the UDP-only game port and the exact app ID trip up newcomers constantly — so read each step carefully even if you are a veteran server admin.

Palworld Dedicated Server Requirements and Prerequisites

Palworld’s server process is memory-hungry rather than CPU-hungry, and it is single-thread-bound, which means raw core count matters less than per-core speed and total RAM. The table below lists the versions and specifications this guide assumes. Undersizing RAM is the single most common reason a Palworld dedicated server crashes under load, so treat the recommended column as a floor for anything beyond a handful of players.

ComponentMinimumRecommended (16–32 players)
Operating systemUbuntu 22.04 LTS / Debian 11Ubuntu 24.04 LTS (64-bit)
CPU2 vCPU (high single-thread clock)4 vCPU, 3.0 GHz+ per core
RAM8 GB16 GB (server can use 10–14 GB under load)
Storage40 GB SSD60 GB+ NVMe SSD (saves grow over time)
Network50 Mbps up, static or port-forwarded IP100 Mbps+ symmetrical
Server app ID2394010 (dedicated server — free, anonymous login)
Client app ID1623730 (the game itself — required only to play)

You also need three things before you start: SSH access to the machine with a user that has sudo privileges, an open path through any cloud provider firewall or home router (we cover the exact ports next), and roughly 30 minutes. If you are hosting from home, you will additionally need to forward the game port on your router to the server’s local IP address. Cloud VPS instances from providers such as Hetzner, DigitalOcean, or OVH remove the port-forwarding step but require you to open ports in the provider’s security-group or firewall panel, not just in the OS.

Sizing RAM by Player Count

A useful rule of thumb: budget roughly 8 GB of RAM as a baseline plus the memory the world state consumes as your base grows. A 4-player server rarely exceeds 6–8 GB, a 10-player community server is comfortable at 12 GB, and a full 32-player server should have 16 GB with headroom so the Linux page cache is not starved. Because the simulation is single-thread-limited, a server with 32 active players on a sprawling base can hit a CPU wall long before it runs out of memory — which is exactly the bottleneck that 1.0’s server clustering is designed to relieve.

Ports, App IDs, and Four Facts to Get Right First

More Palworld dedicated server setups fail on networking than on anything else, and almost always for the same reason: the game port is UDP, not TCP. If you open TCP 8211 and nothing else, your server will start cleanly, appear healthy in the logs, and remain completely invisible and unjoinable. Commit the port table below to memory.

PortProtocolPurposeRequired?
8211UDPMain game port — players connect hereYes
27015UDPSteam query — lists the server in the community browserRecommended
25575TCPRCON — remote console administrationOptional
8212TCPREST API — programmatic admin controlOptional

The second thing that derails setups is misinformation. A large amount of outdated advice — including answers from AI assistants — circulates with the wrong numbers. Before you touch a terminal, internalize these four verified facts, because getting any one of them wrong will cost you an hour of debugging:

  • The dedicated-server app ID is 2394010, not 2394560. The number 1623730 is the game client, which the server does not need.
  • The game port default is 8211/UDP, not 7777. That older number belongs to a different engine’s convention and does not apply to Palworld.
  • The server download is free. SteamCMD’s anonymous login pulls the dedicated server without a license — only connecting players must own the game, per Valve’s anonymous dedicated-server documentation.
  • You edit PalWorldSettings.ini, not DefaultPalWorldSettings.ini. The default file is a template you copy from; edits to it are ignored at runtime.

With the map in hand, the rest of this tutorial is mechanical. Let’s build the server.

Step 1 — Prepare Your Linux Server

Never run a game server as root. A dedicated, unprivileged system user contains any compromise and keeps file ownership sane. Start by updating the system, enabling the multiverse repository (where Ubuntu ships SteamCMD), adding 32-bit architecture support that SteamCMD depends on, and creating a service account named palworld.

# Update the system
sudo apt update && sudo apt upgrade -y

# Enable the multiverse repo and 32-bit architecture (SteamCMD needs both)
sudo add-apt-repository multiverse -y
sudo dpkg --add-architecture i386
sudo apt update

# Create an unprivileged service user with its own home directory
sudo useradd -m -s /bin/bash palworld

The dpkg --add-architecture i386 line is not optional. SteamCMD is a 32-bit application, and without i386 support the very next step fails with cryptic dependency errors. If you are on a distribution that does not use apt, install the equivalent 32-bit GNU C library package (lib32gcc-s1 on Debian/Ubuntu) through your package manager before continuing. Ubuntu’s own server documentation covers repository and package management if you need a refresher.

Step 2 — Install SteamCMD

SteamCMD is Valve’s command-line Steam client for downloading dedicated servers. On Ubuntu you can install it straight from the repository. The installer presents a license agreement — accept it — and pulls in the 32-bit libraries automatically now that i386 support is enabled.

# Install SteamCMD and the required 32-bit runtime
sudo apt install -y steamcmd lib32gcc-s1

# Switch to the palworld service user for everything from here on
sudo su - palworld

If apt cannot find the steamcmd package, the multiverse repository from Step 1 did not enable correctly — re-run the add-apt-repository multiverse and apt update commands. As an alternative that works on any distribution, you can install SteamCMD manually by extracting Valve’s tarball into a directory and running the bundled steamcmd.sh; the official SteamCMD wiki documents that path in detail. From this point on, every command runs as the palworld user, which is why we switched with sudo su - palworld.

Step 3 — Download the Palworld Dedicated Server

This is where the correct app ID matters. Log in anonymously, point the install directory at the palworld user’s home, and pull app 2394010 with validation enabled so any corrupted file is re-downloaded.

# Download the Palworld dedicated server into ~/palworld-server
steamcmd +force_install_dir /home/palworld/palworld-server \
  +login anonymous \
  +app_update 2394010 validate \
  +quit

The download is several gigabytes, so this is the slow step — expect a few minutes on a fast connection. When it finishes you should see a success line confirming the app is fully installed:

 Update state (0x61) downloading, progress: 96.44 (7112884 / 7374028)
 Update state (0x81) verifying update, progress: 88.20 (6503921 / 7374028)
Success! App '2394010' fully installed.

If you see anything other than Success! — a timeout, a disk-space error, or a repeated retry loop — do not proceed. Re-run the exact same command; SteamCMD resumes where it left off and re-validates. A partial install is the second-most-common cause of a server that refuses to boot.

Step 4 — Fix the steamclient.so Error

Nearly every first-time Palworld dedicated server admin hits this error the moment they try to launch: steamclient.so: cannot open shared object file: No such file or directory. The server binary looks for the Steam client library in a specific hidden directory that SteamCMD does not populate automatically. The fix is to create that directory and link the library into it.

# Create the SDK directory the server expects and link the client library
mkdir -p ~/.steam/sdk64
ln -sf ~/.local/share/Steam/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so

# If the source path differs on your install, locate it first:
find / -name steamclient.so 2>/dev/null

The exact source path of steamclient.so varies by how SteamCMD was installed — the find command above locates it if the symlink target is wrong. Using a symbolic link rather than a copy means that when SteamCMD updates the library, your server automatically picks up the new version. This single step eliminates the most-reported Palworld dedicated server startup failure.

Step 5 — First Launch and Generate the Config

Before you can configure the server, you have to launch it once so it generates its runtime configuration folder. The startup script is PalServer.sh in the install root. Run it, watch for the world-initialization lines, then stop it with Ctrl+C once it reaches a steady state.

cd ~/palworld-server
./PalServer.sh

A healthy first boot produces output similar to this before it settles into a running loop:

Setting breakpad minidump AppID = 1623730
LogInit: Display: Running engine for game: Pal
LogWorld: Bringing World /Pal/Maps/MainWorld up for play
LogOnline: OSS: Created online subsystem instance for: PalOSS

Press Ctrl+C to stop the server. That first run created the file you will spend the next step editing: Pal/Saved/Config/LinuxServer/PalWorldSettings.ini. It also confirms the binaries and libraries are intact — if the server crashed instead of reaching the world-initialization line, revisit Steps 3 and 4 before continuing.

Step 6 — Configure PalWorldSettings.ini

Here is the trap that catches everyone: the runtime config at Pal/Saved/Config/LinuxServer/PalWorldSettings.ini starts almost empty, while a fully populated template lives in the install root as DefaultPalWorldSettings.ini. You must copy the template’s contents into the runtime file, then edit the runtime file. Editing the default template does nothing.

# Seed the runtime config from the template, then edit it
cp ~/palworld-server/DefaultPalWorldSettings.ini \
   ~/palworld-server/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

nano ~/palworld-server/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

The entire configuration is a single long line beginning with OptionSettings=(. Do not add line breaks inside it — Palworld parses the whole parenthesized block as one value, and a stray newline corrupts it. Find and change the values below inside that block. The table lists the settings you are most likely to touch on a new Palworld dedicated server.

SettingDefaultWhat it controlsCommon value
ServerName“Default Palworld Server”Name shown in the server browser“My Palworld World”
ServerPassword“” (open)Password players need to join“changeme123”
AdminPassword“”Password for in-game admin commands — set this“a-strong-secret”
ServerPlayerMaxNum32Maximum concurrent players (hard cap 32)16
PublicPort8211UDP game port advertised to clients8211
DeathPenaltyAllWhat you drop on death (All / Item / ItemAndEquipment / None)ItemAndEquipment
ExpRate1.000000Experience multiplier2.000000
bIsPvPFalseEnables player-versus-player combatFalse

A minimal but sensible edit looks like the fragment below. Always set an AdminPassword even on a private server — without it you cannot run administrative commands like kicking a griefer or forcing a save.

OptionSettings=(...,ServerName="My Palworld World",
ServerPassword="changeme123",AdminPassword="a-strong-secret",
ServerPlayerMaxNum=16,PublicPort=8211,DeathPenalty=ItemAndEquipment,
ExpRate=2.000000,bIsPvP=False,...)

For the full list of every tunable — capture rates, breeding speed, base-Pal limits, day/night length, and more — Pocketpair maintains an official server configuration reference. The official deployment guide is the authoritative source for the deployment workflow itself. Save the file and exit the editor when you are done.

Step 7 — Open the Firewall Ports

This is where the UDP-not-TCP rule earns its warning. Open 8211/UDP for the game and 27015/UDP for the Steam query that lists your server in the community browser. If you plan to use RCON or the REST API in later steps, open those too — but keep them restricted to your own IP, never the whole internet.

# Open the required game and query ports (UFW on Ubuntu)
sudo ufw allow 8211/udp
sudo ufw allow 27015/udp

# Optional admin port — restrict RCON to a trusted IP only
sudo ufw allow from YOUR.HOME.IP.ADDR to any port 25575 proto tcp
sudo ufw enable
sudo ufw status verbose

Two critical reminders. First, if your server is on a cloud VPS, opening the port in ufw is not enough — you must also open it in the provider’s security group or cloud firewall, which sits in front of the OS. A DigitalOcean droplet or an AWS instance will silently drop traffic that never reaches ufw. Second, if you host from home, forward UDP 8211 on your router to the server’s local IP; without that forward, players on the internet cannot reach you. Never expose RCON (25575) or the REST API (8212) to 0.0.0.0 — an open admin port is a direct route to a hijacked server.

Step 8 — Optimize Performance with Launch Flags

Palworld’s server binary accepts several launch flags that meaningfully improve multi-player performance by changing how it uses threads. On a busy server these flags reduce stutter when many players load chunks simultaneously. Create a small wrapper script so you never have to remember the exact invocation.

#!/bin/bash
# ~/palworld-server/start.sh
cd /home/palworld/palworld-server
./PalServer.sh \
  -useperfthreads \
  -NoAsyncLoadingThread \
  -UseMultithreadForDS \
  -publicport=8211 \
  -players=16

Make it executable with chmod +x ~/palworld-server/start.sh. The three performance flags — -useperfthreads, -NoAsyncLoadingThread, and -UseMultithreadForDS — are the standard recommended trio for dedicated servers and cost nothing to enable. The -players flag caps the count at the launcher level as a belt-and-braces complement to ServerPlayerMaxNum in the INI. Because the simulation remains single-thread-bound at its core, these flags help most with I/O and asset loading rather than raw tick rate — the real fix for CPU saturation at 32 players arrives with clustering.

Step 9 — Create a systemd Service for Auto-Start

A server you have to start by hand is a server that will be offline the next time the machine reboots. Wrapping it in a systemd unit makes it start on boot, restart automatically after a crash, and log to the system journal. This is the step that turns a manual experiment into a real, always-on Palworld dedicated server. Create the unit file as root.

# /etc/systemd/system/palworld.service
[Unit]
Description=Palworld Dedicated Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=palworld
Group=palworld
WorkingDirectory=/home/palworld/palworld-server
ExecStart=/home/palworld/palworld-server/start.sh
Restart=on-failure
RestartSec=10
MemoryMax=14G

[Install]
WantedBy=multi-user.target

The MemoryMax=14G directive is a safety valve: it lets the kernel reclaim the server before an out-of-memory event takes down the whole machine. Adjust it to leave a couple of gigabytes free for the OS relative to your total RAM. Now enable and start the service, then confirm it is running.

sudo systemctl daemon-reload
sudo systemctl enable --now palworld.service

# Check status and follow the live log
sudo systemctl status palworld.service
sudo journalctl -u palworld.service -f

With this in place your server survives reboots, restarts itself ten seconds after any crash, and streams its output to journalctl for easy debugging. This is the “complete working project” milestone — everything after this point is refinement.

Step 10 — Connect to Your Palworld Dedicated Server

With the service running and ports open, it is time to join. Palworld offers two connection paths. The reliable one is direct connect: in the game’s main menu choose “Join Multiplayer Game,” and in the community-server search bar type your server’s public IP and port in the form your.server.ip:8211. Enter the ServerPassword if you set one. Direct connect works even when the Steam query listing is misconfigured, which is why it is the first thing to test.

The second path is the community server browser, which lists your server publicly if 27015/UDP is open and the server is advertising correctly. It can take a few minutes for a freshly started server to appear, and heavy browser traffic sometimes hides new entries — so if your friends cannot find you by name, fall back to direct connect by IP. To find your server’s public IP from the box itself, run curl -s ifconfig.me. Once you confirm one player can connect, invite the rest of your group; the same address works for everyone.

Step 11 — Enable RCON and the REST API for Administration

Managing a live server from an SSH session is tedious. RCON (Remote Console) and Palworld’s REST API let you broadcast messages, list online players, kick or ban accounts, and trigger a clean save without opening the game. Enable them in PalWorldSettings.ini inside the same OptionSettings block.

# Add these inside the OptionSettings=(...) block, then restart the service
RCONEnabled=True,RCONPort=25575,
RESTAPIEnabled=True,RESTAPIPort=8212,
AdminPassword="a-strong-secret"

After restarting with sudo systemctl restart palworld.service, you can drive the server with any RCON client or with a simple REST call authenticated by the admin password. A typical player-list query returns something like this:

# List online players via the REST API (Basic auth uses the admin password)
curl -s -u "admin:a-strong-secret" http://127.0.0.1:8212/v1/api/players

{"players":[{"name":"Rin","level":41,"ping":38.5},
            {"name":"Kai","level":39,"ping":52.1}]}

Because these endpoints grant full administrative control, they must never be reachable from the public internet. Bind them to 127.0.0.1 and access them over an SSH tunnel, or restrict the ports to your own IP as shown in Step 7. Treat the admin password like a root password — anyone who has it owns your world.

Step 12 — Back Up and Update Your Server

Two administrative chores keep a Palworld dedicated server healthy: regular save backups and periodic updates. Palworld stores its world under Pal/Saved/SaveGames. Never rely on a single copy — a crash mid-write can corrupt an active save, and there is no built-in versioning. The script below snapshots the save directory with a timestamp and prunes anything older than seven days.

#!/bin/bash
# ~/backup-palworld.sh  — run hourly via cron
SRC=/home/palworld/palworld-server/Pal/Saved/SaveGames
DEST=/home/palworld/backups
STAMP=$(date +%Y%m%d-%H%M%S)
mkdir -p "$DEST"
tar -czf "$DEST/palworld-save-$STAMP.tar.gz" -C "$SRC" .
find "$DEST" -name 'palworld-save-*.tar.gz' -mtime +7 -delete

Schedule it with crontab -e as the palworld user, for example 0 * * * * /home/palworld/backup-palworld.sh to run every hour. Updating the server is simply Step 3 again: stop the service, re-run the SteamCMD app_update 2394010 validate command, and start the service back up. Always back up immediately before a major patch — and especially before the July 10 1.0 update, which Pocketpair recommends starting fresh for even though it does not wipe existing saves.

# Safe update routine
sudo systemctl stop palworld.service
sudo su - palworld -c 'steamcmd +force_install_dir /home/palworld/palworld-server \
  +login anonymous +app_update 2394010 validate +quit'
sudo systemctl start palworld.service

Palworld 1.0 Server Clustering: What Changes on July 10

The headline feature for dedicated-server admins in Palworld 1.0, launching July 10, 2026, is server clustering. Pocketpair confirmed it alongside the release date at Summer Game Fest 2026, positioning it as the fix for the exact single-thread CPU bottleneck this guide has referenced throughout. Clustering lets administrators link multiple server instances so a single shared world can support higher player counts than one process could handle alone — the same architectural pattern that games like ARK use to spread load across linked servers.

What we know is confirmed; what we do not, we will not invent. As of early July 2026, Pocketpair has announced that clustering exists and what problem it solves, but the exact configuration — the cluster ports, the rules governing how players and Pals transfer between linked servers, and which data replicates across cluster members — remains unpublished. The full 1.0 patch notes are being held back until launch day. Expect clustering to introduce new keys in PalWorldSettings.ini or a companion cluster config, mirroring how other Unreal Engine dedicated servers expose a cluster ID and a shared transfer directory.

The practical takeaway: the single-server setup in this tutorial is the foundation clustering builds on, not something it replaces. Every step here — SteamCMD, the INI, ports, systemd, backups — remains valid in 1.0. When the patch lands, back up first, update with the Step 12 routine, and watch Pocketpair’s official deployment documentation for the clustering keys. Alongside clustering, 1.0 opens the World Tree region and roughly doubles the map, so plan for larger saves and a little more RAM headroom.

Common Pitfalls and How to Avoid Them

Across thousands of community setup reports, the same handful of mistakes account for the overwhelming majority of failed Palworld dedicated server deployments. Internalize these and you will skip the most painful hours of debugging.

  • Opening TCP instead of UDP. The game port 8211 is UDP-only. A TCP rule looks correct, the server boots fine, and no one can connect. Always verify with sudo ufw status verbose that 8211 shows udp.
  • Using the wrong app ID. 2394010 is the server; 2394560 and 1623730 are not. A wrong ID either fails to download or pulls the game client, which will not run headless.
  • Editing DefaultPalWorldSettings.ini. The runtime config is Pal/Saved/Config/LinuxServer/PalWorldSettings.ini. Changes to the default template are silently ignored, so admins tweak settings for an hour and see zero effect.
  • Forgetting the cloud security group. On a VPS, the OS firewall is the second layer. If the provider’s cloud firewall still blocks UDP 8211, traffic never reaches your server no matter what ufw says.
  • Skipping the steamclient.so link. The server will not launch until ~/.steam/sdk64/steamclient.so exists. This is Step 4 for a reason.
  • Under-provisioning RAM. An 8 GB box hosting 16+ players will start swapping, then stutter, then crash. Size for the recommended column and cap memory in systemd.

Troubleshooting Palworld Dedicated Server Issues

When something breaks, work through this table before reinstalling. The symptom on the left almost always maps to the cause and fix on the right.

SymptomLikely causeFix
steamclient.so: cannot open shared object fileMissing SDK library linkRun the Step 4 mkdir + ln commands
Server runs but no one can joinPort 8211 opened as TCP, or blocked upstreamOpen 8211/UDP in OS and cloud firewall; port-forward at home
Server never appears in community browser27015/UDP closed or query not advertisingOpen 27015/UDP; use direct-connect by IP as a fallback
Config changes have no effectEdited the default template, not the runtime INICopy Default into LinuxServer/PalWorldSettings.ini; restart
Server crashes under player loadOut of memory / RAM undersizedIncrease RAM, set MemoryMax, add performance launch flags
Xbox / Game Pass players cannot connectSteamCMD servers are Steam-crossplay onlyUse invite co-op for Game Pass players; see Advanced Tips
Admin commands rejected in-gameAdminPassword not setSet AdminPassword in the INI and restart the service
Save rolled back after a crashProcess killed mid-write, no backupStop with systemctl (clean save); restore from hourly backup
Players can connect but not with a passwordServerPassword vs AdminPassword confusionJoin uses ServerPassword; admin uses AdminPassword

The single most useful diagnostic is the live journal: sudo journalctl -u palworld.service -f. If the server exits immediately on start, the reason is almost always printed in the last three lines — a missing library, a malformed INI (usually a stray newline inside the OptionSettings block), or a permissions problem on the save directory.

Advanced Tips: Crossplay, Multiple Worlds, and Backups

Once your baseline server is stable, three refinements come up most often. First, Xbox and Game Pass crossplay: players on the Microsoft Store or Game Pass version cannot join a SteamCMD dedicated server, because that server participates only in Steam’s crossplay network. Palworld added crossplay in its 0.5.0 update in March 2025, but for a mixed Steam-and-Xbox friend group the practical answer today is client-hosted invite co-op for the Xbox players, or waiting to see whether 1.0’s clustering broadens crossplay coverage.

Second, running multiple worlds on one machine: copy the systemd unit to palworld-2.service, point it at a second install directory with its own PublicPort (say 8212) and RCON port, and open the matching UDP port. This is the manual precursor to official clustering — separate worlds rather than one shared world, but useful for running, for example, a PvE and a PvP server side by side. Third, backups before every change: the Step 12 script is cheap insurance, and the discipline of snapshotting before each config edit or update has saved more communities than any other habit. If you enjoy standing up game servers, the same fundamentals carry over to a Minecraft server and beyond — the tooling differs, the discipline does not.

Securing Your Palworld Dedicated Server

A public game server is an internet-facing service, and every internet-facing service is a target. The good news is that a Palworld dedicated server has a small attack surface if you configure it correctly; the bad news is that the default-open habits many guides teach — exposing RCON, running as root, allowing SSH password logins — turn that small surface into a large one. Harden the box with the same discipline you would apply to any production Linux server.

Start with SSH, which is how the machine itself gets compromised far more often than the game port. Disable password authentication in favor of keys, and let a tool like fail2ban ban IPs that hammer the login. Combined with the default-deny firewall from Step 7, this closes the doors that automated bots probe within minutes of a server coming online.

# Harden SSH: key-only login, then reload
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl reload ssh

# Ban brute-force attempts against SSH
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban

Then apply the game-server-specific rules that follow from everything above:

  • Run unprivileged. The palworld service user from Step 1 means a server exploit cannot trivially escalate to root. Never “fix” a permissions error by running as root.
  • Keep admin ports private. RCON (25575) and the REST API (8212) grant total control. Bind them to 127.0.0.1 and reach them through an SSH tunnel, or restrict them to a single trusted IP. They must never listen on 0.0.0.0.
  • Use a real AdminPassword. A short or shared admin password is the equivalent of leaving RCON open. Generate a long random string and store it in a password manager, not in a chat log.
  • Patch promptly. Run the Step 12 SteamCMD update after every Palworld server release, and keep the OS current with unattended-upgrades. Outdated servers are the ones that get hijacked.
  • Default-deny, then allow. Only 8211/UDP and 27015/UDP should face the public internet. Everything else — SSH included — should be locked to known addresses where practical.

None of this changes the gameplay setup; it simply ensures the server your friends enjoy does not become someone else’s crypto-miner. Layered defense — unprivileged process, tight firewall, hardened SSH, private admin ports — is the difference between a hobby server and a liability.

Frequently Asked Questions

Do I need to own Palworld to host a dedicated server?

No. The Palworld dedicated server (Steam app 2394010) downloads for free through SteamCMD’s anonymous login. Only players who connect to the server need to own and run the game (app 1623730). This is standard for Steam dedicated servers and is documented in Valve’s anonymous-login guidance.

How many players can a Palworld dedicated server hold?

The hard cap is 32 concurrent players, set via ServerPlayerMaxNum. In practice, a 32-player server needs 16 GB of RAM and a fast single-thread CPU, because the simulation is single-thread-bound. Server clustering in the July 10, 2026 1.0 release is designed to push past that ceiling by linking instances.

Why is my Palworld dedicated server not showing up?

Almost always a port problem. Confirm 8211 is open as UDP (not TCP) in both your OS firewall and any cloud security group, and that 27015/UDP is open for the community browser listing. If it still will not list, connect directly by IP using your.server.ip:8211 — direct connect bypasses the browser entirely.

How much RAM does a Palworld server need?

Budget 8 GB as an absolute minimum for a small group and 16 GB for a full server. The world state grows as players build, so a server comfortable at launch can strain months later. Cap memory with MemoryMax in systemd so a runaway process cannot take down the host.

Can Xbox or Game Pass players join my server?

Not on a SteamCMD dedicated server — those participate only in Steam crossplay. Xbox and Game Pass players can still play together through in-game invite co-op (up to four players). Watch the 1.0 release notes to see whether clustering changes crossplay coverage.

Yes. Pocketpair officially distributes the dedicated server through Steam and documents how to run it. The ongoing patent dispute between Nintendo and Pocketpair concerns in-game mechanics, not server hosting, and does not affect your right to run a server for you and your friends.

Will my server break when Palworld 1.0 launches?

It should not. Pocketpair has said existing saves are not wiped by the July 10 update, though it recommends a fresh start to experience the new content in order. Back up first, then update using the SteamCMD app_update 2394010 validate routine. The setup in this guide remains the foundation; clustering is additive.

Should I self-host or pay for managed hosting?

Self-hosting on a $5–$12/month VPS gives you full control, the 32-player cap, and cheaper scaling, at the cost of doing your own updates and backups. Managed Palworld dedicated server hosting trades a higher monthly fee for one-click updates and support. For a technically comfortable admin, this tutorial makes self-hosting the clear value choice.

You now have a complete, always-on Palworld dedicated server: downloaded with the correct app ID, configured for your player count, firewalled on the right UDP ports, wrapped in a self-healing systemd service, administrable over RCON, and backed up hourly. When 1.0 and its server clustering arrive on July 10, 2026, this foundation is exactly what you build on. For the authoritative reference on any setting, keep Pocketpair’s official server documentation and the Palworld background bookmarked, and check the developer’s site at Pocketpair for launch-day patch notes.