Ich habe bereits schon hier eine Anleitung geschrieben, wie ihr Nextcloud normal „von Hand“ installieren könnt. Nun zeige ich euch, wie ihr dies in wenigen Minuten mit Docker realisiert. Traefik dient uns hier als Reverse Proxy und stellt später den Dienst verschlüsselt per TLS bereit.

Update

05.09.2020 Integration mit Collabora Office hinzugefügt.
04.09.2020 DockerCompose angepasst, damit alles wieder funktioniert.
26.04.2020 Optimierungen (letztes Kapitel) hinzugefügt.
29.03.2020 Erstellung dieser Anleitung.

Wer Traefik noch nicht installiert hat, findet hier eine Anleitung, wie ihr dies schnell tun könnt.

Als Grundlage meiner Anleitung dient die offizielle Nextcloud Anleitung für Docker.

1. Ordner anlegen

Zuerst legen wir uns passende Ordner-Strukturen an.

mkdir -p /opt/containers/nextcloud/{database,app,daten}

2. Docker Compose anlegen

Nun legen wir die eigentliche Docker Datei an. Hierfür habe ich mir die offizielle Nextcloud Compose genommen und diese abgeändert für Traefik.

cd /opt/containers/nextcloud/
nano docker-compose.yml

Inhalt

version: '3.3'

services:
  nextcloud-db:
    image: mariadb
    container_name: nextcloud-db
    command: --transaction-isolation=READ-COMMITTED --log-bin=ROW
    restart: unless-stopped
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /opt/containers/nextcloud/database:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=test #SQL root Passwort eingeben
      - MYSQL_PASSWORD=test #SQL Benutzer Passwort eingeben
      - MYSQL_DATABASE=nextcloud #Datenbank Name
      - MYSQL_USER=nextcloud #SQL Nutzername
      - MYSQL_INITDB_SKIP_TZINFO=1 
    networks:
      - default

  nextcloud-redis:
    image: redis:alpine
    container_name: nextcloud-redis
    hostname: nextcloud-redis
    networks:
        - default
    restart: unless-stopped
    command: redis-server --requirepass test # Redis Passwort eingeben

  nextcloud-app:
    image: nextcloud
    container_name: nextcloud-app
    restart: unless-stopped
    depends_on:
      - nextcloud-db
      - nextcloud-redis
    environment:
        REDIS_HOST: nextcloud-redis
        REDIS_HOST_PASSWORD: test # Redis Passwort von oben wieder eingeben
    volumes:
      - /opt/containers/nextcloud/app:/var/www/html
      - /opt/containers/nextcloud/daten:/var/www/html/data

    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nextcloud-app.entrypoints=http"
      - "traefik.http.routers.nextcloud-app.rule=Host(`nextcloud.euredomain.de`)"
      - "traefik.http.middlewares.nextcloud-app-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.nextcloud-app.middlewares=nextcloud-app-https-redirect"
      - "traefik.http.routers.nextcloud-app-secure.entrypoints=https"
      - "traefik.http.routers.nextcloud-app-secure.rule=Host(`nextcloud.euredomain.de`)"
      - "traefik.http.routers.nextcloud-app-secure.tls=true"
      - "traefik.http.routers.nextcloud-app-secure.tls.certresolver=http"
      - "traefik.http.routers.nextcloud-app-secure.service=nextcloud-app"
      - "traefik.http.services.nextcloud-app.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"
      - "traefik.http.routers.nextcloud-app-secure.middlewares=nextcloud-dav,secHeaders@file"
      - "traefik.http.middlewares.nextcloud-dav.replacepathregex.regex=^/.well-known/ca(l|rd)dav"
      - "traefik.http.middlewares.nextcloud-dav.replacepathregex.replacement=/remote.php/dav/"
    networks:
      - proxy
      - default

networks:
  proxy:
    external: true

Notwendige Anpassungen:

  1. MySQL Root Passwort ändern
  2. MySQL User Kennwort ändern
  3. MySQL User für Nextcloud ändern
  4. 2x eure Domain bei Traefik anpassen (nextcloud.euredomain.de“)

Diese Docker Compose Datei funktioniert nur, wenn ich euch mittels meiner Anleitung hier Traefik installiert habt. Sonst heißen einige Traefik Variablen wohl anders. Diese müsst ihr dann dementsprechend bei euch anpassen.

3. Nextcloud Server starten

Den Server startet ihr wie gewohnt mit folgendem Befehl:

docker-compose -f /opt/containers/nextcloud/docker-compose.yml up -d

4. Nextcloud einrichten

Nun müsst ihr auf  „nextcloud.euredomain.de“ gehen. Hier müsst ihr jetzt die Verbindung zur SQL Datenbank herstellen sowie einen Administrator für Nextcloud anlegen.

Zuerst klickt ihr auf „Speicher & Datenbank“.

Hier wählt ihr nun „MySQL/MariaDB“ aus.

Jetzt solltet ihr folgendes sehen.

Gebt hier nun folgendes ein:

Administrator-Konto anlegen

  • Benutzername: Wie euer Nextcloud Admin heißen soll
  • Passwort: Wählt ein Passwort

