Requisitos

Para poder acceder de manera remota a nuestro servidor de Home Assistant se necesita lo siguiente:

  • Un nombre DNS
  • Un certificado firmado

Pasos

  • Conseguir nombre DNS de duckdns.org
  • Crear certificado digital de Letsencrypt
  • Configurar Home Assistant
  • Redirigir puerto en el router

Configurar Duckdns

It a Duckdns.org registrarse y crear un nombre de dominio (por ejempo ejemplo.duckdns.org

Es importante que después de configurar Duckdns, si queremos acceder en local, creemos una entrada en /etc/hosts con la IP y el nombre DNS ejemplo.duckdns.org

Instalar el certificado de Letsencrypt

Instalar el certificado digital en el servidor de Home Assistant

Redirigir puerto 80

Descargar y ejecutar cliente en el servidor

$ mkdir certbot
$ cd certbot/
$ wget https://dl.eff.org/certbot-auto
$ chmod a+x certbot-auto
$ ./certbot-auto certonly --standalone \
--standalone-supported-challenges http-01 \
--email your@email.address \
-d hass-example.duckdns.org

Quitar redirección puerto 80

Dar permisos a la carpeta /etc/letsencrypt/

chmod 755 /etc/letsencrypt
chmod 755 /etc/letsencrypt/live/
chmod 755 /etc/letsencrypt/archive/
chmod 755 /etc/letsencrypt/archive/MIDOMINIO.duckdns.org/privkey1.pem

https://community.home-assistant.io/t/guide-how-to-set-up-duckdns-ssl-and-chrome-push-notifications/9722

Configurar configuration.yaml

http:
ssl_certificate: /etc/letsencrypt/live/ejemplo.duckdns.org/fullchain.pem
ssl_key: /etc/letsencrypt/live/ejemplo.duckdns.org/privkey.pe

Reiniciar la configuración

systemctl restart home-assistant.service

Puede ser que cuando arranquemos el servicio hass nos dé un error en el certificado del siguiente tipo:

Failed config
http:
- Invalid config for [http]: not a file for dictionary value @ data['http']['ssl_certificate']. Got '/etc/letsencrypt/live/MYDOMAIN.duckdns.org/fullchain.pem'
not a file for dictionary value @ data['http']['ssl_key']. Got '/etc/letsencrypt/live/MYDOMAIN.duckdns.org/privkey.pem'. (See /home/homeassistant/.homeassistant/configuration.yaml, line 37). Please check the docs at https://home-assistant.io/components/http/

En ese caso, habrá que mirar si el usuario homeassistant tiene los permisos necesarios para leer los ficheros de los certificados con el siguiente comando:

su homeassistant -s /bin/sh -c 'cat /etc/letsencrypt/archive/minombredns.duckdns.org/privkey1.pem'

https://serverfault.com/questions/474201/how-do-i-see-if-a-file-is-readable-by-a-specific-user-on-linux

Redirigir puerto en el router

El último paso será crear una redirección TCP en el router al puerto 8123 del servidor donde estemos ejecutando Home Assistant.

Finalmente podremos acceder con la url https://MIDOMINIO.duckdns.org