Written by 14:06 Linux Views: 5

Nextcloud auf NAS installieren – Synology & Ugreen (Docker + Community App)

Mit blauem Neon-Look steht Nextcloud neben durchgestrichenem Google Drive und einem NAS, dazu der Hinweis auf kostenfreie selbst gehostete Cloud.

Nextcloud ist die bekannteste selbst-gehostete Alternative zu Google Drive und Dropbox – Open Source, kostenlos, und deine Daten bleiben bei dir zuhause auf dem NAS. In diesem Artikel zeige ich dir alle Installationswege: die einfache Synology Community App ohne Docker, und die Docker Compose Variante für Synology und Ugreen NAS. Außerdem erkläre ich die wichtigsten config.php-Einträge und wie du Nextcloud hinter einem Reverse Proxy betreibst.

SQLite oder PostgreSQL – welche Datenbank?

Nextcloud braucht eine Datenbank. Du hast zwei Optionen:

SQLitePostgreSQL
AufwandKein extra ContainerEigener PostgreSQL-Container
Für wen?Heimgebrauch, 1–5 UserViele User, Produktivbetrieb
PerformanceGut für den AlltagBesser bei Gleichzeitigkeit
Empfehlung✅ Für zuhause idealFür fortgeschrittene Setups

Für den Heimgebrauch reicht SQLite vollkommen aus. Die PostgreSQL-Variante findest du weiter unten im Artikel unter High Production Setup.

Weg 1: Synology Community App (ohne Docker)

Auf Synology gibt es einen besonders einfachen Weg über die Community-Paketquelle – kein Docker, kein Terminal, einfach klicken.

Paketquelle hinzufügen

  1. Paket-Zentrum öffnen → oben rechts auf Einstellungen
  2. Tab PaketquellenHinzufügen
  3. Name: Community – URL: https://packages.synocommunity.com
  4. Bestätigen und Einstellungen schließen
  5. Links in der Sidebar erscheint jetzt Community
  6. Nach Nextcloud suchen und installieren

Erste Einrichtung

Nach der Installation öffnet sich Nextcloud automatisch. Beim ersten Start:

  1. Admin-Benutzername und sicheres Passwort wählen
  2. Datenbank: SQLite auswählen
  3. Kurz warten während Nextcloud initialisiert (~1–2 Minuten)
  4. Fertig – ihr seid drin

⚠️ Nachteil dieser Methode: Weniger Kontrolle über Updates und Konfiguration. Funktioniert außerdem nur auf Synology. Für mehr Flexibilität empfehle ich den Docker-Weg.

Weg 2: Docker Compose – Synology & Ugreen NAS

Der Docker-Weg funktioniert auf Synology und Ugreen NAS identisch. Wir nutzen Nextcloud zusammen mit Redis für besseres Session-Caching und schnellere Performance.

Schritt 1: Ordner anlegen

Lege folgende Ordner per File Manager GUI an – nicht per Terminal, um Berechtigungsfehler zu vermeiden:

/volume1/docker/nextcloud/data
/volume1/docker/nextcloud/redis

Schritt 2: Docker Compose (SQLite + Redis)

Erstelle im Container Manager ein neues Projekt mit dem Pfad /volume1/docker/nextcloud und füge folgende Compose-Datei ein:

services:

  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    restart: unless-stopped
    ports:
      - "9090:80"
    environment:
      - NEXTCLOUD_ADMIN_USER=nc_admin
      - NEXTCLOUD_ADMIN_PASSWORD=HierSicheresPasswortEintragen
      - NEXTCLOUD_TRUSTED_DOMAINS=localhost 192.168.178.108 nextcloud.deinedomain.de
      - SQLITE_DATABASE=nextcloud
      - REDIS_HOST=nextcloud_redis
      - REDIS_HOST_PORT=6379
      - REDIS_HOST_PASSWORD=HierRedisPasswortEintragen
    volumes:
      - /volume1/docker/nextcloud/data:/var/www/html
    depends_on:
      - nextcloud_redis
    networks:
      - nextcloud_net

  nextcloud_redis:
    image: redis:7-alpine
    container_name: nextcloud_redis
    restart: unless-stopped
    command: >
      redis-server --requirepass HierRedisPasswortEintragen
    volumes:
      - /volume1/docker/nextcloud/redis:/data
    networks:
      - nextcloud_net

