Für alle, die vollständige Kontrolle über ihre Daten behalten möchten, bietet Nextcloud eine leistungsstarke Open-Source-Lösung für den Aufbau eines privaten Cloud-Speichersystems. Die Plattform ermöglicht nicht nur eine sichere Dateisynchronisierung über verschiedene Geräte hinweg, sondern auch das Hosten des Speichers auf einem eigenen Server, ohne auf Drittanbieter angewiesen zu sein.
In dieser Anleitung führen wir dich durch die Installation von Nextcloud mithilfe isolierter Docker-Container, was die Bereitstellung und Verwaltung erheblich vereinfacht. Außerdem richten wir eine automatische Verschlüsselung des Datenverkehrs mit SSL-Zertifikaten von Let’s Encrypt ein, um eine sichere Übertragung zu gewährleisten.
Du benötigst:
Einen Hostman-Cloud-Server mit vorinstalliertem Linux Ubuntu 24.04.
Einen Domainnamen.
Installiertes Docker und Docker Compose.
Für den Server empfiehlt sich eine Konfiguration mit 1 CPU-Kern, 2 GB RAM und einer öffentlichen IPv4-Adresse, die du bei der Erstellung oder später im Bereich „Network“ anfordern kannst.
Der Server wird innerhalb weniger Minuten bereitgestellt. Die IPv4-Adresse sowie Login-Daten für den SSH-Zugang findest du im Dashboard.
Nextcloud benötigt mehrere wichtige Komponenten:
Datenbank: in diesem Fall MariaDB, ein performantes und zuverlässiges Datenbanksystem.
SSL-Zertifikat: wir verwenden kostenlose SSL-Zertifikate der Non-Profit-Zertifizierungsstelle Let’s Encrypt.
Reverse Proxy: wir setzen Nginx Proxy Manager ein, der eingehende HTTP- und HTTPS-Anfragen an die entsprechenden Container weiterleitet und verwaltet.
Zuerst erstellen wir ein Verzeichnis für die Konfigurationsdateien und wechseln hinein:
mkdir nextcloud && cd nextcloud
Diese versteckte Datei speichert Variablen mit Passwörtern:
nano .env
Inhalt der Datei:
NEXTCLOUD_ROOT_PASSWORD=secure_root_password_123
NEXTCLOUD_DB_PASSWORD=secure_nextcloud_db_password_456
NPM_ROOT_PASSWORD=secure_npm_root_password_789
NPM_DB_PASSWORD=secure_npm_db_password_012
Vergiss nicht, die Werte durch deine eigenen Passwörter zu ersetzen.
Öffne sie mit:
nano docker-compose.yml
Füge folgende Konfiguration ein:
(Codeblöcke nicht übersetzt gemäß deinem)
volumes:
nextcloud-data:
nextcloud-db:
npm-data:
npm-ssl:
npm-db:
networks:
frontend:
backend:
services:
nextcloud-app:
image: nextcloud:31.0.8
restart: always
volumes:
- nextcloud-data:/var/www/html
environment:
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=nextcloud-db
- MYSQL_PORT=3306
networks:
- frontend
- backend
nextcloud-db:
image: mariadb:12.0.2
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- nextcloud-db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${NEXTCLOUD_ROOT_PASSWORD}
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- backend
npm-app:
image: jc21/nginx-proxy-manager:2.12.6
restart: always
ports:
- "80:80"
- "81:81"
- "443:443"
environment:
- DB_MYSQL_HOST=npm-db
- DB_MYSQL_PORT=3306
- DB_MYSQL_USER=npm
- DB_MYSQL_PASSWORD=${NPM_DB_PASSWORD}
- DB_MYSQL_NAME=npm
volumes:
- npm-data:/data
- npm-ssl:/etc/letsencrypt
networks:
- frontend
- backend
npm-db:
image: jc21/mariadb-aria:10.11.5
restart: always
environment:
- MYSQL_ROOT_PASSWORD=${NPM_ROOT_PASSWORD}
- MYSQL_DATABASE=npm
- MYSQL_USER=npm
- MYSQL_PASSWORD=${NPM_DB_PASSWORD}
volumes:
- npm-db:/var/lib/mysql
networks:
- backend
Starte die Container:
docker compose up -d
Bei docker compose up -d kann ein Fehler aufgrund der Pull-Limits von Docker Hub auftreten.
In diesem Fall:
Melde dich bei deinem Docker-Hub-Konto an oder erstelle ein neues Konto.
Gehe zu Account settings → Personal access tokens.
Klicke auf Generate new token.
Füge eine Beschreibung hinzu, wähle ein Ablaufdatum und erteile Berechtigungen: Read, Write, Delete.
Klicke Generate.
Kopiere den Token (er wird nur einmal angezeigt).
Logge dich auf dem Server ein mit:
docker login -u dockeruser
Ersetze dockeruser durch deinen Benutzernamen und gib den Token als Passwort ein.
Starte danach die Container erneut:
docker compose up -d
Prüfe den Status:
docker ps
Alle Container sollten den Status Up haben.
Öffne im Browser:
http://<server-IP>:81
Melde dich mit den Standardzugangsdaten an:
Login: admin@example.com
Passwort: changeme
Beim ersten Login:
Vollständigen Namen, Spitznamen und E-Mail aktualisieren.
Passwort ändern.
Gehe zu Hosts → Proxy Hosts.
Klicke Add Proxy Host und fülle aus:
Domain Names: deine Domain für Nextcloud
Scheme: http
Forward Hostname/IP: nextcloud-app
Forward Port: 80
Im Tab SSL:
Wähle Request a new SSL Certificate
Aktiviere:
Force SSL
HTTP/2 Support
HSTS Enabled
Gib deine E-Mail für Let’s Encrypt an und akzeptiere die Bedingungen. Speichern.
Öffne nun deine Domain. Wenn alles korrekt eingerichtet ist, erscheint die Nextcloud-Weboberfläche und das SSL-Zertifikat wird automatisch von Let’s Encrypt ausgestellt.
Erstelle ein neues Administratorkonto.
Installiere optional empfohlene Apps oder überspringe diesen Schritt.
Damit ist die Installation und Basiskonfiguration abgeschlossen.
In diesem Artikel haben wir gezeigt, wie man Nextcloud mit Docker bereitstellt und ein kostenloses Let’s-Encrypt-Zertifikat einrichtet.
Diese Methode gehört zu den zuverlässigsten, sichersten und am einfachsten skalierbaren Ansätzen. Docker sorgt für saubere Isolation, erleichtert Updates und macht Migrationen unkompliziert. Ein SSL-Zertifikat ist unerlässlich zum Schutz sensibler Daten und zur Gewährleistung verschlüsselten Datenverkehrs.