Minecraft-Server automatisch starten: systemd-Service und Cronjob
Nach einem Server-Neustart soll der Minecraft-Server von selbst wieder laufen. Wir zeigen die systemd-Service-Unit als sauberen Weg und den Cronjob mit @reboot als Alternative.
Ihr Minecraft-Server soll nach einem Neustart des Rootservers von selbst wieder online gehen, ohne dass Sie sich per SSH einloggen müssen? Dann sind Sie hier genau richtig.
Wir zeigen Ihnen zwei Wege: die systemd-Service-Unit als saubere und empfohlene Lösung sowie den klassischen Cronjob mit @reboot als schnelle Alternative. Beide Varianten funktionieren auf allen gängigen Linux-Distributionen, also unter Debian, Ubuntu, AlmaLinux und Rocky Linux.
systemd oder Cronjob: welcher Weg ist der richtige?
Ein Cronjob mit @reboot ist schnell eingerichtet, kennt aber nur einen einzigen Zeitpunkt: den Systemstart. Läuft dabei etwas schief oder stürzt der Server später ab, passiert nichts weiter.
Eine systemd-Service-Unit ist der saubere Weg und bringt mehrere Vorteile mit:
- Der Server startet erst, wenn das Netzwerk wirklich bereit ist, statt nach einer geratenen Wartezeit.
- Nach einem Absturz startet systemd den Server automatisch neu.
- Sie bedienen den Server mit den gewohnten Befehlen
systemctl start,stop,restartundstatus. - Fehlermeldungen landen im Journal und sind mit
journalctlnachvollziehbar.
Wir empfehlen deshalb den systemd-Weg. Den Cronjob beschreiben wir weiter unten als Alternative für Fälle, in denen systemd nicht zur Verfügung steht.
Vorbereitung: Startbefehl, Benutzer und Verzeichnis notieren
Bevor Sie loslegen, brauchen Sie drei Angaben aus Ihrer bestehenden Installation:
- Den Startbefehl aus Ihrer Datei "start.sh", also zum Beispiel
screen -dmS spigot java -Xmx4G -jar spigot.jar - Den Benutzer, unter dem der Server läuft, im Beispiel "spigot"
- Das Verzeichnis, in dem die Server-Datei liegt, im Beispiel
/home/spigot/server
Ein typischer Inhalt einer start.sh sieht so aus:
#Dies ist lediglich ein Beispiel! Verwenden Sie den Inhalt Ihrer eigenen start.sh.
screen -S spigot java -Xmx2G -jar spigot.jar
Wichtig: Für den automatischen Start muss aus screen -S unbedingt screen -dmS werden. Der Grund: screen -S öffnet eine interaktive Sitzung und erwartet ein Terminal. Beim Systemstart gibt es kein Terminal, der Start würde also fehlschlagen. screen -dmS startet die Sitzung dagegen direkt im Hintergrund.
Falls Sie noch gar keinen Minecraft-Server eingerichtet haben, hilft Ihnen zuerst unsere Anleitung Minecraft-Server auf Debian installieren weiter.
systemd-Service-Unit für den Minecraft-Server anlegen
Unit-Datei erstellen
Legen Sie als root eine neue Service-Datei an:
nano /etc/systemd/system/minecraft.service
Tragen Sie folgenden Inhalt ein und passen Sie Benutzer, Verzeichnis, Arbeitsspeicher und Dateinamen an Ihre Installation an:
[Unit]
Description=Minecraft-Server
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
User=spigot
WorkingDirectory=/home/spigot/server
ExecStart=/usr/bin/screen -dmS spigot java -Xmx4G -jar spigot.jar
ExecStop=/usr/bin/screen -S spigot -X stuff "stop\n"
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
Die wichtigsten Zeilen im Überblick:
AfterundWantssorgen dafür, dass der Server erst startet, wenn das Netzwerk verfügbar ist.Userlegt fest, unter welchem Benutzer der Server läuft. Betreiben Sie ihn niemals als root.WorkingDirectoryist das Verzeichnis mit der Server-Datei. Ohne diese Angabe findet Java die JAR-Datei nicht.ExecStopschickt den Befehl "stop" an die screen-Sitzung. Dadurch speichert der Server die Welt sauber, statt einfach abgeschossen zu werden.Restart=on-failurestartet den Server nach einem Absturz automatisch neu,RestartSeclegt die Wartezeit in Sekunden fest.
Speichern Sie die Datei mit "STRG + X", dann "Y" und "Enter".
Dienst aktivieren und starten
Danach liest systemd die neue Datei ein, aktiviert den Autostart und startet den Server sofort:
systemctl daemon-reload
systemctl enable --now minecraft
Den aktuellen Zustand prüfen Sie mit:
systemctl status minecraft
Zeigt die Ausgabe "active", läuft der Dienst. Bei Problemen liefert das Journal die genaue Fehlermeldung:
journalctl -u minecraft -n 50
Server-Konsole erreichen
Der Server läuft weiterhin in einer screen-Sitzung. Da diese dem Benutzer "spigot" gehört, wechseln Sie zuerst in diesen Benutzer und öffnen dann die Konsole:
su spigot
screen -r spigot
Mit "STRG + A + D" verlassen Sie die Konsole wieder, ohne den Server zu beenden.
Server stoppen und neu starten
Ab sofort steuern Sie den Server über systemd:
systemctl stop minecraft
systemctl restart minecraft
Soll der Autostart wieder deaktiviert werden, genügt:
systemctl disable minecraft
Alternative: Autostart über einen Cronjob mit @reboot
Wenn Sie keine Service-Unit anlegen möchten, erreichen Sie den Autostart auch über die Crontab des jeweiligen Benutzers. Öffnen Sie die Crontab mit:
export VISUAL=nano; crontab -e
Fügen Sie Ihren Startbefehl als letzte Zeile mit dem Präfix @reboot ein:
@reboot <Inhalt Ihrer start.sh Datei>
#So sollte der Startparameter ungefähr aussehen, dies kann von Ihrem Start-Skript abweichen.
@reboot screen -dmS <Screen-Name> java -Xmx<AMOUNT>G -jar <Verzeichnis und Name der Minecraft-Server-Datei>.jar
#BEISPIEL:
@reboot screen -dmS spigot java -Xmx2G -jar /home/spigot/spigot.jar
Achten Sie auch hier darauf, dass screen -dmS und nicht screen -S verwendet wird. Wie Sie beliebige weitere Anwendungen und Skripte auf demselben Weg beim Serverstart mitstarten lassen, zeigt unsere Anleitung Programme beim Serverstart automatisch ausführen.
Autostart testen
Verlassen Sie sich nicht darauf, dass die Konfiguration stimmt, sondern testen Sie sie einmal bewusst. Starten Sie den Server neu:
reboot
Warten Sie ein bis zwei Minuten, melden Sie sich erneut per SSH an und prüfen Sie mit systemctl status minecraft beziehungsweise mit screen -ls, ob der Minecraft-Server wieder läuft. Verbinden Sie sich zusätzlich mit dem Spiel-Client, damit Sie sicher sind, dass der Server auch wirklich erreichbar ist.
Häufige Fehler beim Autostart
- screen -S statt screen -dmS: der mit Abstand häufigste Fehler. Ohne
-dmstartet der Server beim Booten nicht. - Falsches Verzeichnis: Java findet die JAR-Datei nicht. Prüfen Sie
WorkingDirectorybeziehungsweise geben Sie im Cronjob den vollständigen Pfad zur JAR-Datei an. - Falscher Benutzer: Läuft der Dienst als root, gehören die neu erzeugten Weltdateien anschließend root, und der eigentliche Server-Benutzer kann sie nicht mehr schreiben.
- Zu wenig Arbeitsspeicher: Ist der Wert hinter
-Xmxgrößer als der freie Arbeitsspeicher, beendet der Kernel den Java-Prozess kurz nach dem Start wieder.
Häufige Fragen
systemd oder Cronjob: was ist der bessere Weg?
Warum muss screen -S zu screen -dmS geändert werden?
Wie erreiche ich die Server-Konsole nach einem automatischen Start?
Startet systemd meinen Server auch nach einem Absturz neu?
Wie prüfe ich, ob der Autostart wirklich funktioniert?
2024-2026 KernelHost GmbH. Alle Rechte vorbehalten. Diese Anleitung ist urheberrechtlich geschützt. Eine Veröffentlichung auf anderen Webseiten, auch auszugsweise oder in bearbeiteter Form, ist ohne unsere schriftliche Zustimmung nicht gestattet. Zitate mit Quellenangabe und Link sind ausdrücklich willkommen.

