Nextcloud über Docker installieren

Nextcloud ist eine wundervolle Lösung um einen Open-Source Selfhosting Cloudspeicher zu installieren. Es bietet viele Plugins und es kann auch über WebDav angebunden werden. Jedoch kann die Installation etwas schwieriger sein.

Ich habe das Docker Image verwendet, da ich eh bereits für meinen externen Server den Docker Host installiert habe. Sinnvoll ist natürlich einen Reverse Proxy mit Nextcloud zu verwenden, was in dieser Anleitung auch passieren wird. Folgt dazu auch der Anleitung zum Nginx Proxy Manager.

Installation

Wir halten uns hier zu teilen an die offizielle Anleitung von Nextcloud.

Zuallererst werden wir einen Ordner mit mkdir nextcloud im Homeverzeichnis erstellen und anschließend mit cd nextcloud öffnen.

Dort erstellt man nun mit nano docker-compose.yml die entsprechende Docker-Compose File:

version: "2.1"
services:
  nextcloud_db:
    image: mariadb:10.9.5
    container_name: nextcloud_db
    hostname: nextcloud-db
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    environment:
      - MYSQL_ROOT_PASSWORD={ROOTPASSWORD}
      - MYSQL_PASSWORD={MYSQLPASSWORD}
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    volumes:
      - ./db:/var/lib/mysql
    restart: unless-stopped
  nextcloud_redis:
    image: redis:7.2.0-alpine
    container_name: nextcloud_redis
    hostname: nextcloud-redis
    volumes:
      - ./redis:/usr/local/etc/redis
    restart: unless-stopped
  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    hostname: nextcloud
    links:
      - nextcloud_db
      - nextcloud_redis
    environment:
      - TZ=Europe/Berlin
      - MYSQL_PASSWORD={MYSQLPASSWORD}
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=nextcloud-db
      - PHP_UPLOAD_LIMIT=10G
      - REDIS_HOST=nextcloud-redis
      - REDIS_HOST_PORT=6379
    volumes:
      - ./data:/var/www/html
    restart: unless-stopped
networks:
  default:
    external: true
    name: npmnet

Achtet darauf, dass die Platzhalter {MYSQLPASSWORD} und {ROOTPASSWORD} mit entsprechenden Passwörtern gefüllt werden. Im Endeffekt wird ein MySQL Container mit einer Datenbank erstellt, sowie ein Redis Container für schnelleren Zugriff auf den Nextcloud Server erstellt. Sobald diese beiden Container erstellt wurden, greift der Links-Block und der Nextcloud Container wird gestartet.

PHP_UPLOAD_LIMIT=10G ist hier das Uploadlimit – no Shit Sherlock 😛 – und limitiert auf 10 GB. Das kann man erhöhen, sollte dennoch im gewissen Rahmen bleiben. 10 GB ist schon sehr viel. Aber wenn man Backup-Images auf die Nextcloud Instanz hochladen will, können 10 GB natürlich ein Witz sein.

Mit [STRG]+[O] wird gespeichert und mit [STRG]+[X] wird der Editor beendet.

Nun erstellen wir mit mkdir data redis db noch die Verzeichnisse für die persistenten Dateien der Container.

Mit sudo docker-compose up -d wird nun die Compose File ausgeführt und nacheinander die Container gestartet.

Reverse Proxy konfigurieren

Damit wir Nextcloud auch erreichen, muss der Nginx Proxy Manager eingestellt werden. Dazu geht man auf das Admininterface und erstellt einen neuen Proxy Host, füllt die entsprechenden Daten aus – siehe Bild – und voilà, wir haben Zugriff. SSL nicht vergessen!

Doch halt anschließend gehen wir nun in den Advanced Tab und tragen folgende Konfiguration ein:

proxy_connect_timeout 1h;
proxy_send_timeout 1h;
proxy_read_timeout 1h;
send_timeout 1h;
client_max_body_size 0;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 1800;
fastcgi_read_timeout 1800;
Advanced Tab konfiguration

Was macht das? Ich hatte Probleme mit Timeouts und dass Dateien nicht hochgeladen werden konnten, weil sie zu groß waren. Daher ist es sinnvoll die Timeouts von 1h zu erhöhen, wenn man auch eine höhere Uploadgrenze von mehr als 10 GB eingetragen hat. Der Link zum Forenbeitrag, der mir für die Lösung auf die Sprünge geholfen hat: https://help.nextcloud.com/t/error-when-assembling-chunks-status-code-504-on-big-file-upload/99912/5

Damit CardDAV und CalDAV ordentlich funktionieren, müssen im Custom Locations Reiter /.well-known/carddav und /.well-known/caldav auf nextcloud/remote.php/dav umgeleitet werden. Dazu einfach auf “Add Location” und die entsprechenden Eintragungen tätigen.

CardDAV und CalDAV Weiterleitung einrichten

Speicher nicht vergessen!

Nextcloud konfigurieren

Wenn man mit allem fertig ist, kann man den Webbrowser auf den ausgesuchten FQDN führen und die Nextcloud Installation beenden. Zuallererst wird man um ein Admin-Konto gebeten. Die Anmeldedaten werden eingegeben. Sucht euch ein sicheres Passwort aus. Später sollte man auch darüber nachdenken MFA TOTP zu aktivieren.

