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

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!!

Deja un comentario

Síguenos

Siguenos en facebook