Raspberry Pi mit externer SSD als Boot-Medium und verschlüsselte Datenpartition (für Docker und NextCloud AIO)

Ich brauche mal Eure Hilfe. Ich möchte bei mir zuhause eine NextCloud AIO Installation basierend auf einem Raspberry Pi 4 mit einer externen Samsung T7 USB-SSD betreiben.

Hierbei würde ich gerne

  • die vollständigen Nutzdaten der Nextcloud (Dateien, Datenbank, …) auf der SSD verschlüsselt ablegen, damit bei einem ggf. notwendigen Garantie-Austausch der SSD meine Daten für Samsung unerreichbar durch die Verschlüsselung geschützt ist (habe gerade eine defekt SAMSUNG 870 EVO die in den Garantieaustausch geht und bin sehr froh, dass ich am Mac alle meine Platten mit Verschlüsselung betreibe).
  • die Samung SSD ebenfalls gerne als Bootlaufwerk für die gesamte Linux-Installation des Raspberry Pi nutzen, damit ich Problemen mit der Langzeit-Nutzung einer MicroSD Karte aus dem Weg gehe.

In „den guten alten Tagen“, als ich noch Linux-Systeme aus Boot-Medien manuell partitioniert und aufgesetzt habe, hätte ich vermutlich den Datenträger in eine unverschlüsselte Boot-Partition / und eine verschlüsselte Datenpartition aufgeteilt in der ich dann alle Datenbereich eingebunden hätte.

Heutzutage weitet sich sich jedoch eine RaspianOS Lite Installation automatisch auf die gesamten SSD aus und wo Docker die Daten einer Nextcloud AIO Installation ablegt ist für mich derzeit auch noch unbekannt.

  • Könnt Ihr mir eine Vorgehensweise empfehlen, wie ich am Besten mein oben aufgeführtes Szenario erreichen kann?
  • Hat vielleicht sogar jemand einen Tipp, wie man ein verschlüsseltes Laufwerk automatisch entschlüsseln kann, z. B. indem man den Schlüssel von einem anderen Laufwerk oder Share abfragt? (Das wäre ausreichend für das Szenario des Austausch einer defekten SSD und würde es erlauben eine Reboot-Festigkeit zu realiseren.)

Ich danke Euch für gute Hinweis. Ggf. auch ob ich anstatt Raspbian OS Lite ggf. eine andere Raspberry Pi Distribution nutzten sollte um mein Ziel zu erreichen.

P. S. Ein Ansatz über den ich gerade nachdenke wäre ggf. doch eine MicroSD-Karte weiterhin als Boot-Laufwerk und für die nicht-docker-spezifische Softwareinstallation zu nutzen und die SSD als verschlüsseltes Laufwerk dann für alle regelmäßig veränderlichen Dateien wie die Docker-Daten sowie /var/log, /home und ggf. weitere häufig geschriebe Daten zu verwenden.

P.P.S. Ggf. habe in in dem Artikel https://c.pgdm.ch/notes/rpi-disk-encryption/ eine Lösung für das von mir Gewünschte gefunden. Wenn ich es richtig verstehe, dann kann man eine bestehende unverschlüsselte Partition in eine verschlüsselte umwandeln. Auch ist in dem Artikel beschrieben, wie man den Schlüssel aus einer anderen Disk (z. B. einer MicroSD-Karte) automatisch auslesen kann. Damit wäre der Raspberry tatsächlich mit einem automatischen Entschlüsselung beim Boot versehen und die USB-SSD wäre verschlüsselt. Das werde ich mal testen.

Der Großteil der Daten liegt im Datadir, das man festlegen kann: https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-change-the-default-location-of-nextclouds-datadir . Alles weitere wird in Docker Volumes gespeichert, die unbedingt bei Backups nicht vergessen werden sollten. Deren Standard-Speicherort kannst du Googlen und ggf global ändern.

Am Besten einen billigen VPS mieten, oder kostenlose Resourcen, wie Oracles always free, verwenden und darauf einen tang-Server einrichten. Mit Clevis erstellt du einen neuen LUKS keyslot der die IP des Tang-Servers verwendet. Im Falle eines Diebstahls löschst du die Schlüsseldaten auf dem Tang-Server. Zur Verbindung am Besten Wireguard verwenden.

Für die Benutzung von Tang/Clevis siehe:
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/security_hardening/configuring-automated-unlocking-of-encrypted-volumes-by-using-policy-based-decryption

Naja, ein Dieb nimmt den Schlüssel dabei auch mit, bei einem Share nicht zwingend, oder nur wenn er all Deine IT mitnimmt.
Alternative zu Share: Clevis & Tang?

So ein Raspi hat ja zwei USB-Anschlusspaare. Bei mir ist die Installations (von OMV) auf einem USB-Stick und die Daten liegen verschlüsselt auf der an USB3 angeschlossenen Platte.
Von automatischer Entschlüsselung halte ich nichts. So ein Server sollte eigentlich 24 Stunde / 7 Tage die Woche laufen. So ein Raspi hat ja auch eine entsprechend niedrige Stromaufnahme, so etwas sollte man sich schon leisten. Dann gibt es die Entschlüsselung nur selten, eigentlich nur bei einem Kernelwechsel, vielleicht alle 2 Monate.