Hallo zusammen,
ich habe mir vor kurzem ein neues NAS gekauft, da ich endlich ecoDMS und nextcloud darauf laufen lassen will (also nur lokal in meinem Netzwerk). Nun scheint es mit der Docker-Container-Geschichte doch nicht so einfach zu sein, auch wenn ich hier irgendwo gelesen habe, das dies auch kein Hexenwerk ist. Ich würde mich freuen, wenn ihr mir diesbezüglich weiterhelfen könnt, zumindest raucht mein Kopf gerade.
Vorbetrachtung:
- Scheinbar kann man einen einmal eingerichteten Container nicht einfach aktualisieren. Wenn es z.B. zu nextcloud eine neue Version gibt, muss ich den Container löschen und neu aufsetzen. Deswegen sollte man versuchen sämtliche Daten, auf die das Was-auch-immer (wie z.B. nextcloud) zugreift, vom Container selbst zu entkoppeln. Mit etwas Glück braucht man beim neuen Container nur die alten Einstellungen zu übernehmen. Richtig? Nach linuxserver.io wär es angeblich geplant, dass man auch Container updaten kann, allerdings ist der Eintrag über 4 Jahre alt
- Der Container ist nicht automatisch nach außen hin erreichbar, so würde nextcloud über der ihr zugewiesenen IP und den dann entsprechenden Ports die jeweiligen Dienste anbieten, die man sozusagen aus dem Container weiterleiten muss. Passt das so von der Umschreibung?
Vorgehen:
Ich möchte z.B. nextcloud installieren, in Container Station ausgesucht (bei Docker Hub gelandet) und (was ich jetzt auch gelernt habe) nicht gleich auf installieren klicken, sondern auf den Namen, womit ich zu https://hub.docker.com/_/nextcloud weitergeleitet werde. Von dort bekomme ich dann (hoffentlich) alle benötigten Informationen, was ich alles brauche und was ich einrichten muss.
- Befehl, hier hatte ich zuerst gedacht, dass es sich um eine zu startende ausführbare Datei handelt, aber nach bmc.com werden nur Argumente/Parameter angegeben. tutorialspoint.com sieht es ähnlich, obwohl bei der Syntax explitzit von "command" geschrieben wird und der echo-Befehl als Beispiel herhalten muss. Verwirrend, jedenfalls stand bei ecodms im Installations-Handbuch der entsprechende Befehl dankenswertweise drinne, aber wie sieht es bei nextcloud aus? In der eben verlinkten Doku steht bei der fpm-Variante $ docker run -d nextcloud:fpm, wäre somit nextcloud:fpm der gesuchte Befehl? Aber ich habe dann dennoch nicht verstanden, wie man bei z.B. MariaDB laut [Howto] MariaDB + phpMyAdmin im Docker-Container auf den Befehl (oder sollte ich eher Argument schreiben?) mysqld kommt.
- Eingangspunkt, hier kann demnach eine entsprechende ausführbare Datei angegeben werden, welche beim Containter-Start gestartet werden soll. Da habe ich in dem Artikel [Howto] MariaDB + phpMyAdmin im Docker-Container auch nicht verstanden, wie man darauf kommt. Woher erhält man die Information?
- Erweitere Einstellungen - Umgebung: Hier kommen alle Informationen hin, die für den ordentlichen Betrieb gebraucht werden, wie Zugangsdaten oder Konfigurationen. Bei z.B. https://hub.docker.com/_/nextcloud/ findet man in der Dokumentation "Auto configuration via environment variables", hier stehen demnach alle Variablen, die ich übernehmen muss, oder? Bei der MariaDB-Variante wären es somit MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD und MYSQL_HOST Oder fehlt etwas?
- Erweiterte Einstellungen - Netzwerk: Es ist schön, wenn alles im Container funktioniert, aber irgendwie möchte man von außen darauf zugreifen. Bei ecodms konnte ich alles finden, bei nextcloud habe ich nur "The apache image contains a webserver and exposes port 80." bzw. "For fpm connection this container exposes port 9000." gefunden. Das heißt, ich kann mit NAT eine Port-Weiterleitung machen und muss diesen dort genannten auf einen freien Port von meinem NAS weiterleiten. Oder fehlen da welche bzw. gibt es eine andere Stelle, wo ich weiterlesen müsste? Ich dächte, ich hätte auch mal was von 443 gelsen (?) Gibt es eigentlich irgendwo eine Übersicht, welche Ports bereits verwendet werden und welche frei sind? Gibt es da Einschränkungen oder kann ich mir, insofern nicht bereits vergeben bei den User-Ports (also zwischen 1024 und 49151) austoben? Bei MariaDB wäre nur Port 8080 entsprechend weiterzuleiten, richtig?
Es gibt neben NAT auch noch die Bridge-Variante, die hier schon öfters zum Einsatz kommt. Bei der NAT-Variante geht alles über die IP-Adresse des NAS, bei der Bridge-Variante erhält der Container eine eigene IP-Adresse und scheinbar kann man auch eine statische IP-Adresse festlegen, wobei ich insofern verwirrt bin, also dass doch eigentlich mein Router die IP-Adressen zuweist und sich das "Endgerät" nicht eine aussuchen kann, oder? - Erweiterte Einstellungen - Gerät: Ich vermute mal, dass sich das eher auf Hardware bezieht, also ob auf einen USB-Port oder so zugegriffen werden kann, richtig?
- Erweiterte Einstellungen - Freigabeordner: Normalerweise werden alle Daten im Container angelegt, was schlecht ist, wenn der Container neu augesetzt wird (davon abgesehen, wäre es aber nicht problematisch, oder?), weil z.B. eine Aktualisierung erfolgt. Somit muss man auch hier schauen, wo normalerweise Daten abgelegt werden. Bei z.B. nextcloud findet man das unter "Persistent data": /var/www/html, /var/www/html/custom_apps, /var/www/html/config, /var/www/html/data, /var/www/html/themes/<YOUR_CUSTOM_THEME> sowie entweder /var/lib/mysql oder /var/lib/postgresql/data Nicht alles muss gemountet werden, aber die Datenbank wäre schon gut. Bei dem Beispiel mit MariaDB habe ich unter dem Punkt "Where to Store Data" /var/lib/mysql gefunden.
Ich habe öfters von der Link-Problematik gelesen. Mir ist klar, dass z.B. nextcloud auf eine Datenbank zugreifen muss, die auch im Container ist. Da beim Neuaufsetzen die Daten weg wären, muss die Datenbank extern gehalten werden (wobei es spannend wird, wenn ich die Datenbank auf eine neuere Version bringen möchte... gibt es dazu auch schon threads, jetzt ist es für mich zu spät zum suchen ). Den Speicherort und welche Datenbank usw. kann ich über die Umgebungsvariablen festlegen. Aber reicht das aus, also kann sich nextcloud dann automatisch mit der Datenbank verbinden?
PS: Habe ich eine schöne Dokumentation dazu übersehen? Das QNAP-How-To bringt mir herzlich wenig und qnap-dev.github.io bezieht sich eher auf das Erstellen von Containern und weniger das Einbinden. Vermutlich ist es zu spät für mich, um vernünftig weiterzusuchen, ich würde mich auch über Links zu schönen Dokumentationen freuen, ob speziell zum Einrichten von nextcloud als docker oder allgemein zum Einpflegen eines containers.
PPS: Bezüglich nextcloud habe ich nur noch Lokaler Zugriff auf Docker Container gefunden, wo man die Compose File einfach kopieren könnte, aber ich würde es schon in groben Zügen gerne nachvollziehen, zudem habe ich mich bezüglich Compose File noch nicht so belesen, ich sehe hier vor allem den Vorteil, dass man alle Eigenschaften in einer Datei hat und beim Neu-Erstellen nicht alles manuell auswählen muss. Ansonsten dürfte da doch kein Unterschied bestehen, also zwischen dem klassischen Installieren eines Containers und der Verwendung einer compose file, oder?
Viele Grüße und eine gute Nacht!