wie würdet ihr den server starten lassen nach reboot?
Moin ich habe nun versucht mein mc server mit Cronjob zu starten nach einem reboot
nach mehreren tagen kucken geht es nicht gibt es noch eine andere methode ?
4 Antworten
Meine erste Wahl bei Game Servern ist LinuxGSM. Minecraft wird unterstützt.
Über das Tool kannst du Game Server wie z.B. Minecraft einfach installieren, verwalten und starten/stoppen. Die Server Konsole kann auch einfach erreicht werden. Der Game Server ist dann auch im Auto Start.
Fall LinuxGSM nicht unterstützt wird oder genutzt werden möchte, würde ein systemd Service anlegen. Damit kannst du den Server starten, stoppen und auch zum Auto Start hinzufügen. Du kannst auch ein User angeben, unter dem der Service laufen soll.
Auch wenn du über systemd die Konsolenausgabe sehen kannst, kannst du kein Eingabe tätigen. Du kannst also keine Command ausführen.
Eine mögliche Quelle über Systemd Services.
/etc/systemd/system/minecraft.service:
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User=minecraft
WorkingDirectory=[Falls nötig Working Directory setzen, alternativ Zeile entfernen]
ExecStart=java -jar /.../server.jar ...
[Install]
WantedBy=multi-user.target
Den Namen der Service Datei und die Description kannst du frei wählen. Der User sollte für dich korrekt gesetzt sein. Den Pfad zur server.jar mit deinen gewünschten Startparametern setzen. ExecStart ist dein Start Befehl mit absoluten Pfaden. Gegebenfalls Working Directory setzen.
Das Programm screen brauchst du nicht, es würde sogar Probleme bereiten. Der Server bleibt gestartet, auch wenn du deine SSH Session beendest. Ohne screen hast du keine Chance Minecraft Commands vom Server aus auszuführen.
https://unix.stackexchange.com/a/612118
Hier findest du noch eine sehr ähnlichen Vorschlag zu meinem. Falls du Commands zum Server senden möchtest, gibt es der Antwort auch eine Möglichkeit für systemd Sockets.
Die Befehle zum starten, stoppen, Auto Start aktivieren und co. findest du ebenfalls bei der Antwort.
Deine Lösung mit einem eigenen systemd Script startet den Server, aber es ist keine gute Unsetzung für systemd.
Dein screen Befehl startet den Minecraft Server im dettached Modus (siehe "man screen" unter "-d -m"). Danach wird der Screen Befehl und somit das Script beendet. Das Script läuft also nur so lange, bis die screen Session erfolgreich erstellt wurde.
Mein Beispiel systemd Service nutzt implizit den ExitType=main. Damit wird der Service als laufend betrachtet, während der ExexStart Befehl läuft. In deinem Fall wird der Minecraft Server für systemd nur 1s "laufen".
In meinem Fall läuft der java -jar ... Befehl so lange, wie der Minecraft Server läuft. Der Server kann so auch über systemd wieder gestoppt oder neugestartet werden.
In deiner Antwort nutzt du ein bestehenden systemd Service, der dann dein Script ausführen wird. Auch wenn beide Vorschläge systemd benutzen, ist es ein völlig andere Ansatz.
Meinen Vorschlag ist der schönere Weg. Mit einem eigenen systemd Service kann der Server u.A. leicht gestopp, gestartet und neugestartet werden. Die Abhängigkeit screen wird dazu auch nicht benutzt.
Sofern unsere beiden Vorschläge nicht vermischt werden, funktionieren beide auch. Funktionieren im Sinne von "Minecraft Server beim hochfahren starten".
Ja, über rc-local:
sudo systemctl enable rc-local
Wenn:
sudo systemctl status rc-local
inaktiv ist.
Dann:
sudo nano /etc/rc.local
dort schreibst du dann rein (unten nach dem "fi"):
sudo /DEINGANZERPFAD/server_start.sh
Dann teste es
und wie kann ich das von einem bestimmten user machen lassen in meinem fall war es der user minecraft
Brauchste nicht, ansonsten statt "sudo" einfach "su USERNAME"
Bash runcommands
Zu finden unter
/etc/rc.local
Was vor Exit 0 steht würde beim Start automatisch mit root ausgeführt.
Ich nutze bei meinem Server zuhause Crafty Controller, das ist eine Management Oberfläche um deine MC Server zu konfigurieren, starten, stoppen, automatisch zu starten etc.
ok aber habe auch ne cloud die kann der dann nicht managen glaube trotzdem danke
ok systemd kenn ich aber ich wüsste nicht wie ich es machen soll mit screen also brauche ja ne datei habe keine ahnugn wie ich das einstellen muss