NEW 📢 Limited launch offer: up to 70% off your first month on every game!See plans

How to host a Plains of Pain server (2026)

Plains of PainUpdated Nov 5, 20269 min read

Short answer. You can host a Plains of Pain server yourself for free: download the "Plains of Pain (Dedicated Server)", Steam app 2227360, with SteamCMD, describe your world in a small JSON config file and open UDP ports 7777 and 27016. Or rent a Plains of Pain server and skip the ports and the config file.

Your serverName is the name that appears in the in-game server list, and a server can have a password.

Checked on 5 November 2026 against update v0.8.20.29.0, the newest update Cobra Byte Digital had announced on Steam.

This guide uses two sources: the dedicated server setup guides that the developer, Cobra Byte Digital, published in a Linux and a Windows edition (last updated 4 August 2025, for v0.6), and what we run on every Plains of Pain server we host. Where the two differ, it says so. To skip to the rental route, go to Option 2.

What you need

  • The server software: "Plains of Pain (Dedicated Server)", Steam app 2227360. It is a separate download from the game itself, and the developer's guide asks for 500 MB of free space.
  • A machine that stays on: a spare PC, a home server or a cloud virtual machine, on Windows or Linux. The same app ships a Windows server and a native Linux one, and the developer has a setup guide for each.
  • RAM and CPU: the developer's guide sizes the machine by player count, with steps at 10, 50, 100 and 200 players. Memory roughly doubles at each step, and so do the CPU cores.
  • Bandwidth: the developer says to reserve 50 to 250 kbps per player.
  • Network: a public IP address, with UDP 7777 (game) and UDP 27016 (query) by default reachable from the internet.
  • The game for your players: everyone joins with their own copy of Plains of Pain on Steam for Windows.

Option 1: host it yourself

Install the server

  1. Install SteamCMD. The developer points to Valve's page: https://developer.valvesoftware.com/wiki/SteamCMD. On Windows, also install the Microsoft Visual C++ redistributable if the server does not ship with it.
  2. Download the server. In SteamCMD, with an anonymous login:
    login anonymous
    app_update 2227360 validate
    quit
    On Linux with a steamcmd folder in your home directory, the same download in one line is:
    ~/steamcmd/steamcmd.sh +force_install_dir ~/pop-server +login anonymous +app_update 2227360 validate +quit
    SteamCMD sometimes ends with "Missing configuration" and leaves no game files, yet still reports success. We see this come and go on fresh installs. Check that steamapps/appmanifest_2227360.acf exists in the server folder, and run the command again if it does not.

Write the settings

You can configure the server with command-line arguments or with a JSON file. The JSON file is easier to keep. The developer's guide shows the default file, configs/default.json, like this:

{
  "serverName": "My Server",
  "worldId": 1,
  "mapId": 256,
  "seed": 12345,
  "difficulty": 1,
  "worldSize": 21,
  "port": 7777,
  "queryPort": 27016,
  "maxPlayers": 10,
  "ttr": 28800
}
  1. Make your own copy. Copy configs/default.json to a file of your own, for example configs/server.json. The developer warns that default.json, custom.json and the sample start scripts can be overwritten when the server files update, so keep your settings in your own file.
  2. Set the name and the cap. serverName is what players see in the server list. maxPlayers defaults to 10, and the developer's guide gives a limit of 200 players.
  3. Choose the world. worldId picks a saved world, and the developer says a new world is created for any number that does not exist yet. seed feeds the world generator. worldSize takes 11 (S), 21 (M), 31 (L), 41 (XL) or 51 (XXL). difficulty runs from 0 (Tourist) to 4 (Overlord), with 1 Rookies, 2 True Wastelander and 3 Veteran. mapId defaults to 256.
  4. Add a password if you want a private server: add a password key to the same file. Password-protected dedicated servers have been supported since patch v0.5.20.
  5. Decide on restarts. ttr is a time to restart in seconds: the server saves and quits when it runs out. Its default is 0, but the sample file sets 28800 (8 hours), so either remove the key or start the server under something that starts it again.
  6. Name your admins with adminAccountIDs: the Steam Account IDs (not Steam IDs) allowed to use admin console commands, separated by commas.

