Home Assistant i Docker

Home Assistant i Docker

Docker er min foretrukne måde at køre Home Assistant på. Ja, det kræver lidt mere opsætning end Home Assistant OS, men til gengæld får du fuld kontrol over alt. Og du kan køre andre ting på samme maskine.

Hvornår vælge Docker?

Docker giver mening hvis du:

  • Allerede har en server eller NAS kørende
  • Vil køre andre tjenester ved siden af (Plex, Nextcloud, osv.)
  • Kan lide at have styr på tingene selv
  • Ikke har brug for Supervisor og add-ons

Vil du bare have noget der virker uden bøvl? Så er Raspberry Pi med Home Assistant OS nok et bedre valg.

Forudsætninger

Du skal have Docker og Docker Compose installeret. På Ubuntu/Debian:

# Installer Docker
curl -fsSL https://get.docker.com | sh

# Tilføj din bruger til docker gruppen
sudo usermod -aG docker $USER

# Log ud og ind igen, eller kør:
newgrp docker

# Verificer installation
docker --version

Docker Compose kommer med i nyere Docker versioner. Check det med:

docker compose version

Mappestruktur

Jeg holder alle mine Docker ting samlet. Her er strukturen jeg bruger:

mkdir -p ~/docker/homeassistant/config
cd ~/docker/homeassistant

Config-mappen er vigtig - det er her Home Assistant gemmer alt. Databasen, automationer, konfigurationsfiler. Alt sammen.

Docker Compose fil

Opret filen docker-compose.yml:

services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    network_mode: host

Lad mig forklare de vigtige dele:

network_mode: host - Home Assistant scanner dit netværk for enheder. Med host networking får den adgang til alt, som om den kørte direkte på maskinen. Uden det kan auto-discovery blive besværligt.

/etc/localtime - Sørger for at tiden i containeren matcher din servers tid.

/run/dbus - Nødvendig for Bluetooth-integration. Kan droppes hvis du ikke bruger Bluetooth.

restart: unless-stopped - Starter automatisk efter reboot, medmindre du selv har stoppet den.

Start Home Assistant

Fra mappen med din docker-compose.yml:

docker compose up -d

Første gang tager det et par minutter at downloade image. Derefter starter Home Assistant på:

http://DIN-SERVER-IP:8123

Nyttige kommandoer

Her er de kommandoer jeg bruger dagligt:

# Se logs
docker compose logs -f homeassistant

# Genstart
docker compose restart homeassistant

# Stop
docker compose down

# Opdater til nyeste version
docker compose pull
docker compose up -d

Opdatering

En af fordelene ved Docker er nemme opdateringer:

cd ~/docker/homeassistant
docker compose pull
docker compose up -d

Det var det. Ny version kører. Gamle container fjernes automatisk.

Tag altid en backup før opdatering. Jeg er blevet brændt før.

USB-enheder i Docker

Har du en Zigbee-stick eller lignende? Så skal den mountes ind i containeren.

Find først din enhed:

ls -la /dev/serial/by-id/

Output ligner noget i stil med:

usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus-if00-port0 -> ../../ttyUSB0

Opdater din docker-compose.yml:

services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
    restart: unless-stopped
    network_mode: host

Genstart containeren bagefter.

Backup strategi

Config-mappen indeholder alt vigtigt. Backup den regelmæssigt:

# Simpel backup til tar.gz
cd ~/docker/homeassistant
tar -czvf backup-$(date +%Y%m%d).tar.gz config/

Jeg kører et cronjob der gør det automatisk hver nat og uploader til min NAS.

Begrænsninger

Docker-versionen mangler nogle ting:

  • Ingen Supervisor - Du kan ikke bruge add-ons fra UI’en
  • Ingen automatisk backup - Skal sættes op manuelt
  • HACS kræver ekstra opsætning - Men det virker fint

Til gengæld er det mere fleksibelt, og du lærer en masse om hvordan tingene hænger sammen under motorhjelmen.

Fejlfinding

Container starter ikke

Check logs:

docker compose logs homeassistant

Ofte er det rettigheder på config-mappen:

sudo chown -R $USER:$USER config/

Kan ikke se enheder på netværket

Tjek at du bruger network_mode: host. Uden det virker discovery ikke ordentligt.

USB-enhed findes ikke

Check at enheden eksisterer:

ls -la /dev/ttyUSB0

Og at din bruger har adgang:

sudo usermod -aG dialout $USER
# Log ud og ind igen

Næste skridt

Med Docker kørende kan du nu:

Docker-verdenen åbner for en masse muligheder. Velkommen til den mørke side.