Seit Version 0.90 gibt es in paperless-ngx keine eingebaute Verschlüsselungsfunktion mehr. Das wurde damit begründet, dass diese Verschlüsselung zwar davor schützt, dass z. B. durch File-Carving wiederherzustellende Datenteile geschützt würden, jedoch die Verschlüsselung nicht vor Diebstahl des Mediums schütze, da die Verschlüsselungsschlüssel weiterhin lesbar vorlägen.
Schritt 1: Abhängigkeiten installieren
sudo apt-get install -y cryptsetup
Schritt 2: Containerdatei erstellen
Hier 20 GB in 40 Schritten damit es auf kleineren Servern mit wenig RAM klappt:
dd if=/dev/zero of=/encrypted-container.img bs=512M count=40
Schritt 3: Containerdatei für LUKS formatieren
sudo cryptsetup luksFormat /encrypted-container.img
Schritt 4: Container öffnen
sudo cryptsetup luksOpen /encrypted-container.img encrypted_dev
Schritt 5: Dateisystem auf Container erstellen
sudo mkfs.ext4 /dev/mapper/encrypted_dev
Schritt 6: Temporäres Verzeichnis anlegen und Dateisystem mounten
mkdir /home2
mount /dev/mapper/encrypted_dev /home2
Schritt 7: Alle Dienste, welche auf /home zugreifen stoppen und prüfen
docker compose -f /home/user/paperless-ngx/docker-compose.yml -f /home/user/paperless-ngx/docker-compose.override.yml down
lsof +D /home
Schritt 8: Dateien aus /home nach /home2 kopieren
mv /home/* /home2/
Schritt 9: /home unmounten, /home2 unmounten
umount /home
umount /home2
Schritt 10: Verschlüsseltes Volume auf /home mounten
mount /dev/mapper/encrypted_dev /home
Schritt 11: Keyfile zum automatischen Unlock generieren
dd if=/dev/urandom of=/root/secure.key bs=4096 count=1
chmod 600 /root/secure.key
Schritt 12: Keyfile dem LUKS-Container hinzufügen
cryptsetup luksAddKey /encrypted-container.img /root/secure.key
Schritt 13: Änderungen persistieren
echo "/dev/disk/by-uuid/$(blkid -s UUID -o value /dev/mapper/encrypted_dev) /home ext4 defaults 0 2" >>/etc/fstab
echo "encrypted_dev /encrypted-container.img /root/secure.key luks,loop" >>/etc/crypttab
Schritt 14: Docker-Compose Stack starten
docker compose -f /home/user/paperless-ngx/docker-compose.yml -f /home/user/paperless-ngx/docker-compose.override.yml up -d
Schritt 15: Neustart testen
reboot
Anschließend werden die mit unserem paperless-ngx im Zusammenhang stehenden Daten verschlüsselt gespeichert. Durchaus gibt es noch weitere Wege dies zu bewerkstelligen, beispielsweise die Vollverschlüsselung, welche jedoch weit komplizierter in der Einrichtung ist.