Unturned Server Linux Systemd Service
Run an Unturned dedicated server as a Linux systemd service for automatic startup on boot, crash recovery, and log management via journalctl.
Unturned Linux Systemd Service
Running Unturned as a systemd service provides automatic boot startup, crash recovery, and centralized log management.
Create a Dedicated User
Never run game servers as root:
sudo useradd -r -m -d /opt/unturned -s /sbin/nologin unturned
sudo chown -R unturned:unturned /opt/unturned-server
Create the Startup Script
Create /opt/unturned-server/start.sh:
#!/bin/bash
cd /opt/unturned-server/steamapps/common/U3DS
exec ./ServerHelper.sh +InternetServer/MyServer -ThreadedConsole
Make it executable:
chmod +x /opt/unturned-server/start.sh
chown unturned:unturned /opt/unturned-server/start.sh
Replace MyServer with your actual server name from Commands.dat.
Create the Systemd Unit File
Create /etc/systemd/system/unturned.service:
[Unit]
Description=Unturned Dedicated Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=unturned
Group=unturned
WorkingDirectory=/opt/unturned-server/steamapps/common/U3DS
ExecStart=/opt/unturned-server/start.sh
Restart=on-failure
RestartSec=20s
StandardOutput=journal
StandardError=journal
SyslogIdentifier=unturned-server
# Prevent core dumps and limit file handles
LimitCORE=0
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
Enable and Start
sudo systemctl daemon-reload
sudo systemctl enable unturned
sudo systemctl start unturned
Managing the Service
# Status
sudo systemctl status unturned
# Live logs
sudo journalctl -u unturned -f
# Stop
sudo systemctl stop unturned
# Restart
sudo systemctl restart unturned
Scheduled Restart with a Timer
Daily restarts clear accumulated memory. Create /etc/systemd/system/unturned-restart.service:
[Unit]
Description=Restart Unturned Server
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart unturned
Create /etc/systemd/system/unturned-restart.timer:
[Unit]
Description=Daily Unturned Server Restart
[Timer]
OnCalendar=*-*-* 04:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl enable --now unturned-restart.timer
Automatic Update and Restart
Pair the systemd service with a SteamCMD update script that runs before the server restarts:
# /opt/unturned-server/update.sh
#!/bin/bash
systemctl stop unturned
steamcmd +login anonymous +force_install_dir /opt/unturned-server \
+app_update 1110390 validate +quit
systemctl start unturned
Schedule this in a separate timer or cron job to keep the server updated automatically.