7 Days To Die Dedicated Server auf Debian Linux via Kommandozeile installieren
Die Installation eines 7 Days To Die Dedicated Servers auf auf Debian Linux via Kommandozeile ist nicht ganz trivial. Das gilt vor allem für die Inbetriebnahme des Steam-Clients für die Kommandozeile.
Der Server benötigt rund 15 GiB Platz auf der Platte und rund 3,5 GiB RAM (ohne Spieler).
Steam-Client
Als Grundvoraussetzung für alle Steam-Themen muss zuerst mal der Client installiert und grundkonfiguriert werden. Das passiert am Besten als root, um den Client systemweit für alle Benutzer anbieten zu können.
Download und Auspacken
Im Zielverzeichnis müssen rund 285 MiB Platz vorhanden sein.
cd /tmp wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz mkdir /opt/steamcmd cd /opt/steamcmd tar xzf /tmp/steamcmd_linux.tar.gz && rm -f /tmp/steamcmd_linux.tar.gz
Alternativ kann mit apt-get install steamcmd
das zugehörige Debian-Paket installiert werden. Die weiteren Ausführungen für Berechtigungen und Suchpfad können hier dann aber nicht angewendet werden.
Initialer Start
./steamcmd
Hier scrollt nun eine Menge Text durch mit Hinweisen über Downloads und Pakete. Am Ende muss ein fett gedruckter Prompt da stehen:
Steam>
Der Client kann an dieser Stelle mit quit
verlassen werden.
Berechtigungen einrichten
groupadd steam chgrp -R steam /opt/steamcmd find /opt/steamcmd -type d -exec chmod 2775 {} \; find /opt/steamcmd -type f -exec chmod 664 {} \; find /opt/steamcmd -type f -a \( -name "*.sh" -o -name "*.so" -o -name "*.so.*" \) -exec chmod -v 755 {} \; chmod a+x /opt/steamcmd/linux32/* chmod 2770 /opt/steamcmd
Suchpfad ergänzen
vi /etc/profile
Natürlich kann man den Editor seiner Wahl verwenden. Letztendlich kommt es darauf an, in den Zeilen, in denen die PATH
-Variable gesetzt wird, den Pfad zum Steam-Client zu ergänzen.
- Vorher
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games" fi
- Nachher
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/opt/steamcmd" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/opt/steamcmd" fi
Optional können nun bereits auf dem System angelegte Benutzer in die Gruppe steam aufgenommen werden.
useradd reiner steam
(Im Beispiel heißt der vorhandene Benutzer reiner.)
Damit sind die vorbereitenden Arbeiten für den Client abgeschlossen.
Server
Sinnvollerweise richtet man den Server so ein, dass er unter einem eigenen Benutzer läuft. Dazu fügen wir den Benutzer sdtd hinzu:
adduser --ingroup steam --disabled-password --gecos 'Seven Days To Die Dedicated Server Account' sdtd
Installation
Nun installieren wir den Server. Ganz wichtig ist, dass in /home genügend freier Platz zu Verfügung steht.
su - sdtd steamcmd.sh
Ab hier ist nun nach jeder Eingabe der Steam>
-Prompt sichtbar.
login anonymous app_update 294420 validate
Der Download wird nun durchgeführt und dauert seine Zeit.
Folgende Fehler sind derzeit bekannt:
Error! App '294420' state is 0x202 after update job.
: Nicht genügend freier Platz in /home/sdtd/Steam.Error! App '294420' state is 0x426 after update job.
: Servertask läuft noch. Muss vorher beendet werden.
Nach dem Update kann der Client wiederum beendet werden:
quit
Konfiguration
Die Konfiguration findet sich in ~/Steam/steamapps/common/"7 Days to Die Dedicated Server"/serverconfig.xml.
Mit telnet localhost 8081
kann der Server via Kommandozeile gesteuert werden (sofern er läuft).
Weiteres wird noch ergänzt.
Automatischer Start
Damit der Server nach dem automatischen Start ordnungsgemäß im Hintergrund weiterläuft, muss im Startscript startserver.sh eine Anpassung vorgenommen werden: Die eigentlichen Startzeilen müssen mit einer Leerstelle und Kaufmanns-und (&) abgeschlossen werden:
- Vorher
./7DaysToDieServer.x86_64 -logfile 7DaysToDieServer_Data/output_log__`date +%Y-%m-%d__%H-%M-%S`.txt -quit -batchmode -nographics -dedicated $PARAMS
- Nachher
./7DaysToDieServer.x86_64 -logfile 7DaysToDieServer_Data/output_log__`date +%Y-%m-%d__%H-%M-%S`.txt -quit -batchmode -nographics -dedicated $PARAMS &
Durch den nachfolgenden Cronjob wird der Server nach einem Reboot automatisch gestartet. Muss mit crontab -e
als Benutzer sdtd eingefügt werden:
@reboot cd ~/Steam/steamapps/common/'7 Days to Die Dedicated Server' && ./startserver.sh -configfile=serverconfig.xml
Mit der o. G. Zeile als Benutzer sdtd, ohne das @reboot vornedran kann der Server dann gestartet und die Shell alsdann geschlossen werden (logout).
Server beenden
Mit dem Konsolen-Kommando (telnet, s. O.) shutdown kann der Server ordnungsgemäß beendet werden. Ob das auch bei einem normalen kill-Kommando im Rahmen eines Host-Reboots so ordentlich läuft, ist derzeit unklar.
Debugging
Im Unterordner 7DaysToDieServer_Data findet sich ein output_log mit Timestamp hintendran, da landen die Ausgaben vom Server drin.
Firewall
Der Server öffnet folgende Ports:
- tcp/127.0.0.1:8081 (Management)
- tcp/26900
- udp/26900
- udp/26902
Die letzten drei müssen in einer ggfs. vorhandenen Firewall bzw. einem NAT-Router entsprechend geöffnet bzw. weitergeleitet werden.
Weblinks
- 7 Days To Die: dedicated Server auf Debian installieren (fehlerhaft, aber als initialer Start für diesen Artikel gut geeignet)
- Server-Dokumentation im 7 Days to Die Wiki
- Uninstall a Steam game with the console, Stack Exchange
- Installing Linux dedicated server for 7 days to die mit Tips zur Installation von experimentellen Releases.