Danke für die Infos!
Zum Thema “Migration Owncloud -> Nextcloud” hier noch einige Informationen, falls das Thema über die Suchfunktion/Suchmaschine gefunden werden sollte.
HowTo "Migration Owncloud -> Nextcloud"
Übersicht
Ich habe mich entschieden die Datenbank nicht zu migrieren, und den Dienst für NextCloud auf einem neuen Server aufzusetzen.
Mir war nur wichtig das die Benutzerdaten migriert werden. Ich wollte bewusst nicht die Einstellungen der alten Owncloud übernehmen, z.B. gesetzte Freigaben der einzelnen User. Von daher benötige ich keine Migration der Datenbank, was die Sache einfacher macht.
Folgende Schritte sind dabei zu erledigen:
- Neuen UCS-Server aufsetzen, die App “NextCloud” über das Appcenter installieren
- Alter Server: Dienst owncloud (Apache) stoppen oder die owncloud in den Maintenance-Mode bringen
- Nutzerdaten (owncloud) via rsync zu nextcloud migrieren
- Nutzerdaten (nextcloud) aufräumen
Durchführung
zu 1:) (neuen UCS-Server aufsetzen)
- Die Datenmenge der User der alten OwnClud-Installation ermitteln. Bei mir waren das nur knapp 100 GB.
- Neuen UCS Member oder Slave installieren, in die Domaine joinen, die App Nextcloud installieren.
- Dann den erforderlichen Speicherplatz (bei mir 100 GB) unter
/var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data
bereitstellen. Das einfachste Vorgehen war für mich, eine Datenplatte in den Pfad zu mounten, dann die dort bereits vorhandenen Daten zu übernehmen.
Beispielsweise so: (Als user root auf dem neuen Server ausführen)
--> Laufende NextCloud stoppen
~# service docker-app-nextcloud stop
--> vorhandene Daten sichern
~# cd /var/lib/univention-appcenter/apps/nextcloud/data/
# mv /nextcloud-data /nextcloud-data_ORIG
--> Datenverzeichnis mit minimalen Rechten neu anlegen
# mkdir nextcloud-data
# chown root:root nextcloud-data
# chmod 000 nextcloud-data
--> /etc/fstab anpassen
# grep nextcloud /etc/fstab
/dev/mapper/data-nextcloud /var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data ext4 defaults 0 0
--> Datenverzeichnis mounten, Rechte des Mountpunkts anpassen
# mount -a
# grep nextcloud-data /proc/mounts
/dev/mapper/data-nextcloud /var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data ext4 rw,relatime,data=ordered 0 0
# chown www-data:www-data nextcloud-data
# chmod 770 nextcloud-data
--> Vorhandene Daten in Mountpunkt verschieben, aufräumen, Nextcloud starten:
# cd nextcloud-data_ORIG
# mv * ../nextcloud-data
# mv .htaccess .ocdata ../nextcloud-data
# cd ..
# rmdir nextcloud-data_ORIG
# cd ~
~# service docker-app-nextcloud start
Dann Testen: Funktioniert die Nextcloud wie gewünscht? Login ist möglich? Genügend Platz unter /var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data
vorhanden?
Wenn Ja: Weitermachen
zu 2.) (Den Dienst Owncloud auf alten Server stoppen)
Dazu gibt es verschiedene Möglichkeiten. Entweder einfach den Apche stoppen, die Owncloud in den Wartungsmodus bringen oder quick&dirty als root auf dem alten Server den Zugriff auf die owncloud sperren: /var/www # chmod 000 owncloud
(so habe ich das gemacht)
Oder den Server gleich ganz abschalten, wenn die Daten der Owncloud woanders (z.B. auf einem NFS-Share) liegen.
zu 3.) (Daten Migrieren)
Ich habe die alten Nutzerdaten der Owncloud via rsync in den Nextcloud-Ordner kopiert. Bei uns lagen die alten Owncloud-Daten im NFS, von daher war dieser Task sehr einfach: (als user root auf dem neuen Server)
# mkdir -p /mnt/owncloud_data
# mount <my_nfs_server>:/nfs/ownclouddata /mnt/owncloud_data
# rsync -a --progress /mnt/owncloud_data/ /var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data/
# umount /mnt/owncloud_data
# rmdir /mnt/owncloud_data
zu 4.) (Nutzerdaten nextcloud aufräumen)
Die neuen Daten müssen von der Nextcloud eingelesen werden, außerdem wollte ich vorher noch etwas aufräumen (Papierkorb und alte Dateirevisionen löschen). Die NextCloud wird bei UCS in Docker ausgeführt, deshalb benötigen wir zuerst die ID des Containers:
~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
729f0fd4703d nextcloud/univention-app-image:11.0.3-0 "/bin/sh -c /usr/sbi 4 days ago Up About an hour 0.0.0.0:40000->80/tcp trusting_goodall
Mit der Container-ID kann dann aufgräumt werden(die ersten beiden Kommandos) und die Daten neu eingelesen werden (das dritte Kommando)
~# docker exec -it 729f0fd4703d su www-data -s /bin/bash -c "php /var/www/html/console.php trashbin:cleanup"
~# docker exec -it 729f0fd4703d su www-data -s /bin/bash -c "php /var/www/html/console.php versions:cleanup"
~# docker exec -it 729f0fd4703d su www-data -s /bin/bash -c "php /var/www/html/console.php files:scan --all"
Zum Abschluss den neuen Server einmal komplett neu starten und dann testen.
Wenn alles ok: DNS anpassen, so das die URL des alten Servers auf den neuen Server zeigt. Damit die User keine Einstellungen am Client anpassen müssen sollte noch eine Weiterleitung von https://DEINE_URL/owncloud auf https://DEINE_URL/nextcloud angelegt werden.
Sonstiges
In den Container wechseln geht übrigens so, falls man dort $komische $Dinge tun möchte:
~# docker exec -it 729f0fd4703d /bin/bash
root@nextc-12345678:/# su www-data -s /bin/bash
www-data@nextc-12345678:/$ cd /var/www/html/
www-data@nextc-12345678:~/html$ php ./console.php status
- installed: true
- version: 11.0.3.2
- versionstring: 11.0.3
- edition:
Ganz Allgemein hilft folgende Dokumentation: https://docs.nextcloud.com/server/11/admin_manual/
Gruß Lutz