<p>In der letzten Woche hatte ich einen aufgeregten Kunden am Telefon. Dieser erklärte mir, dass die von ihm gepflegte OwnCloud-Instanz nicht mehr funktionieren würde. Es war kein Login mehr möglich. Obwohl die Logindaten korrekt waren, erhielt er die Fehlermeldung, dass er sich zu lange Zeit gelassen hätte, um sich einzuloggen.</p>
<p style="text-align: center;"><img src="https://www.meagainsttheweb.de/bl-content/uploads/pages/autosave-ff95283fad04ff93b80db026a7e81ad0/login_csrf_login.png" alt="" width="256" height="256"></p>
<p></p>
<p>Nach kurzer Suche war klar, dass der Server mit seinen ~60 Nutzern zu 100% ausgelastet war. Der MariaDB-Server konnte keine Daten mehr schreiben und somit war auch kein Login mehr möglich.
You like what you find here? A
donation helps to keep this project running.
</p>
<p>Was also tun? Da der Speicherplatz sich nicht erweitern ließ und somit auch ein Update auf eine aktuelle Version nicht möglich war - ein Snapshot gab es auch nicht, da es sich um echte Hardware handelte, die schon einige Jahre auf dem Buckel hatte - kam nur die Migration auf eine neue Installation in Frage.</p>
<p>Für den Umzug vom vollen OwnCloud-Server gab es zwei Möglichkeiten:</p>
<p>Die erste Möglichkeit war, alle Dateien zu kopieren und danach auf dem alten Server zu löschen, um ausreichend Platz für ein Datenbankbackup zu schaffen. Dieses würde dann auf dem neuen Server eingespielt.</p>
<p>Die zweite Möglichkeit war, einen neuen Server aufzusetzen und die Benutzer unabhängig vom System zu übertragen.</p>
<p>Da der Kunde zu Nextcloud wechseln wollte, bot sich die zweite Variante an, da ein Upgrade von einer 10er OwnCloud-Version auf eine aktuelle 18er Nextcloud-Version nicht ohne weiteres möglich gewesen wäre bzw. mehr Arbeit gemacht hätte als nötig war. Die Benutzer nutzen die Cloud nämlich nur als Backup. Es gab also keine Freigaben oder gemeinsame Ordner. Ideal also für die zweite Variante.</p>
<p>Der neue Server sollte auch gleich eine neue Domain bekommen, die sich besser in die Netzstruktur eingliederte (diese OwnCloud war wirklich eine ziemliche Altlast).</p>
<p>Das Setup des neuen Servers bzw. die Installation der neuen Nextcloud-Instanz war schnell erledigt. Da auch der <a href="https://doc.owncloud.com/server/admin_manual/maintenance/export_import_instance_data.html#export-the-user-on-the-source-instance">Data Exporter</a> nicht aktiviert werden konnte, wurde nun Hand angelegt. Zuerst galt es, die Dateien der Benutzer bzw. die Benutzer an sich zu kopieren. Dazu exportierte ich die Users-Tabelle aus der alten Datenbank. Vorher schaffte ich noch ein paar Megabyte frei. Danach ging es an das Dateisystem. Um die Daten zu übertragen, nutzte ich rsync.</p>
<p>Zuerst erstellte ich mir auf dem neuen Server einen neuen SSH-Key (vorher <code>cd /home/</code>) <code>ssh-keygen -t rsa -b 4096 -f sshkey</code>. Das war notwendig, da auf dem alten Owncloud-Server kein Login mit dem Passwort möglich war (hätte im Notfall natürlich auch geändert werden können, aber da ich das System aus "Backup-Gründen" nicht umkonfigurieren wollte, ließ ich es). Den Public-Key kopierte ich in die "authorized_keys"-Datei auf dem alten Server (ja, dafür war noch Platz). Danach führte ich den folgenden Befehl aus: <code>nohup rsync --progress -avW -t -e "ssh -i /home/sshkey -p 2992"
root@xx.xx.xx.xx:/var/www/owncloud/data/ /var/www/virtual/nextcloud/data/ &</code>.</p>
<p>Mit <code>nohup</code> stellte ich sicher, dass die Aufgabe auch durchgeführt wird, wenn ich mich abmelde. Mit <code>tail -f /home/nohup.dat</code> konnte ich die aktuelle Übertragung verfolgen, die einige Stunden dauerte (es waren 4,2 Terabyte an Daten).</p>
<p>Nachdem die Daten übertragen waren (und die Benutzer im System), führte ich den Befehl <code>php occ files:scan --all</code> aus. Dieser ließ die Dateien im Dateisystem ein und fügte sie dem eigentlichen Server hinzu.</p>
<p>Danach ging es darum, die Clients der Benutzer zu aktualisieren. Die Desktop-App von Owncloud (und Nextcloud) speichert die <a href="https://doc.owncloud.org/desktop/1.8/advancedusage.html#config-file">Konfiguration im lokalen Dateisystem</a> ab. Entsprechend wurde dort die neue Server-URL eingegeben und das Programm neu gestartet. Das Ganze über ein Powershell-Script, das in der Domain ausgerollt wurde. Der Benutzer musste nur noch das - ihm bekannte - Passwort einmal eingeben. Schon war der Umzug abgeschlossen.</p>