Home Assistant: Acceso remoto
En un artículo anterior, expliqué cómo acceder remotamente a Home Assistant utilizando Duck DNS pero me han surgido algunos problemas de integración con otros sistemas utilizando este método así que voy a realizar la configuración del acceso remoto incorporando un proxy inverso.
Doy por supuesto que solo quieres acceder remotamente a HA. Si deseas acceder a otros servicios lo ideal será utilizar otro método diferente que no es objeto de este artículo.
- Duck DNS es un servicio gratuito de redirección de DNS (sub-dominios de duckdns.org) a una IP de nuestra elección. Esto es, crear un subdominio xxxxxx.duckdns.org que al acceder desde cualquier navegador, redireccione a la IP que se indique; en nuestro caso, a la IP y puerto de nuestro servidor Home Assistant. De tal manera, que desde cualquier dispositivo con Internet, dentro o fuera de nuestra casa, podamos acceder a nuestro servidor e interfaz web de Home Assistant. Resumiendo, con Duck DNS podemos publicar nuestros servidor de HA en internet de forma segura.
- NGINX es un servidor proxy inverso que se utiliza para mejorar la seguridad y accesibilidad de la interfaz web de Home Assistant. NGINX actúa como intermediario entre los clientes (como navegadores web o aplicaciones móviles) y Home Assistant, manejando las solicitudes y redirigiéndolas al servidor de Home Assistant de manera segura.
IP Fija en Home Assistant
Si no lo has hecho antes, debes configurar una IP fija para tu Home Assistant. Para ello debes seguir los pasos indicados en el Tips Configurar una IP estática.
Redireccionamiento de puertos en el router
Nota: Si has seguido el artículo anterior debes eliminar o editar las redirecciones de los puertos indicados en dicho artículo.
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).
Los puertos que hay que redireccionar son los siguientes:
- Redireccionar en el router el puerto 80 (TCP) al puerto 80 interno para la IP estática del paso anterior.
- Redireccionar el puerto 443 (TCP) al puerto 443 interno también para la IP del servidor Home Assistant
Instalación de Duck DNS
Nota: Si ya instalaste este complemento siguiendo los pasos del anterior artículo puedes saltar este paso y seguir con la instalación de NGINX.
Selecciona Ajustes - Complementos - Tienda de complementos y selecciona Duck DNS.
Selecciona Instalar. Después de unos segundos/minutos, el complemento se ha instalado y debes asegurarte que la opción de arranque al iniciar el programa y vigilancia están seleccionadas.
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 en Duck DNS. Te ha de devolver la IP pública asignada a tu router y que se mostraba en la página web de Duck DNS.
Volvemos a HA y esperamos a que termine de instalar el complemento Duck DNS. Nos vamos a la pestaña de Configuración y modificamos la configuración por defecto:
- En Token añadimos nuestro token que hemos obtenido de la web de Duck DNS.
- En Domain indicamos el nombre del subdominio que hemos creado (incluyendo .duckdns.org).
- En Let´s Encrypt, en la línea de código accept_tems sustituimos false por true.
Seleccionamos 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 y se han generado los certificados.
Instalación de NGINX
Selecciona Ajustes - Complementos - Tienda de complementos y selecciona NGINX.
Nos vamos a la pestaña de Configuración y en Domain indicamos el nombre del subdominio que hemos creado (incluyendo .duckdns.org). Además, en Customize, en la línea de código active: false sustituimos ese false por true.
Seleccionamos Guardar, volvemos a la pestaña Información e Iniciar. Vamos a la pestaña Registro y comprobamos que se ha iniciado el complemento. Esto tarda un poco y hay que esperar e ir actualizando el registro hasta que aparezca el mensaje INFO: Running nginx...
A continuación, abrimos Studio Code Server (o File Editor) y editamos el fichero configuration.yaml.
Nota: si ya seguiste los pasos del anterior artículo debes eliminar del fichero las siguientes líneas de código:
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
Debes añadir el siguiente código:
Nota: Con las dos últimas líneas de código hemos añadido 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 (10 intentos en este caso) el programa bloquee la dirección IP que realiza las peticiones de conexión.
Configuración de red en HA
En HA hay que indicarle que vamos a poder acceder remotamente por lo que nos vamos a Ajustes - Sistema - Red y en la sección URL de Home Assistant le indicamos el dominio de Duck DNS
Prueba del acceso remoto
Para probar el servicio podemos acceder desde un navegador a nuestro HA desde internet una vez se haya completado el reinicio de Home Assistant.
http://subdominio.duckdns.org
Let’s Encrypt
Si ya lo tienes instalado del artículo anterior, lo mejor es desinstalar este complemento.
Comprobación del certificado
Nota: si ya lo tienes instalado del artículo anterior, lo mejor es desinstalar esta integración y volver a instalarlo siguiendo estos pasos.
Si queremos comprobar que nuestro certificado está correctamente instalado y que no ha caducado (se renuevan cada 90 días) podemos ir a Ajustes - Dispositivos y servicios - Integraciones - Añadir integración y buscamos Caducidad de certificado.
En Host introducimos el nombre del subdominio de Duck DNS (xxxxxx.duckdns.org) y dejamos el puerto 443. Hacemos click en Enviar , seleccionamos un área 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.
¿Problemas?
Si bien el acceso remoto desde un PC funciona correctamente, no es así con el acceso remoto desde mi app. Si desactivo el Wi-Fi e intento acceder desde la red 4G a través de Duck DNS, la app no consigue conectar con mi Home Assistant.
Investigando el tema he descubierto que algunos proveedores de internet, aunque tu abras algunos puertos en el router, el acceso a dichos puertos está capado. En mi caso, después de realizar la configuración de Duck DNS y NGINX, accediendo a la página https://www.testdevelocidad.es/test-de-puertos/ obtiene nuestra IP y nos indica si los puertos están abiertos o no.
En HA, nos vamos a Ajustes - Complementos y seleccionamos NGINX. Vamos a la pestaña Configuración y en Red nos aparece los siguiente:
Debemos modificar 443 por 1443. Si hubiéramos configurado también el puerto 83, deberemos seleccionar Mostrar puertos deshabilitados e indicar en el campo que se nos abre el puerto 83 (en mi caso no es necesario este paso). Seleccionamos Guardar y reiniciamos el complemento.
Espero a que se reinicia el complemento y vuelvo a comprobar los puertos y ahora ambos me indican que están abiertos.
Probamos el acceso remoto con el PC a la dirección https://[dominio].duckdns.org:1443 y funciona correctamente. En Home Assistant, seleccionamos Ajustes - Sistema - Red y en Url de Home Assistant añadimos el puerto 1443 a la url.
Ahora probamos la app añadiendo también a la dirección del servidor Duck DNS el puerto 1443 y funciona correctamente.
Comentarios
Publicar un comentario