Anleitung: CrashPlan mit Docker auf QNAP NAS installieren
Wer sich nach einem Online-Backup-Service umschaut, kommt an CrashPlan kaum vorbei. Das amerikanische Unternhemen bietet eine Backup-Flatrate zu fairen Konditionen an. In dieser Anleitung installieren wir den CrashPlan-Client als Docker Container auf einem QNAP NAS*.
Überblick
Wer täglich oder wöchentlich viele Daten mit seinem Rechner und anderen Geräten generiert (egal ob Kamera, Text, Smartphone, etc.), hat spätestens in dem Moment, in dem es zu einem Datenverlust kommt, den Wunsch, die Backup-Strategie wäre verfolgt oder gar vorhanden gewesen. Jeder der einen schmerzhaften Datenverlust mitgemacht hat, weiß genau, was einem dann durch den Kopf geht.
Sicherungskopien sind in der digitalen Welt Pflicht. Eine 1:1-Kopie der Festplatte in geregelten Abständen auf eine externe HDD oder eine portable SSD kann ein Anfang sein. Dieses lokal allerdings sehr beschränkte Sicherungsverfahren schützt nicht vor größeren Unglücken, wie Bränden, Erdbeben (in Deutschland sicher eher unüblich) oder Überflutungen durch Flüsse oder Starkregen. Um sich hier abzusichern, benötigt es eine geografische Verteilung der zu sichernden Daten. Im privaten Umfeld lässt sich dies am besten und vor allem kosteneffizientesten mit Cloud-Diensten erledigen, die sich speziell auf die Datensicherung fokussiert haben. Im besten Falle stellt ein solcher Dienst nicht nur den Service zur Datensicherung bereit, sondern macht den Sicherungsprozess auch so einfach wie möglich.
In unserem Fall fiel die Wahl bereits im Jahr 2012 auf den Dienst CrashPlan des amerikanischen Anbieters Code42. Das Produktangebot von CrashPlan hat sich seit den ersten Tagen deutlich verändert und die Geschäftsführung hat sich im Laufe des letzten Jahres dazu entschieden, das Privatkundengeschäft nicht mehr explizit zu bedienen. Nichts desto trotzt sind die kleinen „Small Business Tarife“ immer noch sehr lukrativ für Privatpersonen. Der von uns verwendete Dienst „CrashPlan for Small Business“ kostet 10 US-$ im Monat pro gesichertem Gerät. Bandbreite und Speichervolumen sind unbegrenzt – und das ist tatsächlich so. Das von uns gesicherte Datenvolumen beläuft sich zum Zeitpunkt der Artikelerstellung auf circa 5,5 TB (also 5.500 GB). Andere Nutzer haben für dieselben Kosten weit über 30 TB bei CrashPlan gesichert.
Genug über den Dienst an sich. Wer sich hierhier verirrt hat, ist in den meisten Fällen wohl bereits Kunde und will CrashPlan auf seinem QNAP* NAS zum Laufen bringen (was ein NAS ist, habe ich in meinem Home Assistant Docker Guide beschrieben). Fangen wir also an.
Backupstrategie
Da der CrashPlan Dienst pro Gerät Kosten verursacht, ist es eine charmante Idee, alle Daten von mehreren Endgeräten (Desktop, Laptops, Smartphones*, Tablets, etc) auf dem NAS zu sichern. Diese Sicherung geht in der Regel schnell und fällt in die Kategorie „lokal“. Das NAS sichert dann im Hintergrund alle Daten über den CrashPlan Dienst in die CrashPlan Cloud. Wer sich über die Sicherheit seiner Daten Sorgen macht: CrashPlan verwendet eine lokale AES-Verschlüsselung mit einer individuell setzbaren Verschlüsselungsphrase. In de Cloud werden also nur die bereits auf dem NAS verschlüsselten Daten abgelegt (ganz im Gegensatz zu anderen Dienste, wie DropBox und Google Drive, wo die Daten unverschlüsselt gespeichert werden). Das NAS* fungiert in diesem Szenario also indirekt als „Sicherungskopiepuffer“.
Voraussetzungen
Um dieses Tutorial zu folgen sind eine Voraussetzungen – sowohl an Hardware und Software – zu erfüllen. Wir verwenden als Grundlage für diesen Artikel Folgendes:
- QNAP TS-453A NAS 8G*
- Upgrade des Arbeitsspeichers auf 16 GB*
- CrashPlan Small Business Abonnement
- QNAP NAS* hat aktuellste QTS Software und Container Station App installiert
- SSH-Zugriff (z.B. via Putty unter Windows auf das NAS besteht)
- Die zu sichernden Ordner sind auf dem NAS abgelegt und identifiziert
Die Einrichtung passiert zum Großteil über das QTS-Interface, einige Befehle werden jedoch der Einfachheit halber über die SSH-Konsle ausgeführt. Wir erklären dann Schritt für Schritt, was genau mit den Befehlen gemeint ist.
Docker Konfigurationsverzeichnis anlegen
Sollte dies eure erste Docker Installation auf einem QNAP NAS* sein, muss zu aller erste die „Container Station App“ aus dem QTS App Store geladen werden. Ist dies erfolgt, müssen wir noch ein Verzeichnis für die Konfigurationsdateien von Docker anlegen. Wie genau das Docker-Prinzip funktioniert, liest du im ersten Docker QNAP Tutorial. In Kürze: Betriebsdaten und Konfigurationsdateien werden getrennt gespeichert, sodass sich die Betriebsdaten bei Erscheinen einer neuen Containerversion einfach überschreiben lassen, ohne die Konfiguration des Containers (= CrashPlan) zu verlieren.
Wir legen uns dazu einen neuen Freigabeordner mit dem FileManager unter QTS an. Diesen nennen wir „Container„. Innerhalb des Ordners erstellen wir einen neuen Ordner mit dem Namen „CrashPlan“. Hier werden im weiteren Verlauf alle Konfigurationsdaten abgelegt.
Nachdem der Ordner angelegt ist und sich die Container Station App öffnen lässt, können wir fortfahren.
Ansicht der Container Station App mit verschiedenen aktiven Docker Containern.
Im Gegensatz zum obigen Bild ist unsere Container Station bei erstmaliger Einrichtung eines Docker Containers natürlich leer. Das wollen wir mit den nächsten Schritten ändern.
Docker Container beziehen
Die Anleitung basiert auf dem CrashPlan Small Business Docker Container von jlesage, welcher den CrashPlan Pro Client in eine eigenständig lauffähige Umgebung verpackt, auf die via Remote Desktop (VNC) zugegriffen werden kann.
Im ersten Schritt loggen wir uns via SSH als Admin-Nutzer in das QNAP NAS* ein:
MacBookPro:~ user$ ssh adminnutzer@NAS-IP-Adresse
Die entsprechenden Werte für IP und Nutzername sind natürlich durch die Parameter eures NAS-Servers zu ersetzen.
Im Anschluss installieren wir den Container mit einem einzigen Befehl, den wir anschließend in seine einzelnen Parameter zerlegen werden, damit jeder versteht, was genau hier passiert:
[~] # docker run -d --name=crashplan-pro -e TZ -e USER_ID=0 -p 5800:5800 -p 5900:5900 --net host --volume /share/CE_CACHEDEV1_DATA/Container/Crashplan:/config:rw --volume /share/CE_CACHEDEV1_DATA:/storage:ro \ jlesage/crashplan-pro:v2.3.7
BEVOR wir den Befehl ausführen, die entsprechenden Erklärungen, damit ihr den Befehl entsprechend an eure Situation anpassen könnt (dieses ist NOTWENDIG!).
docker run -d –name=crashplan-pro: Docker Container ausführen, im Detached-Mode (Konsole kann geschlossen werden und Container läuft weiter, der Name des Containers wird auf „crahsplan-pro“ gesetzt.)
-e TZ: Einstellung der Zeitzone für den Container
USER_ID=0: Ausführen des Zugriffs auf das NAS aus Container-Sicht mit Adminrechten. Dies muss nicht zwingend sein. Je nach Berechtigung eurer Ordner auf dem NAS reicht hier auf der Standardnutzer „1000“!
-p 5800:5800 -p 5900:5900: Der erste Port stellt das Web-Interface zur Konfiguration von CrashPlan bereit. Der zweite Port wird für die dafür verwendete VNC-Remote-Verbindung verwendet.
–net host: erlaubt den direkten Zugriff des Containers auf die Ethernet-Schnittstelle des NAS zur Kommunikation mit dem Internet.
–volume /share/CE_CACHEDEV1_DATA/Container/Crashplan:/config:rw: Pfade zum Konfigurationsverzeichnis, welches wir weiter oben angelegt haben. rw steht für Lese- und Schreibzugriff.
–volume /share/CE_CACHEDEV1_DATA:/storage:ro: Pfad zu dem Verzeichnis, welches CrashPlan sichern soll. In diesem Fall den gesamten RAID-Verbund des NAS. Die speziellen Ordner für die Sicherung wählt ihr weiterhin in CrashPlan aus, hier geht es nur um den allgemeinen Zugriff des Clients auf diese Daten. r steht für Lesezugriff.
jlesage/crashplan-pro:v2.3.7: gibt den zu installierenden Container an. v2.3.7 zeigt die zu installierende Version an. Ich habe hier beschrieben, wieso ich aus Update-Gründe immer mit expliziten Versionen arbeiten und nicht „:latest“ verwende.
Wenn ihr alle Parameter im obigen Befehlsaufruf auf eure Bedürfnisse angepasst habt, könnt ihr mit „Enter“ ausführen. Das NAS beginnt dann die einzelnen Pakete herunterzuladen, zu prüfen und zu extrahieren. Dieses wird einige Minuten dauern.
Die folgende Meldung, welche am Anfang erscheint, ist ganz normal.
Unable to find image '<em>jlesage/crashplan-pro:v2.3.7</em>' locally 2.3.7: Pulling from jlesage/crashplan-pro</em>
Nachdem alles erledigt ist, bestätigt das NAS in der Konsole mit einer Ausgabe ähnlich:
Digest: sha256:82fed5f17072d0ab698rb65f9d114ce0d6b64cw59c14a8e6e44ef7bd5ae3b85c Status: Downloaded newer image for jlesage/crashplan-pro:v2.3.7 0a47a540441c3f5cde691d009766645b9c663e45edeaqa7b13e34d3f455760
Jetzt ist bereits der Container im Hintergrund gestartet und ihr könnt diesen auch in der QNAP* Container Station App einsehen und steuern. Fertig!
Auf CrashPlan Client zugreifen
Im letzten Schritt müsst ihr nun via Webbrowser auf den CrashPlan Client zugreifen, um alle notwendigen Einstellung zu tätigen, damit das Backup entweder gestartet oder fortgesetzt werden kann. Dazu öffnet ihr in eurem Browser einfach die Adresse: http://NAS-IP-Adresse:5800. Es erscheint das QNAP* Menü und ihr könnt mit der CrashPlan-Konfiguraton beginnen oder euch in den bereits eingerichtete Arbeitsplatz einloggen.
Ein Wort zur Sicherheit
Die VNC-Remoteverbindung ist nicht verschlüsselt und enthält auch keine Passwortabfrage. Jeder in eurem lokalen Netzwerk kann also über diese Adresse auf den CrashPlan Client zugreifen. Es empfiehlt sich also dringen in den CrashPlan Einstellungen, die Option „Dieser Arbeitsplatz benötigt ein Kennwort für den Zugriff“ zu aktivieren. Außerdem solltet ihr in jedem Fall darauf achten, dass der von euch gewählte Webinterface und VNC-Port (also im Standard 5800 und 5900) nur lokal und nicht aus dem Internet erreichbar ist!
CrashPlan Docker Container updaten
Da CrashPlan von Zeit zu Zeit eine neue Version veröffentlicht, ist die Integration über Docker nahezu perfekt geeignet. So lässt sich sehr schnell zwischen Versionen hin und her wechseln, um Dinge zu testen. Im Folgenden daher noch der schnelle Weg zum Update des Containers auf die neuste Version.
Schritt 1: Alte Instanz des Containers löschen.
Dazu in die Container Station App wechseln und zunächst den Container stoppen. Danach mit einem Klick auf das kleine X in der rechten Spalte den Container löschen – keine Angst eure Konfiguration liegt ja außerhalb des Containers und ist davon nicht betroffen. Löschdialog bejahen. Danach dauert es einen Moment und der Container verschwindet aus der Liste.
Schritt 2: Neuen Container per SSH installieren.
An dieser Stelle möchte ich kurz auf einen weiter oben gegeben Hinweis eingehen. Meiner Erfahrung nach, verhält sich die Container Station nicht besonders intelligent, wenn Container mit der Versionsoption „latest“ hinzugefügt werden. Das NAS* findet dann bei einem erneuten Hinzufügen immer einen Container „latest“ von letzten Mal, anstatt den aktuellesten Container aus dem Docker Hub zu beziehen. Um dies zu verhindern und sich die Möglichkeit offen zu halten, schnell zwischen Container-Versionen zu wechseln, empfehle ich die manuelle Angabe der gewünschten Versionsnummer (siehe oben).
Ausgehend davon, dass wir zuvor eine manuelle Versionsangabe bei der Initialinstallation angegeben hatten (z.B. v.2.3.7), die dann in Schritt 1 des Updates entfernt wurde, installiert folgender Befehl die neuere Version v2.3.8 von Home Assistant.
docker run -d --name=crashplan-pro -e TZ -e USER_ID=0 -p 5800:5800 -p 5900:5900 --net host --volume /share/CE_CACHEDEV1_DATA/Container/Crashplan:/config:rw --volume /share/CE_CACHEDEV1_DATA:/storage:ro \ jlesage/crashplan-pro:v2.3.8
Es wird erneut der Container heruntergeladen und entpackt. Danach startet CrashPlan von alleine und alles sollte laufen – jetzt mit der aktuellsten Version des Clients.
Downgrade des CrashPlan Docker Containers
Der aufmerksame Leser wird es sich bereit denken können.
Schritt 1: Container in der Container Station stoppen und löschen
Schritt 2: Container mit alter Versionsnummer per SSH hinzufügen. Das passiert nun innerhalb weniger Sekunden, weil der alte Container ja immer noch lokal vorhanden ist. Ihr habt in Schritt 1 nur die konkrete Instanz gelöscht, nicht jedoch die Container-Daten. Wer das explizit tun möchte, kann dieses über die Container Station erledigen (Menüpunkt Images).
Schlusswort
CrashPlan auf einem NAS zu installieren, hat nicht nur Vorteile in einer zentralisierten Verwaltung von Daten der verschiedensten Endgeräte, auch die Kosten für CrashPlan Abonnement lassen sich zu sehr schön minimieren oder minimal halten. Trotzdem kommen mehrere Geräte in den Genuss eines zusätzlichen Online-Backup-Dienstes.
Erwähnt werden sollte noch, was sehr große Datenmengen und eine hohe Anzahl an Dateien, viel Arbeitsspeicher auf dem NAS kosten. Ich empfehle mindestens einen modernen Intel Dual Core Prozessor und wenigstens 8 GB RAM*. Ich selbst benötigt für den erwähnten 5,5 TB mit vielen kleinen Dateien (Fotos) 16 GB in meinem NAS*. Davon genehmigt sich CrashPlan gerne 10 GB und mehr.
Fragen, Kommentare oder Anmerkungen? Ich freue mich auf deine Meinung! 🙂
Hallo,
gibt es auch eine Möglichkeit „versteckte“ Ordner mit zu sichern?! ( TimeMachine ) weil die kann ich leider nicht sehen in Crashplan 🙁
Hi,
na klar kein Problem: Gehe aus dem CrashPlan Client auf „Dateien verwalten“. Es erscheint der Dateibaum. Oben gibt es den Knopf mit den drei Punkten. Hier „verstecke Dateien“ anzeigen aktivieren. So siehst du auch die versteckten Ordner, die mit eine Punkt vorangestellt benannt sind.
Viele Grüße,
Nils
Hallo,
wenn ich deinen Befehl auswähle erhalte ich folgende Meldung:
container-station/docker invalid reference format
Kannst du da helfen?!
Danke
Hi,
aus der Ferne ohne genaue Log-Files schwer zu beurteilen. Hast du zufällig Leerzeichen in deinen Pfadangaben zum Config-Verzeichnis? Falls ja, bennen die Ordner mal so um, dass sie keine Leerzeichen haben. Habe den Befehl eben noch mal probiert, funktioniert bei mir nach wie vor.
Grüße,
Nils
Hallo,
danke für den tollen Guide. Ich habe alles prima zum Laufen bekommen und bislang ca. 4,5TB Daten aus mehreren defininierten NAS-Quellverzeichnissen gesichert.
Nun besteht bei mir das Problem, dass der Container ein paar Tage lang nicht mehr mit Cashplan kommunizierte (hatte eine Mail bekommen). Ein Blick in die Container-GUI zeigte an, dass angeblich für das Gerät keine Sicherung besteht (bei Cashplan besteht sie aber).
Ein Restart des Containers brachte keine Veränderung.
Wie bekomme ich eine (Re-) Synchronisation wieder hin?