[Sammelthread] Proxmox Stammtisch

Proxmox installieren, dann mit ROOT ZFS native encryption und passphrase verschlüsseln
  • data Partition wird mit Key aus Datei verschlüsselt, die auf der verschlüsselten root liegt
  • Remote-Unlock über dropbear ssh initramfs und zfsunlock
  • Hintergrund: Ich möchte beim Boot EINMAL das Passwort eingeben und LXC und VMs automatisch starten lassen, statt via verschlüsselten Datasets VMs nach jedem Reboot manuell zu starten. Das läuft auch alles, aber ist das sinnvoll?
Der Punkt würde mich sehr interessieren
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Der Punkt würde mich sehr interessieren

Vorab ganz wichtig: Ich bin kein Experte, aber hab das ganze bei mir 2 oder 3 Mal gemacht und es hat geklappt. Ich sage nicht, dass es überall klappt und gebe keine Garantie, allerdings verstehe ich die Befehle und kann improvisieren, wenn was schief läuft. Einfaches Copy&Paste ohne zu kapieren, was man da macht, würde ich nicht empfehlen.

Hinweise:
  • Es ist wichtig, welches Rescue-Live-System man verwendet - mit Ubuntu 22.04 hat das ganze nicht geklappt (vermutlich falsche ZFS Version). Ich nutze das hier in Kombination mit dieser Rescue CD.
Anleitung:


1. Schritt: Proxmox mit ZFS installieren
Das beschreibe ich jetzt mal nicht im Detail... man nimmt halt Proxmox, bootet den Installer und installiert es mit "erweitert" als ZFS statt ext4. Ansonsten alles wie gewohnt.

2. Schritt (Optional) - Remote Unlock via SSH:
Proxmox starten
Einen SSH public key auf den Clients erstellen, die einen Remote-Unlock per SSH durchführen können soll
Den remote unlock vorbereiten, in dem man den Public Key auf Proxmox überträgt (vor der Verschlüsselung des Laufwerks):
Bash:
PROXMOX_HOST="192.168.1.10"
ssh-copy-id root@$PROXMOX_HOST
ssh "root@$PROXMOX_HOST"
# install zfs ssh remote unlock feature
apt update
apt -y install zfs-initramfs dropbear-initramfs
# configure dropbear and ignore these errors, since we are not using cryptsetup, but native ZFS encryption
# cryptsetup: ERROR: Couldn't resolve device rpool/ROOT/pve-1
# cryptsetup: WARNING: Couldn't determine root device
mkdir -p /etc/dropbear-initramfs
cp "/root/.ssh/authorized_keys" /etc/dropbear-initramfs/

# optional: unlock-only shell with direct password prompt instead of a real shell
# bearbeitet die authorized_keys-Datei so, dass vor dem Key noch eingestellt wird, welche Kommandos erlaubt sind
# andernfalls muss man beim remote login noch zfsunlock ausführen
sed -i.bak 's/^ssh-/no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="\/usr\/bin\/zfsunlock" ssh-/g' /etc/dropbear-initramfs/authorized_keys

# configure dropbear options
grep '^DROPBEAR_OPTIONS' /etc/dropbear-initramfs/config > /dev/null || (echo 'DROPBEAR_OPTIONS="-p 2222 -s -j -k -I 60"' >> /etc/dropbear-initramfs/config && update-initramfs -u)

3. Schritt - System verschlüsseln
Man bootet irgendeine System Rescue CD mit ZFS 2.0 unterstützung, um die Verschlüsselung durchzuführen.
Das kann auch mit Proxmox selbst im Recovery Mode gemacht werden, wenn man nicht Ventoy nutzt, ich habe aber Ventoy und das hier verwendet:

An der Maschine bzw. über IPMI / AMT:

Bash:
# optional: Load your keyboard layout
loadkeys de
# stop firewall and enable sshd
systemctl stop iptables
systemctl start sshd
# change root password for remote login
passwd root
# show ip address
ip a

