Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung UGREEN NAS 03.11.2026 · 10 min Lesezeit

UGREEN NAS: Nextcloud mit MariaDB und Redis einrichten

Teil 76 der UGREEN-Serie: Nextcloud 35 mit MariaDB, Redis und Cron-Container auf der UGREEN NAS, Einrichtung ohne Datenbankfragen, Warnungen per occ beheben und Dateien per files:scan sichtbar machen.

Geprüft am 03.11.2026 · für UGOS Pro 1.21.0.0190

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Titelbild Teil 76: Nextcloud auf der UGREEN NAS einrichten

Nextcloud macht aus der NAS eine eigene Cloud für Dateien, Kalender und Kontakte, mit Apps für Rechner und Handy. Diese Anleitung zeigt, wie Sie Nextcloud mit MariaDB, Redis und einem eigenen Container für Hintergrundaufgaben auf der UGREEN NAS einrichten, wie Sie die Warnungen der Verwaltung abarbeiten und warum Dateien, die Sie direkt auf der NAS in den Datenordner legen, erst nach einem Scan erscheinen.

Getestet auf einer UGREEN DXP4800 Pro mit UGOS Pro 1.21.0.0190 und Docker 29.6.2, mit Nextcloud 35.0.2 im offiziellen Image nextcloud:35-apache, MariaDB 11.4 und Redis 7. Unser Testkonto hieß sedv.

Voraussetzungen

  • Eine UGREEN NAS mit der App Docker, siehe Teil 63
  • SSH-Zugang, siehe Teil 52
  • Grundwissen zu Compose, siehe Docker Compose als Grundlage
  • Für den Zugriff von unterwegs ein Reverse Proxy mit HTTPS oder ein VPN
  • Etwa 40 Minuten

Schritt 1: Ordner und Passwörter anlegen

Legen Sie einen Projektordner an und darin zwei Dateien mit zufälligen Passwörtern: db.env für MariaDB und nextcloud.env für Nextcloud. So sieht der Nextcloud-Container nur das Passwort, das er braucht, nicht das Root-Passwort der Datenbank. openssl erzeugt die Werte, sie erscheinen dabei nur auf Ihrem Bildschirm:

sudo mkdir -p /volume2/docker/nextcloud
cd /volume2/docker/nextcloud
openssl rand -hex 24
openssl rand -hex 24

Tragen Sie die Werte mit dem Editor ein, zuerst in db.env:

sudo nano db.env
MARIADB_ROOT_PASSWORD=ERSTER_WERT
MARIADB_PASSWORD=ZWEITER_WERT

Dann in nextcloud.env, mit demselben zweiten Wert:

sudo nano nextcloud.env
MYSQL_PASSWORD=ZWEITER_WERT
sudo chmod 600 db.env nextcloud.env

Passen Sie volume2 an Ihre NAS an, auf vielen Geräten ist es volume1. Die Datenbank gehört auf ein SSD-Volume, die Nutzerdaten im Ordner data dürfen auf das große Volume.

Verifizieren: Die Ausgabe von ls -la zeigt db.env und nextcloud.env mit -rw-------.

Schritt 2: Die Compose-Datei schreiben

services:
  db:
    image: mariadb:11.4
    container_name: nextcloud-db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --innodb-log-file-size=256M
    env_file: db.env
    environment:
      - MARIADB_DATABASE=nextcloud
      - MARIADB_USER=nextcloud
    volumes:
      - ./db:/var/lib/mysql
    labels:
      - wud.watch=false

  redis:
    image: redis:7-alpine
    container_name: nextcloud-redis
    restart: unless-stopped
    labels:
      - wud.watch=false

  app:
    image: nextcloud:35-apache
    container_name: nextcloud
    restart: unless-stopped
    depends_on:
      - db
      - redis
    ports:
      - "8095:80"
    env_file: nextcloud.env
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - REDIS_HOST=redis
      - PHP_UPLOAD_LIMIT=10G
    volumes:
      - ./html:/var/www/html
      - ./data:/var/www/html/data
    labels:
      - wud.watch=false

  cron:
    image: nextcloud:35-apache
    container_name: nextcloud-cron
    restart: unless-stopped
    entrypoint: /cron.sh
    depends_on:
      - app
    volumes:
      - ./html:/var/www/html
      - ./data:/var/www/html/data
    labels:
      - wud.watch=false

