Nextcloud Docker Tutorial – Step by step zum Erfolg

Vor einiger Zeit gab es von mir ein Nextcloud Docker Tutorial bereits auf meinem YouTube Kanal. Dies ist soweit auch weiterhin aktuell. Allerdings bedarf es für eine gute Nextcloud Installation noch weiterer Konfiguration.

Um Nextcloud immer von überall aus erreichen zu können, empfehle ich dir die Installation auf einem virtuellen Server bei einem Hosting Provider. Ich nutze hierfür Netcup, welche ich sehr empfehlen kann.

Das Nextcloud Docker Tuturial

Mit diesem Video hast du das Basissetup von Nextcloud. Jetzt werden wir das ganz noch etwas besser einrichten und vor allen Dingen die Warnungen aus dem Administrationsbereich beseitigen.

Aktuelle Compose Datei verwenden

Meine Docker Compose Dateien ändern sich zwischendurch. Beachte also bitte, dass du die aktuellen Dateien verwendest. Dieses Tutorial ist für Traefik als reverse proxy ausgelegt. Solltest du etwas anderes nutzen wollen, musst du dir diverse Einstellungen herleiten. Gerade auch die Traefik Konfiguration ändert sich, gerade was die Sicherheitseinstellungen angeht, auch. Bitte updatete daher gegebenenfalls auch diese.

Installation durchführen

Nun kannst du die Installation, wie im Video beschrieben, durchführen. Ich gehe entsprechend davon aus, dass du jetzt eine funktionsfähige Installation hast.

Reverse Proxy Konfiguration

Nextcloud möchte, dass wir die notwendigen Einstellungen vornehmen um der Installation die reverse proxy Konfiguration mitzugeben. Als erstes benötigen wir die IP Adresse in CIDR Notation unseres Traefik Containers

docker inspect traefik

Nun rattern ein paar Zeilen config durchs Bild. Interessant ist für uns eigentlich nur der letzte Abschnitt:

                "traefik_proxy": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "0d9ab883d62e",
                        "traefik"
                    ],
                    "NetworkID": "b23ae2baa87df4b02c1cbed4679c8ea3c4ef4d2b8c8d05efb4b0bf0d94ced7f2",
                    "EndpointID": "44b9f2e00a25177f6084ecfa270df6be9cc75430ed64609ce60897fda8ca67b6",
                    "Gateway": "172.19.0.1",
                    "IPAddress": "172.19.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:13:00:04",
                    "DriverOpts": null
                }

Diese Informationen sind häufig unterschiedlich. Du solltest also meine Werte nicht einfach blind übernehmen. Aus dem obrigen Teil benötigen wir die Punkte „IPAddress“ und „IPPrefixLen“.

Damit editieren wir nun die config.php Datei unserer Nextcloud Installation und passen diese im Bereich „trused_proxies“ an. Die Angabe setzt sich also aus IP-Adresse mit anschließender Netzgröße zusammen.

'trusted_proxies' => '172.19.0.4/16'
Ein Nextcloud Docker Tutorial mit A+ Rating
Ein Nextcloud Docker Tutorial mit A+ Rating im Sicherheitscheck

Datenbank Optimierungen durchführen

Die Übersichtsseite möchte das wir noch ein paar Änderungen in der Datenbank durchführen. Dieses machen wir, indem wir uns mit einem „docker exec“ Befehl kurz in den Container verbinden und den notwendigen Befehl der Nextcloud CLI durchführen. Beide Befehle solltest du nach Möglichkeit vor weiterer Einrichtung und Benutzung von Nextcloud durchführen. Andernfalls können diese Befehle einige Zeit in Anspruch nehmen.

docker exec --user www-data nextcloud-app php occ db:add-missing-indices
docker exec --user www-data nextcloud-app php occ db:convert-filecache-bigint

Beide Befehle brauchen jeweils einen kurzen Moment. Je nach Leistung deines Servers.

Nextcloud Client Einstellungen anpassen

Damit wir den Nextcloud Client benutzen können, musste ich noch ein paar weitere Einstellungen an der config.php durchführen. Ändere die Option „overwrite.cli.uri“ ab und füge noch zwei Zeilen hinzu:

  'overwrite.cli.url' => 'https://nextcloud.example.com',
  'overwriteprotocol' => 'https',
  'overwritehost' => 'nextcloud.example.com',

Natürlich musst du die jeweiligen URLs an deine Installation anpassen.

Container sauber neu starten

Damit dieses Nextcloud Docker Tutorial auch wirklich funktioniert müssen wir anschließend unsere Container komplett neu starten. Erst einmal beenden wir alles

docker-compose stop

und anschließend löschen wir die Container, damit die Konfiguration auch wirklich übernommen wird

docker-compose rm -f

Jetzt sind wir bereit die Instanz frisch zu starten

docker-compose up -d

Unter Einstellungen -> Überblick sollten also keine weiteren Meldungen mehr auftauchen.

