Migration Home Assistant (RPi –> Mini PC)

Hintergrund

Vor ca. 3 Wochen (Stand April 26) habe ich einen Teil meiner Smart Home Geräte von HomeKit auf Home Assistant (HA). Es läuft soweit stabil, allerdings kommt der RPi mit seinem 1 GB RAM an seine Grenze. Deshalb habe ich einen Mini PC bestellt mit 8 GB RAM und einer 256 GB SSD. Es steht in dieser Konfiguration nur ein RAM Update an, ansonsten sollte der Mini PC ausreichend sein. Hier die Konfiguration:

Fujitsu Q558 Mini PC – Intel i3-9100 8GB RAM + 256GB SSD m.2

Er wird über LAN angebunden und bekommt sand heute, keine „Sendeeinheiten“, da das Haus sehr gut abgedeckt ist.

Vorbereitung:

Der Mini PC soll mit PROXMOX laufen. Dadurch sollten sich einige Vereinfachungen -wie die Backup und Test Strategie- realisieren lassen. Zum flashen des Geräts wird ein USB-A Stick benötigt, von dem gebootet werden kann. Am Mac habe ich es so gemacht:

PROXMOX Download: https://www.proxmox.com/en/downloads

Festplatten Dienstprogramm:
Bestehenden Stick löschen.

Dann im Terminal schauen wie der Stick gemountet ist und das Image per dd auf dem Stick erstellen:

diskutil list

/dev/disk0 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        *1.0 TB     disk0

   1:             Apple_APFS_ISC Container disk2         524.3 MB   disk0s1

   2:                 Apple_APFS Container disk3         994.7 GB   disk0s2

   3:        Apple_APFS_Recovery Container disk1         5.4 GB     disk0s3

/dev/disk3 (synthesized):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      APFS Container Scheme -                      +994.7 GB   disk3

                                 Physical Store disk0s2

   1:                APFS Volume Macintosh HD            12.5 GB    disk3s1

   2:              APFS Snapshot com.apple.os.update-... 12.5 GB    disk3s1s1

   3:                APFS Volume Preboot                 8.7 GB     disk3s2

   4:                APFS Volume Recovery                1.3 GB     disk3s3

   5:                APFS Volume Data                    395.7 GB   disk3s5

   6:                APFS Volume VM                      5.4 GB     disk3s6

/dev/disk4 (disk image):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:                                                   +16.0 TB    disk4

