Integrar certificados digitales de Caddy en Home Assistant

Caddy nos genera automáticamente los certificados digitales de raíz de nuestro dominio y/o de los subdominios según lo tengamos configurado , crea automáticamente una carpeta por cada uno de los certificados

Home Assistant usa el formato PEM tanto para la parte privada como la publica , esta parte la definimos en la sección http de nuestro configuration.yaml

http:
  ssl_certificate: /config/certificados/certs/xxxxxxxxx.duckdns.org.public.pem
  ssl_key: /config/certificados/private/xxxxxxxxx.duckdns.org.private.pem

Lo primero que necesitamos es transformar el fichero crt y el fichero key a pem publico y privado

Para ello usaremos el comando openssl , de esta forma obtendremos la clave publica y su certificado

openssl x509 -in  antrivas.duckdns.org.crt -out  antrivas.duckdns.org.public.pem  -outform PEM

Y con esta obtendremos la calve privada y el certificado correspondiente

openssl ec -in antrivas.duckdns.org.key -text > antrivas.duckdns.org.private.pem

Con este comando podremos comprobar la validez del certificado creado

cat antrivas.duckdns.org.public.pem | openssl x509 -text -noout

Copiaremos ambos certificados al directorio donde Home Assistant va a buscarlos

#Copiamos el certificado digital
sudo cp -f /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/*.public.pem /home/antonio/Containers/homeassistant/certificados/certs/
sudo cp -f /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/*.private.pem /home/antonio/Containers/homeassistant/certificados/private/

Después de comprobar reiniciando HA la validez de ambos certificados lo añadiremos a una tarea cron que se ejecuta cada dia a las seis de la mañana para que nuestro HA siempre tenga los certificados digitales bien fresquitos

echo "****************************************************************" >> $RUTA_LOG
echo `date +"%T"`  "REINICIO DEL SISTEMA" >> $RUTA_LOG
echo "****************************************************************" >> $RUTA_LOG
echo `uptime` | sed -e 's/^[ \t]*//'  >> $RUTA_LOG
echo "****************************************************************" >> $RUTA_LOG


#Creamos los certificados
openssl x509 -in  /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/antrivas.duckdns.org.crt -out  /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/antrivas.duckdns.org.public.pem  -outform PEM
openssl ec -in /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/antrivas.duckdns.org.key -text > /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/antrivas.duckdns.org.private.pem

#Copiamos el certificado digital
sudo cp -f /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/*.public.pem /home/antonio/Containers/homeassistant/certificados/certs/
sudo cp -f /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/*.private.pem /home/antonio/Containers/homeassistant/certificados/private/

En las propiedades del certificado veremos que cada vez que se auto renueve lo tendremos listo para usar

Y con esto y un bizcocho ……

Controlar SAI Instalado en QNAP via NUT

Hace tiempo que compre este SAI https://www.pccomponentes.com/phasak-ph-9464-sai-600va-lcd , y quería tener control de el , para ello estuve mirando hacerlo via nut-upsd

El SAI al conectarlo se comunica via 232 a traves del puerto USB

Lo primero será usar el comando lsusb para localizar el puerto serie del SAI

Miraremos el driver a instalar para el modelo de SAI en https://networkupstools.org/stable-hcl.html

En nuestro docker-compose añadiremos

  nut-upsd:
    image: upshift/nut-upsd
    container_name: nut-upsd
    ports:
        - "3493:3493"
    environment:
      - UPS_DRIVER=blazer_usb
    devices:
      - /dev/bus/usb/001/004
    restart: always     

Al levantarlo vemos como ese puerto esta ocupado

[/share/Container/docker-compose] # netstat -pna | grep 3493
tcp        0      0 0.0.0.0:3493            0.0.0.0:*               LISTEN      28967/upsd
tcp        0      0 127.0.0.1:3493          127.0.0.1:49340         TIME_WAIT   -
tcp        0      0 127.0.0.1:3493          127.0.0.1:49316         TIME_WAIT   -
tcp        0      0 127.0.0.1:3493          127.0.0.1:49282         TIME_WAIT   -
tcp        0      0 127.0.0.1:3493          127.0.0.1:49284         TIME_WAIT   -
tcp        0      0 127.0.0.1:3493          127.0.0.1:49164         TIME_WAIT   -
tcp        0      0 127.0.0.1:3493          127.0.0.1:49278         TIME_WAIT   -

Modificaremos el puerto y levantamos el contenedor de nuevo.

  nut-upsd:
    image: upshift/nut-upsd
    container_name: nut-upsd
    ports:
        - "13493:3493"
    environment:
      - UPS_DRIVER=blazer_usb
    devices:
      - /dev/bus/usb/001/004
    restart: always   

Y con esto y un bizcocho …