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

26.04.2020Optimierungen (letztes Kapitel) hinzugefügt.
29.03.2020Erstellung 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}

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
    command: --transaction-isolation=READ-COMMITTED --log-bin=ROW
    restart: unless-stopped
    volumes:
      - /opt/containers/nextcloud/database:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=test   #### Hier Passwort eingeben ####
      - MYSQL_PASSWORD=test      #### Hier Passwort eingeben ####
      - MYSQL_DATABASE=nextcloud 
      - MYSQL_USER=nextcloud     #### Hier Nutzer eingeben ####
      - MYSQL_INITDB_SKIP_TZINFO=1 

    networks:
      - default

  nextcloud-app:
    image: nextcloud
    restart: unless-stopped
    volumes:
      - /opt/containers/nextcloud/app:/var/www/html

    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_nextcloud-app_1 php occ db:add-missing-indic

Die Ausgabe sieht bei mir so aus:

root@xxx:/opt/containers/nextcloud# docker exec --user www-data nextcloud_nextcloud-app_1 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_nextcloud-app_1  php occ db:convert-filecache-bigint

Meine Ausgabe:

root@xxx:/opt/containers/nextcloud# docker exec --user www-data nextcloud_nextcloud-app_1  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:

7. Quellen

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

Teile diesen Beitrag
Christian

Categories:

7 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

  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

Schreibe einen Kommentar

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