Danach kann man sich per SSH ins rescue einloggen und die root partition verschlüsseln:
Bash:
# optional: show pools that can be imported
zpool import
# import proxmox pool
zpool import -f rpool
# optional: show pool status
zpool status
# optional: list available datasets
zfs list
# Make a snapshot of the current one
zfs snapshot -r rpool/ROOT@copy
# Send the snapshot to a temporary root
zfs send -R rpool/ROOT@copy | zfs receive rpool/copyroot
# Destroy the old unencrypted root too prevent two datasets with the same mount point
zfs destroy -r rpool/ROOT
# Create a new zfs root, with encryption turned on
# OR -o encryption=aes-256-gcm - aes-256-ccm vs aes-256-gcm
zfs create -o encryption=on -o keyformat=passphrase rpool/ROOT
# choose a strong passphrase
# Copy the files from the copy to the new encrypted zfs root
zfs send -R rpool/copyroot/pve-1@copy | zfs receive -o encryption=on rpool/ROOT/pve-1
# Set the Mountpoint
zfs set mountpoint=/ rpool/ROOT/pve-1
# destroy the copyroot dataset
zfs destroy -r rpool/copyroot
# optional: verify that dataset structure is as expected
zfs list
# NAME               USED  AVAIL     REFER  MOUNTPOINT
# rpool             1.27G  1.76T      104K  /rpool
# rpool/ROOT        1.27G  1.76T      192K  /rpool/ROOT
# rpool/ROOT/pve-1  1.27G  1.76T     1.22G  /
# rpool/data          96K  1.76T       96K  /rpool/data
# optional: verify that root dataset is encrypted
zfs get encryption rpool/ROOT

# optional: enable trim for ssds
zpool set autotrim=on rpool # enable trim
# optional: enable compression zstd-4, see https://www.reddit.com/r/zfs/comments/sxx9p7/a_simple_real_world_zfs_compression_speed_an/
zfs set recordsize=1M compression=zstd-4 rpool
# Export the pool again
zpool export rpool

Nach einem Reboot muss man seine Passphrase eingeben - hat man den Remote-Unlock konfiguriert geht das mit:

Bash:
ssh -l root -p 2222 <Proxmox-IP>
Entweder muss man nun das Passwort eingeben oder den Befehl zfsunlock - je nachdem, ob man die authorized_keys entsprechend bearbeitet hat, dass nur noch die Passworteingabe erfolgen soll.

4. Schritt - data verschlüsseln
So, nun möchte man noch die Data-Partition für die VMs und LXC Container verschlüsseln. Das mache ich über eine Schlüssel-Datei, die auf der verschlüsselten root-Parition liegt. So kann ich nach dem reboot die VMs und Container automatisch starten lassen und muss nicht noch mal extra eine passphrase für eine weitere Partition eingeben. Man könnte auch die Data-Paritition wegwerfen und die Root vergrößern, allerdings bringt das aus meiner Sicht einige Nachteile mit sich (hinsichtlich Snapshots), auf die ich jetzt hier mal nicht näher eingehe (schaut euch einfach dieses wirklich sehenswerte Video an)

Bash:
# Back in Proxmox

# create a strong encryption key
openssl rand -hex -out /root/data-encrypted.key 32

# backup your encryption key somewhere!!

# recreate data with key based encryption
umount /rpool/data
zfs snapshot -r rpool/data@copy
zfs send -R rpool/data@copy | zfs receive rpool/copydata
zfs destroy -r rpool/data
zfs send -R rpool/copydata@copy | zfs receive -o encryption=on -o keyformat=hex -o keylocation=file:///root/data-encrypted.key rpool/data
zfs set mountpoint=/rpool/data rpool/data
zfs destroy -r rpool/copydata

# encryption needs to load key first, so you have to create a system service, which performs the following on boot
# zfs load-key -r rpool/data
# zfs mount rpool/data        # if not auto mounted

cat << 'EOF' > /etc/systemd/system/zfs-load-data-key.service
[Unit]
Description=Load ZFS keys
DefaultDependencies=no
Before=zfs-mount.service
After=zfs-import.target
Requires=zfs-import.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/zfs load-key -r rpool/data

[Install]
WantedBy=zfs-mount.service
EOF

systemctl enable --now zfs-load-data-key


So, das müsste es sein. Viel Erfolg - über konstruktives Feedback freue ich mich sehr, wie gesagt, ich bin KEIN Experte bei Proxmox oder ZFS.
 
