Instalación Docker Parte 6 Lets EnCrypt + DuckDns
Buenas a todos de nuevo! A raiz del tutorial de Lets Encrypt y duckdns para implementarlo en nuestro HA como servicio, hoy vamos a explicar como hacerlo en docker ya que muchos de vosotros me estáis preguntando.
Tenemos dos opciones para implementar SSL en nuestro HA, la primera es por el metodo de Traefik y la segunda es por el metodo dehydrated que ya hablamos en un post anterior. Aqui hablaremos de la segunda.
En el apartado de duckdns seguiremos los pasos que seguimos en el anterior post
Contenidos
Paso 1º
En el apartado de Lets EnCrypt, Abriremos un terminal ssh logueandonos con el usuario con el que instalamos el docker de home assistant y nos vamos a nuestra carpeta de HA (Imaginemos que lo tenemos en /docker/homeassistant) y pondremos lo siguiente:
git clone https://github.com/lukas2511/dehydrated.git
Una vez hemos realizado el paso anterior nos iremos a /docker/homeassistant/dehydrated y crearemos por un lado un archivo domains.txt (nano domains.txt) y pondremos nuestro dominio duckdns y cerramos guardando los cambios:
midominio.duckdns.org
A continuacion vamos a crear otro archivo llamado config (sin extension, nano config) y ponemos lo siguiente:
# Which challenge should be used? Currently http-01 and dns-01 are supported
CHALLENGETYPE="dns-01"
# Script to execute the DNS challenge and run after cert generation
HOOK="${BASEDIR}/hook.sh"
Una vez guardemos el archivo generaremos otro llamado hook.sh (nano hook.sh) y copiaremos lo que sigue cambiando la parte domain=»mihome» por la parte primera del dominio (midominio) y luego pondremos nuestro token generado en la pagina duckdns en el apartado token=»aquinuestrotoken».
#!/usr/bin/env bash
set -e
set -u
set -o pipefail
domain="myhome"
token="your-duckdns-token"
case "$1" in
"deploy_challenge")
curl "https://www.duckdns.org/update?domains=$domain&token=$token&txt=$4"
echo
;;
"clean_challenge")
curl "https://www.duckdns.org/update?domains=$domain&token=$token&txt=removed&clear=true"
echo
;;
"deploy_cert")
sudo systemctl restart home-assistant@homeassistant.service
;;
"unchanged_cert")
;;
"startup_hook")
;;
"exit_hook")
;;
*)
echo Unknown hook "${1}"
exit 0
;;
esac
Una vez guardado el archivo le pondremos los permisos adecuados tal que asi:
chmod 755 hook.sh
Parte 2ª
Una vez llegados a este punto ahora toca generar los certificados con este comando:
./dehydrated --register --accept-terms
Nos tiene que dar todo OK en el apartado anterior, ahora metemos otro comando para que duckdns nos de su aprobado de esos certificados para que los firme:
./dehydrated -c
Veremos que al final del todo nos da un pequeño fallo ya que este script esta hecho para que cuando termine nos reinicie el servicio HA solo pero como tenemos docker eso no puede hacerlo, de ahi el fallo.
Paso 3º
Nos meteremos en nuestro Cron del sistema y pondremos que nos vaya actualizando nuestros certificados cada cierto tiempo sin tener que tocar nada nosotros:
sudo crontab -e
Al final del archivo pondremos lo siguiente:
0 1 1 * * /docker/homeassistant/dehydrated/dehydrated -c
Paso 4º
Por ultimo nos vamos a nuestro archivo configuration.yaml y rellenamos el apartado http tal que asi:
http:
ssl_certificate: /config/dehydrated/certs/myhome.duckdns.org/fullchain.pem
ssl_key: /config/dehydrated/certs/myhome.duckdns.org/privkey.pem
base_url: https://myhome.duckdns.org:8123
Ya para acabar deberemos reiniciar nuestro docker de Home Assistant y ya tendriamos nuestros acceso mediante https://midominio.duckdns.org.
Espero que os haya gustado! Para cualquier duda o aclaracion ya sabeis nuestro Telegram de Domology.
Un saludo a tod@s!!