Como configurar Caddy y Home Assistant?

Dentro del stack de mi {{homelab}} tengo corriendo por un lado {{Home Assistant}} y por otro lado {{Caddy}}.

Estos dos servicios corren en hardware separado y están en VLAN’s distintas. Por un lado Home Assistant pertenece a la VLAN 70 con todos los dipositivos IOT. Y Caddy pertenece a la VLAN 1 con todos los servicios generales.

La idea es poder configurar Caddy para poder acceder al dashboard de Home Assistant a través de una url con mi propio dominio, en vez de la IP y puerto. Para esto necesitamos hacer los siguientes cambios.

Caddy

Primero vamos a crear el registro en el Caddyfile, la instalación y configuración esta documentada en {{como-configurar-caddy}}.

Dentro del Caddyfile agregamos un registro de la siguiente forma

home.{$MY_DOMAIN} {  
 reverse_proxy <HOME_ASSISTANT_IP>:8123  
}

En mi caso elegí home como el subdominio a usar para acceder al dashboard. Ahí lo que vamos a tener que cambiar el HOME_ASSISTANT_IP por la IP del equipo donde esta corriendo Home Assistant

Si intentamos ingresar a la URL que definimos, es probable que veamos un mensaje de error “Error 400: Bad Request”, esto quiere decir que Home Assistant no entiende y no conoce de donde vienen los requests, para arreglarlo tenemos que configurarlo.

Home Assistant

Dentro de Home Assistant tenemos que hacer dos cambios para que este quede configurado para ser accedido por un reverse proxy. Para esto tenemos que editar el archivo de configuración. Podemos directamente conectarnos por ssh y editarlo desde la terminal, o podemos usar el servicio de “File Editor” que nos permite editar archivos de configuración desde el dashboard.

El archivo que necesitamos configurar es configuration.yml, vamos a agregarle lo siguiente:

http:
  use_x_forwarded_for: true
  trusted_proxies: 
    - 10.10.0.10

Estas dos configuraciones son para configurar el servicio de http de Home Assistant. Es importante que dentro de trusted_proxies cambiemos la IP por la del equipo donde esta corriendo {{Caddy}}. Como Caddy va a estar corriendo en el puerto 80 y 443, no hace falta especificarle el puerto.

Una vez que tenemos la configuración actualizada, podemos guardarla y reiniciar el servicio de Home Assistant. Con eso estaría listo, podemos entrar desde el navegador a la URL que definimos en Caddy y nos debería llevar al dashboard de Home Assistant