Si quieres acceder a tu Home Assistant desde Internet, y hacerlo de la forma más segura, entonces tendrás que instalar y configurar el servidor VPN WireGuard que tenemos la posibilidad de instalar como «Complemento» en el sistema operativo. Si actualmente ya tienes en tu router doméstico o en tu NAS un servidor VPN, ya sea con OpenVPN o bien con WireGuard, no sería necesario que también tuvieras uno instalado, porque a través del router o del NAS podrías acceder a la administración del sistema de domótica. No obstante, si tienes solamente un mini PC y tu router no lo permite, una gran opción es instalarlo directamente aquí.
La forma más sencilla de acceder desde el exterior a nuestro sistema de domótica es abriendo un puerto en nuestro router, no obstante, este método no es nada seguro utilizarlo porque cualquier persona haciendo un escaneo de puertos podría localizarlo, e intentar entrar explotando alguna vulnerabilidad, o simplemente probando usuarios y contraseñas. Por este motivo, solamente os recomendamos acceder a vuestro sistema de domótica desde el exterior usando una VPN local, un proxy inverso como el de Traefik o Nginx, o bien usar Cloudflare Tunnels como ya os hemos explicado anteriormente.
Requisitos previos
Lo primero que tenemos que hacer para instalar y configurar la VPN de WireGuard, es irnos al perfil de usuario que hayamos registrado, y a mitad de todas las opciones debemos activar el «Modo avanzado«, para tener a nuestra disposición todas las opciones avanzadas del sistema de domótica.
Una vez que hayamos hecho esto, nos tenemos que ir a «Ajustes / Complementos«, aquí es necesario que tengamos el complemento de «File Editor», si no lo tienes os recomendamos que lo instaléis ya que será totalmente necesario para poder configurar la VPN correctamente. También os recomendamos instalar la base de datos de MariaDB como ya os hemos explicado en RedesZone, con el objetivo de que todos los registros se guarden en una base de datos fiable y muy rápida.
Ahora nos tenemos que meter en el complemento de «File Editor» que ya lo tenemos instalado, e irnos directamente a la pestaña de «Configuración«, aquí tenemos que deshabilitar el «Enforce Basepath», para que nos proporcione acceso a toda la raíz de archivos y carpetas. Una vez que lo hayamos hecho, pinchamos en el botón de «Guardar» y ya lo tendríamos configurado para usarlo más adelante.
Es muy importante asegurarnos de cuál es la dirección IP de nuestro Home Assistant, estamos seguros que ya lo sabéis, pero es muy importante asegurarse porque tendremos que abrir un puerto en nuestro router para poder entrar al servidor VPN desde el exterior, de lo contrario, no funcionará.
Otra recomendación importante es utilizar algún servicio de DDNS (Dynamic DNS) o DNS dinámico, actualmente servicios como No-IP son ampliamente utilizados para configurarlo directamente en nuestro router. Si usas un router de ASUS o de AVM, tenemos un servicio DDNS totalmente gratuito del fabricante y es muy fácil de utilizar. Otra alternativa es utilizar el servicio gratuito de DuckDNS, de hecho, el propio sistema de domótica de Home Assistant dispone de un complemento llamado «DuckDNS» que nos permitirá integrar este servicio en el sistema operativo, para que automáticamente se actualice la dirección IP pública a la que apunta el dominio registrado. Este requisito es fundamental si en tu conexión a Internet tienes una conexión con IP dinámica, en el caso de que tengas IP fija, no es necesario que lo hagas porque la dirección IP pública no cambiará.
También es muy importante que nuestra conexión a Internet no esté detrás de CG-NAT, es totalmente necesario que nuestro operador nos proporcione una dirección IP pública, de lo contrario, no podemos acceder desde el exterior y tendremos que utilizar otro tipo de técnicas, como usar Cloudflare Tunnels entre otras soluciones como Zero Tier.
Ahora ya estaremos listos para instalar un nuevo complemento a nuestro sistema de domótica.
Instalación y puesta en marcha
Para instalar este complemento nos vamos a la «tienda de complementos«, y en la sección de Add-ons de la comunidad lo tendremos disponible para su instalación fácil y rápida. Recordad que está organizado por orden alfabético, por lo que está al final de todo el listado.
Procedemos a instalar este complemento en nuestro sistema de domótica, no hay que olvidarse de activar las tres opciones disponibles:
- Iniciar en el arranque.
- Vigilancia.
- Actualización automática.
Una vez que lo hayamos hecho, ya estaremos listos para realizar la configuración necesaria del servidor VPN de WireGuard integrado en el Home Assistant.
Configuración del servidor VPN
La documentación incorporada en este complemento es bastante completa, tenemos una guía paso a paso de todo lo que debemos hacer para configurar el servidor, no obstante, es posible que surjan algunas dudas a la hora de configurar los «peers» o clientes VPN.
En la pestaña de «Configuración» es donde tenemos todas las partes de la configuración, tanto del servidor como también de los peers. La configuración que debemos poner en la parte de «server» es el siguiente:
host: dominioredeszone.duckdns.org
addresses:
- 172.27.66.1
dns:
- 1.1.1.1
- 8.8.8.8
Ahora procedemos a explicar cada sentencia del código anterior:
- Host: es la dirección IP pública o dominio DDNS que tengas registrado. Es importante que este dominio esté «apuntando» hacia tu dirección IP pública.
- Addresses: es la dirección IP privada del servidor de WireGuard, podemos dejarlo por defecto.
- DNS: son los servidores DNS que se usarán para la resolución de nombres, también podrías poner la dirección IP privada de tu router que normalmente es 192.168.1.1.
En la parte de «peers» es donde podemos configurar todos los clientes VPN de forma simultánea, de hecho, el propio complemento se encargará de generar las claves privadas y públicas necesarias para la configuración, además, también nos proporcionarán directamente el archivo de configuración y un código QR para ponerlo en los diferentes clientes para acceder al servidor VPN.
- name: cliente1
addresses:
- 172.27.66.2
allowed_ips: []
client_allowed_ips:
- 192.168.5.0/24
Ahora procedemos a explicar cada sentencia del código anterior:
- Name: es el nombre identificador del cliente VPN.
- Addresses: es la dirección IP privada del cliente de WireGuard, con cada cliente nuevo tenemos que poner una nueva IP, cambiando el último dígito.
- Allowed_ips: lo dejamos vacío para aceptar cualquier cliente que se conecte.
- client_allowed_ips: tenemos que poner la subred o subredes que queramos que estén en el «Allowed IPs» de los clientes, es para generar automáticamente la configuración. Si queremos hacer redirección completa del tráfico tenemos que poner también 0.0.0.0/0.
A continuación, podéis ver la configuración completa que acabamos de aplicar en el servidor.
Un aspecto muy importante es el puerto 51820 UDP que tenemos en la parte inferior. Este puerto es el que debemos abrir en la sección de «NAT», «Port Forwarding» o «Reenvío de puertos» de nuestro router. Los datos que tendremos que poner en el router es tanto la dirección IP privada del Home Assistant que hemos visto antes, como también el puerto 51820 de tipo UDP.
Ahora ya podemos acceder a la carpeta «ssl» para proceder a descargar toda la configuración.
Descargar la configuración y usarla en los clientes
Si nos vamos al complemento de «File Editor«, tenemos que irnos a la raíz del sistema y entrar dentro del directorio «ssl/wireguard» donde tendremos perfectamente organizados todos los clientes VPN que hemos creado, cada uno en su carpeta con toda la información. Si entramos dentro de la carpeta, podemos ver el archivo de configuración, y al abrirlo podemos ver todo el código que debemos introducir en los clientes, o bien descargar el código QR para escanearlo con nuestro smartphone.
En el cliente VPN oficial, simplemente lo que debemos hacer es agregar un nuevo perfil, le damos un nombre y copiamos todo el código. Automáticamente reconocerá la clave pública y simplemente debemos pinchar en «Guardar».
Lo más importante es la parte de «AllowedIPs» en «Peer«, si aquí ponemos el rango privado de la red local podemos acceder a todos los recursos de la red local doméstica, incluyendo Home Assistant y también el resto de equipos que tengamos en la red local. Con esta configuración, solamente el tráfico que vaya hacia el sistema de domótica o la red local, pasará el tráfico por la VPN, pero no así el resto de la navegación. Para poder hacer un reenvío total del tráfico, tendrías que poner lo siguiente:
- AllowedIPs = 192.168.5.0/24, 0.0.0.0/0
De esta forma, tendrás acceso tanto a la red local como redirección de Internet también.
En el siguiente menú podéis ver todo el registro de conexión del cliente VPN, si os fijáis, nosotros estamos en un entorno local y el «Endpoint» no es la dirección IP pública o dominio, sino una IP privada. En esta sección debería aparecer directamente el dominio DynDNS o IP pública.
Tal y como podéis ver, es muy sencillo utilizar este servidor VPN WireGuard para acceder tanto al sistema de domótica como también a todos los servicios de la red local doméstica.
¿Es mejor tener el servidor VPN en el router?
Hoy en día todos los routers de marcas como ASUS o AVM disponen de soporte para WireGuard VPN, asimismo, marcas como Synology o QNAP en sus routers y NAS también lo soportan. Sin embargo, si tienes el router del operador y no dispones de un servidor NAS, no tendrás más remedio que instalar este popular programa de VPN en el Home Assistant Operating System para conectarte desde Internet de forma segura. Por supuesto, también podrías usar otras técnicas para conectarte de forma remota, como usar Cloudflared a través de subdominios de un dominio principal, o bien usar ZeroTier para crear una red VPN SDN y acceder desde cualquier equipo que tengamos conectado a esta red.
En el caso de que tengas la posibilidad de tener el servidor VPN en el router, o si puedes instalarlo en tu sistema operativo para NAS, ya sea TrueNAS, unRAID o un NAS comercial como el fabricante QNAP o Synology, nuestra recomendación es que lo pongas en el router o en el NAS, para «quitarle» carga al sistema operativo de Home Assistant, y que cuando estemos reiniciando el sistema no perdamos la conectividad con la VPN en ningún momento. De esta forma, mientras estamos realizando configuraciones en la domótica y reiniciando el sistema, podremos seguir trabajando con normalidad y saliendo a Internet a través de nuestra red local doméstica, sin necesidad a esperar a que vuelva a iniciarse el sistema y arrancar el servidor.