Tipps zur NextCloudPi (unter Docker auf QNAP TS-251)

Seit einigen Wochen habe ich mit NextCloudPi etliche Erfahrungen sammeln können. Grundsätzlich erhält sich dieses System wie ein gewohntes NextCloud, allerdings habe ich einige Funktionen (Cron, Einbinden von WebCron, Externe Laufwerke) bisher nicht sauber ans Laufen bekommen. Trotzdem macht es schon Laune, zu sehen, wie sogar ein schwachbrüstiges ARM-NAS (QNAP TS-231+ mit 1 GByte RAM) mit dieser Software bestens läuft.

Was ist wichtig?

  • Die Updates von NextCloud lasse ich über den Updater aus der Weboberfläche laufen, hat bislang immer gut funktioniert. Dass die „NextCloudPi-Admin-App“ nach einem solchen Update als „veraltet“ deaktiviert wird, stört nicht nicht – ich muss die ja nicht aus der NextCloud-Oberfläche heraus aufrufen, sondern kenne meinen lokalen Link (alternativ kann man die App in der App-Verwaltung auch einfach wieder aktivieren, Nebenwirkungen der Warnung habe ich bislang keine festgestellt).

  • [Update, 2019-10-03] Den obigen Absatz habe ich gestrichen – denn tatsächlich ist nach mehrfachen Updates innerhalb der NextCloud-Verwaltungsoberfläche eine Situation erreicht, in welcher das darunterliegende NextCloudPi nicht mehr richtig läuft. Daher empfehle ich, stattdessen ausschließlich die Update-Funktion der Verwaltungsoberfläche von NextCloudPi zu nutzen. [/Update]

  • Nach dem Updaten von NextCloud 15.0.7 auf 16.0.1 habe ich eine Warnmeldung bekommen, dass Indizes der Datenbank fehlen; Abhilfe sei durch Laufenlassen der „occ“-Anwendung im NextCloud-Kommandozeilenmodus möglich. Wie macht man das? Nach einiger Recherche ist das relativ einfach, und ich konnte es selbst mehrfach positiv testen:
    • In der QNAP-App „ContainerStation“ gibt es die Möglichkeit, eine Terminalsitzung des laufenden Containers zu starten (Klick auf „>_„, dem Vorgabepfad /bin/sh folgen)Bildschirmfoto 2019-06-01 um 16.31.37
    • Dann wechselt man in dieser Terminal-Sitzung per cd ins Verzeichnis „/var/www/nextcloud“ (sicherheitshalber immer per „ls -l“ prüfen, wo man sich befindet …)

    • dort gibt man folgenden Befehl ein:

      sudo -u www-data php occ db:add-missing-indices

    • … und tatsächlich läuft „occ“ los und erledigt den Rest. Nicht vergessen, das Terminal nachher wieder zu schließen. Das geht übrigens analog auch für alle anderen optionalen Parameter des occ-Kommandos.

Manchmal bleibt nach Eingriffen in die Konfiguration die NextCloud-Instanz hängen und lässt sich nicht mehr über ihre IP-Adresse oder URL ansprechen. In diesem Fall hilft es, die Anwendung im Container erst einmal per ◼︎ zu beenden und anschließend per -Symbol neu zu starten – hat bei mir bisher immer funktioniert, und war auch nur nach größeren administrativen Eingriffen erforderlich.

Updates folgen …

