Nextcloud mit Docker einrichten (All-in-One): die eigene Cloud
So richtest du Nextcloud All-in-One per Docker ein: ein Mastercontainer, eine Web-UI, alle Dienste inklusive Office, Talk und Backup. Die eigene Cloud als Dropbox- und Office-365-Alternative auf dem eigenen Server.

Mit Nextcloud All-in-One betreibst du deine eigene Cloud als vollwertige Alternative zu Dropbox, Google Drive oder Microsoft 365 – auf deinem eigenen Server, mit deinen eigenen Daten. All-in-One (kurz AIO) ist die offizielle und empfohlene Installationsmethode: Du startest einen einzigen Mastercontainer per docker run, und dieser verwaltet ueber den Docker-Socket automatisch alle weiteren Container – Nextcloud selbst, die Datenbank, den Cache, den Reverse-Proxy mit HTTPS sowie optionale Dienste wie Nextcloud Office, Talk und das integrierte Backup. Diese Anleitung richtet sich an Admins im Mittelstand und ambitionierte Heimserver-Nutzer, die Dateisync, Kalender, Kontakte und kollaboratives Arbeiten selbst hosten wollen.
Voraussetzungen
Bevor du startest, sollte folgendes vorhanden und vorbereitet sein:
- Server: Linux mit
x86_64/amd64 oderaarch64/arm64, z. B. Debian 12 oder Ubuntu 24.04. Eine SSD ist dringend empfohlen – keine SD-Karten (Performance und Verschleiss). - RAM: mindestens 2 GB fuer den Grundbetrieb, 4 GB oder mehr, sobald du Office (Collabora), Talk oder Full-Text-Search dazuschaltest.
- Docker Engine + Compose-Plugin: aktuell installiert. Wenn du mit Docker-Stacks noch nicht vertraut bist, hilft unsere Anleitung Docker Compose Grundlagen: Stacks sauber aufbauen.
- Domain + DNS: Ein A-/AAAA-Record (z. B.
cloud.deine-domain.de) muss bereits auf die oeffentliche IP deines Servers zeigen, bevor du die Domain im AIO-Interface hinterlegst. Die Ports 80 und 8443 (bzw. 443 beim Reverse-Proxy) muessen von aussen erreichbar sein, sonst klappt das Let's-Encrypt-Zertifikat nicht. - GPU: Fuer den Standardbetrieb von Nextcloud AIO wird keine GPU benoetigt. Erst wenn du KI-Funktionen wie lokales LLM-Serving oder Bildgenerierung ueber Zusatz-Container betreibst, lohnt sich eine NVIDIA-GPU plus
nvidia-container-toolkit(CPU-Betrieb funktioniert, ist aber deutlich langsamer). Fuer reinen Dateisync, Kalender, Office und Talk reicht die CPU vollkommen aus.
Schritt 1: Docker pruefen und Arbeitsverzeichnis anlegen
Pruefe zuerst, dass Docker und das Compose-Plugin laufen, und lege ein Verzeichnis fuer deine Konfiguration an (das brauchst du vor allem fuer die klassische Compose-Variante und den Reverse-Proxy):
docker --version
docker compose version
sudo mkdir -p /opt/nextcloud-aio
cd /opt/nextcloud-aio
AIO selbst verwaltet seine Daten ueber Docker-Volumes – du musst also keine Bind-Mounts von Hand pflegen. Das Pflicht-Volume des Mastercontainers heisst nextcloud_aio_mastercontainer und wird automatisch angelegt. Wichtig: Diesen Volume-Namen niemals umbenennen oder aendern, sonst brechen Update und Backup.
Schritt 2: Mastercontainer starten (integriertes TLS)
Die einfachste Variante – ohne eigenen Reverse-Proxy – nutzt das in AIO integrierte HTTPS. Dabei veroeffentlichst du drei Ports: 80 fuer die HTTP-Challenge von Let's Encrypt, 8080 fuer das AIO-Interface mit selbstsigniertem Zertifikat (nur per IP aufrufbar) und 8443 fuer das AIO-Interface mit gueltigem Zertifikat ueber deine Domain.
sudo docker run \
--init \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 80:80 \
--publish 8080:8080 \
--publish 8443:8443 \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/nextcloud-releases/all-in-one:latest
Kurz zu den wichtigsten Optionen:
--restart alwaysstartet den Mastercontainer nach einem Reboot automatisch neu.--initsorgt fuer sauberes Signal-Handling,--sig-proxy=falseverhindert, dass ein Strg+C im Terminal den Container stoppt.--volume /var/run/docker.sock:/var/run/docker.sock:robindet den Docker-Socket read-only ein – darueber steuert der Mastercontainer alle anderen Container.- Image:
ghcr.io/nextcloud-releases/all-in-one:latestist das empfohlene Release-Image. Alternativ gibt esnextcloud/all-in-one:latestauf Docker Hub,:betaals Beta-Kanal undlatest-arm64fuer ARM64.
Sicherheitshinweis: Der Docker-Socket-Mount gibt dem Mastercontainer faktisch Root-Rechte auf dem Host. Das ist fuer die Funktionsweise von AIO notwendig, sollte aber bewusst akzeptiert werden. Auf nicht vertrauenswuerdigen Hosts kannst du den optional von AIO angebotenen Docker-Socket-Proxy einsetzen.
Schritt 3: AIO-Interface oeffnen und Passphrase sichern
Oeffne jetzt im Browser das AIO-Interface – und zwar zwingend ueber die IP-Adresse deines Servers, nicht ueber die Domain:
https://DEINE-SERVER-IP:8080
Da Port 8080 ein selbstsigniertes Zertifikat nutzt, zeigt der Browser eine Warnung – die kannst du hier gefahrlos akzeptieren. Beim ersten Aufruf erzeugt AIO eine Passphrase. Diese Passphrase ist dein Login fuer das AIO-Interface – notiere sie sofort an einem sicheren Ort (Passwort-Manager). Spaeter erreichst du das AIO-Interface auch ueber den Nextcloud-Admin-Bereich unter /settings/admin/overview.
Schritt 4: Domain hinterlegen und Dienste auswaehlen
Nach dem Login traegst du im AIO-Interface deine Domain ein, z. B. cloud.deine-domain.de. AIO fuehrt dann eine Domain-Validierung durch und holt automatisch ein Let's-Encrypt-Zertifikat. Damit das gelingt, muss der DNS-Record bereits auf den Server zeigen und die Ports 80 und 8443 muessen erreichbar sein.
Anschliessend waehlst du die gewuenschten optionalen Dienste aus. Automatisch enthalten sind immer die Kerndienste:
- Nextcloud – die eigentliche Anwendung (Apache mit HTTPS).
- PostgreSQL – die Datenbank.
- Redis – Cache und File-Locking.
- Notify-Push – Echtzeit-Synchronisation fuer Desktop- und Mobile-Clients.
Optional per Klick zuschaltbar sind:
| Dienst | Funktion |
|---|---|
| Nextcloud Office (Collabora) | Dokumente, Tabellen und Praesentationen direkt im Browser bearbeiten |
| Talk + TURN + Recording | Video-/Audio-Anrufe und Chat; TURN-Server fuer Verbindungen von aussen |
| Imaginary | Schnelle Vorschaubilder, auch fuer HEIC und weitere Formate |
| Full-Text-Search (Elasticsearch) | Volltextsuche ueber Dateiinhalte |
| ClamAV | Antiviren-Scan hochgeladener Dateien |
| Whiteboard | Kollaboratives Zeichnen und Skizzieren |
Klicke danach auf Download and start containers. AIO laedt nun alle ausgewaehlten Images und startet die Container. Beim ersten Mal dauert das je nach Internetanbindung einige Minuten.
Wenn du Talk fuer Anrufe von aussen nutzen willst, muss zusaetzlich Port 3478 (TCP+UDP, Variable TALK_PORT) fuer den TURN-Server offen sein – sonst funktionieren externe Anrufe nicht.
Schritt 5: Nextcloud erstmals einrichten und Clients verbinden
Sobald die Container laufen, zeigt das AIO-Interface das initiale Admin-Passwort fuer Nextcloud an. Rufe deine Cloud nun ueber die Domain auf:
https://cloud.deine-domain.de
Melde dich mit dem Benutzer admin und dem angezeigten Passwort an. Danach kannst du loslegen:
- Benutzer und Gruppen: Unter Verwaltungseinstellungen → Benutzer legst du Konten an und ordnest sie Gruppen zu – ideal, um pro Abteilung oder Team Freigaben zu steuern.
- Desktop-Sync: Installiere den Nextcloud-Desktop-Client (Windows, macOS, Linux), gib deine Domain ein und melde dich an. Ordner werden dann wie bei Dropbox lokal synchronisiert.
- Mobile-Sync: Die Nextcloud-App fuer Android/iOS synchronisiert Fotos automatisch; Kalender und Kontakte bindest du ueber CalDAV/CardDAV ein.
Schritt 6: Betrieb hinter einem bestehenden Reverse-Proxy
Hast du auf dem Server bereits einen Reverse-Proxy (Caddy, Nginx, Traefik) fuer mehrere Dienste, soll AIO dahinter laufen. Dann veroeffentlichst du nur Port 8080 und laesst den AIO-Apache intern auf Port 11000 lauschen. Der externe Proxy uebernimmt das TLS.
sudo docker run \
--init \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 8080:8080 \
--env APACHE_PORT=11000 \
--env APACHE_IP_BINDING=0.0.0.0 \
--env APACHE_ADDITIONAL_NETWORK="" \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/nextcloud-releases/all-in-one:latest
Wichtig: Wenn AIO hinter einem Proxy laeuft, veroeffentliche nur Port 8080 und setze APACHE_PORT. Bleiben 80/8443 zusaetzlich offen, kollidiert das integrierte TLS mit deinem externen Proxy.
Ein minimales Caddy-Beispiel, das auf den AIO-Apache zeigt und sich um das Zertifikat kuemmert:
https://cloud.deine-domain.de:443 {
reverse_proxy localhost:11000
}
Mit Nginx brauchst du mindestens die Weiterleitung samt der wichtigen Header (X-Forwarded-For, Host):
location / {
proxy_pass http://127.0.0.1:11000$request_uri;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
Eine vollstaendige Nginx-Konfiguration mit TLS-Terminierung beschreiben wir in der Anleitung Nginx als Reverse-Proxy mit TLS einrichten.
Schritt 7: Updates durchfuehren
Bei AIO gibt es eine wichtige Besonderheit: Die Inhalts-Container (Nextcloud, Datenbank, Office usw.) aktualisierst du nicht manuell mit docker pull, sondern ueber den Update-Button im AIO-Interface. Nur der Mastercontainer selbst wird per docker run erneuert:
sudo docker stop nextcloud-aio-mastercontainer
sudo docker rm nextcloud-aio-mastercontainer
sudo docker pull ghcr.io/nextcloud-releases/all-in-one:latest
# Danach denselben docker-run-Befehl wie in Schritt 2 (oder 6) erneut ausfuehren.
# Alle weiteren Updates anschliessend ueber den Update-Button im AIO-Interface.
Wer das Updaten automatisieren will: Ein taeglich geplantes Backup im AIO-Interface kann optional ein Auto-Update der Container aktivieren.
Schritt 8: Backup mit BorgBackup einrichten
AIO bringt ein integriertes Backup auf Basis von BorgBackup mit – inkrementell, komprimiert und verschluesselt. Du steuerst es komplett im AIO-Interface und waehlst entweder einen lokalen Pfad (z. B. eine zweite Platte) oder ein entferntes Borg-Repository.
Lebensversicherung: Die Backup-Passphrase bzw. den Encryption-Key getrennt vom Server sicher aufbewahren. Eine Wiederherstellung braucht das Borg-Archiv plus den Key – ohne Key ist sie unmoeglich. Notiere ebenso die AIO-Passphrase.
Ein Backup ist nur dann ein Backup, wenn die Wiederherstellung getestet wurde. Wie du eine verlaessliche Restore-Routine aufsetzt, zeigt unsere Anleitung Backup-Restore-Test als feste Routine etablieren.
Alternative: klassische Installation per Docker Compose
Wenn du AIO bewusst nicht nutzen willst – etwa weil du den Docker-Socket-Mount vermeiden moechtest – kannst du das offizielle nextcloud-Image klassisch per Compose betreiben, zusammen mit MariaDB und Redis. Diese Variante gibt dir mehr manuelle Kontrolle, aber du kuemmerst dich auch selbst um TLS, Updates und Backup. Lege eine compose.yaml an:
services:
db:
image: mariadb:lts
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=changeme_root
- MYSQL_PASSWORD=changeme
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
redis:
image: redis:alpine
restart: always
app:
image: nextcloud
restart: always
ports:
- 8080:80
depends_on:
- redis
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=changeme
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- REDIS_HOST=redis
volumes:
nextcloud:
db:
Ersetze die Platzhalter-Passwoerter durch eigene, starke Werte. Starten und spaeter aktualisieren laeuft hier ganz klassisch ueber Compose:
docker compose pull && docker compose up -d
Nextcloud ist danach unter http://DEINE-SERVER-IP:8080 erreichbar; den Web-Installer fuehrst du wie gewohnt durch. TLS setzt du hier ueber einen vorgelagerten Reverse-Proxy um. Eine verwandte, ebenfalls self-hosted Cloud stellen wir in der Anleitung OpenCloud (ownCloud-Nachfolger) mit Docker einrichten vor – ein guter Vergleichspunkt.
Troubleshooting
- AIO-Interface laedt nicht / Setup haengt: Du hast Port 8080 vermutlich ueber die Domain statt ueber die IP aufgerufen. Das AIO-Interface auf 8080 immer ueber die IP-Adresse oeffnen, sonst schlaegt die Setup- und Zertifikatslogik fehl.
- Kein Let's-Encrypt-Zertifikat: DNS zeigt noch nicht auf den Server oder Port 80/8443 (bzw. 443) ist nicht erreichbar. Pruefe den A-Record und die Firewall.
SKIP_DOMAIN_VALIDATION=truenur in begruendeten Ausnahmefaellen setzen. - Container in inkonsistentem Zustand: Wahrscheinlich wurden Inhalts-Container manuell per
docker pull/upaktualisiert. Updates der Inhalts-Container ausschliesslich ueber den AIO-Update-Button durchfuehren – nur der Mastercontainer wird perdocker runerneuert. - Daten verschwunden nach Aenderung: Du hast vermutlich
NEXTCLOUD_DATADIRoder einen Volume-Namen nach der Ersteinrichtung geaendert. Das fuehrt zu nicht auffindbaren Daten – diese Werte nach dem Setup nicht mehr anfassen. - Hinter Cloudflare keine Verbindung: Der Cloudflare-Proxy (orange Wolke) bricht die Let's-Encrypt-HTTP-Challenge und die WebSockets fuer Talk. Stelle DNS-only ein oder nutze eine dedizierte Cloudflare-Tunnel-Anleitung.
- Talk-Anrufe von aussen scheitern: Port 3478 TCP+UDP (
TALK_PORT) ist nicht offen. TURN-Server braucht diesen Port fuer Verbindungen von ausserhalb.
Haeufige Fragen
Brauche ich fuer Nextcloud AIO unbedingt eine eigene Domain?
Fuer den Zugriff von aussen mit gueltigem Zertifikat ja – AIO holt das Let's-Encrypt-Zertifikat ueber die hinterlegte Domain. Im reinen LAN-Test kannst du zwar das selbstsignierte Interface auf Port 8080 ueber die IP nutzen, fuer produktiven Betrieb mit Clients ist eine Domain aber praktisch Pflicht.
Was unterscheidet AIO von der klassischen Compose-Installation?
AIO bundelt alle Dienste hinter einem Mastercontainer, der sie ueber den Docker-Socket verwaltet, und bringt Office, Talk, TLS und Backup integriert mit. Die klassische Variante (nextcloud + MariaDB + Redis) gibt dir mehr manuelle Kontrolle, verlangt aber, dass du TLS, Updates und Backup selbst loest.
Wie viel Hardware brauche ich?
Fuer eine kleine Cloud mit Dateisync reichen 2 GB RAM und eine SSD. Mit Office, Talk oder Volltextsuche solltest du 4 GB oder mehr einplanen. SD-Karten sind als Speicher ungeeignet – nutze immer eine SSD.
Ist der Docker-Socket-Mount ein Sicherheitsproblem?
Der read-only gemountete Socket gibt dem Mastercontainer faktisch Root-Rechte auf dem Host. Das ist fuer die Automatik von AIO notwendig. Auf vertrauenswuerdigen, dedizierten Servern ist das vertretbar; auf geteilten Hosts kannst du den optionalen Docker-Socket-Proxy von AIO einsetzen.
Wie aktualisiere ich Nextcloud sicher?
Den Mastercontainer per docker stop/rm/pull und erneutem docker run erneuern, alle weiteren Updates ueber den Update-Button im AIO-Interface. So bleibt der Zustand konsistent. Vorher immer ein Backup ziehen.
Kann ich ein bestehendes Backup auf einem neuen Server wiederherstellen?
Ja, sofern du das Borg-Archiv und den Encryption-Key/die Passphrase hast. Ohne den Key ist die Wiederherstellung unmoeglich – deshalb beides getrennt vom Server sicher aufbewahren.
Fazit
Nextcloud All-in-One ist der schnellste, offiziell unterstuetzte Weg zur eigenen Cloud: ein Mastercontainer, ein Web-Interface, und alle Bausteine von der Datenbank ueber Office und Talk bis zum verschluesselten BorgBackup sind sauber integriert. Achte auf die drei haeufigsten Stolperfallen – das AIO-Interface stets ueber die IP aufrufen, korrektes DNS samt offenen Ports fuer das Zertifikat und Updates der Inhalts-Container nur ueber das AIO-Interface – dann hast du eine wartungsarme, datenschutzfreundliche Alternative zu Dropbox und Microsoft 365 unter eigener Kontrolle. Wer maximale Kontrolle ueber jeden Container will, faehrt mit der klassischen Compose-Variante; fuer die meisten Setups ist AIO die bessere Wahl.
Weiterfuehrende Anleitungen und Quellen
Passende Anleitungen aus unserem Magazin:
- Docker Compose Grundlagen: Stacks sauber aufbauen
- Nginx als Reverse-Proxy mit TLS einrichten
- OpenCloud (ownCloud-Nachfolger) mit Docker einrichten
- Backup-Restore-Test als feste Routine etablieren
Quellen und offizielle Dokumentation: