Kategorien
Linux

Unifi Controller – Restore von einem anderen System bzw. Backup

Ein Backup zu haben tut gut, allerdings nur wenn man auch weiß wie man’s wieder einspielt! 🙂

Die Unifi Hilfe und auch das Forum bieten leider relativ wenig Informationen dazu wie man ein mit dem Controller erstelltes Backup (findet sich gewöhnlich unter /var/lib/unifi/backup bzw. /var/lib/unifi/backup/autobackup und hat die Endung .unf) wieder einspielt.

Nach einer frischen Installation der Controller Software kann man am Startbildschirm auswählen eine vorhandene Sicherung ein zu spielen, der upload vom lokalen PC hat bei mir aufgrund der Größe des Backups nicht funktioniert. Und es steht auch nicht immer das gesamte /var/lib/unifi Verzeichnis zur Verfügung – wer also nur die „unf“ Datei hat geht wie folgt vor:

Datei Backup Datei z.B. „autobackup_5.13.32_20200806_2200_1596319200003.unf“ manuell in das Verzeichnis /var/lib/unifi/backup/autobackup/ kopieren und eine passende „autobackup_meta.json“ Datei im selben Verzeichnis erstellen.

Diese hat folgenden Inhalt:

{„autobackup_5.13.32_20200806_2200_1596319200003.unf“:{„version“:“5.13.32″,“time“:1596319200003,“datetime“:“2020-08-01T22:00:00Z“,“format“:“bson“,“days“:90,“size“:6463895536}}

Anschließend erkennt der Unifi Controller das Backup und bietet es direkt für den Restore an!

Bei einer Datenmenge von 6,1 GB kann man sich dann auch auf einem flotten System schon mal eine längere Pause gönnen, besser mit Stunden rechnen…! 🙂

Damit kann man dann auch ein Backup eines Controllers der mit einer älteren Mongo-DB gelaufen ist, problemlos in ein aktuelles Ubuntu System mit Mongo-DB 3.6.9 einspielen.

Zur Installation des Unifi Controllers empfehle ich übrigens das Script von Glenn R.

Kategorien
Allgemein

Owncloud zu Nextcloud Migrationsproblem mit Mysql DB Verbindung

Nachdem sich Nextcloud von Owncloud abgesplittet hat und die Entwicklung dort Fahrt aufgenommen hat, wollte ich heute eine Owncloud 9 Version nach Nextcloud 11 migrieren.

Der Direkte Pfad wird nicht empfohlen – hier die Empfehlung von Nextcloud:

  • ownCloud 8.0.x -> ownCloud 8.1.x -> ownCloud 8.2.x -> Nextcloud 9.0.x -> Nextcloud 10.0.x
  • ownCloud 8.2.x -> Nextcloud 9.0.x -> Nextcloud 10.0.x
  • ownCloud 9.0.x -> Nextcloud 9.0.x -> Nextcloud 10.0.x
  • ownCloud 9.1.x -> Nextcloud 10.0.x -> Nextcloud 11.0.x

In meinem Fall habe ich erst Owncloud auf die Version 9.1.4 hoch gezogen und dann migriert.

Die Migration hat allerdings nicht auf Anhieb geklappt – nach dem Einspielen der Dateien und dem Anpassen der Konfiguration bekam ich folgende Fehlermeldung:

Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [2006] MySQL server has gone away in /var/www/nextcloud/lib/private/DB/Connection.php:59
Stack trace:
#0 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429): OC\DB\Connection->connect()
#1 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389): Doctrine\DBAL\Connection->getDatabasePlatformVersion()
#2 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(328): Doctrine\DBAL\Connection->detectDatabasePlatform()
#3 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(621): Doctrine\DBAL\Connection->getDatabasePlatform()
#4 /var/www/nextcloud/lib/private/DB/Connection.php(142): Doctrine\DBAL\Connection->setTransactionIsolation(2)
#5 /var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php(172): OC\DB\Connection->__construct(Array, Object(Doctrine\DBAL\Driver\PDOMySql\Driver), Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))
#6 /var/www/nextcloud/lib/private/DB/ConnectionFactory.php(121): Doctrine\DBAL\DriverManager::getConnection(Array, Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))
#7 /var/www/nextcloud/lib/private/Server.php(415): OC\DB\ConnectionFactory->getConnection(‚mysql‘, Array)
#8 /var/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(113): OC\Server->OC\{closure}(Object(OC\Server))
#9 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(103): Pimple\Container->offsetGet(‚DatabaseConnect…‘)
#10 /var/www/nextcloud/lib/private/ServerContainer.php(89): OC\AppFramework\Utility\SimpleContainer->query(‚DatabaseConnect…‘)
#11 /var/www/nextcloud/lib/private/Server.php(1029): OC\ServerContainer->query(‚DatabaseConnect…‘)
#12 /var/www/nextcloud/lib/private/legacy/db.php(57): OC\Server->getDatabaseConnection()
#13 /var/www/nextcloud/lib/private/User/Database.php(232): OC_DB::prepare(‚SELECT `uid`, `…‘)
#14 /var/www/nextcloud/lib/private/User/Database.php(280): OC\User\Database->loadUser(“)
#15 /var/www/nextcloud/lib/private/User/Manager.php(140): OC\User\Database->userExists(“)
#16 /var/www/nextcloud/lib/private/User/Session.php(197): OC\User\Manager->get(“)
#17 /var/www/nextcloud/lib/private/Log.php(282): OC\User\Session->getUser()
#18 /var/www/nextcloud/lib/public/Util.php(159): OC\Log->log(3, ‚User backend OC…‘, Array)
#19 /var/www/nextcloud/lib/private/legacy/user.php(146): OCP\Util::writeLog(‚core‘, ‚User backend OC…‘, 3)
#20 /var/www/nextcloud/lib/base.php(742): OC_User::setupBackends()
#21 /var/www/nextcloud/lib/base.php(1074): OC::init()
#22 /var/www/nextcloud/console.php(56): require_once(‚/var/www/nextcl…‘)
#23 /var/www/nextcloud/occ(11): require_once(‚/var/www/nextcl…‘)
#24 {main}PHP Warning: call_user_func() expects parameter 1 to be a valid callback, class ‚OC\Log\File‘ not found in /var/www/nextcloud/lib/private/Log.php on line 299

Irgend ein Problem mit der Verbindung zur Datenbank – nachdem Owncloud zuvor mit der gleichen Config funktioniert hat und ich die Zugangsdaten mehrfach geprüft habe, kam ich zu dem Entschluß dass ich es mal mit einer frischen Datenbank versuchen könnte.

Also einfach die config/config.php verschmissen und neue Daten eingetragen. Wenige Sekunden später lief dann eine leere Instanz von Owncloud (keine User) mit den vorhandenen Files.

Als nächstes  habe ich einen Dump der alten Datenbank erstellt und diesen über die neue Datenbank gespielt. Eigentlich würde ich erwarten dass jetzt gleich wie vorher nicht mehr funktioniert. Falsch geraten – das Upgrade auf Nextcloud 10 ließ sich ohne Schwierigkeiten installieren.

Anschließend noch die Kür mit dem Upgrade auf Nextcloud 11 und beendet ist die kleine Upgrade-Orgie.

Warum das Ganze? Weil ich Kalender und Kontakte synchronisieren will… 🙂

PS: Im Zuge der Umstellung habe ich dann auch gleich von mysql zu mariadb gewechselt.

Kategorien
Linux

Checkliste Upgrade von Ubuntu 14.04 auf 16.04

Beim Upgrade von Ubuntu 14.04 auf 16.04 kommt es an der einen oder anderen Stelle vereinzelt zu Problemen, hier meine kurze Checkliste die mir bei meinen Upgrades sehr hilfreich war/ist.

  • Mysql: sehr alte Kennwörter erneuern, der Password Hash hat sich geändert und die alten funktionieren nicht mehr
  • Mysql: oder gleich einen Umstieg auf Maria-DB einplanen – gute Option 🙂
  • SSH: entweder neue Keys generieren (ssh-keygen -b 4096) oder den SSH Dienst so einstellen dass er alte SSH-Keys akzeptiert. Zweiteres würde ich nicht empfehlen.
  • Bind: Wer im Bind mit internen und externen Zonen gearbeitet hat, der darf hier keine mehrfach genutzten Zone-Files Einträge haben die auf die gleiche Datei verweisen. Also kopieren, umbenennen und entsprechend in der Config anpassen.
  • Squid: beim Upgrade ändern sich die Pfade für die Config files und auch jene der Logfiles. Entsprechend nach dem Upgrade prüfen und gegebenenfalls korrigieren. Weiters muss die Squid-Config von Apparmor angepasst werden, Logfile Verzeichnis anpassen und wer die Squid Daten in einem separaten Pfad abgelegt hat muss auch diesen eintragen.
  • PHP: Da Ubuntu 16.04 die PHP Version 7.0 mit bringt muss alles was noch die alte „mysql“ Funktion verwendet auf „mysqli“ umgestellt werden!

Die Liste wird bei bedarf noch erweitert! 🙂