SelfHostStackOpen-Source Directory

Why Migrate Away from SmartThings, Google Home & Apple HomeKit?

SmartThings, Google Home, and HomeKit route device control, automation triggers, and camera feeds through vendor clouds: when the vendor service has an outage, your lights, locks, and automations stop responding even though every device sits a few meters away. Every device event, camera clip, and voice command passes through third-party infrastructure, and platform sunsets can brick entire fleets (the 2019 SmartThings platform migration is a cautionary tale for long-time users). Home Assistant runs 100% locally: automations execute on your own hardware with no internet, Zigbee/Z-Wave traffic stays on your LAN via a coordinator, camera feeds never leave the network, and everything keeps working even if a vendor disappears tomorrow.

Technical Architecture & Migration Analysis

SmartThings, Google Home, and HomeKit use a hub-and-cloud architecture: sensors talk to a hub (or Wi-Fi directly), the hub relays events to the vendor cloud, and automation logic executes in the cloud before commands route back — which is why automations stall during outages and why device telemetry is visible to the vendor. A self-hosted stack is fully local: a Zigbee2MQTT bridge exposes every Zigbee device as MQTT topics on your LAN, Home Assistant subscribes to those topics, executes automation logic on its local event bus, and issues commands back over the network. Camera feeds, optional local voice processing, and dashboards all stay inside your network; internet is only needed for firmware updates and optional VPN-based remote access.

⚠️

When NOT to Migrate (When Staying on SmartThings, Google Home & Apple HomeKit Makes Sense)

Self-hosting is not universally the right move. Keep paying for SaaS if your team hits any of these constraints:

  • You rely on a tight ecosystem of cloud-brand devices (Ring, Nest, Sonos) whose proprietary protocols expose no practical local APIs.
  • You want zero ongoing maintenance and are comfortable with the vendor managing hub firmware, security updates, and remote access.
  • Every device in your home already works reliably on its vendor cloud and you never experience outage-driven breakage.

Real-World Cost Comparison: SmartThings, Google Home & Apple HomeKit vs Self-Hosted

Comparing vendor cloud billings against standard Hetzner / DigitalOcean infrastructure costs at scale.

Tier / ScaleSmartThings, Google Home & Apple HomeKit CostSelf-Hosted VPS CostEstimated Annual SavingsTechnical Breakdown
Starter Hub Setup
~20 devices, 1 hub + Zigbee coordinator
$0 - $50/year basic hubs + $5-$10/mo optional cloud features€3.79/month VPS (or €0 on an always-on home PC) + ~€25 Zigbee coordinator$60 - $130/year (recoups dongle hardware in year one)Home Assistant + Zigbee2MQTT on a 4GB VPS handles dozens of devices with no per-brand hubs.
Privacy / Camera-Heavy Home
50+ devices, continuous camera streams
$15 - $40/month per camera cloud plan (Ring Protect / Nest Aware subscriptions)€3.79 - €14.28/month VPS + local Frigate NVR (no cloud fees)$180 - $480/year per camera subscriptionLocal Frigate object detection keeps clips on your NVMe instead of vendor clouds.
Large Estate / Power Users
100+ devices, multi-zone custom automations
$30 - $100/month across brand subscriptions and premium features€14.28/month (Hetzner CPX31 4 vCPU, 8GB RAM)$300 - $1,100/yearCustom Node-RED / Home Assistant automations replace paid cloud features entirely.

Top 2 Recommended Open-Source Replacements

Tested, self-contained, and production-ready. Click any tool to inspect verified docker-compose configurations, hardware sizing, and deployment guides.

Home Assistant

Apache-2.0⭐ 74.8k+

The local-first open-source smart home hub that keeps automations, cameras, and devices working without internet or vendor clouds.

Min RAM1 GB
Min CPU1 vCPU
GitHub Repo ↗

✅ Advantages

  • 100% local control: automations never depend on a cloud
  • Massive integration ecosystem across 2,000+ vendors and protocols
  • Data stays on your hardware — no vendor telemetry

⚠️ Trade-offs / Limitations

  • Remote access requires a VPN or tunnel setup
  • Steeper learning curve than app-based smart home platforms

Core Features