Moving a server from v0.5? The developer says to change worldSize to the values above and to drop the old -startServer and -localhost arguments, which are no longer used.

Open the ports

  • Game: allow UDP 7777 on the machine's firewall (for example sudo ufw allow 7777/udp on Ubuntu) and forward it on your router.
  • Query: do the same for UDP 27016.

The developer's two troubleshooting hints: if the server shows up in the list as an IP address and port instead of its name, Steam cannot reach your query port; if it shows the right name but nobody can connect, players cannot reach the game port.

Start it and join

  1. Start the server from the server folder, pointing it at your own file. On Windows, the developer's command is:
    "PlainsOfPain.exe" -nographics -batchmode -ignorecompilererrors -config "configs/server.json"
    On Linux, the developer's template uses the native binary and copies the output to a log:
    ./PlainsOfPain.x86_64 -nographics -batchmode -ignorecompilererrors -config "configs/server.json" | tee -a server.log
    The developer lists -nographics, -batchmode and -ignorecompilererrors as mandatory. Add -cc to turn on console commands; our servers also pass it, with -port and -queryPort. Since update v0.8.3.15 the dedicated server writes a "Server Ready" line to its log when it is up.
  2. Join it. Start Plains of Pain on Steam, open the Multiplayer server list and look for the name you set in serverName.
  3. Update by stopping the server and running the app_update download again. Since v0.8.0.30 the game shows a Version Mismatch warning when the server and the player's game are on different versions, so update the server when the game updates.

Option 2: host it on PlayNHost

Renting removes the install, the config file, the ports and the update routine. You still choose a name, a password and your world.

  1. Pick a plan. Open the Plains of Pain server hosting page and compare the plans: SCAVENGER (10 players), OUTPOST (20) and WASTELAND (40) at the time of writing. Press Create Server (Customize Plan on WASTELAND) and finish the order. Prices change, so check them on that page.
  2. Wait for the install. The server appears in the panel. The panel shows it as running once its Console prints Set Game State: RUNNING.
  3. Name it. On the Settings tab, in Game Settings, set the Server Name and, for a private server, a Server Password of up to 20 characters. Then restart.
  4. Choose the world. On the same tab you will find Max Players, World ID, World Seed, World Size, Difficulty and Map ID. Our panel accepts a World Size of 11, 21, 31, 41 or 51 (S to XXL), a Difficulty from 1 (Rookies) to 4 (Overlord) and any whole number for the seed. World Size, Difficulty, Map ID and World Seed only apply the first time a world is created. To start a fresh world, enter a World ID that does not exist yet: the server builds a new world and keeps the old one under its own number.
  5. Invite your players. Give them the Server Name and the password. They find it in the in-game server list.

What the panel does for you:

  • It writes ten keys into configs/server.json at every start: serverName, worldId, mapId, seed, difficulty, worldSize, port, queryPort, maxPlayers and password. Change them on the Settings tab, not in the file, or your edit is replaced at the next start. Other keys in the file are yours to edit under Files.
  • Max Players is a real cap: the value is written into maxPlayers on every start, and a value above your plan's player limit is refused.
  • Both ports, game and query, are assigned and open from the start. The query port is set by the panel, not by you.
  • With Auto Update on (the default, under Show advanced in Game Settings), the server checks Steam for the newest build each time it starts, so a restart is an update.
  • The install retries the SteamCMD download up to three times and counts it as done only when the app manifest exists, so the "Missing configuration" trap above does not leave you with an empty server.

Self-hosting or renting: an honest comparison

  • Cost: the server software is free. Self-hosting costs power, hardware and bandwidth, or a cloud machine. Renting is a monthly fee set by the plan.
  • Uptime: a home server is only up while your PC, power and internet are. A rented server runs on the host's hardware.
  • Exposure: at home, players connect to your public IP address and you look after the firewall and router. A rented server keeps your home IP out of it.
  • Setup: self-hosting needs SteamCMD, a JSON file and two forwarded UDP ports. Renting needs a name, a password and the world values you want.
  • Control: self-hosting gives you every file. On our servers you change the main settings in the panel and still have Files for the rest of configs/server.json.

Ready to skip the setup? See the Plains of Pain server plans.

Already hosting it somewhere else? Move your server to us

OUR LATEST BLOGS