HomeAssistant_inabox_v3

HomeAssistant_inabox_v3

Docker app from SpaceInvaderOne's Repository

Overview

HomeAssistant_inabox installs Home Assistant OS as a virtual machine on your Unraid server through a short setup wizard - it does not run Home Assistant itself inside this container. Open this container's WebUI, pick a Home Assistant OS release and a few settings, and it creates the VM, downloads and attaches the disk, and hands you back a normal Unraid VM. Once a Home Assistant VM exists - whether this wizard created it or you already had one running - this container's WebUI becomes a small status panel instead of the wizard: it shows the VM's address, whether Home Assistant has answered there, and a Start button if the VM is stopped. If you stop or remove this container, the Home Assistant VM keeps running; it is managed by Unraid's own VM tab like any other virtual machine, not by this container. Keeping a VM running - an automatic restart if it stops unexpectedly, plus a notification - is opt-in per VM from the status panel and off by default; nothing is ever turned on for you. If you already run Home Assistant in a VM on this server, the wizard finds it by reading the VM's own disk rather than guessing from its name, and the status panel lists it alongside anything this container installs - there is no separate "adopt" step to click through. The wizard can also pass a USB device on this server through to the Home Assistant VM, for a Zigbee, Z-Wave or similar radio, and calls out devices it recognises as likely candidates rather than presenting a bare, unlabelled list. This needs direct access to your VM manager (libvirt), your Domains share, Docker's own socket and a handful of Unraid system paths in order to build and manage the VM correctly - that is expected and required, not a mistake in this template. It has no login of its own, so keep it on a trusted LAN rather than exposing it to the internet.

Home Assistant inabox v3

Home Assistant inabox installs a full Home Assistant OS virtual machine on your Unraid server and looks after it for you. You click install, answer a few questions in a web page and a few minutes later you're creating your Home Assistant account. No ISOs to download, no VM settings to work out, no XML to touch.

This is version 3 and it's a complete rewrite of the old container. If you're coming from v2 there's a section further down about what's changed and how to move over. The short version is that your Home Assistant VM is untouched either way.

The welcome screen, checking your server before anything is installed

What you end up with

A Home Assistant OS VM, built the same way Unraid itself would build it, running on your server with its own IP address on your network. The container's web page becomes a little home screen for it afterwards, where you can open Home Assistant, start the VM if it's stopped and choose whether the container should keep it running for you.

The home page, with a running Home Assistant VM

I built the original version of this because installing Home Assistant as a VM on Unraid was a pain. You had to find the right image, uncompress it, make a VM with the right machine type etc etc. This container does all of that for you and v3 now shows you what it's doing while it does it.

Installing

  1. Go to the Apps tab (CA) on your Unraid server
  2. Search for Home Assistant inabox v3 and click install
  3. Leave the settings as they are unless you have a reason not to and hit apply
  4. Click the container's WebUI button to open the wizard

The wizard walks you through the rest. It checks your server first, tells you what it found and won't let you start an install that can't work, like when the VM service is turned off.

A couple of things worth knowing as you go through it. The storage and network step shows you the MAC address the VM will get and my advice is to give that MAC a fixed IP in your router's DHCP settings before you finish installing. Do it in the router rather than setting a static IP inside Home Assistant itself. A static IP configured inside Home Assistant is applied by the very thing you'd need network access to fix. So if you made a mistake and the subnet was wrong on this headless VM the only way in is the VM console. A router side reservation doesn't have any of that risk.

The storage and network step, showing the MAC address the VM will get

The USB step is optional. If you've got a Zigbee or Z-Wave stick plugged into your server, tick it and it gets passed into the VM, ready for Home Assistant to discover during onboarding. More on how that works below.

Once the install starts you'll see the progress. The image download with percentages, a checksum verification against the official release, the VM being defined and started and then the first boot milestones as they genuinely happen. First boot can take several minutes on a busy array and the page says so rather than showing you a spinner and hoping.

At the end there's a big button to open Home Assistant in a new tab and underneath it the page mirrors your onboarding progress live as you create your account and set your location. That mirror is read only. Your setup happens entirely in Home Assistant's own page and this container just watches so it knows when you're done.

The home page

After an install, or whenever the container finds Home Assistant VMs already on your server, its web page becomes a status panel rather than the wizard. Each VM it's sure about gets a row with its state, its address, a button to open it and a checkbox called keep this VM running.

Tick that checkbox and the container watches the VM. If it's found stopped, it gets started again and you get a notification through whatever channels you've set up in Unraid's own notification settings. The container doesn't invent its own notification system, it uses yours. If a VM refuses to stay up the watcher notices it's flapping, stops trying and tells you why instead of restarting it in a loop forever.

The watch settings survive container restarts and image updates, so you set them once.

One thing I'd point out here. The container only ever starts VMs, it never stops them. There's no stop button on the panel and the watcher will never shut anything down. Stopping your VM is your business and Unraid's VM manager does it fine.

