An XDA writer recently reported that three Docker containers cover their entire smart home. That claim landed because most self-hosted setups grow into twelve-service messes when the real work of running lights, sensors, cameras, and automations only calls for a handful. If a mini PC and a Zigbee stick sit under the TV, and the goal is to leave the cloud without babysitting a homelab, the best apps for an open-source smart home stack fit on one machine and stay out of the way. The seven picks below cover the roles that most self-hosted homes actually need: a hub, an MQTT broker, an automation editor, a Zigbee gateway, a firmware toolkit for ESP boards, a camera recorder that runs local object detection, and a monitor for the stack itself. Every one of them ships as a Docker image, runs on Windows, macOS, and Linux, and stays open-source.
What to look for in a smart home stack app
Before picking any of these, the criteria that actually matter for a self-hosted smart home:
- Docker or container support. An app that ships an official Docker image is one command to install and one command to update. A native binary that pulls in its own database and runtime often becomes a permanent maintenance chore.
- Active maintainer community. Smart home integrations rot fast when a vendor pushes a firmware change. Projects with weekly releases and a healthy GitHub issue tracker recover faster than one-person side projects.
- Plays well with Home Assistant. Home Assistant is the default hub in the self-hosted world. Any tool that speaks MQTT, exposes a REST endpoint, or ships a Home Assistant integration is drop-in. Anything that ignores it becomes a walled garden.
- No cloud lock-in. The point of the stack is that the internet does not need to work for the lights to turn on. Any tool that phones home for authentication or licensing fails this test.
- Low idle CPU. A mini PC hosting six containers should sit near idle when nothing is happening. Apps that pin a core waiting for events are a heat and power problem.
Quick comparison
| App | Role | Docker | License | Standout |
|---|---|---|---|---|
| Home Assistant | Central hub and automation | Yes | Apache 2.0 | 3,000+ integrations, weekly releases |
| Mosquitto | MQTT broker | Yes | EPL 2.0 | Runs under 10 MB of RAM |
| Node-RED | Visual flow automation | Yes | Apache 2.0 | Drag-and-drop logic for complex flows |
| Zigbee2MQTT | Zigbee gateway | Yes | MIT | Replaces every brand-specific Zigbee hub |
| ESPHome | ESP32/ESP8266 firmware | Yes | MIT / GPLv3 | YAML-defined DIY sensors |
| Frigate | Camera NVR with AI detection | Yes | MIT | Local object detection, no cloud |
| Uptime Kuma | Service monitoring | Yes | MIT | Alerts to Telegram, Discord, email |
The apps
1. Home Assistant: best for the central hub
Home Assistant is the reference implementation of an open-source smart home hub. It ships integrations for thousands of devices, a native dashboard, and an automation engine that reads YAML or a visual editor. Running the Container release under Docker keeps the install portable across machines, and a one-click restore from a snapshot moves the whole home onto a new box in under an hour.
Where it falls short: Some device integrations depend on custom components from HACS, the community add-on store. Setting up TLS externally is manual unless the Nabu Casa cloud subscription handles it.
Pricing:
- Free (open-source, Apache 2.0 core)
- Nabu Casa cloud: from around $6.50/month for remote access and Alexa/Google linking
Platforms: Windows, macOS, Linux via Docker. Native OS install on Raspberry Pi and generic x86 mini PCs.
Download: Home Assistant
Bottom line: The default pick for any self-hosted smart home. Every other app on this list plugs into it.
2. Mosquitto: best for the MQTT broker
Mosquitto is the Eclipse Foundation MQTT broker. Almost every smart home stack uses MQTT as the shared message bus, and Mosquitto is the smallest, fastest, and most-referenced implementation. The Docker image runs on tiny memory, needs a single config file, and speaks MQTT 3.1.1 and 5.0.
Where it falls short: Access control is text-file based. There is no web UI. Any dashboarding sits in Home Assistant or a separate client like MQTT Explorer.
Pricing:
- Free (open-source, Eclipse Public License 2.0)
Platforms: Windows, macOS, Linux via Docker. Native binaries for every major OS.
Download: Mosquitto
Bottom line: Set it up once, forget it exists.
3. Node-RED: best for visual automation
Node-RED is the flow-based editor built by IBM Emerging Technology. Drag nodes for MQTT topics, HTTP calls, timers, and function blocks onto the canvas, wire them together, and the automation runs. Home Assistant has its own automation engine, but Node-RED wins when a workflow spans devices, cloud APIs, and long-running state (for example, a motion sensor that triggers a light only when the doorbell has not rung in the last hour).
Where it falls short: Flows can grow tangled without discipline. Version control on JSON exports is workable but not elegant.
Pricing:
- Free (open-source, Apache 2.0)
Platforms: Windows, macOS, Linux via Docker or npm.
Download: Node-RED
Bottom line: The right pick when Home Assistant’s built-in automations run out of expressive range.
4. Zigbee2MQTT: best for the Zigbee gateway
Zigbee2MQTT connects a USB Zigbee coordinator (Sonoff, ConBee II, Home Assistant Yellow, or SkyConnect) to the local MQTT broker. That single bridge unlocks around 3,000 Zigbee devices from every vendor without buying a hub for each brand. Adding a new bulb or sensor takes about 20 seconds of pairing.
Where it falls short: Coordinator firmware upgrades occasionally break device pairings. Some obscure devices need custom converters written in JavaScript.
Pricing:
- Free (open-source, MIT)
Platforms: Windows, macOS, Linux via Docker. USB passthrough on Linux is the smoothest install.
Download: Zigbee2MQTT
Bottom line: The reason a Philips Hue bridge, an Aqara hub, and an IKEA gateway do not need to share the same shelf.
5. ESPHome: best for ESP32 and ESP8266 firmware
ESPHome turns a cheap ESP32 board into a smart home sensor with 20 lines of YAML. The framework compiles firmware from the config, flashes it over USB or OTA, and registers the device with Home Assistant automatically. Custom sensors (temperature, air quality, water leaks, energy monitors) become a weekend project instead of a hardware startup.
Where it falls short: Only supports ESP-family boards. The YAML DSL has a learning curve for anything beyond the built-in components.
Pricing:
- Free (open-source, MIT and GPLv3)
Platforms: Windows, macOS, Linux via Docker. Also runs as a Home Assistant add-on for one-click install.
Download: ESPHome
Bottom line: The pick when off-the-shelf sensors do not cover a specific room or device.
6. Frigate: best for local camera NVR
Frigate is the network video recorder built around local object detection. It grabs RTSP streams from IP cameras, runs each frame through a Coral TPU or the CPU, and only records when a person, car, or animal is actually in view. That single design choice cuts storage by roughly 90% versus continuous recording and keeps every frame off the cloud.
Where it falls short: A Coral USB accelerator is close to mandatory for more than two cameras. Setup with high-resolution streams needs careful tuning of ffmpeg presets.
Pricing:
- Free (open-source, MIT)
- Frigate+ dataset training: around $50/year (optional, sharpens detection)
Platforms: Windows, macOS, Linux via Docker. Linux with hardware acceleration is the recommended path.
Download: Frigate
Bottom line: The best cloud-free camera stack on the market. Every alert lands in Home Assistant with a snapshot.
7. Uptime Kuma: best for monitoring the stack
Uptime Kuma is a self-hosted status page. It pings each service in the stack (Home Assistant on port 8123, Mosquitto on 1883, Frigate on 5000) and alerts on Telegram, Discord, or email when something drops. That means the first sign of a failed container is not a broken automation at 6:30 a.m.
Where it falls short: Not a metrics tool. For CPU or RAM graphs, pair it with Grafana or Home Assistant’s system integration.
Pricing:
- Free (open-source, MIT)
Platforms: Windows, macOS, Linux via Docker. Runs happily on the same box as the rest of the stack.
Download: Uptime Kuma
Bottom line: The last container that turns a hobby smart home into something reliable enough to depend on.
How to pick the right one
A single self-hosted smart home does not need every app on this list from day one. The right starter kit depends on house size, device mix, and how far the setup runs from the cloud.
- For an apartment with a few smart bulbs and a couple of sensors: Home Assistant, Mosquitto, and Zigbee2MQTT cover it. The full stack fits on a Raspberry Pi 4 with 4 GB of RAM.
- For a house with 30 or more Zigbee devices spread across two floors: add a Zigbee router (a mains-powered smart plug works) to extend the mesh, and run the same three-app core on a mini PC for headroom.
- For anyone with more than two IP cameras: add Frigate and a Coral TPU. Cloud DVR subscriptions cost more per year than the hardware.
- For custom hardware projects: add ESPHome. A single ESP32 with a small DHT22 sensor replaces a $60 branded smart thermometer.
- For automations that outgrow Home Assistant’s editor: add Node-RED as the second-tier automation layer.
- For the moment when the family notices the lights fail: add Uptime Kuma. It pays for itself the first time it catches a stuck container before anyone else does.
FAQ
Do I really need Home Assistant if I already have Alexa?
Yes, if the goal is local control, custom automation, and no cloud dependency. Alexa is a voice front end tied to Amazon’s servers. Home Assistant runs on the local network, keeps device state local, and continues to work when the internet drops. Many people run both, wiring Alexa voice commands to Home Assistant scripts through the Nabu Casa cloud add-on.
What is the minimum smart home stack?
Three containers cover most homes: Home Assistant, Mosquitto, and Zigbee2MQTT. That combination replaces a Hue bridge, an Aqara hub, and any brand-specific app for lights, sensors, and switches.
Can this stack run on a Raspberry Pi?
Yes. A Raspberry Pi 4 with 4 GB of RAM handles Home Assistant, Mosquitto, Zigbee2MQTT, Node-RED, and ESPHome without stress. Frigate needs a Coral TPU accelerator on the Pi, or a mini PC with an Intel iGPU for hardware transcoding.
Is Docker required or is a native install fine?
Native install works for every app on the list, but Docker keeps the stack portable. A single docker-compose.yml file moves the entire setup to a new machine in one command. Snapshots and rollbacks become trivial. For a stack that will run for years, Docker is the lower-friction path.
What is the difference between Home Assistant and OpenHAB?
Both are open-source smart home hubs. Home Assistant has the larger community, faster release cadence, and broader integration coverage in 2026. OpenHAB is stronger for users who prefer JVM-based extensibility and rule engines like Blockly and JSR-223. For a first self-hosted stack, Home Assistant is the safer default.