/dev/disk5 (external, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        *15.7 GB    disk5

   1:                        EFI EFI                     209.7 MB   disk5s1

   2:       Microsoft Basic Data PROXMOX                 15.5 GB    disk5s2

/dev/disk6 (synthesized):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      APFS Container Scheme -                      +16.0 TB    disk6

                                 Physical Stores 

   1:                APFS Volume Backups von MacBook Air 404.3 GB   disk6s1

bash-3.2$ diskutil unmountDisk /dev/disk5

Unmount of all volumes on disk5 was successful

bash-3.2$ sudo dd if=Public/proxmox-ve_9.1-1.iso of=/dev/rdisk5 bs=1m

Password:

1747+1 records in

1747+1 records out

1831886848 bytes transferred in 171.905820 secs (10656340 bytes/sec)

bash-3.2$ sync

bash-3.2$ diskutil eject /dev/disk5

Disk /dev/disk5 ejected

Desweiteren muss bedacht werden, dass der Mini PC nur einen DisplayPort als Ausgang hat. Das ist zwar kein Problem für den späteren Dauer-Betrieb, für das Aufsetzen ist es aber Problematisch, da PROXMOX unter bestimmten Voraussetzungen BIOS Einstellungen benötigt und die kann man nur mit einem Monitor und Tastatur durchführen. Deshalb habe ich mir einen günstigen HDMI – Displayport Adapter bestellt.

Nachdem der Mini PC geliefert wurde, habe ich als erstes geprüft ob der PC startet und sich im Netz einbucht. Das tat er, sodass ich mit dem Einbau der speicher-Riegel weitermachen konnte. Dann noch ein erfolgreicher Start-Versuch und es sah so aus:

Dann den PROXMOX-USB-Boot-Stick einstecken und mit F12 booten:

Der 4. Eintrag ist der Boot-Stick!

Hier nun die ersten Schritte mit der Konfiguration:

 

Installation (wichtigste Parameter)

Filesystem: ext4
Disk: /dev/nvme0n1
Hostname: proxmox
IP: 192.168.2.50/24
Gateway: 192.168.2.1
DNS: 192.168.2.1

Proxmox erreichbar unter:

 https://192.168.2.50:8006

Proxmox Initial Setup

No-Subscription Repo aktiviert

echo „deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription“ > /etc/apt/sources.list.d/pve-no-subscription.list
apt update && apt upgrade -y

Enterprise Repo deaktiviert (manuell korrigiert)

.sources Files bereinigt

Subscription Popup entfernt

sed -i „s/data.status !== ‚Active’/false/g“ /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy

 Netzwerk-Konfiguration

cat /etc/network/interfaces

auto lo
iface lo inet loopback

iface nic0 inet manual

auto vmbr0
iface vmbr0 inet static
address 192.168.2.50/24
gateway 192.168.2.1
bridge-ports nic0
bridge-stp off
bridge-fd 0

Ergebnis:

 

  • Bridge vmbr0 korrekt aktiv

  • VMs können direkt ins LAN

Home Assistant VM – erster erfolgloser Ansatz

Methode

  • Import .qcow2 (OVA)

Problem

  • VM bootete nicht sauber

  • Netzwerk (DHCP) funktionierte nicht

 Entscheidung: Neu aufsetzen mit RAM Image.

Home Assistant VM – finaler Aufbau

VM 102 erstellt (GUI)

Konfiguration

Parameter

Wert

BIOS

OVMF (UEFI)

Machine

q35

CPU

host

Cores

2

RAM

4096 → später 8192

Disk

32 GB (SCSI)

Controller

VirtIO SCSI

Network

VirtIO + vmbr0

Disk-Import (Durchbruch)

Image erstellt mit:
wget https://github.com/home-assistant/operating-system/releases/download/17.1/haos_generic-x86-64-17.1.img.xz
unxz haos_generic-x86-64-17.1.img.xz

Image direkt auf LVM schreiben

dd if=haos_generic-x86-64-17.1.img of=/dev/pve/vm-102-disk-2 bs=4M status=progress conv=fsync

Das war der Gamechanger.

VM Konfiguration final

qm set 102 --scsi0 local-lvm:vm-102-disk-2
qm set 102 --boot order=scsi0
qm set 102 --scsihw virtio-scsi-pci
qm set 102 --cpu host
qm set 102 --vga std

Home Assistant OS bootet korrekt.

Netzwerk-Fix

Problem

  • VM bekam keine IP

Ursache

  • falsche Kombination aus:

    • BIOS (UEFI vs SeaBIOS)

    • Image-Typ

    Lösung

  • Verwendung des generic RAW Images

  • Standard VirtIO Netzwerk

Migration Home Assistant

Backup erstellen (alte Instanz)

Alte IP Adresse merken! Das wird später die neue und man muss nichts umkonfigurieren.
Auswahl:

  • Einstellungen   ✅

  • Verlauf                ✅

  • Medien               ✅

  • Share                  ✅

  • Apps: ALLE     ✅

Restore in neuer VM

  • Backup hochgeladen

  • Wiederherstellung durchgeführt

Ergebnis: komplette Umgebung übernommen!

IP Migration (kritischer Schritt)

Vorgehen

  1. Raspberry Pi ausschalten (IP: 192.168.2.213)

  2. In Unifi: VM → feste IP zuweisen: 192.168.2.213

  3. VM reboot

Keine Änderungen in Integrationen im HA notwendig! Die Unterbrechung war unter 2 min!

MQTT / Geräte Problem

Symptom

  • Raffstore reagiert nicht

Ursache

  • MQTT Session nicht sauber nach Migration

Lösung

MQTT Integration in HA neu laden: sofort wieder funktionsfähig

Storage Cleanup

Entfernt Reste von VM Versuchen:

qm destroy 100 --destroy-unreferenced-disks 1
qm destroy 101 --destroy-unreferenced-disks 1
qm unlink 102 --idlist unused1

Ergebnis: Thin Pool Nutzung: ~9%

Snapshot

erstellt:

clean_migration_ok: erstellen ohne RAM

Optimierung

Autostart

qm set 102 --onboot 1

RAM Upgrade for Home Assistant

qm set 102 --memory 8192

Backup-Strategie

Proxmox Backup Job

  • Storage: local

  • Mode: snapshot

  • Compression: zstd

  • Retention: z. B. keep-last 3

Gesamtfazit

Technisch erreicht

  • Ablösung Raspberry Pi

  • stabile Virtualisierung

  • saubere Netzwerk-Integration

  • vollständige Migration ohne Datenverlust

Architektur jetzt

Mini PC (Proxmox)
└── VM: Home Assistant OS
└── MQTT
└── Automationen
└── Raffstore Steuerung (Pi extern, siehe Projekte)

Vorteile

  • deutlich höhere Performance

  • saubere Trennung Infrastruktur / Anwendung

  • Backup & Snapshot möglich

  • erweiterbar (weitere VMs / Container)