Verschlüsseltes TrueNAS Backup auf pCloud

Einleitung

TrueNAS hat praktischerweise einen rclone Client eingebaut und kann dadurch relativ einfach über die TrueNAS Verwaltungsoberfläche eine Verbindung mit vielen Cloud Providern herstellen. Wichtig ist hierbei, das die Datei- bzw. Verzeichnisnamen samt Inhalt in verschlüsselter Form in der Cloud abgelegt werden. Niemand weiß, wer auf einem Cloud Server Zugriff auf die Daten hat. Natürlich ließe sich das auch mit einem verschlüsselten Archiv oder Container erreichen, aber damit fällt eine inkrementelle Übertragung leider weg und ist hier keine Option.

pCloud ist hier nur exemplarisch aufgeführt, die Anbindung anderer Cloud Dienste (OneDrive, SharePoint, Dropbox, Google Drive, etc.) ist ebenfalls möglich. Eine gute Übersicht der verfügbaren Dienste ist hier zu finden. Das Lifetime Angebot mit 2TB bei pCloud fand ich fair.

Insbesondere mit TrueNAS ist das wirklich zügig erstellt und es gibt keinen Grund kein Backup anzulegen. Kein Backup, kein Mitleid.

Die einfache 3-2-1 Backup Regel besagt, das jede Datei drei mal existiert, auf mindesten zwei unterschiedlichen Medien gespeichert und einmal an einem anderen Ort aufbewahrt wird. Ein Cloud Backup stellt in einem 3-2-1 Konzept die letzte Möglichkeit dar.

Ziele

Ziel dieser Anleitung ist das Backup eigener Dateien zu pCloud, wobei die Dateien auf dem Ziel verschlüsselt abgelegt werden.

Nicht unerheblich ist ein Desaster Recovery: Die Daten müssen auch auf anderem Wege wiederhergestellt werden können, sollte der eigene TrueNAS Server nicht mehr zur Verfügung stehen. Festplatten gehen kaputt, Keller werden überflutet, Hardware wird gestohlen oder Menschen machen Fehler. Notfalls muss ein Laptop mit USB Festplatte reichen um an die verschlüsselten Daten wieder zu kommen.

Letzte Aktualisierung:

  • 24.09.2023: Video für Wiederherstellung hinzugefügt und Details angepasst
  • 08.01.2023: Kurzfassung hinzugefügt
  • 07.01.2023: Initiales Dokument

Vorbedingungen

  • TrueNAS
  • Zugangsdaten zu pCloud
  • Online einen Ordner je Backupquelle als Ziel angelegt, z.B. /HOSTNAME/ORDNERNAME

Kurzfassung

Backup mit TrueNAS

  • Unter System - Cloud Credentials wird ein Zugang für pCloud hinterlegt.

  • Hostname: eapi.pcloud.com

  • Mit der Option LOGIN TO PROVIDER erfolgt die Anmeldung bei pCloud, der Rest wird dann automatisch ausgefüllt

  • Unter Tasks - Cloud Sync Tasks wird nun eine Backup Aufgabe angelegt

  • Remote Credential von oben wählen, das Ziel und Quelle definieren

  • PUSH als Richtung auswählen und einen Zeitplan bestimmen (aber deaktiviert lassen)

  • Mt Remote und Filename Encryption wird das Ziel verschlüsselt

  • Mit DRY RUN wird überprüft ob alles mit rechten Dingen vor sich

  • Aufgabe einmal manuell durchlaufen (das dauert mitunter Stunden) lassen, denn den Zeitplan aktivieren.

Wiederherstellung mit rclone

  • pCloud als Provider bei rclone hinterlegen

  • rclone installieren / herunterladen

  • Konfiguraton mit ./rclone config starten und neuen Remote anlegen (Name: pcloud)

  • pCloud als Provider auswählen und die Anmeldung bei pCloud durchführen, der Rest wird dann automatisch ausgefüllt

  • Damit ist aber nur der Klartext-Zugriff möglich

  • Test mit ./rclone lsd pcloud:

  • Verschlüsselten Ordner in pCloud als Provider bei rclone hinterlegen

  • Konfiguraton mit ./rclone config erneut starten und neuen Remote anlegen (Name: pcloud_gemeinsam)

  • Bei Remote den obigen Remote angeben zusammen mit den Ort der verschlüsselten Daten (pcloud:HOSTNAME/ORDNERNAME) angeben

  • Password und salt hinterlegen

  • Damit ist aber nur der verschlüsselte Zugriff möglich

  • Test mit ./rclone lsd pcloud_gemeinsam:

