Installing Home Assistant: HA OS, Container or Core?
The four installation variants honestly compared – and which one fits your setup
This article is part of the Home Assistant Guide – the curated learning path for your smart home.
Home Assistant is the control center for a local, privacy-friendly smart home – but getting started begins with a decision that catches many beginners off guard: in what form do I even install it? There are four official variants, and the choice determines whether you later have the convenient add-on store or wrestle with every extra service by hand.
The four variants – briefly explained
- Home Assistant OS (HA OS): A complete, lean operating system that does nothing but Home Assistant. Includes the Supervisor and the add-on store (Mosquitto, Zigbee2MQTT, Node-RED & co. with one click). Updates run cleanly through the UI. The recommended variant.
- Supervised: Like HA OS, but on your own Debian system. You get add-ons but take responsibility for the host OS yourself – and only a very narrow configuration counts as supported. A niche for people who know exactly what they're doing.
- Container: Home Assistant as a single Docker container. Lean and tidy in a homelab – but no supervisor, no add-on store. Services like MQTT or Zigbee2MQTT you run yourself as separate containers.
- Core: Home Assistant directly in a Python environment (venv). Maximum control, maximum maintenance. Practically only relevant for developers.
Which variant for whom?
Beginners & most users: Home Assistant OS – on a Raspberry Pi or in a VM. Homelab with an existing Docker stack: Container, if you run add-ons as containers anyway. Supervised/Core: only with a clear reason.
The honest rule of thumb: if you're not sure, pick HA OS. The add-on store saves you an enormous amount of fiddling early on – MQTT broker, Zigbee bridge, backups, each one click. The container variant is temptingly clean, but it costs you exactly that convenience: every extra service becomes its own container that you wire up yourself.
My setup: HA OS in a KVM VM
I run Home Assistant as HA OS in a KVM/QEMU VM on my Debian homelab server. That gives me the full add-on convenience of HA OS without dedicated hardware – I share the server with other VMs. How that is set up in detail is here: Home Assistant OS in KVM/QEMU.
For the classic entry, though, a Raspberry Pi is the easiest route – cheap, power-efficient, and HA OS is built for it.
One thing on the Pi: don't rely on a MicroSD card, which dies early under Home Assistant's constant database writes. A Pi 5 with an NVMe kit is the durable base – it's what I use in the homelab too:
Ad · Affiliate link – if you buy through it, I may earn a commission. It doesn’t change the price for you.
Quick start: HA OS on the Raspberry Pi
The easiest route goes through the Raspberry Pi Imager:
- Install and start the Imager.
- Under Choose OS → Other specific-purpose OS → Home Assistant and home automation → Home Assistant OS, pick the image for your Pi.
- Write it to an NVMe SSD (or an SD card if you must), plug it in, connect the network by cable, power on.
- After a few minutes the UI is reachable:
http://homeassistant.local:8123
If homeassistant.local doesn't resolve (mDNS issues on your network), use the Pi's IP address from your router. The rest – creating a user, location, first devices – the onboarding wizard walks you through.
Quick start: HA as a Docker container
If you already run a Docker host, a small compose.yaml is enough:
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
container_name: homeassistant
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
network_mode: host
network_mode: host isn't a blemish here but necessary, so Home Assistant can discover devices on the local network via auto-discovery. Remember: in this variant there is no add-on store – you start an MQTT broker or Zigbee2MQTT as separate containers alongside.
What I left out
- Supervised on your own Debian: sounds like the best of both worlds, but it's maintenance-heavy and only officially supported in a narrow configuration. The wrong path for beginners.
- Core in a venv: skipped – too much manual maintenance for too little benefit outside development.
- HAOS in Proxmox/LXC: popular, but LXC is officially unsupported; I prefer the clean VM.
Conclusion & outlook
For almost everyone, Home Assistant OS is the right choice – easiest on a Raspberry Pi, most flexible in a VM. The container variant is the clean homelab option when you don't need the add-on convenience. Once the installation stands, the real understanding begins: what are entities, devices and integrations – and how do they fit together? That's exactly what I'll tackle in the next beginner article.
Ad · Affiliate link – if you buy through it, I may earn a commission. It doesn’t change the price for you.