Already running Home Assistant?

The container looks at every VM on your server and works out which ones are Home Assistant. It does this by reading the VM's disk and checking for Home Assistant OS's own partition layout, so it recognises your existing install even when the VM is switched off. Anything it can't be sure about it simply leaves alone and it never guesses.

Your existing VM shows up on the home page with the same open button and keep running checkbox as one this container installed. Nothing is changed on it unless you tick that box and even then the only writes are starting it when stopped and pointing Unraid's own WebUI link at the right address.

USB devices

This is the part I think beginners will appreciate most. The USB step doesn't just list devices, it tells you what they are when it honestly can.

The USB step, naming the devices it recognises

It ships Home Assistant's own USB discovery data, the same data Home Assistant uses to recognise sticks itself. So a ConBee II shows up labelled as a Zigbee coordinator, a Z-Stick as a Z-Wave controller and so on. Bluetooth adapters are recognised by their USB class, which works for adapters that didn't exist when this container was built. A few well known devices get a word of advice too. If it sees a UPS it'll mention that Unraid usually monitors that itself and passing it through takes it away from your server's shutdown protection. If it sees a Google Coral it'll mention those are usually better left on Unraid for a Frigate container.

When it doesn't know what something is, it says nothing rather than guessing. A confidently wrong label is worse than no label. Devices it can't identify are still listed and still selectable, just without a claim attached.

2 things are never offered at all. USB hubs and your Unraid boot flash. Passing the boot flash into a VM would take your server down, so the container uses the same detection Unraid itself uses and keeps it off the list entirely, wherever it's plugged in.

If you pass a stick through and later unplug it, the VM still boots. The passthrough is written as optional so a missing device is skipped rather than being a boot failure.

For Zigbee sticks specifically, plug them into a USB 2.0 port or use a short extension cable if you can. USB 3.0 ports put out interference right in the 2.4 GHz band Zigbee uses and it's a well known cause of flaky Zigbee networks. The wizard reminds you of this when it sees a Zigbee coordinator.

Coming from v2

Unraid doesn't update Docker templates when a container updates, so v3 ships with a guard rather than a surprise.

If you update the old container and it starts with the v2 template, nothing breaks. Your VM keeps running exactly as it was. The container starts in a notice mode instead of half working and clicking your old WebUI button shows you a page explaining what's happened and what to do. The same explanation is in the container's logs.

Moving over is quick.

  1. Install Home Assistant inabox v3 from the Apps tab
  2. Open it and check your VM shows up on the home page
  3. Delete the old HomeAssistant_inabox container

Deleting the old container does not touch your VM. The VM lives in your domains share and belongs to Unraid's VM manager, not to any container. Once you're moved over, the old appdata folder at appdata/HomeAssistant_inabox isn't used by anything and you can delete it whenever you like.

If you'd rather stay on v2 for now, change the repository field in your existing template to spaceinvaderone/ha_inabox:2 and restart the container. That tag is frozen at the last v2 release and will keep working as it always did.

The nerdy bit

You don't need any of this to use the container, but if you like knowing how things work, here's what actually happens during an install.

The container fetches the latest Home Assistant OS release from the official GitHub releases, verifies the download against the published SHA256 checksum, uncompresses it and resizes the disk image to whatever size you chose. It builds the VM the way Unraid builds VMs, including copying the OVMF firmware variables file properly rather than creating an empty one and it reads your server's QEMU to pick the newest machine type available. Then it defines the VM through libvirt and starts it.

During first boot it watches for 4 milestones. The VM running, the guest agent answering, an IP address appearing and Home Assistant's own API responding. Recent Home Assistant releases move their web interface from port 8123 to port 80 the moment onboarding finishes and the container follows that move automatically, so the open button and Unraid's WebUI link keep working when other setups would be pointing at a dead port.

The WebUI link written into the VM is the VM's IP address rather than homeassistant.local. The mDNS name is fine right up until you have 2 Home Assistant VMs on one network, at which point it can only point at one of them. The IP is always right and the container corrects it automatically if DHCP ever moves it.

Requirements

You need the VM service enabled on your server, under Settings then VM Manager. The wizard checks this and tells you if it's off. Hardware virtualisation needs to be on in your BIOS, which it almost certainly already is if you've ever run a VM.

v3 was built and tested on Unraid 7.x. The container runs unprivileged and most of its host mounts are read only.

Install HomeAssistant_inabox_v3 on Unraid in a few clicks.

Find HomeAssistant_inabox_v3 in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for HomeAssistant_inabox_v3 Review the template variables and paths Click Install

Requirements

Unraid's VM service must be enabled: Settings then VM Manager. The wizard checks this before it lets an install start and tells you if it is off, so nothing is lost if you forget - but it cannot create a VM without it.

Hardware virtualisation (Intel VT-x or AMD-V) needs to be on in your BIOS. If you have ever run a VM on this server, it already is.

No Home Assistant knowledge is needed. The wizard downloads Home Assistant OS itself, builds the VM and hands it to you set up.

