Configuración de Home Assistant en github

Configuración de Home Assistant en github

Guardar la configuración de Home Assistant en un repositorio de GitHub puede llegar a ser muy útil de cara a compartirla o ver los parámetros que han sido modificados. Esta es la forma en la que mi Raspberry lo realiza a diario.

Antes de empezar, dejar claro que tengo Home Assistant corriendo sobre Docker instalado en una Raspberry Pi 4 con Raspbian Lite.

  • Instalar el Addon “SSH & Web Terminal“ desde la tienda del supervidor de Home Assistant
  • Poner el password que deseemos para la conexión
  • Asignar el puerto 22 del contenedor al 222 del host
  • Guardar y arrancar el complemento
  • Activar el inicio en el aranque, vigilancia, actualización automática y mostrar en la barra lateral
  • Crear un repositorio privado en GitHub (Sin añadir el archivo “.gitignore”)
  • Desde la barra lateral de Home Assistant abrimos la terminal.
  • Accedemos al directorio “config” mediante cd config
  • Creamos el archivo “.gitignore” mediante nano .gitignore
  • En el archivo copiamos el siguiente texto
# El * inicial asegura que se va a ignorar todo en un principio.
*

# Lista blanca, archivos con !, no serán ignorados.
!*.yaml
!.gitignore
!*.md
!*.sh
!*.js*

# No queremos incluir el archivo "secrets.yaml" 
secrets.yaml
  • Para guardar y salir “Ctrl + x” y luego “y”
  • Iniciamos el repositorio mediante git init
  • Añadimos todo el contenido mediante git .
  • Ejecutamos el primer commit mediante git commit -m "Primer Commit"
  • Añadimos el repositorio de GitHub como repositorio remoto mediante el comando
git remote add origin git@github.com:USUARIO_GITHUB/NOMBRE_REPO_GITHUB.git
  • Creamos las llaves ssh para conexión a GitHub
    • Dentro de “config” creamos el directorio “.ssh” mediante mkdir .ssh
    • Generamos la llave publico/privada mediante ssh-keygen -t rsa -b 4096 -C "usuario@correo.com"
    • Cuando pregunte donde guardar la llave ponemos “.ssh/id_rsa”
    • Copiamos el contenido de “id_rsa.pub” como llave de acceso ssh para nuestra cuenta de GitHub accediendo a Github.com > Tu perfil > Settings > SSH and GPG keys > New SSH key
    • Ahora hay que indicar a “git” donde se encuentra ubicada la llave mediante el siguiente comando
    git config core.sshCommand "ssh -i /config/.ssh/id_rsa -F /dev/null"
    
    • Actualizamos el repositorio remoto mediante git push -u origin master

Copiar el contenido de “id_rsa.pub” desde nano al portapapeles puede ser un profundo dolor de cabeza, la forma más sencilla es, una vez dentro del directorio “.ssh” mostrar el contenido de la llave mediante cat id_rsa.pub. Con Ctrl + Mays pulsado arrastramos con el ratón para releccionar todo el contenido de la llave y lo copiamos mediante “Ctrl + Mays + c”.

  • Para conseguir que la configuración de Home Assistant se guarde todos los días en el repositorio de GitHub he añadido las siguiente líneas al script pidiario.sh que la Raspberry (No el contenedor de Home Assistant)
ssh -T root@192.168.10.202 -p 222 <<'ENDSSH'
cd /config
git add .
git commit -m "Configuración HA de `date +'%d-%m-%Y %H:%M:%S'`"
git push -u origin master
ENDSSH

Como este script se ejecuta a diario gracias a una llamada desde el cron se actualizará correspondientemente nuestro repositorio con la configuración de Home Assistant.

Enlaces de interés