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 Eleven
    Eleven

    Hallo Marc,
    ich habe dein MC Server Tutorial für die DS218+ nachgebaut und muss sagen, dass ich total begeistert bin. Nun würde ich auch gerne noch den Overviewer installieren. Ich habe mir den Beitrag schon bestimmt 10 mal durchgelesen, leider habe ich absolut keine Ahnung wie den Overwiever ans laufen bekomme. Könntest Du das evtl. noch einem für Dummies erklären?

    1. Avatar von Marc
      Marc

      Hi,

      unter der Überschrift “Docker auf dem Synology NAS” steht ein Beispiel-Shellscript. Das führe ich über den Task-Scheduler von DSM aus.

  2. Avatar von Eleven
    Eleven

    Mit dem Beispiel habe ich auch schon etwas herumprobiert.
    Verstehe allerdings schon die erste Zeile nicht.
    Mit dem rsync Befehl synchronisierst Du den Speicherort Deines Servers mit einem von Dir erstellten?
    Welcher der beiden Pfade ist denn der Speicherort deines mcserver?
    Wofür ist der andere Pfad?
    Bei Deiner Anleitung zur Erstellung eines mcservers wurde ja ein Shared Folder mcserver erstellt. Dies habe ich auch genauso gemacht, allerdings ist der Speicherort bei mir volume1/mcserver.

    Nach dem docker run Befehl werden mit
    rm container entfernt? Wofür und welche?
    Anschließend werden 3 Verzeichnisse gemountet. hast Du diese auf der Synology erstellt (volume1/docker/world, config und export)?

    Wofür ist anschließend die Zeile mit Bezug auf das Image? Ich habe dieses bereits im Docker (Abbild). Muss ich im Vorfeld den Container erstellen? Wenn ich diesen erstelle, passe ich die oben angesprochenen Pfade dort unter Volume an?

    In der letzten Zeile wird wieder synchronisiert, und in Deinem Fall zum Web Server geladen? Wie müsste diese Zeile aussehen, um einfach nen link im export zu haben?

    Sry für die ganzen Fragen, zum Teil wahrscheinlich auch sehr dummer Fragen, aber ich bin halt noch ein Laie und finde das aber sehr interessant.
    Ich habe das Netz schon nach weiteren Anleitungen durchsucht, leider findet man nicht viel bzgl. docker. Daher hoffe ich, das Du mir vielleicht helfen könntest!!
    Vielen vielen Dank schon mal im voraus

    1. Avatar von Marc
      Marc

      Ich habe das Script mal kommentiert im Artikel. Hilft dir das?

    2. Avatar von Eleven
      Eleven

      Bedingt.
      Ich habe nach Deiner Änderung einen erneuten Versuch gewagt, leider wieder ohne wirklichen Erfolg.
      Was habe ich gemacht:
      1) Von Overviewer Image (im Reiter Abbild) ein Container erstellt. Dort habe ich nicht verändert, weder den Namen, noch im Reiter Volume (müsste ich die Volume1 Pfade zu den tmp Pfade dort eintragen?)
      2) Im Aufgabenplaner unter geplante aufgaben ein Benutzerdefiniertes Skript mit der Bezeichnung generate-mc-map.sh (als root Benutzer) hinzugefügt. In den Aufgabeneinstellungen habe ich dann das kommentierte Script wir folgt hinzugefügt und abgeändert:

      rsync -azPh –stats –delete –exclude ‚@eaDir‘ /volume1/mcserver/ /volume1/docker/world/

      Mein mcserver liegt direkt unter Volume1. Den world Ordner im zweiten Pfad habe ich in docker angelegt.

      –rm \
      -v /volume1/docker/world/:/tmp/world/:ro \
      -v /volume1/docker/config/:/tmp/config/:ro \
      -v /volume1/docker/export/:/tmp/export/:rw \
      marctv/overviewer113

      Im zweiten Teil des scriptes habe ich nichts verändert. Ich habe lediglich im
      docker Ordner (in dem auch der world Ordner angelegt wurde) den config und export Ordner angelegt.

      rsync -azPh –stats –delete –exclude ‚@eaDir‘ /volume1/docker/export/

      Den letzten Teil habe ich im Prinzip so belassen. Ich habe lediglich den ssh Teil mit Bezug zu Deinem Webserver weggelassen.

      Nach der Konfiguration habe ich die sh manuell ausgeführt. Mein mcserver auf der synology läuft natürlich.

      Folgende Fehlermeldung im Portokoll vom overviewer:
      2019-02-01 13:16:37 stdout ImportError: No module named settingsDefinition
      2019-02-01 13:16:37 stdout import settingsDefinition
      2019-02-01 13:16:37 stdout File „/tmp/overviewer/overviewer_core/configParser.py“, line 7, in
      2019-02-01 13:16:37 stdout from overviewer_core import configParser, tileset, assetmanager, dispatcher
      2019-02-01 13:16:37 stdout File „/tmp/overviewer/overviewer.py“, line 41, in
      2019-02-01 13:16:37 stdout Traceback (most recent call last):

      Ich habe einfach keine Ahnung was ich falsch mache, geschweige denn wo der Fehler liegen könnte.

      Auch ein starten über den „Schalter“ im Reiter Container führt sofort zu einer Fehlermeldung:
      Docker-Container: marctv-overviewer1131 wurde unerwartet gestoppt.#

      Kannst Du mir sagen wo der Fehler liegt?
      Vielen Dank schonmal im vorraus!!!!

  3. Avatar von Eleven
    Eleven

    Ich habe vergessen zu erwähnen, das der erste rsync Befehl auf jeden Fall funktioniert hat. Im docker/world ist eine Kopie meines Servers.

    1. Avatar von Marc
      Marc

      Wie sieht deine config.py in /volume1/docker/config/ aus? Hier ist meine für Test: config für test.

      Und hast du wirklich die aktuelle Version des Images? Also nicht selber gebaut von GitHub sondern das im Repository vom DSM?

    2. Avatar von Eleven
      Eleven

      In der config ist überhaupt keine Datei drin

    3. Avatar von Marc
      Marc

      Du musst natürlich die Config.py da reinlegen. Ich ergänze mal die Anleitung.

  4. Avatar von Eleven
    Eleven

    Und ja, heute aus dem dsm nochmal deine aktuelle Version geladen

  5. Avatar von Eleven
    Eleven

    Woher bekomme ich diese, bzw. wie erstelle ich diese denn für meinen Server?

  6. Avatar von Eleven
    Eleven

    Ich habe nun mal testweise Deine config.py kopiert und bei mir unter configs abgelegt. Leider kommt immer noch die gleiche Fehlermeldung wie ein in einem meiner oberen Posts schon beschrieben

    2019-02-01 13:16:37 stdout ImportError: No module named settingsDefinition
    2019-02-01 13:16:37 stdout import settingsDefinition
    2019-02-01 13:16:37 stdout File „/tmp/overviewer/overviewer_core/configParser.py“, line 7, in
    2019-02-01 13:16:37 stdout from overviewer_core import configParser, tileset, assetmanager, dispatcher
    2019-02-01 13:16:37 stdout File „/tmp/overviewer/overviewer.py“, line 41, in
    2019-02-01 13:16:37 stdout Traceback (most recent call last):

    Ich bin langsam echt am verzweifeln.

    1. Avatar von Marc
      Marc

      Du, kein Problem. Wir bekommen das hin. Ich habe de Beitrag um eine Tabelle erweitert. Schau mal, ob das bei dir alles wirklich der Fall ist. Und bitte noch mal das Image neu runterladen im DSM. Ich habe das nun nochmal neu gebaut und alles überprüft. Bei mir geht das genau so. Ggf. mal die config.py minimalistisch anlegen.

  7. Avatar von Eleven
    Eleven

    Hallo Marc,
    ich habe gerade vom neu aufsetzen des Minecraft Server bis zum Overviewer alles von vorne installiert. Ich habe sogar bei der Ordnerstruktur und Benennung alles identisch gemacht.
    Im config Ordner liegt auch die von die zum Test zur Verfügung gestellt config.py

    Leider ohne wirklichen Erfolg.
    Mir ist aber folgendes aufgefallen:

    Sofern ich im Aufgabenplaner die von mir angelegte generate-mc-map.sh ausführe, müsste sich ja eigentlich im Docker mein installierter Overviewer Container einschalten. Dies macht er aber nicht, stattdessen sehe ich plötzlich einen zusätzlichen Container, bei dem der Containername immer bei jedem starten der sh ein anderer ist. Nach ca. 3 sek verschwindet er wieder.

    Dann habe ich mich über putty auf die synology eingewählt und die Befehle von dort mal abgesetzt.

    Ergebnis:
    – Der erste Sync Befehl läuft Fehlerfrei durch. Die Eine Kopie des MC Servers wird in volume1/docker/world angelegt.

    – Beim docker start kommt:
    2019-02-02 20:27:21 Welcome to Minecraft Overviewer!
    *******************************************************************************
    2019-02-02 20:27:21 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 628, in
    ret = main()
    File „/tmp/overviewer/overviewer.py“, line 427, in main
    assetMrg = assetmanager.AssetManager(destdir, config.get(‚customwebassets‘, None))
    File „/tmp/overviewer/overviewer_core/assetmanager.py“, line 48, 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/python2.7/tempfile.py“, line 475, in NamedTemporaryFile
    (fd, name) = _mkstemp_inner(dir, prefix, suffix, flags)
    File „/usr/lib/python2.7/tempfile.py“, line 244, in _mkstemp_inner
    fd = _os.open(file, flags, 0600)
    OSError: [Errno 13] Permission denied: ‚/tmp/export/tmpGM9W9a‘

    Hast Du noch eine Ahnung??

    Müssen die Pfade, welche wir mit dem Aufgabenplaner mounten, ebenfalls im Container unter dem Reiter Volume mounten?

    Müssen auf der Synology noch irgendwelche Pakete installiert sein?

    1. Avatar von Marc
      Marc

      OSError: [Errno 13] Permission denied: ‚/tmp/export/tmpGM9W9a‘“

      Du hast keine Schreibrechte in dem Export-Ordner.

      Und nein, du brauchst keine Pakete. Das ist ja der Witz an Docker. Es müssen in allen drei Verzeichnissen wie beschrieben die richtigen Dateien liegen und Docker muss auf das lokale Export-Verzeichnis schreiben können. Das ist bei dir gerade nicht so. Hat Docker hier Schreibrechte?

  8. Avatar von Eleven
    Eleven

    Dann lege ich die 3 Ordner noch einmal an? Die jetzigen habe ich mit dem Admin User angelegt. Worauf muss dabei achten? Bzw. wie Stelle ich sicher das die nötigen Rechte da sind? Ich weiß das das echt ziemlich bescheuerte Fragen sind, aber für mich ist das absolutes Neuland.

    1. Avatar von Marc
      Marc

      Es könnte daran liegen, dass du Docker mit einem anderen User ausführst als mit dem User, dem die Verzeichnisse gehören. Das würde auch erklären, warum er zuerst keine config.py gefunden hat: Er hatte keine Leserechte.

      Overviewer ist wirklich eine komische Software mit komischen Fehlermeldungen. Wenn es läuft, dann hat man keine Probleme aber die Fehlermeldungen sind kryptisch. Noch schlimmer wird es, wenn man versucht Overviewer ohne Docker oder VM zu kompilieren und zu starten. Diesen Teil haben wir ja dank Docker hinter uns.

      Bleib dran. Es ist ein Rechteproblem. Oder andere Idee: Mach es über die Oberfläche. Ich hänge mal einen Screenshot an wie das aussieht im Artikel unter „Starten von Overviewer über DSM“

  9. Avatar von Marc
    Marc

    Ich schreibe den Kram mal gerade um, damit es noch einfacher wird. Moment

    1. Avatar von Marc
      Marc

      Ich habe nun das Scheduler Script nicht in den Mittelpunkt gestellt sondern die Konfiguration des Containers. Das ist einfach zu debuggen und funktioniert eher so wie meine Anleitung für den Minecraft Server auf dem NAS.

      Konfiguriere mal den Container wie beschrieben über die Oberfläche. Das Script später referenziert nun den Container. Also bekomm erstmal den Container zum Laufen. Dann hast du auch mehr Möglichkeiten nachzusehen, woran es liegt und weniger Fehlerquellen.

    2. Avatar von Marc
      Marc

      Noch ein Hinweis: Dein Fehler zu Anfang lag daran, dass tatsächlich eine Datei nicht commited wurde auf github. Das hat heute jemand rausgefunden.

      Das DockerHub Image funktioniert aber. Denn das nutze ich ja auch. Ich habe das Repository nun aktualisiert. Nun solltest du oben auch den Punkt kommen, zu dem du mit meinem Image gekommen bist. Sorry, das war sehr verwirrend.

    3. Avatar von Eleven
      Eleven

      Hallo Marc,
      das erklärt einiges. :-)
      Ne Spaß bei Seite. Also aktuell sieht es so aus, als wenn es funktioniert.
      Ich habe es so wie Du beschrieben hast über DSM konfiguriert und gestartet.

      Aktuell sieht der log wie folgt aus:
      2019-02-03 20:15:13 stdout 2019-02-03 20:15:13 Welcome to Minecraft Overviewer!
      2019-02-03 20:15:13 stdout 2019-02-03 20:15:13 Generating textures…
      2019-02-03 20:16:58 stdout 2019-02-03 20:16:58 Generating textures…
      2019-02-03 20:18:52 stdout 2019-02-03 20:18:52 Preprocessing…

      Aktuell habe ich den Container über den „Start“ Button gestartet.
      Sofern das jetzt ohne Probleme durchläuft werde ich mich im Anschluss um das ausgelagerte Script kümmern.

      Was mir aber noch aufgefallen ist. Es lag definitiv an den Rechten!!
      Ich habe bei Erstellung der 3 Ordner im „Docker“ auf User und die zugehörigen Berechtigungen geachtet.
      Nach dem ausführen der rsync:
      rsync -azPh –stats –delete –exclude ‚@eaDir‘ /volume1/mounts/mcserver/ /volume1/docker/world/

      waren im Ordner world alle Berechtigungen weg und der User war auch nicht mehr der, mit dem ich diese angelegt habe, sondern root.
      Ausgeführt habe ich die rsync über putty mit dem User der auch die Ordner angelegt hat.
      Hast Du vielleicht einen Rat?
      Sonst läuft es beim nächsten mal wieder nicht das die Rechte wieder weg sind.
      Nach dem ändern des users und erneutes setzen der Berechtigungen lief es lief auch alles wieder.

      Und nochmal vielen vielen Dank für den MEGA Support!!!!!!! Ist echt der Hammer!!!!

    4. Avatar von Marc
      Marc

      Gerne. Ich kenne das ja selbst wenn man vor dem Rechner hängt und weiß: „Es muss ja gehen!“. Da hilft nur dran bleiben und Leute fragen. Viel Spaß damit. Und sonst: Unser Server ist auch noch da ;-)

      Zu den Rechten: Beim Task Scheduler kannst du den User angeben, mit dem das ausgeführt werden soll. Hier immer deinen User im DSM nehmen.

    5. Avatar von Eleven
      Eleven

      So ist es. Das hat mir einfach keine Ruhe gelassen.
      Habe mich jetzt noch einmal mit den Berechtigungen beschäftigt. Kurze Frage dazu nochmal.
      Ich habe nun die generate-mc-map.sh angelegt und auf dem NAS abgelegt.
      Wenn ich nun im Task Scheduler einen geplante Aufgabe angelege, dann das Benutzerdefinierte Skript auswähle.
      Unter Allgemein:
      Vorgang: Beschriftung des Tasks
      Benutzer: Dort wähle ich den Benutzer aus, unter dem ich alle Einstellungen durchgeführt habe.
      Zeitplan lasse ich aktuell außer acht. Kommen wir zum Befehl.
      Dort verweise ich auf das Skript:
      /volume1/homes/eleven/generate-mc-map.sh

      Wäre die vorhergehensweise so richtig? Muss der bash Befehl davor?
      Startet docker auch mit jeden x beliebigen user? unter putty ging musste ich mit dem sudo root Befehl arbeiten, ansonsten ging nichts!

    6. Avatar von Eleven
      Eleven

      Meine config.py habe ich zum testen erstmal auf den normal mode beschränkt.

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

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

      Der overviewer ist ohne Fehlermeldungen durchgelaufen. Bei Ansicht der index.html habe ich jedoch 2 Kartenausschnitte, obwohl es ein frisch aufgesetzter Server war und ich mich nur einmal kurz eingeloggt habe ohne zu laufen.
      Woran könnte das liegen?

    7. Avatar von Marc
      Marc

      Das ist normal. Ich habe per crop Parameter die Karte eingeschränkt im Overviewer. Siehe die Beispiele in Git

  10. Avatar von Eleven
    Eleven

    Ah, ok. Ich hatte das mit dem crop gelesen. Werden die in crop eingestellten Blöcke vom Spawn aus gesehen?
    Kannst du mir noch bei dem task Scheduler unter die Arme greifen? Bei mir löst er nichts aus, wenn ich Ihn ausführe. Ich habe zwei Posts höher beschrieben was ich gemacht habe. Da muss irgendetwas falsch sein

    1. Avatar von Marc
      Marc

      Lass dir per Mail die Antwort des Scriptes im task scheduler schicken um es zu debuggen.

Schreibe einen Kommentar

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