Local-first automations and dashboards that keep working during internet outages
Native Zigbee (ZHA) and Z-Wave (ZWave-JS) support without proprietary hubs
Matter and Thread support for future-proof device compatibility
Assist voice assistant, blueprint editor, and energy dashboard
Fully local camera NVR and media playback via integrations

Architecture Notes

Python async core built around an event bus and state machine. Integrates 1,000+ protocols and vendors locally via Zigbee (ZHA), Z-Wave (zwave-js), MQTT, REST, Matter/Thread, and companion apps.

Known Limitations

No built-in remote access over the internet — you must pair it with a VPN (Tailscale/Headscale) or a secure tunnel to reach it from outside your LAN.

Official Documentation ↗
📄 docker-compose.yml
Production Ready
version: '3.8'
services:
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    container_name: homeassistant
    restart: unless-stopped
    privileged: true
    ports:
      - "8123:8123"
    environment:
      - TZ=Europe/Lisbon
    volumes:
      - ha_config:/config
volumes:
  ha_config:

🚀 5-Minute Deployment Guide

  1. 1Provision a VPS with at least 1GB RAM (or use an always-on mini-PC).
  2. 2Install Docker and Docker Compose.
  3. 3Save the docker-compose.yml and run `docker compose up -d`.
  4. 4Open http://YOUR_VPS_IP:8123 and create the initial admin account.
  5. 5Add devices via the Integrations panel (Zigbee/Z-Wave/MQTT/REST).
  6. 6Add Tailscale or Headscale for secure remote access without exposing ports.

Recommended Cloud VPS for Home Assistant

Compare all VPS hosts →
Hetzner Cloud€3.79/mo

CX22 (2 vCPU, 4GB RAM)

Plenty of headroom for Home Assistant plus Zigbee2MQTT, Frigate, and add-ons.

Deploy on Hetzner →
DigitalOcean$12.00/mo

Basic Droplet (1 vCPU, 2GB RAM, 60GB SSD)

Includes $200 free trial credits for 60 days.

Claim $200 DO Credit →

Zigbee2MQTT

GPL-3.0⭐ 12.4k+

Universal Zigbee coordinator bridge that exposes 3,000+ devices as MQTT topics — no vendor hubs or cloud accounts.

Min RAM256 MB
Min CPU1 vCPU
GitHub Repo ↗

✅ Advantages

  • Escapes per-brand hubs and clouds — one coordinator for everything
  • Pairs perfectly with Home Assistant, Node-RED, or custom scripts via MQTT
  • Very low resource footprint

⚠️ Trade-offs / Limitations

  • Requires USB coordinator dongle and serial passthrough setup
  • Some niche devices need custom converters

Core Features

Supports 3,000+ Zigbee devices from 600+ vendors in a single network
Publishes every state and event to MQTT for any automation engine
Vendor-agnostic — no manufacturer hub or cloud account required
Over-the-air (OTA) firmware updates for supported devices
Clean web frontend for pairing, group management, and monitoring

Architecture Notes

Node.js application bridging a Zigbee coordinator USB dongle (via serial passthrough) to any MQTT broker. Publishes device states to MQTT topics and subscribes to command topics, cleanly decoupling the radio layer from your automation engine.

Known Limitations

Requires a Zigbee coordinator USB dongle (e.g. Sonoff Zigbee 3.0, ConBee II) passed through to the container; some niche devices need community custom converters.

Official Documentation ↗
📄 docker-compose.yml
Production Ready
version: '3.8'
services:
  mqtt:
    image: eclipse-mosquitto:2
    container_name: mosquitto
    restart: unless-stopped
    ports:
      - "1883:1883"
    volumes:
      - mosquitto_data:/mosquitto/data
      - mosquitto_log:/mosquitto/log
  zigbee2mqtt:
    image: koenkk/zigbee2mqtt:latest
    container_name: zigbee2mqtt
    restart: unless-stopped
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
    environment:
      - TZ=Europe/Lisbon
    volumes:
      - zigbee_data:/app/data
    depends_on:
      - mqtt
volumes:
  mosquitto_data:
  mosquitto_log:
  zigbee_data:

