„So einfach wie möglich. Aber nicht einfacher.“
Dieses Zitat stammt von Albert Einstein und heißt maximal ausformuliert in etwa „mach dir ein Problem so einfach, dass du es lösen kannst, nicht aber einfacher als es sein muss, denn dann geht der Sinn in dem Problem verloren“.
Der Titel-Satz hat vom Ursprung her zwar überhaupt nichts mit IT zu tun, und doch musste ich mich Anfang der Woche daran erinnern.
Ich habe auf meinem Homeserver unter anderem eine selbst gehostete Nextcloud auf Docker-Basisi am laufen. Der Einfachheit halber habe ich damals als Datenbankgrundlage SQLite genommen, eine kleine, selbsständige Datenbank, die oft in beengten Situationen, wie Mobiltelefonen oder kleinen Anwendungen verwendet wird.
Für mich als einzigen Nutzer ist das an sich auch ausreichend, jedoch kamen in Vergangenheit immer mal wieder Situationen aus, die mich störten: das Laden des Web-GUI dauerte länger, Befehle aus der Dokumentation funktionierten nicht (weil diese eine MySQL Datenbank vorraussetzten) oder, noch viel schlimmer, Backups von Kontakten und Kalendern konnten nicht importiert werden, bzw. nur auf Biegen und Brechen mit massiven Fehlern.
Deswegen wollte ich meinen Unterbau auffrischen mit dem Ziel: einen Container für die Nextcloud, und einen für eine MySQL/MariaDB Datenbank.
Weil der Mensch faul ist, wovon ich mich nicht auch ausschließen kann, wollte ich es schnell und einfach. Nicht dreckig, aber rückblickend wäre es das doch wohl geworden. Wenn ich etwas mache, dann denke ich in die Zukunft und will es direkt ordentlich machen.
Versuch 1: schnell + einfach = Denkfehler
Zuerst habe ich die neue Nextcloud mit einem Compose-File aufgesetzt und gestartet. Ich dachte, allein die Angabe meines vorhandenen Datenverzeichnisses genügt, um die neue Installation nutzen zu können.
Wie zu erwarten, hat es das nicht: die Nutzer wurden in der Loginmaske nicht erkannt, die Installation forderte das Administratorkonto einer Erstinstallation.
Versuch 2: mehr denken führt auch mal zu Problemen
Als nächstes dachte ich, ich starte die neue Nextcloud, fahre den alten Container runter, damit dieser nicht in die Datenverzeichnisse schreibt und beim Import inkonsistente Daten hervorruft, und kopiere die Daten aus dem Web-GUI in die neue NC.
Fehler 1:
wenn die alte Nextcloud nicht läuft, kann ich nicht auf die Daten zugreifen (hätte man sich auch denken können…). Weiter KÖNNEN garnicht beide Nextcloud-Instanzen laufen, da immer nur ein Container das darunterliegende Image nutzen kann!
Fehler 2:
per SFTP konnte ich auch nicht an die Daten, da das Datenverzeichnis zwingend dem User „www-data“ gehören MUSS. Der Root-User kann dass zwar umgehen („Ich bin Root, ich darf das!“), aus Sicherheitsgründen habe ich aber den Root-Login auf meinen Server deaktiviert und der Nutzer „www-data“ hat außerhalb meiner Nextcloud nichts zu melden.
Ergebnis: Daten nicht grafisch aufrufbar.
Versuch 3: umständlich + von Anfang an = (fast immer) erfolgreich
Dann musste ich doch in den sauren Apfel beißen: Nextcloud wurde mit neuer MariaDB gestartet, und meine Nutzer der alten Nextcloud manuell angelegt und die Konten und Apps wie vorher eingerichtet.
Danach habe ich per SSH-Terminal von meinem Server die Daten von Verzeichnis „Alt“ (/mnt/hdd/nextcloud/USER/files/) mittels rekursiven Copy-Befehls („cp -r“) in das neue User-Verzeichnis kopiert (/mnt/hdd/ncdata/USER/files/).
Damit noch nicht getan, denn die Nextcloud, bzw. besser die Datenbank weiß noch nichts davon, dass die Daten jetzt vorliegen.
Zum Glück hat Nextcloud dafür einen schönen, wenn auch langen Indexier-Befehl parat:
„sudo docker exec -ti –user www-data [nextcloud-app] /var/www/html/occ files:scan –all“
Danach waren alle Ordner und Dateien im Web-GUI wieder vorhanden und auch meine Kalender und Kontakte wurde fehlerfrei importiert.
Was lernen wir daraus: manchmal muss es doch etwas mehr sein als „eben mal schnell“. Sich die Dinge genau zu überlegen verhindert viele Probleme, kann aber auch in die falsche Richtung leiten.
Eben nach dem Motto „mach es dir einfach und stressfrei, aber nicht einfacher, denn dann ist es keine zufriedenstellende Lösung“.
Auf jeden Fall habe ich einiges dazugelernt, was ich bestimmt in Zukunft nochmal gebrauchen kann.
Und denkt immer dran: vor solchen Operationen am offenen Herzen sind Backups ein Muss und ersparen euch haufenweise Stress und Ärger!
Over and Out
– Boba Fett