Zuletzt bearbeitet:
Haltet ihr auf dem Fujitsu Futro S740 (https://www.piospartslap.de/Fujitsu...-J4105-150GHz-8GB-16GB-SSD-Incl-Fuss-Netzteil) folgendes Vorhaben für realistisch:


Schau Dir das Ding mal an, mehr CPU Power und weniger gebastel.
 
Vermutlich aber auch höherer Stromverbrauch und auf den Import aus China hab ich ehrlich gesagt auch keine Lust 😅

Da wäre dann ggfs. doch eher der Mac Mini M1 interessanter der hier noch rum steht. Da ich das Fujitsu Teil eh schon hier hab werde ich aber vermutlich einfach mal probieren
 
Tach,
bin der Neue und soll hier feucht durchwischen und Blumen gießen !
#Spass Ende
Black Week und Urlaub :cautious:
Hab jetzt nen Dell Wyse 5070 mit dem Celeron J 4105
und so das übliche drauf :
Proxmox
IOBroker
Homematic
Pihole

was ich nicht wusste: der eingebaute Speicher ist fest eingelötet und EMMC ,darauf möchte Proxmox nicht installiert werden
ausgestattet ist das Büxchen mit 16 G Ram und ner 256 -er SSD
Stromverbrauch pendelt zurzeit so bei 4-5 Watt rum
 
So, das müsste es sein. Wie man die Data Partition mit einem Key-File verschlüsselt, die auf der nun verschlüsselten root-Partition liegt, kann ich gerne später mal posten, dafür habe ich aktuell keine Nerven mehr, es gibt Essen ;)

Das wäre inetressant, bitte gerne hier posten. (y)
 
Das wäre inetressant, bitte gerne hier posten. (y)
Kein Problem... Vielleicht vervollständige ich den Beitrag einfach, habe noch ein paar Befehle gekürzt und angepasst. Muss auch noch ein paar Tests durchführen, ich bin z.B. darüber gestolpert, dass LXC-Container builds aus den tteck scripten nicht funktioniert haben, ohne dass ich den key vorher manuell importieren musste. Dazu muss ich mir noch n systemd Service schreiben, der sieht dann in etwa so aus:

Bash:
cat << 'EOF' > /etc/systemd/system/zfs-load-key@.service
[Unit]
Description=Load ZFS keys
DefaultDependencies=no
Before=zfs-mount.service
After=zfs-import.target
Requires=zfs-import.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/zfs load-key %I

[Install]
WantedBy=zfs-mount.service
EOF

# systemctl enable zfs-load-key@$dataset_name
systemctl enable --now zfs-load-key@rpool/data


Aber das ist grade alles noch im Werden :-) Melde mich wenn ich mal ne schöne einheitliche Prozedur aufgeschrieben habe.
 
Doofe Frage:
Hab auf meinem pve mehrere VMs laufen, die aufeinander angewiesen sind. Ich kann zwar VMs automatisch starten lassen mit booten der Maschine, aber das wars dann ja auch.
Gibt es eine Art von "best practice" wie hier vorzugehen ist?
 
Was genau ist denn deine Frage? Einen Boot order müsste es auch bei pve geben ...
 
Das Thema „Virtualisierung“ lässt mich nicht los – für mich wird vermutlich Proxmox die bessere Wahl sein.
Habe einige HowTo’s gelesen und Videos angesehen und hätte da noch ein paar Fragen.


Es gibt ja einige Dinge, wo man Hand anlegen muss, damit sie funktionieren.
z.B. Updates bei der „gratis Version“, Hinweis auf fehlende Lizenz deaktivieren, Passthrough für HBA aktivieren, …

Werden solche „manuellen Bearbeitungen“ wieder übernommen, wenn man neu installiert und dann ein Backup der Einstellungen retourspielt, oder muss man die wieder alle manuell durchführen?

Reicht im Privatumfeld die „gratis Version“ (bezüglich verlässlicher Updates), oder sollte man die ca. € 100/Jahr für die Community Lizenz investieren?

Macht es einen Unterschied ob man Proxmox als „ext4“ oder „zfs“ auf dem OS-Datenträger installiert?


Danke!
LG
 
Werden solche „manuellen Bearbeitungen“ wieder übernommen, wenn man neu installiert und dann ein Backup der Einstellungen retourspielt, oder muss man die wieder alle manuell durchführen?
Erübrigt sich wenn du das mal gemacht hast, alles was als Einstellung (in /etc) gemacht wird und du das ganze Verzeichnis sicherst, dann wird das wohl wieder vorzufinden sein.

Das mit dem entfernen der Lizenzwarnung ist hingegen keine Einstellung, sondern Modifikationen und wird daher nicht übernommen.

