Acceder a Home Assistant desde fuera de casa con Cloudflare

Como es cuestión de tiempo que quieras hacerlo, hoy te explico cómo puedes acceder a Home Assistant desde fuera de casa con Cloudflare, con varias capas de seguridad y sin abrir los puertos.

Repito, sin abrir los puertos. Esto significa que vas a poder utilizar esta opción aunque no quieras abrir los puertos de tu router, tu compañía telefónica no lo permita o utilice CG-Nat.

Antes de empezar

Tienes que entender que abrir Home Assistant al exterior es, en todo caso, peligroso. Esto se debe a que estás permitiendo la posibilidad de que accedan a tu información y la utilicen con fines ilícitos. Aunque te parezca una posibilidad remota, existen robots que monitorizan la red buscando accesos vulnerables. Por tanto, mi consejo personal es que no lo hagas si no lo necesitas o al menos lo retrases todo lo posible.

Dicho lo anterior, hay distintas formas de acceder a Home Assistant desde fuera de casa, con distintas características (de pago y gratuitas, sencillas o más complejas de configurar, más o menos seguras…). Primero debes evaluar tu caso y elegir la opción que mas te convenga.

La forma más sencilla y segura de acceder a HA es contratar Home Assistant Cloud. Este servicio lo proporciona Nabu Casa (la empresa que esponsoriza Home Assistant), por lo que además estarás apoyando el proyecto. La desventaja es que los precios no son para todos los públicos.

En esta entrada vamos a establecer una conexión por 10€/año o menos y con varias capas de seguridad, para acceder a Home Assistant desde fuera de casa con Cloudflare.

Registro de un dominio propio

Lo primero que vamos a hacer es registrar un dominio (por ejemplo, www.aguacatec.es) para poder acceder desde el exterior a nuestro Home Assistant. Podéis utilizar cualquier página para ello y fácilmente váis a encontrar dominios por unos 10€ al año o menos, lo cual me parece un precio bastante razonable para conectarte a HA con seguridad. Los dominios .es suelen ser más baratos que los .com, y nos van servir igualmente.

Yo llevo muchos años utilizando la página de Hostinet, que pertenece a una empresa que siempre me ha resuelto cualquier problema en tiempo record, ofrece buenos precios y la configuración es muy sencilla. En esta página puedes conseguir un dominio .es por 4,99€ al año.

Si lo que buscas es un dominio lo más barato posible puedes echar un vistazo en NameCheap, donde puedes registrar algunos dominios por menos de 1€ al año.

Crear una cuenta en Cloudflare y configurar la DNS dinámica

Si llevas tiempo con Home Assistant, ya estarás familiarizado con tu IP privada, mediante la que accedes a tu servidor de HA y al resto de dispositivos de tu red local. Tu router también tiene una IP pública con la que sale a internet, que normalmente es dinámica (es decir, que cambia). Por eso necesitamos un servidor de DNS dinámica que traduzca una URL fija (el dominio que acabas de registrar con el que accederás a tu Home Assistant) en la IP de cada momento.

Para ello vamos a crear una cuenta gratuita en Cloudflare. Accede a su página y regístrate en el enlace de ‘Sign Up’, y sigue estos pasos:

  1. Accede a tu panel de control y cambia el idioma a Español, para que te sea más cómodo.
  2. Haz clic en el botón de “Agregar sitio” de la barra superior. Introduce el nombre del dominio que has registrado (por ejemplo, ‘aguacatec.es’) y haz clic en “Continuar”.
  3. En la siguiente pantalla selecciona el plan Free y haz clic en “Continuar”.
  4. En la barra lateral, haz clic sobre la opción DNS > Registros. Baja hasta el apartado “Servidores de nombres de Cloudflare”, donde encontrarás el nombre de dos servidores.
  5. Accede al panel de configuración del dominio en la página donde lo hayas registrado (en el apartado anterior), y dentro de las opciones de DNS busca la opción “Servidores de nombres”. Aquí debes cambiar los que aparezcan por los que te proporciona la página de Cloudflare.
  6. Si has registrado tu dominio en Hostinet encontrarás esta opción en el apartado “Mis productos” de tu perfil, haciendo clic sobre tu dominio, en el apartado “Información del dominio”. Simplemente haz clic en “Cambiar DNS” y modifica las que vienen por defecto.
