Smart Home
Home Assistant on a NAS: Docker vs VM
Decide how to run Home Assistant on a NAS — the plain Docker container has no add-ons and awkward radio passthrough; HAOS in a VM gets Supervisor, add-ons, and clean USB passthrough.
Problem summary
On a NAS you choose between HA Container (plain Docker) and HAOS in a VM, and the decisive fact is what you lose with the container: no Supervisor, so no add-ons, and you own host + updates. Add-ons and clean USB-radio passthrough really want HAOS in a VM (Synology VMM / TrueNAS / Proxmox). Only HAOS and HA Container are supported install methods now — Core and Supervised were deprecated in 2025, so 'run Supervised on the NAS' is a trap.
Decide whether you need add-ons (Zigbee2MQTT, Mosquitto, ESPHome dashboards).
Settings > About / Settings > System > (Supervisor present?)
You know if Supervisor/add-ons are required for your setup.
Running Supervised on the NAS host (deprecated) or passing a radio by /dev/ttyACM0 (it moves and breaks).
Layer path
Step-by-step runbook
Start here. Do each check in order, compare it to the expected result, and stop when the evidence explains the failure or the safe stop point applies.
Decide add-ons vs self-hosted services
Check: Determine whether you need Supervisor add-ons.
Expected result: You know whether to run HAOS-in-VM or HA Container.
If not: If add-ons are needed, the bare container is out.
Pick the install method on your NAS
Check: HAOS in a VM (Synology VMM / TrueNAS / Proxmox) or HA Container.
Expected result: You have a supported, appropriate install type.
If not: Do not run Supervised on the NAS host.
Pass the radio through correctly
Check: Pass the USB device into the VM/container and reference it by by-id.
Expected result: Home Assistant sees the Zigbee/Thread/Z-Wave adapter reliably.
If not: Use PCI/controller passthrough for radios that need it.
Verify add-ons and radio work
Check: Install a test add-on (if HAOS) and confirm the radio enumerates.
Expected result: Add-ons run and the radio is detected at its stable path.
If not: If add-ons are missing, you're on Container, not HAOS.
Plan backups before you depend on it
Check: Set up full backups (and the restore test) now.
Expected result: You can migrate or recover later without re-pairing.
If not: See /smart-home/migrate-home-assistant-new-server.
Decision tree
If: You need add-ons or one-click integrations.
Then: Supervisor required — the plain container won't do it.
Action: Run HAOS in a VM (Synology VMM / TrueNAS / Proxmox).
If: You have a USB Zigbee/Thread/Z-Wave radio.
Then: Clean passthrough strongly favors a VM.
Action: Run HAOS in a VM and pass the radio through by its by-id path.
If: You're comfortable with Docker and need no add-ons.
Then: HA Container is fine.
Action: Run HA Container and host MQTT/Z2M as your own containers.
If: You were about to run Supervised on the NAS.
Then: Deprecated and fragile (goes Unsupported with other containers).
Action: Use HAOS-in-VM or HA Container instead.
Evidence table
| Symptom | Evidence to collect | Likely layer | Next action |
|---|---|---|---|
| No 'Add-ons' menu in Home Assistant. | Install type — Container has no Supervisor. | Install method (Container vs HAOS) | Move to HAOS in a VM for add-ons. |
| Zigbee dongle not detected. | How the USB device is passed and which path is used. | USB passthrough / device path | Pass it explicitly; reference /dev/serial/by-id/... |
| System shows Unsupported/Unhealthy. | Whether Supervised is in use with extra containers. | Deprecated Supervised install | Migrate to HAOS-in-VM or HA Container. |
| ConBee II keeps re-connecting under the VM. | Passthrough type (simple USB vs PCI controller). | Radio-specific passthrough quirk | Use PCI/controller passthrough or a start script. |
Commands and settings paths
Confirm the install type
Settings > About / Settings > System > (Supervisor present?)
Where: In the Home Assistant UI.
Expected: HAOS shows Supervisor/Add-ons; Container does not.
Failure means: No Add-ons menu confirms a Container install.
Safe next step: Switch to HAOS-in-VM if you need add-ons.
Find the radio's stable path
ls -l /dev/serial/by-id/
Where: On the NAS/VM host shell.
Expected: The Zigbee/Thread/Z-Wave adapter is listed with a stable by-id name.
Failure means: If absent, the device isn't passed through to the host/VM.
Safe next step: Fix passthrough, then use the by-id path in HA.
Check supported-ness (HAOS/Supervised)
Settings > System > Repairs / Supervisor logs
Where: In the HA UI (Supervisor-based installs).
Expected: System reports healthy and supported.
Failure means: Unsupported/Unhealthy flags a deprecated or modified setup.
Safe next step: Move to a supported method (HAOS-in-VM or Container).
Hardware and platform boundary
Change only when
- Run HAOS in a VM on the NAS when you need add-ons or a USB radio; choose HA Container only if you're comfortable owning Docker and self-hosting supporting services.
Evidence that matters
- A hypervisor with clean USB passthrough (Synology VMM / TrueNAS / Proxmox), a radio referenced by its by-id path, and a supported install method (HAOS or Container).
Evidence that does not matter
- CPU benchmark bragging — Home Assistant is light; reliability comes from the install type, passthrough, and backups, not raw horsepower.
Avoid
- Running Supervised on the NAS host (deprecated) or passing a radio by /dev/ttyACM0 (it moves and breaks).
Related tool
Use the linked tool to turn this runbook into a guided check for your exact setup.
NAS setup plannerRelated problems
Last reviewed
2026-06-03 · Reviewed by HomeTechOps. Built from 2026-06 research verified against home-assistant.io (HA vs HAOS FAQ, deprecation of Core/Supervised, Connect ZBT-2); the operator differentiator is the Container-has-no-add-ons fact and the HAOS-in-VM-for-radio-passthrough decision, with the Supervised-is-deprecated trap called out. Bridges the existing /nas cluster.
Sources/assumptions
- Assumes running Home Assistant on a NAS/hypervisor (Synology Container Manager/VMM, TrueNAS, or Proxmox) with an optional USB Zigbee/Thread or Z-Wave radio.
- Only HAOS and HA Container are supported install methods (Core and Supervised deprecated 2025) — Supervised-on-the-NAS is explicitly not recommended.
- USB-radio passthrough behavior is host/hypervisor-specific and version-dependent; reference the radio by its /dev/serial/by-id path, not /dev/ttyACM0.
Source-backed checks
HomeTechOps turns official docs and conservative safety rules into a shorter runbook. These links are the source trail for the page direction.