Datenbank Verbindung herstellen

  • Datenbank-Benutzer: Holt den Namen aus dem Docker Compose Datei
  • Datenbank-Passwort: Holt das Passwort aus dem Docker Compose Datei
  • Datenbank-Name: Haben wir in Docker Compose auf „nextcloud“ festgelegt
  • Datenbank-Host: Haben wir in Docker Compose auf „nextcloud-db“ festgelegt

Wenn ihr anschließend auf „Installation abschließen“ klickt, dauert es ca. 30 Sekunden, bis die Webseite neu lädt und Nextcloud fertig installiert ist. Ihr werdet dann so begrüßt.

6. Optimierungen

Wenn ihr nun unter „Einstellungen“ -> „Übersicht“ geht, solltet ihr feststellen, dass Nextcloud noch „Optimierungsbedarf“ sieht. Dies wollen wir nun tun.

6.1 Datenbank optimieren

Zuerst führt ihr also folgende Befehle aus, während eure Nextcloud Instanz noch läuft.

docker exec --user www-data nextcloud-app php occ db:add-missing-indic

Die Ausgabe sieht bei mir so aus:

root@xxx:/opt/containers/nextcloud# docker exec --user www-data nextcloud-app php occ db:add-missing-indic
Check indices of the share table.
Check indices of the filecache table.
Check indices of the twofactor_providers table.
Check indices of the login_flow_v2 table.
Check indices of the whats_new table.
Check indices of the cards table.
Check indices of the cards_properties table.
Check indices of the calendarobjects_props table.
Adding calendarobject_calid_index index to the calendarobjects_props table, this can take some time...
calendarobjects_props table updated successfully.
Check indices of the schedulingobjects table.
Adding schedulobj_principuri_index index to the schedulingobjects table, this can take some time...
schedulingobjects table updated successfully.

Als nächstes gebt ihr folgenden Befehl ein:

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

Meine Ausgabe:

root@xxx:/opt/containers/nextcloud# docker exec --user www-data nextcloud-app php occ db:convert-filecache-bigint
Following columns will be updated:

* mounts.storage_id
* mounts.root_id
* mounts.mount_id

This can take up to hours, depending on the number of files in your instance!

6.2 Reverse Proxy Konfiguration

Als nächstes sagen wir Nextcloud, dass es unserem Traefik Reverse Proxy vertrauen kann. Dazu müssen wir dessen IP-Adresse herausfinden. Gebt folgenden Befehl ein:

docker inspect traefik

Wenn ihr nun ganz nach unten scrollt, seht ihr folgendes:

Bei mir ist die „IPAddress“: 172.18.0.2 und das „IPPrefixLen“: 16

Mit diesen beiden Werten öffnen wir nun die Nextcloud config.php.

nano /opt/containers/nextcloud/app/config/config.php

Hier fügt ihr nun folgende Zeile ein. Passt diese aber bitte an eure Konfiguration ein.

'trusted_proxies' => '172.18.0.2/16',

6.3 Nextcloud komplett auf HTTPs umstellen

Wenn ihr euch bei Nextcloud anmelden, dann fällt euch sicher auf, dass einige Symbole nicht angezeigt werden. Dies hängt damit zusammen, dass diese per HTTP nachgeladen werden sollen. Dies wird aber blockiert.

Um dies zu lösen öffnen wir wieder die Konfigurationsdatei:

nano /opt/containers/nextcloud/app/config/config.php

Hier ändert ihr nun folgende Zeile:

vorher:
 'overwrite.cli.url' => 'http://nextcloud.euredomain.de',

nachher:
 'overwrite.cli.url' => 'https://nextcloud.euredomain.de',

Anschließend fügt ihr noch folgenden Zeilen hinzu:

  'overwriteprotocol' => 'https',
  'overwritehost' => 'nextcloud.euredomain.de',

Dies sollte dann so aussehen.

6.4 Container neu starten

Nun starten wir Nextcloud neu um sicherzugehen, dass alle Einstellungen übernommen werden. Nun sollte es so aussehen:

6.5 Collabora Office integrieren

Ich habe hier eine Anleitung geschrieben, wie ihr in wenigen Minuten Collabora Office mittels Docker installiert und in Nextcloud integrieren könnt. Collabora Office ermöglicht euch ein „komplettes online Office“ innerhalb von Nextcloud.

7. Quellen

https://hub.docker.com/_/nextcloud/

Teile diesen Beitrag
Christian

Categories:

