Nota: en 2024 he publicado un nuevo artículo explicando un sistema mejorado para el acceso remoto a Home Assistant. Recomiendo seguir los pasos indicados en dicho artículo.
Por defecto, podemos acceder a Home Asssitant desde cualquier dispositivo compatible (PC, móvil, tablet, etc.) siempre que estuviera conectado a la misma red local que HA (misma red wifi o misma red LAN). Pero, ¿qué pasa si queremos acceder desde fuera de dicha red, por ejemplo desde nuestro trabajo?. Hay que tener en cuenta que normalmente la IP pública de nuestro router no es fija por lo que no podemos "apuntar" directamente a dicha IP para acceder a nuestro Home Assistant ya que ésta puede cambiar sin previo aviso.
Una solución es contratar IP fija a nuestro proveedor de internet pero eso cuesta dinero. La otra solución es la que os explico en este artículo y es utilizando un servicio denominado DNS (Domain Name System).
Home Assistant ofrece un Add-on muy sencillo para poder acceder a Home Assistant desde cualquier dispositivo con acceso a internet. Además este Add-on incluye configuración de certificados de encriptación SSL para hacer esta conexión segura.
Let’s Encrypt es un Add-on que nos ayudará a renovar el certificado de seguridad generado por Duck DNS en el caso de que no se renueve automáticamente o que nosotros queramos renovarlo de forma manual (hasta 20 días antes de su caducidad).
Además, debemos tener instalado un editor de ficheros como File Editor o Studio Code Server. Si no los tienes instalado puedes leer el artículo Instalar Add-ons de HA imprescindibles.
Nota: Si redireccionamos el puerto de Home Assistant en nuestro router tal y como describo más adelante, podríamos ya acceder desde internet a nuestro servidor conociendo la IP pública. Para ello vamos a Cual es mi ip y obtenemos dicho dato. Lo que pasa es que la IP que normalmente tenemos en casa no es fija sino que va variando (los operadores suelen tener la opción de contratar IP fija pero no suele ser barato) y la conexión no sería segura.
Acceso desde internet fijo y seguro
Para poder instalar y usar Duck DNS y Let’s Encrypt, se debe:
- Tener una IP interna estática para el servidor Home Assistant (esto lo henos configurado en nuestra instalación de HA)
- Redireccionar en el router el puerto 8123 (TCP) al puerto 8123 interno para la IP estática del paso anterior. En este artículo explico cómo realizarlo en mi router HGU de movistar. Si dispones de otro modelo de router tendrás que averiguar cómo hacer esta operación (en la web portforward.com existen muchas guías para realizar esta operación en diferentes routers).
- Redireccionar el puerto 443 (TCP) al puerto 8123 interno también para la IP del servidor Home Assistant
- Regístrarse en duckdns.org mediante cualquiera de los métodos disponibles y crear un subdominio con el nombre que quieras. Tendrás que apuntar el token que genera esta página y por supuesto el subdominio elegido.
Instalación del Add-On
Selecciona Ajustes - Complementos - Tienda de complementos y selecciona Duck DNS
Selecciona Instalar. Después de unos minutos, el Add-on se ha instalado y debes asegurarte que la opción de arranque al iniciar el programa y vigilancia están seleccionadas.
A continuación vamos a la pestaña de Documentación y seguiremos los pasos que nos indica para configurarlo pero esto lo vemos un poco más adelante.
Registro en Duck DNS
Accedemos a DuckDNS.org y crea una cuenta iniciando sesión a través de cualquiera de los servicios de cuentas disponibles (Google, Github, Twitter, Persona, Reddit). En mi caso voy a utilizar mi cuenta de Google así que hago click en Sign in with Google.
Una vez nos hemos registrado, hacemos click en el captcha y escribimos el nombre del subdominio que deseamos registrar y click en add domain.
Automáticamente nos detecta nuestra IP pública y nos indica que se ha creado correctamente el subdominio (siempre y cuando no estuviera ya ocupado). En la parte superior nos aparece un token que debemos copiar porque nos hará falta más adelante.
Si queremos saber si el subdominio redirecciona correctamente a nuestra IP pública y estás utilizando windows, abre una línea de comando ejecutando cmd y escribe lo siguiente:
nslookup subdominio.duckdns.org
sustituyendo subdominio por el nombre del subdominio que has elegido. Te ha de devolver la IP pública asignada a tu router y que se mostraba en la página web de Duck DNS.
Configuración de Duck DNS en Home Assistant
Volvemos a Home Assistant y nos vamos a la pestaña de Configuración y modificamos la configuración por defecto:
- En la línea que indica el token y que por defecto tiene el valor de null añadimos nuestro token.
- En la línea que indica domain sustituimos null por el nombre del subdominio que hemos creado (incluyendo .duckdns.org).
- En la línea que indica accept_terms sustituimos false por true. para que admita la configuración de Lets Encrypt.
Nota: Podemos agregar un extra de seguridad para que, en caso de que se intente acceder a Home Assistant de forma errónea un número determinado de veces el programa bloquee la dirección IP que realiza las peticiones de conexión. Para ello, en la pestaña de Configuración de Duck DNS añadimos las siguientes líneas:
ip_ban_enabled: true
login-attempts_threshold: n
siendo n el número de intentos erróneos máximos.
Click en Guardar la configuración y volvemos a la sección de Configuración de Duck DNS para Iniciar nuestro complemento. Vamos a la pestaña de Registro y comprobamos que se ha iniciado correctamente. Este proceso tarda un poco y hay que ir Actualizando la pantalla hasta que nos indique que se ha iniciado correctamente. Cuando dejen de aparecer mensajes y se indique finalmente Done! confirmamos que se ha iniciado correctamente el servicio.
Este método no es seguro ya que no estamos utilizando cifrado extremo extremo, es decir, la comunicación entre nuestro dispositivo y nuestro servidor de HA no está cifrada y un hacker podría capturar nuestro usuario y password, por ejemplo, para acceder a nuestro Home Assistant.
Para securizar la conexión debemos realizar unos cambios en el fichero configuration.yaml. Para ello, vamos a la pestaña de Documentación y copiamos el siguiente código:
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
Con File Editor seleccionamos configuration.yaml y pegamos al final estas líneas de código y Guardar.
Reiniciamos Home Assistant
Vamos a Configuración - Configuración - Controles del Servidor - Verificar Configuración. Si todo está correcto (¡Configuración valida!) hacemos click en Reiniciar. - Aceptar
Probando el servicio
Para probar el servicio debemos ir a nuestro navegador y pegar la url:
https://subdominio_elegido.duckdns.org
Si todo está correcto nos ha de aparecer la pantalla de login de Home Assistant:
A continuación, en HA, vamos a Ajustes - Sistema - Red y añadimos los campos Url externa (https://subdominio.duckdns.org) y URL interna (https://IP_Local:8123) sustituyendo subdominio por en nombre elegido anteriormente e IP-Local por la IP de nuestro servidor de HA en nuestra red local.
Instalación de Let’s Encrypt
Este complemento se encarga de controlar los certificados de seguridad de Duck DNS. Normalmente los certificados se renuevan automáticamente pero si tenemos algún problema con la renovación hacemos uso de este complemento. Yo en principio no lo instalaré pero explico el modo de hacerlo por si deseas instalarlo.
Para instalar Let’s Encrypt debemos ir a Ajustes - Complementos- Tiendas de complementos y buscar por Let’s Encrypt - Instalar.
Una vez instalado activamos la opción para que se Iniciar en el arranque. A continuación nos vamos a la pestaña Configuración y rellenamos los siguientes campos:
- En email tenemos que indicar la dirección de correo electrónico con la que nos registramos en Duck DNS.
- En dominio tenemos que añadir nuestro subdominio sin https://, es decir subdominio.duckdns.org
Hacemos click en Guardar, nos vamos a la pestaña Información e Iniciar. Nos vamos a registro y hacemos click varias veces en Actualizar hasta que nos salga el mensaje sending all processes the KILL signal and exiting.
Esta complemento realmente no es necesario que siempre esté ejecutándose ya que solo lo utilizaremos cuando tengamos que renovar nuestro certificado de forma manual. Es más, si reiniciamos HA, aunque hayamos marcado la opción Iniciar al arrancar, normalmente no se inicia.
Esta renovación manual será posible solo cuando falten 20 o menos días a que se caduque el certificado. Como siempre, Reiniciamos nuestro servidor de HA.
Comprobación del certificado
Si queremos comprobar que nuestro certificado está correctamente instalado y que no ha caducado (se renuevan cada 90 días) podemos ir a Configuración - Dispositivos y Servicios - Integraciones - Añadir integración y buscamos Caducidad de certificado. Introducimos el nombre del subdominio de Duck DNS (xxxxxx.duckdns.org) y dejamos el puerto 443. Hacemos click en Enviar y Terminar.
Una vez creada seleccionamos la entidad y nos indica Cert Expiry TimeStamp. Podemos cambiar el nombre (yo lo he cambiado por Certificado Let’s Encrypt). Desmarcamos Habilitar entidad y Actualizar.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.