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 …

13 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

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.