What the dedicated server is
When you host a world from inside the game, it exists only while your own game is open. The dedicated server is a separate program that runs the world without a game client, so it stays up when you log off and anyone with the address can join.
It is listed in Steam as Palworld Dedicated Server, app id 2394010. On a PC that owns the game it appears under Tools in the Steam library. On a headless machine you download it anonymously with SteamCMD, and Pocketpair also publishes an official Docker image with a sample Compose file. The server runs on 64-bit Windows and 64-bit Linux.
Pocketpair's guide describes two flavours of the same program. A plain dedicated server is joined by typing its IP address and port. A community server is the same server started with one extra launch option, -publiclobby, which registers it in the in-game server list. That matters for mixed groups: crossplay is on by default for Steam, Xbox, the Microsoft Store version, macOS and PS5, but Pocketpair states that Xbox and PS5 players can only join a server that is deployed as a community server.
- Download: steamcmd +login anonymous +app_update 2394010 validate +quit
- Start it with PalServer.exe on Windows or ./PalServer.sh on Linux
- Add -publiclobby to list it as a community server, which console players need
- Players on PC join by entering the IP address and port in the box below the server list
RAM, CPU and disk it really needs
Pocketpair's requirements page is short and worth quoting accurately. It recommends a CPU with 4 or more cores and 16 GB of memory. It suggests more than 32 GB for larger servers. It says a machine with 8 GB can start the server, but that this increases the chance of crashes caused by running out of memory.
Those figures are Pocketpair's recommendation for the machine, and how much a particular world uses depends on what is in it. The configuration reference flags several settings as raising load, including the number of base camps allowed per guild, and the world keeps every base, pal and stored item in play. A small private world with a couple of bases is a very different load from a public server where thirty people are all building.
On storage Pocketpair gives no size in gigabytes. What it does say is that a fast SSD is recommended and that slow storage may corrupt save data, which is also why it advises against running the Docker image through Docker Desktop.
- CPU: 4 cores or more recommended
- Memory: 16 GB recommended, more than 32 GB for larger servers
- 8 GB: starts, with a higher risk of out-of-memory crashes
- Storage: fast SSD, no official size figure
- Operating system: 64-bit Windows or 64-bit Linux
Ports and protocol
Pocketpair lists one port for the game: UDP 8211. It is the default and it can be changed with the -port launch option. If you host at home, that port has to be forwarded on your router and allowed through the firewall.
Two other ports exist only if you switch the matching feature on. The REST API listens on TCP 8212 by default, and RCON uses 25575 by default. Pocketpair's documentation says neither is designed to be exposed directly to the internet and recommends using them inside your own network. Open the game port to the world, and keep the management ports closed to it.
A detail that confuses people: the PublicPort setting and the -publicport option do not move the port the server listens on. They only tell a community server which external port to advertise. One more thing Pocketpair notes for home hosts is that if your router does not support hairpin NAT, you cannot join your own community server from the same network.
PalWorldSettings.ini and the single-line rule
The settings file is PalWorldSettings.ini. On Linux it lives at Pal/Saved/Config/LinuxServer/PalWorldSettings.ini inside the server folder, and on Windows at Pal\Saved\Config\WindowsServer\PalWorldSettings.ini. Those folders do not exist until the server has been started once, so boot it, stop it, and then edit.
The file that tempts everyone first is DefaultPalWorldSettings.ini in the server's root folder. Pocketpair is explicit that editing it changes nothing. It is a sample: copy its contents into PalWorldSettings.ini and edit the copy.
The format is the part to respect. The file has a header line, [/Script/Pal.PalGameWorldSettings], followed by a single line that starts OptionSettings=( and holds every setting as Key=Value pairs separated by commas, closed by one bracket. Pocketpair ships it that way and its own examples keep it that way. Leave it as one line: do not let an editor wrap or reformat it, keep text values such as the server name inside double quotes, and check that the closing bracket is still there after each edit. You do not need to list every setting, since Pocketpair's own example sets only a password and the death penalty and leaves the rest at defaults. Stop the server before you edit and start it again afterwards so the file is read.
- ServerName and ServerDescription: what players see
- ServerPassword: the password needed to join
- AdminPassword: the password that grants admin rights
- ServerPlayerMaxNum: the most players who can join
- RESTAPIEnabled and RESTAPIPort: the REST API switch and its port
- bIsUseBackupSaveData: the built-in rolling world backups
- CrossplayPlatforms: which platforms may connect
Admin password, RCON and the REST API
Admin rights come from one setting. Put a value in AdminPassword before you start the server, because without one the admin commands cannot be used at all. Then join the game, press Enter to open chat, and type /AdminPassword followed by the password. From there you can use commands such as /ShowPlayers, /Broadcast, /KickPlayer, /BanPlayer, /Save and /Shutdown, which takes a number of seconds and a message so players get a warning.
For managing the server from outside the game, Pocketpair now points everyone to the REST API. Set RESTAPIEnabled=True and the server answers HTTP requests at port 8212 under the path /v1/api, protected by HTTP Basic authentication. The documented endpoints cover server info, the player list, the current settings, server metrics, announcements, kick, ban and unban, saving the world, a timed shutdown and a forced stop.
RCON still appears in the documentation, with RCONEnabled and RCONPort and a default port of 25575, but under a warning: Pocketpair says RCON is deprecated, asks admins to consider the REST API instead, and says RCON is scheduled to stop functioning in an upcoming update. If you are building restart scripts or a Discord bot today, build them on the REST API.
The same caution applies to both. The REST API uses plain HTTP and the admin password, and Pocketpair recommends keeping it within your local network. If you need to reach it remotely, put it behind a tunnel or a firewall rule limited to your own address.
Moving an existing co-op or dedicated save
Pocketpair's server guide does not include a procedure for moving saves, so what follows is established community practice. Treat it with the care that implies and keep an untouched copy of everything before you start.
Moving from one dedicated server to another is the simple case. Stop both servers and copy the whole Pal/Saved folder, which holds the world under SaveGames and your settings under Config. Start the new server and check the world loads before you delete anything from the old one.
Moving a co-op world that was hosted from inside the game takes more care. On Windows those saves sit under %LOCALAPPDATA%\Pal\Saved\SaveGames, one folder per world, each containing the world file Level.sav and a Players folder. The world itself copies across. The catch is the host's character: a co-op host is stored under a fixed id that a dedicated server does not assign to anyone, so the host arrives as a new character unless the player file is converted. Community tools exist for that conversion, they rewrite save files, and they are not supported by Pocketpair.
- Stop the server before copying anything in or out
- Keep a complete copy of the original save folder somewhere safe
- After a co-op move, check your ini settings are applied: a WorldOption.sav copied with the world carries the old in-game settings and is commonly reported to take priority
- Have every player log in and confirm their character before the old save is retired
Memory growth, restarts, backups and updates
Server admins widely report that a Palworld server's memory use climbs the longer the process runs. Pocketpair's guide does not describe this behaviour, but its own requirements page warns about out-of-memory crashes on smaller machines, and the practical answer is the same either way: restart on a schedule. Most admins pick a quiet hour once a day. The polite way to do it is the timed shutdown, either /Shutdown with a delay and a message in game or the shutdown endpoint of the REST API, so players are warned and the world is saved before the process stops. Use the forced stop only when the server is not responding.
Backups are built in. With bIsUseBackupSaveData enabled the server creates a backup folder inside the save directory and keeps rolling copies. Pocketpair documents the schedule as 5 copies at 30 second intervals, 6 at 10 minute intervals, 12 hourly and 7 daily, and notes that the feature adds disk load. Those copies live on the same disk as the world, so they protect you from a bad save, and you still want a copy stored elsewhere.
Updating is the same SteamCMD command you installed with. Steam updates players' games automatically and a dedicated server only updates when you run it, so after a patch your players will be ahead of the server until you do. Stop the server, take a backup, run the app_update line, and start it again. On the Docker image Pocketpair's instructions are the same in spirit: back up, stop, change the image tag to the new game version, and start.
- Schedule a daily restart with a warning to players
- Leave the built-in backups on, and keep an off-server copy as well
- Update with: steamcmd +login anonymous +app_update 2394010 validate +quit
- Back up before every game update