For Home Assistant with 100–300 devices, 30 days of history, and standard integrations, 2 vCPU, 4 GB RAM, and 80 GB of NVMe storage are sufficient; video streams, Frigate, and multi-year database retention require significantly more resources.
What affects Home Assistant hardware requirements?
Devices are not the same as entities
The key factor in home assistant hardware requirements is not only the number of physical devices, but also the number of entities, their update frequency, and the add-ons you run. One temperature sensor typically creates 2–5 entities: temperature, battery level, signal strength, and availability status. One energy monitor may add 10–30 entities, while a modern HVAC system can add dozens.
A home with 50 Zigbee devices often has 200–400 entities. When integrations send telemetry regularly, recorder writes thousands of events per day. Database writes, indexing, and automations are usually the main causes of latency—not the base resource usage of Home Assistant Core.
When choosing a VPS, follow the general principles in this guide to server requirements for self-hosted applications: size CPU for peak workloads, leave RAM headroom for cache and containers, and choose storage based on IOPS and projected data growth.
What puts the most load on a Home Assistant server
- Recorder and history: writing states, events, logs, and statistics to SQLite or PostgreSQL.
- Energy dashboards: frequent updates for power, voltage, current, and consumption.
- ESPHome: firmware compilation uses 1–2 CPU threads and can consume 1–3 GB RAM.
- Node-RED, AppDaemon, pyscript: add separate processes, libraries, and background jobs.
- Frigate and cameras: RTSP video decoding, object detection, and archive recording are not “lightweight” Home Assistant workloads.
- Cloud integrations: API polling, webhooks, voice assistants, MQTT, and remote dashboards.
The same resource considerations apply whether you install Home Assistant in a virtual machine, Docker, or Home Assistant OS, but Docker lets you isolate PostgreSQL, MQTT, and Node-RED in separate containers. For deployment instructions, see how to set up Home Assistant on a VPS.
Home Assistant server requirements by deployment size
Load scale → recommended specs
For Home Assistant with 1000 entities, recorder retention set to 30 days, and no video decoding, 4 vCPU, 8 GB RAM, and 160 GB NVMe storage are sufficient.
| Load scale | vCPU | RAM | Storage | Network port | Estimated price (March 2026) |
|---|---|---|---|---|---|
| 20–80 devices, up to 300 entities, 2–4 integrations | 1 vCPU | 2 GB | 40 GB NVMe | 100 Mbps | from $6/mo. |
| 80–300 devices, 300–1000 entities, MQTT, ESPHome | 2 vCPU | 4 GB | 80 GB NVMe | 1 Gbps | from $12/mo. |
| 300–700 devices, 1000–3000 entities, Node-RED, 90-day history | 4 vCPU | 8 GB | 160 GB NVMe | 1 Gbps | from $24/mo. |
| 700–1500+ devices, 3000–10 000 entities, PostgreSQL, multiple users | 6–8 vCPU | 16 GB | 320 GB NVMe | 1 Gbps | from $48/mo. |
| Home Assistant + Frigate, 4–8 cameras without GPU | 8 vCPU | 16–32 GB | 500 GB NVMe | 1 Gbps | from $80/mo. |
Prices are general market estimates for VPS plans in this class as of March 2026; final costs depend on region, backups, dedicated IP addresses, NVMe capacity, and GPU availability.
How to interpret these requirements
The answer to home assistant how many devices cannot be reduced to a fixed number. 500 switches that rarely change state may run well on 2 vCPU and 4 GB RAM, while 100 energy-monitoring devices updating every 5 seconds can create a much heavier database workload. For a production deployment, leave 30–50% CPU headroom and do not fill NVMe storage beyond 75–80%.
If the server will run cameras, size them separately. Home Assistant receives states from Frigate, but H.264/H.265 decoding and object detection create the main load. For this setup, use the guidance in this article about Frigate server requirements, CPU, GPU, and Coral.
Looking for a reliable server for your projects?
VPS from $10/mo and dedicated servers from $9/mo with NVMe, DDoS protection, and 24/7 support.
View plans →Home assistant hardware requirements: CPU, RAM, and NVMe
What CPU does Home Assistant need?
Home assistant hardware requirements begin with strong single-thread CPU performance: automations, Python event processing, and some SQLite operations do not scale linearly across 8–16 cores. For a medium-sized home, 2–4 modern vCPU at 2.5 GHz or higher are preferable to a large number of slow threads.
A healthy operating range is average CPU usage below 30–40%, with brief peaks up to 70%. If the python3, postgres, or recorder container process consistently uses 80–100% of one core, the interface will become slower and automations will run with delays.
docker stats --no-stream
uptime
free -h
df -h
iostat -xz 1 5
In iostat output, watch %util and write latency. For an active database, sustained write latency above 15–20 ms is a sign to review NVMe performance, history retention, and recorder exclusions. HDDs are not recommended for the main Home Assistant database: random writes and VACUUM operations noticeably increase UI response times.
How much RAM does Home Assistant need?
The question of home assistant ram cpu requirements depends on your containers. Home Assistant Core itself, even with dozens of integrations, usually fits within 500 MB–1.5 GB, but the operating system, file cache, MQTT, Node-RED, ESPHome, and PostgreSQL change the calculation. 2 GB is suitable for a minimal home instance, 4 GB is the practical minimum for continuous use, and 8 GB is a safe choice for hundreds of devices and several add-ons.
- 2 GB RAM: Core, Zigbee2MQTT or ZHA, basic recorder, up to 300 entities.
- 4 GB RAM: MQTT, ESPHome, HACS, 300–1000 entities, several dashboards.
- 8 GB RAM: Node-RED, PostgreSQL, 1000–3000 entities, long-term history.
- 16 GB RAM: large deployment, analytics, test containers, or Frigate without a heavy GPU pipeline.
Do not treat swap as a replacement for memory. A 1–2 GB swap file is useful as emergency protection against OOM events, but active swap usage on NVMe degrades response times. On a Linux server, you can set a moderate value:
sudo sysctl -w vm.swappiness=10
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
Home Assistant recorder database sizing: storage, retention, and PostgreSQL
How to estimate history storage
Home assistant recorder database sizing depends on the number of state changes rather than the size of your YAML configuration. For a home with 300–800 entities and 30-day retention, SQLite typically uses 2–10 GB. With active energy monitoring, frequent MQTT messages, and 3000 entities, the database can grow by 1–5 GB per month even after purging old records.
Practical disk capacity for Home Assistant must include the current database size, temporary VACUUM files, backups, logs, and updates. If the database is 20 GB, do not allocate a 25 GB partition: maintenance will require at least 40–60 GB of free space. For a VPS with 90 days of history, 160 GB NVMe is a sensible starting point.
Limit writes from noisy entities. For example, sensor battery levels, RSSI, uptime, and diagnostics are not always needed in history. The configuration below reduces the number of writes and lowers IOPS:
recorder:
purge_keep_days: 30
auto_purge: true
exclude:
entity_globs:
- sensor.*_linkquality
- sensor.*_rssi
- sensor.*_uptime
domains:
- sun
- updater
When to move from SQLite to external Postgres
SQLite remains a good option for a small home: it does not need a separate service, is simple to back up, and runs reliably on NVMe. Moving to PostgreSQL makes sense when the database exceeds 10–20 GB, more than 1000 entities change frequently, several dashboards are open simultaneously, or history cleanup causes noticeable latency.
PostgreSQL is especially useful for keeping history from 90 days to several years. Run the database on the same private VPS or in a separate container with fast NVMe; do not expose port 5432 to the internet. Example connection string:
recorder:
db_url: postgresql://ha_user:strong_password@postgres:5432/homeassistant
purge_keep_days: 90
auto_purge: true
The database does not replace backups. Daily pg_dump, VPS snapshots, and restore testing matter more than the database engine you choose. For storing multiple copies and separating production data from archives, use the approach described in this guide to backup storage sizing and deduplication.
Home Assistant server requirements for integrations and add-ons
MQTT, Zigbee, Z-Wave, and ESPHome
Home Assistant server requirements for integrations are usually determined by message frequency. Mosquitto handling 1000 MQTT messages per minute rarely needs more than 256–512 MB RAM, but recording every message in recorder can quickly enlarge the database. Limit history for debug topics and do not publish telemetry every 1–2 seconds unless there is a real need.
Zigbee and Z-Wave coordinators can connect over USB to a local mini PC or be passed through to a virtual machine. For a remote VPS, use a network coordinator, VPN tunnel, or local MQTT gateway: USB-over-IP over an unstable internet connection risks losing devices after an outage.
ESPHome has two distinct workload modes. Normal operation of connected devices has almost no CPU impact, but firmware builds require a compiler, Python packages, and memory. On 1 vCPU and 2 GB RAM, compilation can take 5–15 minutes; 2–4 vCPU and 4 GB RAM noticeably speed up updates for multiple ESP32 devices.
Automations, HACS, and voice access
Node-RED and complex Jinja templates are useful, but they increase memory usage. If an automation processes dozens of events per second, add 1 vCPU and 1–2 GB RAM to the base configuration. HACS itself is not resource-intensive, but unsupported custom integrations can cause memory leaks or frequent log errors.
For external access, use HTTPS, a separate user with MFA, and a VPN or reverse proxy. Do not expose Home Assistant directly on port 8123 without TLS. Check active connections and network activity with:
ss -tulpn
docker logs --tail 100 homeassistant
curl -I https://your-domain.example
Bandwidth, video streams, and running Home Assistant on a VPS
How much bandwidth does a smart home use?
A typical Home Assistant server with MQTT, Zigbee, and cloud integrations rarely uses more than 5–30 GB of external bandwidth per month. Webhooks, notifications, mobile app synchronization, and remote dashboards increase usage moderately. Cameras are the main bandwidth source: one 1080p RTSP stream at 4 Mbps transfers around 1.3 TB per month when streamed continuously.
Do not route permanent camera streams through a VPS solely for display in the interface if you can transmit events or use a local proxy instead. For 4–8 cameras, prioritize a local server, GPU, Intel Quick Sync, or Coral TPU. Detailed CPU, RAM, and network throughput calculations are available in this guide to a Frigate server.
When a VPS is better than a local mini PC
A VPS is convenient for public HTTPS access, a reliable IP address, automatic snapshots, and hosting PostgreSQL, Node-RED, or a remote Home Assistant instance. A local mini PC is better when you need USB coordinators, minimal latency to Zigbee/Z-Wave devices, and camera processing without sending video streams over the internet.
A hybrid setup is often more practical: Home Assistant and coordinators run at home, while the VPS handles VPN, backups, and external services. If the entire instance runs in a data center, set up WireGuard to your home network and deny IoT device access from all subnets except the VPN.
# Пример разрешения доступа к Home Assistant только через VPN
sudo ufw allow from 10.8.0.0/24 to any port 8123 proto tcp
sudo ufw deny 8123/tcp
sudo ufw enable
Home Assistant monitoring and backups
Metrics to monitor
For Home Assistant, monitor CPU usage, free RAM, swap, free NVMe space, disk latency, and database size. Set alerts for disk usage at 80%, sustained swap use above 256 MB, or database growth above 20% per week without an increase in device count.
Check the database and configuration directory size at least once per week:
du -sh /config
du -sh /config/home-assistant_v2.db*
docker exec -it postgres psql -U ha_user -d homeassistant -c "\l+"
The 3-2-1 rule for smart homes
The minimum strategy is a daily Home Assistant backup, one local copy, and one copy stored outside the primary server. Backups should include configuration.yaml, the .storage directory, secrets, custom components, the database, and VPN keys. Keep at least 7 daily and 4 weekly copies.
Once per quarter, restore a backup into a test container or separate VM. A backup file without a verified restore does not guarantee that automations, integration tokens, and PostgreSQL history will work.
Frequently Asked Questions
How much RAM does Home Assistant need?
For a small home with up to 300 entities, 2 GB RAM is enough if you use only Home Assistant, Zigbee, and a basic recorder. For 300–1000 entities with MQTT, ESPHome, and HACS, choose 4 GB. A setup with PostgreSQL, Node-RED, and long-term history needs 8 GB RAM to avoid active swap usage and interface delays.
How many devices can Home Assistant handle?
Home Assistant can handle 1000 or more devices, but you need to count entities and update frequency. Around 300 devices typically create 1000–3000 entities. For this scale, 4 vCPU, 8 GB RAM, and 160 GB NVMe are suitable when retaining history for 30–90 days. Cameras and Frigate should be sized as a separate workload.
When should I switch from SQLite to PostgreSQL?
SQLite is suitable for deployments with up to several hundred devices and a database of approximately 10 GB on fast NVMe. Use PostgreSQL for 1000+ frequently changing entities, history retention from 90 days, a database of 20 GB or more, or latency during recorder cleanup. PostgreSQL should have at least 2 GB of additional RAM.
How much disk space should I allocate for Home Assistant?
A minimum of 40 GB NVMe is suitable for a test instance or a home without long-term history. For continuous operation with 300–1000 entities, choose 80 GB; for PostgreSQL and 90-day retention, start with 160 GB. Do not fill the disk beyond 80%: database cleanup and backup creation may temporarily require dozens of additional gigabytes.
Conclusion
Practical recommendation
For most homes, 2 vCPU, 4 GB RAM, and 80 GB NVMe is the optimal configuration; for 1000+ entities, PostgreSQL, and Node-RED, choose 4 vCPU, 8 GB RAM, and 160 GB NVMe. Run Frigate video surveillance separately or allocate at least 8 vCPU, 16 GB RAM, and fast storage starting at 500 GB.
NVMe VPS activated in 60 seconds: full root access, 20+ locations, and card or crypto payments.
Choose a plan