Manchmal braucht man eine günstige Storage-Lösung – dafür eignet sich z. B. die Hetzner Storage Box. Unter Proxmox empfiehlt es sich, die Daten clientseitig zu verschlüsseln. In diesem Leitfaden zeige ich dir, wie du die Hetzner Storage Box auf dem Proxmox-Host einbindest, die Daten mit gocryptfs verschlüsselt ablegst und den Klartext-Pfad anschließend per VirtioFS an eine oder mehrere VMs durchreichst.

Das lässt sich selbstverständlich auch auf andere Szenarien anwenden, z. B. auf ein gemountetes WebDAV.

Zunächst solltest du auf deinem PVE-Host eine Credentials-Datei erstellen, die die Zugangsdaten enthält.

Bash
sudo nano /etc/smbcredentials

Trage nun die Zugangsdaten nach dem folgenden Schema ein

Bash
username=u000000
password=supersicherespasswort

Anschließend die Berechtigungen vergeben.
600 bedeutet: nur der Besitzer darf lesen und schreiben (rw-------), Gruppe und Andere haben keine Rechte.

Bash
sudo chown root:root /etc/smbcredentials
sudo chmod 600 /etc/smbcredentials

Als Nächstes trägst du die zu mountende Storage Box in die Datei /etc/fstab ein und passt den Pfad deiner Hetzner Storage Box entsprechend an.

Bash
sudo nano /etc/fstab
Bash
//u000000.your-storagebox.de/backup  /mnt/storagebox  cifs  vers=3.1.1,credentials=/etc/smbcredentials,uid=0,gid=0,file_mode=0644,dir_mode=0755,iocharset=utf8,seal,_netdev,nofail  0  0

Erstelle das Verzeichnis, in das die Storage Box gleich gemountet wird.

Bash
sudo mkdir /mnt/storagebox

Sobald das erledigt ist, können wir mit dem Mounten beginnen.

Bash
sudo systemctl daemon-reload
Bash
sudo mount -a

df -h sollte nun die gemountete Storage Box anzeigen.

Nun benötigen wir die Pakete – gocryptfs übernimmt die Verschlüsselung, virtiofsd stellt den Host-Ordner per VirtIO-FS später direkt in die VMs bereit (ohne SMB/NFS).

Bash
sudo apt update && sudo apt install -y cifs-utils gocryptfs virtiofsd

Jetzt legen wir den Ordner für den Klartext-Mount an.
Geschrieben wird später nicht nach /mnt/storagebox, sondern nach /mnt/storagebox-decrypted.

Bash
sudo mkdir /mnt/storagebox-decrypted

gocryptfs einmalig initialisieren

Bash
sudo gocryptfs -init /mnt/storagebox

FUSE für „allow_other“ erlauben

Bash
sudo echo user_allow_other | sudo tee -a /etc/fuse.conf

Dann wird es per gocryptfs als Klartext nach /mnt/storagebox-decrypted gemountet

Bash
sudo gocryptfs -allow_other /mnt/storagebox/crypt /mnt/storagebox-decrypted

Nun erstellen wir im Verzeichnis /mnt/storagebox-decrypted einen Ordner.
Ich benenne ihn üblicherweise nach der VM.
In diesem Beispiel heißt die VM apache2.

Bash
sudo mkdir /mnt/storagebox-decrypted/apache2

Weiter in der PVE-GUI:
Erstelle unter Datacenter → Directory Mappings das gewünschte Mapping.
Dieses Mapping kannst du später in der gewünschten VM als VirtIO-FS-Gerät einbinden (siehe Screenshots).

Ist das erledigt, kann das Verzeichnis per VirtIO-FS einfach an die gewünschte VM durchgereicht werden.

Um den Pfad in der VM zu mounten, erstellen wir (hier: in der Apache2-VM) den Ordner, in den VirtIO-FS eingehängt wird.
Der Ordnerpfad und -name sind frei wählbar.

Bash
sudo nano /etc/fstab

Passe in der VM den Eintrag auf den von dir vergebenen Mount-Tag des Directory Mappings an ( storagebox-apache2).

Bash
Storagebox-Apache2  /mnt/apache2    virtiofs   defaults,_netdev   0  0

Nun muss auf der VM nur noch gemountet werden, fertig.

Bash
sudo systemctl daemon-reload
sudo mount -a