76 Kommentare

  1. Hallo,
    danke für dieses tolle Tutorial. Ich habe Nextcloud damit endlich zum laufen gebracht.
    Ich hätte noch eine Frage: Kann man irgendwie noch onlyoffice daneben installieren?
    Also das Nextcloud auf ‚meine.ip.com/nextcloud/‘ und onlyoffice auf ‚meine.ip.com/office/‘ ist? Unterschiedliche Subdomains funktionieren in meinen Anwendungsfall leider nicht. Mit ‚rule=Host(`meine.ip.com`) && Path(`/nextcloud/`)‘ hatte ich kein Glück.

    • Hallo Nils,
      du kannst einfach Onlyoffice per „Apps“ unter Nextcloud installieren.
      Dann musst du dich um nichts weiteres kümmern. Bei der aktuellen Nextcloud Version wird es standardmäßig schon mitinstalliert.

      LG
      Christian

      • Moin Christian.

        Erst einmal vielen Dank für Deine Anleitung. Eine tolle Arbeit. Ich habe mithilfe Deiner Anleitung Nextcloud installieren können.

        Leider habe ich aber noch ein paar kleinere Probleme.

        Egal was ich mache ich kriege cron nicht ans laufen. Ich vermute mal, dass das verwendete Image irgendeine Sicherheitseinstellung hat die die Ausführung von Crontab verhindert.

        Vielleicht hast Du hier einen kleinen Tipp.

        Des Weiteren habe ich keine Möglichkeit Nextcloud innerhalb des Containers zu updaten. Dem Grunde kein Problem, jedoch muss ich bei jedem Update des Image alle meine Einstellungen und Apps erneut installieren. Vielleicht hast Du für mich auch hierfür eine Lösung.

        Vielen Dank

        Christian

        • Moin Christian.

          Ich habe noch eine kleine Nachfrage. Kannst Du mir vielleicht sagen in welchem Image von Nextcloud sudo bereits installiert ist. Ich benötige auch u.a. für Full Text Search um den Suchvorgang anzustoßen bzw. um die Funktionsfähigkeit zu testen. Bei meinem Image habe ich leider keine sudo Rechte.

          Vielen Dank im Voraus.

          Christian

  2. Hi Cristian,

    1000 Dank für die super Anleitung!
    Die erste die ich gefunden habe die auf Anhieb funktioniert und auch noch eine A+ Bewertung im scan schafft.

    Grüße
    Enrico

  3. Hallo Christian,

    hast Du evtl. eine Idee wie man mit diesem Setup unter Nextcloud 19 collabora online mit dem eingebauten CODE-Server ans laufen bekommt?

    Viele Grüße
    Enrico

  4. Hallo Christian,

    erstmal danke für deine super Anleitungen.

    Ich bin jedoch über einige Syntax Probleme gestolpert. Es fehlen teilweise doppelte Striche.
    So z.B. „docker exec – user www-data nextcloud_nextcloud-app_1 php occ db:convert-filecache-bigint“
    Korrekterweise müsste es jedoch „docker exec –-user www-data …“ heißen.
    Das gleiche Problem hatte ich auch in der docker-compose im command Teil von MariaDB.

    Gruß
    Thomas

    • Hallo,
      ich habe das Problem gelöst. Es wurde die Funktion „wptexturize“ dauerhaft ausgeführt, welche die Syntax verändert. Dies geschah erst durch ein Plugin Update, weshalb es mir nicht direkt auffiel. Jetzt sollte alles wieder funktionieren 🙂

      LG
      Christian

  5. Hallo Christian,

    vielen Dank für deine Anleitungen. Bei Mailcow und Portainer haben die auch wunderbar funktioniert. Nur Nextcloud will jetzt nicht 🙁 Ich erhalte immer einen Error 404 wenn ich versuche die Seite für den Setup zu öffnen. Irgendwelche Ideen?

    Gruß Basti

  6. Hallo
    Habe ein Problem

    Error while trying to create admin user: Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

    • das stimmt.

      ich habe nun das problem mittels einer anderen Datenbank behoben. nehme nun anstatt der „mysqli“ „mysql:5.7“

      nextcloud-db:
      image: mysql:5.7
      restart: unless-stopped
      environment:
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud ## Hier selben Benutzer eingeben ##
      MYSQL_PASSWORD: password ## Hier selbes Passwort eingeben ##
      MYSQL_ROOT_PASSWORD: rootpassword
      volumes:
      – /opt/containers/nextcloud/database:/var/lib/mysql
      networks:
      – default

    • Hallo,
      ich habe das Problem gelöst. Es wurde die Funktion „wptexturize“ dauerhaft ausgeführt, welche die Syntax verändert. Dies geschah erst durch ein Plugin Update, weshalb es mir nicht direkt auffiel. Jetzt sollte alles wieder funktionieren 🙂

      LG
      Christian

  7. Hallo, Herzlichen dank für die Tolle Anleitung.
    Bei der Installation muss die mariadb berücksichtigt werden, da die neuesten versionen im moment nicht mehr kompatibel ist. Ich habe „mariadb:10.3.22“ genommen.

    Ein problem habe ich, und weiss aber nicht an was es liegt.
    Ich kann mich mit der Nexcloud app und software für den PC mit dem Server nicht verbinden. Er hängt immer beim Beim Kontrollzugriff übern Browser siehe bild: https://i.imgur.com/wsjMxAY.png . Kennst du das?

    Sonnst hat wirklich alles super geklappt. Herzlichen Dank 🙂

  8. Hallo,
    Vielen Dank. Es hat alles geklappt. Ich habe noch eine Frage. Ich habe zu wenig Speicher vergeben….kann man das erweitern für Nextcloud Daten?

  9. Danke, das ist wirklich eine übersichtliche Anleitung. Ich komme jedoch beim Starten des Containers nicht weiter, da die gleiche Fehlermeldung, wie bei Bert im Log auftritt:
    /usr/local/bin/docker-entrypoint.sh: line 340: exec: –: not found
    Hat jemand eine Lösung?

    • Hallo,
      ich habe das Problem gelöst. Es wurde die Funktion „wptexturize“ dauerhaft ausgeführt, welche die Syntax verändert. Dies geschah erst durch ein Plugin Update, weshalb es mir nicht direkt auffiel. Jetzt sollte alles wieder funktionieren 🙂

      LG
      Christian

  10. Hier ist meine docker-compose.yml mit der ich Ohne Problem laut dieser anleitung und paar Veränderungen Nextcloud ohne Probleme instalieren kann:

    version: ‚3.3‘
    services:

    nextcloud-db:
    image: mariadb:10.3.22
    command: –transaction-isolation=READ-COMMITTED –binlog-format=ROW
    restart: unless-stopped
    volumes:
    – /opt/containers/nextcloud/database:/var/lib/mysql
    environment:
    – MYSQL_ROOT_PASSWORD=xxx #### Hier Passwort eingeben ####
    – MYSQL_PASSWORD=xxx #### Hier Passwort eingeben ####
    – MYSQL_DATABASE=nextcloud
    – MYSQL_USER=nextcloud #### Hier Nutzer eingeben ####
    – MYSQL_INITDB_SKIP_TZINFO=1
    networks:
    – default

    nextcloud-app:
    image: nextcloud:19.0.2
    restart: unless-stopped
    volumes:
    – /opt/containers/nextcloud/app:/var/www/html
    – /opt/containers/nextcloud/data:/var/www/data
    labels:
    – „traefik.enable=true“
    – „traefik.http.routers.nextcloud-app.entrypoints=http“
    – „traefik.http.routers.nextcloud-app.rule=Host(`cloud.xxx.de`)“
    – „traefik.http.middlewares.nextcloud-app-https-redirect.redirectscheme.scheme=https“
    – „traefik.http.routers.nextcloud-app.middlewares=nextcloud-app-https-redirect“
    – „traefik.http.routers.nextcloud-app-secure.entrypoints=https“
    – „traefik.http.routers.nextcloud-app-secure.rule=Host(`cloud.xxx.de`)“
    – „traefik.http.routers.nextcloud-app-secure.tls=true“
    – „traefik.http.routers.nextcloud-app-secure.tls.certresolver=hetzner“
    – „traefik.http.routers.nextcloud-app-secure.service=nextcloud-app“
    – „traefik.http.services.nextcloud-app.loadbalancer.server.port=80“
    – „traefik.docker.network=proxy“
    – „traefik.http.routers.nextcloud-app-secure.middlewares=nextcloud-dav,secHeaders@file“
    – „traefik.http.middlewares.nextcloud-dav.replacepathregex.regex=^/.well-known/ca(l|rd)dav“
    – „traefik.http.middlewares.nextcloud-dav.replacepathregex.replacement=/remote.php/dav/“
    networks:
    – proxy
    – default
    networks:
    proxy:
    external: true

  11. Hier ist meine docker-compose.yml mit der ich Ohne Problem laut dieser anleitung und paar Veränderungen Nextcloud ohne Probleme instalieren kann:

    version: ‚3.3‘
    services:

    nextcloud-db:
    image: mariadb:10.3.22
    command: –transaction-isolation=READ-COMMITTED –binlog-format=ROW
    restart: unless-stopped
    volumes:
    – /opt/containers/nextcloud/database:/var/lib/mysql
    environment:
    – MYSQL_ROOT_PASSWORD=xxx #### Hier Passwort eingeben ####
    – MYSQL_PASSWORD=xxx #### Hier Passwort eingeben ####
    – MYSQL_DATABASE=nextcloud
    – MYSQL_USER=nextcloud #### Hier Nutzer eingeben ####
    – MYSQL_INITDB_SKIP_TZINFO=1
    networks:
    – default

    nextcloud-app:
    image: nextcloud:19.0.2
    restart: unless-stopped
    volumes:
    – /opt/containers/nextcloud/app:/var/www/html
    – /opt/containers/nextcloud/data:/var/www/data
    labels:
    – „traefik.enable=true“
    – „traefik.http.routers.nextcloud-app.entrypoints=http“
    – „traefik.http.routers.nextcloud-app.rule=Host(`cloud.xxx.de`)“
    – „traefik.http.middlewares.nextcloud-app-https-redirect.redirectscheme.scheme=https“
    – „traefik.http.routers.nextcloud-app.middlewares=nextcloud-app-https-redirect“
    – „traefik.http.routers.nextcloud-app-secure.entrypoints=https“
    – „traefik.http.routers.nextcloud-app-secure.rule=Host(`cloud.xxx.de`)“
    – „traefik.http.routers.nextcloud-app-secure.tls=true“
    – „traefik.http.routers.nextcloud-app-secure.tls.certresolver=hetzner“
    – „traefik.http.routers.nextcloud-app-secure.service=nextcloud-app“
    – „traefik.http.services.nextcloud-app.loadbalancer.server.port=80“
    – „traefik.docker.network=proxy“
    – „traefik.http.routers.nextcloud-app-secure.middlewares=nextcloud-dav,secHeaders@file“
    – „traefik.http.middlewares.nextcloud-dav.replacepathregex.regex=^/.well-known/ca(l|rd)dav“
    – „traefik.http.middlewares.nextcloud-dav.replacepathregex.replacement=/remote.php/dav/“
    networks:
    – proxy
    – default
    networks:
    proxy:
    external: true

  12. Hallo zusammen,
    ich komme leider auch nicht weiter bei dem Thema. Habe zum Testen sogar alles bis auf den Hostnamen belassen:
    Attaching to nextcloud-redis, nextcloud-db, nextcloud-app
    nextcloud-app | Configuring Redis as session handler
    nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 353: exec: –: not found
    nextcloud-redis | 1:C 11 Sep 2020 10:14:07.718 # Fatal error, can’t open config file ‚–‘: No such file or directory
    nextcloud-app | Initializing nextcloud 19.0.3.1 …
    nextcloud-redis exited with code 1
    nextcloud-db exited with code 127
    nextcloud-redis | 1:C 11 Sep 2020 10:14:07.718 # Fatal error, can’t open config file ‚–‘: No such file or directory
    nextcloud-redis | 1:C 11 Sep 2020 10:14:09.379 # Fatal error, can’t open config file ‚–‘: No such file or directory
    nextcloud-redis | 1:C 11 Sep 2020 10:14:11.121 # Fatal error, can’t open config file ‚–‘: No such file or directory
    nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 353: exec: –: not found
    nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 353: exec: –: not found
    nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 353: exec: –: not found
    nextcloud-redis | 1:C 11 Sep 2020 10:14:12.795 # Fatal error, can’t open config file ‚–‘: No such file or directory
    nextcloud-redis exited with code 1
    nextcloud-db exited with code 127
    nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 353: exec: –: not found
    nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 353: exec: –: not found
    nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 353: exec: –: not found
    nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 353: exec: –: not found
    nextcloud-redis | 1:C 11 Sep 2020 10:14:15.103 # Fatal error, can’t open config file ‚–‘: No such file or directory
    nextcloud-db exited with code 127
    nextcloud-redis exited with code 1
    nextcloud-app | Initializing finished
    nextcloud-app | New nextcloud instance
    nextcloud-app | AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 192.168.0.4. Set the ‚ServerName‘ directive globally to suppress this message
    nextcloud-app | AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 192.168.0.4. Set the ‚ServerName‘ directive globally to suppress this message
    nextcloud-app | [Fri Sep 11 10:14:16.704796 2020] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.4.10 configured — resuming normal operations
    nextcloud-app | [Fri Sep 11 10:14:16.704916 2020] [core:notice] [pid 1] AH00094: Command line: ‚apache2 -D FOREGROUND‘
    nextcloud-redis exited with code 1
    nextcloud-db exited with code 127
    nextcloud-redis exited with code 1
    nextcloud-db exited with code 127
    nextcloud-redis | 1:C 11 Sep 2020 10:14:28.919 # Fatal error, can’t open config file ‚–‘: No such file or directory
    nextcloud-redis exited with code 1
    nextcloud-db exited with code 127
    ^CGracefully stopping… (press Ctrl+C again to force)

    • Wie Thomas (weiter oben) schon sagt: Es gibt ne Menge von Typos
      try:

      services:
      nextcloud-db:

      command: –-transaction-isolation=READ-COMMITTED -–log-bin=ROW

      nextcloud-redis:
      ….
      command: redis-server –-requirepass test

      • Hi,
        leider funktioniert es bei mir immer noch nicht 🙁
        Immer noch der selbe Fehler. Mir ist aufgefallen, dass die Mariadb als Status in den Portainer Infos imme auf „restarting“ steht.
        Hier mal mein docker-compose.yml.
        https://pastebin.com/Q2jeCFh9

        Gibt es eigentlich eine Einschränkung bezüglich des mariadb Passwortes? Großbuchstaben, Zahlen und Sonderzeichen?

        Gruß Bert

        • Hi nochmal,
          ich habe es endlich gelöst!
          es war wie Sebastian sagte die zwei Zeilen:
          command: –-transaction-isolation=READ-COMMITTED -–log-bin=ROW
          command: redis-server –-requirepass test
          aber, wenn ich die hier aus den Kommentaren kopiert habe ist statt zwei kurzen Bindestrichen (–) ein langer und ein kurzer (-–)

          Richtig ist:
          command: –transaction-isolation=READ-COMMITTED –log-bin=ROW
          command: redis-server –requirepass test

          Danke an alle für die super Hilfe!!!!!

          Hier noch die funktionierende docker-compose.yml
          https://pastebin.com/nuhT22S0

          Gruß Bert

          • Hallo Bert
            Leider funktioniert bei mir die Erstellung des Admin Kontos immer noch nicht.
            Welchen Hostname verwendest du?
            Viele Grüße und danke im vorraus
            Christoph

          • leck mich am arsch 😀 danke dir Bert!!

            command: –transaction-isolation=READ-COMMITTED –log-bin=ROW

            das war der fehler! man braucht zwei „–“ Striche!

            @Christoph nimm die „pastebin“ von Bert und geh alles genau durch! Achte auf allfällige Leerzeichen und doppelte Bindestriche!
            und dann einfach deine Daten vom SQL Server eingeben 🙂

            danke nochmal Bert !! und natürlich auch an Christian!! Spitzenleistung

          • edit:
            Hier bei den Kommentaren auch wenn ich zwei Bindestriche mache, kommt schlussendlich nur einer raus!

            command: – -transaction-isolation=READ-COMMITTED – -log-bin=ROW (ohne Leerzeichen zischen den „- -„

  13. Hi,
    erstmal Danke für die Anleitung.

    Nur habe ich ein Problem, was ich in den letzten zwei Stunden nicht zu lösen vermochte:

    Bis Punkt 3 ist alles prima und die Container starten auch alle.
    Aber ich bekomme bei HTTP-Aufruf der Nextcloud zwar noch einen
    Redirect auf HTTPS und auch ein gültiges Lets-Encrypt Zertifikat ausgeliefert,
    aber anstelle der Config-Webseite nur:

    > 404 page not found

    Die einzige Fehlermeldung die ich finden konnte war im traefik:

    > HTTP-Router / https / nextcloud-app-secure@docker / nextcloud-app

    > Router-Details:
    > RULE Host(`nc.MEINSERVER.de`)
    > NAME nextcloud-app-secure@docker
    > ENTRYPOINTS https
    > SERVICE nextcloud-app
    > ERRORS middleware „secHeaders@file“ does not exist

    Ich komme hier nicht weiter, hast Du Tipps?

  14. Hallo hätte eine Frage, ich habe oben die yml Datei übernommen und angepasst, aber bekomme dann folgende Fehlermeldung:

    pi@raspberrypi:/opt/containers/nextcloud $ sudo docker-compose -f /opt/containers/nextcloud/docker-compose.yml up -d
    Creating network „nextcloud_default“ with the default driver
    Pulling nextcloud-db (mariadb:)…
    latest: Pulling from library/mariadb
    ERROR: no matching manifest for linux/arm/v7 in the manifest list entries

    Was läuft bei mir falsch?

    • Habe es mittlerweile geschafft, war unter raspberry pi 4 mit 32 bit System unterwegs. Habe jetzt auf ubuntu server 64 bit umgestellt, dann habe ich es mit einigen weiteren Tutorials hinbbekommen.

    • Hallo zusammen,
      ich stehe vor gleichem Problem wie Thomas – habe auf meinem Raspi 4 Raspberry OS Lite installiert. Gibt es keine Möglichkeit es auch hier zum laufen zu bekommen?

      Danke.

  15. Hi,

    vielen vielen Dank! Die Anleitung ist großartig. Ich habe darauf aufbauend eine eigene Version erstellt, in der noch Monitoring und Logging Features enhalten sind. Dafür habe ich Portainer für Container-Administration, Grafana für Dashboards und Prometheus als Datensammler in einem extra docker-compose file eingerichtet und alles miteinander verknüpft 🙂
    Die Umgebungsvariablen habe ich in eine extra Datei ausgelagert, die ich im „compose up“ mit angebe. Zur Vereinfachung habe ich mir ein Start-Skript geschrieben.

    Meine Doku und die Files liegen hier:
    https://github.com/erikbarz/NextcloudDockerComposeGrafana

    Viele Grüße
    Erik

  16. Grüß dich,

    vorab: Danke für das Tutorial. Habe traefik und nextcloud im docker laufen, funktioniert eigentlich perfekt. – Nur ein Kleinigkeit kriege ich nicht hin:

    Wenn ich von außerhalb meines Netzwerks auf den Server zugreife funktioniert alles.
    Da mein Router aber kein NAT Loopback unterstützt muss ich in meinem Netzwerk die lokale IP des Servers ansteuern (und kann nicht den DDNS aufrufen). Wenn ich aber die lokale IP eingebe erhalte ich nur eine weiße Seite mit „404 page not found“.

    Hoffe du kannst mir hier weiterhelfen!

    • Ich wollte noch dazu sagen, das ich Traefik schon nutze für Mailcow und dort alles läuft ich verstehe nur nicht wie ich jetzt den certdumper für nextcloud nutzen muss oder wie ich das nun mache?

  17. Hallo,

    vielen Dank für die super Anleitung – fkt. alles wunderbar. Hast du Christian bzw. die crowd eine Idee wie man eine Scan to Nextcloud bewerkstelligen könnte – FTP?

    Vielen Dank für eure Ideen.

  18. Guten Abend,
    vielen Dank für diese Anleitung. Bisher passt eigentlich alles bis auf folgendes:
    Mein log wird massiv von failed login attempts meines Nutzers gespamt. Das gleiche gilt für jeden neu erstellten Nutzer. Die IP ist natürlich dann die 172.20.0.2. Ist etwas nervig, wenn man bei jedem Login die Nachricht bekommt „We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.“. Irgendwelche Ideen?

    Danke schonmal im Vorraus 🙂

    • Okay, es war mein Android-Smartphone, welches sich immer wieder probiert hat zu connecten.

      Christian, hast du eine Idee, wie man denn am geschicktesten die Real-IP forwarded, sodass Sie im Log erscheint und nicht nur das docker gateway?

      MfG Felix

  19. Heyho Christian,
    estmal coole Website und super tutorials.
    Wie viele vor mir habe ich denoch ein Problem, dass ich mir nicht erklären kann.
    Ich habe nach deiner Anleitung Traefik installiert und danach direkt den nextcloud container… Dann viel mir auf, dass die middleware secHeader@file nicht existiert. Also habe ich dein turorial befolgt, wie man die tls sicherheit erhöhen kann und somit auch dieser Fehler behoben werden sollte.
    Ich bin den „code“ jz an 3 verschiedenen Tagen 5 mal durchgegangen, um festzustellen, dass ich KEINE Schreibfehler habe und alles richtig befolgt habe. Nur jz bekomme ich wie ein Nutzer vor mir einen 404 Error auf allen Seiten (bzw. Sie sind nicht erreichbar). Da die middleware secHeader@file aber eh nur für ein verbesserte TLS Sicherheit zuständig war( so wie ich das verstanden habe). Habe ich den label eintrag in der traefik compose.yml , der auf die dynamic.yml verweißt gelöscht. Dann funktionierte traefik wieder. Bei der nextcloud compose.yml habe ich die Zeile, die auf die middleware verweißt gelöscht. und dann funktionierte Nextcloud. Soweit zu dem Werdegang, jz das eigentliche Problem.

    Meine traefik/Nextcloud/Portainer Domains sind alle bei Strato gehostet und sind als Subdomains angemeldet. Ich habe einen A-Record hinterlegt, der auch meinen Server verweißt (bei allen drei dieselbe IP).
    Im Heimnetzwerk funktioniert alles super, ich gebe traefik.domain.de ein bekomme das traefik dashboard. Bei Nextcloud ebenso. Aber sobald ich versuche meine Cloud von außen zu errreichen bekomme ich nur einen „Server braucht zu lange zum Antworten“ ; Oder einfach nur einen Weißen Bildschirm ; oder ein „Server nicht erreichbar, sind Sie sicher aller richtig geschrieben zu haben“…

    Hat das mit der fehlenden Middleware zu tun?
    Ich weiß echt nichtmehr weiter–
    MfG Joni

  20. Vielen Dank für die Anleitung. Ich habe Traefik auch ans Laufen bekommen und kann via Internet darauf zu greifen. Beim Versuch, den Nextcloud-Container zu installieren, also oben bei Schritt 3.) bekomme ich nur folgende Fehlermeldung:
    ERROR: Cannot locate specified Dockerfile: Dockerfile
    Was kann ich tun?

  21. Vielen Dank für die Anleitung. Ich habe Traefik auch ans Laufen bekommen und kann via Internet darauf zu greifen. Beim Versuch, den Nextcloud-Container zu installieren, also oben bei Schritt 3.) bekomme ich am Ende der Download- und Installationsnachrichten nur folgende Fehlermeldung:
    ERROR: Cannot locate specified Dockerfile: Dockerfile
    Was kann ich tun?

  22. „Problem“ gelöst! Sorry für soviel Unsinn. Ich habe mich zwischen „alter“ und „neuer“ Anleitung verirrt.
    Jetzt läuft alles bestens !

  23. Hallo,
    vielen Dank für die Anleitungen, (abgesehen von Portainer) war es ein schneller und problemloser Durchlauf. Wurde das Ganze auf echter Hardware oder auf einem V-Server installiert ?
    Ich habe ein merkwürdiges Performance-Problem: Nach der reinen Grundinstallation (Docker+DockerCompose+Treafik+Nextcloud+mariaDB+Redis) inkl. den hier vorgeschlagenen Optimierungen dauert es rund 45-60 Sekunde im Webinterface von Nextcloud auch nur einen Ordner zu öffnen. Laut HTOP ist die RAM-Nutzung dabei bei ~500MB/16GB und die CPU(s)-Auslastung geht nicht über 30%.
    Vorher lief auf dem vServer eine direkte Installation von Nextcloud+mariaDB+Redis (allerdings noch Nextcloud v19.irgendwas), da konnte ich so ein Verhalten nicht beobachten.
    Könnte es sein, dass die Kombination Docker und NC auf einem V-Server einfach ungünstig ist ?

  24. Hallo Christian,
    vielen Dank für die super Anleitung.
    Ich habe mehrfach versucht ein Backup von meinem „normalen“ nextcloud einzuspielen, ohne Erfolg. Jetzt habe ich mit „BernieO / calcardbackup“ alles wichtige importiert.
    Zu meiner Frage; für einen vollständigen Server benötige ich noch einen samba server. Leider klappt das nicht :(. Ich habe verschiedene container versucht, mit verschiedensten Anpassungen, doch nichts hat geholfen.

    Kannst du mir oder jemand anderes vielleicht, helfen.

  25. Guten Abend,

    also die Anleitungen sind top, vielen vielen Dank dafür. Ich habe mich die letzten Tage mit den ganzen docker und docker-compose Sachen beschäftigt. Dank deiner Anleitung habe ich traefik gut ans laufen bekommen 🙂
    Nachdem ich jetzt erfolgreich mein cloudflare DNS und bitwarden einegbunden habe , wollte ich mich an die Nextcloud wagen.

    Wie ich gemerkt habe hast du einen Linux Server, daher habe ich das MariaDB Paket abgeändert und ich bekam ein ‚running‘ von docker zurück.

    Leider gibt mir traefik ein ‚middleware „secHeaders@file“ does not exist´‘ zurück, die Seite kann ich aufrufen, bekomme aber einen 404 Error zurück. Da ich absolut keine Ahnung habe was dem fehlt wollte ich hier mal Nachfragen. Google gab mir nicht so richtig hinweise darauf.

    Ach mein System: ich benutze einen RaspberryPI 4 mit 4GB.

    Ich hoffe mir kann hier geholfen werden.

  26. Guten Morgen Christian,
    danke für deine schnelle Antwort, ich habe das gerade getestet und es hat mit traefik funktioniert, danke vielmals.
    Als ich das zum laufen bekommen habe, habe ich mein Bitwarden auch angepasst (die middleware konnte ich in der compose die ich habe einfach herauslöschen und es hat geklappt 🙂 ) und es hat gestartet jetzt bekomme ich aber einen 525 SSL Handshake Fehler in traefik bekomme ich den Fehler
    ACCESS CONTROL ALLOW CREDENTIALS false

    Hast du eine Idee ? … Entschuldige meine Unkenntnis xD

    Gruß
    Marc

  27. Hi,

    seit einigen Tagen bekomme ich im Dashboard => Einstellung etc.. folgende Meldung:#

    „Einige Aufträge wurden seit Vor 7 Tagen nicht mehr ausgeführt. Bitte erwäge die Umstellung auf System-Cron“

    Weiss jemand warum dies erscheint, und somit ist auch Nextcloud relativ langsam.

    • Hallo,

      ich habe eine Möglichkeit gefunden. Bei mir läuft das ganze allerdings auf einem debian server. Sollte aber wahrscheinlich auf jedem Linux System so laufen. Im Nextcloud muss zunächst als admin unter den Grundeinstellungen auf „Cron“ umgestellt werden. Dann schaltet ihr euch per putty auf den Host und testet erstmal manuell ob ihr einen Cronjob ausführen könnt:

      docker exec -u www-data nextcloud-app php cron.php

      „nextcloud-app“ müsst ihr durch euern docker Namen von der nextcloud ersetzen. Ihr könnt den Namen durch den Befehl docker ps herausfinden.

      Wenn das geklappt hat gebt ihr folgenden Befehl ein:

      crontab -e

      und in diese Datei gebt ihr ganz unten folgendes ein:

      */5 * * * * docker exec -u www-data nextcloud-app php cron.php

      Wobei ihr „nextcloud-app“ wieder durch euren docker Namen ersetzen müsst und die datei speichern.
      Damit wird alle 5 Minuten der Cronjob ausgeführt.
      Ich habe anschließend noch folgendes eingegeben. Bin mir aber nicht sicher ob das notwendig ist:

      service cron start

      Ich hoffe das hilft euch weiter.

      Gruß
      Edgar

      • Hallo Edgar,

        Danke jetzt funktionierts wieder mit „cron“.

        Diese Werte kann man ja in der php.ini ändern oder, aber wo finde ich diese ?

        Version: 7.4.14
        Arbeitspeicher-Grenzwert: 512 MB
        Maximale Ausführungszeit: 3600
        Maximale Größe zum Hochladen: 2 MB

  28. Ich habe die letzten Tage sehr viel Zeit damit verbracht Nextcloud bei mir zum laufen zu bekommen. Ich bin dabei aus meiner Sicht so ziemlich alle Anleitungen und Videos im Internet durchgegangen. Keine einzige funktioniert und die neuesten Kommentare bestätigen das auch. Aber ich kann Stand Heute sagen, dass diese Anleitung hier 100% funktioniert sofern man sich akkurat an die von Daniel beschriebenen Schritte hält.
    Vielen Dank für diese TOP Anleitung. Ich hoffe, dass meine Nextcloud nun möglichst lange hält und nicht irgendein update von mariadb, traefik, docker oder nextcloud das ganze konstrukt zerschießt 🙂
    Oder wenn doch, dass Christian die passende Lösung parat hat.

    Gruß

    • Dem widerspreche ich. 🙂 Die Anleitung ist sehr gut und sie funktioniert bis zu dem Punkt nach der Konfiguration von Nextcloud im Web Interface. Als es mich begruessen soll, stuerzt das ganze ab mit:

      Warning: Redis::connect(): php_network_getaddresses: getaddrinfo failed
      Warning: Cannot modify header information – headers already sent by (output started at /var/www/html/lib/private/RedisFactory.php:92) in /var/www/html/lib/private/legacy/OC_Template.php on line 350
      Internal Server Error The server encountered an internal error and was unable to complete your request. Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report. More details can be found in the server log.

      Dabei habe ich mehrfach nachgeschaut dass das Redis Passwort im docker-compose.yml keine Fehler aufweist. Trotzdem klappt es nicht. Ich denke ich lass es nach 4 Woche des Versuchens jetzt Mal sein. Docker soll das leben vereinfachen, aber man merkt auch dass der Jungle aus Konfigurationsparametern und Tests am Anfang wahnsinnig viel Nerven kostet. Wenn’s Mal steht, klar…

      Man bekommt auch den Eindruck dass Traefik nach jedem neuen Versuch mit Nextcloud neu gestartet werden moechte, nicht so toll, aber verschmerzbar.

  29. Error while trying to create admin user: Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2006] MySQL server has gone away

    ich habe die anleitung 1:1 verfolgt. Trotzdem funktioniert die einrichtung der mysql datenbank nicht. hat hier jemand eine lösung für. danke

  30. Hey, tolles Tutorial. Läuft soweit bei mir alles.

    Kann man nextcloud noch optimieren, dass es schneller läuft? bei mir ist es träge.
    Kann man den Cache-Speicher erhöhen?
    Falls ja, wie?

    Danke Dir.

    Grüße,
    Tobias

  31. Hallo,
    Ich wollte mich nur bedanken. Ich verwende seit 2 Jahren Docker mit gitlab. Jetzt habe ich mit deiner Anleitung meine alte Traefikversion aktualisiert und auf 2.4 umgestellt. Zusätzlich noch nextcloud eingebunden. Läuft alles. Danke für deinen Einsatz.Interessant wäre noch zammed mit traefik.

    Viele Grüße
    Karsten

Schreibe einen Kommentar

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