Commande die beim Start eines Raspberry Pi automatisch ausgeführt werden sollten. Nun wie?

RaidBull  25.07.2021, 22:01

Welchen (Web?)-Server verwendest du?

verreisterNutzer 
Fragesteller
 25.07.2021, 22:11

Chromuim. Aber er hat nichts mit dem Server zu tun

3 Antworten

Den ersten und dritten Befehl musst Du nicht immer ausführen. Bei der automatischen Ausführung von Befehlen kannst Du den Benutzer frei wählen, das wäre root. Damit ist der erste Befehl hinfällig. Der dritte Befehlt setzt die Rechte. Die setzt man genau einmal, damit sind die Recht der Datei gesetzt. Das muss man nicht ständig wiederholen.

Den automatischen Start kannst Du z. B. per Cron erledigen. Dazu braucht es einen entsprechenden Eintrag in der Crontab:

sudo su
crontab -e

Ans Ende der nun geöffneten Datei schreibst Du:

@reboot /home/pi/Desktop/minecraft-server && java -Xms 3G -jar nukkit.jar

Der Schalter -Xms setzt den Arbeitsspeicher, den habe ich von 2G auf 3G erhöht.

Ergänzung:

Es ist sinnreich, den Server aus dem Benutzerverzeichnis des Benutzers pi zu entfernen. Besser wäre, den Nukkit-Server im Verzeichnis /opt zu installieren, statt in /home/pi/Desktop.

Die Crontab muss dann natürlich angepasst werden.

verreisterNutzer  25.07.2021, 22:10

Danke sehr ich werde es ausprobieren. Aber warum kann ich den RAM nicht hoch stellen? Nach dem hochstellen von RAM auf 4 GB startet der Server mit Fehlern. Nächste Frage: Habe ich mehr Vorteile wenn ich den Server neu installiere aber das ins /opt ?

0
franzhartwig  25.07.2021, 22:21
@verreisterNutzer
Nach dem hochstellen von RAM auf 4 GB startet der Server mit Fehlern.

Wie lauten die Fehler?

Der Pi hat 4 GB RAM. Das Betriebssystem braucht auch RAM. Zudem bist Du hingegangen und hast ein Betriebssystem mit grafischer Oberfläche verwendet. Auch das frisst RAM. Ein minimales Betriebssystem ohne grafische Oberfläche wäre da ökonomischer.

Nächste Frage: Habe ich mehr Vorteile wenn ich den Server neu installiere aber das ins /opt ?

Das sind Gründe der Sicherheit. In Benutzerverzeichnissen sollte man keine Dateien ausführen. Zudem ist es nicht sinnvoll, vom Benutzer root eine Datei im Benutzerverzeichnis des Benutzers pi auszuführen. Das widerspricht dem Konzept von Linux.

2
verreisterNutzer  25.07.2021, 23:17
@franzhartwig

Danke aber leider funktioniert es garnicht. Habe deinen Anweisungen gefolgt.

Der Server wird nicht automatisch gestartet

0
franzhartwig  26.07.2021, 07:16
@franzhartwig

Was mir noch auffällt: Die Rechte sind viel zu großzügig gesetzt. Schränke das mal ein:

find /home/pi/minecract-server -type f -print0 | xargs -0 chmod 0640
find /home/pi/minecraft-server -type d -print0 | xargs -0 chmod 0750
chmod +x /home/pi/minecraft-server/nukkit.jar

Und: muss das überhaupt als root gestartet werden? Wo hast Du die Anleitung her?

0
franzhartwig  26.07.2021, 07:59
@franzhartwig

Mir fällt gerade auf, dass die nukkit.jar nicht ausführbar sein muss. Der Befehl

chmod +x /home/pi/minecraft-server/nukkit.jar

ist also überflüssig.

Wir machen das jetzt mal richtig und konsequent:

Installiere den Nukkit-Server in /opt, sodass am Ende die nukkit.jar im Pfad /opt/minecraft-server/nukkit.jar liegt.

