Published

Home Assistant

Open-source home automation platform that runs locally: it connects devices from thousands of integrations, records their history and runs automations and dashboards. This profile covers the Home Assistant Container installation (one container, SQLite database in /config), not Home Assistant OS with its apps.

Resources by load level

What the app itself needs at each level, next to what we recommend for a server that runs only this app.

LevelWhat it meansApp requirementsRecommended
LightEstimate1–2 people, up to ~50 devices / ~300 entities on local integrations, default 10-day history, no camera streams or local voice.1 vCPU · 1 GiB RAM · 5 GiB disk1.32 vCPU · 2.7 GiB RAM · 15.065 GiB disk
MediumEstimateA whole household: up to ~150 devices / ~1,000 entities, energy dashboard, a few dashboards open at once, 1–2 camera streams through the bundled go2rtc.2 vCPU · 2 GiB RAM · 13 GiB disk2.52 vCPU · 3.9 GiB RAM · 24.265 GiB disk
HeavyEstimateA large home: ~400 devices / ~3,000 entities, history kept 30 days, several camera streams and hundreds of automations, many users and dashboards.3 vCPU · 4 GiB RAM · 95 GiB disk3.72 vCPU · 6.3 GiB RAM · 118.565 GiB disk

Recommended = app requirements + system baseline + safety headroom, under sizing policy 2026.10.0. Options stay at their defaults. “Estimate” means the sources give no number for that case, so it is worked out from them by the method stated under Components. How the numbers are built

Size it in the Stack Sizer

Ready-to-run files

Support level Official install

No Compose template from ANAROQ: install it the official way.

Why: The official Compose file runs Home Assistant with network_mode: host (mDNS/SSDP discovery and integrations that must see the home LAN) and privileged: true (USB and Bluetooth radios). Both are deliberate, but ANAROQ's Compose Analyzer rates them high (AQ-PRIV-002, AQ-PRIV-001) and ANAROQ never generates such a file; without them discovery breaks. Use the official file.

Open the official installation of Home Assistant

Components

What each component needs at each load level, before baseline and headroom.

vCPU / GiB RAM / GiB disk
ComponentLightMediumHeavySources
Home Assistant Core (with go2rtc and SQLite recorder) (app)1 / 1 / 52 / 2 / 133 / 4 / 95[1][4][5][7][11][12][14][16]
How the estimates are worked out
  • Home Assistant Core (with go2rtc and SQLite recorder) · Light: CPU/RAM: half the documented 2 vCPU / 2 GB minimum, which is for a whole Home Assistant OS VM (host OS, Supervisor and its containers); here the host OS is in ANAROQ's baseline. Disk: 0.607 GiB compressed image × 3 (1.82) + database 300 entities × 10 days × an assumed 0.1 MiB (0.293) + 2.5× that free for repairs (0.733) + 7 daily backups (2.051) = 4.9, rounded up to 5 GiB.
  • Home Assistant Core (with go2rtc and SQLite recorder) · Medium: CPU/RAM: the full documented 2 vCPU / 2 GB VM minimum, given to Core alone for more integrations and go2rtc streams. Disk: 1.82 GiB image + database 1,000 entities × 10 days × an assumed 0.1 MiB (0.977) + 2.5× that free (2.442) + 7 daily backups including the database (6.836) = 12.1, rounded up to 13 GiB.
  • Home Assistant Core (with go2rtc and SQLite recorder) · Heavy: RAM 4 GiB and 2 vCPU from the docs' KVM example (--ram=4096 --vcpus=2), plus 1 vCPU for several go2rtc camera streams. Disk: 1.82 GiB image + database 3,000 entities × 30 days × an assumed 0.1 MiB (8.789) + 2.5× that free (21.973) + 7 daily backups including the database (61.523) = 94.1, rounded up to 95 GiB.

Ports

Public ports are meant to be reached from outside the stack, usually through a reverse proxy; internal ones stay on the stack's own network.

ComponentPortExposurePurposeSources
Home Assistant Core (with go2rtc and SQLite recorder)8123/tcpPublic, through a proxyWeb UI, REST and WebSocket API, companion apps; on the host network (put behind TLS)[1][3]

Every port in the catalog, with conflicts between apps

User and permissions (UID/GID)

The user each container's process runs as, and the paths it writes to. A bind mount for one of these paths must be writable by that UID:GID.

ComponentUID:GIDUserStarts as rootWrites toSources
Home Assistant Core (with go2rtc and SQLite recorder)Derived0:0rootNo/config[1][5][7][8]
  • Home Assistant Core (with go2rtc and SQLite recorder): The image sets no USER and starts s6-overlay's /init, which runs python3 -m homeassistant --config /config as root without dropping privileges; the official Compose adds privileged: true. Everything it writes (configuration, SQLite database, logs, /config/backups) is under /config.

Storage growth

How much each component's data grows per month at each load level, on top of the disk in the profile. A value marked Assumption is ANAROQ's stated assumption, not a figure from the sources; the notes say what it rests on.

