Home Assistant: The Self-Hosted Brain Your Smart Home Needs
I ditched Google Home and Alexa after realizing they were recording every conversation in my living room. Here's why Home Assistant is the only smart home platform that respects your privacy — and how to run it in Docker.
import AffiliateLink from ’../../components/AffiliateLink.astro’;
It started with a Google Home Mini. “Hey Google, turn on the lights.” Magical.
Six months later I found out Google was recording every single conversation in my living room. Every question from my kids. Every dinner discussion I thought was private. Full audio files, stored on their servers, mined for ad targeting.
I unplugged it. Threw it in the drawer. Never again.
But I still wanted the smart home stuff. Voice-controlled lights are genuinely convenient. Programmable heating saves money. Knowing who’s at the door when I’m away? That’s peace of mind.
Home Assistant became my answer. Three years later, I’m controlling 50+ devices without sending a single byte to Google or Amazon. Here’s how it works, how to set it up, and why I think every self-hoster should give it a shot.
What Actually Is Home Assistant?
Home Assistant is an open-source home automation platform. It talks to thousands of devices — lights, thermostats, cameras, locks, sensors — and controls them from a single interface.
The key difference? It runs locally. Your server talks directly to your devices. No cloud required. No third-party accounts. Your data stays where it belongs.
It supports Zigbee, Z-Wave, WiFi, Bluetooth, Thread, Matter. Integrates with Philips Hue, IKEA TRÅDFRI, Shelly, Sonoff, Tuya, Ecobee, Ring, and 1,900+ others.
I’ve got IKEA bulbs, Sonoff plugs, a Tado thermostat, Zigbee door sensors, a Nuki smart lock — everything talks to Home Assistant without ever touching the internet.
Why Not Alexa / Google Home / Siri?
The problem with cloud assistants is the cloud.
Your voice command goes to servers in Silicon Valley. Analyzed by AI. Stored indefinitely. Sold to ad networks. Accessible to contractors. Subject to government warrants.
Even when it “works well,” it’s terrifying when you think about it.
Home Assistant is different:
- Local-first: Commands stay on your network
- Offline-capable: Keeps working if the internet goes down
- Extensible: 3,000+ community integrations
- Free: No subscriptions, no paid tiers
- Transparent: Open-source code, you can audit everything
The trade-off? You have to set it up yourself. But honestly, if you’re reading this blog, that’s probably part of the appeal.
Docker Compose Setup
Home Assistant can run on a Raspberry Pi, a NUC, a NAS, or a VPS. I use a dedicated NUC with an i3, but a Pi 4 is more than enough to start.
mkdir -p ~/homeassistant
cd ~/homeassistant
Here’s the docker-compose.yml I use:
version: "3.8"
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
container_name: homeassistant
restart: unless-stopped
privileged: true
environment:
- TZ=Europe/London
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
ports:
- "8123:8123"
devices:
- /dev/ttyUSB0:/dev/ttyUSB0
networks:
- hass-network
mosquitto:
image: eclipse-mosquitto:latest
container_name: mosquitto
restart: unless-stopped
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data
- ./mosquitto/log:/mosquitto/log
ports:
- "1883:1883"
- "9001:9001"
networks:
- hass-network
zigbee2mqtt:
image: koenkk/zigbee2mqtt:latest
container_name: zigbee2mqtt
restart: unless-stopped
volumes:
- ./zigbee2mqtt:/app/data
ports:
- "8080:8080"
environment:
- TZ=Europe/London
devices:
- /dev/ttyUSB0:/dev/ttyUSB0
networks:
- hass-network
networks:
hass-network:
driver: bridge
Run it:
docker compose up -d
Wait a minute or two, then open http://your-ip:8123.
The first boot starts a setup wizard. Email, password, name of your home. Home Assistant automatically scans your network and discovers devices — Chromecasts, printers, NAS, smart TVs. It’s pretty impressive the first time you see it.
For devices that aren’t auto-discovered, Settings → Devices & Services → Add Integration is where you manually add them.
The Essentials Integrations I Run
Here’s what I’ve got configured on my instance:
Philips Hue: Local bridge, no cloud needed. All 12 of my bulbs are controllable without phoning home.
Zigbee2MQTT: For door sensors, motion detectors, temperature sensors (Xiaomi/Aqara). Cheap, reliable, no cloud. This is the backbone of my automation setup.
Shelly: WiFi plugs and relays that communicate locally. You can even flash them with Tasmota open-source firmware if you want full control.
Tado: Smart thermostat. Still requires Tado’s cloud unfortunately, but the Home Assistant integration is excellent and worth it for the energy savings.
Nuki: Smart lock. Works locally via Bluetooth or their bridge.
Frigate: NVR for cameras with local AI object detection. If you’re using cameras, this is a must-have — it detects people, cars, packages entirely on-device.
HACS: Home Assistant Community Store. Gives you access to hundreds of unofficial integrations. I’d call it essential.
Automations: Where the Magic Happens
Here are a few automations I run. These are what make the house feel actually “smart” rather than just “voice-controlled.”
Lights at sunset:
alias: "Evening lights"
trigger:
- platform: sun
event: sunset
offset: "-00:30:00"
action:
- service: light.turn_on
target:
entity_id:
- light.living_room
- light.kitchen
data:
brightness: 180
color_temp: 350
Garage door alert:
alias: "Garage door open"
trigger:
- platform: state
entity_id: binary_sensor.garage_door
to: "on"
for:
minutes: 10
action:
- service: notify.mobile_app_my_phone
data:
message: "The garage door has been open for 10 minutes!"
Eco heating when nobody’s home:
alias: "Eco heating"
trigger:
- platform: state
entity_id: group.family
to: "not_home"
for:
minutes: 30
action:
- service: climate.set_temperature
target:
entity_id: climate.living_room
data:
temperature: 16
The automation editor in the UI is actually good now. I use it for 90% of my rules and only drop to YAML for complex ones.
Dashboards for Everyone
Home Assistant lets you build custom dashboards. I’ve got three:
- Wall tablet: Simple view with lights, temperature, weather. For the family.
- Admin: Full view with every sensor, logs, low-battery warnings. For me.
- Mobile: Optimized for the iPhone app.
I also run Node-RED for complex visual automations. It’s optional but powerful if you’re doing multi-step flows.
Voice Control Without Selling Your Soul
You can still have voice control without Google or Amazon listening in.
Options:
-
Assist: Home Assistant’s built-in voice assistant. Works locally with a USB mic.
-
Rhasspy: More advanced open-source voice assistant. Deep Home Assistant integration.
-
Whisper + Piper: Local speech-to-text and text-to-speech models. Runs fine on a Pi 4.
I use an old Android phone with the Companion Home Assistant app in “Assist” mode. It’s not as smooth as Alexa, but it’s 100% offline and nobody’s recording my conversations.
Backups Are Not Optional
Losing all your integrations and automations is a nightmare I’ve lived through once.
Here’s my backup script:
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups/homeassistant"
tar -czf "$BACKUP_DIR/hass_$DATE.tar.gz" -C ~/homeassistant/config .
# Keep last 14 days
find "$BACKUP_DIR" -name "hass_*.tar.gz" -mtime +14 -delete
Test your backups. I had a SQLite DB corruption once — the restore took 10 minutes because I’d actually tested it. Don’t skip this.
Security: Accessing Home Assistant Remotely
This is where things get practical. You’ll want to access your dashboards from your phone when you’re out, but exposing smart home controls to the internet is inherently risky.
Option 1: VPN (recommended) WireGuard via a VPN provider or self-hosted. Connect to your network, then access Home Assistant. No ports exposed, no attack surface. This is what I do.
Option 2: Nabu Casa (cloud) Official service at $7.50/month. Easy, but requires their cloud. Good as a backup option for non-technical family members.
Option 3: Reverse proxy + 2FA Nginx Proxy Manager with authentication. Enable 2FA in Home Assistant. Doable, but more surface area than a VPN.
I use a mix: VPN for myself, temporary Nabu Casa access for my wife when she’s struggling with the VPN client. It’s not perfect, but it works for us.
What I Wish I’d Known Starting Out
A few things I learned the hard way:
Buy a dedicated Zigbee dongle. The ConBee II or Sonoff Zigbee 3.0 USB dongle are both affordable and reliable. Don’t try to use WiFi-only devices — Zigbee is more stable and uses less power.
Updates come weekly. Home Assistant releases every Friday. docker compose pull && docker compose up -d is part of my Saturday morning routine now. I’ve had maybe one breaking update in three years.
Start small. Don’t try to automate your entire house in one weekend. Start with one light and one sensor. Build from there. My first automation was just “turn on the desk lamp at sunset.” It took me two hours to figure out. Now I can build complex flows in minutes.
Your spouse will hate it at first. Home Assistant has a reputation for being “the thing that broke the lights again.” Keep it stable. Don’t tinker during family movie night. I learned this one the hard way.
Should You Switch?
If you’ve got even a handful of IoT devices and care about privacy, Home Assistant should be your next weekend project.
The setup time is real — expect a weekend to get the basics working and a month of tweaking before it feels “done.” But once it’s running? Zero cloud dependency. Full local control. No one listening to your conversations.
I recovered total control of my home environment. Lights, heating, security — everything responds to my rules, my schedules, my automation logic. And the best part? When the internet goes down, everything still works.
If you’re already self-hosting other services, this is a natural next step. Your privacy will thank you.
Written on 2026-05-18, from a living room where Google isn’t listening anymore. 50+ devices, zero mandatory cloud.
This article contains affiliate links. If you purchase through them, I may earn a commission at no extra cost to you.
Stay in the loop 📬
Get self-hosting tutorials, tool reviews, and infrastructure tips delivered to your inbox. No spam, unsubscribe anytime.
Join 0 self-hosters. Free forever.