Host a Project Zomboid Server on a Budget (Build 42.19)
Practical VPS / dedicated-server path for Build 42.19 — real costs, safe install habits, and the ports the game uses. Not a one-click root script.
sudo sh, and never log into a game panel over plain HTTP. That pattern can take full control of the machine and expose admin passwords. Install Panel and Wings only from the official Pterodactyl documentation (or a managed host), pin versions, and serve the panel over HTTPS.
What “almost free” actually means
Cloud signup credits (for example a new-account trial on DigitalOcean or similar) can cover a short test, but they are not a permanent free server. After the credit ends you pay for the droplet/VPS, bandwidth, snapshots, and any extra volumes. Expect ongoing cost unless you host only on free spare hardware at home (with its own NAT, power, and uptime trade-offs).
| Cost item | What to plan for | Notes |
|---|---|---|
| VPS / droplet | Monthly compute after any trial credit | Price scales with RAM and vCPU; see memory guidance below |
| Bandwidth / egress | Included quota or overage | Quiet servers are cheap; large mod downloads and busy nights add traffic |
| Snapshots / backups | Provider snapshot fee or object storage | Keep game-save backups even if the provider offers disk snapshots |
| Domain + TLS | Optional domain; free certs via Let’s Encrypt | Required if you expose a web panel; never leave panel on open HTTP |
| Admin time | Updates, firewall, OS patches | Pterodactyl is not “set and forget” without maintenance |
Provider promos and dashboards change often. Treat any credit amount as temporary, not a fixed recipe. Pick any Linux VPS you control; the Project Zomboid ports and security checklist below are what matter.
Pick a hosting path
In-game Host
Best for friends on a LAN or when one player’s PC can stay online. No VPS bill. Limited by the host machine, sleep, and home network ports.
SteamCMD dedicated (no panel)
Lowest-overhead always-on option on a VPS: install the dedicated server via SteamCMD, open two UDP ports, run under a non-root service user. You manage start/stop and updates yourself.
Pterodactyl (or managed game host)
Web UI for multiple games, eggs, and restarts. More moving parts (Panel + Wings + Docker + database + reverse proxy). Follow official docs only; or rent a managed host that already runs a panel.
Ports Project Zomboid actually uses (Build 42.19)
Current server options include DefaultPort, UDPPort, and optional RCONPort. With Steam enabled, the dedicated process listens on both game ports; clients connect using the Steam/query port (default 16261).
| Setting | Default | Protocol | Role |
|---|---|---|---|
DefaultPort |
16261 | UDP (Steam connection path) | Primary client connection port when Steam is enabled |
UDPPort |
16262 | UDP (UDPRakNet) | Second game port; must be open and not blocked by the host firewall |
RCONPort |
27015 (typical default) | TCP | Remote console. Leave disabled or firewalled if you do not use RCON; set a strong RCONPassword if you do |
Open both 16261 and 16262 UDP in the cloud security group / firewall for public multiplayer. Forward only what you need. After the process starts, confirm logs show listening on the expected ports before inviting players.
Secure VPS checklist (any provider)
- Create the VPS with a current LTS image (for example Ubuntu 22.04/24.04) and SSH key login; disable password SSH once keys work.
- Create a non-root sudo user; avoid day-to-day root shells for game files.
- Enable a host firewall (ufw/firewalld/cloud SG): allow SSH from your IP if practical, allow UDP 16261–16262, deny everything else by default.
- If you run a web panel, put it behind a domain with HTTPS (reverse proxy + valid certificate). Do not log in over plain
http://server-ip. - Keep OS packages updated; reboot when the kernel requires it.
- Schedule off-box backups of
Zomboid/Serverconfig and saves; provider snapshots alone are not a restore test. - Never paste unknown scripts into a root console. Download from a pinned release, verify checksum/signature when published, read the script, then run deliberately.
SteamCMD dedicated server (panel-free outline)
This is the simplest always-on path when you only need Project Zomboid:
- Install 64-bit dependencies your distro needs for SteamCMD and the game runtime (follow The Indie Stone’s current dedicated-server notes for your OS).
- Install SteamCMD as a service user and download the Project Zomboid dedicated server app.
- Start once to generate default INI / sandbox files under the server user’s home
Zomboidtree. - Set
DefaultPort=16261,UDPPort=16262, server name, passwords, and sandbox options. See the server settings guide for Build 42.19 keys. - Open the two UDP ports, start the server under systemd or a process supervisor, confirm the server has started in logs, then connect from the client with IP and port 16261.
SteamCMD app IDs and launch flags can change with official packages—use the current Steam / game documentation for the install command rather than outdated one-liners.
Optional: Pterodactyl panel (high level only)
Pterodactyl is a full game-panel stack: Panel (PHP web app + database + Redis + queue worker) and Wings (Docker node daemon). Official supported OS examples include recent Ubuntu, Debian, and RHEL-family releases; OpenVZ-style hosts are a poor fit because of Docker limits.
- Panel getting started — dependencies, release tarball, database, first admin user, queue worker
- Wings installing — Docker, Wings binary, node config
- Webserver + TLS configuration from the same documentation set
APP_KEY offline. Losing it makes encrypted panel data unrecoverable even with SQL dumps.
Project Zomboid egg
Community eggs live under the Pelican eggs project (formerly parkervcp). The Project Zomboid egg and README are currently at:
That egg’s README matches the game’s dual-port layout (DefaultPort 16261, UDPPort 16262) and warns that default in-game “backup on start” can fill disk inside the container—either set BackupsOnStart=false after you have an external backup plan, or raise Wings temporary space as documented there.
In the panel: create a Location and Node, allocate both game UDP ports to the server instance, import the egg into a Nest, create the server, watch the install log, then start.
Practical limits
- Do not paste untrusted
panel.sh/ compose files as root on the machine - Do not expect a fixed dollar cost or permanent “free” tier
- Panel UIs change—prefer official docs over old screenshots
- After a major game update, recheck ports and server options before inviting players
After the process is running
- Join with the public IP (or domain) and port 16261; confirm both UDP ports are open if the client hangs on “Getting server info”.
- Configure population, PVP, safehouses, and Discord options carefully — see server settings (Build 42.19) and admin tips.
- Add mods with matching
WorkshopItemsandModslists: server mods guide. - Whitelist / account policy: dedicated whitelist guide.
- Plan resets and backups before you need them: soft reset (and always keep offline copies of saves).
Quick troubleshooting
| Symptom | Likely cause | What to check |
|---|---|---|
| Friends cannot see / join the server | Firewall or only one port open | UDP 16261 and 16262; cloud SG + host firewall; correct public IP |
| Panel unreachable or browser warns on HTTP | No reverse proxy / TLS | Finish official webserver + certificate steps; do not use plain HTTP for admin login |
| Egg install dies with disk full | On-start backups filling tmp / volume | External backup plan; BackupsOnStart; Wings disk / tmpfs guidance in the egg README |
| Server starts then OOMs | JVM heap vs VPS RAM | Lower -Xmx or upgrade RAM; see memory guide |
| RCON tools fail | Port closed or password empty | Only open TCP RCON if needed; set password; restrict source IPs |
Related guides
DefaultPort, UDPPort, RCONPort). Cloud prices, panel UI, and egg layout can change—re-check official Panel/Wings docs and the egg README on the day you install. This is a self-host checklist, not a managed hosting service.