Categories

Download Statistics

134,405
Total Downloads
37,848
This Month
13,154
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
spaceinvaderone/ha_inabox:latest
Last Updated2024-10-02
First Seen2024-09-29

Runtime arguments

Web UI
http://[IP]:[PORT:9123]
Network
bridge
Shell
bash
Privileged
false

Template configuration

AppdataPathrw

Where the wizard keeps its own state, downloaded Home Assistant OS images and the VM XML it generates. Safe to back up; deleting it just means starting the wizard over.

Target
/config
Default
/mnt/user/appdata/HomeAssistant_inabox_v3
Value
/mnt/user/appdata/HomeAssistant_inabox_v3
Domains SharePathrw

Your Unraid VMs share. This is where the wizard writes the Home Assistant OS virtual disk.

Target
/domains
Default
/mnt/user/domains
Value
/mnt/user/domains
Libvirt SocketPathrw

Lets the wizard talk to Unraid's VM manager (libvirt) to create the Home Assistant VM and check on it. Required - do not change.

Target
/var/run/libvirt/libvirt-sock
Default
/var/run/libvirt/libvirt-sock
Value
/var/run/libvirt/libvirt-sock
Docker SocketPathro

Read-only access to Docker, used only to resolve this container's own host paths so the VM configuration the wizard writes points at real paths on your server. Required - do not change.

Target
/var/run/docker.sock
Default
/var/run/docker.sock
Value
/var/run/docker.sock
VM IconsPathrw

Where the Home Assistant icon is placed so it shows up next to the VM in Unraid's VM manager. Required - do not change.

Target
/icons
Default
/usr/local/emhttp/plugins/dynamix.vm.manager/templates/images
Value
/usr/local/emhttp/plugins/dynamix.vm.manager/templates/images
Domain ConfigPathro

Read-only access to Unraid's VM Manager settings, used to pick the correct default network for the new VM and to check up front whether Unraid will let a VM start at all. Required - do not change.

Target
/boot/config/domain.cfg
Default
/boot/config/domain.cfg
Value
/boot/config/domain.cfg
QEMU FirmwarePathro

Read-only access to Unraid's QEMU firmware files, used to copy the UEFI variables file the VM needs to boot. Required - do not change.

Target
/host/usr/share/qemu
Default
/usr/share/qemu
Value
/usr/share/qemu
NotificationsPathrw

Lets the wizard raise notifications that show up in the Unraid GUI, such as when setup finishes. Required - do not change.

Target
/tmp/notifications
Default
/tmp/notifications
Value
/tmp/notifications
Emhttp ScriptsPathro

Read-only access to Unraid's own web GUI scripts and state (including the state/var.ini file used to exclude the boot flash drive from USB device selection, reached through Unraid's own internal symlink). Used to run Unraid's own notify script, so this container's notifications go out through whatever you have already configured - browser, email, or an agent such as Apprise - instead of only the notification bell. If this mount and 'Emhttp State' below are both absent (existing installs before this update), notifications fall back to the bell automatically; nothing breaks. Required - do not change.

Target
/usr/local/emhttp
Default
/usr/local/emhttp
Value
/usr/local/emhttp
Emhttp StatePathro

Read-only access to Unraid's own runtime state - nginx.ini, so a notification's link points at your server's real address. Also completes the 'Emhttp Scripts' mount above: Unraid's own emhttp/state path is a symlink onto this folder, and Unraid's notify script (and the boot-flash-identity read it enables) needs both mounts present together to resolve. Required - do not change.

Target
/var/local/emhttp
Default
/var/local/emhttp
Value
/var/local/emhttp
Notification AgentsPathro

Read-only access to Unraid's own notification settings and the notification agent scripts you have configured there (for example, Apprise), so Unraid's own notify script can route this container's notifications the way you already set up rather than only to the notification bell. Disclosure: agent scripts in this folder carry their own credentials in plain text (an Apprise agent's Matrix username and password, a webhook URL, and so on) - this container only reads that folder to hand notifications to Unraid's own script and never transmits or logs its contents itself, but the credentials are exposed to this container, and to anything else with access to it, exactly as they already are to every other process on your server with read access to /boot. Required - do not change.

Target
/boot/config/plugins/dynamix
Default
/boot/config/plugins/dynamix
Value
/boot/config/plugins/dynamix
WebUIPorttcp

Port the setup wizard's web page listens on. Open this in a browser to install Home Assistant. This is the wizard's own port, not Home Assistant's - the wizard links to Home Assistant from inside itself once the VM exists, on whichever port that VM turns out to answer on.

Target
9123
Default
9123
Value
9123
HA_inabox versionVariable

The version of this template, so the container can tell whether it matches the image running inside it. If Unraid ever updates this image to a new incompatible major version without also updating this template (templates do not update themselves), the mismatch is caught and explained on this container's WebUI instead of failing silently. Required - do not change.

Target
WHATVERSION
Default
3
Value
3