Frage zu Doku Updateprozess UCS: 4.1 --> 4.2 (hier vor allem Apps wie Owncloud oder Zarafa)

german
ucs-4-2
owncloud
zarafa

#1

Hallo zusammen,

wir setzen hier ein aktuelle UCS4.1 ein, zusammen mit Owncloud8.2 und Zarafa7, (WebApp 2.2.1.43-199.1, WebAccess 7.2.6-10) Wir planen ein Update nach UCS4.2, dabei auch ein Update auf NextCloud und Copano. (Webmeeting und Webapp würde wegfallen)

Für das eigentliche UCS-Update habe ich genügend Informationen gefunden, ich denke nicht das es hier großartig Probleme geben wird: https://docs.software-univention.de/release-notes-4.2-0-en.html
Mir macht aber das Update der installierten Apps Sorgen, auch weil ich dafür keine Doku gefunden habe. Vor allem der längere Ausfall des Mailservers (Zarafa) wäre für uns unschön.

Meine Frage: Gibt es spezifische Dokumentation für den Updateprozess innerhalb UCS für Zarafa->Copano bzw. OwnCloud->NextCloud? Muss ich (außer dem üblichen Backup natürlich) sonst etwas beachten? Ich bin Dankbar für jedwede Hinweise.

Gruß Lutz


Uninstalling Owncloud failed
#2

Hallo,

beide App Versionen gibt es nur für UCS 4.1. Zarafa ist im App Center schon End of Life, und auch mit Owncloud 8.2 wird das Update auf UCS 4.2 blockiert werden. Die Migrationen sollten also vorher angegangen werden.

Ich habe gerade gesehen, dass in der Zarafa App Readme leider kein Hinweis zur Migration hinterlegt ist. Die Dokumentation ist jedenfalls im Kopano4UCS Wiki zu finden. Zum Wechsel von owncloud auf nextcloud habe ich keine Infos.


#3

Was ownCloud → Nextcloud angeht kann ich etwas Hintegrundinfos, aber keine ausgewachsene Lösung anbieten:

  • Nextcloud kommt als Docker-App, d.h. die Daten werden nach /var/lib/univention-appcenter/apps/nextloud/data/.../ abgelegt. Ggf. möchte man da vorher ne größere Platte hin mounten. Grundsätzlich kann man die Daten einfach kopieren. Ich habe sogar mit einem bind-mount des alten ownCloud-Datenverzeichnisses experimentiert, das sah ganz gut aus.
  • Komplizierter ist die Migration der Datenbank. Die ownCloud-8.2-App verwendet MySQL, die Nextcloud-11-App hingegen PostgreSQL (auf dem Docker-Host, also außerhalb des Containers). Zudem sind es ja leider keine kompatiblen Versionen (vgl. https://nextcloud.com/migration/) und eigentlich müsste man die Migration schrittweise durchführen (also bspw. ownCloud 8.2.x -> Nextcloud 9.0.x -> Nextcloud 10.0.x -> Nextcloud 11.0.x). Das ist so aber im App Center nicht abgedeckt. Je nach Größe der Installation kann es auch ein gangbarer Weg sein, die Datenbank einfach nicht zu migrieren.

#4

Von welcher Owncloud-Version wird es denn am ehesten einen offiziellen Migrationspfad geben?


#5

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:

  1. Neuen UCS-Server aufsetzen, die App “NextCloud” über das Appcenter installieren
  2. Alter Server: Dienst owncloud (Apache) stoppen oder die owncloud in den Maintenance-Mode bringen
  3. Nutzerdaten (owncloud) via rsync zu nextcloud migrieren
  4. 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 :slight_smile:

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


#6

Hallo Lutz,

tolle Schritt für Schritt Anleitung! Eine kleine Vereinfachung habe ich: Es muss nicht umständlich die ID des Containers herausgesucht werden um dort Kommandos auszuführen. Wenn die AppID, in diesem Falle nextcloud, bekannt ist, kann man auch folgendes aufrufen:
univention-app shell nextcloud [befehl]
Wenn kein Befehl angegeben wird, landet man in einer Shell innerhalb des Containers