Die wichtigsten Punkte:

  • MariaDB 11.4: eine Langzeitfassung, die Nextcloud offiziell unterstützt. READ-COMMITTED verlangt Nextcloud, innodb_log_file_size=256M empfiehlt die eigene Datenbankprüfung, dazu mehr in Schritt 5.
  • Feste Hauptversionen: nextcloud:35-apache und mariadb:11.4 bleiben in ihrer Hauptversion. Laut Handbuch lassen sich Hauptversionen nicht überspringen, ein Sprung von 35 auf 37 geht nicht.
  • wud.watch=false: nimmt die Container von What's Up Docker aus. Was automatische Updates bei einer Datenbank anrichten können, zeigt Teil 75.
  • Vertrauenswürdige Adressen: Die Variable NEXTCLOUD_TRUSTED_DOMAINS übernimmt das Image nur bei einer automatischen Installation mit Administrator aus Umgebungsvariablen. Richten Sie den Administrator wie hier im Browser ein, trägt Nextcloud die Adresse aus der Adresszeile ein, bei uns die Adresse der NAS mit Port 8095. Weitere Namen ergänzen Sie später mit occ, siehe Typische Fehler.
  • cron: derselbe Container mit /cron.sh als Einstieg ruft alle fünf Minuten die Hintergrundaufgaben auf.

Port 8095 war bei uns frei. Prüfen Sie Ihren Port vorher, keine Ausgabe bedeutet frei:

sudo ss -ltn | grep :8095

Verifizieren: Die Ausgabe von sudo docker compose config --quiet bleibt leer, die Datei ist also gültig.

Schritt 3: Starten und den Administrator anlegen

sudo docker compose pull
sudo docker compose up -d

Die Images waren bei uns 1481 MB für Nextcloud, 327 MB für MariaDB und 39 MB für Redis groß. Beim ersten Start kopiert Nextcloud seine Programmdateien in den Ordner html, bei uns 830 MB. Öffnen Sie dann http://ADRESSE-DER-NAS:8095.

Weil die Zugangsdaten der Datenbank als Umgebungsvariablen bereitstehen, fragte die Einrichtung bei uns nur nach Benutzername und Passwort für den Administrator. Die Datenbank wählte Nextcloud selbst, das zeigt occ:

sudo docker exec -u www-data nextcloud php occ config:system:get dbtype
sudo docker exec -u www-data nextcloud php occ config:system:get memcache.locking
mysql
\OC\Memcache\Redis

mysql steht dabei auch für MariaDB, Redis ist für Sperren eingebunden. Wer die Seite zuerst aufruft, legt den Administrator an. Richten Sie ihn deshalb direkt nach dem Start ein.

Verifizieren: sudo docker exec -u www-data nextcloud php occ status meldet installed: true und versionstring: 35.0.2.

Schritt 4: Hintergrundaufgaben auf Cron stellen

Ab Werk führt Nextcloud Hintergrundaufgaben per AJAX aus, also nur, wenn jemand eine Seite lädt. Mit dem Container cron stellen Sie auf Cron um:

sudo docker exec -u www-data nextcloud php occ background:cron
Set mode for background jobs to 'cron'
Hintergrundaufgaben in Nextcloud auf Cron gestellt
Grundeinstellungen, Hintergrundaufgaben: 1 letzte Ausführung vor wenigen Minuten, 2 Cron ist gewählt.

Unter Verwaltung, Grundeinstellungen steht danach Cron (Empfohlen), und nach einigen Minuten meldet Nextcloud, wann die letzte Aufgabe lief.

Verifizieren: Unter Hintergrundaufgaben steht Die letzte Aufgabe lief vor wenigen Minuten, mit grünem Haken.

Schritt 5: Die Warnungen der Verwaltung abarbeiten

Unter Verwaltung, Übersicht prüft Nextcloud die Einrichtung. Auf der Kommandozeile liefert dieselbe Liste:

sudo docker exec -u www-data nextcloud php occ setupchecks

Bei uns standen nach der Einrichtung vier Warnungen dort, die sich direkt beheben ließen:

