Einfacher User soll Docker Container starten und stoppen können


mgutt

Recommended Posts

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?

Link to comment
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.

Link to comment
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.

  • Like 1
Link to comment

...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:

image.thumb.png.123a6daa2b1c45dd11b4a109f6ae7495.png

...hängt man den Portainer über Nginx/Authelia nach draussen, braucht es keinen Durchgriff auf den unraid host.

Edited by Ford Prefect
portainer screenshot für "Container - Access Control"
  • Like 1
Link to comment
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 by hawihoney
  • Like 1
  • Thanks 1
Link to comment

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:

805210043_2021-06-2315_07_24.png.d163ee93f1a3582028868970a1bd3796.png

 

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.

 

Link to comment
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.

 

Link to comment
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.

Link to comment

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.