osob.de Unicorn Logo
Blogpost overview
Nextcloud diskret.cloud

Mit rclone Umzug von Nextcloud auf Hetzner Storage Share so halb schaffen | 01.08.2023

Im privaten Umfeld habe ich eine kleine Nextcloud-Instanz betrieben, die knappe 1,5 TB Speicher und 10 Nutzer:innen vorzeigen konnte. Das Problem in der Konfiguration bestand darin, dass die Backup-Lösung mit zunehmendem Speicherverbrauch immer größer wurde. Eines Tages war der Punkt erreicht, an dem ich mit Borg und anderen Backup-Tools lokal keine Backups mehr packen konnte, da die Festplatte einfach voll war. In der Konsequenz musste also ein größerer Speicher her.

Größere VPS/VM waren aber auch deutlich teurer. Und das Problem war ja nicht eine schwache CPU oder zu wenig RAM. Also war ein VPS mit mehr Speicher keine wirkliche Alternative. Ein lokaler Backup-Betrieb war für mich auch keine Option. Ich habe nach einigem Suchen mich dafür entschieden, einen anderen Ansatz zu wählen: Hetzner Storage Share.

You like what you find here? A donation helps to keep this project running.

Vorteile von Storage Share

Der größte Vorteil beim Wechsel zu Hetzner besteht darin, dass die Backups kein Problem mehr sind. Es werden täglich Backups angefertigt, die ich entsprechend einspielen kann. Zugleich bietet Nextcloud eine Versionierung, sodass ich mit dem Restrisiko für meine Nutzer:innen leben kann.

Daraus resultiert der zweite große Vorteil: die Kosten. Ich zahle nun nur noch die Storage Share-Box - mehr nicht. Diese Box ist in etwa so teuer wie die bisherige Architektur, hat aber fast 500 GB Speicher mehr (da ja der Backup-Server nicht mehr betrieben werden muss).

Einrichtung

Die Einrichtung ist denkbar einfach: Auf die Website gehen, Produkt bestellen und einrichten. Dinge wie eine eigene Domain (hier Subdomain genannt) oder das Design können nach dem erfolgreichen Set-up (5 Minuten) bequem online erfolgen. Da ich nur wenige Nutzer:innen habe, kann ich diese bequem per Hand anlegen. Gefühlt war die Box nach 15 Minuten bereits für die Nutzer:innen bereit.

Daten aus Nextcloud in Nextcloud

Nun blieb nur noch der Datentransfer. Hier hatte ich drei Möglichkeiten. Erstens konnte ich es den Nutzer:innen überlassen, notwendige Daten in die neue Cloud umzuziehen und hochzuladen. Theoretisch kein Problem, muss doch dafür nur die lokale Konfiguration des Nextcloud-Clients angepasst werden. Der Upload würde aber einige Tage dauern, weil die meisten Nutzer:innen nicht dauerhaft online sind. Auch würde es bei einigen Nutzer:innen die Leitung gut auslasten. Also keine gute Idee.

Die zweite Möglichkeit war es, einfach keine Daten zu übertragen. Die Nutzer:innen sollen einfach bei null beginnen, die Daten der alten Cloud-Instanz waren ja noch da und einige Monate zur Sicherheit redundant in der Cloud. Auch eine doofe Idee.

Also blieb nur die dritte Möglichkeit: Ich übertrage die Daten der Nutzer:innen automatisch. Aber wie?

Hetzner Storage Share bietet keine Konnektivität

Wenn Hetzner SSH freischalten würde, wäre mit rsync alles schnell erledigt. Auch (S!)FTP hätte ausgereicht. Jedoch Fehlanzeige. Die Storage Box ist nur über das Webinterface oder WebDAV erreichbar. Ein schneller und einfacher Transfer fiel damit flach.

Für Cloud-Instanzen, die bei null beginnen, ist das kein Problem. Wenn aber einige 100 GB Daten mitgenommen werden sollen, ist es ärgerlich.

Nextcloud-zu-Nextcloud über WebDAV

Es blieb also nur die Möglichkeit, mit WebDAV die Daten irgendwie auf die neue Instanz zu bekommen. Nach einiger Recherche bin ich dann auf bitblokes auf den Artikel rclone – rsync für die Cloud – Backups in Nextcloud und andere Cloud-Anbieter gestoßen. Der Ansatz klingt vielversprechend.

Ich habe also zuerst auf dem Ubuntu Server (Ubuntu 22.04 LTS) das rclone-Paket installiert, ein entferntes (neuen) und lokales (alten) Repository angelegt und das Ganze mit dem Copy-Befehl angestoßen.

Die gute Nachricht: es funktioniert. Die schlechte Nachricht: es dauert. Und noch eine gute Nachricht ist, dass die Dateien den Timestamp behalten.

Befehle

sudo apt install rclone
sudo rclone config
sudo rclone copy lokal:/var/nc-data/user1/files user1-remote:/

Automatisierung

Ich habe den Clone-Prozess für alle Nutzer:innen einmal angestoßen und durchlaufen lassen. Danach habe ich täglich den rsync-Befehl für jede Nutzer:in genutzt, um Veränderungen mitzunehmen. Allmählich stelle ich nun die Nutzer:innen auf die neue Cloud um. Es funktioniert soweit relativ gut, wenn da nicht ein großes Problem bleibt: freigegebene Ordner.

Keine Lösung für Ordnerfreigaben

Tatsächlich habe ich bisher noch keine Möglichkeit gefunden, die Ordner-Freigaben automatisch zu überführen. Ich habe das Glück, dass sich dies auf nur wenige Freigaben beschränkt. Jedoch hätte eine Goldrandlösung anders ausgesehen.

User Accounts

Ein Wort noch zum Thema der Nutzer:innen Accounts. Hier habe ich die User Migration von Nextcloud genutzt. Hierbei können die Accounts recht problemlos übertragen werden.

Warum kein Export mit User Migration?

Die Nextcloud App User Migration ermöglicht, Nutzer:innen inkl. aller Daten zu exportieren. Ich habe dies für die User Accounts gemacht, bin aber beim Export von besonders großen Profilen an die Grenzen gestoßen. Weiterhin ist zu beachten, dass die exportierten Daten auch wieder importiert werden müssen. D. h. im schlimmsten Fall mehrere hundert GB downloaden und dann wieder uploaden. Ein Prozess, der im direkten Vergleich zum Export mit Rclone fragil läuft. Für kleine Profile jedoch absolut hilfreich.

User Migration App benutzen

Wie fast immer bei Nextcloud, gibt es die Möglichkeit, den Export über das Webinterface zu starten. Dafür wird die App (durch einen Admin-Account) aktiviert und steht dann unter den "Persönlichen Einstellungen" als "Datenmigration" zur Verfügung. Da kann der Prozess gestartet werden und nach einiger Wartezeit befindet sich der Export im Datenverzeichnis des Users.

Die zweite Möglichkeit, besonders wenn die Profile größer sind, ist der Export über die occ-Konsole. Dazu einfach den Befehl occ user:export username /data/export/folder eingeben. Das erste Argument ("username") ist der exportierte Account. Das Zweite ist das Ziel. Es kann, muss aber nicht, im Ordner des Users liegen.