sudo docker exec -u www-data nextcloud php occ config:system:set maintenance_window_start --type=integer --value=1
sudo docker exec -u www-data nextcloud php occ config:system:set default_phone_region --value=DE
sudo docker exec -u www-data nextcloud php occ maintenance:repair --include-expensive
  • Beginn des Wartungsfensters: Der Wert 1 legt aufwendige tägliche Aufgaben in die Zeit zwischen 1 und 5 Uhr UTC, in Deutschland also ab 2 Uhr, im Sommer ab 3 Uhr.
  • Telefonregion: DE erlaubt Telefonnummern ohne Ländervorwahl im Profil.
  • MIME-Type-Migrationen: maintenance:repair mit --include-expensive spielt sie ein.
  • Datenbankkonfiguration: Die Prüfung bemängelte innodb_log_file_size mit 100663296 Bytes und empfahl 256M. Dafür steht die Option schon in unserer Compose-Datei aus Schritt 2.

Ein Stolperstein bei der Datenbank: Das Ergebnis dieser Prüfung speichert Nextcloud zwischen. Nach der Änderung zeigte die Verwaltung bei uns weiter den alten Wert, obwohl MariaDB schon 256 MB meldete. Erst nach dem Löschen des Zwischenspeichers lief die Prüfung neu:

sudo docker exec -u www-data nextcloud php occ config:app:delete serverinfo cached_db_check
✓ Database configuration: No database problems found. 2 tuning hints are available.
Sicherheits- und Einrichtungswarnungen in der Verwaltung von Nextcloud
Sicherheits- und Einrichtungswarnungen nach den Korrekturen: 1 Zugriff über HTTP, 2 Fehler im Protokoll, 3 fehlender HSTS-Header.

Drei Punkte blieben. Die Fehler im Protokoll stammten bei uns vom Container cron, der vor Abschluss der Einrichtung schon lief und Exception: Not installed meldete, sowie vom Neustart der Datenbank. Sie sind harmlos, die Einträge zeigt sudo docker exec -u www-data nextcloud php occ log:tail 20. HTTPS und den Header Strict-Transport-Security liefert erst ein Reverse Proxy mit Zertifikat. Die übrigen Hinweise mit blauem Symbol, etwa zu E-Mail und Zwei-Faktor-Anmeldung, sind Empfehlungen. Die Anmeldung mit zweitem Faktor sollten Sie für den Administrator einschalten. Die App Two-Factor TOTP Provider war bei uns schon installiert. Unter Persönliche Einstellungen, Sicherheit richten Sie dann TOTP ein und scannen den QR-Code mit einer Authenticator-App.

Verifizieren: occ setupchecks zeigt bei Database configuration einen grünen Haken.

Schritt 6: Dateien hochladen und die Ablage verstehen

Laden Sie in der App Dateien über Neu einige Dateien hoch. Nextcloud legt für jedes neue Konto Beispieldateien an, zusammen mit unseren zwei Testbildern belegte das Konto 62,8 MB.

App Dateien von Nextcloud mit hochgeladenen Testbildern
App Dateien: 1 Neu zum Hochladen, 2 und 3 unsere hochgeladenen Testbilder, 4 belegter Speicher des Kontos.

Auf der NAS liegen die Dateien unter data, im Ordner des Kontos und darunter files:

KONTO steht dabei für den Benutzernamen aus Schritt 3, bei uns sedv:

sudo ls /volume2/docker/nextcloud/data/KONTO/files

Besitzer ist www-data mit der Nummer 33, der Ordner data ist für andere gesperrt. Ändern Sie dort nichts mit anderen Konten.

Verifizieren: Die hochgeladenen Dateien stehen in der App Dateien und unter data/KONTO/files auf der NAS.

Schritt 7: Dateien direkt auf der NAS ablegen und scannen

Nextcloud führt ein eigenes Verzeichnis aller Dateien in der Datenbank. Eine Datei, die Sie am Webinterface vorbei in den Datenordner legen, sieht es zunächst nicht. Zum Test haben wir eine Textdatei direkt angelegt:

echo "Zweiter Test" | sudo tee /volume2/docker/nextcloud/data/KONTO/files/zweiter-test.txt
sudo chown 33:33 /volume2/docker/nextcloud/data/KONTO/files/zweiter-test.txt

In der App Dateien fehlte sie, auch nach dem Neuladen. Erst ein Scan nahm sie auf:

sudo docker exec -u www-data nextcloud php occ files:scan KONTO

Danach stand die Datei in der Liste. Besser ist es, Dateien gar nicht erst am Webinterface vorbei abzulegen. Für Daten, die auf der NAS bleiben sollen, etwa ein freigegebener Ordner, gibt es die App External storage, die den Ordner einbindet, statt ihn zu kopieren. Dafür muss der Ordner zusätzlich als Volume im Dienst app eingebunden sein, etwa mit der Zeile /volume1/Fotos:/mnt/fotos unter volumes, in der App wählen Sie dann den Typ Lokal mit /mnt/fotos.

Verifizieren: Nach occ files:scan erscheint die Datei in der App Dateien.

Typische Fehler

  • Zugriff über nicht vertrauenswürdige Domain: Die Adresse fehlt in trusted_domains. Eine Änderung an NEXTCLOUD_TRUSTED_DOMAINS wirkt nach der Installation nicht mehr. Ergänzen Sie den Eintrag mit occ config:system:set trusted_domains 1 --value=cloud.example.de.
  • Hintergrundaufgaben laufen nicht: Modus steht auf AJAX oder der Container cron fehlt. occ background:cron und Container cron prüfen.
  • Warnung zur Datenbank bleibt nach der Korrektur: Das Ergebnis ist zwischengespeichert. cached_db_check löschen.
  • Dateien fehlen in der App: Sie wurden direkt in data abgelegt. occ files:scan ausführen.
  • Update auf eine übernächste Version scheitert: Nextcloud geht nur eine Hauptversion auf einmal. Schrittweise aktualisieren.
  • Datenbank nach automatischem Update kaputt: wud.watch=false oder das Label Ihres Update-Werkzeugs setzen.

Häufige Fragen

Wie viel Arbeitsspeicher braucht Nextcloud?

Bei uns belegten die vier Container im Ruhezustand zusammen rund 400 MB: Nextcloud 215 MB, MariaDB 166 MB, Cron 15 MB und Redis 3 MB. Mit mehreren Nutzern und Apps wie Office steigt der Bedarf deutlich.

Wie greife ich von unterwegs zu?

Über einen Reverse Proxy mit HTTPS, etwa Nginx Proxy Manager, oder über VPN. Hinter einem Proxy setzen Sie zusätzlich overwriteprotocol auf https und tragen den Proxy unter trusted_proxies ein, im Image auch über die Variablen OVERWRITEPROTOCOL=https und TRUSTED_PROXIES. Für große Uploads braucht auch der Proxy ein passendes Limit. Port 8095 direkt ins Internet zu öffnen ist keine gute Idee.

Wie aktualisiere ich Nextcloud?

Innerhalb der Hauptversion holt der Befehl das neueste Image:

sudo docker compose pull
sudo docker compose up -d

Für die nächste Hauptversion ändern Sie das Tag, etwa auf 36-apache, immer nur um eins. Aktualisieren Sie vorher auf die neueste Unterversion der aktuellen Hauptversion und sichern Sie Datenbank und Ordner.

Was gehört in die Sicherung?

Der Ordner data mit den Nutzerdaten, die Datei config/config.php im Ordner html und ein Export der Datenbank, etwa mit mariadb-dump im Container db. Schalten Sie vorher mit occ maintenance:mode --on den Wartungsmodus ein und danach mit --off wieder aus. Wie Sie Docker-Daten richtig sichern, zeigt Teil 61.

Fazit

Nextcloud läuft auf der UGREEN NAS mit vier Containern stabil, wenn die Grundlagen stimmen: MariaDB mit READ-COMMITTED und großem InnoDB-Log, Redis für Sperren, ein eigener Container für Cron und feste Hauptversionen ohne automatische Updates. Die Warnungen der Verwaltung lassen sich mit wenigen occ-Befehlen beheben, für HTTPS sorgt ein Reverse Proxy. Und wer Dateien direkt auf der NAS ablegt, denkt an occ files:scan.

Weiterführende Anleitungen und Quellen

UGREENUGREEN NASDockerNextcloudMariaDBUGOS Pro