Synology: Isometrische Minecraft-Karten mit Docker rendern


Overviewer Minecraft mit Docker und Synology

Hinweis: Overviewer ist tot. Aber es gibt etwas Besseres: BlueMap.

Unsere Minecraft Welt gibt es nun als isometrische Karte à la Google Maps. Der Weg dahin führt über eine Open-Source-Software namens Overviewer. Das ist ein Kommandozeilentool auf Basis von Python. Was hat das alles mit Docker und einem Synology NAS zu tun, fragst Du Dich? Hier folgt eine erklärende Anleitung, um diese Karten selber zu generieren.

Minecraft Overviewer
Minecraft Overviewer

Overviewer läuft nicht auf dem Mac

Mein Problem ist, dass Overviewer nicht so einfach auf dem Mac läuft. Schon gar nicht, wenn man Karten mit der neusten Minecraft-Version 1.13.2 verarbeiten möchte. Die ersten Versuche, Overviewer für MacOS zu kompilieren, endeten mit einem zugemüllten MacOS-System.

Emulation durch VirtualBox

Mit wenigen Befehlen lässt sich Overviewer für 1.13.2 unter Ubuntu builden und starten. Natürlich will ich kein Ubuntu nativ auf meinem Mac parallel zu MacOS installieren. Das würde viel zu lange dauern.

Also habe ich mir VirtualBox installiert, das ubuntu.iso Image runtergeladen, mich angemeldet, Overviewer kompiliert, usw.

In- und Output festlegen

Das System bestehend aus Ubuntu und Overviewer kann man als eine Funktion mit zwei Eingabe- und einem Ausgabewert verstehen:

  1. Lesen: Die Minecraft Map
  2. Lesen: Die Overviewer-Konfigurationsdatei „config.py“
  3. Schreiben: Das Exportverzeichnis für die isometrische Karte

Mit VirtualBox und der Ubuntu-Installation ist das schwierig umzusetzen. Besonders wenn man das System später auf einem Synology DS218+ (günstig kaufen) nachts automatisch laufen lassen möchte. Zudem zieht die die Emulation mit VirtualBox auch Leistung.

Docker ist die Lösung

Docker ist einfach. Zuerst installiert man die Docker-App für sein jeweiliges Betriebssystem. In einem Dockerfile definiert man, was gemacht werden soll. Am Beispiel von meinem Anwendungsfall mit Overviewer sah es dann so aus:

FROM ubuntu:18.04
RUN apt-get update
RUN apt-get update && apt-get install -y \
build-essential \
python-pil \
python-dev \
python-numpy \
git \
wget \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /tmp/overviewer
WORKDIR /tmp/overviewer
RUN git clone https://github.com/gmcnew/Minecraft-Overviewer.git .
RUN git checkout minecraft113
RUN python2 setup.py build
RUN wget https://launcher.mojang.com/mc/game/1.13.1/client/8de235e5ec3a7fce168056ea395d21cbdec18d7c/client.jar
RUN mkdir /tmp/world
RUN mkdir /tmp/export
RUN mkdir /tmp/config
RUN useradd -ms /bin/bash bob
USER bob
ENTRYPOINT ["/bin/bash", "-c","/tmp/overviewer/overviewer.py --config=/tmp/config/config.py"]
  1. FROM bedeutet: Starte mit einem frischen Ubuntu 18.04 Image.
  2. RUN apt-get: Die Pakete werden geladen und installiert.
  3. Der Befehl RUN mkdir und WORKDIR wird ein neues Verzeichnis erzeugt und das Arbeitsverzeichnis für die nächsten Befehle festgelegt.
  4. Die Zeilen mit RUN git clone und checkout holt sich den aktuellen Stand des minecraft113 branches von GitHub.
  5. RUN python setup.py build führt die Kompilierung aus.
  6. Nun holt RUN wget die aktuellen Texturen von Mojang.
  7. RUN mkdir legt die Verzeichnisse an, mit denen nachher gearbeitet wird.
  8. Damit overviewer nicht rumweint, weil es zu viele Rechte hat, wechseln wir mir mit USER von root auf bob.
  9. Der ENTRYPOINT Befehl wird erst dann ausgeführt, sobald das Image gestartet wird. Das bitte nicht mit dem Build verwechseln.

