# Home Assistant

Here's a docker-compose.yml for home assistant:

```yaml
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:latest"
    volumes:
      - /apps/homeassistant/data:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host
```

We're using network\_mode: host here, which for the most part you won't use on your containers. HA tends to work better this way, because it simplifies discovery of other things on your network (scanning for devices etc.) Using this mode means the docker container is using the IP stack of the host machine, not the IP inside docker, so you don't need to do container level port forwarding. If HA is listening on a given port, so is the host machine.

One place this messes with things (a little) is the Traefik config. Because we're in host mode and not bridge mode, we can't use container labels to tell Traefik how to configure itself for HA. The fix is simple.

In your traefik folder, create a folder called 'dynamic\_configs'

```shell
traefik/
├── acme.json
├── docker-compose.yaml
├── dynamic_configs
│   ├── homeassistant.yml
└── traefik.yml
```

Inside that folder, create a file called homeassistant.yml and paste this:

```yaml
# traefik/dynamic_configs/homeassistant.yml
http:
  routers:
    homeassistant:
      rule: "Host(`ha.beanz.com`)" # Replace with your desired domain
      entrypoints:
        - "websecure"
      service: "homeassistant-svc"
      tls:
        certResolver: "letsencrypt"

  services:
    homeassistant-svc:
      loadBalancer:
        servers:
          # IMPORTANT: Use your Docker host's IP address and Home Assistant's port (default 8123)
          - url: "http://<docker-host-ip-address>:8123"
```

Modify lines 5 and 17 accordingly.

At this point, you should be able to run

```bash
dc up -d
```

Give it a couple of minutes and you can reach home assistant on http://&lt;docker-host-IP&gt;:8123

If you have done the DNS records and modified the homeassistant.yml file in the Traefik dynamic config directory, you can also reach HA at [https://ha.beanz.com](https://ha.beanz.com)

<p class="callout danger">Any issues with connecting to HA, follow the container logs with:  
  
dcf (the alias we created before)  
or  
docker compose logs -f</p>

#### HACS

HA comes with a lot of inbuilt plugins, but HACS opens up all sorts of options. It's a repo of plugins and addons made by the community. YMMV. Installation is simple.

Open a console into the HA container:

```bash
docker exec -it <name of the container running homeassistant> bash
```

Once inside the HA container, run this to download HACS:

```bash
wget -O - https://get.hacs.xyz | bash -
```

  
Restart HA, then follow the steps detailed [here](https://www.hacs.xyz/docs/use/configuration/basic/)

It looks convoluted, but it isn't really. You will need a Github account though.