Workload · Hosting a 7 Days to Die world

Your group's own dedicated 7 Days to Die server, open any night

To host 7 Days to Die for a group around the clock, you install the free dedicated server (SteamCMD app 294420) on a Linux machine, give it your own copy of serverconfig.xml, open its game ports, and keep the admin consoles off the internet. Here is how to do each of those in an evening, and how to pick a machine that will not stutter when the horde arrives.

The short version
  1. Free server download: SteamCMD app 294420
  2. One evening: install, configure, open ports, start
  3. Admin consoles reached over SSH, never exposed
  4. Saves in one folder you choose, easy to back up
  5. Whole machine, unmetered port, no contract

Why your world wants its own server

When one of you hosts from the game, the world exists only while that person plays, and their PC carries the game and the server at once. The Steam listing for 7 Days to Die says it plainly: hosting the server and playing on that same PC doubles the memory it asks for. Moving the server to its own machine means the base, the loot and the blood moon schedule are there whenever anyone logs in.

How big a machine do you need?

Start from the only figures The Fun Pimps publish, which are for the game itself. On Linux the minimum is a quad-core CPU at 2.8 GHz with 8 GB of memory, and the recommended setup is four cores at 3.2 GHz and 12 GB; storage is 15 GB, with a warning that later releases may want more. Nothing official breaks that down per player or per map, so what follows is our own advice.

  • Clock speed first. Take the 2.8-3.2 GHz quad core as the floor for the server, not a target.
  • Memory with headroom. 12 GB is the recommended line for the game; a bigger random map, more than the default 8 player slots, or a mod pack all push it up.
  • Map size. The shipped config says officially supported random world sizes run from 6144 to 10240, in steps of 2048. Bigger worlds take longer to generate and more disk to store.
  • Zombie and view limits. The config file itself warns that raising MaxSpawnedZombies (64 for the whole map) has a huge performance cost, and that the client view-distance cap is heavy on memory.

Up and running in an evening

These steps assume Ubuntu and a fresh machine. You will make a user just for the game, download the server with SteamCMD (no game licence needed on the server, players still need their own copy), and set the firewall so only SSH and the game get through.

  1. Turn on Ubuntu's multiverse repository and the i386 architecture, and apt can install steamcmd.
  2. Create a user called horde and download app 294420 into its home folder as that user.
  3. Allow SSH in the firewall first, then UDP 26900 to 26903 plus TCP 26900, the ports the Valve developer wiki lists for the default setup.
  4. Copy serverconfig.xml to a name of your own and edit that copy, so updates never overwrite your settings.
  5. Start it with ./startserver.sh -configfile= followed by your file name; the script refuses to run without it.
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update && sudo apt install steamcmd
sudo useradd -m -s /bin/bash horde
sudo -u horde /usr/games/steamcmd +force_install_dir /home/horde/game \
  +login anonymous +app_update 294420 validate +quit
sudo ufw allow OpenSSH
sudo ufw allow 26900/tcp
sudo ufw allow 26900:26903/udp
sudo ufw enable
sudo -u horde cp /home/horde/game/serverconfig.xml /home/horde/game/ourworld.xml

Order matters in step 3: if you turn the firewall on before allowing SSH, you lock yourself out of the session you are typing in.

The settings your group will notice

Open your copy and change only what sits inside value="...". These are the ones that shape what players see:

SettingShips asWhat to do with it
ServerNameMy Game HostThe name in the server browser
ServerPasswordempty (anyone may join)Set one for a private group
ServerVisibility2 (public)0 hides it; 1 (friends) only works after someone joins by IP
ServerMaxPlayerCount8Raise it only with memory to match
GameWorldNavezganeRWG for a random map from WorldGenSeed and WorldGenSize
ServerAllowCrossplayfalseListed for crossplay only if slots stay at the default 8 or below
UserDataFoldercommented outUncomment with an absolute path, e.g. /home/horde/world-data

Setting UserDataFolder is the change that pays off later: it is where the server writes random worlds and save games, and the admin list, serveradmin.xml, is read from its Saves folder. To give yourself admin rights, put your account in that file with permission level 0, copying the commented sample line; 0 is the most powerful level and 1000 the least.