🚀 5-Minute Deployment Guide

  1. 1Connect a Zigbee coordinator dongle to your VPS/host and verify the serial device (e.g. /dev/ttyUSB0).
  2. 2Deploy Mosquitto MQTT broker and Zigbee2MQTT via the compose template.
  3. 3Open the Zigbee2MQTT web UI and put a device into pairing mode.
  4. 4Watch new devices appear as MQTT topics (e.g. zigbee2mqtt/<device>/...).
  5. 5Subscribe an automation engine (Home Assistant, Node-RED) to those topics for control.

Recommended Cloud VPS for Zigbee2MQTT

Compare all VPS hosts →
Hetzner Cloud€3.79/mo

CX22 (2 vCPU, 4GB RAM)

Runs MQTT + Zigbee2MQTT with minimal resources; pair with Home Assistant on the same node.

Deploy on Hetzner →
DigitalOcean$12.00/mo

Basic Droplet (1 vCPU, 2GB RAM, 60GB SSD)

Includes $200 free trial credits for 60 days.

Claim $200 DO Credit →

Quick Specification Matrix

ToolLicenseMin RAMMin CPUGitHub RepoPrimary Advantage
SmartThings, Google Home & Apple HomeKit (Proprietary)Proprietary ClosedManaged CloudManaged CloudN/ATurnkey onboarding with vendor lock-in & paywalls
Home AssistantApache-2.01 GB1 vCPUhome-assistant/core100% local control: automations never depend on a cloud
Zigbee2MQTTGPL-3.0256 MB1 vCPUKoenkk/zigbee2mqttEscapes per-brand hubs and clouds — one coordinator for everything

Performance Benchmarks & Hard Operational Limits

Real-world operational trade-offs, resource consumption limits, and measured throughput.

Benchmark MetricSmartThings, Google Home & Apple HomeKit BaselineSelf-Hosted Alternative MetricOperational Bottleneck / LimitSource
Automation Execution During Internet Outage0% — cloud-dependent automations fail when the internet drops100% — local execution continues with zero connectivityLocal event bus latency (milliseconds).Home Assistant Automation Docs
Command Round-Trip Latency (light switch)400ms - 1,500ms via vendor cloud30ms - 80ms LAN via Zigbee coordinatorZigbee/Z-Wave radio and local bus.Production Test
Camera Clip StorageVendor cloud with 60-180 day retention plansUnlimited local Frigate storage on your NVMeDisk capacity you control.Production Test

Frequently Asked Questions

Practical deployment, migration, and maintenance answers.

Will Home Assistant work with my existing Zigbee devices from SmartThings?

Mostly yes. Zigbee devices are vendor-agnostic at the radio level, so you can pair them directly to a Zigbee2MQTT coordinator or ZHA without the SmartThings hub, as long as the device model is supported (3,000+ models are). Z-Wave devices require a Z-Wave USB stick.

Do I need internet for Home Assistant to work?

No. Automations, dashboards, and device control are fully local. Internet is only needed for optional remote access, optional cloud voice assistants, and software updates.

Is Zigbee2MQTT a replacement for Home Assistant?

No — they are complementary. Zigbee2MQTT is the device-to-MQTT bridge; Home Assistant (or Node-RED, or any MQTT client) is the automation engine that acts on those MQTT topics.

Can I access my home remotely without opening firewall ports?

Yes. The recommended pattern is a private mesh VPN such as Tailscale/Headscale: you connect from your phone to the VPS and reach Home Assistant as if you were on the LAN, with zero exposed ports.

What about HomeKit devices and Matter?

Home Assistant supports Matter and Thread natively and can bridge HomeKit devices into its local model; it can also expose devices back to the Home app via its HomeKit Bridge integration.

Starter Stack Pack — $29

Skip the setup: get the production-ready stack

Don't stitch together configs from five different READMEs. Get all 5 production-hardened Docker Compose stacks — Postgres, Redis, SSL auto-renewal, and backup scripts — ready to deploy in minutes.

n8nVisual workflow automation
📊UmamiPrivacy-first web analytics
🛡️Uptime KumaUptime monitoring & alerts
🔐VaultwardenBitwarden-compatible vault
☁️NextcloudDropbox/Drive replacement
Get the Stack Pack — $29 →

One-time purchase · Instant download · Production-ready

esc
navigate open