The 7 Days to Die dedicated server runs on both Linux and Windows. Both work; both have quirks. The right OS is the one your operator is comfortable maintaining — there's no killer performance gap that justifies forcing yourself onto an OS you don't know. This guide covers the real differences (operator workflow, OS feature surface) and the OS-specific tuning that's worth doing on each.
| Linux (Ubuntu/Debian) | Windows (Server or 10/11) | |
|---|---|---|
| Install | SteamCMD +app_update 294420 validate | SteamCMD on Windows or via Steam client |
| Service supervisor | systemd (or any init system) | Service Control Manager + NSSM, or Task Scheduler |
| Logs | Plain text file (path set in startserver.sh) or journalctl if wrapped in systemd | Plain text file (path set in startserver.bat) or Event Log if wrapped via NSSM |
| RAM overhead from OS | Lower for headless servers — no GUI shell | Higher unless using Server Core (no Desktop Experience) |
| Operator skill match | If you're comfortable with shell, cron, systemd | If you're comfortable with PowerShell, Task Scheduler, RDP |
| Common gotchas | File-descriptor limits, AppArmor / SELinux, missing 32-bit libs on a fresh install | Antivirus scanning the save folder, Defender real-time protection, power plan throttling |
Performance differences between the two on equivalent hardware are usually within noise — what dominates is single-thread CPU speed, RAM bandwidth, and the number of zombies/players (see Blood Moon balancing). Don't switch OS for a 5% paper gain; switch only if you're more comfortable on the other side.
Use a server install (Ubuntu Server, Debian without GNOME/KDE) so the desktop environment isn't competing for RAM. The dedicated server is a pure Unity headless process — it has no use for X11 or Wayland.
Unity-based servers can open many sockets and chunk files concurrently. The default per-process limit on stock Linux distros (often 1024 or 4096 soft, higher hard cap) is sometimes too low for busy or modded servers. Raise it for the user that runs the game:
# /etc/security/limits.d/7dtd.conf
<your-game-user> soft nofile 65535
<your-game-user> hard nofile 65535
If you run under systemd, also add LimitNOFILE=65535 to the unit's [Service] section. systemd's limit overrides PAM's limits.conf for services. Verify with cat /proc/<pid>/limits after start.
A simple unit gives you supervised restart-on-crash, timer-based scheduled restarts, and journalctl integration:
# /etc/systemd/system/7dtd.service
[Unit]
Description=7 Days to Die dedicated server
After=network-online.target
[Service]
Type=simple
User=<your-game-user>
WorkingDirectory=/home/<your-game-user>/7dtd
ExecStart=/home/<your-game-user>/7dtd/startserver.sh -configfile=serverconfig.xml
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
Pair with the timer pattern from Scheduling Automated Restarts for nightly graceful restarts.
SteamCMD itself is 32-bit on most distros. On a 64-bit Debian/Ubuntu install, you'll need lib32gcc-s1 (or lib32gcc1 on older releases). Install before SteamCMD's first run, otherwise SteamCMD silently fails to bootstrap.
vm.swappinessIf the server starts swapping, performance falls off a cliff — Unity's GC plus swap is brutal. Either size your RAM so swap is never needed, or set vm.swappiness=10 (default 60) to discourage the kernel from swapping while RAM is available. Don't disable swap entirely on small VPS instances; the OOM killer is worse.
If you're standing up a dedicated host, Windows Server with no Desktop Experience (Server Core) saves RAM and reduces background processes. For a home dedicated box, a clean Windows 10/11 install with non-essential apps removed is fine.
Set the system power plan to High Performance (or Ultimate Performance, available on Workstation/Server SKUs). Default Windows power plans down-clock the CPU during low load, which causes mid-tick stutters when the server suddenly needs full speed (e.g. Blood Moon spawn waves). powercfg /setactive SCHEME_MIN from an elevated PowerShell prompt sets High Performance.
Real-time AV scanning of the save folder while the server is writing chunks causes intermittent stalls and can — in worst cases — hold a write open long enough that the next save tick fails. Add exclusions:
C:\7DaysToDieServer\)%APPDATA%\7DaysToDie\Saves\ for the user running the server, or wherever your startserver.bat redirects it)7DaysToDieServer.exe processFor Defender: Settings → Virus & threat protection → Exclusions.
Setting 7DaysToDieServer.exe to Above Normal priority helps the server win CPU time over background tasks. Higher than that (High / Realtime) can starve other system services and is rarely worth the risk on Windows.
If your CPU has efficiency-cores (Intel 12th gen+), pin the process to performance-cores via Task Manager → Details → Set affinity. The server is heavily single-thread-sensitive; e-cores are slower per thread.
Use NSSM (Non-Sucking Service Manager) to wrap the server as a Windows Service so it survives RDP disconnects and reboots. Without this, the server runs only while a logged-in session holds the process — log out and the server dies.