Dieses Tutorial ist VALID.

Bitte lies Dir den Disclaimer durch, bevor Du eine Anleitung umsetzt...

Haftungsausschluss / Disclaimer

Nextcloud Docker Container

Unser selbst gebautes Docker Image aus dem letzten Kapitel binden wir jetzt als Container über Traefik ans Internet an. Damit hauchen wir unserem eigenen Cloud-Server Leben ein. Und los geht’s!

Update 12.02.’20

Upgrade auf php 7.4 und Anpassung an Traefik v2.1

Update 22.03.’20

Fehlerbehebung in der docker-compose.yml:
Keine zwei nebeneinander definierten Middlewares erlaubt…

Voraussetzungen

Für dieses Tutorial müssen die folgenden Voraussetzungen erfüllt sein:

Nextcloud Container Setup vorbereiten

Da wir die Nextcloud von außen über das Internet als Web-Dienst aufrufen, brauchen wir einen neuen DNS-Eintrag. Außerdem legen wir ein Stammverzeichnis für Nextcloud und seine Konfigurationsdatei unterhalb von „/var/www“ an. Zusätzlich noch ein Datenverzeichnis direkt in „/var“. Dann erstellen wir noch eine Datenbank zusammen mit einem Datenbankbenutzer. In der Datenbank hinterlegt Nextcloud die Einstellungen, Benutzerdaten, Dateiinformationen und unsere Freigaben.

DNS-Eintrag für die Subdomain „nextcloud“ anlegen

Wie gewohnt legen wir jetzt einen DNS-Eintrag für unseren Nextcloud Container an. Dazu loggen wir uns auf der Oberfläche unseres Domain-Anbieters ein. In meinem Fall das „Customer Control Center“ von Netcup. Hier wechseln wir auf unsere Domain, die wir editieren möchten, und dort in den Reiter „DNS“. Wir erstellen eine Sub-Domain „nextcloud“. In meinem Fall heißt die volle Domain dann „nextcloud.xp-server.de“. Typ „A“ für „Domain-Eintrag“. Dann die IP des Servers eingeben und die DNS-Einstellung anschließend abspeichern.

Nach dem Anlegen des DNS-Eintrags dauert es ein Weilchen, bis sich dieser durch die Schichten des DNS-Systems im Internet ausbreitet. Aber nach 15 bis 45 Minuten sollte der Eintrag „sichtbar“ sein. Überprüfen kann man das mit einem „Ping“ auf den Domainnamen.

Datenbank und Datenbankbenutzer hinzufügen

Wie erwähnt braucht so ziemlich jede große Web-Anwendung dieser Tage eine Datenbank im Rücken, in der aller möglicher organisatorischer Krempel abgelegt wird. Nextcloud macht hier keine Ausnahme. Darum müssen wir jetzt im MariaDB-Server eine neue Datenbank anlegen und einen Benutzer dafür hinzufügen.

An dieser Stelle möchte ich noch einmal erwähnen, dass wir uns angewöhnen sollten, wie generell bei Passwörtern auch, für jeden Dienst eine eigene Datenbank mit eigenem Benutzer und eigenem Passwort zu erstellen. Gerade bei vielen WordPress Instanzen ist es verlockend, nur einen Benutzer anzulegen, dem dann alle WordPress-Datenbanken gehören. Aber damit steigt das Risiko, dass irgendwas schief läuft und wir eine Menge Probleme bekommen. Darum lieber auf „Nummer Sicher“ gehen und für jeden Dienst ein individuelles Set von Benutzern, Datenbanken und Passwörtern anlegen!

Im MariaDB Container Tutorial haben wir ja schon mal einen Benutzer für die Datensicherung angelegt. Hier ist das im Grunde das gleiche Prozedere, nur kommt noch eine Datenbank mit hinzu…

Für dieses Tutorial wähle ich folgende Werte:
Datenbankname: nxcloud
Datenbankbenutzer: nxcloud
Datenbank Passwort: unglaublichsicherespasswort

mysql -h 127.0.0.1 -u root -p
### root Passwort von MariaDB eingeben...

CREATE DATABASE nxcloud;
CREATE USER 'nxcloud'@'%' IDENTIFIED BY 'unglaublichsicherespasswort';
GRANT all ON nxcloud.* TO 'nxcloud'@'%';
FLUSH PRIVILEGES;
SHOW DATABASES;
exit;

Über Zeile 1 loggen wir uns vom Host aus in den Datenbankserver ein. Hier das root PW von MariaDB eingeben.

Zeilen 4-7 sind die SQL-Befehle zum Anlegen der Datenbank (4), dem Hinzufügen des Benutzers und Übergabe seines Passworts (5), dem Zuweisen aller Rechte der Datenbank „nxcloud“ an den Benutzer „nxcloud“ (6), gefolgt vom Neu Einlesen der Benutzerrechte des Datenbankservers (7).

Mit Zeile 8 lassen wir uns alle Datenbanken anzeigen. In der Ausgabe taucht jetzt unsere ganz frisch erstellte „nxcloud“ auf. Das ist nur eine schnelle Kontrolle :)

Durch den „exit“ Befehl verlassen wir den Datenbankserver und kehren zu unserem Host System zurück.

Anzeige *

18 Kommentare zu „Nextcloud Docker Container“

  1. Hallo Peter,
    vielen Dank für dein Tutorial – ich vermute die interne Statistik wird dir schon verraten das es gut genutzt wird! Daumen hoch.
    Ich habe leider weiterhin das Problem, dass mein LE-Zertifikat nicht angezogen wird und das Standard-Trafik-Zertifikat genutzt wird. Weißt du aus dem Stehgreif wo potenzielle Fehler liegen / wo ich mal näher reingucken sollte?

    Viele Grüße, Nao

    1. Peter Fiedler

      Hallo Nao,
      freut mich, wenn Dir die Tutorials gefallen.

      Leider müsste ich raten, wo da genau der Fehler steckt.
      Hast Du sonst noch was am Laufen wie WordPress oder Matomo? Werden da die Zertifikate richtig geholt? Falls ja, ist der Fehler in der Nextcloud Config.
      Ansonsten tippe ich auf die Traefik-Config, weil der für Let’s Encrypt zuständig ist.

      Hast Du die anderen Tutorials auch exakt nachgebildet? Läuft bei Dir das Basis-System wie beschrieben, also Debian 10?

      Beste Grüße
      Peter.

  2. Hallo,
    der André mal wieder.
    Sag mal, die Maileinstellungen, welche im Dockerfile angelegt, bzw. geändert wurden, wo kann ich diese „nach konfigurieren“?
    Ich bin mir mit den Einstellungen nicht so sicher, ob die so korrekt sind, weil auch keine Mails raus gehen.
    UND: Danke noch mal für die geilen Anleitungen!!
    BTW: mailcow vs. traefik Integration? Idee?
    Grüße
    André

    1. Peter Fiedler

      Hallo André,

      in der Anleitung zum Image beim Dockerfile Zeilen 178-183 kannst Du den Mailserver einstellen. Glaube aber eher, dass die Einstellung in der Nextcloud-Verwaltung falsch ist:

      Nextcloud E-Mail Server einstellungen

      Das steht bei der Anleitung zum Nextcloud Container auf Seite 3.

      Beim Problem Mailcow ./. Traefik hat Juno diesen Link ausgegraben:
      https://goneuland.de/mailcow-e-mail-komplettsytem-mit-antivirus-spam-filer-webmail-webfrontend-installieren-mittels-docker-und-traefik/

      Entscheidend sind die Punkte 4, 5 und 6, weil die sich von der „normalen“ Installation unterscheiden. Pass die Werte auf Deine Installation an und es „müsste“ laufen.
      Ich mach das nicht, weil ich a) nicht in die Mechanik der Mailcow eingreifen möchte und b) ein anderes Backup-Konzept für meine Mailserver habe, weswegen die Maschinen in jedem Fall getrennt laufen.

      Frohe Pfingsten!
      Peter.

  3. Hallo Peter

    Nochmals Besten Dank für deine hervorragenden Anleitungen. Hast Du Kenntnisse über OCR Scan in der Nextcloud. Diese Funktion würde mir noch fehlen. Habe zwar einiges darüber gelesen. Finde halt zur Zeit den Wald vor lauter Bäumen nicht!

    lg Siegfried

    1. Peter Fiedler

      Hallo Siegfried,
      hmm… Ich wüsste nicht, dass die Nextcloud OCR macht. Also nicht „out of the Box“.
      Wenn Du mehr Info hast, womit das laufen soll, poste doch bitte einen Link.

      Liebe Grüße
      Peter.

  4. Deine Anleitungen gefallen mir sehr gut!
    Aufgrund der aktuellen Situation durch viele Web-Meetings würde ich gerne jitsi-meet auf deiner basis installieren.
    Hast du dich damit schon beschäftigt und würdest support anbieten.

    Gruß
    Sven

    1. Peter Fiedler

      Hallo Sven,
      nein, mit dieser Anwendung hab ich mich noch nicht beschäftigt.
      Ein anderer Nutzer der Tutorials hat mir mal geschrieben, dass er ein Jitsi Image bauen möchte. Leider ist das wohl gescheitert…

      https://github.com/jitsi/docker-jitsi-meet
      Da wäre das offizielle Repository.
      Aber durch Traefik wird sich das nicht ohne Anpassungen schleusen lassen. Alleine schon wegen der zusätzlichen Ports.

      Viel Glück!
      Peter.

  5. Hallo klasse Anleitung. Nur die Hintergrund-Aufgaben lassen sich nicht über Cron automatiseren.
    Hast du eine Idee an was das liegen könnte?

    1. Peter Fiedler

      Hi Juli,
      danke für die Blumen!
      Zu Deinem Problem bräuchte ich aber schon ein bisschen mehr Info…

      Kommt eine Fehlermeldung?
      Falls nicht, brauche ich die Ausgabe von „docker ps -a“ und „crontab -l“ an fiedler@cpf.de

      Frohe Ostern!
      Peter.

  6. Vielen Dank für die wirklich guten Anleitungen! Dank euch habe ich’s geschafft den alten Traefik durch die v2 zu ersetzen. Es war der benötigte Anstoß um alles zu verstehen ;)

    Ein Hinweis, ich habe nach langem suchen einen Fehler in eurer Nextcloud Docker-Compose gefunden.

    Die Zeilen:
    – „traefik.http.routers.nextcloud-sec.middlewares=default-headers@file“
    – „traefik.http.routers.nextcloud-sec.middlewares=calcarddav“
    sorgen dafür, dass Traefik nur eins der beiden anwedet, dies hat bei mir dazu geführt, dass die headers nicht angewendet wurden. Aufgefallen ist es beim Selbsttest von Nextcloud (meckert über STS). Mit dem Label in einer einzigen Zeile
    – „traefik.http.routers.nextcloud-sec.middlewares=calcarddav,default-headers@file“
    Funktioniert es dann. Alternativ könntet ihr auch eine Middleware Chain bilden
    Grüße und weiter so! :)

    1. Peter Fiedler

      Hallo Eike,
      ganz vielen Dank dafür!
      Da ich diese Funktion selber nicht nutze ist mir das bis jetzt nicht aufgefallen…
      Den STS-Fehler hab ich gekonnt ignoriert, da der Wert ja in der Config gesetzt war. Silly me!
      Bleib gesund :)
      Peter.

    1. Peter Fiedler

      Ja, das ist eine blöde Geschichte… Da brauchst einen richtig schnellen Server.
      Ich verwende clientseitige Verschlüsselung mit Cryptomator. Das funktioniert super, wenn Du nur Computer an die Cloud stöpselst. Auf Handys soll das laufen, aber da ist die Geschwindigkeit dann auch grottig.

  7. Andreas Baumruck

    Hallo Peter!
    Die meisten meiner verbliebenen Fragen konnte ich, dank Deiner Anleitung und ein wenig gegoogle, selbst klären.
    Übrig geblieben sind noch diese Punkte:
    NextCloud/WordPress
    -> kann ich Updates einfach über die integrierten Updater einspielen, oder gibt es da etwas zu beachten (ausser vorab einen
    snapshot zu machen?
    Backups
    -> mich würde noch interessieren, wie backup/restore genau ablaufen. Das habe ich nicht wirklich durchschaut

    1. Peter Fiedler

      Bei Nextcloud sind die Updates leider etwas besonderes. Über den integrierten Updater kannst die leider nicht einspielen. Das Ganze läuft wie folgt:
      1.) Ins Nextloud Dockerfile und dort die Version durch die neueste ersetzen.
      2.) Image neu bauen lassen und wieder mit „latest“ taggen.
      3.) Den Container mit „docker-compose up -d“ neu erstellen lassen.
      4.) Einloggen und jetzt den „Aktualisieren“ Button anklicken.
      Das dauert dann ein Weilchen, aber sollte von Erfolg gekrönt sein und dann wieder einloggen.
      5.) Das alte Image löschen. Das geht mit „docker images“ zur Anzeige und dann „docker images rmi [ID]“. Dazu kommt noch ein extra Tutorial.

      Snapshots brauchst da keine machen, weil beide Images noch da sind. Läuft das neue nicht, einfach das alte wieder mit „latest“ taggen und den Container wieder neu bauen lassen – geht wieder.

      Backup / Restore von Nextcloud? Oder Deinen dort gespeicherten Daten? Oder beidem?

Kommentar verfassen

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

Verwendung
von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung.

Scroll to Top