Mit Docker einen Game Server erstellen

  • Hi, ich denke mal ich bin hier Richtig zwecks Docker.

    Ich hab mich mal an das Thema herangewagt, aber meine Gehirnzellen machen das nicht mehr mit , so hab ich das Gefühl.

    OK, hier die Info.

    Würde gern einen VRising Server installieren, hatte das auch mal gemacht, allerdings lief der dann nur mit screen.

    Jetzt dachte ich mir, warum den nicht Docker verwenden, ist im Grunde ja Leichter.

    Soweit habe ich alles auch schon verstanden, also suchte ich mir einen Thread der Verständlich war, Dachte ich zu mindestens:

    Vrising Server

    Im ersten Kapitel schreibt er da ja, ich übersetz das mit Deepl für mich:Soweit so gut, das weis ich ja, das haben Sie auch schon bei Steam geschrieben. ABER, unter Volumes schreibt er, das der steam install path: mnt/vrising/server ist, und genau diesen finde ich nicht.

    Meine Schritte also, so dachte ich das diese Richtig seien:

    gewechselt auf meinen user.

    dann in meine Spiel verzeichnis: "opt/steam" , darin befinden sich alle Spiel Server.

    Zuletzt hatte ich einen Empyrium-Server Installiert mit einem Docker Image, die Anleitung findet ihr HIER.

    Das hatte auch sehr gut geklappt, sogar der game ordner war im Spiel Ordner da mit "gamedir". So soll es sein.

    Also dann weiter im Text.

    ich wie gesagt bin mit meinem User um Ordner /opt/steam: dann geb ich ein :docker pull mephi00/v-rising-wine, ich gehe davon ausdas er das dann in diesem Ordner Installiert. Ha, hab ich falsch gedacht, das ist ja das Image, das geht natürlich, so wie ich es verstehe, in das Docker Image verzeichnis. Gut, denke ich.

    Also mach ich weiter, wird schon schiefgehen, denke ich mir.

    Jetzt muss ich das Spiel ja noch Installieren, und da geht der Schreiber des Docker Image irgendwie nicht ein, denkt der sich, alle wissen das wie das geht?, also gut, denke geh mal nach Steam und kuck dir das genauer an, da steht ja dann, das man einen ersten Testlauf des Docker-Images machen soll, also hab ich die Zeile kopiert und meinen Pfad hinzugeführt:

    Beim Empyrium-Server war das dann:docker run -it -p 30000-30003:30000-30003/udp -v $PWD/gamedir:/opt/steam/bitr/empyrion-server, darauf hat er dann den gamedir Ordner erstellt, klasse !

    Nun dachte ich mir, das kann ich doch auch auf das andere Image anwenden, also:

    docker run -it -p 27015-27015:27016-27016/udp -v $PWD/gamedir:/opt/steam trueosiris/vrising, dachte ich..........................

    Er hatte da Image entpackt, Installiert, die Ports "die ja eh schon offen sind" nochma geöffnet, und das ganze Teil dann Installiert und zu guter Schluss sogar gestartet.

    Ich hab dabei immer glances laufen, und gesehen habe ich es mit "docker ps -a, bin noch am Anfang von docker, aber lerne mit docker help doch recht schnell.

    So ist gestartet und nun fängt das deläämer auch schon an. ich muss in den Ordner : /mnt/vrising/server, doch den find ich nicht, auch nicht mit "find /...

    Ich hab keine Ahnug wo dieser sein soll, denn da feinden sich die Server & hostingsfiles drinnen.

    Zwar finde ich unter: /var/lib/docker/volumes/4ae14ae2d62bb61a229acf11499851e533aebc78ced4228d962754c9ad770599/_data/Settings,

    aber das ist ja auch nicht der Ordner den ich will, und dann gehts auch schon los, er hat das ganze teil genau da Installiert, und nicht wie ich meinte unter /opt/steam !!!!! Dann finde ich in dem anderen Ordner das hier: /var/lib/docker/volumes/93abd0614b3e526e206e8178c37cfdb58bb6b0af20999b1f2e90482ac5e764e4/_data/VRisingServer_Data

    Ja das ist der Vrising Ordner ja den Brauch ich, aber warum ist der denn da???

    Code

    Code
    dann schreibt er das in der Docker cli docker run -d --name='vrising' \
    --net='bridge' \
    -e TZ="Europe/Paris" \
    -e SERVERNAME="trueosiris-V" \
    -v '/path/on/host/server':'/mnt/vrising/server':'rw' \
    -v '/path/on/host/persistentdata':'/mnt/vrising/persistentdata':'rw' \
    -p 9876:9876/udp \
    -p 9877:9877/udp \
    'trueosiris/vrising'

    das Steht, ja wie ändere ich denn die, den da kann ich ja den Game Pfad ändern oder? genauso wie die ports.

    Code

    Code
    Und nun kommen wir zur docker-compose.yml Häää, wasss bitte?
    version: '3.3'
    services:  vrising:    container_name: vrising    image: trueosiris/vrising    network_mode: bridge    environment:      - TZ=Europe/Paris      - SERVERNAME=vrisingDocker    volumes:      - './server:/mnt/vrising/server:rw'      - './data:/mnt/vrising/persistentdata:rw'    ports:      - '9876:9876/udp'      - '9877:9877/udp'

    Weniger anzeigen


    Wo sollen den die alle stehen? Oder muss man sich die selber bauen?

    Bitte bitte bitte, kann mir einer Sagen / Beschreiben, wie ich das in meinen Pfad bekomme, und wie ich das evtl. Richtig Installiere.

    Wäre nett wenn sich darauf jemand melden würde, der Erfahrung mit Docker hat.

    lg


    PS: Bitte den anderen Eintrag Löschen!

  • Zur hilfreichsten Antwort springen
  • mnt/vrising/server ist der Pfad IM DOCKERIMAGE. Du musst davor den Pfad auf dem Host definieren, wo die Daten abgelegt werden sollen (der Pfad muss existieren). In diesem Fall musst du zwei Ordner anlegen auf deinem Server und unten die Pfade anpassen. Das dahinter sind nur die Ordner die im Dockerimage dann deine Ordner mounten, die findest auf deinem System nicht.


    docker run -d --name=vrising --net=bridge' -e TZ="Europe/Paris" -e SERVERNAME="trueosiris-V" -v /pfad/zum/ordner:/mnt/vrising/server -v /pfad/zum/persistentdata-ordner:/mnt/vrising/persistentdata -p 9876:9876/udp -p 9877:9877/udp 'trueosiris/vrising'

  • mnt/vrising/server ist der Pfad IM DOCKERIMAGE. Du musst davor den Pfad auf dem Host definieren, wo die Daten abgelegt werden sollen (der Pfad muss existieren). In diesem Fall musst du zwei Ordner anlegen auf deinem Server und unten die Pfade anpassen. Das dahinter sind nur die Ordner die im Dockerimage dann deine Ordner mounten, die findest auf deinem System nicht.


    docker run -d --name=vrising --net=bridge' -e TZ="Europe/Paris" -e SERVERNAME="trueosiris-V" -v /pfad/zum/ordner:/mnt/vrising/server -v /pfad/zum/persistentdata-ordner:/mnt/vrising/persistentdata -p 9876:9876/udp -p 9877:9877/udp 'trueosiris/vrising'

    Oh man, warum sagt er das denn nicht.

    Also muss ich im Pfad /opt/steam, den Ordner mnt/vrising/server anlegen und den ~mnt/vrising/persistentdata

    Und kann dann den Befehl zum ausführe geben mit "hoffentlich richtig":

    docker run -d --name=vrising --net=bridge' -e TZ="Europe/Paris" -e SERVERNAME="trueosiris-V" -v /opt/steam/VRising/mnt/vrising/server -v /opt/steam/VRising/mnt/vrising/persistentdata -p 9876:9876/udp -p 9877:9877/udp 'trueosiris/vrising'

    Die Zeitdaten, kann ich die Abändern? Wenn ja was muss da denn rein in Deutscher Zeit, und SERVERNAME, muss der drinnen beliben?

    Denn es gibt ja dann noch die eigentlichen Hosting und Server Daten im Ordner?

    Dennoch erst einmal Danke für die Hilfe, ich warte einfach ma ab, bei Bestätigung, lösch ich das Image dann noch mal und mach es neu.

  • Der : zwischen den Verzeichnissen muss schon sein, die Zeitzone is eh diesselbe wie Deutschland ;)


    Ansonsten würd ich dir empfehlen, dir Docker Tutorials zu Gemüte zu führen, damit du überhaupt verstehst was die Commands machen.

  • Der : zwischen den Verzeichnissen muss schon sein, die Zeitzone is eh diesselbe wie Deutschland ;)


    Ansonsten würd ich dir empfehlen, dir Docker Tutorials zu Gemüte zu führen, damit du überhaupt verstehst was die Commands machen.

    docker run -d --name=vrising --net=bridge' -e TZ="Europe/Paris" -e SERVERNAME="trueosiris-V" -v /opt/steam/VRising:/mnt/vrising/server -v /opt/steam/VRising:/mnt/vrising/persistentdata -p 9876:9876/udp -p 9877:9877/udp 'trueosiris/vrising'


    so richtig?

    und ja, versteh es ja teilweise, nur verstand ich nicht was er schrieb, aber Ja werde mir die Tuts mal reinziehen :D

    das ist die Beste Seite, da wird es einem richtig erklärt, das hat mir sehr geholfen

    Nur zu viel möchte ich auch nicht Lesen, sonst werd ich Neugierig und mach was, was ich nicht machen sollte. 😂


    Mein Server:
    RS 4000 SAS G8SE a1

    3 Mal editiert, zuletzt von Samsonetty () aus folgendem Grund: so etz müsste es passen, hab mit ++ noch ma editiert

  • Bevor wir da mehr einsteigen, der Servername sollte unbedingt geändert werden, das wird der Name sein, wie er im Steam Browser angezeigt wird. Die Timezone ist eh gleich, kannst auch "Europe/Berlin" nehmen, sollte genauso gehen.


    Deutlich übersichtlicher als docker run Befehle ist die Arbeit mit docker-compose Files. Du solltest Dir ansehen wie man Docker Compose installiert, wie man damit arbeitet (Befehle) und dann auf https://github.com/TrueOsiris/docker-vrising gehen und die dortige docker-compose.yml nehmen und an Deine Verhältnisse anpassen, also im Wesentlichen den Teil Environment und Volumes.

    RS Ostern L OST22 (~RS "3000" G9.5) (8C,24GB,960GB) | RS Cyber Quack (1C,2GB,40GB)

  • Bevor wir da mehr einsteigen, der Servername sollte unbedingt geändert werden, das wird der Name sein, wie er im Steam Browser angezeigt wird. Die Timezone ist eh gleich, kannst auch "Europe/Berlin" nehmen, sollte genauso gehen.


    Deutlich übersichtlicher als docker run Befehle ist die Arbeit mit docker-compose Files. Du solltest Dir ansehen wie man Docker Compose installiert, wie man damit arbeitet (Befehle) und dann auf https://github.com/TrueOsiris/docker-vrising gehen und die dortige docker-compose.yml nehmen und an Deine Verhältnisse anpassen, also im Wesentlichen den Teil Environment und Volumes.

    docker run -d --name=vrising --net=bridge' -e TZ="Europe/Paris" -e SERVERNAME="[DE]Die Toten Looten" -v /opt/steam/VRising:/mnt/vrising/server -v /opt/steam/VRising:/mnt/vrising/persistentdata -p 9876:9876/udp -p 9877:9877/udp 'trueosiris/vrising'

    Besser :D

    Ich Dachte eher das das der Befehl ist um das Image zu Starten und zu testen op es dann auch läuft, danach stopp ich ja das Image, und dann kann ich in der "ServerGameSettings.json & ServerHostSettings.json die anderen Sachen ja einrichten.

    Das schreibt er ja auch weiter unten im Text

    PS: das mit dem Überschreiben der json`s ist bekannt, hatte ja schon mal einen, und musste beim Update, die Jsons, wieder einfügen.


    Ah also doch, ich muss die docker-compose.yml selber schreiben, dacht ich mir, denke dafür brauch ich ein neues Zeitalter ;D

  • Ah etz hab ichs glaub ich kapiert, wenn ich das Docker file mit Pull runterlade, und dann in den Image Ordner geh, leg ich da meine docker-compose.yml, im grunde ja nix anderes als ne bash Datei.

    und mit docker-compose up wird das ganze dann gestartet.

    na das geht mir dann doch ein wenig sehr tief in die Tiefe, bin 55 und will noch was erleben im restlichen Leben :D , aber gut zu wissen.

    Also Fazit:

    mit der docker-compose.yml definiere ich die Umgebung und den Start

    und mit docker start ID/Name starte und stoppe ich /Einfachere Variante


    Und wenn ich das dann alles kann, kann ich mir meine eigenen Gameserver erstellen, und muss nicht mehr auf andere Seiten zugreifen. Alles klar. Werde mich Belesen :D

  • Etz hab ich den Salat, etz geht gar nix mehr, Sach ich doch, zu viel Lesen macht alles kaputt,

    Ich hab das Image mit Pull geladen und dann die Compose ausgeführt, etz geht gar nix mehr.

    Code
    docker run -d --name=vrising --net=bridge' -e TZ="Europe/Paris" -e SERVERNAME="[DE]Die Toten Looten" -v /opt/steam/VRising:/mnt/vrising/server -v /opt/steam/VRising:/mnt/vrising/persistentdata -p 9876:9876/udp -p 9877:9877/udp 'trueosiris/vrising'

    Da passiert gar nix, also wieder raus

  • Mein Rat:

    Lese dich doch erstmal in die ganze Thematik zu docker und docker-compose ein.

    Leg das Gameserverprojekt zunächst mal beiseite, fang klein an und baue mal ein paar docker Tutorials nach. (Das da fand ich ganz nett, es gibt aber natürlich auch andere Quellen, online und kostenlos)

    So kannst du nach und nach die Materie durchdringen und das System dahinter verstehen und wie die einzelnen Komponenten zusammenspielen.

    Im IT-Bereich, egal wo, ist es nicht wirklich zielführend ohne fundiertes Basiswissen gleich in die Vollen zu gehen.

  • Du kannst Docker Container mit beidem starten, mit docker run Befehl oder mit docker-compose. Bei einfacheren Containern reicht ggfalls ersteres, bei komplexeren (wie Gameservern) und insbesondere wenn man sehr viele Environmentvariablen und/oder Volumes sowie zusammengestellte Systeme (z.B. aus Webserver und Datenbank) hat, wird ein run Befehl extrem schnell unübersichtlich und das Docker Compose File deutlich angenehmer.


    Ein weiterer wichtiger Aspekt ist, dass zusammengestellte Anwendungen (wenn für eine Anwendung mehrere Container benötigt werden) automatisch im gleichen Docker Subnetz laufen und sich darin ohne weiteres sehen, sogar ohne das jeglicher Port nach außen gelegt wird.


    Daher würde ich vorschlagen, Du entscheidest Dich für eines, ich favorisiere aus genannten Gründen docker-compose und ja, das File kann man dann zügig editieren, es ist übersichtlich und der Befehl zum starten und stoppen bleibt immer gleich:

    Code
    # Aus Compose File Starten
    docker-compose -f meinserver-compose.yml up -d
    
    # Mit docker-compose stoppen
    docker-compose -f meinserver-compose.yml down
    
    # Neuen Build erzwingen
    docker-compose -f meinserver-compose.yml build --no-cache --pull


    Mit Composerize kannst Du einen Run Befehl auch in ein Docker-compose umwandeln. Besser wäre es jedoch im vorliegenden Fall, das vorhandene File docker-vrising/docker-compose.yml at main · TrueOsiris/docker-vrising (github.com) zu verwenden und an die eigenen Bedürfnisse anzupassen.


    Ein Container, der sehr zur Übersichtlichkeit beiträgt und bei der Verwaltung hilft wäre übrigens https://www.portainer.io/ . Das ist Teil meines Standardstacks.


    P.S: Ich kann mich da nur aRaphael anschließen: wenn man Docker mal durchdrungen hat, kann man quasi jede Umgebung einrichten, das ist sehr mächtig und wird Dir weit über Dein Gameserverprojekt weiterhelfen. Natürlich nur wenn Du das willst. Einen Container ohne tieferes Verständnis können wir vielleicht gemeinsam hinstricken, aber deutlich hilfreicher für Dich selbst wäre es, sich mehr damit zu beschäftigen und dann erst das Gameserverprojekt umzusetzen.

    RS Ostern L OST22 (~RS "3000" G9.5) (8C,24GB,960GB) | RS Cyber Quack (1C,2GB,40GB)

    Einmal editiert, zuletzt von TBT ()

    Danke 1
  • So hab erst ma alles Überprüft. Und dann das Pull Image gesucht, das auch Vorhanden ist.

    steam@.........:~$ docker search trueosiris/vrising

    NAME DESCRIPTION STARS OFFICIAL AUTOMATED

    trueosiris/vrising V Rising Dedicated Server 12


    Ich würde mich gern am WE Einlesen, aber heute brauch ich den VRising Server, habs letzte Woche schon Versprochen, nun Warten die Spieler.

    Ich möchte es auch nicht Erzwingen, aber wenn man schon so etwas Anbietet, dann sollte es man auch erklären können.


    Sowie Das nenn ich eine Erklärung, und das hat auch geklappt, der Server lief.

    Das ist für mich die Einfachere Erklärung die ich auch Verstehe, Docker ps, docker ps - a, docker start "mit ID oder Name" docker stop "mit ID oder Name"


    Ich verstehe das ich mich in die Materie Einlesen muss, wenn ich weitere Container starten möchte, Dies ist aber noch nicht der Fall.

    Zu mal ich auch (noch nicht) wüsste, in welchen Ordner ich die "docker-compose.yml" ablegen müsste.

    Derzeit ist gerade nur einer drauf, den Empyrium musste ich wieder Löschen.

    Also ist gerade nur der VRising drauf, und ARK, aber diesen habe ich 2015 mit dem Arkmanager installiert, seit dem Läuft dieser ohne Probleme.


    Wenn die Entwickler allerdings keine Linux Files Freigeben, müssen andere halt dann über Docker / Wine gehen, vorher nur mit Wine & screen, jetzt halt mit Docker & Wine.

    Mir geht es nur darum, dass ich den Vrising Server zum Starten bekomme, alles andere werde ich dann über "json" Daten ändern, so wie man es üblicher weise macht.

    Wenn ihr mir darin nicht helfen wollt/möchtet, bin ich wohl hier falsch 😥

  • Zitat

    docker run -d --name=vrising --net=bridge' -e TZ="Europe/Paris" -e SERVERNAME="[DE]Die Toten Looten" -v /opt/steam/VRising:/mnt/vrising/server -v /opt/steam/VRising:/mnt/vrising/persistentdata -p 9876:9876/udp -p 9877:9877/udp 'trueosiris/vrising'


    Kannst du mir das umschreiben, dass es auch Funktioniert? Bitte

    Ist ja nett, dass du mir das auf die Pinnwand schreibst - allerdings kann ich dir das nicht umschreiben, weil die Parameter sehr Container spezifisch sind - da müsste ich erst den Container für untersuchen.


    Ansonsten ist immer ein guter Anlaufpunkt die Seite des Containers im Docker Hub: https://hub.docker.com/r/trueosiris/vrising


    Zitat

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.

    Funktioniert das nun, oder nicht - da werde ich nicht ganz schlau 'draus.


    Zugegeben, Docker ist nicht ganz einfach zu verstehen. Da tue ich mich auch schwer mit.

    Evtl. ist podman oder portainer da eine Alternative...


    Zeitdruck und eine Anti-Haltung sind da aber keine guten Begleiter für.

    Viel Erfolg.

  • Ich denke du wärst mit einem Gameserver Hoster besser beraten, da dir der Background fehlt. No offense.

  • Btw. im Git Repo hat der Typ einige offene Issues,

    evtl. bist du hier mit einem anderen Image besser beraten: https://hub.docker.com/r/solareon/vrising-svr


    Btw. Pinnwand und PN empfinde ich als Spam.

    Warum bleibst du nicht bei dem Thema hier?

    Ja, ich hab auch einige inzwischen offen, habs für mich mal Übersetzt:

    "Es gibt zwei Methoden, um den Server auszuführen. Docker Compose ist die empfohlene Version, da Sie damit Umgebungsvariablen einfach ändern und Ihren Server neu starten/herunterfahren können, ohne sich an eine komplizierte Befehlszeile erinnern zu müssen"


    Ich würd halt erst einmal die einfachere Variante wählen, damit ich die Zusammensetzung verstehe, ich hab keine Antihaltung, da ich immer wieder Schreibe, ich werde mich in die Materie Einlesen, dennoch ist mir bei meinem Eigentlichen Wunsch nicht geholfen wenn ich hier hin und dort hin und wieder hier hin und wieder dorthin verweist werde, und selber ich inzwischen 4 Tabs mit Docker Informationen offen hab um zu erfahren wo ich die "Schwieriger Variante" der Docker Compose jaml , hinter legen muss.


    Fange immer "sofern es vorhanden ist" mit der Einfacheren Variante an & dann kann ich in die Schwieriger Variante über gehen, da ich dann den Inhalt verstehe.

    Wenn ich aber "SOFORT" auf die Vollen gehen muss, dann ja, habt ihr Recht, sollte ich einen Hoster aufsuchen, das ist aber nicht mein Ziel.

    1 Container, und nicht mehr, also keine Multi Conatainer, etz Verstanden?

    • Hilfreichste Antwort

    Ein docker run ist, wie gesagt, nicht wirklich die einfachere Variante, da da unstrukturiert einfach alles in einem Bandwurm drin steht. Wenn das docker-compose.yml korrekt geschrieben ist (und das ist viel leichter zu lesen), dann ist DAS die einfachere Variante.


    Man baut kein Auto, indem man schnell schnell vier Räder an einen Schuhkarton klebt, sondern man lernt erst mal wie es gehen muss. Übertragen auf diesen Fall heißt das zu lernen, wie die Syntax von Docker aussieht und welche Prinzipien dahinter stecken.


    Wenn wir Dir jetzt eine docker-compose hinschreiben, hast Du absolut nichts gelernt und stehst bei dem nächsten Problem wieder ohne Ahnung da. Ich versuche es trotzdem, obwohl es für Deine eigene Erkenntnis definitiv der falsche Weg ist.


    Saubere Datenhaltung in einem deutlich weniger verschachtelten Ordner (statt /opt/steam/VRising/mnt/vrising/server ) ist angebracht, daher läufts in der Folge anders:


    Mit der folgenden Anleitung hast Du die herausgelegten Daten des Containers in /docker und die yml Files in /docker_data . Beides sollte nicht im gleichen Ordner liegen, da Du sonst das yml File mit in den Container legst, darin hat es aber nichts zu suchen.


    von solareon/vrising-svr - Docker Image | Docker Hub

    >> in die vrising-compose.yml

    YAML ist sehr sehr picky was die Einrückungen betrifft, man kann hier nicht einfach irgendwas hinschreiben, die korrekten Einrückungen sind essentiell. Man kann mit YAMLlint - The YAML Validator kontrollieren, ob das YAML korrekt ist.


    Du fragtest wo das docker-compose liegen soll. Im Prinzip ist das bei meinem compose File erst mal egal, denn wie man sieht ist das unabhängig von jeglichem Bezugsordner (anders als die Verwendung der Tilde). Ich habe Dir oben angegeben, dass es in einen Ordner /docker_data liegen soll. In diesem solltest Du Dich befinden, wenn Du die folgenden Befehle ausführst (alternativ kann man die Befehle auch mit Pfad versehen, dann ist es egal wo man ist).


    RS Ostern L OST22 (~RS "3000" G9.5) (8C,24GB,960GB) | RS Cyber Quack (1C,2GB,40GB)

    Einmal editiert, zuletzt von TBT ()

    Danke 1
  • Ein docker run ist, wie gesagt, nicht wirklich die einfachere Variante, da da unstrukturiert einfach alles in einem Bandwurm drin steht. Wenn das docker-compose.yml korrekt geschrieben ist (und das ist viel leichter zu lesen), dann ist DAS die einfachere Variante.


    Saubere Datenhaltung in einem deutlich weniger verschachtelten Ordner (statt /opt/steam/VRising/mnt/vrising/server ) ist angebracht, daher läufts in der Folge anders: >>Das ist der Spiel Ordner ( /opt/steam ) da liegen alle Spiele drinnen, ich denke wir reden an einander vorbei...


    Aber gut, da man mich anscheinend nicht verstehen will, lass ich das mal, dennoch Bedanke ich mich für eure Nerven und Kommentare.