GiB per month
ComponentLightMediumHeavySources
Home Assistant Core (with go2rtc and SQLite recorder)Assumption0.0110.0310.101[14][15]
What the growth figures rest on
  • Home Assistant Core (with go2rtc and SQLite recorder): State history is purged after purge_keep_days (10 by default), so it stays flat; hourly long-term statistics are never deleted. 24 rows × 30 days × an assumed 150 B per statistic-enabled sensor: 100, 300 and 1,000 sensors. Backups stay flat once a retention count is set.

Upgrade and rollback

How to move to a new version safely, and how to go back if it fails.

Back up first

A full backup with the database (the default), copied off the host, plus the backup emergency kit: backups are encrypted and cannot be restored without its key. [13][16]

Upgrade steps

  1. Create a backup (Settings > System > Backups) and keep the emergency kit, then read the backward-incompatible changes of every release between your version and the new one. [16][17]
  2. Pin the new version tag in compose.yaml (the docs use :stable; a pinned tag makes rollback possible), then run docker compose pull and docker compose up -d. Keep stop_grace_period: 60s so the database closes cleanly. [1][17]
  3. After the start, check Settings > System > Repairs and the logs for configuration that needs changes; a recorder schema change can take a while and needs free disk at least the size of the database. [14][17]

Roll back

Pin the previous version tag, docker compose pull and up -d. If the newer release changed the configuration or database, restore the backup taken before the upgrade. [16][17]

Known breaking changes

  • In 2026.10.0: The legacy mode of the Home Assistant auth provider was removed: usernames are always lowercase and trimmed. Fix any username flagged by a repair before updating. [20]
  • In 2026.8.0: Web server settings (port, listen addresses, Trust X-Forwarded-For, trusted proxies) moved to Settings > System > Network; an existing http: block is imported and a repair asks to remove it. The Container port stays 8123. [3][21]
  • In 2026.8.0: The image replaced the preloaded jemalloc with Python's bundled mimalloc: DISABLE_JEMALLOC no longer has any effect; set PYTHONMALLOC=pymalloc for the default allocator. [8][9]
  • In 2026.3.0: Home Assistant runs on Python 3.14, and the container image is compressed with zstd: it needs Docker 23.0.0 or later (containerd 1.5.0 or later). [10][22]
  • In 2025.12.0: Support for the Core and Supervised installation methods and for 32-bit systems (i386, armhf, armv7) was removed; such systems get no updates. Container on a 64-bit host remains supported. [23]

Limits

  • Discovery, Bluetooth and USB radios only work on a host in the home: on a cloud VPS Home Assistant cannot see mDNS/SSDP devices, Bluetooth or Zigbee/Z-Wave sticks on your LAN. It is meant for a home server or a VM at home. [1][2]
  • Home Assistant Container has no apps (add-ons) and no one-click updates; Thread and Z-Wave, which are run by apps on Home Assistant OS, have no out-of-the-box support. Run Z-Wave JS or a Thread border router as separate containers. [4]
  • With host networking Home Assistant takes port 8123 on the host directly: run it as its own Compose project next to other stacks, keep 8123 free, and point the reverse proxy at the host's address, not a Docker network. [1][3]
  • Needs Docker Engine 23.0.0 or later; Docker Desktop does not work. The recorder needs free disk at least the size of its database at all times (2.5× to recover from corruption); history beyond 10 days grows it fast. [1][14]

Security

  • The first visitor to a new instance creates the owner account, an administrator whose credentials cannot be recovered. Finish onboarding on the LAN before exposing port 8123 or a domain. [1][18]
  • Expose it only through HTTPS: behind a reverse proxy turn on Trust X-Forwarded-For and list the proxy under Trusted proxies (Settings > System > Network), or proxied requests are blocked; consider IP banning. The docs prefer a VPN or tunnel to opening ports. [3][19]
  • The official container runs as root with privileged: true on the host network, so it has broad access to the host. Give it a host of its own at home; if you need only one radio, map that device (devices: /dev/ttyUSB0) instead of privileged. [1][5]

Backup

  • Automatic backups are off until you set them up (Settings > System > Backups): choose daily, how many to keep, and a location off the host. Local backups land in /config/backups, on the same disk as the data. [11][13][16]
  • Backups are encrypted: store the backup emergency kit (the encryption key) somewhere safe, apart from the backups. Without it an encrypted backup cannot be restored. [16]
  • A backup includes the SQLite database by default and skips logs, the TTS cache and older backup archives. A large history makes every backup large: lower purge_keep_days or exclude entities to keep it small. [12][13][16]

Latest release

Newest upstream release
Home Assistant 2026.10.1 [5][6]
This profile was checked against

Home Assistant 2026.10.1

This profile was checked against the newest release.

Checked on
14 Oct 2026
State
Checked within the last 90 days
Where releases are published
GitHub Releases

Checked 2026-10-14: the stable tag points at the same image index as 2026.10.1 on GHCR, and 2026.10.1 (pushed 2026-10-10) is the newest non-beta tag on Docker Hub; 2026.11 is still in development.

Latest releases of every app

Version

Profile status
Published
Checked against release
Home Assistant 2026.10.1
Profile version
1.0.0
Figures verified
14 Oct 2026
Catalog release
2026.10.10
Sizing policy
2026.10.0
Compose file
Not available yet
Alternatives
openHABDomoticz

Sources

  1. Home Assistant Docs: Linux, Install HA Container (Docker Engine 23.0.0+; compose: network_mode: host, privileged: true, /run/dbus:ro, stop_grace_period 60s; UI on 8123; --device mapping) (Official docs · read 14 Oct 2026)
  2. home-assistant.io source: container/compose.md (/PATH_TO_YOUR_CONFIG:/config, /etc/localtime:ro, /run/dbus:ro, unless-stopped, privileged: true, network_mode: host, TZ) (Official Compose · read 14 Oct 2026)
  3. Home Assistant Docs: HTTP (Container port stays 8123; UI settings since 2026.8; behind a proxy set Trust X-Forwarded-For and Trusted proxies or requests are blocked; IP banning) (Official docs · read 14 Oct 2026)
  4. Home Assistant Docs: Installation (Container has no apps and no one-click updates; Thread and Z-Wave are controlled by apps, no out-of-the-box support on Container; Raspberry Pi minimum 2 GB RAM) (Official docs · read 14 Oct 2026)
  5. GHCR: home-assistant:2026.10.1 (= stable; linux/amd64 651,470,255 B compressed; no USER, no HEALTHCHECK, ENTRYPOINT /init (s6-overlay), WORKDIR /config, Apache-2.0) (Official repository · read 14 Oct 2026)
  6. Docker Hub: homeassistant/home-assistant tags (2026.10.1 pushed 2026-10-10, newest stable; amd64 651,470,255 B, arm64 636,862,738 B) (Official repository · read 14 Oct 2026)
  7. home-assistant/core Dockerfile at 2026.10.1 (s6-overlay rootfs, go2rtc 1.9.14 bundled, no USER, WORKDIR /config) (Official repository · read 14 Oct 2026)
  8. home-assistant/core rootfs/etc/services.d/home-assistant/run at 2026.10.1 (python3 -m homeassistant --config /config; PYTHONMALLOC=mimalloc by default, DISABLE_JEMALLOC has no effect) (Official repository · read 14 Oct 2026)
  9. home-assistant/core rootfs/etc/services.d/home-assistant/run at 2026.7.0 (jemalloc preloaded unless DISABLE_JEMALLOC is set) (Official repository · read 14 Oct 2026)
  10. home-assistant/core pyproject.toml at 2026.10.1 (version 2026.10.1, requires-python >=3.14.2) (Official repository · read 14 Oct 2026)
  11. home-assistant/core components/backup/backup.py at 2026.10.1 (local backup agent writes to the config path 'backups', i.e. /config/backups) (Official repository · read 14 Oct 2026)
  12. home-assistant/core components/backup/const.py at 2026.10.1 (backups skip logs, *.db-shm, backups/*.tar and tts/*; home-assistant_v2.db is excluded only when the database is left out) (Official repository · read 14 Oct 2026)
  13. home-assistant/core components/backup/config.py at 2026.10.1 (automatic backups not configured and schedule 'never' by default; include_database true) (Official repository · read 14 Oct 2026)
  14. Home Assistant Docs: Recorder (SQLite home-assistant_v2.db in /config; purge_keep_days 10; free space ≥ database size, 2.5× for corruption recovery; MariaDB ≥ 10.3, PostgreSQL ≥ 12) (Official docs · read 14 Oct 2026)
  15. Home Assistant Docs: Long-term statistics (short-term every 5 minutes, purged with history; long-term every hour, never deleted automatically) (Official docs · read 14 Oct 2026)
  16. Home Assistant Docs: Common tasks, Backups (automatic backups: daily recommended, e.g. keep 7; encrypted, emergency kit needed to restore; keep a copy off the system) (Official docs · read 14 Oct 2026)
  17. Home Assistant Docs: Common tasks, Home Assistant Container (read every release note's backward-incompatible changes; docker compose pull and up -d; run a specific version by tag to downgrade) (Official docs · read 14 Oct 2026)
  18. Home Assistant Docs: Onboarding (a new installation first creates the owner account, an administrator; owner credentials cannot be recovered) (Official docs · read 14 Oct 2026)
  19. Home Assistant Docs: Securing (use a secure remote-access method, such as a VPN or the cloud tunnel, rather than exposing Home Assistant directly) (Official docs · read 14 Oct 2026)
  20. Home Assistant 2026.10 release notes (legacy mode of the Home Assistant auth provider removed; usernames always normalized) (Release notes · read 14 Oct 2026)
  21. Home Assistant 2026.8 release notes (web server settings, incl. port and trusted proxies, move from YAML to the UI; existing http: YAML imported) (Release notes · read 14 Oct 2026)
  22. Home Assistant 2026.3 release notes (runs on Python 3.14; container images compressed with zstd, needs Docker 23.0.0+ or containerd 1.5.0+) (Release notes · read 14 Oct 2026)
  23. Home Assistant 2025.12 release notes (Core and Supervised installation methods and 32-bit i386/armhf/armv7 support removed) (Release notes · read 14 Oct 2026)

All self-hosted apps