Langfassung

Anbindung von TrueNAS an pCloud

Unter System - Cloud Credentials wird mit ADD ein Zugang hinterlegt.

  • Name: pCloud
  • Provider: PCLOUD (aus der Liste auswählen)
  • Access Token: leer lassen
  • Hostname: eapi.pcloud.com

truenas_credentials

Dann wird mit der Option LOGIN TO PROVIDER automatisch ein Browserfenster geöffnet, in dem die Anmeldung bei pCloud erfolgt.

pcloud_connect

Nach der Anmeldung muss der Zugriff auf pCloud mit ALLOW erlaubt und das Browserfenster kann wieder geschlossen werden.
Danach sind die drei Felder ACCESS TOKEN, OAUTH CLIENT ID und OAUTH CLIENT SECRET automatisch ausgefüllt.
Mit VERIFY CREDENTIALS den Login nochmal überprüfen und dann mit SUBMIT speichern.

Dateien von TrueNAS auf pCloud automatisch sichern

Unter Tasks - Cloud Sync Tasks wird nun mit ADD eine neue Backup Aufgabe angelegt. Das Ziel ist nicht nur eine einfache Kopie unserer Daten, sondern ein vollständiger Abgleich. Dieser Abgleich sorgt dafür, das alle Dateien nicht nur kopiert (COPY) sondern lokal gelöschte Dateien ebenfalls am Ziel entfernt werden (SYNC).

  • Description: pCloud NAME (Name für die Aufgabe)
  • Remote Credential: pCloud (PCLOUD) (Den Namen auswählen der oben vergeben wurde)
  • Direction: PUSH
  • Transfer Mode: SYNC

Die Direction definiert die Richtung. Hier soll ja VON TrueNAS NACH pCloud syncronisiert werden.
Wählt hier auf KEINEN Fall PULL aus, sonst werden eure lokalen Dateien beim ersten mal direkt gelöscht, denn bei pCloud ist ja noch nichts drin!

Einen lokalen Ordner als Backup-Quelle und entfernten Ordner als Backup-Ziel auswählen.

  • Directory/Files (Links): /PFAD/ORDNERNAME (Lokaler Pfad als Quelle)
  • Folder (Rechts): /HOSTNAME/ORDNERNAME (entfernter Pfad als Ziel)
  • Schedule: Definiert einen Zeitplan und darunter ob die Backup-Aufgabe aktiv sein soll. Tipp: Erst mal deaktiviert lassen.

Folgende Optionen aktivieren die Verschlüsselung der Dateien und der Datei- und Ordnernamen.

  • Remote Encryption: YES
  • Filename Encryption: YES

Jede gute Verschlüsselung funktioniert natürlich nur mit einem ordentlichen Paar Passwörtern.

  • Encryption Password: XXXXXXXX
  • Encryption Salt: YYYYYYYY

Bitte solche Passwörtern nicht ausdenken; besser generieren und GUT abspeichern!

Schamlose Eigenwerbung: In VaultWarden vielleicht eintragen?

Damit sind alle relevanten Einstellungen vorgenommen.
Mit DRY RUN wird überprüft ob alles mit rechten Dingen vor sich geht. Wenn ja, mit SUBMIT speichern.

In der Übersicht wird nun mit RUN NOW die erstellte Aufgabe ausgeführt. Ist die einmal erfolgreich durchgelaufen (das dauert mitunter Stunden), kann der Zeitplan beruhigt aktiviert werden und dann selber laufen. Bei Fehlern schickt/generiert TrueNAS einen Alarm.

truenas_cloudtasks

Zur Eigendokumentation empfehle ich euch eine Tabelle anzulegen:

| Description        | Source              | Destination                  | Schedule    |
|--------------------|---------------------|------------------------------|-------------|
| pCloud gemeinsam   | /PFAD/gemeinsam.    | /HOSTNAME/gemeinsam          | mo-so 6:10  |
| pCloud home        | /PFAD/home          | /HOSTNAME/home               | mo-so 6:20  |

Damit ist das automatische Backup fertig eingerichtet und läuft ganz alleine weiter.

Anmerkung: Auch wenn dieses Backup automatisiert ist und sich bei Fehlern meldet, darf es nicht vergessen werden. Mindestens einmal im Jahr sollte eine manuelle Rücksicherung überprüft werden, vor allem nach grösseren Updates des TrueNAS Systems. Better safe than sorry!

Dateien von pCloud auf TrueNAS manuell wiederherstellen

Dateien wurden aus versehen gelöscht und der nächste Sync wurde noch nicht durchgeführt?

Dann ist es sehr einfach die in der Cloud gespeicherten Daten wiederherzustellen: Um nicht den langen Weg der obigen Konfiguration gehen zu müssen, hat TrueNAS eine Abkürzung eingebaut, mit der eine Backup-Aufgabe mal eben "umgedreht" werden kann. Dazu gibt es in der Übersicht der Backup-Aufgaben unter jedem Eintrag den Punkt RESTORE.

truenas_restore

Klickt man diesen an, kommt ein reduzierter Dialog zum Vorschein, in dem nur noch ein Name und ein Zielpfad für die Rücksicherung angegeben wird.

truenas_restore

Ist alles eingetragen, wird der Dialog mit "RESTORE" geschlossen und eine rein manuelle Aufgabe erstellt (Es wird noch nichts kopiert!). Alle anderen Einstellungen werden aus der Ursprungsaufgabe übernommen.
Ein DRY RUN simuliert die Aufgabe und erst ein RUN NOW legt dann wirklich los.

Dateien von pCloud auf einen anderen Rechner manuell wiederherstellen

rclone als Werkzeug ist auf den meisten Plattformen verfügbar (Windows, Mac, Linux, FreeBSD, etc.) und soweit verbreitet, das es durchaus als zukunftssicher gelten darf. Bei der Nutzung haben wir die Wahl zwischen einer konsolen- oder browsergestützten Konfiguration. Achtet unter Windows oder Mac darauf, das es in dem Ordner ausgeführt wird, in dem das Archiv entpackt wurde (z.B. C:\User\BENUTZERNAME\Downloads\rclone-v1.61.1-win-amd64 oder /Users/BENUTZERNAME/Downloads/rclone-v1.61.1-osx-amd64)

1. pCloud als Provider hinzufügen

Als erstes wird mit ./rclone config ein Zugang hinterlegt:

n) New remote
name> pcloud
Storage> pcloud
client_id> leer
client_secret> leer
Edit advanced config? n
Use web browser to automatically authenticate rclone with remote? y

Damit automatisch ein Browserfenster geöffnet, in dem die Anmeldung bei pCloud erfolgt.
Nach der Anmeldung muss der Zugriff auf pCloud mit "Allow" erlaubt und das Browserfenster wieder geschlossen werden.
Damit wird der "Access Token" ermittelt und angezeigt.

pcloud_connect

  - type: pcloud
  - hostname: eapi.pcloud.com
  - token: {"access_token":"XXXXXXXXXXXXXXXX","token_type":"bearer","expiry":"0001-01-01T00:00:00Z"}
Keep this "pcloud" remote? y
q) Quit config

2. Verschlüsselte Ordner hinzufügen

Die Logik ist: Anbindung schaffen (pcloud) und darauf die Verschlüsselung (pcloud_gemeinsam) eines Ordners setzen.

  • pcloud = der Provider der im ersten Schritte angelegt wurde
  • HOSTNAME/gemeinsam = ein Ordner der bereits ein Backup enthält.

Also wieder die Konfiguraton mit ./rclone config starten:

n) New remote
name> pcloud_gemeinsam
Storage> crypt
remote> pcloud:HOSTNAME/gemeinsam
filename_encryption> 1
directory_name_encryption> 1
Password or pass phrase for encryption: y
Enter the password: XXXXXXXXXXX
Password or pass phrase for salt: y
Enter the password: YYYYYYYYYYY
Edit advanced config? n
Keep this "pcloud_gemeinsam" remote? y
q) Quit config

Die Nutzung der Webkonfiguration ist ebenfalls möglich.
Wer schnuppern möchte, kann die Webseite hiermit lokal aufrufen: ./rclone rcd --rc-web-gui --rc-user gui --rc-pass 123
Die Vorgehensweise ist identisch zu der unten aufgeführten, nur halt grafisch aufbereitet. Ein Schnelldurchlauf:

rclone_pcloud

Befehle

  • Dateien auflisten: (unverschlüsselt): ./rclone lsd pcloud:
  • Dateien kopieren (unverschlüsselt): ./rclone copy QUELLVERZEICHNIS pcloud:ZIELVERZEICHNIS
  • Dateien auflisten in "pcloud_gemeinsam" (verschlüsselt): ./rclone lsd pcloud_gemeinsam:
  • Dateien runterladen von "pcloud_gemeinsam" (verschlüsselt): ./rclone copy pcloud_gemeinsam: ZIELVERZEICHNIS

Hier gibt es eine Auflistung aller Befehle.

Voilá