diff --git a/homeassistant/.env-example b/homeassistant/.env-example new file mode 100644 index 0000000..459593e --- /dev/null +++ b/homeassistant/.env-example @@ -0,0 +1,5 @@ +# Homeassistant Version (Standard: latest) +HOMEASSISTANT_VERSION=latest + +# Homeassistant Domain +HOMEASSISTANT_DOMAIN=homeassistant.example.com \ No newline at end of file diff --git a/homeassistant/README.md b/homeassistant/README.md new file mode 100644 index 0000000..3ca2fd9 --- /dev/null +++ b/homeassistant/README.md @@ -0,0 +1,62 @@ +# Home Assistant Docker Setup with Traefik + +This guide provides instructions for deploying Home Assistant using Docker and Traefik as a reverse proxy. The setup includes securing the Home Assistant instance with HTTPS and configuring a trusted proxy. + +## Prerequisites +- Docker and Docker Compose installed on your system +- Traefik configured as your reverse proxy +- A domain name pointing to your Home Assistant instance + +## Environment Variables +Before deploying the container, create a `.env` file from the provided `.env-example` file and adjust the values as needed. + +```sh +cp .env-example .env +nano .env +``` + +### `.env-example` file +```ini +# Home Assistant Version (Default: latest) +HOMEASSISTANT_VERSION=latest + +# Home Assistant Domain +HOMEASSISTANT_DOMAIN=homeassistant.example.com +``` + +## Starting the Container +Once the `.env` file is configured, start the Home Assistant container using: +```sh +docker-compose up -d +``` + +## Configuring the Reverse Proxy +To enable proper proxy support in Home Assistant, update `data/config/configuration.yaml` with the following settings: + +### Finding the Local Subnet IP +To determine the Docker subnet used by Home Assistant, run: +```sh +docker inspect homeassistant | grep Gateway +``` + +### `configuration.yaml` +```yaml +http: + ip_ban_enabled: true + login_attempts_threshold: 5 + use_x_forwarded_for: true + trusted_proxies: + - 10.0.0.0/24 # Local Subnet + - 172.18.0.0/24 # Your Docker Subnet +``` + +## Accessing Home Assistant +Once everything is set up, restart Home Assistant and it should be accessible via the configured domain: +``` +https://homeassistant.example.com +``` + +If there are any issues, check the container logs with: +```sh +docker logs -f homeassistant +``` \ No newline at end of file diff --git a/homeassistant/docker-compose.yml b/homeassistant/docker-compose.yml new file mode 100644 index 0000000..9561c31 --- /dev/null +++ b/homeassistant/docker-compose.yml @@ -0,0 +1,35 @@ +--- +services: + homeassistant: + container_name: homeassistant + image: "ghcr.io/home-assistant/home-assistant:${HOMEASSISTANT_VERSION:-latest}" + volumes: + - ./data/config:/config + - /etc/localtime:/etc/localtime:ro + - /run/dbus:/run/dbus:ro + restart: unless-stopped + privileged: true + networks: + - traefik + environment: + - TZ=Europe/Rome + cap_add: + - NET_ADMIN + - NET_BIND_SERVICE + - SYS_ADMIN + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik" + - "traefik.http.routers.homeassistant.entrypoints=http" + - "traefik.http.routers.homeassistant.rule=Host(`${HOMEASSISTANT_DOMAIN:?error}`)" + - "traefik.http.middlewares.homeassistant-https-redirect.redirectscheme.scheme=https" + - "traefik.http.routers.homeassistant.middlewares=homeassistant-https-redirect" + - "traefik.http.routers.homeassistant-secure.entrypoints=https" + - "traefik.http.routers.homeassistant-secure.rule=Host(`${HOMEASSISTANT_DOMAIN:?error}`)" + - "traefik.http.routers.homeassistant-secure.tls=true" + - "traefik.http.routers.homeassistant-secure.service=homeassistant" + - "traefik.http.services.homeassistant.loadbalancer.server.port=8123" + +networks: + traefik: + external: true \ No newline at end of file