Admin-Konto in Nextcloud anlegen

Mit einem anschließenden Klick auf “Installieren” dauert es einen Moment bis die Installation durchgeführt wurde. Im Endeffekt werden jetzt Konfigurationsdateien und die Struktur im data-Ordner eingerichtet. Außerdem werden die Datenbanken eingerichtet.

Wenn so weit fertig, könnt ihr abschließend bereits Empfohlene Apps installieren lassen. Hier entscheidet ihr selbst, ob ihr das wollt oder nicht.

Empfohlene Nextcloud Apps installieren

Anschließend wird man auf das Dashboard weitergeleitet. Mit einem Klick auf das Benutzerprofil-Symbol und Administrationseinstellungen können wir den Server nun vollständig konfigurieren.

Administrationseinstellungen auswählen

Als erstes sollte der E-Mail-Server unter Grundeinstellungen konfiguriert werden. Dafür einen entsprechenden SMTP Dienst eintragen. Schaut dazu in die jeweilige Hilfe für SMTP eures Mailproviders. Mit “E-Mail senden” kann dann geprüft werden, ob die Einstellungen korrekt sind. Ein “Speichern” ist nicht notwendig, da Nextcloud die Konfigurationsänderungen automatisch speichert.

Im Endeffekt ist Nextcloud nun verwendbar. Unter Sicherheit kann die allgemeine Sicherheit auf dem Server eingestellt und unter Design das Aussehen dem jeweiligen Gusto angepasst werden. Klickt euch einfach mal durch die Einstellungsmöglichkeiten, da gibt es prinzipiell nicht gut oder schlecht, sondern nur die Antwort: “Was ihr benötigt, wird entsprechend konfiguriert.”

Sinnvoll ist unter Übersicht zu prüfen, ob irgendwo noch was klemmt. Nextcloud analysiert sich selbst sehr gut und gibt entsprechende Warnhinweise, wenn eine Aktion erforderlich ist und das meistens mit entsprechendem Link zur Hilfeseite. Wirklich sehr intuitiv und einfach zu handhaben.

Anwendungen in Nextcloud installieren

Unter dem Benutzerprofil-Symbol gibt es dann noch die Möglichkeit Apps zu installieren. Hier sollte darauf geachtet werden, wie die Kompatibilität mit der installierten Nextcloud Version aussieht. Es gibt aber eigentlich nur wenige veraltete Apps, welche aus historischen Gründen noch angeboten werden.

Explizit hervorzuheben ist hier das Default Encryption Module, welches definitiv aktiviert werden sollte.

Default Encryption Module aktivieren

Wenn ihr nun zurück in die Sicherheitseinstellungen geht, kann man dort die Serverseitige Verschlüsselung der Daten aktivieren. Somit werden alle Daten in den Benutzerverzeichnissen von Nextcloud automatisch verschlüsselt. Das ist eine Funktion die standardmäßig aktiviert werden muss, um seine Daten auch ordentlich zu sichern. Der Nachteil wie auch der Vorteil ist natürlich, dass man nicht mehr direkt über das Filesystem die Dateien auslesen kann.

Serverseitig Verschlüsselung aktivieren

Aktualisierung von Nextcloud

Es gibt natürlich immer wieder Aktualisierungen von Nextcloud. Um diese durchzuführen, tut man dies nicht über das Webinterface sondern mit der Docker-Compose Datei, welche wir angelegt haben. Dazu gehen wir in dem Homeverzeichnis wieder mit cd nextcloud in das Nextcloud-Verzeichnis und führen dort nun sudo docker-compose pull aus. Damit werden die aktuellsten Docker Images heruntergeladen. Ist dies geschehen, führt man, wie bereits bei der erstmaligen Einrichtung sudo docker-compose up -d aus und die Container werden geprüft und neu erstellt.

Um die Images zu entfernt, kann man mit sudo docker image ls -a alle vorhandenen Docker-Images anzeigen lassen. Normalerweise sind die Images, welche als Tag (none) zu stehen haben, die Veralteten. Mit sudo docker image remove [IMAGE ID] kann man dann das entsprechende Image entfernen.

Hinweise

Unter https://scan.nextcloud.com/ könnt ihr eure öffentlich erreichbare Nextcloud Instanz scannen lassen und erfahrt, ob ihr sicherheitstechnische Änderungen durchführen solltet.

Und WebDAV unter Windows ist verwendbar, aber nicht ratsam. Die Uploadgröße ist nicht sonderlich hoch, kann aber händisch in der Registry angepasst werden (https://docs.nextcloud.com/server/19/benutzerhandbuch/files/access_webdav.html#id5) und der Webclient Dienst muss ebenfalls auf automatisches Starten gestellt werden (https://heinz-otto.blogspot.com/2018/01/webdav-unter-windows.html), damit man WebDAV dann auch ordentlich beim Start des Rechners einbinden kann. Ich würde nach kurzem umständlichen hin und her eher nicht dazu raten und im Zweifel eher die Nextcloud Desktop Anwendung installieren.

Viel Spaß mit Nextcloud!

Ein Gedanke zu “Nextcloud über Docker installieren

  1. Pingback: Collabora Online Development Edition für Nextcloud installieren | LierschIT

Schreibe einen Kommentar

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