Reicht im Privatumfeld die „gratis Version“ (bezüglich verlässlicher Updates), oder sollte man die ca. € 100/Jahr für die Community Lizenz investieren?
Das Non-Subscription Repository reicht für den Privatbetrieb mehr als aus. Aber wenn du willst das die Subscription Meldung weggeht, dann kannst du die Entwickler gerne mit einer Community Lizenz unterstützen und bekommst als Gegenleistung stabilere Pakete.

Macht es einen Unterschied ob man Proxmox als „ext4“ oder „zfs“ auf dem OS-Datenträger installiert?
Einen ziemlich großen sogar, da mit ZFS ein Mirroring und Checksumming möglich ist. Einen klassischen OS Datenträger analog zu TrueNAS gibt es bei Proxmox jedoch nicht, du kannst den root pool auch ohne weiteres für VMs nutzen.
 
Hallo zusammen,

meinem aktuellen Proxmox Host geht aktuell der RAM und manchmal auch die Puste aus.
Aktuell ist es ein J3455 mit 16GB Ram. RAM ist bei 75% und CPU bei ~35% und Load bei 2 im Tagesmittel.
Es laufen 2VMs (u.a. OpnSense) und 20 LXC Container (InfluxDB, Grafana, Mysql, Icinga, Unify, Nextcloud, Paperless etc).
Insbesondere Nextcloud, Paperless oder größere Abfragen in den Datenbanken könnten mehr Performance vertragen.

Blick geht in Richtung Refurbished Business PCs der Klasse TMM 6th/7th ggf. auch 8th/9th Gen Intel als Replacement mit 2x32GB.
Was bevorzugt ihr mehr IPC, Cores oder Threads. Preis/Leistung scheint der i5-6500t fast unschlagbar. ~150€ PC + 140€ RAM.
Alternativ ein i7-6700t mit 8T wenn man einen guten Deal findet.

Habt ihr Erfahrungen mit der Konfiguration oder Empfehlungen für andere Hardware? Neue Platform mit i3-10100 kommt teurer bei nicht viel mehr Leistung und potentiell mehr Stromverbrauch
Als 24/7 ist natrülich der Stromverbrauch wichtig.
 
Habt ihr Erfahrungen mit der Konfiguration oder Empfehlungen für andere Hardware?
Wenn du Strom sparen und trotzdem mehr Leistung haben willst, würde ich in Richtung Mini-PC mit verlöteter Laptop CPU gehen, also iwas mit Zen2/3(+) oder Intel 11th oder 12th Gen.

Einfach mal auf Aliexpress umschauen.
 
Hallo zusammen,

meinem aktuellen Proxmox Host geht aktuell der RAM und manchmal auch die Puste aus.
Aktuell ist es ein J3455 mit 16GB Ram. RAM ist bei 75% und CPU bei ~35% und Load bei 2 im Tagesmittel.
Es laufen 2VMs (u.a. OpnSense) und 20 LXC Container (InfluxDB, Grafana, Mysql, Icinga, Unify, Nextcloud, Paperless etc).
Insbesondere Nextcloud, Paperless oder größere Abfragen in den Datenbanken könnten mehr Performance vertragen.

Blick geht in Richtung Refurbished Business PCs der Klasse TMM 6th/7th ggf. auch 8th/9th Gen Intel als Replacement mit 2x32GB.
Was bevorzugt ihr mehr IPC, Cores oder Threads. Preis/Leistung scheint der i5-6500t fast unschlagbar. ~150€ PC + 140€ RAM.
Alternativ ein i7-6700t mit 8T wenn man einen guten Deal findet.

Habt ihr Erfahrungen mit der Konfiguration oder Empfehlungen für andere Hardware? Neue Platform mit i3-10100 kommt teurer bei nicht viel mehr Leistung und potentiell mehr Stromverbrauch
Als 24/7 ist natrülich der Stromverbrauch wichtig.

Fujitsu PC's sind sehr stromsparend.

z.B. D538/D738 oder P558/P758 mit versch. Sockel 1151 CPU's (G5600, i3-8100, ...)
Die laufen z.B. unter Win11 "idle" mit so um die 5-8 Watt.


LG
 
Oder einen gebrauchten Mini PC von Lenovo, Dell oder HP.
Geanu die meinte ich mit TMM - TinyMiniMicro