networks:
  nextcloud_net:
    driver: bridge

⚠️ Wichtig: Das Redis-Passwort muss an beiden Stellen identisch sein – einmal bei REDIS_HOST_PASSWORD und einmal im redis-server --requirepass Command.

Schritt 3: Container starten und Nextcloud aufrufen

Nach dem Start im Container Manager (beide Container grün) Nextcloud im Browser aufrufen:

http://192.168.178.108:9090

Beim ersten Aufruf initialisiert Nextcloud alles automatisch (~1–2 Minuten). Danach mit den Admin-Zugangsdaten aus der Compose einloggen.

Die config.php – wichtige Einträge erklärt

Nextcloud schreibt beim ersten Start automatisch eine config.php – du musst sie nicht von Hand erstellen. Du findest sie hier:

/volume1/docker/nextcloud/data/config/config.php

Folgende Einträge musst du manuell ergänzen damit Nextcloud fehlerfrei läuft und keine roten Warnungen im Admin-Bereich anzeigt:

'overwrite.cli.url' => 'https://nextcloud.deinedomain.de',
'overwriteprotocol' => 'https',
'default_phone_region' => 'DE',
'maintenance_window_start' => 1,
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
  'host' => 'nextcloud_redis',
  'port' => 6379,
  'password' => 'HierRedisPasswortEintragen',
],

Was bedeuten diese Einträge?

EintragBedeutung
overwrite.cli.urlDie öffentliche URL von Nextcloud – wichtig für korrekte Links in E-Mails und Benachrichtigungen
overwriteprotocolSagt Nextcloud dass es hinter einem HTTPS-Proxy läuft – ohne diesen Eintrag generiert Nextcloud http:// Links
default_phone_regionStandard-Land für Telefonnummern – ohne diesen Eintrag erscheint eine rote Warnung im Admin-Bereich
maintenance_window_startUhrzeit für Hintergrund-Wartungsaufgaben (1 = 1 Uhr nachts) – verhindert Performance-Einbrüche tagsüber
memcache.localAktiviert APCu für lokales Caching – bereits im Container eingebaut, kein extra Setup nötig
memcache.distributed / lockingLeitet Sessions und Datei-Locks über Redis – macht Nextcloud spürbar schneller bei mehreren Geräten
redisVerbindungsdetails zu unserem Redis-Container – Hostname entspricht dem Container-Namen in der Compose

trusted_domains – häufiger Fehler

Wenn Nextcloud die Meldung “Zugriff über eine nicht vertrauenswürdige Domain” anzeigt, fehlt die aufgerufene IP oder Domain im trusted_domains-Array. Das Array wird von Nextcloud automatisch angelegt, enthält aber nur Einträge aus der Compose-Umgebungsvariable.

Öffne die config.php und passe den Array an:

'trusted_domains' => 
array (
  0 => 'localhost',
  1 => '192.168.178.108:9090',
  2 => 'nextcloud.deinedomain.de',
),

Kein Container-Neustart nötig – einfach speichern und Browser neu laden.

Reverse Proxy einrichten

Option A: Synology Reverse Proxy

  1. Systemsteuerung → Anmeldeportal → Erweitert → Reverse Proxy → Erstellen
  2. Quelle: HTTPS | Domain: nextcloud.deinedomain.de | Port: 443
  3. Ziel: HTTP | Host: localhost | Port: 9090
  4. SSL-Zertifikat: Let’s Encrypt Zertifikat auswählen
  5. Tab Benutzerdefinierte Header → folgende Einträge hinzufügen:
Host                  $host
X-Forwarded-Proto     $scheme
X-Forwarded-For       $proxy_add_x_forwarded_for
X-Real-IP             $remote_addr

Option B: Nginx Proxy Manager

Neuen Proxy Host anlegen mit:

  • Scheme: http | Forward Host: NAS-IP | Forward Port: 9090
  • SSL aktivieren mit Let’s Encrypt

Unter Advanced folgenden Block einfügen:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10G;
proxy_buffering off;
proxy_request_buffering off;

High Production Setup: Docker Compose mit PostgreSQL und .env

Für den produktiven Einsatz mit mehreren Usern empfiehlt sich PostgreSQL als Datenbank und eine .env-Datei um Passwörter sicher aus der Compose-Datei auszulagern.

Die .env-Datei

Erstelle eine Datei /volume1/docker/nextcloud/.env mit folgendem Inhalt:

NEXTCLOUD_ADMIN_USER=nc_admin
NEXTCLOUD_ADMIN_PASSWORD=HierSicheresPasswortEintragen
POSTGRES_PASSWORD=HierPostgresPasswortEintragen
REDIS_PASSWORD=HierRedisPasswortEintragen
NEXTCLOUD_TRUSTED_DOMAINS=localhost 192.168.178.108 nextcloud.deinedomain.de

💡 Warum .env? Passwörter in der Compose-Datei stehen im Klartext – wer einen Screenshot teilt, teilt seine Zugangsdaten mit. Die .env-Datei wird nicht in den Container übertragen und bleibt auf dem Host.

Docker Compose mit PostgreSQL und .env

Zusätzliche Ordner anlegen:

/volume1/docker/nextcloud/data
/volume1/docker/nextcloud/redis
/volume1/docker/nextcloud/postgres
services:

  nextcloud:
    image: nextcloud:latest
    container_name: nextcloud
    restart: unless-stopped
    ports:
      - "9090:80"
    env_file:
      - .env
    environment:
      - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
      - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
      - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_TRUSTED_DOMAINS}
      - POSTGRES_HOST=nextcloud_postgres
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - REDIS_HOST=nextcloud_redis
      - REDIS_HOST_PORT=6379
      - REDIS_HOST_PASSWORD=${REDIS_PASSWORD}
    volumes:
      - /volume1/docker/nextcloud/data:/var/www/html
    depends_on:
      - nextcloud_postgres
      - nextcloud_redis
    networks:
      - nextcloud_net

  nextcloud_postgres:
    image: postgres:16-alpine
    container_name: nextcloud_postgres
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - /volume1/docker/nextcloud/postgres:/var/lib/postgresql/data
    networks:
      - nextcloud_net

  nextcloud_redis:
    image: redis:7-alpine
    container_name: nextcloud_redis
    restart: unless-stopped
    command: >
      redis-server --requirepass ${REDIS_PASSWORD}
    env_file:
      - .env
    volumes:
      - /volume1/docker/nextcloud/redis:/data
    networks:
      - nextcloud_net

networks:
  nextcloud_net:
    driver: bridge

config.php für PostgreSQL

Bei PostgreSQL ergänzt du die config.php um den Datenbank-Typ:

'dbtype' => 'pgsql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => 'HierPostgresPasswortEintragen',
'dbhost' => 'nextcloud_postgres',
'overwrite.cli.url' => 'https://nextcloud.deinedomain.de',
'overwriteprotocol' => 'https',
'default_phone_region' => 'DE',
'maintenance_window_start' => 1,
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
  'host' => 'nextcloud_redis',
  'port' => 6379,
  'password' => 'HierRedisPasswortEintragen',
],

Fazit

Nextcloud auf dem NAS ist einer der sinnvollsten Schritte in Richtung digitale Selbstständigkeit. Eure Daten liegen bei euch, ihr zahlt keine monatlichen Gebühren, und mit Redis läuft das Ganze richtig flüssig. Für den Heimgebrauch reicht SQLite vollkommen aus – wer mehr will, findet oben die PostgreSQL-Variante mit ausgelagerter .env-Datei.

Im zweiten Video zeige ich euch die Nextcloud-Oberfläche im Detail, richten die Mobile App ein und ich stelle euch die wichtigsten Nextcloud-Apps vor. Den Link findet ihr oben im Video.

Fragen oder Probleme? Schreibt sie in die Kommentare – ich helfe gerne weiter.

(Visited 5 times, 5 visits today)
Close