4 Kommentare

  1. Hallo,

    eine sehr tolle Anleitung, dankesehr.

    Leider erhalte ich die Meldung:
    The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the documentation.

    docker inspect zeigt mir 172.18.0.2/16.
    docker network inspect zeit mir neben der 2er IP auch die IP des Nextcloud containers. Dies ist auch korrekt im Traefik Dashboard als Service Ziel eingetragen.

    Trotzdem scheint Nextcloud dem Proxy nicht zu vertrauen.

    Irgend ein Tipp?

    Grüße
    Thomas

    • Christian

      Hallo Thomas,

      trage die IP, die von docker inspect ausgespuckt wird, also in deinem Fall 172.18.0.2/16 als ‚trusted_proxies‘ => ‚172.18.0.2/16‘,
      in die config.php von Nextcloud ein. Zur Sicherheit einmal neustarten, dann sollte die Fehlermeldung weg sein.

      Gruß
      Christian

  2. Hallo.

    Sehr gute Anleitung.

    Leider finde ich die PHP.ini nicht.
    Ein Upload von mehr als 2MB ist nicht möglich.

    Wie kann ich das ändern in der php.ini ?
    upload_max_filesize = 16G
    post_max_size = 16G

    Passt zwar nicht zu diesen Thema.
    Bei Guacamole kommt nach der Eingabe

    docker-compose up -d guacamole_mysql

    ERROR: The Compose file ‚./docker-compose.yaml‘ is invalid because:
    Unsupported config option for services.guacamole_guacamole: ’network‘

    Eine Idee was hier sein könnte ?

    Besten Dank schon mal im voraus.

    Grüße Gerald

  3. Thomas Abts

    Vielen, vielen Dank für das Video und Tutorial!

    Ich habe in den letztenMonaten immer wieder mehrere Ansätze und Tutorials zum Thema Nextcloud per Docker durchgearbeitet und hatte durchgehend Probleme.
    Entweder lief es gar nicht oder der Reverse Proxy zickte mit Timeouts oder die Nextcloud war ar***langsam und produzierte Fehler im GUI. Irgendwas war immer. Meistens lag es an den nginx-Einstellungen. Aber selbst mit viel Zeitaufwand für Anpassungen, war das Ergebnis auch nach Wochen nie 100% fehlerfrei.

    Mit deinen Docker-Skripten dagegen lief es ziemlich perfekt! Es war zwar hier und da etwas Transferleistung nötig, weil die Videos nicht mehr den Stand der aktuellen Skripte widerspiegeln, insbesondere bei Traefik, aber mit etwas Tüfteln ging alles.

    Ein paar Lerneffekte hatte ich auch noch:
    – Portainer in Openmediavault 5 unterstützt nur docker-compose bis Version 2. Das macht scheinbar Probleme mit den Netzwerken. Als ich dann docker-compose per Shell genommen habe, passte alles.
    – Nach dem ersten UP lief Nextcloud. Aber als ich es dann anschließend wieder per Portainer als Daemon startete, hatte Nextcloud keinen Zugriff mehr auf die MariaDB . Nach einigem Suchen stellte ich feste, dass die Rechte auf das Datenbank-Verzeichnis, dort wo der Docker nach /var/lib/mysql schaut, nicht korrekt angelegt wurden.
    Ein sudo chown -R www-data:root /meinDBInstallationsVerzeichnis machte die Datenbank dann wieder zugreifbar.
    – Was man erwähnen sollte, ist dass der erste Web-Aufruf mit dem Anlegen des Nextcloud-Admins anschließend auch mal gut 10 min dauern kann bis das System wieder reagiert. Das wusste ich aber schon von vorherigen Versuchen, weil da nginx gerne nach ner Minute in den Timeout gelaufen ist. Mit Traefik und Apache aus deiner Variante war das zum Glück von vornherein kein Problem.
    – Im Log tauchten zu Beginn Fehler auf, weil Redis ohne Passwort genutzt wird. Das scheint irgendwann in den neueren Nextcloud-Versionen nötig geworden zu sein. Konnte man aber leicht fixen.
    – Die Anpassungen bzgl. overwrite-cli-url musste ich dagegen nicht machen, da es auch so schon lief. Im Gegenteil: Als ich versuchte die Änderungen zu machen, konnte ich nicht mehr zugreifen.

    Was ich aktuell noch für Probleme habe:
    – Im Admin-GUI kriege ich die Beschwerde, dass der Cron-Job nicht läuft, was er aber eigentlich macht. Da ich die Nextcloud nur mit vier Personen nutze, kann man denke ich auch einfach AJAX für die Hintergrundaufgaben nutzen.
    – Der Securitycheck hat mir ein A-Rating verpasst. Zum A+ fehlt das Fixen von __Host prefix cookie injection vulnerability. Hier suche ich aktuell noch nach einer Lösung.

    Nichtsdestotrotz: Ein riesiger Daumen nach oben für Dich! Ich hatte es fast schon aufgegeben Nextcloud überhaupt zum Fliegen zu kriegen.

Schreibe einen Kommentar

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