Das Image wird gebaut und mit dem Tag „overviewer113“ versehen. Auf dem Weg findet man es nachher einfacher wieder.

docker build -t overviewer113 .

Die Schönheit von Containern: Geschwindigkeit

Die einzelnen Zeilen im Dockerfile werden in Containern persistiert und gecached. Das ist eine tolle Eigenschaft die sich folgendermaßen auswirkt: Beim ersten Mal dauert das erste Bauen etwa 8 Minuten. Das ist schon ein beachtlicher Unterschied zur Lösung mit der VirtualBox.

Wenn allerdings neue Zeilen im Dockerfile hinzufüge, dann dauert der Build-Vorgang wenige Sekunden. Die bereits gebauten Zeilen werden als zustandslose Container gespeichert und können jederzeit blitzschnell abgerufen werden. Das fertige Image kann man sogar auf hub.docker.com kostenfrei hochladen.

Rohre rein und Rohre raus

Das Image kann man auf der Shell ausführen. Das sieht mit Volumes mit den Mount-Points dann so aus:

docker run \
--rm \
-v /Users/marc/Documents/mcserver/:/tmp/world/:ro \
-v /Users/marc/Documents/config/:/tmp/config/:ro \
-v /Users/marc/Documents/export/:/tmp/export/:rw \
-it marctv/minecraft-overviewer

So werden die folgenden lokalen Order auf die Ordner im Image und werden dynamisch wie ein SymLink behandelt:

  • mcserver
  • config
  • export

Was macht Docker nun also anders als eine VM?

Docker spart den Overhead der virtuellen Machine ein.
Docker spart den Overhead der virtuellen Machine ein.

Docker ist keine Virtual Machine

Mit Docker spart man sich also neben der Zeit auch die virtuelle Machine die Leistung frisst. Docker arbeitet direkt auf der Hardware und ist über den Docker Daemon davon getrennt. Hierdurch hat man die Vorteile der Performance zusammen mit der Sicherheit, einfach in Sekunden wieder alles einzureißen und neu aufzubauen.

Man spart sich den Overhead eines kompletten Betriebsystem mit Virtualisierungsebenen und gewinnt dank Containerisierung Geschwindigkeit beim Entwickeln und Bauen.

Docker auf dem Synology NAS

Overviewer schreibt auf meinem neuen Synology DS218+ NAS (kaufen) innerhalb von 12 Stunden über Docker 24 GB (!) isometrisches Kartenmaterial auf die Platte. Dank der Intel CPU kann dort im Gegensatz zu meinem alten Synology 216j NAS Docker als Paket installieren. Dort kann man mein fertiges Docker-Image unter dieser URL runterladen: https://hub.docker.com/r/marctv/minecraft-overviewer

Konfiguration von Overviewer über die Oberfläche von DSM
Meine Installation

Konfiguration von Overviewer über DSM

Wir konfigurieren den Overviewer-Container über die Docker Oberfläche in DSM. In der Docker App in DSM wählt man unter „Image“ marctv/minecraft-overviewer aus und drückt auf „Launch“ Dort vergibt man den Container-Namen „overviewer“ und setzt die CPU Priority auf „low“. Sonst schießt man mit dem Overviewer gerne mal den Minecraft-Server auf dem NAS ab.

Wichtig ist die „Advanced Configuration“. Dort gibt man unter „Volume“ drei Verzeichnisse an:

Lokale VerzeichnisseVerzeichnis im Container
Ordner mit dem Server. Darin muss ein Verzeichnis namens „world“ liegen das eine Datei namens level.dat enthält./tmp/server/
Ein für Docker schreibbares Verzeichnis für den Export/tmp/export/
(optional) Hier liegt die config.py drin. Ein Beispiel liegt in GitHub/tmp/config/

Wichtig ist, dass die Berechtigungen stimmen. Bei Problemen mit „permission error“ testweise alle Verzeichnisse für „everyone“ les- und schreibbar machen. Die Dokumentation Overviewer findet man auf overviewer.org. Hier steht unter anderem, wie man die config.py aufbaut.

Ein minimales Beispiel

Die Karte Nachts per Scheduler Task rendern

Wenn der konfigurierte Container funktioniert, dann kann man das Starten in ein Script auslagern, dass wir über den DSM Task Scheduler starten können. Hier der Inhalt meines Scriptes namens generate-mc-map.sh, dass in meinem Home-Verzeichnis /var/services/homes/marc liegt.

