Guten Morgen,
ich habe vor einigen Tagen UCS u.a. mit Nextcloud aufgesetzt und nach einigem Hin und her läuft soweit alles rund.
Nun stehe ich vor dem Problem, dass ich meinen bisherigen NextCloud-Server (vorkonfigurierte VM mit Ubuntu 18.04 LTS von techandme.se) auf den in UCS migrieren möchte.
Was mir hierzu aber fehlt, ist eine ausagekräftige Anleitung für den Import:
Nextcloud beschreibt zwar auf den Supportseiten sehr ausführlich, wie man Backup und Restore durchführt, sicher ist auch die Beschreibung des Restore weitgehend nutzbar, nur läuft auf dem UCS-System Nextcloud im Docker, was unterschiedliche Verzeichnis- und Konfigurationseinstellungen zur Folge hat. .
Im Zuge meiner Recherchen kamen nun einige Fragen auf:
1.
In welches Verzeichnis musst ich denn die gesicherten Daten importieren? - Reicht es, sie einfach mit rsync/scp nach
/var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html/
bzw.
/var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data
zu verschieben?
2.
Welche Angaben muss ich aus der bisherigen config.php aus das UCS-System anpassen?
Beispiel:
php.ini auf UCS:
'datadirectory' => '/var/lib/univention-appcenter/apps/nextcloud/data/nextcloud-data',
'dbtype' => 'pgsql',
'version' => '15.0.7.0',
'overwrite.cli.url' => 'https:/meinserver.de/nextcloud',
'dbname' => 'nextcloud',
'dbhost' => '172.17.42.1',
'dbport' => '5432',
'dbtableprefix' => 'oc_',
'dbuser' => 'nextcloud',
'dbpassword' => 'mein passwort auf UCS'
die php.ini auf dem alten System:
'datadirectory' => '/mnt/ncdata',
'overwrite.cli.url' => 'https://nextcloud.kmvw-io.de/',
'dbtype' => 'pgsql',
'version' => '15.0.7.0',
'dbname' => 'nextcloud_db',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'dbuser' => 'ncadmin',
'dbpassword' => 'mein Passwort auf altem System',
Welches Passwort wird zum Beispiel zum und nach dem Import verwendet?
Was ist mit dem ‘passwordsalt’ und "secret’ ganz oben in der config.ini?
Weiter habe ich die php.ini’s nicht auf “Ungereimtheiten” untersucht, aber das dürften nicht alle sein.
3.
Auf dem alten System heißen die vom System vergebenen Benutzer anders, als auf dem neuen (“ncadmin” vs “nc_admin” und “administrator”) - wie sorge ich dafür, dass es da keine Probleme mit dem LDAP gibt?
4.
Ist es denn überhaupt noch möglich, die Daten und Einstellungen verlustfrei von einem Stand-Alone-System in UCS zu importieren?
5. Edit konnte ich inzwischen herausfinden (siehe unten)
Wie gehe ich mit der Netxcloud-Administration auf der Kommandozeile um?
Auf der Ubuntu-Installation war es einfach:
sudo -u www-data php occ maintenance:mode --on
unter UCS muss das wohl anders gehandhabt werden (nur habe ich keine Doku hierzu gefunden), denn:
root@ucs:/var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html# sudo -u www-data php occ maintenance:mode --on
PHP Warning: require_once(/var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html/console.php): failed to open stream: Permission denied in /var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html/occ on line 11
PHP Fatal error: require_once(): Failed opening required '/var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html/console.php' (include_path=':/usr/share/kopano/php') in /var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html/occ on line 11sudo -u www-data php occ maintenance:mode --on
PHP Warning: require_once(/var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html/console.php): failed to open stream: Permission denied in /var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html/occ on line 11
PHP Fatal error: require_once(): Failed opening required '/var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html/console.php' (include_path=':/usr/share/kopano/php') in /var/lib/docker/overlay/28673f7577b01ef365f389210f8f3e14e50d85b649bbb06cbc46b1f3e1d71d78/merged/var/www/html/occ on line 11
Punkt 5 konnte ich inzwischen lösen, nachdem ich im Wiki unter UCS 4.0 die benötigten Befehle durch Zufall gefunden habe:
In der Bash von UCS eingeben:
root@ucs:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2eacf5e3d1a2 docker.software-univention.de/nextcloud:15.0.7-0 "/bin/sh -c /usr/s..." 13 days ago Up 3 days 0.0.0.0:40000->80/tcp fervent_jennings
Die Container-ID benötigen wir für den nächsten Befehl:
docker exec -it 2eacf5e3d1a2 /bin/bash
und schon gelangen wir in die Bash des NextCloud-Containers:
root@nextc-29272196:/# cd var/www/html/
root@nextc-29272196:/var/www/html# sudo -u www-data php occ maintenance:mode --on
Maintenance mode enabled
root@nextc-29272196:/var/www/html#
6.
Wie greife ich auf die Nextcloud-Datenbank zu?
Es fehlen die Befehle, um z.B. die Nextcloud-Datenbank zu importieren.
“pg_dump” und “psql” zum Beispiel fehlen offenbar im Nextcloud-Container.
Wie installiere ich die fehlenden Module? - Über apt-get oder UCS Paketverwaltung? - Ist überhaupt im Nextcloud-Container eine Datenbank vorhanden oder liegt sie in UCS?
Oder ist es keine Postgres-DB? MariaDB scheint auch nicht im Nextcloud-Container installiert zu sein und sqlite3 auch nicht.
NextCloud schreibt, dass sie vor einiger Zeit auf Postgres umgestellt hatten.
Leider scheint jedwede Dokumentation zu fehlen, die auf Besonderheiten und systembedingte Abweichungen der Nextcloud - Installation im Docker hinweist.
Es geht hier zwar nur um zwei User auf dem System, aber die Nextcloud-Daten werden mit über 10 Endgeräten (Laptops, Smartphone, Tablets) synchronisiert, wobei zahlreiche Synchronisationen (teilweise nur einmalig) nur in eine Richtung möglich sind, wie Kamerabilder auf Smartphones. - Darum verbietet sich eine “Migration durch Synchronisieren der Endgeräte am neuen Server”, zumal hier tausende an Doubletten xxxx.conflict entstehen würden.
Anmerkung zum Wiki:
Leider wird in oben verlinkten Wiki-Artikel keine eindeutige Sprache verwendet. Die “Container-ID” aus dem “docker ps” - Befehl wird zum Beispiel im “docker exec”-Befehl als “member” erwähnt. - So ist das Wiki keine große Hilfe.