Wenn du Strom sparen und trotzdem mehr Leistung haben willst, würde ich in Richtung Mini-PC mit verlöteter Laptop CPU gehen, also iwas mit Zen2/3(+) oder Intel 11th oder 12th Gen.

Einfach mal auf Aliexpress umschauen.
Danke für den Hinweis. Hatte da bisher nur nach den Firewall Boxen (Quad-LAN etc) ausschau gehalten weil es die bei uns nur zu deutlich höheren Kosten gibt.
Aber eine kurze Suche (10minuten) brachte ernüchterung, da preislich über einem vergleichbaren refurbished HP,Dell,Lenovo,Fujitsu, insbesondere wenn man die Einfuhrsteuer betrachtet.
Die refubished sollten mit angepasster TDP wohl auf vergleichbaren Verbrauch kommen und haben definitiv hochwertige Komponenten und weniger Probleme mit der Firmware. Das soll bei den China teilen wohl nicht immer so sein.
 
Aber eine kurze Suche (10minuten) brachte ernüchterung, da preislich über einem vergleichbaren refurbished HP,Dell,Lenovo,Fujitsu, insbesondere wenn man die Einfuhrsteuer betrachtet.
Die Preise auf Aliexpress sind inkl. MwSt, Alibaba ist ohne.
 
Vermutlich war nicht die Einfuhrumsatzsteuer, sondern der Zoll gemeint?
 
Sicher dass es mit MwSt ist? Beim Preis steht nichts. Und ja ich meine Alle zusätzlichen Abgaben.
1673526407655.png
 
Sicher dass es mit MwSt ist? Beim Preis steht nichts. Und ja ich meine Alle zusätzlichen Abgaben.
Anhang anzeigen 840117

Bei Aliexpress ist das schon der "richtige" Preis - wenn du Pech hast, kommt halt von deinem Land noch die Zollgebühr dazu!

In meinem Fall waren es aber nur € 15 - da die Box mit € 50 angegeben war und halt dann vom Zoll "etwas geschätzt" wird.

LG
 
Hallo Zusammen,

ich hab bei meinem Home-Server das Problem das nach einem Reboot systemd-udevd so zwischen 25 und 30% CPU Auslastung benötigt. Dadurch geht der Prozessor nicht in die niedrigeren Package sleep states und bleibt dauerhaft in C0 oder C1. Der Idlestromverbrauch ist dadurch bei 50W statt 30W.
Nach einem Restart von systemd-udevd ist alles wieder normal.

udevadm monitor zeigt auch einen konstanten Stream an "change" Events an. Siehe
Code:
root@pve:~# udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

UDEV  [2531.136313] change   /devices/virtual/block/dm-8 (block)
KERNEL[2531.141326] change   /devices/virtual/block/dm-8 (block)
UDEV  [2531.150103] change   /devices/virtual/block/dm-8 (block)
KERNEL[2531.154605] change   /devices/virtual/block/dm-8 (block)
UDEV  [2531.163310] change   /devices/virtual/block/dm-8 (block)
KERNEL[2531.167914] change   /devices/virtual/block/dm-8 (block)
UDEV  [2531.176566] change   /devices/virtual/block/dm-8 (block)
KERNEL[2531.181050] change   /devices/virtual/block/dm-8 (block)

dm-8 ist eine Virtual Disk von einem LXC Container der ausgeschalten ist. Hat jemand ne Idee was die Ursache dafür sein könnte und wie ich das beheben kann?
 
Lösung nicht, aber warum nicht als workaround erstmal einen cronjob zum Neustart des Services erstellen? :fresse2:
 
Bei mir ist der neue Host ein HP Elitedesk 800G2 mit 6700T geworden, da günstig erstanden.
Kann man Container und VMs "online migrieren"? Beeide Nodes sind in einem Cluster aber haben keinen gleichnamigen Stroage.

Bleibt wohl nur Backup & Restore der Gäste oder?
 
Zuletzt bearbeitet:
Bei mir ist der neue Host ein HP Elitedesk 800G2 mit 6700T geworden, da günstig erstanden.
Kann man Container und VMs "online migrieren"? Beeide Nodes sind in einem Cluster aber haben keinen gleichnamigen Stroage.

Bleibt wohl nur Backup & Restore der Gäste oder?


Stromsparend dürften diese Modelle anscheinend nicht sein.

Test
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh