Keep Home Assistant on one host while control latency, capacity, recovery time, and dependency failures remain inside explicit service targets.
Dedicate compute when a named workload steals the control budget, storage when active state and bulk capacity need different latency or recovery policies, and networking when one shared path creates a proven outage domain. Every split adds another machine, link, credential, startup order, and backup object, so validate the new boundary before moving anything else.
Keep Roles Together Until a Measured Limit Appears
A single host keeps Home Assistant Core, its database, radios, add-ons, backups, and monitoring close enough to start and recover as one known system. That simplicity is valuable while the combined workload passes p95 action latency, restart time, backup window, storage reserve, and restore objectives.
High availability discussions repeatedly show that extra nodes do not automatically create application-level availability. A community analysis of Home Assistant failure-domain limits is useful because it distinguishes service state and radio ownership from merely running another machine.
Do not split for low average utilization or general future-proofing. Open a topology change only when monitoring connects one resource, capacity, maintenance window, or failure to a missed service target.
Split Compute When One Workload Steals the Control Budget
Dedicated compute is justified when a separable companion serviceโvideo analysis, local speech, model inference, compilation, or a heavy database jobโsaturates CPU, memory, or thermal capacity at the same time critical automations slow or fail.
Move the heavy service first, not Home Assistant by reflex. Preserve its API endpoint, credentials, timeouts, and fallback behavior, then repeat the same mixed workload. If event-to-action latency and recovery headroom improve, the split solved a measured contention boundary.
Keep compute together when resource peaks do not correlate with the delay, or when the slow path is radio, cloud, DNS, client, or storage latency. A new host cannot repair a dependency it does not own.
Split Storage When Capacity or Recovery Has a Different Lifecycle
Separate storage when active configuration and Recorder state need low latency and coherent snapshots while media, telemetry exports, or backup generations need cheap capacity and different retention. Use stable logical mounts so the application path survives a device or pool change.
A Docker Compose design review emphasizes explicit persistent volumes, network modes, and backup boundaries. Its persistent-storage design trade-offs illustrates why separation must preserve permissions and restore ordering, not just relocate bytes.
Use the internal metadata-growth boundary to identify whether active state, history, or bulk data actually owns the capacity problem before creating a NAS dependency.
Split Networking Only to Remove a Proven Shared Failure
Networking deserves its own hardware or segment when broadcast load, address exhaustion, switch failure, RF interference, insecure device trust, or a required maintenance window creates an outage the current design cannot tolerate. Segmentation also adds routing, firewall, multicast, DNS, and discovery dependencies.
Keep Home Assistant, radios, and critical local devices reachable through the smallest path that preserves the security boundary. If VLANs or a dedicated switch are introduced, explicitly allow required discovery and control traffic and document what still works when routing, internet, or DNS is unavailable.
Do not call segmentation reliable until a local action, restart, discovery, notification, and recovery test pass with each nonessential network dependency removed in turn.
Validate the New Boundary Before Moving Another Role
Stage one split at a time with a current backup and rollback. Record source version, service identity, endpoints, mount ownership, firewall rules, startup ordering, latency, resource pressure, backup time, and restore time before and after the move.
- Reproduce the busy-hour workload.
- Remove one dependency and record degraded behavior.
- Restart every affected service in dependency order.
- Restore the changed role on a clean target.
- Roll back within the documented maintenance window.
Accept the dedicated boundary only when it improves the named objective more than it increases network and lifecycle risk. Keep the remaining roles together until another independent measurement opens the next change.
NAS & Server Setup
More to Read

How to Separate Home Assistant App Data, Cache, and Backups
Keep authoritative app state persistent, prove cache is disposable before moving it, and store tested backups outside the Home Assistant failure domain.

How to Adapt a Home Assistant Setup for Remote and Local Users
Keep local Home Assistant control independent of the remote edge, then add secure remote access with predictable DNS, identity, and network-switching behavior.

How to Move Home Assistant From a Single Container to a Resilient Service Stack
Preserve working state first, then separate data, dependencies, health, resources, and recovery so one service failure does not take down Home Assistant.