19 Antworten auf “Tipps zur NextCloudPi (unter Docker auf QNAP TS-251)”

  1. Servus Stefan,

    ich habe hier (https://spr-it.com/it-ideen/oc-mit-qpkg/) bereits einmal mit Dir kommuniziert und dabei wertvolle Tips zum Aufsetzen von NextCloudPi im Docker auf der QNAP-NAS erhalten. Danke nochmal.

    Die läuft auch gut, allerdings gibt es ein kleines Problem, für das ich auch Lösungsansätze habe und mich abermals über ein Coaching bzw. konkrete Umsetzungsshinweise (Wo genau ist was zu „basteln“?) freuen würde …

    Also, ich vermute, dass Dein NAS dauerhaft läuft, sonst hättest Du die Schweirigkeit selbst schon bemerkt: Die Container-Station vergibt bei jedem Neustart eine zufällige MAC-Adresse, so dass die Fritzbox trotz fest vergebener IP für die Cloud trotzdem immer weider erneut angewiesen werden muss, dass dieses Gerät selbständig Ports öffnen darf. (Sie denkt wahrscheinlich: „Ha, Dich kenn ich noch nicht, denn Deine MAC-Adresse ist mir neu!“) Ansonsten funktioniert z.B. die Synchronisierung mit der OSX-Kontakte oder Kalender-App nicht …

    Dasselbe gilt natürlich für den DynDNS-Zugriff von außen. Nervig.

    Auch andere sind genervt und auf Lösungssuche:
    https://forum.qnapclub.de/thread/46004-mac-adresse-fest-einstellen/
    https://forum1.qnap.com/viewtopic.php?p=659804&sid=998585189b0648077058470dc0133717

    Es gibt auch Lösungsvorschläge:
    https://forum.qnapclub.de/thread/42382-mac-adresse-in-container-station-fest-einstellen/
    https://stackoverflow.com/questions/18479242/how-to-set-the-mac-address-for-docker-lxc-containers
    https://stackoverflow.com/questions/42946453/how-does-the-docker-assign-mac-addresses-to-containers

    Meine Frage also, was kann/soll ich tun, wenn ich mein NAS weiterhin zwischendurch auch herunterfahren möchte? Ich verstehe von dem, was die Jungs in den obigen Links schreiben, nur einen Bruchteil …

    Was ich verstanden habe skizziere ich hier mal als durchnumerierte Optionen, so dass Du – wenn Du oder jemand anderes es will – darauf Bezug nehmen kannst:

    Option 1: Ich gebe meiner emulierten NextCloudPi per CLI die Anweisung eine von mir gewünschte MAC-Adresse zu nutzen. Doch wie mache ich das konkret und vor allem natürlich automatisiert? Kann ich den Befehl im Container-Station-GUI angeben? Woanders? Kann ich das per Skript tun, dass bei NAS-Neustart automatisch geladen und ausgeführt wird? Falls ja, wie erstelle und platziere ich so ein Skript?

    Option 2: Geht das oben Angedachte mit dem bereits erstellten Container oder muss ich den bestehenden duplizieren oder gar neu anlegen, (was sehr blöd wäre: die ganze Fummelei noch einmal! Puh!)?

    Falls duplizieren geht und sinnvoll ist: Wie geht das konkret?

    Option 2: Einer in den oben geposteten Links redet von Portainer … Kann man den bestehenden Container dahin umziehen und dort dann den Zwang zur festen MAC-Adresse bequemer veranlassen?

    Schau auch hier:
    https://qnapclub.eu/de/qpkg/466
    https://forum.qnap.com/viewtopic.php?t=133975

    Freu mich abermals um Navigationshilfe und Ratschläge für einen Dummy!!!

    Liebe Grüße,

    Christian

    Liken

  2. Servus, habe ich gemacht … freu mich schon auf Antwort!

    Nachtrag an alle, die das lesen. Es reicht nicht, in der Fritzbox nachträglich der jeweils aktuell angemeldeten Cloud (nach NAS-Neustart) die selbständige Portfreigabe zu gestatten. Auch dann kommt die Synchronisation im lokalen Netz wie von außen nicht in den Gang! Erst nach manuellem Hinzufügen der HTTPS-Portfreigaben für den Port 443 (die Cloud) und den Port 4443 (das Verwaltungspanel) klappt das …

    Liken

  3. Also der Stefan hat mich gecoached: Der Trick ist, nicht in der Container-Station zu fummeln, sondern an den Portfreigaben der FritzBox, also des Routers.

    Wenn die NextCloud im Container läuft, erscheint sie mit der dort fest vergebenen IP in der Liste der Geräte des Heimnetzwerks der FB (Menü Heimnetz/Netzwerk) . Daneben gibt es so ein Editier-Bleistift-Piktogramm. Da habe ich immer draufgeklickt, um die selbständige Portfreigabe sowie manuell noch die HTTPS-Portfreigaben 443 und 4443 zu ergänzen. Dann läuft’s zwar, aber nur solange NAS oder Container-Station nicht neu gestartet werden. Dann ist der Zauber vorbei, weil die Fritzbox die Einstellungen eben auch mit der MAC-Adresse verknüpft, die – wie wir jetzt wissen – ja scheinbar zufallsmäßig fluktuiert.

    Man kann in der FB im Menü Internet/Freigaben die obigen Einstellungen auch MAC-Adressen unabhängig vergeben. Dann kann Container-Station soviel MAC-Adressen erfinden, wie das Programm mag, die FB wendet die Portfreigaben auf jede gleichlautende IP an. Wie das geht? Man klickt auf „Gerät hinzufügen“ und dann im Pulldown auf „IP-Adresse manuell eingeben“: Dann nimmt man die Freigaben vor und speichert ab.

    In der Heimnetzwerkliste seht ihr dann die jeweils aktuelle MAC-Adresse. Im Menü Internet/Freigaben > Detailansicht erscheint die Cloud dann komischerweise kontinuierlich mit einem alten Wert, der das FB-OS aber nicht hindert die gemachten Einstellungen trotzdem zu benutzen. Sie sind dann STABIL. JUCHHUH!

    Liken

  4. Hallo, ich versuche NexcloudPi auf meinem Qnap als docker container zum Laufen zu gekommen.

    Leider bekomme ich folgenden Fehler
    Starting PHP-fpm
    Starting Apache
    Starting mariaDB
    2019-10-31 21:46:32 0 [Note] mysqld (mysqld 10.3.15-MariaDB-1) starting as process 178 …
    Starting Redis
    Starting Cron
    Starting Postfix
    Uninitialized instance, running nc-init…
    file /nc-init.sh not found
    Init done

    hier bleribt da Ganze dann stehen.

    den Container habe ich folgendermaßen erstellt:
    docker run -d -p 4443:4443 -p 20443:443 -p 20080:80 -v /share/CE_CACHEDEV1_DATA/Daten/nextcloudpi:/data –name nextcloudpi ownyourbits/nextcloud-x86:latest 192.168.1.251

    die Wenseite 192.168.1.251:4443 ist nicht erreichbar
    Auf der Webseite 192.168.1.251:20443 steht

    Initializing NextCloudPi for the first time

    Please wait..

    ich habe z.Zt. keine Idee woran das liegt.
    Vielleicht siehst du was ich nicht sehe.
    Mfg
    Milko

    Liken

      1. Hallo Stefan, habe es auch mit der GUI versucht. und nach einigen Fehlschlägen hab ich es hinbekommen.

        Der Fehler lag anscheinend am Image

        docker run -d -p 4443:4443 -p 20443:443 -p 20080:80 -v /share/CE_CACHEDEV1_DATA/Daten/nextcloudpi:/data –name nextcloudpi ownyourbits/nextcloudpi-x86:latest

        Das „pi“ fehlte.

        Nebenbei habe ich das mit dem /var nicht hinbekommen. Hier kamen ständig Fehlermeldungen, dass das Verzeichnis nicht da wäre oder es nicht erstellt bzw. kein Zugriff hätte.
        Dies war über Gui oder commandline das selbe.

        Herzlich Dank für deine Hilfe.

        Gruß Milko

        Liken

  5. Hallo Stephan,
    ich habe meine nextcloud auf der Qnap TS251 erfolgreich zum laufen gebracht jetzt habe ich eine externe usb Disk angeschlossen die unter Terminal Container gemountet und das data verzeichniss drauf kopiert. Es geht alles wunderbar datadir in der config.php angepasst läuft super. Nur habe ich probleme einen automount einzurichten wie und wo, kannst du mir behilflich sein?

    Gruß Werner

    Liken

  6. Vielen Dank für das Tutorial. Nutzt du die Kalendersynchronisation zu Apple Geräten? Ich habe ncp ebenfalls in der Container Station am laufen, aber wenn ich den CalDAV-Account in IOS einbinden möchte bekomme ich einen Fehler dass das SSL Zertifikat nicht stimmen würde.
    Das gleiche Problem wird auch hier bschrieben: https://help.nextcloud.com/t/why-doesnt-calendar-sync-to-ios-work/30446
    Funktioniert die Kalendersync. bei dir?

    Nach längerer Recherche habe ich herausgefunden das Apple, Zertifikate seit IOS 13 genauer prüft.

    Diese müssen:
    1. RSA-Schlüssel verwenden, deren Schlüsselgrößen größer oder gleich 2048 Bit ist.
    2. im Signaturalgorithmus einen Hash-Algorithmus aus der SHA-2-Familie verwenden.
    3. den DNS-Namen des Servers in der SAN-Erweiterung (Subject Alternative Name) des Zertifikats angeben.
    DNS-Namen im CommonName eines Zertifikats sind nicht mehr vertrauenswürdig.

    alle nach dem 1. Juli 2019 ausgestellten TLS-Serverzertifikate den folgenden Richtlinien entsprechen:
    4. müssen eine ExtendedKeyUsage (EKU)-Erweiterung enthalten, die die „id-kp-serverAuth OID“ enthält.
    5. müssen eine Gültigkeitsdauer von 825 Tagen oder weniger haben

    In allen Punkten stimmt das Let’s Encrypt Zertifikat mit den Anforderungen überein. Nur bei dem Dritten bin ich mir nicht sicher.
    Denn dadurch dass der Docker seine Mac-Adresse beim Neustart ändert, hab ich die Portweiterleitung nicht an der Mac-, sondern nur an der statischen IP-Adresse festgemacht. Eventuell sieht die Apple Zertifikatsprüfung darin eine Sicherheitslücke, da auch der Hostname nicht im Zertifikat eingegeben ist.

    Kennt sich hier vielleicht jemand genauer mit solchen dingen aus und kann mir dabei helfen….?
    Oder sind meine Vermutungen kompletter Blödsinn weil ich einfach keine Ahnung davon hab?

    Liken

    1. Hallo Dominik,
      danke für das ausführliche Feedback! Mit der Kontakt- und Kalendersynchronisation habe ich mich nur kurz beschäftigt und das wegen der m.E. noch nicht ausgereiften Funktionalität schnell wieder beerdigt. Die Kalender laufen bei mir (durchaus zufriedenstellend) über iCloud, und die Kontaktfunktion hätte ich gerne verwendet, um die über iCloud abgeglichenen daten etwas auszudünnen … leider ist aber die Zuordnung der Kontaktfelder recht chaotisch, so dass ich das schnell wieder habe sein lassen.
      Das mit den Zertifikaten unter iOS 13 ist sehr interessant, so tief ins Detail bin ich da bisher nicht eingestiegen, weil ich vorwiegend über VPN arbeite und der WebDAV-Zugriff diese Schwierigkeiten (noch? nicht) aufweist. Aber das kann sich ändern; noch vor allzulanger Zeit war für den internen Gebrauch ja ein plain HTTP (ohne S) durchaus ausreichend, dies wird aber bald komplett Geschichte sein.
      Mal sehen, vielleicht äußert sich noch ein anderer Mitleser zu Deinen Fragen.

      Liken

      1. Hab es mittlerweile selbst hinbekommen. :-))
        Wie ich vermutet hatte lag es an der „dynamischen Mac-Adresse“ denn wie schon beschrieben war die Portweiterleitung an der FritzBox nur an die IP-Adresse und nicht einmal an einen Hostname gebunden.
        Das war vermutlich das Problem von IOS denn somit konnte der Nextcloudpi nicht eindeutig identifiziert werden.
        (Es kann ja jeder kommen und sich mit der selben IP an der FB anmelden, sofern diese nicht vom der FB zugewiesen wird.)
        Das heißt, ich habe einen neuen Container aufgesetzt und direkt am Anfang einen Hostname und eine Mac-Adresse eingestellt. (welche dann auch behalten wird)
        Somit war die Portweiterleitung an die Mac-Adresse gebunden und das SSL-Zertifikat wurde von IOS als vertrauenswürdig angesehen.
        Korrigiert mich wenn meine Erklärung falsch ist….auf jedenfall hat es so funktioniert 🙂
        Und ihnen Herr Sprickmann Kerkerinck vielen Dank für die schnelle Antwort und den Super Blog…
        ….außerdem allen noch schöne Weihnachten!

        Liken

  7. Guten Tag spr-IT,

    vielen Dank für deinen ausführlichen Blog, dort hast du ein paar schöne Projekte vorgestellt.
    Ich habe mir blauäugig wie ich bin einen QNAP 251D bestellt und dachte mir dank Docker kann ich mir schnell eine Nextcloud Lösung installieren.
    Diese wollte ich für Backups meiner Android Endgeräte benutzen. Gesagt getan…, leider mit weniger Erfolg.

    Nachdem ich das NextcloudPi Image x86 mehrfach installiert habe, komme ich einwandfrei auf die Oberfläche die am Ende deiner HowTo gezeigt wird. Die Adminoberfläche ist also erreichbar.
    Leider war es das auch.
    Auf der Weboberfläche wird in einer Endlosschleife folgendes angezeigt. (ähnlich war es bei Milko, er hat sein Problem wohl gelöst bekommen)
    „Initializing NextCloudPi for the first time Please wait“.
    In der Console des Containers steht
    „Init done“
    Stoppe ich den Container und starte ihn neu bekomme ich folgende Fehlermeldung und die Oberfläche ist garnicht mehr erreichbar:
    Starting Postfix
    postfix/postfix-script: warning: symlink leaves directory: /etc/postfix/./makedefs.out
    postfix/postfix-script: starting the Postfix mail system
    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‚/var/run/mysqld/mysqld.sock‘ (111)
    Init done

    Leider weiß ich mir nicht mehr zu helfen. Ich hoffe du kannst Licht ins dunkle bringen.
    Mein Ziel wäre es Nextcloud mit allem drum und dran in einem Container laufen zu lassen, der in einem beliebigen Ordner auf meinem NAS die Daten ablegt.

    Liebe Grüße
    Martin

    Liken

    1. Hallo Martin, zunächst mal scheint es, als sei die Datenbankanbindung nicht OK. Ich schlage daher vor, ncPi als erstes testhalber nur mit den vorgeschlagenen Default-Einstellungen zu installieren. Alle „Extras“ erst dann einbauen, wenn das System grundsätzlich läuft. Man kann übrigens einige Container parallel laufen lassen, dann halt jeden mit einer eigenen IP-Adresse. Nur Mut; es kann nix kaputtgehen. Viel Erfolg!

      Liken

  8. Hallo Stefan,

    ich bin überrascht über die schnelle Antwort. Vielen Dank für deine Rückmeldung!
    Genau genommen versuche ich seid zwei Tagen von morgens bis Abends eine NextcloudPI in betrieb zu nehmen.

    Dann auf ein Neues:
    Nach dem installieren Schritt für Schritt nach deiner Anleitung von nextcloudpi-x86 bekomme ich nun folgende Meldung nach der Installation:
    ….
    Stopping redis-server: redis-server.
    Starting redis-server: redis-server.
    Init done

    Somit scheint alles in bester Ordnung.
    gehe ich nun auf folgende IP 192….25 bekomme ich folgende Seite zu Gesicht:

    „“Initializing NextCloudPi for the first time
    Please wait…““

    Diese Meldung verbleibt dort auch ohne weitere Änderung.
    Anschließend gehe ich auf folgende Seite „https://192…25:4443/wizard/“. Dort klicke ich mich durch und wähle external Access NO. Nachdem die Meldung kommt “ NextCloudPi is ready! „.
    Gehe ich nun auf die Weboberfläche kommt dort weiterhin, die bekannte Meldung
    „“Initializing NextCloudPi for the first time
    Please wait…““

    Ich habe alles eins zu eins nach deiner Anleitung gemacht und bin etwas verzweifelt. Ich habe mir die Inbetriebnahme leichter vorgestellt.
    Ich bin dir auf jeden Fall dankbar für deine Rückmeldung.

    Grüße

    Liken

  9. Richtig. Das habe ich ganz vergessen zu erwähnen. Diese Seite drucke ich mir als PDF und speichere Sie.
    Nun gehe ich auf Activate warte ein paar Sekunden und melde mich mit dem
    Login: ncp und dem entsprechenden Passwort an.
    Nun kommt ein Fenster:
    „Click to start the configuration wizard“, dort klicke ich auf „Ausführen“
    „Welcome“ –> „External Access“ –> NO –> „NextCloudPi is ready!“

    Dann klicke ich auf die linke Schaltfläche “ go to your Nextcloud „.
    Nun bin ich in einer Endlosschleife:
    „Initializing NextCloudPi for the first time
    Please wait…“

    Die einzige Fehlermeldung in der Konsole ist am Ende, dass der Kalender nicht gefunden werden kann.

    Ich hatte kurzzeitig mal eine Instanz laufen, ganz am Anfang.
    Diese habe ich gelöscht und wollte mit der NextcloudPi durchstarten, da dies die Lösung war, die mir am Wartungsärmsten erschien.

    Dort habe ich auch mal eine Anfrage gestellt, allerdings noch keine Rückmeldung…
    https://forum.qnapclub.de/thread/46796-howto-nextcloud-mittels-docker-container/?postID=363121#post363121
    Dort habe ich auch mal den aktuellen Docker Log rein editiert.

    Eventuell kann einer von euch bestätigen, dass es bei ihm mit dem aktuellen Docker Image funktioniert.
    Ich kann mir momentan nicht erklären woran es liegt.

    Liken

    1. Ich melde mich nochmal zurück, leider hat sich das Problem bisher nicht von selbst gelöst.
      Ich habe im Qnap Forum meinen Thread (den oben genanneten Link) editiert und neue Erkenntnisse hinzugefügt, damit ich hier nicht alles überfülle.
      Ich würde mich freuen, wenn mir jemand aus diesem Blog Hilfestellung zu meinem Problem geben kann.

      Grüße

      Liken

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.