Hallo,
ich bin mit den Suchbegriffen "synology qgis docker" hier gelandet - bei einem defacto unbeantworteten Post aus 2015 und 2020 - in Deutsch (!). Es gibt auch keine anderen Suchtreffer - geschweige denn neuere - und auch keine in Englisch. Ich habe mich jetzt mal 2 Vormittage damit beschäftigt - weil ich auch dachte, das es nicht so schwer sein kann...
Ist es aber.
Ich gebe auf. Hier meine Erkenntnisse:
1. Warum finde ich keine Leidensgenossen (=keine Forumseinträge)?
Wer QGIS auf einer NAS installieren will, landet in einer Welt, die die Nachteile aller IT-Welten in sich vereint. Die NAS ist stellenweise so verschlossen wie eine Auster (=proprietär) aber auch unfertig bzw. unbedienbar (=Linux). Wenn man GIS-Lösungen haben will, landet man offenbar bei einer eigenen Linux-Maschine (echtes open-source) oder bei ArcGIS (benutzerfreundlich). An einem "da zwischen" haben sich vermutlich schon andere die Zähne ausgebissen, scheinen ihr Scheitern aber nicht dokumentiert zu haben.
2. Warum dachte ich lange, dass da "was geht"?
Docker ist in den ersten Schritten super easy. QGIS ist Teil der offiziellen repositories. Über die Synology-Docker-App ist der QGIS-Container mit 3 Klicks installiert und auch gestartet. Eine Port-Weiterleitung kommt zwar nicht automatisch mit, war aber schnell ergänzt. Nun sollte doch eine QGIS-Server-Seite im Browser erscheinen? irgendwas mit interner NAS-IP und Port... (
http://localhost:8080/qgis-server/). Nach längerem Hin und Her stellte sich heraus, dass der Container nur einen einzigen Dienst startet: die bash. Muss er auch, weil er sonst wirklich gar nicht bedienbar wäre. Aber für eine GIS-Anwendung braucht man gestartete GIS-Dienste. Das klicky-bunty Feeling der Docker-App täuscht vor, dass alles bereit ist. Es ist in Wahrheit aber nur 3%... Allein für diese Erkenntnis habe ich zusammen mit ChatGPT einen Vormittag gebraucht.
3. Warum kann ich die GIS-Dienste nicht starten?
Das erste Problem ist die mangelhafte Möglichkeit, Fehler zu finden. Wenn man in einem Netzwerk nicht sicher ist, ob das Problem am Server, an der Schnittstelle oder am Cient liegt, dann sucht man zuerst an der Quelle. Wobei: ist die Quelle schon die (fehlerhafte) Request des Clients oder die (fehlerhafte) Response des Servers? Fangen wir beim Server an. Der ist im Docker-Container. Hier haben wir die bash (siehe oben). Fehlersuche quasi unmöglich, weil es in einem Docker-Image (per Definition schlank) keine Zusatz-Programme gibt. Protokolle und log-files gibt es - sind aber alle ohne highlighting und Sonderzeichen (keine Tilde z.B.). Man kann sogar Programme installieren (apt-get), was mich schon öfters weitergebracht hatte (ping). Aber nach dem Neustart war's natürlich wieder raus (image halt). Eigentlich wollte ich nur Dienste starten... Ja wie heißen die denn? Wie lassen die sich konfigurieren? Schnell kommt man auf das Ändern von config-Dateien. Naja, das ist weder im Container (Tools nicht vorinstalliert) noch auf der NAS (proprietär) ein Spass.
4. Okay, out-of-the-box nicht möglich, dann halt eigenes image...
Punkt drei brachte mich soweit, dass ich nun bereit war, auch das komplizierteste Toutorial durchzugehen. Ich sag mal so: das ist schon kurz vor eigener Maschine. (siehe Punkt 1). Schlimmer noch: eventuell geht es nur mit eigener Maschine (?). Das Tutorial ist Teil eines docs, welches mich meinem Ziel immer wieder am nächten brachte. Kein Wunder - es sind ja auch die offizielle QGIS-Server-docs
https://docs.qgis.org/3.34/en/docs/server_manual/containerized_deployment.html
Das Stichwort "Docker" kommt hier immer wieder vor, zur Ehrlichkeit gehört auch: nicht NAS (Docker kann man auch auf einer nicht-NAS installieren).
Beim Lesen merkte ich schnell, dass der QGIS-Container ohne Nginx-Container gar nichts bringt. Das Schlagwort heißt "depend_on" - zwei Container werden in einem Docker-Netzwerk verbunden. Das Tolle ist, dass man sich das sogar ohne Skripten im NAS-Docker zusammenklicken kann ("Übersicht" --> "Links"). Was soll ich sagen: der Nginx-Container läuft, der QGIS-Container (immer noch) nicht. Die Dienste starten nicht (ok, wissen wir bereits). Es könnte an der fehlenden osm.qgs Datei liegen. Falls sie im Container platziert werden sollte - geht das ja nicht, weil man zwischen Container und NAS nicht so einfach Dateien hin- und herschieben kann (siehe 3 - fehlende Tools, fehlende Neustartfähigkeit). Man könnte die Datei außerhalb des Containers (auf die NAS) legen und dann mounten. Wird aber nicht erklärt. Stattdessen scheint die data/osm.qgs Datei von Anfang Teil des Images zu sein. Das geht aber nur, wenn man das Image selbst erzeugt hat, womit das offizielle QGIS-Image rausfällt.
Merkt ihr meine Verzweiflung?
Für alle die es trotzdem versuchen: Schreibt bitte eure Erkenntnisse hier dazu.
ciao!