Cambio DNS Hostinet
  1. Normalmente este cambio tarda desde un rato a varias horas en completarse. Puedes verificar en qué estado se encuentra en la pestaña “Información general”, bajando en la página y haciendo clic en el botón “Verificar servidores de nombres”. En todo caso Cloudflare te enviará un correo cuando se haya completado.
  2. Si ahora vuelves al panel de control de Cloudflare te encontrarás un mensaje que dice “¡Buenas noticias! Cloudflare ahora protege el sitio”.

Creación de túneles en Cloudflare

Si no puedes o no quieres abrir los puertos de tu router (cómo es mi caso) vas a poder establecer el acceso remoto a Home Assistant mediante el servicio de creación de túneles en Cloudflare. Para ello vamos a utilizar el este complemento siguiendo estos pasos:

  1. En Home Assistant accede a Ajustes > Complementos > Tienda de complementos. Haz clic en los 3 puntos de la esquina superior derecha y en “Repositorios”. Agrega el siguiente repositorio:
https://github.com/brenner-tobias/addon-cloudflared
  1. Luego busca el complemento ‘Cloudflared’ y haz clic en instalar.
  2. Ve a la pestaña de “Configuración” e indica el dominio que has registrado (por ejemplo, aguacatec.es) en el campo ‘External Home Assistant Hostname’ y haz clic en guardar.
  3. Ahora abre tu fichero ‘configuration.yaml’, pega las siguientes líneas y después reinicia HA.
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24
  1. Vueve al complemento de ‘Cloudflared’, activa la opción de “Iniciar en el arranque” y “Vigilancia” y haz clic en “Iniciar”.
  2. Accede siempre a la pestaña de registro para verificar que no hay ningún mensaje de error y la instalación se ha realizado correctamente.
  3. Desde esta misma pestaña haz clic sobre “Actualizar” hasta que te aparezca un texto que finaliza con una URL. Copia esta URL en tu navegador y accede a ella. Logeate en Cloudflare si te lo pide.
  4. En la siguiente pantalla, selecciona tu dominio y haz clic en Autorizar.
  5. Listo, ya puedes acceder a Home Assistant desde fuera de casa con Cloudflare. Haz la prueba y comprueba que puedes acceder desde tu dominio.
  6. Por último, vamos a configurar tu teléfono para que desde ahora accedas tanto desde la red local como desde fuera de forma automática. Abre en tu móvil la aplicación de Home Assistant como siempre, o accede con el dominio contratado (por ejemplo, https://aguacatec.es) si es la primera vez y logéate.
  7. Abre el menú lateral y ve a Ajustes > Aplicación complementaria. En el apartado Servidores y dispositivos pulsa sobre tu dispositivo móvil. En el apartado “Información de la conexión” debes indicar lo siguiente:
    • URL de Home Assistant. Indica aquía el dominio contratado (por ejemplo, https://aguacatec.es)
    • SSID de la red Wifi de casa. Añade aquí el nombre de la red Wifi de tu casa, para que se conecte a la URL interna cuando estés dentro de tu red local.
    • URL de conexión interna. Indica ‘http://homeassistant.local:8123/
  8. Ya está! ya puedes acceder a Home Assistant desde tu móvil o cualquier navegador estés donde estés!

Incrementando la seguridad

Ahora que has abierto Home Assistant a internet, te recomiendo que apliques estas medidas para incrementar la seguridad de tus datos:

  • Establece una contraseña de acceso fuerte y cámbiala periódicamente. Ya sabes, mientras más carácteres mejor, mayúsculas, minúsculas, números y símbolos (eso sí, que no se te olvide).
  • Activa el factor de doble certificación. Esta opción se activa desde Home Assistant haciendo clic sobre tu perfil, en el apartado “Módulos de autenticación multifactor”. De esta forma aunque averiguen tu contraseña, necesitarían un código que está en tu móvil y cambia constantemente.
  • Activa la opción IP Ban en HA. Esta opción sirve para bloquear cualquier IP que alcance ‘X’ intentos fallidos al intentar logearse en Home Assistant. Para activarla solo tienes que copiar estas dos líneas en tu fichero ‘configuration.yaml’, dentro del apartado creado ‘http’ creado en el paso 4 del apartado anterior.
http:
  ip_ban_enabled: true
  login_attempts_threshold: 5

¿Dudas?¿necesitas ayuda? entra aquí
Y si te ha gustado, compártelo! 🙂
Send this to a friend