Nun legen wir einen separaten Benutzer an, unter dem der Server laufen wird:

sudo adduser minecraft --no-create-home --disabled-login --shell /bin/false

So angelegt hat der Benutzer minecraft kein Home-Verzeichnis, kann sich nicht einloggen und hat keinen Zugriff auf die Shell.

Wir setzen nun die Berechtigungen für das Verzeichnis /opt/minecraft-server:

sudo chown -R minecraft.minecraft /opt/minecraft-server

Jetzt legen wir eine Datei für systemd an. systemd ist ein sogenannter init-Manager, der den Start und das Stoppen von Prozessen verwaltet. systemd gehört zu Debian, ist also bei Dir vorhanden.

sudo nano /etc/systemd/system/minecraft-server.service
[Unit]
Description=Nukkit-Server
After=network.target

[Service]
User=minecraft
Group=minecraft
Restart=on-abort
WorkingDirectory=/opt/minecraft-server
ExecStart=/usr/bin/java -Xms3G -Xmx3G -jar /opt/minecraft-server/nukkit.jar

[Install]
WantedBy=multi-user.target

Du siehst die Schalter für den RAM, die musst Du ggf. anpassen. Xms setzt den initialen RAM beim Start des Servers, Xmx setzt den maximalen RAM.

Die Datei muss nun von systemd eingelesen werden, außerdem müssen wir sie aktivieren, damit der Server beim Neustart auch automatisch gestartet wird:

sudo systemctl daemon-reload
sudo systemctl enable minecraft-server

Nun kannst Du mit

sudo systemctl start minecraft-server
sudo systemctl stop minecraft-server

den Server starten und stoppen. Mit

sudo systemctl status minecraft-server

kannst Du den Status abrufen.

Die konfigurierte crontab benötigen wir nicht mehr, deshalb löschen wir die:

sudo crontab -r
0
verreisterNutzer  26.07.2021, 10:06
@franzhartwig

Danke ich werde es heute noch ausprobieren. Ausserdem ist hier die komische Anleitung https://youtu.be/P3vK-Jtj0FM

Ist es schwierig den Server ins Opt zu installieren? Ich habe echt fast keine Erfahrungen damit und muss ich alles neu einstellen oder ist es dann einfach in Opt und nichts muss eingestellt werden? Ausserdem kann ich das Linux System neu installieren aber ohne Grafische Oberfläche ? Ah ist egal wenn ich alles von mache. Ich werde sowieso aus vielen Fehlern lernen.

0
franzhartwig  26.07.2021, 10:39
@verreisterNutzer
Ausserdem ist hier die komische Anleitung  https://youtu.be/P3vK-Jtj0FM

Grauenhaft. Warum macht man so ein Video? 17 Minuten für so wenig Inhalt. Das tue ich mir nicht an.

Ist es schwierig den Server ins Opt zu installieren?

Aktuell hast Du den Server in /home/pi/Desktop installiert. Die Installation ins Verzeichnis /opt geht genauso, es ist ja nur ein anderes Verzeichnis.

Ich habe echt fast keine Erfahrungen damit und muss ich alles neu einstellen oder ist es dann einfach in Opt und nichts muss eingestellt werden?

Was hast Du denn eingestellt? Da gibt es eine Datei server.properties oder so ähnlich, da sind die Einstellungen gespeichert. Die server.properties kannst Du vom bisherhigen Verzeichnis kopieren.

Ausserdem kann ich das Linux System neu installieren aber ohne Grafische Oberfläche ?

Es gibt das Raspberry Pi OS in drei Varianten:

  • Raspberry Pi OS with desktop and recommended software
  • Raspberry Pi OS with desktop
  • Raspberry Pi OS Lite

Ich würde das letzte empfehlen. Das ist einigermaßen minimal und spart damit auch RAM. Du hast allerdings keine grafische Oberfläche und musst den Pi komplett über die Kommandozeile per SSH administrieren.

0
verreisterNutzer  26.07.2021, 16:06
@franzhartwig

"Chmod: Beim setzen der Zugriffsrechte für '/home/pi/minecraft-server/' Die Operation ist nicht erlaubt" Bei mir kommen ständig Fehler. Ich kann genau garnichts ändern. Kann es wohlmöglich wegen der schlechten Anleitung auf YouTube sein? Ausserdem kennst du ein YouTube Video was mir zeigt wie ich so ein Minecraft Server installieren kann wo auch sich selbst einschaltet? Ich glaube eine komplette Neuinstallation wäre auch besser für mich. Wäre sehr hilfreich eine gutes YouTube Video zu finden

0
franzhartwig  26.07.2021, 16:22
@verreisterNutzer
"Chmod: Beim setzen der Zugriffsrechte für '/home/pi/minecraft-server/' Die Operation ist nicht erlaubt"

Setze sudo davor. Du solltest Dich, bevor Du so einen Server betreibst, mal ein wenig mit Linux auseinander setzen. Ich hoffe Du gibst den Server nicht im Internet frei, das könnte ein richtig großes Loch im Heimnetz werden.

Ausserdem kennst du ein YouTube Video was mir zeigt wie ich so ein Minecraft Server installieren kann wo auch sich selbst einschaltet?

Ich kenne keine Youtube-Videos. Ich halte nichts von Youtube-Tutorials, ich kann damit nicht umgehen. Ich suche mir immer statische Informationen, klassisch niedergeschrieben und wenn sinnvoll auch bebildert.

Ich glaube eine komplette Neuinstallation wäre auch besser für mich. Wäre sehr hilfreich eine gutes YouTube Video zu finden

Die Installation des Betriebssystems dürfte nicht so schwierig sein. Da gibt es auch haufenweise Anleitungen zu. Wichtig ist, dass Du in die Boot-Partition der SD-Karte (die einzige Partition, die ein Windows-Rechner lesen kann) eine leere Datei mit dem Namen ssh legst (ohne Dateiendung!). Damit wird der SSH-Server aktiviert, sodass Du über das Netzwerk auf den Pi zugreifen kannst. Schließe den Pi mit einem Netzwerkkabel am Router an, ermittle die IP-Adresse und öffne eine SSH-Sitzung. Dazu verwendest Du am besten das Programm Putty, welches kostenlos verfügbar ist.

Die Installation des Minecraft-Servers ist quasi wie im von Dir genannten Video. Der Unterschied ist lediglich das Verzeichnis. In /opt kannst Du allerdings nur mit Root-Rechten arbeiten. Also musst Du vor jeden Befehl

sudo

setzen oder alternativ einmal zu Beginn

sudo su

Damit bist Du quasi root und kannst arbeiten.

Dann legst Du das Verzeichnis an:

(sudo) mkdir /opt/minecraft-server

Jetzt verfrachtest Du die nötigen Dateien da hinein. Die Installation von Java ist auch im Video beschrieben, wenn ich das beim Scrollen richtig gesehen habe.

Anschließend legst Du einen separaten Benutzer an, unter dem der Server laufen wird:

sudo adduser minecraft --no-create-home --disabled-login --shell /bin/false

So angelegt hat der Benutzer minecraft kein Home-Verzeichnis, kann sich nicht einloggen und hat keinen Zugriff auf die Shell.

Jetzt setzt Du die Berechtigungen für das Verzeichnis /opt/minecraft-server:

sudo chown -R minecraft.minecraft /opt/minecraft-server

Nun die Datei für systemd an. systemd ist ein sogenannter init-Manager, der den Start und das Stoppen von Prozessen verwaltet. systemd gehört zu Debian, ist also bei Dir vorhanden.

sudo nano /etc/systemd/system/minecraft-server.service
[Unit]
Description=Nukkit-Server
After=network.target

[Service]
User=minecraft
Group=minecraft
Restart=on-abort
WorkingDirectory=/opt/minecraft-server
ExecStart=/usr/bin/java -Xms3G -Xmx3G -jar /opt/minecraft-server/nukkit.jar

[Install]
WantedBy=multi-user.target

Du siehst die Schalter für den RAM, die musst Du ggf. anpassen. Xms setzt den initialen RAM beim Start des Servers, Xmx setzt den maximalen RAM.

Die Datei muss nun von systemd eingelesen werden, außerdem müssen wir sie aktivieren, damit der Server beim Neustart auch automatisch gestartet wird:

sudo systemctl daemon-reload
sudo systemctl enable minecraft-server

Nun kannst Du mit

sudo systemctl start minecraft-server
sudo systemctl stop minecraft-server

den Server starten und stoppen. Mit

sudo systemctl status minecraft-server

kannst Du den Status abrufen.

Das sollte schon alles sein.

0
verreisterNutzer  26.07.2021, 17:03
@franzhartwig

Ich habe auch Sudo davor gesetzt. Genauso so wie du es mir gesagt hast. Ausserdem habe ich keine Geduld mich mit Linux auseinander zu setzen, Windows schon aber Linux ist zu kompliziert. Das ist so kompliziert ich habe nicht mal Ahnung was diese Commande machen. Deswegen brauche ich Tutorials sonst komme ich garnicht weiter. Naja ich werde versuchen Blind irgendwas reinzutippen vielleicht funktioniert es dann hmm wer weiß. Ich habe schon so viel Stunden verbracht nur um einen kleinen Server automatisch starten zu lassen und sowas ist so einfach man braucht nur paar Klicks aber bei mir funktioniert alles genau 0% Ich schlafe dabei fast ein. Hmmmm ah ich werde einfach alles komplett löschen und es neu machen wenn es wieder nicht funktioniert dann werde ich aufgeben und meinen Raspberry Pi für immer im Keller lassen. So viel Geduld habe ich leider nicht. Aber danke dir

0
franzhartwig  26.07.2021, 17:10
@verreisterNutzer
Ausserdem habe ich keine Geduld mich mit Linux auseinander zu setzen,

Das ist schlecht, wenn man einen Server auf Linux-Basis betreiben möchte. Du wirst an jedem kleinen Problemchen scheitern.

Windows schon aber Linux ist zu kompliziert.

Nicht wirklich.

Das ist so kompliziert ich habe nicht mal Ahnung was diese Commande machen.

Deshalb habe ich es Dir erklärt.

Es ist nun einmal so, dass man sich mit einem Werkzeug auseinander setzen muss, wenn man es richtig benutzen möchte. Autofahren muss man lernen, an eine Nähmaschine setzt man sich auch nicht einfach so dran. Auch mit dem Mobiltelefon muss man sich auseinander setzen.

0
verreisterNutzer  27.07.2021, 22:04
@franzhartwig

Danke aber ich werde es erstmal lassen. Ich habe schon zu viel Zeit damit verbracht und mehr möchte ich auch nicht verschwenden.

0

Du brauchst doch die ersten 3 Zeilen Code gar nicht...

Setze Debian neu auf, ohne grafischer Oberfläche und starte den Server per Sh Script...

Wie genau das geht, muss ich erst nachlesen, aber nicht mitten in der Nacht...

Bin kein Linux Experte, aber davon gibt's hier einige >> Die Nachts aber meist schlafen...

Der Franz hat ja schon geschrieben, was du brauchst...

Du musst es nur richtig umsetzen und vor allem die GUI weglassen...

verreisterNutzer  26.07.2021, 10:07

Ich bin selbst ein Noob wenn es um Linux geht. Aber hat es noch einen Terminal Fenster auch ohne Grafische Oberfläche?

0
deruser1973  27.07.2021, 07:05
@verreisterNutzer

Ja klaro... Das hat es immer..

Und das kannst du auch von anderen PC 's mit GUI erreichen, über SSH... (mit Putty)

1

Hey,

komplett unabhängig von deiner Frage ist es wirklich in den aller aller seltensten Fällen sinnvoll irgendwelchen Dateien die Rechte 777 zuzuweisen, auch wenn es ein rein lokales System sein sollte, sollte man gar nicht erst damit anfangen.

Mfg Jannick (L1nd)