I just finished migrating my Home Assistant installation from a Raspberry pi to an Intel NUC and I thought I'd share my experience. All in all, it went well but there were a couple of pain points I'd like to have known in advance.
Here's what I did. First, I prepared the NUC for installation. Rather than going bare metal, I installed proxmox because I plan on running other stuff on it as well. Proxmox installation was very straightforward, but figuring out how to install HA on it wasn't, as I've never used proxmox before.
I first tried to use the HA image as a virtual installation medium, which did not work. I realized that, like with the RPi, it's not an installer but a ready to use disk image. I found a nice guide on how to install HA on proxmox with a handy helper script to set everything up for you.
Now I had a new HA instance running, ready for initial setup. Time for the switchover:
- I made a new full backup on the Raspberry Pi, then shut it down.
- I reassigned the Home Assistant IP address to the VM in my router's DHCP settings.
- I logged in to the new HA instance and uploaded the backup file using the restore from back option on the setup screen.
This is where HA still has a pain point. There is no progress bar or anything to let you know the state of the restoration process. It took quite a while until the web UI came back up (and I'm not sure which log file I should have been monitoring in the console) and once it finally did, the add-ons were stuck in a weird state where some of them appeared to be running but were still shown as stopped. HA core was operational already, including all Wifi based integrations. Zigbee2mqtt wasn't up yet because I hadn't yet passed through the zigbee stick.
After I had grown tired of waiting, I rebooted the VM and now the add-ons started up properly. All the settings were migrated, including Mosquitto's state. Very nice!
The last things to fix were:
- Pass through the zigbee USB stick. I did this from the proxmox VM's hardware tab: Add USB device, use USB vendor/device ID and selected the one that said serial port. Zigbee2mqtt started working after doing this.
- Pass through bluetooth. The NUC's built-in bluetooth adapter was also visible as a USB device. There were only two devices in proxmox's USB device dropdown: the zigbee stick and an unnamed device. The unnamed one was the bluetooth adapter. In HA devices, I removed the old RPI bluetooth device and added the new one and immediately started receiving updates from my Ruuvi Tags.
- Deleted RPi power supply check device
All in all, a fairly smooth migration, with the only bump on the road being the lack of progress reporting when restoring from backup. Would recommend. The NUC (A NUC11 with a Celeron N4505 processor) plus memory and NVME drive was only about twice as expensive as a RPi4 with an SD card but is a lot more powerful with a similar idle power consumption of around 6W.
I considered bare metal HASSOS too and would have gone that route if HA were the only thing I was planning on running. Another option would have been to install a linux distro and run HA in docker, but having HA in its own separate VM means I don’t need to worry about accidentally breaking it when I’m messing around with other services.
Now, having written this, I realize that there would have been some real advantages in running HA in docker on a bare metal OS. For one, it would have made running Frigate easier, as its documentation recommends against running it in a VM.
I started with it on proxmox and ran into the same issues with frigate. Though I also have a separate NAS machine running unraid that happily runs my other containers to play around with. I have enough controlled by HA that it was worth dedicating it to one whole machine to run it in the most supported way by the ha devs.