Hur man kör en Minecraft-server som en systemd-tjänst på en Linux VPS

En systemd-tjänst kör din Minecraft-server i bakgrunden som en hanterad Linux-tjänst. Detta innebär att du kan starta, stoppa, starta om, kontrollera loggar och aktivera den vid uppstart med systemctl istället för att lämna servern igång i ett SSH-fönster.

Denna guide är för en Linux VPS där du redan har SSH-åtkomst och en Minecraft server jar. Om du inte har installerat Java eller laddat ner en Minecraft server jar ännu, gör det först och återkom sedan till denna guide.

I exemplen nedan är Minecraft-servermappen /home/minecraft/server och jar-filen heter server.jar. Ändra dessa sökvägar om din server använder en annan mapp eller jar-namn.

  1. Skapa en dedikerad Linux-användare för Minecraft-servern. Att köra servern som sin egen användare är säkrare än att köra den som root.
    sudo useradd -m -r -s /bin/bash minecraft
    sudo mkdir -p /home/minecraft/server
    sudo chown -R minecraft:minecraft /home/minecraft/server
  2. Ladda upp eller ladda ner din Minecraft server jar till /home/minecraft/server. Mappen bör innehålla jar-filen och, efter den första manuella körningen, filer som eula.txt, server.properties, logs och världsmappen.

    Linux terminal som visar exempel på innehåll i Minecraft-servermappen

  3. Acceptera Minecraft EULA efter att du har läst den. Minecraft kommer inte att starta korrekt förrän eula.txt innehåller eula=true.
    sudo -u minecraft nano /home/minecraft/server/eula.txt
  4. Skapa ett startskript. Detta håller Java-kommandot på ett ställe, så att systemd-tjänsten kan köra samma kommando varje gång.
    sudo nano /home/minecraft/server/start.sh

    Använd ett kommando som detta, justera RAM och jar-namn för din server:

    #!/bin/bash
    cd /home/minecraft/server
    exec java -Xms2G -Xmx4G -jar server.jar nogui

    -Xms är den initiala RAM-allokeringen. -Xmx är den maximala RAM-allokeringen. Ställ inte in -Xmx till all VPS-minne; lämna RAM för Linux, Java-överhuvud, SSH, säkerhetskopior och andra tjänster.

    Linux terminal som visar ett Minecraft start.sh-skript

  5. Gör startskriptet körbart och ägt av Minecraft-användaren.
    sudo chmod +x /home/minecraft/server/start.sh
    sudo chown minecraft:minecraft /home/minecraft/server/start.sh
  6. Testa startskriptet manuellt innan du skapar tjänsten. Stoppa det med stop från Minecraft-konsolen eller tryck Ctrl+C efter att ha bekräftat att det startar.
    sudo -u minecraft /home/minecraft/server/start.sh

    Om detta manuella test misslyckas, åtgärda felet innan du fortsätter. En systemd-tjänst kommer inte att åtgärda ett trasigt Java-kommando, saknad jar, fel sökväg eller oaccepterad EULA.

  7. Skapa systemd-tjänstfilen.
    sudo nano /etc/systemd/system/minecraft.service
    [Unit]
    Description=Minecraft Server
    After=network.target
    
    [Service]
    User=minecraft
    WorkingDirectory=/home/minecraft/server
    ExecStart=/home/minecraft/server/start.sh
    Restart=on-failure
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target

    User anger vilket konto som kör servern. WorkingDirectory är Minecraft-mappen. ExecStart är skriptet som systemd kör. Restart=on-failure startar om tjänsten om den kraschar.

    Linux terminal som visar en Minecraft systemd-tjänstfil

  8. Ladda om systemd så att den ser den nya tjänstfilen.
    sudo systemctl daemon-reload
  9. Starta Minecraft-tjänsten och kontrollera dess status.
    sudo systemctl start minecraft
    sudo systemctl status minecraft --no-pager

    Linux terminal som visar systemctl status för en Minecraft-tjänst

  10. Aktivera tjänsten vid uppstart när du är nöjd med att den startar korrekt.
    sudo systemctl enable minecraft
  11. Öppna Minecraft-porten i din brandvägg om du använder en. Standardporten för Java Edition är 25565 TCP.
    sudo ufw allow 25565/tcp

    På AlmaLinux, Rocky Linux, Oracle Linux eller CentOS med firewalld, använd:

    sudo firewall-cmd --permanent --add-port=25565/tcp
    sudo firewall-cmd --reload

 

Användbara tjänstkommandon

KommandoVad det gör
sudo systemctl start minecraftStartar Minecraft-tjänsten.
sudo systemctl stop minecraftStoppar Minecraft-tjänsten.
sudo systemctl restart minecraftStartar om Minecraft-tjänsten.
sudo systemctl status minecraft --no-pagerVisar om tjänsten körs eller har misslyckats.
sudo journalctl -u minecraft -fFöljer den live tjänsteloggen.
sudo systemctl disable minecraftStoppar tjänsten från att starta automatiskt vid uppstart.

 

Felsökning

ProblemVad du ska kontrollera
Tjänsten misslyckas omedelbartKontrollera jar-filens namn, ExecStart-sökvägen, Java-installationen och eula.txt.
Spelare kan inte anslutaKontrollera att servern körs, port 25565 är öppen och server.properties har rätt port.
Servern får slut på minneSänk -Xmx, minska vyavståndet, ta bort tunga mods eller uppgradera RAM.
Ändringar tillämpas inteStarta om tjänsten efter att ha redigerat server.properties eller bytt ut jar-filen.

Ta en säkerhetskopia innan du byter ut jar-filen, ändrar världar, redigerar viktiga konfigurationsfiler eller uppdaterar en moddad server.

  • 0 användare blev hjälpta av detta svar
Hjälpte svaret dig?

Relaterade artiklar

Hur man ansluter till en Linux VPS med SSH

SSH är det vanliga sättet att hantera en Linux VPS. Det ger dig en terminal på servern så att du...

Hur man uppdaterar paket på en Linux VPS

Att hålla paketen uppdaterade hjälper till att åtgärda säkerhetsproblem och håller serververktyg...

Hur man skapar en sudo-användare på en Linux VPS

En sudo-användare låter dig hantera en Linux VPS utan att logga in som root för varje uppgift....

Hur man säkrar SSH på en Linux VPS

SSH är det huvudsakliga sättet att hantera en Linux VPS, så det bör säkras innan servern används...

Hur man kontrollerar diskutrymme på en Linux VPS

Problem med diskutrymme kan stoppa uppdateringar, säkerhetskopior, loggar, databaser och...