Minecraft-server automatisch starten: systemd-service en cronjob
Na een herstart van de server moet de Minecraft-server vanzelf weer draaien. Wij laten de systemd-service-unit zien als nette aanpak en de cronjob met @reboot als alternatief.
Moet uw Minecraft-server na een herstart van de rootserver vanzelf weer online komen, zonder dat u via SSH hoeft in te loggen? Dan bent u hier aan het juiste adres.
Wij laten u twee manieren zien: de systemd-service-unit als nette en aanbevolen oplossing en de klassieke cronjob met @reboot als snel alternatief. Beide varianten werken op alle gangbare Linux-distributies, dus onder Debian, Ubuntu, AlmaLinux en Rocky Linux.
systemd of cronjob: welke manier is de juiste?
Een cronjob met @reboot is snel ingesteld, maar kent slechts één moment: de systeemstart. Gaat daarbij iets mis of crasht de server later alsnog, dan gebeurt er verder niets.
Een systemd-service-unit is de nette aanpak en biedt meerdere voordelen:
- De server start pas wanneer het netwerk echt beschikbaar is, in plaats van na een geschatte wachttijd.
- Na een crash start systemd de server automatisch opnieuw op.
- U bedient de server met de vertrouwde commando's
systemctl start,stop,restartenstatus. - Foutmeldingen belanden in het journal en zijn met
journalctlna te lezen.
Wij raden daarom de systemd-aanpak aan. De cronjob beschrijven wij verderop als alternatief voor situaties waarin systemd niet beschikbaar is.
Voorbereiding: startcommando, gebruiker en map noteren
Voordat u begint, hebt u drie gegevens uit uw bestaande installatie nodig:
- Het startcommando uit uw bestand "start.sh", dus bijvoorbeeld
screen -dmS spigot java -Xmx4G -jar spigot.jar - De gebruiker waaronder de server draait, in het voorbeeld "spigot"
- De map waarin het serverbestand staat, in het voorbeeld
/home/spigot/server
Een typische inhoud van een start.sh ziet er zo uit:
#Dit is slechts een voorbeeld! Gebruik de inhoud van uw eigen start.sh.
screen -S spigot java -Xmx2G -jar spigot.jar
Belangrijk: voor de automatische start moet screen -S beslist screen -dmS worden. De reden: screen -S opent een interactieve sessie en verwacht een terminal. Bij de systeemstart is er geen terminal, dus zou het starten mislukken. screen -dmS start de sessie daarentegen meteen op de achtergrond.
Hebt u nog helemaal geen Minecraft-server ingericht, dan helpt onze handleiding Minecraft-server op Debian installeren u eerst verder.
systemd-service-unit voor de Minecraft-server aanmaken
Unit-bestand aanmaken
Maak als root een nieuw servicebestand aan:
nano /etc/systemd/system/minecraft.service
Voer de volgende inhoud in en pas gebruiker, map, werkgeheugen en bestandsnaam aan uw installatie aan:
[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
De belangrijkste regels op een rij:
AfterenWantszorgen ervoor dat de server pas start wanneer het netwerk beschikbaar is.Userbepaalt onder welke gebruiker de server draait. Laat hem nooit als root draaien.WorkingDirectoryis de map met het serverbestand. Zonder deze opgave vindt Java het JAR-bestand niet.ExecStopstuurt het commando "stop" naar de screen-sessie. Daardoor slaat de server de wereld netjes op in plaats van zomaar afgebroken te worden.Restart=on-failurestart de server na een crash automatisch opnieuw op,RestartSecbepaalt de wachttijd in seconden.
Sla het bestand op met "CTRL + X", daarna "Y" en "Enter".
Service activeren en starten
Daarna leest systemd het nieuwe bestand in, activeert de autostart en start de server meteen:
systemctl daemon-reload
systemctl enable --now minecraft
De actuele status controleert u met:
systemctl status minecraft
Staat er "active" in de uitvoer, dan draait de service. Bij problemen levert het journal de precieze foutmelding:
journalctl -u minecraft -n 50
Serverconsole bereiken
De server draait nog steeds in een screen-sessie. Omdat die van de gebruiker "spigot" is, wisselt u eerst naar deze gebruiker en opent u daarna de console:
su spigot
screen -r spigot
Met "CTRL + A + D" verlaat u de console weer, zonder de server te stoppen.
Server stoppen en opnieuw starten
Vanaf nu bestuurt u de server via systemd:
systemctl stop minecraft
systemctl restart minecraft
Wilt u de autostart weer uitschakelen, dan volstaat:
systemctl disable minecraft
Alternatief: autostart via een cronjob met @reboot
Wilt u geen service-unit aanmaken, dan bereikt u de autostart ook via de crontab van de betreffende gebruiker. Open de crontab met:
export VISUAL=nano; crontab -e
Voeg uw startcommando als laatste regel toe met het voorvoegsel @reboot:
@reboot <inhoud van uw start.sh bestand>
#Zo zou de startparameter er ongeveer uit moeten zien, dit kan van uw eigen startscript afwijken.
@reboot screen -dmS <SCREEN-NAAM> java -Xmx<AMOUNT>G -jar <map en naam van het Minecraft-serverbestand>.jar
#VOORBEELD:
@reboot screen -dmS spigot java -Xmx2G -jar /home/spigot/spigot.jar
Let er ook hier op dat screen -dmS wordt gebruikt en niet screen -S. Hoe u willekeurige andere programma's en scripts op dezelfde manier bij de serverstart laat meestarten, leest u in onze handleiding Programma's automatisch uitvoeren bij de serverstart.
Autostart testen
Vertrouw er niet blindelings op dat de configuratie klopt, maar test hem bewust een keer. Start de server opnieuw op:
reboot
Wacht een tot twee minuten, log opnieuw in via SSH en controleer met systemctl status minecraft of met screen -ls of de Minecraft-server weer draait. Maak daarnaast verbinding met de spelclient, zodat u zeker weet dat de server ook werkelijk bereikbaar is.
Veelgemaakte fouten bij de autostart
- screen -S in plaats van screen -dmS: veruit de meest voorkomende fout. Zonder
-dmstart de server tijdens het booten niet. - Verkeerde map: Java vindt het JAR-bestand niet. Controleer
WorkingDirectoryof geef in de cronjob het volledige pad naar het JAR-bestand op. - Verkeerde gebruiker: draait de service als root, dan zijn de nieuw aangemaakte wereldbestanden daarna eigendom van root en kan de eigenlijke servergebruiker ze niet meer beschrijven.
- Te weinig werkgeheugen: is de waarde achter
-Xmxgroter dan het vrije werkgeheugen, dan beëindigt de kernel het Java-proces kort na de start weer.
Veelgestelde vragen
systemd of cronjob: wat is de betere manier?
Waarom moet screen -S in screen -dmS worden veranderd?
Hoe bereik ik de serverconsole na een automatische start?
Start systemd mijn server ook na een crash opnieuw op?
Hoe controleer ik of de autostart echt werkt?
2024-2026 KernelHost GmbH. Alle rechten voorbehouden. Deze handleiding is auteursrechtelijk beschermd. Publicatie op andere websites, geheel, gedeeltelijk of in bewerkte vorm, is zonder onze schriftelijke toestemming niet toegestaan. Citeren met bronvermelding en link is uitdrukkelijk welkom.

