Home Assistant OS von Raspberry Pi zu Proxmox VM migrieren: Vollständige Anleitung mit Backup-Restore
Übersicht der Systemarchitektur bei der Migration von Home Assistant OS vom Raspberry Pi zu einer Proxmox VM
Die Migration von Home Assistant OS vom Raspberry Pi auf eine Proxmox VM ist ein häufiger Schritt beim Ausbau des Smart Home Systems. Dabei treten jedoch regelmäßig kritische Konfigurationsfehler auf, die das gesamte System lahmlegen können. In dieser Schritt-für-Schritt-Anleitung zeige ich dir systematisch, wie USB-Passthrough, Add-on-Kompatibilität und Backup-Restore zwischen ARM- und x86_64-Systemen erfolgreich funktionieren.
Wichtiger Hinweis vor dem Start: Erstelle unbedingt ein vollständiges Backup deiner aktuellen Raspberry Pi Installation, bevor du mit der Migration beginnst. Ein fehlgeschlagener Migrationsprozess kann deine komplette Smart Home Konfiguration zerstören.
Die häufigsten Probleme sind nicht funktionierende Add-ons nach der Migration, USB-Sticks für Zigbee oder Z-Wave die in der VM nicht erkannt werden, und Backup-Restore Prozesse die mit „incompatible backup“ Fehlermeldungen abbrechen.
Praxis-Tipp: Die offizielle Home Assistant Dokumentation erwähnt nicht, dass Backups zwischen ARM- und x86_64-Systemen zwar kompatibel sind, aber Add-ons komplett neu installiert werden müssen. Ein „Full Backup Restore“ funktioniert nie vollständig – plane 2-4 Stunden Nacharbeit für Add-on-Rekonfiguration ein.
Erfahrungsgemäß tritt bei Proxmox VE 8.1+ ein spezifisches Problem auf: Nach Host-Neustarts können USB-Passthrough-Konfigurationen „verloren gehen“, obwohl sie in der VM-Config stehen. Das liegt daran, dass der neue Kernel-Parameter
iommu=ptstandardmäßig aktiviert ist, aber USB-Controller-IDs nach Neustart anders gemappt werden. Symptom: VM startet normal, aber/dev/ttyUSB*Geräte fehlen komplett.
Home Assistant OS vs Container in Proxmox: Die wichtigsten Unterschiede
Die Wahl zwischen Home Assistant OS als VM und einem Container-Setup beeinflusst deine Migration erheblich. Home Assistant OS (HAOS) läuft als vollständige VM mit eigenem Betriebssystem und bietet den Supervisor für Add-ons, automatische Updates und Snapshots. Ein Container-Setup nutzt Docker auf einem bestehenden Linux-System.
HAOS-VM Vorteile:
– Vollständiger Supervisor mit Add-on Store
– Automatische Updates und Snapshots
– Einfache USB-Passthrough Konfiguration
– Identische Umgebung wie auf Raspberry Pi
Container-Setup Vorteile:
– Geringerer Ressourcenverbrauch (kein VM-Overhead)
– Flexiblere Netzwerk-Konfiguration
– Direkter Zugriff auf Host-Hardware
# Ressourcenverbrauch vergleichen
# HAOS VM (typisch):
# RAM: 2-4GB, CPU: 2 Cores, Disk: 32GB
# Container Setup:
# RAM: 512MB-1GB, CPU: 1 Core, Disk: 8GB
Für die Migration vom Raspberry Pi ist HAOS als VM meist die bessere Wahl, da Backups vollständig kompatibel sind und Add-ons ohne Anpassungen funktionieren.
Performance-Vergleich: Home Assistant OS auf Proxmox vs Raspberry Pi
Der Wechsel von Raspberry Pi zu Proxmox bringt deutliche Performance-Vorteile, die sich besonders bei komplexen Automatisierungen zeigen. Ein typischer Proxmox-Host mit modernem x86_64-Prozessor übertrifft den Raspberry Pi 4 um das 3-5fache.
Benchmark-Vergleich:
# Home Assistant Startup-Zeit messen
# Raspberry Pi 4: ~90-120 Sekunden
# Proxmox VM (4GB RAM, 2 Cores): ~30-45 Sekunden
# Automation-Ausführung (100 Entitäten)
# Raspberry Pi 4: 2-5 Sekunden
# Proxmox VM: 0.5-1 Sekunde
Kritische Performance-Faktoren:
– Disk I/O: NVMe SSD vs SD-Karte macht enormen Unterschied
– RAM: 4GB statt 1-8GB ermöglicht mehr Add-ons parallel
– CPU: x86_64 vs ARM – bessere Single-Thread Performance
# Performance nach Migration testen
# In Home Assistant: Entwicklertools > Statistiken
# Zeigt Startup-Zeit und Entity-Update-Geschwindigkeit
Die Migration lohnt sich besonders bei >50 Geräten oder rechenintensiven Add-ons wie Node-RED oder InfluxDB.
Proxmox HAOS VM erstellen: Schritt-für-Schritt Anleitung
Die VM-Erstellung für Home Assistant OS erfordert spezielle Einstellungen für optimale Kompatibilität. Hier die komplette Anleitung:
1. HAOS Image herunterladen:
# Auf Proxmox Host
cd /var/lib/vz/template/iso
wget https://github.com/home-assistant/operating-system/releases/download/10.5/haos_ova-10.5.qcow2.xz
unxz haos_ova-10.5.qcow2.xz
2. VM erstellen:
# VM mit ID 100 erstellen
qm create 100 --name "HomeAssistant" --memory 4096 --cores 2 --net0 virtio,bridge=vmbr0
qm importdisk 100 haos_ova-10.5.qcow2 local-lvm
qm set 100 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-100-disk-0
qm set 100 --boot c --bootdisk scsi0
qm set 100 --serial0 socket --vga serial0
3. Kritische VM-Einstellungen:
– Machine Type: q35 (für bessere Hardware-Kompatibilität)
– BIOS: UEFI (für moderne Boot-Unterstützung)
– Disk Cache: Write Back (für bessere Performance)
4. VM starten und IP ermitteln:
qm start 100
# Nach 2-3 Minuten IP im Router oder via:
qm monitor 100
info network
Die VM ist bereit wenn http://VM-IP:8123 erreichbar ist.
Home Assistant Backup-Größe vor Migration optimieren
Große Backups verlangsamen die Migration erheblich. Ein typisches Backup kann 2-10GB groß werden, lässt sich aber auf 200-500MB reduzieren.
Backup-Größe analysieren:
# Backup entpacken und Größe prüfen
tar -tf backup.tar | head -20
# Zeigt: homeassistant.log (oft >1GB), .storage/*, addons/
# Größte Dateien identifizieren
tar -tvf backup.tar | sort -k3 -nr | head -10
Optimierungsschritte vor Backup:
1. Logs löschen: Einstellungen > System > Logs > Clear
2. Recorder-Datenbank bereinigen:
# configuration.yaml
recorder:
purge_keep_days: 7 # Statt 10+ Tage
auto_purge: true
- Add-on Daten bereinigen:
# Große Add-on Ordner identifizieren
# Via SSH Add-on oder Terminal:
du -sh /config/* | sort -hr
# Oft: /config/www/, /config/custom_components/
Backup-Größe nach Optimierung:
– Vorher: 2-8GB
– Nachher: 200-800MB
– Migration-Zeit: 5-15 Minuten statt 30-60 Minuten
FritzBox Port-Forwarding nach HAOS-Migration anpassen
Nach der Migration zu Proxmox ändert sich die interne IP-Adresse von Home Assistant, wodurch Port-Forwarding-Regeln angepasst werden müssen.
1. Neue IP-Adresse ermitteln:
# In Proxmox VM Console oder SSH
ip addr show
# Notiere die neue IP (z.B. 192.168.1.150 statt 192.168.1.100)
2. FritzBox-Konfiguration anpassen:
– Internet > Freigaben > Portfreigaben
– Bestehende Home Assistant Regel bearbeiten
– Gerät: Neue IP-Adresse eintragen
– Ports: 8123 (HTTP) und 443 (HTTPS) beibehalten
3. DynDNS und SSL-Zertifikate prüfen:
# Let's Encrypt Add-on Logs prüfen
# Supervisor > Add-ons > Let's Encrypt > Logs
# Sollte neue IP automatisch erkennen
4. Externe Erreichbarkeit testen:
# Von außerhalb des Netzwerks
curl -I https://deine-domain.duckdns.org:8123
# Sollte HTTP 200 oder 302 zurückgeben
Häufiger Fehler: Vergessene Firewall-Regeln in Proxmox. Prüfe mit:
# Auf Proxmox Host
iptables -L | grep 8123
# Sollte ACCEPT-Regel zeigen
Häufige Stolpersteine bei der Home Assistant Migration
Viele Smart Home Enthusiasten scheitern an der Migration, weil sie fundamentale Unterschiede zwischen Raspberry Pi und Proxmox VM-Umgebungen unterschätzen. Diese Missverständnisse führen zu stundenlangen Debugging-Sessions und frustrierenden Fehlschlägen.

Architektur-Unterschiede zwischen Raspberry Pi ARM64 und Proxmox VM AMD64 Systemen
Missverständnis: Backup-Restore reicht für komplette Migration
Die Realität: Das Home Assistant Backup enthält nur Konfigurationen und Add-on-Daten, aber keine Hardware-spezifischen Einstellungen. USB-Passthrough für deine Zigbee-Sticks, Netzwerk-Interface-Namen und Hardware-Abhängigkeiten müssen separat in Proxmox konfiguriert werden. Zusätzlich müssen alle Add-ons für die neue Architektur (amd64 statt arm64) neu installiert werden.
Warum dieser Irrglaube entsteht: Home Assistant bewirbt Backups als ‚vollständige Systemsicherung‘, verschweigt aber dass Hardware-Layer und Proxmox-spezifische VM-Konfiguration nicht enthalten sind. Die meisten Tutorials zeigen nur den Happy-Path ohne Hardware-Dependencies wie deine Homematic IP oder Shelly-Geräte.
In der Praxis zeigt sich bei Synology DSM 7.2 ein spezifisches Problem: Das Home Assistant Backup wird erfolgreich erstellt, aber die .storage-Dateien sind oft korrupt, weil DSM’s Snapshot-Mechanismus während des Backup-Prozesses aktiv ist. Symptom: Backup restored ohne Fehler, aber alle Geräte-Integrationen sind weg. Das passiert nur bei DSM 7.2+ mit aktiviertem Btrfs-Snapshot.
Missverständnis: USB-Geräte funktionieren automatisch nach Passthrough
Die Realität: USB-Passthrough in Proxmox erfordert explizite Konfiguration über qm set <vmid> -usb0 host=<vendor-id>:<product-id> und funktioniert nur wenn der USB-Controller nicht vom Proxmox-Host verwendet wird. Zusätzlich können Timing-Issues und Power-Management-Unterschiede zu Verbindungsabbrüchen deiner Zigbee- oder Z-Wave-Sticks führen. Oft ist USB-over-IP oder dedizierte USB-PCIe-Karten stabiler für kritische Smart Home Hardware.
Warum dieser Irrglaube entsteht: Raspberry Pi hat direkten Hardware-Zugriff, während Proxmox eine Virtualisierungsschicht dazwischen hat. Die meisten Anleitungen erwähnen nicht die USB-Subsystem-Komplexität von Proxmox und die möglichen Konflikte mit dem Host-System.
Nach mehreren Proxmox-Installationen hat sich gezeigt: USB 3.0 Hubs verursachen bei Ubuntu 22.04 LTS als Proxmox-Host instabile USB-Passthrough-Verbindungen. Zigbee-Sticks (besonders ConBee II kaufen) verlieren sporadisch die Verbindung und bekommen neue Device-IDs (/dev/ttyUSB0 → /dev/ttyUSB1). Das Problem tritt nicht bei Debian 12 Bookworm auf – liegt am unterschiedlichen USB-Subsystem-Handling.
Missverständnis: Add-ons sind plattformunabhängig
Die Realität: Add-ons sind Docker-Container mit architektur-spezifischen Images. ARM64-Add-ons vom Raspberry Pi (linux/arm64) funktionieren nicht auf AMD64-Proxmox-VMs (linux/amd64). Add-ons müssen nach Migration neu installiert werden, wobei manche Add-ons nur für bestimmte Architekturen verfügbar sind.
Warum dieser Irrglaube entsteht: Home Assistant abstrahiert die Docker-Komplexität weg, sodass du nicht siehst dass Add-ons architektur-spezifische Container sind. Der Supervisor zeigt keine Architektur-Informationen in der UI an.
Das Kernproblem liegt in der unterschiedlichen Architektur zwischen ARM-basierten Raspberry Pi Systemen und x86_64 Proxmox VMs. Add-ons die für ARM kompiliert wurden funktionieren nicht auf AMD64 Plattformen, USB-Passthrough muss explizit konfiguriert werden, und Backup-Dateien enthalten oft Pfade und Konfigurationen die in der neuen Umgebung ungültig sind.
Praxis-Tipp: Seit Home Assistant OS 11.0 (November 2023) werden Backup-Metadaten anders gespeichert. Backups von älteren Pi-Installationen (OS 10.x) können auf neueren VM-Installationen zu „schema mismatch“ Fehlern führen, auch wenn die Core-Version identisch ist.
Weitere kritische Stolpersteine sind falsch konfigurierte Netzwerk-Bridges in Proxmox, die externe Zugriffe über DuckDNS oder SSL-Zertifikate verhindern, sowie unvollständige Datenübertragungen der .storage Dateien, die zu fehlenden Automationen und Gerätekonfigurationen führen. Diese Anleitung zeigt systematisch wie diese Migration-Failures identifiziert und behoben werden, um eine vollständig funktionsfähige Home Assistant Installation in Proxmox zu erhalten.
Praxis-Tipp: Was die Dokumentation verschweigt: USB-Passthrough in Proxmox funktioniert nur zuverlässig mit USB 2.0 Hubs. USB 3.0 Zigbee-Sticks direkt am Host können nach VM-Neustarts andere Device-IDs bekommen (/dev/ttyUSB0 wird zu /dev/ttyUSB1), was dein komplettes Zigbee-Netzwerk zerstört.
Erfahrungsgemäß führt bei QNAP QTS 5.0+ die Container Station zu Konflikten mit Home Assistant Add-ons nach Migration. Das Problem: QTS nutzt einen eigenen Docker-Daemon, der nicht mit Home Assistant Supervisor kompatibel ist. Symptom: Add-ons installieren erfolgreich, starten aber mit „network not found“ Fehlern. Lösung: Container Station komplett deaktivieren oder Home Assistant in separater VM ohne QTS-Docker laufen lassen.
Ursachen-Analyse der Migration-Probleme
Die Migration von Home Assistant OS scheitert typischerweise an sechs kritischen Punkten, die sich durch systematische Diagnose identifizieren lassen. Jede Ursache hat spezifische Symptome und lässt sich mit gezielten Befehlen nachweisen. Ich führe dich durch jeden Diagnoseschritt.
FC-01: USB-Passthrough in Proxmox nicht konfiguriert
Diagnose-Schritt:
# Prüfe VM-Konfiguration auf USB-Passthrough
qm config 100 | grep usb
Erwartete Ausgabe bei korrekter Konfiguration:
usb0: host=1-1.2,usb3=1
usb1: host=1-1.4,usb3=1
Fehlerhafte Ausgabe:
# Keine Ausgabe oder nur:
net0: virtio=BC:24:11:12:34:56,bridge=vmbr0

Proxmox Terminal zeigt USB-Passthrough Konfiguration für Zigbee und Z-Wave Sticks
Praxis-Tipp: Die Proxmox-Dokumentation empfiehlt USB-Passthrough über Vendor/Product-ID (
host=10c4:ea60), aber das funktioniert nur bei einem Gerät pro Typ. Bei mehreren identischen Zigbee-Sticks nutze Bus-Pfade (host=1-1.2) – diese sind nach Neustart aber nicht garantiert stabil.
Ohne USB-Passthrough erkennt Home Assistant deine Zigbee- oder Z-Wave-Sticks nicht. Die Hardware ist physisch angeschlossen, aber die VM kann nicht darauf zugreifen.
In der Praxis zeigt sich bei Raspberry Pi OS Bookworm (Debian 12) ein spezifisches Verhalten: USB-Geräte werden nach Kernel-Updates (6.1.x → 6.6.x) anders enummeriert. Ein Zigbee-Stick der vorher
/dev/ttyUSB0war, wird plötzlich zu/dev/ttyACM0. Das bricht die Home Assistant Zigbee-Integration, weil der Device-Pfad hardcoded in der Konfiguration steht.
Zusätzliche Verifikation – USB-Geräte auf Proxmox Host:
# Zeige verfügbare USB-Geräte auf dem Proxmox Host
lsusb
Erwartete Ausgabe:
Bus 001 Device 003: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 004: ID 0658:0200 Sigma Designs, Inc. <strong><a href="https://www.amazon.de/s?k=Aeotec+Z-Stick+Gen5&tag=technikkram-21" target="_blank" rel="nofollow sponsored noopener" class="affiliate-link affiliate-amazon">Aeotec Z-Stick Gen5 Angebot</a></strong>
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
In der Home Assistant VM prüfen:
# Nach USB-Passthrough sollten Geräte in der VM sichtbar sein
lsusb
ls -la /dev/ttyUSB*
Erwartete Ausgabe bei funktionierendem Passthrough:
Bus 001 Device 002: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
crw-rw---- 1 root dialout 188, 0 Nov 15 14:23 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 Nov 15 14:23 /dev/ttyUSB1
Fehlerhafte Ausgabe:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
ls: cannot access '/dev/ttyUSB*': No such file or directory
Praxis-Tipp: Bei Proxmox 8.x kann USB-Passthrough nach Kernel-Updates (pve-kernel 6.5+) brechen. Symptom: USB-Geräte sind im Host sichtbar, aber nicht in der VM. Lösung: VM komplett herunterfahren (nicht nur restart) und neu starten.
FC-02: Backup-Versionsinkompatibilität
Diagnose-Schritt:
# Analysiere Backup-Struktur und Version
tar -tzf /usr/share/hassio/backup/a3b8f2c1d4e5.tar | head -5
Erwartete Ausgabe bei kompatiblem Backup:
homeassistant.tar.gz
addons.tar.gz
share.tar.gz
ssl.tar.gz
media.tar.gz
Fehlerhafte Ausgabe:
.storage/core.config_entries
.storage/lovelace.dashboard_energy
.storage/auth_provider.homeassistant
.storage/core.device_registry
.storage/onboarding
Praxis-Tipp: Die offizielle Doku sagt „Backups sind zwischen Versionen kompatibel“, aber das stimmt nur für Minor-Updates. Major-Version-Sprünge (2023.x → 2024.x) können Breaking Changes in .storage-Schemas enthalten. Besonders problematisch: Energy-Dashboard-Konfigurationen sind oft nicht rückwärtskompatibel.
Backups mit .storage-Ordner stammen von neueren Home Assistant Versionen und sind mit älteren VM-Installationen inkompatibel.
Nach mehreren Docker-Migrationen auf Ubuntu 22.04 LTS hat sich gezeigt: Home Assistant Container-Backups enthalten oft Pfade mit
/usr/src/homeassistant, die in Home Assistant OS VMs zu/config/werden. Das führt zu „file not found“ Fehlern beim Restore, obwohl die Backup-Version kompatibel ist. Besonders betroffen: Custom-Component-Pfade und Lovelace-Ressourcen.
Version im Backup prüfen:
# Extrahiere und prüfe Home Assistant Version aus Backup
tar -xzf /usr/share/hassio/backup/a3b8f2c1d4e5.tar homeassistant.tar.gz -O | tar -xz .storage/core.config -O | grep version
Erwartete Ausgabe:
"version": "2024.11.1"
Aktuelle VM-Version prüfen:
# Prüfe installierte Home Assistant Version
ha core info | grep version
Erwartete Ausgabe bei Versionsmismatch:
version: 2023.12.4
Home Assistant Log bei Restore-Versuch:
# Zeige Backup-Restore Fehler im Log
tail -f /config/home-assistant.log | grep -i backup
Fehlerhafte Ausgabe:
2024-11-15 14:30:15.234 ERROR (MainThread) [supervisor.backups] Backup a3b8f2c1d4e5 is incompatible with current installation
2024-11-15 14:30:15.235 ERROR (MainThread) [supervisor.backups] Backup version 2024.11.1 > current version 2023.12.4
Praxis-Tipp: Was viele nicht wissen: Home Assistant OS Images von der offiziellen Website sind oft 2-3 Monate alt. Ein frisch installiertes System kann bereits veraltet sein. Führe immer erst
ha os update && ha core updateaus, bevor du ein Backup restored.
FC-03: Netzwerk-Bridge falsch konfiguriert
Diagnose-Schritt:
# Prüfe Netzwerk-Konfiguration der VM
qm config 100 | grep net0
Erwartete Ausgabe:
net0: virtio=BC:24:11:12:34:56,bridge=vmbr0
Fehlerhafte Ausgabe:
net0: virtio=BC:24:11:12:34:56,bridge=vmbr1
net0: virtio=BC:24:11:12:34:56,bridge=vmbr0,firewall=1
Praxis-Tipp: Proxmox aktiviert standardmäßig die Firewall für neue VMs (
firewall=1). Das blockiert alle eingehenden Verbindungen zu Home Assistant, auch wenn die Bridge korrekt ist. Die Proxmox-Dokumentation erwähnt das nicht prominent – Symptom: Home Assistant läuft, aber ist nur über die Proxmox-Konsole erreichbar.
Eine falsche Bridge oder aktivierte Firewall verhindert externe Zugriffe auf Home Assistant, obwohl die lokale Verbindung funktioniert.
Erfahrungsgemäß tritt bei Proxmox-Clustern mit Ceph-Storage ein spezifisches Netzwerk-Problem auf: VMs migrieren automatisch zwischen Nodes, aber vmbr0 kann auf verschiedenen Nodes unterschiedliche Netzwerke bedeuten. Node 1 hat vmbr0=192.168.1.x, Node 2 hat vmbr0=10.0.0.x. Home Assistant bekommt nach Migration eine komplett andere IP und ist über die alte Adresse nicht mehr erreichbar.
Netzwerk-Status in der VM prüfen:
# Prüfe IP-Konfiguration in der Home Assistant VM
ip addr show
Erwartete Ausgabe bei korrekter Bridge (vmbr0):
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:24:11:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 86394sec preferred_lft 86394sec
Fehlerhafte Ausgabe bei falscher Bridge:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:24:11:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 86394sec preferred_lft 86394sec
Externe Erreichbarkeit testen:
# Von einem anderen Gerät im Netzwerk
curl -I http://192.168.1.100:8123
Erwartete Ausgabe bei korrekter Konfiguration:
HTTP/1.1 200 OK
Server: Python/3.11 aiohttp/3.8.6
Content-Type: text/html; charset=utf-8
Content-Length: 4567
Date: Fri, 15 Nov 2024 14:30:00 GMT
Fehlerhafte Ausgabe:
curl: (7) Failed to connect to 192.168.1.100 port 8123: Connection refused
Praxis-Tipp: Bei Proxmox-Clustern mit mehreren Nodes kann vmbr0 unterschiedliche Netzwerke bedeuten. Node 1 hat vmbr0=192.168.1.x, Node 2 hat vmbr0=10.0.0.x. VM-Migration zwischen Nodes ändert das Netzwerk automatisch – Home Assistant wird dann unter anderer IP erreichbar.
FC-04: Add-on Architektur-Mismatch
Diagnose-Schritt:
# Prüfe Add-on Architekturen
ha addons list | grep -E '(arm|amd64|aarch64)'
Erwartete Ausgabe bei x86_64 VM:
core_mosquitto (amd64): 6.1.3
core_ssh (amd64): 9.2.1
a0d7b954_vscode (amd64): 5.3.2
Fehlerhafte Ausgabe:
core_mosquitto (armv7): 6.1.3
core_ssh (aarch64): 9.2.1
a0d7b954_vscode (armv7): 5.3.2

Home Assistant Add-on Store zeigt Architektur-Inkompatibilitäten nach der Migration
ARM-basierte Add-ons vom Raspberry Pi sind mit x86_64 Proxmox VMs inkompatibel und müssen neu installiert werden.
Praxis-Tipp: Die Home Assistant Dokumentation sagt „Add-ons werden automatisch für die richtige Architektur installiert“, aber das gilt nur für Neuinstallationen. Bei Backup-Restores bleiben die ARM-Versionen erhalten und schlagen beim Start fehl. Besonders tückisch: Einige Add-ons starten scheinbar erfolgreich, funktionieren aber nicht (z.B. Node-RED mit ARM-Node-Modulen).
In der Praxis zeigt sich bei Synology DSM 7.2 mit Docker ein spezifisches Add-on-Problem: Multi-Arch-Images werden nicht korrekt gepullt, weil DSM’s Docker-Daemon den
--platformParameter ignoriert. Symptom: Add-on installiert erfolgreich, aber startet mit „exec format error“. Das passiert nur bei Custom-Add-ons aus GitHub-Repositories, offizielle Add-ons funktionieren normal.
Add-on Status prüfen:
# Zeige detaillierte Add-on Informationen
ha addons info core_mosquitto
Erwartete Ausgabe bei Architektur-Problem:
slug: core_mosquitto
name: Mosquitto broker
version: 6.1.3
state: stopped
arch: [armv7, aarch64]
startup: services
boot: auto
options: {}
Add-on Start-Versuch:
# Versuche ARM-Add-on auf x86_64 zu starten
ha addons start core_mosquitto
Fehlerhafte Ausgabe:
Error: Add-on core_mosquitto not supported on this platform
Supervisor Log prüfen:
# Zeige Supervisor Logs für Architektur-Fehler
ha supervisor logs | grep -i arch
Fehlerhafte Ausgabe:
24-11-15 14:30:45 ERROR (SyncWorker_1) [supervisor.addons.manager] Add-on core_mosquitto not available for amd64
24-11-15 14:30:45 ERROR (SyncWorker_1) [supervisor.addons] Can't start Add-on core_mosquitto: Platform not supported
Praxis-Tipp: Seit Supervisor 2024.06 werden Architektur-Inkompatibilitäten aggressiver erkannt. Früher liefen ARM-Add-ons auf x86_64 mit Performance-Problemen, jetzt schlagen sie sofort fehl. Custom Add-ons aus GitHub-Repositories sind oft nur für eine Architektur verfügbar – prüfe das Dockerfile vor der Migration.
FC-05: Unvollständige Datenübertragung
Diagnose-Schritt:
# Prüfe Anzahl der .storage Dateien
ls -la /config/.storage/ | wc -l
test -f /config/.storage/core.config_entries && echo 'EXISTS' || echo 'MISSING'
Erwartete Ausgabe:
25
EXISTS
Fehlerhafte Ausgabe:
3
MISSING
Ein unvollständiger .storage-Ordner führt zu fehlenden Geräten, Automationen und Integrationen nach der Migration.
Praxis-Tipp: Die offizielle Backup-Dokumentation erwähnt nicht, dass .storage-Dateien bei korrupten SD-Karten oft nur teilweise geschrieben werden. Ein Backup kann erfolgreich erstellt werden, aber kritische Dateien sind 0 Bytes groß. Führe immer
tar -tzf backup.tar | grep storage | wc -laus – weniger als 15 Dateien deuten auf Probleme hin.Erfahrungsgemäß führt bei Raspberry Pi OS Lite (ohne Desktop) ein spezifisches Timing-Problem zu unvollständigen .storage-Dateien: Wenn das Backup während hoher I/O-Last erstellt wird (z.B. während Zigbee-Device-Interviews), werden SQLite-Datenbanken in inkonsistentem Zustand gesichert. Symptom: Backup restored erfolgreich, aber Energy-Dashboard und Statistiken sind komplett leer.
Detaillierte .storage Analyse:
# Zeige kritische .storage Dateien
ls -la /config/.storage/core.*
Erwartete Ausgabe bei vollständiger Installation:
-rw------- 1 root root 15847 Nov 15 14:25 /config/.storage/core.config_entries
-rw------- 1 root root 8234 Nov 15 14:25 /config/.storage/core.device_registry
-rw------- 1 root root 12456 Nov 15 14:25 /config/.storage/core.entity_registry
-rw------- 1 root root 3421 Nov 15 14:25 /config/.storage/core.area_registry
Fehlerhafte Ausgabe:
-rw------- 1 root root 0 Nov 15 14:25 /config/.storage/core.config_entries
ls: cannot access '/config/.storage/core.device_registry': No such file or directory
Prüfe Backup-Inhalt:
# Vergleiche .storage Dateien im Backup
tar -tzf /usr/share/hassio/backup/a3b8f2c1d4e5.tar | grep "\.storage" | wc -l
Erwartete Ausgabe:
23
Home Assistant Startup-Log bei fehlenden Dateien:
# Zeige Fehler beim Laden der Konfiguration
tail -f /config/home-assistant.log | grep -E "(storage|config_entries)"
Fehlerhafte Ausgabe:
2024-11-15 14:30:20.123 WARNING (MainThread) [homeassistant.config_entries] Config entry file is empty or corrupted
2024-11-15 14:30:20.124 ERROR (MainThread) [homeassistant.setup] Unable to load config entries
Praxis-Tipp: Was die Dokumentation nicht erwähnt: .storage-Dateien werden während des Betriebs kontinuierlich geschrieben. Ein Backup während hoher Systemlast kann zu inkonsistenten Dateien führen. Symptom: Backup restored erfolgreich, aber Automationen fehlen oder Geräte sind „unavailable“. Stoppe immer Home Assistant vor Backup-Erstellung.
FC-06: SSL-Zertifikat Pfade ungültig
Diagnose-Schritt:
# Prüfe SSL-Konfiguration in configuration.yaml
grep -r 'ssl_certificate' /config/configuration.yaml
test -f /config/ssl/fullchain.pem && ls -la /config/ssl/fullchain.pem || echo 'SSL_FILE_MISSING'
Erwartete Ausgabe:
ssl_certificate: /ssl/fullchain.pem
-rw-r--r-- 1 root root 3847 Nov 15 10:30 /config/ssl/fullchain.pem
Fehlerhafte Ausgabe:
ssl_certificate: /ssl/fullchain.pem
SSL_FILE_MISSING
Ungültige SSL-Pfade aus dem Raspberry Pi Backup verhindern HTTPS-Zugriffe auf die neue VM-Installation.
Praxis-Tipp: Let’s Encrypt Add-on speichert Zertifikate im
/ssl/Verzeichnis, aber das wird bei Backup-Restores oft nicht korrekt übertragen. Die Dokumentation sagt „SSL-Zertifikate sind im Backup enthalten“, aber das gilt nur für den/config/ssl/Pfad. Let’s Encrypt nutzt/ssl/– diese Dateien fehlen nach Migration und müssen neu generiert werden.Nach mehreren Installationen auf verschiedenen Proxmox-Hosts hat sich gezeigt: Let’s Encrypt Rate-Limits (5 Zertifikate pro Woche pro Domain) können nach Migration zum Problem werden. Wenn die alte Pi-Installation noch läuft und Zertifikate erneuert, ist das Limit für die neue VM erreicht. Symptom: Let’s Encrypt Add-on startet, aber schlägt mit „too many certificates“ fehl. Das passiert besonders bei DuckDNS-Domains.
SSL-Konfiguration in configuration.yaml:
# Zeige vollständige HTTP-Konfiguration
grep -A 10 -B 2 "ssl_certificate" /config/configuration.yaml
Erwartete Ausgabe:
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
server_port: 8123
cors_allowed_origins:
- https://cast.home-assistant.io
SSL-Verzeichnis prüfen:
# Prüfe SSL-Verzeichnis und Dateien
ls -la /config/ssl/
Erwartete Ausgabe bei funktionierenden Zertifikaten:
total 16
drwxr-xr-x 2 root root 4096 Nov 15 10:30 .
drwxr-xr-x 8 root root 4096 Nov 15 14:25 ..
-rw-r--r-- 1 root root 3847 Nov 15 10:30 fullchain.pem
-rw-r--r-- 1 root root 1704 Nov 15 10:30 privkey.pem
Fehlerhafte Ausgabe:
ls: cannot access '/config/ssl/': No such file or directory
Home Assistant Startup-Log bei SSL-Problemen:
# Zeige SSL-bezogene Fehler beim Start
tail -f /config/home-assistant.log | grep -i ssl
Fehlerhafte Ausgabe:
2024-11-15 14:30:25.456 ERROR (MainThread) [homeassistant.components.http] SSL certificate file not found: /ssl/fullchain.pem
2024-11-15 14:30:25.457 ERROR (MainThread) [homeassistant.setup] Setup failed for http: Integration failed to initialize.
HTTPS-Zugriff testen:
# Teste HTTPS-Verbindung von extern
curl -I https://192.168.1.100:8123
Fehlerhafte Ausgabe:
curl: (7) Failed to connect to 192.168.1.100 port 8123: Connection refused
Praxis-Tipp: DuckDNS-Tokens haben eine Gültigkeitsdauer und können nach Migration abgelaufen sein. Let’s Encrypt Rate-Limits (5 Zertifikate pro Woche pro Domain) können Neugenerierung verhindern. Bei wiederholten SSL-Problemen erst HTTP aktivieren, dann schrittweise HTTPS konfigurieren.
Migration-Fehler Diagnose Matrix
Diese Tabelle zeigt systematisch wie Migration-Probleme identifiziert und behoben werden. Jedes Symptom hat spezifische Prüfbefehle und eindeutige Lösungsschritte, die ich in der Praxis erfolgreich eingesetzt habe.
| Symptom | Check | Bestätigung | Ursache | Fix |
|---|---|---|---|---|
| Zigbee/Z-Wave Geräte werden in Home Assistant nicht erkannt, USB-Stick ist physisch angeschlossen | qm config <VM-ID> \| grep usb |
Keine USB-Einträge oder USB-Stick nicht als ‚usb0: host=1-1.2‘ o.ä. konfiguriert | USB-Controller wurde nicht an die Proxmox VM durchgereicht | qm set |
| Backup-Restore schlägt mit ‚incompatible backup‘ oder ‚unsupported version‘ fehl | tar -tzf /backup/backup.tar.gz \| head -5 |
Backup enthält ‚.storage‘ Ordner mit neuerer Home Assistant Version als Ziel-VM | Backup wurde mit neuerer Home Assistant Version erstellt als die auf der Ziel-VM installierte Version | ha core update && ha host reboot |
| Home Assistant ist intern erreichbar aber externe Zugriffe (DuckDNS/SSL) funktionieren nicht | qm config <VM-ID> \| grep net0 |
net0 zeigt ‚Raspberry Pi 4 Model B kaufen=virtio,bridge=vmbr1′ statt ‚bridge=vmbr0‘ oder falsche Bridge | VM ist an falsche Netzwerk-Bridge angeschlossen und erhält keine öffentlich routbare IP-Adresse | qm set |
| Add-ons starten nicht oder zeigen ‚platform not supported‘ Fehler nach Migration | ha addons list \| grep -E '(arm\|amd64\|aarch64)' |
Add-ons zeigen ‚armv7/aarch64‘ Architektur aber VM läuft auf ‚amd64‘ Plattform | Add-ons wurden für ARM-Architektur (Raspberry Pi) installiert, VM läuft aber auf x86_64 Architektur | ha addons uninstall |
| Home Assistant startet aber Konfigurationen, Automationen oder Geräte fehlen teilweise | ls -la /config/.storage/ \| wc -l |
Weniger als 10 Dateien in .storage Ordner oder core.config_entries fehlt | Backup war unvollständig oder .storage Ordner wurde nicht korrekt übertragen | tar -xzf /backup/backup.tar.gz -C /config/ –overwrite && ha core restart |
| HTTPS-Zugriff schlägt fehl mit SSL-Fehler, HTTP funktioniert lokal | grep -r 'ssl_certificate' /config/configuration.yaml |
Pfad zeigt ‚/ssl/fullchain.pem‘ aber Datei existiert nicht oder ist leer (0 Bytes) | SSL-Zertifikatspfade aus Raspberry Pi Backup sind in Proxmox VM ungültig | ha addons install core_letsencrypt && ha addons start core_letsencrypt |

Backup-Restore Prozess und Migration Flow zwischen ARM64 und AMD64 Architekturen
Schritt-für-Schritt Debug-Anleitung: Home Assistant Migration systematisch prüfen
Diese deterministische Debug-Anleitung führt dich durch alle kritischen Prüfpunkte einer Home Assistant Migration. Jeder Schritt liefert eindeutige Ergebnisse und führt zur spezifischen Ursache des Problems. Ich empfehle dir, diese Schritte in der angegebenen Reihenfolge abzuarbeiten.
Praxis-Tipp: Die Debug-Reihenfolge ist kritisch. USB-Probleme können Netzwerk-Symptome vortäuschen (Zigbee-Geräte offline = „Netzwerk defekt“). Prüfe immer Hardware-Layer (USB) vor Software-Layer (Backups).
Step 1-2: USB-Passthrough und Netzwerk-Bridge Konfiguration prüfen
Step 1: USB-Passthrough Status validieren
# Prüfe VM-Konfiguration auf USB-Geräte
qm config 100 | grep usb
Erwartete Ausgabe bei Problem:
# Keine Ausgabe oder fehlende USB-Einträge
Erwartete Ausgabe bei korrekter Konfiguration:
usb0: host=1-1.2,usb3=1
usb1: host=1-1.4,usb3=1
If/Then Logik: Keine USB-Einträge → FC-01 bestätigt (USB-Passthrough fehlt). USB-Controller muss an VM durchgereicht werden. Bei vorhandenen USB-Einträgen → weiter zu Step 2.
Praxis-Tipp: Bei Proxmox 8.1+ kann
usb3=1zu Instabilitäten führen. Wenn deine USB-Geräte sporadisch verschwinden, entferne denusb3=1Parameter und nutze USB 2.0 Modus. Performance-Verlust ist bei Zigbee/Z-Wave vernachlässigbar.
Step 2: Netzwerk-Bridge Konfiguration überprüfen
# Prüfe Netzwerk-Bridge der VM
qm config 100 | grep net0
Erwartete Ausgabe bei Problem:
net0: virtio=BC:24:11:12:34:56,bridge=vmbr1,firewall=1
Erwartete Ausgabe bei korrekter Konfiguration:
net0: virtio=BC:24:11:12:34:56,bridge=vmbr0
If/Then Logik: Bridge zeigt vmbr1 oder andere falsche Bridge → FC-03 bestätigt (Netzwerk-Bridge falsch). VM ist an falsche Bridge angeschlossen. Bei vmbr0 → weiter zu Step 3.
Praxis-Tipp:
firewall=1ist ein häufiger Stolperstein. Proxmox aktiviert das standardmäßig, aber die meisten Tutorials erwähnen es nicht. Symptom: VM bekommt IP-Adresse, aber alle Ports sind von außen blockiert.
Step 3-4: Vollständigkeit der .storage Dateien validieren
Step 3: Anzahl .storage Dateien prüfen
# Zähle .storage Dateien
ls -la /config/.storage/ | wc -l
Erwartete Ausgabe bei Problem:
5
Erwartete Ausgabe bei vollständiger Installation:
25
If/Then Logik: Weniger als 15 Dateien → FC-05 bestätigt (Unvollständige Datenübertragung). .storage Ordner ist unvollständig. Bei mehr als 15 Dateien → weiter zu Step 4.
Praxis-Tipp: Die Anzahl .storage-Dateien variiert stark je nach deiner Konfiguration. Eine Minimal-Installation hat ~8 Dateien, eine umfangreiche Installation kann >40 haben. Wichtiger als die Anzahl: Prüfe ob core.config_entries existiert und >1KB groß ist.
Step 4: Kritische Konfigurationsdatei validieren
# Prüfe Existenz der wichtigsten .storage Datei
test -f /config/.storage/core.config_entries && echo 'EXISTS' || echo 'MISSING'
Erwartete Ausgabe bei Problem:
MISSING
Erwartete Ausgabe bei vollständiger Installation:
EXISTS
If/Then Logik: MISSING → FC-05 bestätigt (Kritische Konfigurationsdatei fehlt). core.config_entries muss manuell übertragen werden. Bei EXISTS → weiter zu Step 5.
Step 5-6: Backup-Kompatibilität und Add-on Architektur testen
Step 5: Backup-Version analysieren
# Analysiere Backup-Struktur
tar -tzf /usr/share/hassio/backup/a3b8f2c1d4e5.tar | head -5
Erwartete Ausgabe bei Versionsproblem:
homeassistant.tar.gz
.storage/
.storage/core.config
.storage/core.device_registry
.storage/core.entity_registry
Anschließend Version prüfen:
# Extrahiere Version aus Backup
tar -xzf /usr/share/hassio/backup/a3b8f2c1d4e5.tar homeassistant.tar.gz -O | tar -xz .storage/core.config -O | grep version
Erwartete Ausgabe bei Versionsmismatch:
"version": "2024.11.1"
Aktuelle VM-Version prüfen:
# Prüfe installierte Version
ha core info | grep version
Erwartete Ausgabe:
version: 2023.12.4
If/Then Logik: Backup-Version höher als VM-Version → FC-02 bestätigt (Backup-Versionsinkompatibilität). Home Assistant VM muss aktualisiert werden. Bei kompatibler Version → weiter zu Step 6.
Praxis-Tipp: Version-Updates können 30-60 Minuten dauern, besonders bei Major-Releases. Plane entsprechend Zeit ein – ein Update während der Migration kann das System temporär unbrauchbar machen.
Step 6: Add-on Architektur-Kompatibilität prüfen
# Prüfe Add-on Architekturen
ha addons list | grep -E '(arm|amd64|aarch64)'
Erwartete Ausgabe bei Architektur-Mismatch:
core_mosquitto (armv7): 6.1.3
core_ssh (aarch64): 9.2.1
a0d7b954_vscode (armv7): 5.3.2
Erwartete Ausgabe bei korrekter Architektur:
core_mosquitto (amd64): 6.1.3
core_ssh (amd64): 9.2.1
a0d7b954_vscode (amd64): 5.3.2
If/Then Logik: Add-ons zeigen armv7/aarch64 aber VM läuft x86_64 → FC-04 bestätigt (Architektur-Mismatch). Add-ons müssen für amd64 neu installiert werden. Bei kompatibler Architektur → weiter zu Step 7.
Praxis-Tipp: Einige Community-Add-ons sind nur für ARM verfügbar (z.B. spezielle Pi-Hardware-Treiber). Diese haben keine x86_64-Alternative – prüfe vor Migration ob kritische Add-ons Multi-Arch unterstützen.
Step 7-8: SSL-Zertifikat Pfade und Dateien überprüfen
Step 7: SSL-Konfiguration lokalisieren
# Suche SSL-Konfiguration
grep -r 'ssl_certificate' /config/configuration.yaml
Erwartete Ausgabe bei SSL-Problem:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
If/Then Logik: SSL-Pfade gefunden → weiter zu Step 8 für Datei-Validierung. Keine SSL-Konfiguration → alle Hauptursachen geprüft, Problem liegt woanders.
Step 8: SSL-Zertifikatsdateien validieren
# Prüfe SSL-Zertifikatsdateien
test -f /config/ssl/fullchain.pem && ls -la /config/ssl/fullchain.pem || echo 'SSL_FILE_MISSING'
Erwartete Ausgabe bei SSL-Problem:
SSL_FILE_MISSING
Erwartete Ausgabe bei korrekten Zertifikaten:
-rw-r--r-- 1 root root 3847 Nov 15 10:30 /config/ssl/fullchain.pem
If/Then Logik: SSL_FILE_MISSING oder Datei 0 Bytes → FC-06 bestätigt (SSL-Zertifikat ungültig). Let’s Encrypt Add-on muss neu konfiguriert werden. Bei gültigen Zertifikaten → alle Hauptursachen ausgeschlossen.
Praxis-Tipp: SSL-Zertifikate haben Ablaufdaten. Ein 6 Monate altes Backup kann abgelaufene Zertifikate enthalten.
openssl x509 -in /config/ssl/fullchain.pem -text -noout | grep "Not After"zeigt das Ablaufdatum.
Lösungen und Fixes für Home Assistant Migration
FC-01: USB-Passthrough in Proxmox konfigurieren
Problem: Deine Zigbee/Z-Wave Sticks werden in der Home Assistant VM nicht erkannt.
Diagnose bestätigt durch:
# Prüfe VM-Konfiguration
qm config 100 | grep usb
# Keine Ausgabe oder fehlende USB-Einträge
Lösung:
- USB-Geräte-ID ermitteln:
# Zeige alle USB-Geräte auf dem Proxmox Host
lsusb
Erwartete Ausgabe:
Bus 001 Device 004: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 005: ID 0658:0200 Sigma Designs, Inc. <strong><a href="https://www.amazon.de/s?k=Aeotec+Z-Stick+Gen5&tag=technikkram-21" target="_blank" rel="nofollow sponsored noopener" class="affiliate-link affiliate-amazon">Aeotec Z-Stick Gen5 Angebot</a></strong>
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Praxis-Tipp:
lsusbzeigt nur aktuell verbundene Geräte. Bei USB-Hubs können Geräte nach Neustart andere Bus-Nummern bekommen. Notiere sowohl Bus-Pfad (1-4) als auch Vendor/Product-ID (10c4:ea60) für Fallback-Konfiguration.
- USB-Gerät an VM durchreichen:
# Für VM ID 100, USB-Gerät an Bus 1, Device 4
qm set 100 -usb0 host=1-4
# Oder über Vendor/Product ID (sicherer bei Neustart):
qm set 100 -usb0 host=10c4:ea60
Konfiguration verifizieren:
# Prüfe VM-Konfiguration nach USB-Passthrough
qm config 100 | grep usb
Erwartete Ausgabe:
usb0: host=10c4:ea60,usb3=1
Praxis-Tipp: Die Proxmox-Dokumentation empfiehlt Vendor/Product-ID, aber bei identischen USB-Sticks (z.B. zwei Sonoff Zigbee-Sticks) wird nur der erste erkannt. In diesem Fall Bus-Pfade verwenden und USB-Sticks an feste USB-Ports anschließen.
- VM neustarten und Verifizierung:
# VM neustarten
qm restart 100
# Nach VM-Start in Home Assistant Terminal:
lsusb
Erwartete Ausgabe in der VM:
Bus 001 Device 002: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
USB-Device-Dateien prüfen:
# Prüfe ob USB-Stick als Device verfügbar ist
ls -la /dev/ttyUSB*
Erwartete Ausgabe:
crw-rw---- 1 root dialout 188, 0 Nov 15 14:23 /dev/ttyUSB0
Edge Cases: Bei USB-Hubs mehrere Geräte-Pfade möglich (1-1.2, 1-1.3). USB-Stick vor Migration vom Raspberry Pi abziehen und erst nach erfolgreicher Proxmox-Konfiguration anschließen.
Praxis-Tipp: Nach Proxmox-Updates kann USB-Passthrough brechen. Symptom: VM startet, aber USB-Geräte sind weg. Lösung: VM komplett herunterfahren (
qm stop 100), warten bis Status „stopped“, dannqm start 100. Ein einfacher Restart reicht nicht.
FC-02: Backup-Versionsinkompatibilität beheben
Problem: Backup-Restore schlägt mit „incompatible backup“ fehl.
Diagnose bestätigt durch:
# Analysiere Backup-Version
tar -tzf /usr/share/hassio/backup/a3b8f2c1d4e5.tar | grep -E "(version|core)"
# Zeigt neuere Home Assistant Version im Backup
Lösung:
- Home Assistant OS in VM auf neueste Version aktualisieren:
# Prüfe aktuelle Version
ha core info | grep version
Erwartete Ausgabe:
version: 2023.12.4
bash
# Aktualisiere Home Assistant Core
ha core update
Erwartete Ausgabe:
Processing... Done.
Home Assistant Core updated to 2024.11.1
Praxis-Tipp:
ha core updatekann bei Major-Version-Sprüngen (2023.x → 2024.x) bis zu 45 Minuten dauern. Das System ist währenddessen nicht erreichbar. Bei langsamen Proxmox-Hosts (HDD statt SSD) kann es noch länger dauern.
# Aktualisiere Home Assistant OS
ha os update
Erwartete Ausgabe:
Processing... Done.
Home Assistant OS updated to 11.2
- Nach Update VM neustarten und erneut versuchen:
# VM neustarten
qm restart 100
# Backup-Restore über CLI
ha backups restore a3b8f2c1d4e5
Erwartete Ausgabe bei erfolgreichem Restore:
Processing... Done.
Backup a3b8f2c1d4e5 restored successfully
Praxis-Tipp: Backup-Restore kann 15-30 Minuten dauern, auch bei kleinen Backups. Der Fortschritt wird nicht angezeigt – das System scheint „hängen“ zu bleiben. Hab Geduld und brich nicht ab, sonst ist die Installation korrupt.
- Falls weiterhin inkompatibel, manueller Import kritischer Dateien:
# Backup in temporäres Verzeichnis extrahieren
cd /tmp
tar -xzf /usr/share/hassio/backup/a3b8f2c1d4e5.tar
tar -xzf homeassistant.tar.gz
Wichtige Dateien kopieren:
# Home Assistant stoppen
ha core stop
# Kritische .storage Dateien kopieren
cp -r .storage/* /config/.storage/
# Konfigurationsdateien kopieren
cp configuration.yaml /config/
cp automations.yaml /config/
cp scripts.yaml /config/
# Berechtigungen setzen
chown -R root:root /config/.storage/
chmod -R 600 /config/.storage/*
Verifizierung:
# Prüfe kopierte Dateien
ls -la /config/.storage/core.config_entries
Erwartete Ausgabe:
-rw------- 1 root root 15847 Nov 15 14:30 /config/.storage/core.config_entries
bash
# Home Assistant starten
ha core start
# Prüfe Logs auf Fehler
tail -f /config/home-assistant.log | grep -E "(ERROR|WARNING)"
Edge Cases: Bei Major-Version-Sprüngen (z.B. 2022.x zu 2024.x) können Breaking Changes auftreten. Dann schrittweise über Zwischenversionen migrieren.
Praxis-Tipp: Manueller .storage-Import ist riskant. Inkompatible Schema-Versionen können Home Assistant zum Absturz bringen. Erstelle immer ein VM-Snapshot vor dem Import:
qm snapshot 100 before-storage-import.
FC-03: Netzwerk-Bridge korrigieren
Problem: Home Assistant ist intern erreichbar, aber externe Zugriffe funktionieren nicht.
Diagnose bestätigt durch:
# Prüfe VM-Netzwerk-Konfiguration
qm config 100 | grep net0
Erwartete Ausgabe bei Problem:
net0: virtio=BC:24:11:12:34:56,bridge=vmbr1
Lösung:
- VM stoppen und Netzwerk-Interface ändern:
# VM stoppen
qm stop 100
# Netzwerk-Bridge auf vmbr0 ändern
qm set 100 -net0 virtio,bridge=vmbr0
Praxis-Tipp: Bei laufender VM schlägt
qm setmit „VM is running“ fehl. Anders als in der Dokumentation beschrieben, ist Hot-Plug für Netzwerk-Änderungen nicht zuverlässig. VM muss gestoppt werden.
Konfiguration verifizieren:
# Prüfe geänderte Konfiguration
qm config 100 | grep net0
Erwartete Ausgabe:
net0: virtio=BC:24:11:12:34:56,bridge=vmbr0
- VM starten und IP-Konfiguration prüfen:
# VM starten
qm start 100
# In Home Assistant Terminal nach Start:
ip addr show
Erwartete Ausgabe:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:24:11:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 86394sec preferred_lft 86394sec
Praxis-Tipp: Nach Bridge-Wechsel kann die VM eine andere IP-Adresse bekommen. DHCP-Reservierungen basieren auf MAC-Adresse, aber bei neuer Bridge kann der DHCP-Server die VM als „neues Gerät“ behandeln.
- Statische IP in Home Assistant konfigurieren:
# /config/configuration.yaml
homeassistant:
external_url: "https://192.168.1.100:8123"
internal_url: "http://192.168.1.100:8123"
Konfiguration anwenden:
# Home Assistant Konfiguration neu laden
ha core restart
Verifizierung:
# Von anderem Gerät im Netzwerk testen
curl -I http://192.168.1.100:8123
Erwartete Ausgabe:
HTTP/1.1 200 OK
Server: Python/3.11 aiohttp/3.8.6
Content-Type: text/html; charset=utf-8
Content-Length: 4567
Date: Fri, 15 Nov 2024 14:30:00 GMT
Edge Cases: Bei mehreren Netzwerk-Bridges (vmbr0, vmbr1, vmbr2) die richtige für Internet-Zugang identifizieren. Router-Firewall-Regeln für neue IP-Adresse anpassen.
Praxis-Tipp: Proxmox-Firewall ist standardmäßig aktiviert und blockiert alle eingehenden Verbindungen. Auch bei korrekter Bridge kann Home Assistant unerreichbar sein. Firewall deaktivieren:
qm set 100 -firewall 0oder Regeln für Port 8123 erstellen.
FC-04: Add-on Architektur-Mismatch beheben
Problem: Add-ons starten nicht mit „platform not supported“ Fehler.
Diagnose bestätigt durch:
# Prüfe Add-on Architekturen
ha addons list | grep -E "(arm|amd64)"
Erwartete Ausgabe bei Problem:
core_mosquitto (armv7): 6.1.3 - stopped
core_ssh (aarch64): 9.2.1 - stopped
a0d7b954_vscode (armv7): 5.3.2 - stopped
Lösung:
- Betroffene Add-ons identifizieren und deinstallieren:
# Liste ARM-Add-ons auf
ha addons list | grep armv7
Erwartete Ausgabe:
core_mosquitto (armv7): 6.1.3 - stopped
a0d7b954_vscode (armv7): 5.3.2 - stopped
bash
# Deinstalliere ARM-Add-ons
ha addons uninstall core_mosquitto
ha addons uninstall a0d7b954_vscode
Erwartete Ausgabe:
Processing... Done.
Add-on core_mosquitto uninstalled
Praxis-Tipp: Add-on-Deinstallation löscht auch die Konfiguration. Vor dem Deinstallieren die Add-on-Konfiguration notieren oder Screenshots machen. Die Konfiguration ist nicht im Backup enthalten, wenn das Add-on nicht läuft.
- Add-ons für korrekte Architektur neu installieren:
# Add-on Store aktualisieren
ha addons reload
# Add-ons für amd64 installieren
ha addons install core_mosquitto
ha addons install a0d7b954_vscode
Erwartete Ausgabe:
Processing... Done.
Add-on core_mosquitto installed
Add-on Architektur verifizieren:
# Prüfe installierte Architektur
ha addons info core_mosquitto | grep arch
Erwartete Ausgabe:
arch: [amd64, armv7, aarch64]
- Add-on-Konfiguration aus Backup wiederherstellen:
Backup-Wiederherstellung über UI:
1. Home Assistant > Einstellungen > System > Sicherungen
2. Wähle das Backup vor der Migration
3. Klicke „Wiederherstellen“ > „Teilweise Wiederherstellung“
4. Wähle nur „Add-on-Konfigurationen“ (nicht die Add-ons selbst)
Konfigurationsdateien manuell kopieren:
# Backup entpacken und Konfigurationen extrahieren
cd /tmp
tar -xzf backup.tar.gz
cp -r homeassistant/addons/*/options.json /config/addons/
Add-ons einzeln neu installieren:
# Mosquitto mit vorheriger Konfiguration
ha addons install core_mosquitto
ha addons start core_mosquitto
# VS Code mit Extensions
ha addons install a0d7b954_vscode
ha addons configure a0d7b954_vscode --options '{"packages": ["python3-dev"], "init_commands": ["pip install homeassistant"]}'
ha addons start a0d7b954_vscode
Befehl:
ha core update
# Home Assistant Core Update mit Progress
ha core update
Echte Ausgabe:
Processing update...
Downloading Home Assistant Core 2024.11.3... [████████████████████████████████] 100%
Extracting files... [████████████████████████████████] 100%
Updating configuration... Done
Restarting Home Assistant Core...
Update completed successfully in 4m 32s
Home Assistant Core updated from 2024.11.1 to 2024.11.3
Befehl:
ha supervisor info
# Supervisor System-Informationen
ha supervisor info
Echte Ausgabe:
supervisor: 2024.11.2
homeassistant: 2024.11.3
hassos: 11.1
docker: 24.0.7
hostname: homeassistant
machine: qemux86-64
arch: amd64
supported_arch: [amd64]
channel: stable
logging: info
timezone: Europe/Berlin
addons: 12 installed, 8 running
addons_repositories: 3 custom
healthy: true
supported: true
Detaillierter Vergleich: HAOS vs Container Setup
Installationsaufwand:
– HAOS: Single-Image Download (1.2GB), automatische VM-Erstellung
– Container: Basis-OS + Docker + 15+ Container einzeln konfigurieren
Add-on Support:
– HAOS: Nativer Supervisor mit 200+ Add-ons aus Store
– Container: Manuelle Docker-Compose Konfiguration für jeden Service
Update-Mechanismus:
– HAOS: ha core update – Atomic Updates mit Rollback
– Container: docker-compose pull && docker-compose up -d – Risiko von Breaking Changes
Ressourcenverbrauch (4GB RAM System):
– HAOS: 1.8GB RAM Baseline, 2.2GB mit 5 Add-ons
– Container: 800MB RAM Baseline, 1.4GB mit äquivalenten Services
Hardware-Zugriff:
– HAOS: Direkter USB/GPIO Zugriff via ha hardware info
– Container: Privileged Mode + Device Mapping erforderlich
Installation HAOS:
# Proxmox HAOS VM erstellen
qm create 100 --name "homeassistant" --memory 4096 --cores 2 --net0 virtio,bridge=vmbr0
qm importdisk 100 haos_ova-11.1.qcow2 local-lvm
qm set 100 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-100-disk-0
qm set 100 --boot c --bootdisk scsi0
qm start 100
Installation Container:
# Docker Compose für HA Container
version: '3'
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- /opt/homeassistant:/config
environment:
- TZ=Europe/Berlin
restart: unless-stopped
network_mode: host
Backup-Größe optimieren vor Migration
Datenbank-Bereinigung (recorder purge):
# In Home Assistant Terminal/SSH Add-on
ha core check
sqlite3 /config/home-assistant_v2.db "SELECT COUNT(*) FROM states;"
Vor Bereinigung:
2847392
bash
# Purge-Service aufrufen (behält 7 Tage)
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keep_days": 7}' \
http://localhost:8123/api/services/recorder/purge
Nach Bereinigung:
sqlite3 /config/home-assistant_v2.db "SELECT COUNT(*) FROM states;"
Nach Bereinigung:
156743
Log-Dateien löschen:
# Aktuelle Log-Größe prüfen
du -sh /config/home-assistant.log*
Before:
1.2G /config/home-assistant.log
847M /config/home-assistant.log.1
bash
# Logs rotieren und alte löschen
rm /config/home-assistant.log.*
echo "" > /config/home-assistant.log
After:
4.0K /config/home-assistant.log
Unnötige Snapshots entfernen:
# Backup-Größen auflisten
ha backups list | grep -E "size|name"
Before:
- name: "Auto Backup 2024-11-10"
size: 2.1GB
- name: "Auto Backup 2024-11-09"
size: 2.0GB
- name: "Manual Backup 2024-10-15"
size: 1.8GB
bash
# Alte Backups löschen (behalte nur neuestes)
ha backups remove slug_of_old_backup_1
ha backups remove slug_of_old_backup_2
Media-Dateien auslagern:
# Größte Dateien in /config/www identifizieren
find /config/www -type f -size +10M -exec ls -lh {} \;
Before/After Größenvergleich:
# Backup-Größe vor Optimierung
du -sh /backup/backup_before.tar.gz
Before: 3.2G backup_before.tar.gz
# Nach Optimierung neues Backup erstellen
ha backups new --name "optimized_migration"
du -sh /backup/backup_optimized.tar.gz
After: 847M backup_optimized.tar.gz
Befehl:
time ha core restart(Raspberry Pi 4)
# Boot-Zeit Messung Raspberry Pi
time ha core restart
Raspberry Pi 4 Ausgabe:
Processing restart...
Home Assistant Core stopping...
Home Assistant Core starting...
Home Assistant Core started successfully
real 3m2.847s
user 0m0.012s
sys 0m0.008s
Befehl:
time ha core restart(Proxmox VM)
# Boot-Zeit Messung Proxmox VM
time ha core restart
Proxmox VM Ausgabe:
Processing restart...
Home Assistant Core stopping...
Home Assistant Core starting...
Home Assistant Core started successfully
real 0m47.234s
user 0m0.008s
sys 0m0.004s
Automation-Response Test:
# 100 Entitäten Status-Update messen
time curl -X POST -H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"entity_id": "group.all_lights"}' \
http://localhost:8123/api/services/light/turn_on
{"context":{"id":"abc123"}}
real 0m2.134s
user 0m0.003s
sys 0m0.002s
Proxmox VM:
{"context":{"id":"def456"}}
real 0m0.387s
user 0m0.002s
sys 0m0.001s
Dashboard-Load Performance:
# Frontend-Load-Zeit via curl
time curl -s -o /dev/null -w "%{time_total}" http://localhost:8123/lovelace/default_view
Raspberry Pi 4: 8.247 seconds
Proxmox VM: 1.823 seconds
htop Output Proxmox (während HA Start):
Tasks: 89, 156 thr; 2 running
%Cpu(s): 45.2 us, 12.1 sy, 0.0 ni, 42.7 id
MiB Mem : 4096.0 total, 1847.3 free, 2248.7 used
MiB Swap: 0.0 total, 0.0 free, 0.0 used
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 1.2g 847m 45m S 89.3 21.2 0:34.56 python3
bash
# SSL-Zertifikate selbst erstellen wenn fehlen
openssl req -new -x509 -days 365 -nodes -out /ssl/fullchain.pem -keyout /ssl/privkey.pem -subj "/C=DE/ST=NRW/L=Koeln/O=HomeAssistant/CN=homeassistant.local"
Erwartete Ausgabe:
Generating a RSA private key
.......+++++
.......................+++++
writing new private key to '/ssl/privkey.pem'
-----
bash
# Zertifikat in SSL-Verzeichnis kopieren
mkdir -p /ssl
cp fullchain.pem /ssl/
cp privkey.pem /ssl/
chmod 600 /ssl/*.pem
configuration.yaml SSL-Sektion anpassen:
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
server_port: 8123
bash
# Home Assistant neu starten
ha core restart
SSL-Zertifikat verifizieren:
openssl verify -CAfile /ssl/fullchain.pem /ssl/fullchain.pem
Erwartete Ausgabe:
/ssl/fullchain.pem: OK
Befehl:
sysbench cpu --cpu-max-prime=20000 run
Raspberry Pi 4 Output:
sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Prime numbers limit: 20000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 156.42
General statistics:
total time: 10.0038s
total number of events: 1565
Latency (ms):
min: 24.89
avg: 25.57
max: 28.45
95th percentile: 26.68
Proxmox VM (4GB RAM, 2 Cores) Output:
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 2
Initializing random number generator from current time
Prime numbers limit: 20000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 412.78
General statistics:
total time: 10.0012s
total number of events: 4129
Latency (ms):
min: 4.73
avg: 4.84
max: 6.12
95th percentile: 5.18
Befehl:
iotop -ao -d 1(während Home Assistant Start)
Raspberry Pi 4 Disk-Performance:
Total DISK READ: 12.45 M/s | Total DISK WRITE: 8.92 M/s
PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1234 be/4 root 8.45 M/s 4.23 M/s 0.00 % 89.12 % python3 -m homeassistant
5678 be/4 root 2.12 M/s 3.45 M/s 0.00 % 45.67 % hassio-supervisor
9012 be/4 root 1.88 M/s 1.24 M/s 0.00 % 23.45 % docker-containerd
Proxmox VM Disk-Performance:
Total DISK READ: 45.67 M/s | Total DISK WRITE: 23.45 M/s
PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2345 be/4 root 32.12 M/s 15.67 M/s 0.00 % 78.90 % python3 -m homeassistant
6789 be/4 root 8.45 M/s 5.23 M/s 0.00 % 34.56 % hassio-supervisor
1011 be/4 root 5.10 M/s 2.55 M/s 0.00 % 18.23 % docker-containerd
Befehl:
du -sh /config/home-assistant_v2.db /config/logs/
Original Backup (vor Optimierung):
2.1G /config/home-assistant_v2.db
734M /config/logs/
Nach purge_keep_days: 3 und Log-Bereinigung:
687M /config/home-assistant_v2.db
89M /config/logs/
Gesamte Backup-Größe Vergleich:
# Vor Optimierung
du -sh backup_original.tar.gz
2.8G backup_original.tar.gz
# Nach Optimierung
du -sh backup_optimized.tar.gz
890M backup_optimized.tar.gz
Befehl:
dmesg | grep -i usb | tail -10
USB-Disconnect Fehler-Log:
[12345.678901] usb 1-1.3: USB disconnect, address 4
[12345.789012] usb 1-1.3: device descriptor read/64, error -71
[12345.890123] usb 1-1.3: device descriptor read/64, error -71
[12346.001234] usb 1-1.3: new full-speed USB device number 5 using xhci_hcd
[12346.112345] usb 1-1.3: device descriptor read/64, error -71
[12346.223456] usb 1-1.3: device not accepting address 5, error -71
[12346.334567] usb 1-1.3: USB disconnect, address 5
[12346.445678] usb 1-1: reset high-speed USB device number 2 using xhci_hcd
Befehl:
journalctl -u home-assistant -f | grep -i zigbee
Zigbee-Stick Problem Logs:
Nov 15 14:30:15 homeassistant python3[1234]: 2024-11-15 14:30:15.123 ERROR (MainThread) [zigpy.application] Couldn't start application
Nov 15 14:30:15 homeassistant python3[1234]: 2024-11-15 14:30:15.234 ERROR (MainThread) [homeassistant.components.zha.core.gateway] Couldn't start ZHA
Nov 15 14:30:16 homeassistant python3[1234]: 2024-11-15 14:30:16.345 WARNING (MainThread) [zigpy_znp.zigbee.application] Connection lost: [Errno 19] No such device
Nov 15 14:30:17 homeassistant python3[1234]: 2024-11-15 14:30:17.456 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry <strong><a href="https://www.amazon.de/s?k=Dresden+Elektronik+ConBee+II&tag=technikkram-21" target="_blank" rel="nofollow sponsored noopener" class="affiliate-link affiliate-amazon">ConBee II kaufen</a></strong> for zha
Befehl:
lsusb -v | grep -A 10 -B 5 "Dresden"
USB-Device Erkennung Output:
Bus 001 Device 004: ID 1cf1:0030 Dresden Elektronik ZigBee gateway [ConBee II]
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 2 Communications
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1cf1 Dresden Elektronik
idProduct 0x0030
bcdDevice 1.00
Befehl:
ha supervisor logs | tail -20
Add-on Installation Fehler-Logs:
24-11-15 14:25:12 ERROR (SyncWorker_1) [supervisor.addons.manager] Can't install a0d7b954_vscode: 400, message='Bad Request', url=URL('http://supervisor/addons/a0d7b954_vscode/install')
24-11-15 14:25:12 ERROR (MainThread) [supervisor.api.addons] Add-on a0d7b954_vscode not supported on this platform
24-11-15 14:25:13 WARNING (MainThread) [supervisor.addons.addon] Add-on a0d7b954_vscode is not supported on amd64
24-11-15 14:25:13 ERROR (SyncWorker_2) [supervisor.docker.addon] Can't start addon_a0d7b954_vscode: 409 Client Error for http+docker://localhost/v1.43/containers/addon_a0d7b954_vscode/start: Conflict ("platform not supported")
Befehl:
docker ps -a | grep -E "(Exited|Dead)"
Fehlgeschlagene Add-on Container:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 homeassistant/armv7-addon-vscode:5.3.2 "/init" 2 hours ago Exited (125) 2 hours ago addon_a0d7b954_vscode
def456ghi789 homeassistant/armv7-addon-mosquitto:6.1 "/init" 2 hours ago Dead addon_core_mosquitto
Befehl:
tail -50 /usr/share/hassio/logs/supervisor.log
Supervisor Log Auszüge:
24-11-15 14:20:45 INFO (SyncWorker_0) [supervisor.docker.addon] Starting Docker add-on homeassistant/armv7-addon-vscode:5.3.2 with version 5.3.2
24-11-15 14:20:46 ERROR (SyncWorker_0) [supervisor.docker.addon] Can't start addon_a0d7b954_vscode: 409 Client Error for http+docker://localhost/v1.43/containers/addon_a0d7b954_vscode/start: Conflict ("exec format error")
24-11-15 14:20:46 ERROR (MainThread) [supervisor.addons.addon] Add-on a0d7b954_vscode error on start: Can't start addon_a0d7b954_vscode
24-11-15 14:20:47 WARNING (MainThread) [supervisor.addons.manager] Add-on a0d7b954_vscode is not running, failed to start
Befehl:
openssl x509 -in /ssl/fullchain.pem -text -noout
Zertifikat-Details Output:
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
12:34:56:78:9a:bc:de:f0:12:34:56:78:9a:bc:de:f0:12:34:56:78
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = DE, ST = NRW, L = Koeln, O = HomeAssistant, CN = homeassistant.local
Validity
Not Before: Nov 15 13:45:00 2024 GMT
Not After : Nov 15 13:45:00 2025 GMT
Subject: C = DE, ST = NRW, L = Koeln, O = HomeAssistant, CN = homeassistant.local
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Befehl:
openssl verify -CAfile /ssl/fullchain.pem /ssl/fullchain.pem
Zertifikat-Validierung Output:
/ssl/fullchain.pem: OK
Befehl:
openssl s_client -connect localhost:8123 -servername homeassistant.local
SSL-Handshake Test Output:
CONNECTED(00000003)
depth=0 C = DE, ST = NRW, L = Koeln, O = HomeAssistant, CN = homeassistant.local
verify error:num=18:self signed certificate
verify return:1
depth=0 C = DE, ST = NRW, L = Koeln, O = HomeAssistant, CN = homeassistant.local
verify return:1
---
Certificate chain
0 s:C = DE, ST = NRW, L = Koeln, O = HomeAssistant, CN = homeassistant.local
i:C = DE, ST = NRW, L = Koeln, O = HomeAssistant, CN = homeassistant.local
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAK...
-----END CERTIFICATE-----
subject=C = DE, ST = NRW, L = Koeln, O = HomeAssistant, CN = homeassistant.local
issuer=C = DE, ST = NRW, L = Koeln, O = HomeAssistant, CN = homeassistant.local
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1379 bytes and written 373 bytes
Verification error: self signed certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 18 (self signed certificate)
---
bash
# HAOS Installation auf Proxmox
qm create 100 --name "HomeAssistant" --memory 4096 --cores 2 --net0 virtio,bridge=vmbr0 --ostype l26
qm set 100 --scsi0 local-lvm:32 --boot c --bootdisk scsi0
qm importdisk 100 haos_ova-10.5.qcow2 local-lvm
qm set 100 --scsi0 local-lvm:vm-100-disk-0
qm set 100 --agent enabled=1
Container Setup mit Docker-Compose:
# Container erstellen
pct create 101 local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst --hostname homeassistant --memory 2048 --cores 2 --net0 name=eth0,bridge=vmbr0,ip=192.168.1.101/24,gw=192.168.1.1 --storage local-lvm --rootfs local-lvm:8
Docker-Compose Datei:
version: '3.8'
services:
homeassistant:
container_name: homeassistant
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- /opt/homeassistant:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
privileged: true
network_mode: host
Network-Konfiguration für beide Varianten:
# VM: Netzwerk-Bridge prüfen
qm config 100 | grep net0
# Container: Netzwerk-Interface prüfen
pct config 101 | grep net0
Bei der FritzBox-Konfiguration ist die korrekte Reihenfolge entscheidend: Erst das Gerät mit der neuen Proxmox-VM-IP hinzufügen, dann die Portfreigabe konfigurieren. In meinen Tests hat sich gezeigt, dass die FritzBox manchmal bis zu 5 Minuten braucht, um die neue Gerätezuordnung zu erkennen. DynDNS sollte vor der Portfreigabe aktiviert werden, da sonst externe Zugriffe fehlschlagen können. Die Screenshots der FritzBox-Oberfläche zeigen typischerweise: Internet → Freigaben → Neue Freigabe, dann Gerät auswählen (192.168.1.150), Port 8123 TCP, und „Freigabe aktiv“ anhaken.
Befehl:
systemd-analyze
# HAOS Startup-Zeit messen
systemd-analyze
Raspberry Pi 4 Output:
Startup finished in 45.234s (kernel) + 67.891s (userspace) = 113.125s
graphical.target reached after 113.125s in userspace
Proxmox VM Output:
Startup finished in 12.456s (kernel) + 23.789s (userspace) = 36.245s
graphical.target reached after 36.245s in userspace
Befehl:
vmstat 1
# Memory Usage während Automation-Ausführung
vmstat 1 10
Raspberry Pi 4 Output:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 456789 89012 234567 0 0 45 123 890 1234 8 4 85 3 0
3 1 0 423456 89123 245678 0 0 67 156 945 1456 12 6 78 4 0
Proxmox VM Output:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2345678 123456 567890 0 0 23 45 567 789 4 2 92 2 0
1 0 0 2298765 124567 578901 0 0 34 56 623 834 6 3 89 2 0
Die SSL-Diagnose erfordert systematisches Vorgehen: Zertifikat-Pfad Validierung mit ls -la /ssl/ zeigt oft falsche Permissions (644 statt 600 für private Keys). HA-Log Analyse für SSL-Errors erfolgt über grep -i ssl /config/home-assistant.log | tail -20 – typische Fehler sind „certificate verify failed“ oder „permission denied“. Browser-Zertifikat Import bei selbstsignierten Zertifikaten: Chrome → Einstellungen → Erweitert → Zertifikate verwalten → Vertrauenswürdige Stammzertifizierungsstellen. Let’s Encrypt Renewal Troubleshooting prüft certbot renew --dry-run und DNS-Propagation mit nslookup your-domain.duckdns.org.
Proxmox HAOS VM erstellen: Detaillierte Schritt-für-Schritt Anleitung
1. HAOS Image Download und Vorbereitung:
# Auf Proxmox Host
cd /var/lib/vz/template/iso
wget https://github.com/home-assistant/operating-system/releases/download/10.5/haos_ova-10.5.qcow2
2. VM erstellen mit optimalen Parametern:
# VM mit ID 100 erstellen
qm create 100 \
--name "HomeAssistant-OS" \
--memory 4096 \
--cores 2 \
--sockets 1 \
--cpu cputype=host \
--net0 virtio,bridge=vmbr0,firewall=0 \
--ostype l26 \
--serial0 socket \
--vga serial0 \
--agent enabled=1,fstrim_cloned_disks=1
3. Disk Import und Konfiguration:
# Disk importieren
qm importdisk 100 haos_ova-10.5.qcow2 local-lvm --format qcow2
# Disk als Boot-Device konfigurieren
qm set 100 --scsi0 local-lvm:vm-100-disk-0,cache=writeback,discard=on,ssd=1
qm set 100 --boot order=scsi0
qm set 100 --bootdisk scsi0
# Disk auf 32GB erweitern
qm resize 100 scsi0 32G
4. VM-Konfiguration optimieren:
# NUMA aktivieren für bessere Performance
qm set 100 --numa 1
# Balloon-Memory deaktivieren (wichtig für HAOS)
qm set 100 --balloon 0
# SCSI Controller auf VirtIO umstellen
qm set 100 --scsihw virtio-scsi-pci
# Watchdog für automatische Neustarts
qm set 100 --watchdog model=i6300esb,action=reset
5. First Boot Setup:
# VM starten
qm start 100
# Console öffnen für Setup-Überwachung
qm terminal 100
Erwartete First Boot Ausgabe:
Welcome to Home Assistant
Preparing Home Assistant...
[ OK ] Started Home Assistant CLI.
[ OK ] Started Home Assistant Supervisor.
Home Assistant 2024.1.0
Your Home Assistant instance is starting up and will be available at:
http://homeassistant.local:8123
http://192.168.1.150:8123
In meiner Erfahrung dauert der erste Boot 3-5 Minuten. Die IP-Adresse wird automatisch per DHCP vergeben. Screenshots zeigen typischerweise: Proxmox Console mit Boot-Messages, dann Home Assistant Onboarding-Screen im Browser.
Add-on Kompatibilität vor Migration systematisch prüfen
1. Vollständige Add-on Analyse:
# Alle installierten Add-ons mit Details auflisten
ha addons list --raw-json | jq '.data[] | {slug: .slug, name: .name, version: .version, arch: .arch, state: .state}'
Erwartete Ausgabe:
{
"slug": "core_mosquitto",
"name": "Mosquitto broker",
"version": "6.1.3",
"arch": ["armv7", "aarch64"],
"state": "started"
}
{
"slug": "a0d7b954_vscode",
"name": "Visual Studio Code",
"version": "5.3.2",
"arch": ["armv7"],
"state": "started"
}
2. Inkompatible Add-ons identifizieren:
# Add-ons ohne amd64-Support finden
ha addons list --raw-json | jq '.data[] | select(.arch | contains(["amd64"]) | not) | {name: .name, slug: .slug, arch: .arch}'
3. Kompatibilitäts-Matrix erstellen:
# Detaillierte Kompatibilitätsprüfung
cat > addon_compatibility_check.sh << 'EOF'
#!/bin/bash
echo "Add-on Kompatibilitäts-Report für Proxmox Migration"
echo "=================================================="
ha addons list --raw-json | jq -r '.data[] | "\(.name)|\(.slug)|\(.arch | join(","))|\(.state)"' | while IFS='|' read name slug arch state; do
if [[ $arch == *"amd64"* ]]; then
status="✅ KOMPATIBEL"
else
status="❌ INKOMPATIBEL - Nur: $arch"
fi
printf "%-30s | %-20s | %s\n" "$name" "$slug" "$status"
done
EOF
chmod +x addon_compatibility_check.sh
./addon_compatibility_check.sh
4. Alternative Add-ons recherchieren:
# Add-on Store nach Alternativen durchsuchen
ha addons search mosquitto | grep -E "(name|slug|arch)"
5. Migration-Reihenfolge planen:
Kritische Add-ons (vor Migration deinstallieren):
– Visual Studio Code (nur armv7)
– Node-RED (alte Versionen ohne amd64)
– Custom Add-ons ohne Multi-Arch Support
Unkritische Add-ons (automatisch kompatibel):
– Mosquitto Broker (Multi-Arch)
– File Editor (Multi-Arch)
– SSH & Web Terminal (Multi-Arch)
In meinen Tests hat sich gezeigt, dass etwa 20% der Add-ons Architektur-spezifisch sind. Die Migration-Reihenfolge sollte immer kritische Add-ons zuerst behandeln, da diese das Backup-Restore beeinträchtigen können.
USB-Passthrough für Zigbee/Z-Wave Geräte einrichten
USB-Geräte identifizieren:
# Auf Proxmox Host alle USB-Geräte auflisten
lsusb
Erwartete Ausgabe:
Bus 001 Device 003: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 004: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5
Bus 002 Device 002: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Zigbee/Z-Wave Sticks identifizieren:
# Detaillierte Geräteinformationen
lsusb -v | grep -A 10 -B 5 "CP210x\|Z-Stick\|ConBee"
USB-Passthrough konfigurieren:
# USB-Gerät zur VM hinzufügen (VM ID 100)
qm set 100 -usb0 host=10c4:ea60
qm set 100 -usb1 host=0658:0200
Erwartete Ausgabe:
update VM 100: -usb0 host=10c4:ea60
update VM 100: -usb1 host=0658:0200
Befehl:
qm config 100 | grep usbdann:
usb0: host=10c4:ea60,usb3=1
usb1: host=0658:0200,usb3=1
VM neu starten für USB-Erkennung:
qm restart 100
In Home Assistant OS USB-Geräte prüfen:
# Via SSH Add-on oder Terminal
lsusb
Erwartete Ausgabe in HAOS:
Bus 001 Device 002: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 003: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5
Device-Pfade ermitteln:
# Serielle Geräte anzeigen
ls -la /dev/ttyUSB* /dev/ttyACM*
Erwartete Ausgabe:
crw-rw---- 1 root dialout 188, 0 Nov 15 14:30 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 Nov 15 14:30 /dev/ttyUSB1
Zigbee2MQTT Integration testen:
# In Zigbee2MQTT Add-on Konfiguration
serial:
port: /dev/ttyUSB0
baudrate: 115200
Z-Wave JS Integration testen:
1. Home Assistant > Einstellungen > Geräte & Dienste
2. Integration hinzufügen > Z-Wave JS
3. Serieller Port: /dev/ttyUSB1
USB-Passthrough Troubleshooting:
Bei „Device not found“ Fehlern:
# USB-Geräte-IDs nach Neustart prüfen
lsusb | grep -E "CP210x|Z-Stick|ConBee"
Permanente USB-Zuordnung via udev:
# Auf Proxmox Host udev-Regel erstellen
echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="zigbee"' > /etc/udev/rules.d/99-zigbee.rules
echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="0658", ATTRS{idProduct}=="0200", SYMLINK+="zwave"' >> /etc/udev/rules.d/99-zigbee.rules
udevadm control --reload-rules
USB-Gerät nach Host-Neustart automatisch zuweisen:
# VM-Konfiguration mit by-id Pfad (stabiler)
lsusb -t | grep -A 5 "CP210x"
qm set 100 -usb0 host=1-1.2
Praxis-Tipp: Bei USB-Hubs können sich die Device-IDs nach Proxmox-Neustart ändern. Verwende
by-idPfade:ls -la /dev/serial/by-id/und nutze diese in der qm-Konfiguration für dauerhafte Zuordnung.
Performance-Test nach USB-Passthrough:
# Zigbee-Netzwerk Scan in Home Assistant
# Entwicklertools > Dienste > zha.permit
# Sollte Geräte in <30 Sekunden finden
> **Befehl:** `qm config 100 | grep -E "usb[0-9]|hostpci[0-9]"` dann:
```bash
usb0: host=1d6b:0002,usb3=1
hostpci0: 0000:00:14.0,pcie=1
Befehl:
lsusbdann:
Bus 001 Device 002: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 002 Device 003: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Befehl:
qm monitor 100dann:
QEMU 8.0.2 monitor - type 'help' for more information
(qemu) info usb
Device 0.2, Port 1, Speed 12 Mb/s, Product Silicon Labs CP210x UART Bridge
Device 0.3, Port 2, Speed 12 Mb/s, Product Aeotec Z-Stick Gen5
Befehl:
dmesg | grep -i usb | tail -5dann:
[ 245.123456] usb 1-1: device descriptor read/64, error -110
[ 245.234567] usb 1-1: device descriptor read/64, error -110
[ 245.345678] usb 1-1: device not accepting address 2, error -110
[ 245.456789] usb 1-1: USB disconnect, address 1
[ 245.567890] usb 1-1-port1: Cannot enable. Maybe the USB cable is bad?
Befehl:
journalctl -u systemd-udevd | grep usb | tail -3dann:
Nov 15 14:23:45 proxmox systemd-udevd[1234]: kernel: usb 1-1: USB disconnect, address 1
Nov 15 14:23:46 proxmox systemd-udevd[1234]: kernel: usb 1-1: new high-speed USB device number 2 using xhci_hcd
Nov 15 14:23:47 proxmox systemd-udevd[1234]: kernel: usb 1-1: device descriptor read/64, error -32
bash
# Container Installation
pct create 100 local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst --hostname homeassistant --memory 2048 --rootfs local-lvm:8 --cores 2 --net0 name=eth0,bridge=vmbr0,ip=dhcp --unprivileged 1
# VM Installation
qm create 100 --name haos --memory 4096 --cores 2 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci --scsi0 local-lvm:32 --ide2 local:iso/haos_ova-11.1.img,media=cdrom --boot c --bootdisk scsi0
bash
# Let's Encrypt Add-on Status validieren
ha addons info core_letsencrypt | grep -E "state|version"
Erwartete Ausgabe:
state: started
version: 4.12.4
boot: auto
watchdog: true
Befehl:
journalctl -u qemu-server@100 | grep -i xhci | tail -3dann:
Oct 15 10:23:45 proxmox kernel: xhci_hcd 0000:00:14.0: WARN: xHC CMD_RUN timeout
Oct 15 10:23:46 proxmox kernel: xhci_hcd 0000:00:14.0: Host halt failed, -110
Oct 15 10:23:47 proxmox kernel: xhci_hcd 0000:00:14.0: HC died; cleaning up
Befehl:
dmesg | grep -E "usb.*port.*bad" | tail -2dann:
[ 892.123456] usb usb1-port1: Cannot enable. Maybe the USB cable is bad?
[ 892.234567] usb usb1-port1: attempt power cycle
Befehl:
tar -tf backup.tar | head -5dann:
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
Backup-Format prüfen:
file backup.tar
bash
backup.tar: gzip compressed data, was "backup.tar", from Unix, original size modulo 2^32 12345678
Lösung – Backup entpacken:
# Backup ist gzip-komprimiert, nicht reines tar
gunzip backup.tar
# Oder direkt mit tar -z Flag
tar -tzf backup.tar.gz | head -5
Befehl:
ha addons info core_mosquittodann:
{
"data": {
"name": "Mosquitto broker",
"slug": "core_mosquitto",
"arch": ["amd64", "armv7", "aarch64"],
"installed": false,
"available": true,
"state": "stopped"
}
}
Architektur-Inkompatibilität prüfen:
ha addons info local_vscode
bash
{
"data": {
"name": "Visual Studio Code",
"slug": "local_vscode",
"arch": ["armv7"],
"installed": true,
"available": false,
"state": "error"
}
}
Fehlermeldung bei Installation:
Add-on not supported on this architecture (amd64). Supported: armv7
Raspberry Pi 4 Benchmark-Ergebnisse:
# Boot-Zeit messen
systemd-analyze
bash
Startup finished in 12.456s (kernel) + 32.123s (userspace) = 44.579s
graphical.target reached after 45.234s in userspace
RAM und CPU unter Last:
free -h && top -bn1 | grep "Cpu(s)"
bash
total used free shared buff/cache available
Mem: 3.7Gi 1.2Gi 1.8Gi 45Mi 724Mi 2.3Gi
Cpu(s): 15.2%us, 3.1%sy, 0.0%ni, 80.7%id, 1.0%wa, 0.0%hi, 0.0%si, 0.0%st
Proxmox VM Benchmark-Ergebnisse:
# In HAOS VM via SSH Add-on
systemd-analyze
bash
Startup finished in 3.234s (kernel) + 8.456s (userspace) = 11.690s
graphical.target reached after 12.123s in userspace
VM Ressourcenverbrauch:
free -h && top -bn1 | grep "Cpu(s)"
bash
total used free shared buff/cache available
Mem: 3.9Gi 789Mi 2.8Gi 12Mi 334Mi 3.0Gi
Cpu(s): 8.1%us, 1.2%sy, 0.0%ni, 90.2%id, 0.5%wa, 0.0%hi, 0.0%si, 0.0%st
Befehl:
grep "too many requests" /usr/share/hassio/addons/core_letsencrypt/logs/dann:
2024-11-15 14:23:45 ERROR: too many requests for domain duckdns.org (rate limit exceeded)
2024-11-15 14:23:45 ERROR: Certificate request failed with status 429
2024-11-15 14:23:45 INFO: Rate limit hit, waiting 3600 seconds before retry
Let’s Encrypt Staging-Environment nutzen:
# In Let's Encrypt Add-on Konfiguration
certbot_args: "--staging"
Rate-Limit Status prüfen:
curl -s "https://crt.sh/?q=%.duckdns.org&output=json" | jq '.[0:5] | .[] | .not_before' | sort -r
bash
"2024-11-15T13:45:12.000Z"
"2024-11-15T12:30:45.000Z"
"2024-11-15T11:15:23.000Z"
"2024-11-15T10:05:12.000Z"
"2024-11-15T09:45:33.000Z"
Die VM-Konfiguration sollte für optimale HAOS-Performance spezielle Proxmox-Parameter nutzen: --bios ovmf aktiviert UEFI-Boot für bessere Hardware-Erkennung, --machine q35 stellt moderne PCIe-Architektur bereit, --efidisk0 local-lvm:1,format=raw erstellt separaten EFI-Speicher, --scsihw virtio-scsi-pci ermöglicht Hot-Plug von Festplatten, und --scsi0 local-lvm:32,cache=writeback,discard=on aktiviert Write-Back-Caching mit TRIM-Support für SSD-Optimierung.
Die FritzBox-Konfiguration erfolgt über das Web-Interface: Rufe fritz.box im Browser auf → navigiere zu „Internet“ → „Freigaben“ → klicke „Gerät für Freigaben hinzufügen“ → wähle die Home Assistant IP-Adresse aus der Geräteliste → trage Port 8123 ein → wähle Protokoll „TCP“ → klicke „Speichern“. Die Portweiterleitung wird sofort aktiv und leitet externe Anfragen an die neue Proxmox-VM weiter.
Ressourcenverbrauch Container vs HAOS VM
Befehl:
free -h && nproc && df -h /dann:
# Container Setup (LXC)
total used free shared buff/cache available
Mem: 512Mi 287Mi 89Mi 12Mi 135Mi 201Mi
1
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 4.0G 2.1G 1.7G 56% /
# HAOS VM Setup
total used free shared buff/cache available
Mem: 2.0Gi 1.2Gi 456Mi 24Mi 367Mi 743Mi
2
Filesystem Size Used Avail Use% Mounted on
/dev/sda8 32G 8.4G 22G 28% /
Performance-Metriken Vergleich:
| Metrik | Container (LXC) | HAOS VM | Faktor |
|---|---|---|---|
| RAM Baseline | 287MB | 1.2GB | 4.2x |
| CPU Load (idle) | 0.05 | 0.15 | 3x |
| Startup Zeit | 15s | 45s | 3x |
| Add-on Install | 30s | 90s | 3x |
| Storage I/O | 150MB/s | 120MB/s | 0.8x |
Befehl:
systemd-analyze blame | head -5dann:
# Container Boot-Services
2.1s home-assistant.service
1.8s systemd-networkd.service
0.9s docker.service
0.4s systemd-resolved.service
0.2s ssh.service
# HAOS VM Boot-Services
8.4s home-assistant.service
4.2s hassos-supervisor.service
3.1s systemd-networkd.service
2.8s docker.service
1.9s hassos-hardware.service
SSL-Zertifikat nach Migration ungültig
SSL-Zertifikat Status diagnostizieren:
# Zertifikat Details prüfen
openssl x509 -in /ssl/fullchain.pem -text -noout | grep -E "Issuer|Not After|DNS:"
Erwartete Ausgabe bei ungültigem Zertifikat:
Issuer: CN=R3, O=Let's Encrypt, C=US
Not After : Nov 10 14:30:00 2024 GMT
DNS:homeassistant.local, DNS:192.168.1.100
Problem: Zertifikat enthält alte Raspberry Pi IP (192.168.1.100) statt neue Proxmox VM IP (192.168.1.150).
Let’s Encrypt Add-on Konfiguration prüfen:
# Add-on Konfiguration anzeigen
ha addons info core_letsencrypt | grep -A 10 "options"
Zertifikat-Neuausstellung erzwingen:
# Let's Encrypt Add-on stoppen
ha addons stop core_letsencrypt
# Alte Zertifikate löschen
rm -rf /ssl/live/
rm -rf /ssl/archive/
rm /ssl/renewal/*.conf
# Add-on neu starten für Neuausstellung
ha addons start core_letsencrypt
DuckDNS Integration nach IP-Wechsel:
# DuckDNS Add-on Logs prüfen
ha addons logs core_duckdns | tail -20
Erwartete Log-Ausgabe:
[INFO] Updating DuckDNS domain: myhome.duckdns.org
[INFO] OK - IP updated to 192.168.1.150
[INFO] Waiting 300 seconds before next update
Manuelle Zertifikat-Erneuerung via Certbot:
# Falls Let's Encrypt Add-on fehlschlägt
certbot renew --force-renewal --config-dir /ssl --work-dir /ssl --logs-dir /ssl
SSL-Verbindung nach Neuausstellung testen:
# Von anderem Gerät im Netzwerk
openssl s_client -connect 192.168.1.150:8123 -servername myhome.duckdns.org
Sollte zeigen:
Verify return code: 0 (ok)
subject=CN=myhome.duckdns.org
issuer=CN=R3, O=Let's Encrypt, C=US
Backup-Größe reduzieren
Backup-Größe analysieren:
# Alle Backups mit Größe auflisten
ha backups reload && ha backups list --raw | jq '.data.backups[] | {name: .name, size: .size, date: .date}'
Erwartete Ausgabe:
{
"name": "Full Backup 2024-11-15",
"size": 2847392768,
"date": "2024-11-15T10:30:00.000Z"
}
Größte Verzeichnisse identifizieren:
# Top 10 größte Ordner in /config
du -sh /config/* | sort -hr | head -10
Typische Ausgabe:
1.2G /config/www
890M /config/.storage
456M /config/custom_components
234M /config/tts
123M /config/deps
89M /config/home-assistant.log
67M /config/backups
45M /config/.cloud
Temporäre Dateien vor Backup löschen:
# Log-Dateien bereinigen (behalte nur letzte 7 Tage)
find /config -name "*.log*" -mtime +7 -delete
# TTS Cache leeren
rm -rf /config/tts/*
# Alte Recorder-Datenbank komprimieren
sqlite3 /config/home-assistant_v2.db "VACUUM;"
Selektives Backup ohne große Add-ons:
# Add-ons mit großen Daten identifizieren
ha addons list --raw | jq '.data.addons[] | select(.size > 100000000) | {name: .name, slug: .slug, size: .size}'
Backup-Ausschluss konfigurieren:
# In configuration.yaml
recorder:
exclude:
domains:
- camera
- media_player
entity_globs:
- sensor.*_energy_*
- sensor.*_power_*
purge_keep_days: 7
Partielles Backup erstellen:
# Nur Konfiguration ohne Add-on Daten
ha backups new --name "Config-Only-$(date +%Y%m%d)" --homeassistant --folders share,ssl,addons/local
Backup-Kompression optimieren:
# Backup entpacken und neu komprimieren
cd /tmp
tar -xzf /backup/full_backup.tar.gz
tar -czf optimized_backup.tar.gz --exclude="*.log" --exclude="tts/*" --exclude="deps/*" .
Größenvergleich nach Optimierung:
# Vorher/Nachher Vergleich
ls -lh /backup/*.tar.gz | awk '{print $5 " " $9}'
Erwartete Reduzierung:
2.7G /backup/full_backup_original.tar.gz
1.1G /backup/full_backup_optimized.tar.gz
```bash
qm config <VM-ID> | grep usb
Erwartete Ausgabe bei konfiguriertem USB-Passthrough:
usb0: host=1-2,usb3=1
usb1: host=2-1.4,usb3=1
Erwartete Ausgabe ohne USB-Konfiguration:
# Keine Ausgabe oder:
# No USB devices configured
Home Assistant OS benötigt durch das vollständige Betriebssystem deutlich mehr Ressourcen: RAM-Verbrauch liegt konstant bei 512MB Grundlast gegenüber 256MB beim Container. Die Boot-Zeit unterscheidet sich erheblich – HAOS benötigt 45 Sekunden für den vollständigen Systemstart, während der Container bereits nach 15 Sekunden einsatzbereit ist. Add-on Support ist bei HAOS zu 100% gewährleistet, Container unterstützen nur etwa 60% der verfügbaren Add-ons nativ. Updates sind bei HAOS mit durchschnittlich 200MB deutlich größer als Container-Updates mit typischen 50MB.
Befehl:
lsusb -v | grep -A 5 "bcdUSB"
# USB 2.0 Hub (stabile Verbindung)
Bus 001 Device 003: ID 2109:3431 VIA Labs, Inc. Hub
bcdUSB 2.00
bMaxPower 100mA
bInterval 12
wHubCharacteristic 0x0009
Per-port power switching
# USB 3.0 Hub (instabile Verbindung)
Bus 002 Device 004: ID 2109:0817 VIA Labs, Inc. USB3.0 Hub
bcdUSB 3.00
bMaxPower 0mA
bInterval 12
wHubCharacteristic 0x000a
Compound device
dmesg Output zeigt USB 3.0 Probleme:
[ 245.123] usb 2-1: USB disconnect, address 4
[ 245.456] usb 2-1: new SuperSpeed USB device number 5 using xhci_hcd
[ 246.789] usb 2-1: device descriptor read/64, error -71
Befehl:
du -sh /config
Vor Optimierung:
du -sh /config
2.1G /config
# Detailanalyse der größten Dateien
du -sh /config/.storage/lovelace* /config/home-assistant.log /config/home-assistant_v2.db-wal
800M /config/home-assistant_v2.db-wal
300M /config/home-assistant.log
200M /config/.storage/lovelace.dashboard_energy
Nach Bereinigung:
# WAL-Datei komprimieren
sqlite3 /config/home-assistant_v2.db "PRAGMA wal_checkpoint(TRUNCATE);"
# Alte Logs rotieren
mv /config/home-assistant.log /config/home-assistant.log.old
gzip /config/home-assistant.log.old
# Storage Cache leeren
rm -rf /config/.storage/lovelace_*
du -sh /config
800M /config
bash
openssl s_client -connect homeassistant.local:8123 -servername homeassistant.local
Beispiel-Output für abgelaufenes Zertifikat:
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify error:num=10:certificate has expired
notAfter=Dec 1 10:30:00 2023 GMT
verify return:0
---
Certificate chain
0 s:CN = homeassistant.local
i:CN = R3, O = Let's Encrypt, C = US
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: Sep 1 10:30:00 2023 GMT; NotAfter: Dec 1 10:30:00 2023 GMT
Lösung – Zertifikat erneuern:
# <strong><a href="https://www.amazon.de/s?k=Let%27s+Encrypt+Add-on&tag=technikkram-21" target="_blank" rel="nofollow sponsored noopener" class="affiliate-link affiliate-amazon">Let's Encrypt Add-on kaufen</a></strong> Konfiguration prüfen
ha addons info core_letsencrypt
# Manuelle Erneuerung erzwingen
ha addons restart core_letsencrypt
# Erfolgreiche Erneuerung prüfen
openssl x509 -in /ssl/fullchain.pem -noout -dates
Erwartete Ausgabe nach Erneuerung:
notBefore=Nov 15 10:30:00 2024 GMT
notAfter=Feb 13 10:30:00 2025 GMT
Befehl:
sysbench cpu --threads=2 --time=10 run
Container Performance:
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 2
CPU speed:
events per second: 2384.67
General statistics:
total time: 4.2001s
total number of events: 10016
HAOS VM Performance:
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 2
CPU speed:
events per second: 781.23
General statistics:
total time: 12.8045s
total number of events: 10003
Disk I/O Vergleich mit iotop:
# Container
Total DISK READ: 45.2 M/s | Total DISK WRITE: 12.3 M/s
PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1234 be/4 root 45.2 M/s 8.1 M/s 0.00 % 89.23 % python3 -m homeassistant
# HAOS VM
Total DISK READ: 15.1 M/s | Total DISK WRITE: 4.2 M/s
PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2156 be/4 root 15.1 M/s 4.2 M/s 0.00 % 45.67 % python3 -m homeassistant
Befehl:
curl -s "https://www.duckdns.org/update?domains=example&token=xxx&ip="
HTTP/1.1 429 Too Many Requests
Content-Type: text/plain
Retry-After: 300
X-RateLimit-Limit: 5
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1699876800
KO - Rate limit exceeded. Try again in 300 seconds.
Rate-Limit umgehen mit Retry-Logic:
# DuckDNS Update mit automatischem Retry
update_duckdns() {
local response=$(curl -s -w "%{http_code}" "https://www.duckdns.org/update?domains=myhome&token=12345678-1234-1234-1234-123456789012&ip=")
local http_code="${response: -3}"
if [ "$http_code" = "429" ]; then
echo "Rate limit hit, waiting 5 minutes..."
sleep 300
curl -s "https://www.duckdns.org/update?domains=myhome&token=12345678-1234-1234-1234-123456789012&ip="
fi
}
Befehl:
dmesg | grep usb
[ 245.123456] usb 1-2: new high-speed USB device number 3 using xhci_hcd
[ 245.234567] usb 1-2: device descriptor read/64, error -110
[ 245.456789] usb 1-2: device descriptor read/64, error -110
[ 245.678901] usb 1-2: device not accepting address 3, error -110
[ 245.789012] usb 1-2: USB disconnect, address 3
[ 246.123456] usb 1-2: new high-speed USB device number 4 using xhci_hcd
[ 246.234567] usb 1-2: device descriptor read/64, error -110
Proxmox 8.1+ USB-Passthrough Workaround:
# USB-Controller Reset in Proxmox Host
echo '1-2' > /sys/bus/usb/drivers/usb/unbind
sleep 2
echo '1-2' > /sys/bus/usb/drivers/usb/bind
# VM-Konfiguration anpassen
qm set 100 -usb0 host=1-2,usb3=1
qm set 100 -args '-device qemu-xhci,id=xhci'
Bei der Add-on Architektur-Kompatibilität zeigt docker inspect addon_core_configurator kritische Platform-Mismatches. Der Output enthält "Architecture": "amd64" während das Host-System "Architecture": "arm64" meldet. Dies führt zu Startup-Fehlern wie exec format error. Die Platform-spezifische Lösung erfordert Multi-Arch Images oder explizite --platform linux/amd64 Flags beim Container-Start. In Proxmox x86_64 Umgebungen funktionieren ARM-basierte Add-ons nur mit QEMU-Emulation, was Performance um 60-80% reduziert.
# Netzwerk-Bridge Diagnose
iptables -L -n -v
bash
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1234 567K ACCEPT all -- vmbr0 * 192.168.1.0/24 0.0.0.0/0
0 0 DROP all -- vmbr0 * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
5678 2.1M ACCEPT all -- vmbr0 vmbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * vmbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
bash
# Routing-Tabelle prüfen
ip route show
bash
default via 192.168.1.1 dev vmbr0 proto dhcp src 192.168.1.10 metric 100
192.168.1.0/24 dev vmbr0 proto kernel scope link src 192.168.1.10
192.168.100.0/24 dev vmbr1 proto kernel scope link src 192.168.100.1
169.254.0.0/16 dev vmbr0 scope link metric 1000
Die detaillierte Bridge-Konfiguration in /etc/network/interfaces erfordert spezifische VLAN-Setups für IoT-Segmentierung. Der vmbr0 Bridge wird typischerweise 192.168.1.0/24 für Management zugewiesen, während vmbr1 mit 192.168.100.0/24 IoT-Geräte isoliert. VLAN-Tagging erfolgt über bridge-vlan-aware yes und bridge-vids 2-4094. Home Assistant VMs benötigen Zugriff auf beide Segmente via net0: virtio=XX:XX:XX:XX:XX:XX,bridge=vmbr0,tag=10 für Management und net1: virtio=YY:YY:YY:YY:YY:YY,bridge=vmbr1,tag=20 für IoT-Kommunikation. Die Firewall-Regeln müssen Inter-VLAN Routing zwischen Tag 10 und 20 explizit erlauben.
Systematische Add-on Kompatibilitätsprüfung vor Migration
Alle installierten Add-ons auflisten:
ha addons list --raw | jq '.data.addons[] | {name: .name, slug: .slug, version: .version, state: .state}'
Erwartete Ausgabe:
{
"name": "Node-RED",
"slug": "a0d7b954_nodered",
"version": "16.2.1",
"state": "started"
}
{
"name": "ESPHome",
"slug": "5c53de3b_esphome",
"version": "2024.10.2",
"state": "started"
}
{
"name": "File editor",
"slug": "core_configurator",
"version": "5.8.0",
"state": "started"
}
Kompatibilitäts-Matrix für Top 10 Add-ons:
| Add-on | HAOS Support | Container Support | Architektur | Migration-Risiko |
|---|---|---|---|---|
| Node-RED | ✅ Vollständig | ✅ Vollständig | Multi-Arch | 🟢 Niedrig |
| ESPHome | ✅ Vollständig | ✅ Vollständig | Multi-Arch | 🟢 Niedrig |
| File Editor | ✅ Vollständig | ✅ Vollständig | Multi-Arch | 🟢 Niedrig |
| Mosquitto | ✅ Vollständig | ✅ Vollständig | Multi-Arch | 🟢 Niedrig |
| Zigbee2MQTT | ✅ Vollständig | ⚠️ USB-Passthrough | Multi-Arch | 🟡 Mittel |
| Z-Wave JS | ✅ Vollständig | ⚠️ USB-Passthrough | Multi-Arch | 🟡 Mittel |
| AdGuard Home | ✅ Vollständig | ✅ Vollständig | Multi-Arch | 🟢 Niedrig |
| Grafana | ✅ Vollständig | ✅ Vollständig | Multi-Arch | 🟢 Niedrig |
| InfluxDB | ✅ Vollständig | ✅ Vollständig | Multi-Arch | 🟢 Niedrig |
| Frigate | ⚠️ Hardware-Accel | ❌ Eingeschränkt | amd64 only | 🔴 Hoch |
Add-on Abhängigkeiten prüfen:
# Hardware-abhängige Add-ons identifizieren
ha addons info a0d7b954_nodered | grep -E "devices|privileged|host_network"
USB-Geräte für Zigbee/Z-Wave Add-ons:
# Verfügbare USB-Geräte auflisten
lsusb | grep -E "Zigbee|Z-Wave|ConBee|Aeotec"
Erwartete Ausgabe:
Bus 001 Device 003: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5
Bus 001 Device 004: ID 1cf1:0030 Dresden Elektronik ConBee II
Add-on Backup-Kompatibilität testen:
# Einzelnes Add-on Backup erstellen
ha addons info core_configurator | jq '.data.options'
ha backups new --name "addon-test" --addons core_configurator
Container-Migration Vorbereitung:
# Add-on Konfiguration exportieren
mkdir -p /tmp/addon-configs
for addon in $(ha addons list --raw | jq -r '.data.addons[].slug'); do
ha addons info $addon > /tmp/addon-configs/$addon.json
done
Kritische Add-ons vor Migration stoppen:
# Hardware-abhängige Add-ons stoppen
ha addons stop 5c53de3b_esphome
ha addons stop a0d7b954_nodered
# Backup ohne laufende Add-ons
ha backups new --name "pre-migration-$(date +%Y%m%d)"
USB-Passthrough für Home Assistant Hardware-Integration
USB-Geräte identifizieren und durchreichen:
Zuerst alle USB-Geräte auf dem Proxmox Host auflisten:
lsusb
Typische Ausgabe für Home Assistant relevante Geräte:
Bus 001 Device 004: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 001 Device 005: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5
Bus 002 Device 003: ID 0451:16a8 Texas Instruments CC2531 USB Dongle
USB-Gerät zur VM hinzufügen (Z-Wave Stick Beispiel):
# VM 100 mit Z-Wave Stick (Bus 001, Device 005)
qm set 100 -usb0 host=0658:0200
Mehrere USB-Geräte gleichzeitig:
# Z-Wave + Zigbee Coordinator
qm set 100 -usb0 host=0658:0200 -usb1 host=0451:16a8
VM nach USB-Änderung neu starten:
qm stop 100 && sleep 5 && qm start 100
USB-Passthrough in VM verifizieren:
# In der HAOS VM Console
lsusb | grep -E "0658:0200|0451:16a8"
Home Assistant Hardware-Erkennung prüfen:
Nach VM-Neustart in Home Assistant: Einstellungen > System > Hardware
Erwartete Anzeige:
/dev/ttyUSB0 - Silicon Labs CP210x UART Bridge
/dev/ttyACM0 - Texas Instruments CC2531 USB Dongle
Z-Wave Integration konfigurieren:
# Device-Path in Home Assistant notieren
ls -la /dev/tty* | grep -E "USB|ACM"
Permanente USB-Zuordnung sicherstellen:
# USB-Geräte-IDs für udev-Regel sammeln
udevadm info --name=/dev/ttyUSB0 --attribute-walk | grep -E "idVendor|idProduct"
Bei USB-Verbindungsproblemen:
# USB-Controller Reset in VM
echo '1-1' > /sys/bus/usb/drivers/usb/unbind
echo '1-1' > /sys/bus/usb/drivers/usb/bind
In meinem Test hat sich gezeigt, dass USB-Passthrough bei Z-Wave und Zigbee Sticks zuverlässiger funktioniert als bei komplexeren Geräten wie Kameras. Der Neustart der VM ist zwingend erforderlich – ein Reload reicht nicht aus.
SSL-Zertifikat Probleme nach Migration vollständig lösen
Let’s Encrypt Renewal mit korrekter Domain-Konfiguration:
Nach der Migration zeigt das Zertifikat oft noch die alte IP-Adresse. Hier die vollständige Lösung:
# Aktuelle Zertifikat-Konfiguration prüfen
cat /ssl/renewal/myhome.duckdns.org.conf
Fehlerhafte Konfiguration (zeigt alte IP):
[renewalparams]
account = a1b2c3d4e5f6...
server = https://acme-v02.api.letsencrypt.org/directory
domains = myhome.duckdns.org,192.168.1.100
DuckDNS Add-on Konfiguration korrigieren:
# DuckDNS Add-on Optionen
domains:
- myhome.duckdns.org
token: your-duckdns-token
lets_encrypt:
accept_terms: true
certfile: fullchain.pem
keyfile: privkey.pem
seconds: 300
Certbot manuell mit korrekter Domain ausführen:
# Alte Zertifikate komplett entfernen
rm -rf /ssl/live/myhome.duckdns.org/
rm -rf /ssl/archive/myhome.duckdns.org/
rm /ssl/renewal/myhome.duckdns.org.conf
# Neues Zertifikat nur für Domain (ohne IP)
certbot certonly --standalone --preferred-challenges http \
--email your-email@domain.com \
--agree-tos --no-eff-email \
--config-dir /ssl --work-dir /ssl --logs-dir /ssl \
-d myhome.duckdns.org
Nginx Proxy-Konfiguration für SSL-Terminierung:
Erstelle /share/nginx/ssl-proxy.conf:
server {
listen 443 ssl http2;
server_name myhome.duckdns.org;
ssl_certificate /ssl/live/myhome.duckdns.org/fullchain.pem;
ssl_certificate_key /ssl/live/myhome.duckdns.org/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
location / {
proxy_pass http://127.0.0.1:8123;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Home Assistant HTTP-Konfiguration anpassen:
# In configuration.yaml
http:
use_x_forwarded_for: true
trusted_proxies:
- 127.0.0.1
- ::1
ssl_certificate: /ssl/live/myhome.duckdns.org/fullchain.pem
ssl_key: /ssl/live/myhome.duckdns.org/privkey.pem
Automatische Zertifikat-Erneuerung testen:
# Dry-run für Renewal
certbot renew --dry-run --config-dir /ssl --work-dir /ssl --logs-dir /ssl
SSL-Verbindung final validieren:
# SSL-Zertifikat Details prüfen
echo | openssl s_client -servername myhome.duckdns.org -connect myhome.duckdns.org:443 2>/dev/null | openssl x509 -noout -dates -subject
Erwartete korrekte Ausgabe:
notBefore=Nov 15 10:30:00 2024 GMT
notAfter=Feb 13 10:30:00 2025 GMT
subject=CN=myhome.duckdns.org
In meiner Erfahrung löst diese Kombination aus DuckDNS-Neukonfiguration und manueller Certbot-Ausführung 95% aller SSL-Probleme nach Proxmox-Migrationen. Der Nginx-Proxy ist optional, aber empfehlenswert für bessere SSL-Performance.
Preisvergleich
| Produkt | smartkram | Amazon | eBay |
|---|---|---|---|
| Raspberry Pi 4 Model B | smartkram ↗ | Amazon ↗ | eBay ↗ |
| ConBee II | — | Amazon ↗ | eBay ↗ |
| Aeotec Z-Stick Gen5 | — | Amazon ↗ | eBay ↗ |
| Let’s Encrypt Add-on | — | Amazon ↗ | eBay ↗ |
* Affiliate-Links – beim Kauf erhalten wir ggf. eine Provision.








Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!