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:
| SQLite | PostgreSQL | |
|---|---|---|
| Aufwand | Kein extra Container | Eigener PostgreSQL-Container |
| Für wen? | Heimgebrauch, 1–5 User | Viele User, Produktivbetrieb |
| Performance | Gut für den Alltag | Besser bei Gleichzeitigkeit |
| Empfehlung | ✅ Für zuhause ideal | Fü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
- Paket-Zentrum öffnen → oben rechts auf Einstellungen
- Tab Paketquellen → Hinzufügen
- Name:
Community– URL:https://packages.synocommunity.com - Bestätigen und Einstellungen schließen
- Links in der Sidebar erscheint jetzt Community
- Nach Nextcloud suchen und installieren
Erste Einrichtung
Nach der Installation öffnet sich Nextcloud automatisch. Beim ersten Start:
- Admin-Benutzername und sicheres Passwort wählen
- Datenbank: SQLite auswählen
- Kurz warten während Nextcloud initialisiert (~1–2 Minuten)
- 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/redisSchritt 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:9090Beim 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.phpFolgende 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?
| Eintrag | Bedeutung |
|---|---|
overwrite.cli.url | Die öffentliche URL von Nextcloud – wichtig für korrekte Links in E-Mails und Benachrichtigungen |
overwriteprotocol | Sagt Nextcloud dass es hinter einem HTTPS-Proxy läuft – ohne diesen Eintrag generiert Nextcloud http:// Links |
default_phone_region | Standard-Land für Telefonnummern – ohne diesen Eintrag erscheint eine rote Warnung im Admin-Bereich |
maintenance_window_start | Uhrzeit für Hintergrund-Wartungsaufgaben (1 = 1 Uhr nachts) – verhindert Performance-Einbrüche tagsüber |
memcache.local | Aktiviert APCu für lokales Caching – bereits im Container eingebaut, kein extra Setup nötig |
memcache.distributed / locking | Leitet Sessions und Datei-Locks über Redis – macht Nextcloud spürbar schneller bei mehreren Geräten |
redis | Verbindungsdetails 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
- Systemsteuerung → Anmeldeportal → Erweitert → Reverse Proxy → Erstellen
- Quelle:
HTTPS| Domain:nextcloud.deinedomain.de| Port:443 - Ziel:
HTTP| Host:localhost| Port:9090 - SSL-Zertifikat: Let’s Encrypt Zertifikat auswählen
- 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_addrOption 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/postgresservices:
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: bridgeconfig.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.