rsync -ahW --no-compress /volume1/mounts/mcserver/ /volume1/docker/world/
docker start overviewer -a
rsync -ahW --no-compress /volume1/docker/export/ ssh-user@marc.tv:/www/htdocs/web/mc/iso/
  1. Die erste Zeile synchronisiert das lokale Verzeichnis der MC Karte auf dem NAS mit einem Verzeichnis, in dem Docker Leserechte hat.
  2. Die zweite Zeile startet den Cocker container, den wir vorher mit den entsprechenden Verzeichnissen konfiguriert haben.
  3. Die dritte und letzte Zeile synchronisiert das Export-Verzeichnis der errechneten Minecraft Karte auf dem NAS mit einem Verzeichnis auf meinem Webserver. Mein NAS nutzt dafür die Public Key Authentication.

Der erste Durchlauf kann unter Umständen über 24 Stunden dauern. Nach dem ersten Durchlauf müssen nur noch die Unterschiede der Karte berechnet werden. Das geht dann deutlich schneller.

genPOI Beispiel

Wenn man die Marker auf der Karte generieren möchte, dann muss man die Environment Variable „overviewerParam“ auf „–genpoi“ gesetzt werden.

# sync SSD to HD
rsync -ahW --no-compress --delete --exclude '@eaDir' /volume2/SSD/mcserver/ /volume2/SSD/mcserver-static/
# run Overviewer and render map
docker start overviewer -a
docker start overviewer-genpoi -a
# sync markers to web
rsync -ahW --no-compress --stats --delete --exclude '@eaDir' /volume1/docker/export/ ssh-user@marc.tv:/www/htdocs/web/mc/iso/

Docker Container automatisch aktualisieren

Man kann Docker Container auch automatisch mit Watchtower aktualisieren. Das bietet sich vor allem bei mehreren laufenden Containern an. Sonst kann es passieren, dass sich die Client nicht mit dem Server verbinden können, weil die Versionen nicht übereinstimmen.

Der Dunning-Kruger-Effekt

Ich beanspruche nicht, dass ich Docker vollständig verstanden habe. Deswegen habe ich meinen Ex-Ex-Ex-Arbeitskollegen und Freund Ron gefragt, ob ich völlig daneben liege. Die Antwort war: „Sieht ganz ok aus..

Trotzdem kann ich sicherlich noch einige Kleinigkeiten optimieren. Zum Beispiel sollte man Dateien von git und den Mojang-Servern lieber von außen mit COPY hinzufügen.


Beitrag veröffentlicht

in

von

Kommentare

