mgutt Posted June 22, 2021 Share Posted June 22, 2021 Ich nutze den ich777/minecraftbasicserver Container. Der Operator soll nun in der Lage sein diesen Container zu stoppen und zu starten. Bisher ist mir nur eingefallen, dass man per tcpdump den Traffic auf einem Port X überwachen könnte. Ich würde also zB http://tower:1234 überwachen, der von sonst keinem Dienst in Verwendung ist und sobald der User diese URL aufruft, geht stoppt oder startet der Container, je nach dessen Status. Oder gibt es vielleicht sogar eine Möglichkeit mit einer separaten GUI? Oder noch andere Ideen? Quote Link to comment
ich777 Posted June 22, 2021 Share Posted June 22, 2021 1 hour ago, mgutt said: Oder gibt es vielleicht sogar eine Möglichkeit mit einer separaten GUI? Oder noch andere Ideen? Du willst also nur "docker start MinecraftBasicServer" und "docker stop MinecraftBasicServer" erlauben? Muss ich mir mal ansehen, evtl. gibts da einen REST commander oder so in der Richtung der evtl auf Unraid laufen würde. Bzw. glaub ich das Unraid sogar eine standard API hat aber da brauchst du das root Passwort meines wissens und dann hast Zugriff auf alle Funktionen. Quote Link to comment
mgutt Posted June 23, 2021 Author Share Posted June 23, 2021 9 hours ago, ich777 said: aber da brauchst du das root Passwort Genau das möchte ich natürlich nicht. Ich habe jetzt ein Script geschrieben, was halbwegs mein Ziel erfüllt: https://forums.unraid.net/topic/110483-startstop-container-by-non-root-user/ Und zwar ist die Nginx Proxy Manager GUI bei mir immer erreichbar über http://192.168.178.8:81/login. Das Script überwacht nun, ob die URL http://192.168.178.8:81/login?dynamite mehrfach aufgerufen wird. Dadurch wird dann der Minecraft Container starten bzw stoppen, je nachdem welchen Status er gerade hat. Wirklich nutzerfreundlich ist das natürlich nicht, da der Nutzer keinerlei Feedback bekommt, außer dass er eben selbst testen muss, ob der Container noch läuft oder nicht. 1 Quote Link to comment
Ford Prefect Posted June 23, 2021 Share Posted June 23, 2021 (edited) ...wie wäre es, eine Portainer Instanz bereitzustellen, dort den User zu konfigurieren, dass er nur auf den einen Docker zugreifen kann? Habe sowas noch nicht gemacht, aber möglich wäre es evtl.: https://documentation.portainer.io/v2.0/users/create/ und https://documentation.portainer.io/v2.0/users/promoting/ Edit: sieht noch einfacher aus ...User oder Team: ...hängt man den Portainer über Nginx/Authelia nach draussen, braucht es keinen Durchgriff auf den unraid host. Edited June 23, 2021 by Ford Prefect portainer screenshot für "Container - Access Control" 1 Quote Link to comment
hawihoney Posted June 23, 2021 Share Posted June 23, 2021 (edited) 13 hours ago, mgutt said: Der Operator soll nun in der Lage sein diesen Container zu stoppen und zu starten. Hat der User einen Unraid User Account bzw. SMB Zugriff auf einen Unraid User Share? Wenn ja, dann wäre das wirklich einfach: 1.) Zwei Skripte auf dem Desktop des Users zum Starten/Stoppen. Die machen nix anderes als 'echo "Start" > \\server\share\datei' bzw. 'echo "Stop" > \\server\share\datei'. Bei Bedarf mit 'Intelligenz', also mit Rückgabewert. 2.) Ein User Script, wie das von Dir, welches im Minutentakt die Datei prüft und bei Bedarf docker start|stop ausführt. Edited June 23, 2021 by hawihoney 1 1 Quote Link to comment
mgutt Posted June 23, 2021 Author Share Posted June 23, 2021 21 minutes ago, hawihoney said: Die machen nix anderes als 'echo "Start" > \\server\share\datei' bzw. 'echo "Stop" > \\server\share\datei'. Da hätte ich auch drauf kommen können. Danke 👍 Portainer probiere ich aber auch mal aus. Quote Link to comment
mgutt Posted June 23, 2021 Author Share Posted June 23, 2021 Ok, das Script verfolgt nun den Ansatz aus @hawihoney's Idee. Allerdings lese ich keine Datei aus oder lasse sie über eine Batch erstellen, sondern ich habe dem User einfach erklärt, dass er im Minecraft Ordner einen Ordner "stop" erstellen soll und wenn der da ist, wird der Container gestoppt und wenn er diesen löscht / umbenennt, wird er wieder gestartet: Der Vorteil daran ist, dass er die SSD gar nicht erst anfragt, da das direkt aus dem Inode Cache / RAM Cache beantwortet wird. Damit er das machen kann und auch gleich Zugriff auf die server.properties hat, habe ich den folgenden Code in der /config/samba-extra.conf hinzugefügt: [Minecraft-Server] path = /mnt/cache/appdata/Minecraft-Server comment = browseable = yes # Private writeable = no read list = write list = max,moritz valid users = max,moritz case sensitive = auto preserve case = yes short preserve case = yes Und anschließend den SMB Dienst neu gestartet: samba restart Damit hat er zwar immer noch kein wirkliches Feedback, aber da das mit dem Ordner im Gegensatz zum Öffnen einer URL 100%-tig funktioniert, braucht er das denke ich jetzt auch nicht mehr. Wenn er es unbedingt wissen will, kann er ja das Minecraft-Server-Terminal öffnen. Quote Link to comment
hawihoney Posted June 23, 2021 Share Posted June 23, 2021 6 minutes ago, mgutt said: er im Minecraft Ordner einen Ordner "stop" erstellen soll Hab genug User in meinem Leben betreut. Glaub mir, dass ist nicht wirklich benutzerfreundlich. Das vergisst Karl User. Karl User wird vermutlich nach einer Woche über die Groß-/Kleinschreibung des Ordners oder den Namen philosophieren. Leg doch einfach in den Ordner "Minecraft-Server" die beiden Dateien mit den Namen "Start.cmd" und "Stop.cmd". Die erzeugen dann eine versteckte Datei im selben Ordner oder löschen diese. Das ist mit Sicherheit einprägsamer. Quote Link to comment
mgutt Posted June 23, 2021 Author Share Posted June 23, 2021 46 minutes ago, hawihoney said: Leg doch einfach in den Ordner "Minecraft-Server" die beiden Dateien mit den Namen "Start.cmd" und "Stop.cmd". Die erzeugen dann eine versteckte Datei im selben Ordner oder löschen diese. Das ist mit Sicherheit einprägsamer. Im Ordner liegt der oben gezeigte Screenshot mit den Namen "Anleitung - Server stoppen.png" 😁 Wegen Groß- und Kleinschrift hatte ich auch schon überlegt. Da passe ich das Script noch an, dass es flexibler wird. EDIT: Mittlerweile ist mir aufgefallen, dass eine Lösung mit cmd eh nicht geht, weil ich nicht nur Window Clients habe. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.