In diesem Artikel zeige ich euch, wie ihr euren Nextcloud Server in Docker migrieren könnt. Wichtig dabei ist, dass euer Server und das Docker Image die selbe Version haben, da es sonst zu Fehlern kommen kann.
Ich übernehme keine Verantwortung, falls euch Daten verloren gehen oder es zu sonstigen Fehlern kommt!
Diese Anleitung bezieht sich auf die Ordnerstruktur aus meiner Nextcloud Anleitung in Schritt 2. Ihr müsst bei euch gegebenenfalls diese anpassen.
1. Backups erstellen
Zuerst solltet ihr alle Daten sichern. Dazu habe ich bereits hier eine Anleitung geschrieben.
2. Neuen Nextcloud Server per Docker bereitstellen
Nun stellen wir Nextcloud mit Docker bereit. Dazu habe ich hier eine Anleitung erstellt. Ich habe Nextcloud hier nach dem Start nicht konfiguriert / eingerichtet, da ich später die kompletten Daten aus der alten Installation übernehme.
3. Nextcloud Datenbank importieren
Nun kopieren wir die Nextcloud Datenbank (aus Schritt 1) in unsere Docker Instanz.
Dazu müssen wir zuerst den Namen unseres Nextcloud Datenbank Containers ermitteln.
docker ps --no-trunc
Also bei mir heißt der Container “nextcloud_nextcloud-db_1”.
Nun kopieren wir unser SQL Backup in diesen Container:
docker cp ./nextcloud-db.sql nextcloud_nextcloud-db_1:/dmp
Nun ist die Datei im Container “nextcloud_nextcloud-db_1”. Jetzt gehen wir in diesen Container um sie dann zu importieren.
docker exec -it nextcloud_nextcloud-db_1 /bin/bash
Im Container führt ihr folgenden Befehl aus:
mysql -u Benutzer -pPasswort nextcloud < /dmp
Nun können wir die Datei innerhalb des Containers wieder löschen:
rm /dmp exit
Jetzt haben wir die Datenbank importiert. Nun kopieren wir noch die “alten” Nutzerdaten.
4. Nextcloud (System-) Daten kopieren
Nun kopiere ich noch alle Daten der bisherigen Nextcloud Instanz.
Die Daten liegen im Verzeichnis “/var/www/html/nextcloud”. Diese kopiere ich nun in mein Nextcloud Docker Verzeichnis “/opt/containers/nextcloud/app/”.
cp -r /var/www/html/nextcloud /opt/containers/nextcloud/app/
Wenn ihr euch danach mit dem Befehl “ls -l” die beiden Verzeichnisse anschaut, sollten diese identisch sein.
5. Nextcloud Nutzer Daten kopieren
Zuletzt kopiere ich noch alle “Benutzerdaten”. Dies sind Daten, welche Benutzer in Nextcloud abgespeichert / hochgeladen haben.
Diese Daten sind derzeit im Verzeichnis “/opt/nextcloud-daten” gespeichert. Die Verzeichnisstruktur möchte ich auch in Docker beibehalten, da man die Daten aus Sicherheitsgründen nicht direkt ins “Webverzeichnis” kopieren soll.
Also erstelle ich mir einen neuen Ordner “nextcloud-daten” innerhalb meines Docker Ordners.
mkdir /opt/containers/nextcloud/nextcloud-daten chown -R www-data:www-data /opt/containers/nextcloud/nextcloud-daten
Nun muss ich mein Docker Compose File noch um diesen Ort erweitern. Dazu öffne ich folgende Datei:
nano /opt/containers/nextcloud/docker-compose.yml
Hier füge ich folgendes hinzu:
nextcloud-app: ... volumes: - /opt/containers/nextcloud/nextcloud-daten:/opt/nextcloud-daten
6. Config.php anpassen
In den kopierten Systemdaten ist noch eine Datei “config.php”. Diese müssen wir nun anpassen, damit Nextcloud Zugriff auf die Datenbank bekommt.
nano /opt/containers/nextcloud/app/config/config.php
Hier müsst ihr nun folgende Zeile anpassen:
'dbhost' => 'nextcloud-db',
Der Name “nextcloud-db” kommt aus eurer Docker Compose Datei. Hier wird der Service so genannt.
7. Nextcloud starten
Nun könnt ihr Docker starten und Nextcloud sollte mit allen euren alten Daten / Einstellungen wieder funktionieren.
8. Quellen
https://hub.docker.com/_/nextcloud/ (ganz unten)
Hey zusammen,
ich habe leider das Problem, dass ich nach der Anpassung der config.php folgenden Nextcloud Fehler bekomme.
Meine Konfigurationsdatei sieht dabei wie folgt aus:
docker-compose file:
Weiß jemand, wie ich diesen Fehler beheben kann? Gerne liefere ich auch noch weitere Informationen, wenn benötigt. Danke im Voraus!
Hallo Christian, super Anleitungen und danke für deine/eure Arbeit! Das hilft enorm auf dem Weg des selfhosings 🙂
Meine nextcloud läuft aktuell nicht in Docker sondern in in var/www/nextcloud, die Nutzerdaten liegen außerhalb in einem eigenen verzeichnis. Kann ich beim Umzug in Docker nicht das Verzeichnis mit den Nutzerdaten aus Schritt 5 deiner Anleitung nicht einfach belassen und in der neuen Instanz unter Volumes mappen?
Das Kommando `cp -r /var/www/html/nextcloud /opt/containers/nextcloud/app/` würde im App Ordner einen neuen Ordner nextcloud anlegen, was eigentlich nicht gewollt ist. Besser wäre es wenn man in den app Ordner geht und von dort aus `cp -r /var/www/html/nextcloud/* .` ausführt.
Außerdem ist es danach sicherlich sinnvoll die Ordnerrechte via chown auf www-data:root anzupassen, bis auf den data Ordner, welcher im Standard root:root gehört.
Danke für die Anleitung, hab mich ohne Hilfe nicht an die migration getraut da es gut 4 TB Daten sind 😀