119 Antworten zu „Synology: Isometrische Minecraft-Karten mit Docker rendern“

  1. Avatar von Rudi
    Rudi

    Vielen Dank für die rasche Antwort!
    Habe jetzt den Overviewer nochmals von dir geladen und die Einstellungen angepasst.
    Nach dem manuellen Start des Overviewers wird dieser nach sehr kurzer Zeit angehalten und ich bekomme folgende Fehlermeldung:

    Start container overviewer failed: {„message“:“OCI runtime create failed: container_linux.go:345: starting container process caused \“chdir to cwd (\\\“/tmp/config\\\“) set in config.json failed: permission denied\“: unknown“}.

    Ich lese daraus, dass irgendeiner „config.json“ die Rechte fehlen.
    Das hat aber doch nichts mit der config.py, welche bei mir in „Volume1/mcserver/config“ steht zu tun, oder?
    Diese config.py, welche ich von dir kopiert habe, sieht bei mir folgendermaßen aus:

    # My sample config.py script for viewer

    worlds[„world“] = „/tmp/server/world/“
    texturepath = „/tmp/overviewer/client.jar“
    outputdir = „/tmp/export/“
    defaultzoom = 5

    renders[„day“] = {
    ‚world‘: ‚world‘,
    ‚title‘: ‚Day‘,
    ‚rendermode‘: ’normal‘,
    „dimension“: „overworld“,
    }

    Oder muss die auch noch in irgendeiner Form angepasst werden?
    Zum Schluß möchte ich einmal schreiben, wie meine Overviewer-Volumen-Seite aussieht. Also die Seite, wo man die temporären Ordner hinzufügt.
    Datei/Ordner Mount-Pfad Nur Lesen
    mcserver/config /tmp/config/ ja
    mcserver/export /tmp/export/ nein
    mcserver /tmp/server/ ja

    Ich hoffe, ich koste dich nicht zuviel von deiner Zeit, aber ich würde sehr gerne diese Karte von meinem kleinen Server zum Laufen bekommen ;)

    1. Avatar von Marc
      Marc

      Config.py ist eine Datei und kein Verzeichnis

  2. Avatar von Rudi
    Rudi

    Hallo Marc,
    nochmals vielen Dank für deine rasche (wenn auch wenig hilfreiche) Antwort auf mein Problem.
    Die config.py ist eine Datei. ok. Das ist mir soweit auch als Anfänger klar. Aber mit dem Wissen komme ich dem Fehler (den ich ja offensichtlich irgendwo mache) leider nicht auf die Spur.
    Um es vielleicht etwas klarer zu machen erkläre ich nochmal meine einzelnen Schritte:
    1.) Ich lade mir über Docker deine minecraft-overviewer als latest Version herunter.
    2.) Unter dem Docker Menüpunkt „Abbild“ wähle ich Resourcenbeschränkung niedrig und klicke auf „erweiterte Einstellungen“. Dort auf den Reiter „Volumen“ und auf „Ordner hinzufügen“.
    3.) Jetzt wähle ich auf meiner DS918 den Ordner ‚mcserver‘ aus und gebe bei „Mount Pfad“ /tmp/server/ ein. (Meine „level.dat“ befindet sich in /mcserver/world)
    4. Da meine von dir übernommene config.py in ‚mcserver/config‘ liegt, wähle ich als nächsten Ordner auf meiner DS918 den Ordner ‚mcserver/config‘ aus und gebe /tmp/config/ als Pfad an.
    5. Als letzten Schritt klicke ich nochmals „Ordner hinzufügen“, wähle als Exportordner auf der DS819 den Ordner ‚mcserver/export‘ und wähle als Mountpfad /tmp/export/ aus.
    Es wäre nett und sehr hilfreich, wenn du mir erklären könntest, an welcher Stelle ich bis dahin schon etwas falsch gemacht habe. Vielleicht weißt du ja auch ein gutes deutschsprachiges Forum, die sich in dieser Sache auskennen und einem Anfänger gerne helfen?
    Vielen Dank im Voraus für deine Bemühungen!
    LG Rudi

    1. Avatar von Marc
      Marc

      Bist du sicher, dass der Ordner in dem die config.py liegt Lese-Rechte für Docker hat? Damit meine ich nicht die Einstellungen in Docker sondern für das Volume. Es geht um die Permissons auf dem Volume für den Nutzer „docker“. Der kann denke ich nichts lesen und schreiben.

    2. Avatar von Rudi
      Rudi

      Ok, das ist dann schon mal der erste gedankliche Fehler, den ich hatte! Ich nahm an, dass die App Docker sich selber als Nutzer einträgt. Schließlich habe ich für den mcserver ja auch keine Rechte auf der DS vergeben. Aber, gut zu wissen :). Also lege ich jetzt einen Benutzer mit dem Namen Docker an und gebe ihm die entsprechenden Rechte in den verschiedenen Ordnern?

    3. Avatar von Marc
      Marc

      Der MC Server als auch Overviewer machen da keinen Unterschied. Das Verzeichnis mit der Config hat wahrscheinlich einfach zu wenig Rechte. Den Nutzer Docker gibt es schon und gilt für die komplette Docker Installation.

    4. Avatar von Rudi
      Rudi

      Also auf der Benutzer-Seite der DS sehe ich keinen Benutzer namens docker. Aber, wie du schon sagst, der mcserver funktioniert ja, also müssten doch die Rechte richtig vergeben sein.
      Mich irritiert immernoch die Fehlermeldung im Protokoll: … set in config.json failed: permission denied
      Hat das doch etwas mit dieser config.json zu tun? Aber ich wüsste gar nicht, wo die stehen soll?
      Ich stehe echt auf dem Schlauch und weiß nicht weiter. Schade…

    5. Avatar von Marc
      Marc

      Also es muss gehen. Das Image verwenden jede Menge Leute und ich ebenfalls. Lass die Config mal komplett weg wie von mir auf dockerhub beschrieben als minimales Beispiel.

    6. Avatar von Rudi
      Rudi

      Wenn ich die Zeile /tmp/config/ weg lasse und den overviewer dann nur mit anderen beiden Zeilen per klick auf den Schalter starte (oder über Aktion/start), läuft der ca. 2 Sekunden (also länger als vorher) und stoppt dann ohne Fehlermeldung. Hilft uns das?

    7. Avatar von Marc
      Marc

      Er kann wahrscheinlich nicht Schreiben ins Export Verzeichnis. Neuste Version holen des Containers und irgendwie für Schreibrechte sorgen.

      Das geht. Das Image nutzen zig Leute täglich inkl mir

  3. Avatar von Rudi
    Rudi

    Hi,
    heute morgen habe ich aus reinem Interesse mal Docker und deine Overviewer Anwendung auf meiner alten DS412 installiert. Die level.dat habe ich von der DS918 in einen Ordner „Test/world/“ kopiert. Die Mountpfade genau so angelegt, wie beschrieben.
    Der erste Start…. Docker gibt mir die gleiche Fehlermeldung, wie auf der DS 819:
    Start container overviewer failed: {„message“:“OCI runtime create failed: container_linux.go:345: starting container process caused \“chdir to cwd (\\\“/tmp/config\\\“) set in config.json failed: permission denied\“: unknown“}.
    Ich verstehe es nicht mehr…

    1. Avatar von Marc
      Marc

      Hi Rudi,
      ich habe gerade mein Image neu runtergeladen und mit einem minimalen Setup gestartet. Läuft sofort. Testweise habe ich dem Container die Permissions entzogen. Da ging es dann nicht mehr. Allerdings mit einer anderen Fehlermeldung:
      PermissionError: [Errno 13] Permission denied: ‚/tmp/export/tmpzabrnj3z‘

      Liegt im „server“ kein Ordner „world“? „Server“ ist nicht der World-Ordner! Oben habe ich noch ein Screenshot hinterlegt mit dem Beispiel.

  4. Avatar von Rudi
    Rudi

    Hallo Marc,
    ja, so wie in deinem Beispielbild sieht es bei mir auch aus. Und wenn ich so den Container starte, läuft er auch kurz an und wird danach gestoppt. Keine Fehlermeldung, nichts.
    Sobald aber die Configzeile dazu kommt, bekomme ich die Fehlermeldung.
    Meine level.dat befindet sich in „Volume1/mcserver/world/“
    Vielleicht sollte ich die config.py von der Shell aus starten? Also mit Putty auf die DS918 und dann mit sudo das script starten? Allerdings bin ich in dieser Richtung sehr unerfahren…

    1. Avatar von Marc
      Marc

      Die config.py wird nicht ausgeführt sondern eingelesen. Nochmal checken:

      1. Neustes Image marctv/minecraft-Overviewer geladen?
      2. /tmp/server/ zeigt auf dein Server Verzeichnis und nicht auf world?
      3. Permissions auf die Verzeichnisse sind gesetzt?

      Das Image funktioniert überall da wo Docker läuft. Auf meinem Mac, unter Windows und auch auf einem Synology NAS.

  5. Avatar von Rudi
    Rudi

    Tabula Rasa:
    Du hast auf verschiedene Dateien hochgeladen. unter anderem auch einen Ordner mcserver-test/world.
    Diesen habe ich geladen und den /tmp/server/ Pfad darauf zeigen lassen.
    Den Export-Pfad habe ich auf /docker/export.
    Keinen Configpfad angegeben, also nur minimal. Was soll ich sagen? Der Container rennt jetzt seit 15 Minuten durch! Ohne zu stoppen! CPU schwankt zwischen 15 und 30%. RAM bei ca. 3.5GB.
    Also liegt der Fehler doch bei meiner level.dat.
    Ich probiere es nachher mit meiner nochmal aus.
    Jetzt etwas anderes: Wohin schreibt der Overviewer denn jetzt sein Kartenmaterial? Im Docker/export finde ich nichts…

    Edit: sry, der link war falsch eingefügt

    1. Avatar von Marc
      Marc

      Er exportiert in export. Bitte nochmal prüfen ob Docker Berechtigungen auf beides hat.

  6. Avatar von Rudi
    Rudi

    Vergiss alles, was ich oben geschrieben habe. Blöder Fehler: Ich habe nicht den Overviewercontainer, sondern den Servercontainer gestartet. Und der läuft ja bekanntermaßen.
    Trotzdem, wenn ich mit den obigen Einstellungen den Overviewercontainer starte läuft er nur kurz an und stoppt dann. Laut Protokoll findet er keine level.dat 2020-02-29 15:35:12 E No level.dat file in ‚/tmp/server/world‘. Are you sure you have the right path? Aber sie ist definitiv da!

    1. Avatar von Marc
      Marc

      Bitte Screenshot deiner Einstellungen des Container. Oder Vergleich sie mit meinen oben.

    2. Avatar von Marc
      Marc

      Anderer Fehler könnte sein: das level ist nicht im “world” folder sondern es heißt anders

    3. Avatar von Rudi
      Rudi

      Wie kann ich hier einen Screenshot einfügen?

    4. Avatar von Marc
      Marc

      Einfach irgendwo hochladen und hier verlinken:

      Vorher bitte kontrollieren was sich von meinen Einstellungen unterscheidet. Da muss irgendwo der Fehler sein.

    1. Avatar von Ike
      Ike

      Ich habe ebenfalls Probleme mit den Berechtigungen. Scheinbar innerhalb des Overviewer Containers

      Docker Befehl
      sudo docker run –rm -v /volume1/docker/minecraft/data/:/tmp/server/:ro -v /volume1/docker/overviewer/export/:/tmp/export/:rw -it marctv/minecraft-overviewer

      Output Log
      2020-02-29 22:56:45 Welcome to Minecraft Overviewer!
      2020-02-29 22:56:45 E An error has occurred. This may be a bug. Please let us know!
      See

      This is the error that occurred:
      Traceback (most recent call last):
      File „/tmp/overviewer/overviewer.py“, line 650, in
      ret = main()
      File „/tmp/overviewer/overviewer.py“, line 443, in main
      assetMrg = assetmanager.AssetManager(destdir, config.get(‚customwebassets‘, None))
      File „/tmp/overviewer/overviewer_core/assetmanager.py“, line 47, in __init__
      self.fs_caps = get_fs_caps(self.outputdir)
      File „/tmp/overviewer/overviewer_core/files.py“, line 27, in get_fs_caps
      return {„chmod_works“: does_chmod_work(dir_to_test),
      File „/tmp/overviewer/overviewer_core/files.py“, line 38, in does_chmod_work
      f1 = tempfile.NamedTemporaryFile(dir=dir_to_test)
      File „/usr/lib/python3.6/tempfile.py“, line 690, in NamedTemporaryFile
      (fd, name) = _mkstemp_inner(dir, prefix, suffix, flags, output_type)
      File „/usr/lib/python3.6/tempfile.py“, line 401, in _mkstemp_inner
      fd = _os.open(file, flags, 0o600)
      PermissionError: [Errno 13] Permission denied: ‚/tmp/export/tmprnbcrzfh‘

    2. Avatar von Marc
      Marc

      Nein, das hat nichts mit den Berechtigungen innerhalb des Containers zu tun. Das passiert bei mir, wenn ich den Container auf einem Volume versuche schreiben zu lassen, der NICHT durch Docker schreibbar ist. Gibt es bei dir kein /Docker Volume? Da sind alle Berechtigungen gesetzt. Ich mache nachher mal ein Video auf einem neuen NAS.

    3. Avatar von Ike
      Ike

      Ich habs gelöst! Danke für Deine schnelle Hilfe. Es waren tatsächlich die fehlenden Berechtigungen. Da der overviewer Ordner (im Docker Volume) nicht wirklich kritisch ist, habe ich mal die Berechtigungen für Schreiben auf Everyone gesetzt. Jetzt generiert das Script Tiles. Perfekt. Bin schon auf das Ergebnis gespannt! :-)

    4. Avatar von Rudi
      Rudi

      Gibt es bei dir kein /Docker Volume? Da sind alle Berechtigungen gesetzt.

      Also bei mir gibt es ein Dockervolume direkt im Hauptverzeichnis von Volume1.
      Es gibt aber auf der DS918 keinen lokalen- oder SystemBenutzer „docker“. Ist das richtig? Wo sehe ich denn, welche Rechte Docker auf der DS hat?

    5. Avatar von Marc
      Marc

      Schieb doch bitte einfach mal alles, worauf Docker arbeiten soll in das /docker volume. Da sollten alle Berechtigungen gesetzt sein. Wenn es da geht, dann muss es etwas mit den Berechtigungen zu tun haben. Ja, ich habe einen Docker nutzer aber du kannst jedem Nutzer die Berechtigung für Docker geben.

    6. Avatar von Marc
      Marc

      Sag ich doch die ganze Zeit ;) aber schön, dass es klappt. Man kann sich während der Generierung das Ergebnis schon ansehen.

    7. Avatar von Rudi
      Rudi

      Schieb doch bitte einfach mal alles, worauf Docker arbeiten soll in das /docker volume. Da sollten alle Berechtigungen gesetzt sein. Wenn es da geht, dann muss es etwas mit den Berechtigungen zu tun haben. Ja, ich habe einen Docker nutzer aber du kannst jedem Nutzer die Berechtigung für Docker geben.

      Ich habe schon fast nicht mehr mit einem Erfolg gerechnet. Wie du gesagt hast, habe ich jetzt meinen Ordner „World“ aus dem mcserver Ordner in den docker Ordner verschoben. Overviewer gestartet… er läuft! Und er generiert neine Welt in /docker/export! Ich fass es nicht!
      Es hat also definitiv etwas mit dem Rechtesystem auf meiner DS zu tun. Wenn mir jetzt noch jemand sagt, wo ich das wie einstellen kann, mache ich drei Kreuze ;)
      An dieser Stelle nochmals vielen Dank für deine Geduld.

    8. Avatar von Marc
      Marc

      In der Anleitung steht eigentlich alles. Probier mal die Beispiel-Config zum Laufen zu bekommen und mach von da weiter.

      Oder spiel einfach bei uns auf dem Server ;)

  7. Avatar von Rudi
    Rudi

    Also ich habe jetzt fast allem alle möglichen lese- und schreibrechte gegeben. Solange die level.dat nicht im /docker/world/ Ordner steht, bekomme ich die alten Fehlermeldungen. Ich behelfe mir jetzt erstmal so, dass ich die Daten vom mcserver/world Händisch in den /Docker/World Ordner verschiebe.
    Die Berechnung meiner Welt ist nun auch nach einem Durchlauf abgeschlossen! Super :)
    Wenn ich nunn in der Welt etwas verändere, den World-Ordner wieder nach /docker/world kopiere sehe ich aber nach einem erneuten Start vom Overviewer keine Änderungen auf der Map! Wie kann das sein?

    1. Avatar von Marc
      Marc

      caching im Browser, Karte wurde nicht gespeichert, falschen Ordner kopiert. Es kann viele Gründe geben.

  8. Avatar von Rudi
    Rudi

    Moin,
    ich habe jetzt meinen MC-Server auf das Dockerverzeichnis kopiert und den Mount-Pfad bei Volume angepasst. Läuft auch wieder wunderbar. Trotzdem wird nach erneutem Starten die Karte nicht aktualisiert, obwohr große änderungen vorgenommen wurden. Der Overviewer steigt nach 1 Sekund Laufzeit mit folgender Meldung aus:

    2020-03-02 16:52:05 Loaded UUID cache from ‚/tmp/export/uuidcache.dat‘ with 0 entries.
    2020-03-02 16:52:05 Done handling POIs
    2020-03-02 16:52:05 Writing out javascript files
    2020-03-02 16:52:05 Wrote UUID cache with 0 entries.
    2020-03-02 16:52:05 Done

    Ich kann mir sehr gut vorstellen, dass ich dir langsam aber sicher auf die Nerven gehe, aber ich mache das ja nicht, um dich zu ärgern, sondern weil ich dein Projekt sehr gut finde und es gerne auf meinem kleinen Homeserver zum Laufen bekommen würde.
    Leider habe ich auf dem Gebiet wirklich keine Ahnung und bin auf Hilfe angewiesen, sry.

    1. Avatar von Marc
      Marc

      Du hast den Container im poi Modus laufen. Entferne das in den Environment variabel. Warum auch immer das bei dir einstellt ist.
      Fang einfach immer von vorne in einer kontrollierten Umgebung an. Und dann ändere Dinge.

  9. Avatar von Rudi
    Rudi

    Ja, das war es. Das hatte ich irgendwann in meiner Verzweifelung eingeschaltet und total vergessen. Ohne diese Einstellung funktioniert es wieder. Danke!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert