7 Days to Die is one of those games that's dramatically better with friends. Splitting up tasks — one person fortifies while another gathers food — makes the survival loop feel genuinely cooperative. But the Blood Moon horde on day 7 requires everyone online at the same time, which only works reliably on a persistent server.
Running the dedicated server on a VPS means the world stays running, hordes happen on schedule regardless of who's online, and your base construction persists between sessions.
The server itself is not as resource-intensive as the client, and SteamCMD makes installation straightforward.
I run game servers on Tencent Cloud Lighthouse. 7DtD is moderately resource-intensive — the 2 vCPU / 4 GB RAM plan works for small groups, 8 GB is more comfortable. Choose a region close to your players to keep latency low during Blood Moon nights when server load spikes. The snapshot feature is particularly valuable here: 7DtD worlds can grow large and corrupt, and having a pre-horde snapshot means you can roll back if the worst happens.
- Key Takeaways
| Players | RAM | CPU |
|---|---|---|
| 1–4 | 4 GB | 2 vCPU |
| 4–8 | 8 GB | 4 vCPU |
| 8+ | 12 GB+ | 4 vCPU |
World generation on first startup can take 5-15 minutes and uses significant CPU and RAM.
| Requirement | Notes |
|---|---|
| Cloud server | Tencent Cloud Lighthouse Ubuntu 22.04 |
| 4 GB+ RAM | 8 GB recommended |
| 20 GB+ disk | Server files + world data |
Cost: The Basic plan (4 GB RAM) starts at ~$8/month. Check current promotions.
ssh ubuntu@YOUR_SERVER_IP
sudo apt update && sudo apt upgrade -y
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 steamcmd
sudo adduser --disabled-password --gecos "" sdtd
sudo su - sdtd
# App ID 294420 = 7 Days to Die Dedicated Server
/usr/games/steamcmd \
+login anonymous \
+force_install_dir ~/sdtd-server \
+app_update 294420 validate \
+quit
ls ~/sdtd-server/
exit # Back to ubuntu user
sudo -u sdtd nano /home/sdtd/sdtd-server/serverconfig.xml
Key settings to modify:
<property name="ServerName" value="My 7DTD Server"/>
<property name="ServerDescription" value="Private server for friends"/>
<property name="ServerPassword" value=""/> <!-- Optional password -->
<property name="ServerPort" value="26900"/>
<property name="ServerVisibility" value="2"/> <!-- 0=not listed, 1=friends, 2=public -->
<property name="ServerMaxPlayerCount" value="8"/>
<property name="GameWorld" value="Navezgane"/> <!-- Navezgane or RWG (random gen) -->
<property name="GameName" value="My Game"/>
<property name="GameMode" value="GameModeSurvival"/>
<property name="GameDifficulty" value="2"/> <!-- 0=Easiest, 5=Hardest -->
<property name="ZombieMove" value="0"/> <!-- 0=Walk, 4=Sprint -->
<property name="ZombieMoveNight" value="3"/>
<property name="BloodMoonFrequency" value="7"/> <!-- Days between hordes -->
<property name="BloodMoonRange" value="1"/>
<property name="LootAbundance" value="100"/>
<property name="LootRespawnDays" value="7"/>
<property name="EnemySpawnMode" value="True"/>
<property name="SaveGameFolder" value="/home/sdtd/sdtd-saves"/>
<!-- Admin access via Telnet -->
<property name="TelnetEnabled" value="true"/>
<property name="TelnetPort" value="8081"/>
<property name="TelnetPassword" value="your_telnet_password"/>
sudo -u sdtd mkdir -p /home/sdtd/sdtd-saves
sudo nano /etc/systemd/system/sdtd.service
[Unit]
Description=7 Days to Die Dedicated Server
After=network.target
[Service]
Type=simple
User=sdtd
WorkingDirectory=/home/sdtd/sdtd-server
ExecStart=/home/sdtd/sdtd-server/7DaysToDieServer.x86_64 \
-configfile=/home/sdtd/sdtd-server/serverconfig.xml \
-logfile=/home/sdtd/sdtd.log \
-quit -batchmode -nographics -dedicated
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable sdtd
sudo systemctl start sdtd
# First startup takes 5-15 minutes for world generation
sudo journalctl -u sdtd -f
# Wait for: GameServer.net Init complete
sudo ufw allow 26900/tcp # Game port
sudo ufw allow 26900/udp # Game port UDP
sudo ufw allow 26901/udp # Steam port
sudo ufw allow 26902/udp # Steam port
sudo ufw allow 8081/tcp # Telnet admin (restrict to your IP!)
sudo ufw allow ssh
sudo ufw enable
Open the same in the Lighthouse console firewall. For the Telnet port, restrict to your IP:
# Restrict Telnet to your IP only
sudo ufw delete allow 8081/tcp
sudo ufw allow from YOUR_IP to any port 8081
In 7 Days to Die:
YOUR_SERVER_IP:26900Connect via Telnet for admin access:
# From your local machine
telnet YOUR_SERVER_IP 8081
# Enter the Telnet password
Common admin commands:
listplayers - Show online players
kick PlayerName reason - Kick a player
ban add PlayerName 1 days reason - Ban for 1 day
ban remove PlayerName - Remove ban
admin add PlayerName 0 - Add admin (level 0 = full admin)
give PlayerName item 10 - Give items
teleport EntityID x y z - Teleport player
say "Message" - Server broadcast message
saveworld - Save the world immediately
shutdown - Graceful shutdown
sudo nano ~/backup_sdtd.sh
#!/bin/bash
BACKUP_DIR=/home/ubuntu/backups/sdtd
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
sudo systemctl stop sdtd
sleep 10
sudo tar czf $BACKUP_DIR/sdtd_saves_$DATE.tar.gz \
/home/sdtd/sdtd-saves/
sudo systemctl start sdtd
find $BACKUP_DIR -mtime +7 -delete
echo "7DTD backup: $DATE"
chmod +x ~/backup_sdtd.sh
(crontab -l; echo "0 5 * * * ~/backup_sdtd.sh") | crontab -
Unlike Minecraft with sleep acceleration, 7DtD's world runs at full speed 24/7 — including zombie spawning, loot respawn timers, and horde day counting. Even with no players online, the server day counter advances.
This means:
If you want the world to pause when empty, the server doesn't have this built in. Some modding solutions exist, but the vanilla server always runs.
Plan around this: set BloodMoonFrequency high enough that hordes align with your play sessions, and check the current in-game day when logging in so you can prepare.
| Issue | Likely Cause | Fix |
|---|---|---|
| Connection refused | Service not running or wrong port | Check systemctl status SERVICE and verify firewall rules |
| Permission denied | Wrong file ownership or permissions | Check file ownership with ls -la and use chown/chmod to fix |
| 502 Bad Gateway | Backend service not running | Restart the backend service; check logs with journalctl -u SERVICE |
| SSL certificate error | Certificate expired or domain mismatch | Run sudo certbot renew and verify domain DNS points to server IP |
| Service not starting | Config error or missing dependency | Check logs with journalctl -u SERVICE -n 50 for specific error |
| Out of disk space | Logs or data accumulation | Run df -h to identify usage; clean logs or attach CBS storage |
| High memory usage | Too many processes or memory leak | Check with htop; consider upgrading instance plan if consistently high |
| Firewall blocking traffic | Port not open in UFW or Lighthouse console | Open port in Lighthouse console firewall AND sudo ufw allow PORT |
What server size do I need for a 7 Days to Die server?
Check the requirements section in this guide. Generally: more RAM = more players. Start with the recommended specs and monitor actual usage with htop before scaling up.
How do I keep the 7 Days to Die server running when I close my SSH session?
Use screen, tmux, or systemd to run the server as a background process. The guide covers setting up a systemd service for automatic startup and crash recovery.
How do I update the 7 Days to Die server software?
Stop the server, download the new version, replace the old binary or files, and restart. Always back up your world/save data first. Check the game's official documentation for version-specific migration notes.
How do I protect my server from unwanted players?
Use password protection and/or whitelist mode (if supported). Restrict the server port in UFW to known IP addresses if it's a private server for a small group.
Run your zombie survival server:
👉 Tencent Cloud Lighthouse — Game server VPS
👉 View current pricing and promotions
👉 Explore all active deals and offers