Keeping the admin consoles to yourself

7 Days to Die has two ways to run the server from outside the game: telnet on port 8081 and a web dashboard on port 8080. Either one hands over full control, so the safe pattern is to keep both unreachable from the internet and go through SSH.

  • Telnet: leave TelnetPassword empty. The config explains that with no password, telnet is bound to the machine's own loopback address alone. Log in with SSH and type telnet 127.0.0.1 8081.
  • Web dashboard: it is off until you set WebDashboardEnabled to true. If you want it, do not open 8080 in the firewall. Run ssh -L 8080:127.0.0.1:8080 yourname@server-ip on your own computer, logging in as yourself (the horde service account has no login), and browse to localhost:8080 instead.
  • Map view: the dashboard's map needs EnableMapRendering, which renders tiles as players explore.

From that console, saveworld writes the world to disk and shutdown stops the game cleanly. Use them before every restart, update or backup.

Keeping it alive between sessions

A small systemd service starts the world when the machine boots and brings it back if it crashes:

# /etc/systemd/system/horde.service
[Unit]
Description=7 Days to Die world
After=network-online.target
Wants=network-online.target

[Service]
User=horde
WorkingDirectory=/home/horde/game
ExecStart=/home/horde/game/startserver.sh -configfile=ourworld.xml
Restart=on-failure
TimeoutStopSec=120

[Install]
WantedBy=multi-user.target

Turn it on with sudo systemctl enable --now horde. For backups, run saveworld, archive the folder you set as UserDataFolder with tar, and copy the archive to another machine. To update, run the same SteamCMD command again; everyone who joins has to be on the same game version, and version on the console tells you which one the server runs.

The server that fits

Every machine in our game server lineup is enterprise hardware (HPE on most lines) that you have to yourself, on a network port no other customer shares at the access switch. That port is unmetered, so a new survivor downloading a large random map on first join never shows up on an invoice. You pay month to month, with no contract.

Pick on clock speed rather than core count. Our Intel servers page lists every processor we rent with its clock, which makes it quick to find one at or above the game's 2.8 GHz minimum; a custom server lets you choose memory and NVMe storage around it. Choose Ubuntu when you order, as with our other Linux servers.

A server already in a rack is ready for you in about 30 minutes once your order clears approval, though payment verification can add time. Every rack server and blade also gives you a remote console in the browser, which is your way in when a firewall rule shuts SSH out. Put the world in whichever of our five data centers is closest to most of your players, and if you run more than one game, the Project Zomboid guide follows the same pattern.

When you do not need one

If two or three of you play the occasional weekend, hosting from the game is free and good enough. A dedicated machine makes sense once the world has to be there every night. It also comes as a plain server: no game panel or one-click mods, so the setup, updates and backups above are yours to run.

Questions people ask

Do I have to buy the game again for the server?
No. The dedicated server is a separate free tool, SteamCMD app 294420, and it downloads with an anonymous login. Every player who connects needs their own copy of 7 Days to Die.
What ports should I open?
For the default port, UDP 26900 to 26903 plus TCP 26900, the set listed on the Valve developer wiki page for this server. If you change ServerPort in your config, shift the whole range with it. Leave 8080 and 8081 closed and use SSH for admin work.
How much memory is enough for a small group?
There is no official server figure. The game's recommended setup is 12 GB of memory and four cores at 3.2 GHz, and we treat that as a starting point for the server. Larger random maps, more slots and mods all need more, so check usage after a few nights of play.
How do I give myself admin rights?
Put your account in serveradmin.xml with permission level 0, copying the commented sample line there, or use the admin add command on the console. With UserDataFolder set, that file sits in its Saves folder.
Can console players join my server?
Crossplay is off by default through ServerAllowCrossplay. The config notes that a crossplay server is only found in searches when it keeps no more than the default number of player slots and does not ignore sanctions.

Give your world a home

Pick a city near your group, choose Ubuntu, and follow the steps above on a machine that is yours alone.

Start your world

Read next