My boring Blog

Home page di Mauro Frigerio
it en

Borg Backup in Home Assistant

21-03-2021 Tempo di lettura 4 minuti article

Trovo l’idea di base di HomeAssistant fantastica, cioè di avere la proprima smart home in locale e non nel cloud . Purtroppo nel creare il mio primo setup di HA non ho trovato nessuna soluzione che mi soddisfacesse per eseguire in locale (sul mio NAS) il backup (o in linguaggio HA, snapshot). L’unica soluzione che ho trovato ricercando sui vari siti era quella di usare un add-on per fare il backup su Google Drive.

Ma perchè fare tutti gli sforzi per tenere tutto in locale e poi “regalare” i dati a Google? L’altro giorno mi sono accorto di una cosa che mi ha dato la marcia in più per cambiare il prima possibile. Io ho sempre caricato gli snapshot su Google Drive proteggendoli con una password, ma da alcune release di HA c’è l’opzione di eseguire uno snapshot prima del upgrade. Peccato che questo snapshot viene eseguito senza password.

Ho deciso di passare tutti i miei backup da Google Drive a Borg backup. Volendo c’è la possibilità di fare un backup offsite su Borg Base (con 10Gb gratis e degli interessanti piani a pagamento). Usare questo servizio non è un problema perchè Borg di base cripta tutti i dati e il provider non riesce ad interpretarli. Io ho già la mia soluzione con un NAS Synology con Borg backup e dei backup offsite.

Requisiti

  • un server SSH con Borg backup

Borg backup add-on in Home Assistant

Esiste un add-on di uno sviluppatore che integra in Home Assistant Borg backup. Io ho creato un fork per aggiungere una funzione supplementare (cleaning degli snapshot), ho anche fatto un PR per integrare il tutto nel repository principale (attualmente non ancora approvato).

Ad ogni esecuzione dell’add-on si esegue il backup sul server Borg.

Configurazione

La configurazione qui d’esempio si basa sul mio fork, ma è valida anche per l’add-on originale.

  1. Nella schermata Supervisor > Negozio dei componenti aggiuntivi, cliccare sui 3 puntini in alto a destra poi su Repository. Incollare il link del repository https://github.com/frigi83/hassio-borg_backup e cliccare su aggiungi

  2. Nella schermata Negozio dei componenti aggiuntivi è apparsa una nuova casella Borg Backup, cliccateci sopra e poi cliccate un installa.

  3. Nella schermata del add-on aggiungere tutti i parametri del tab Configurazione, qui c’è un esempio. I tuoi valori dipenderanno dalla tua configurazione.

    user: username
    host: borg.backup.example.com
    port: 22
    path: ./data/hassio
    archive: hassio
    passphrase: GENERARE_UNA_PASSWORD			# SALVATELA IN UN POSTO SICURO, altrimenti ciao backup
    prune_options: '--keep-daily=8 --keep-weekly=5 --keep-monthly=13'
    local_snapshot: 3
    
  4. Avviare l’add-on dal tab Informazioni

  5. Nel tab Registro appare la chiave generata per Hassio (vedi esempio sotto), copiarla nel file .ssh/authorized_keys come una nuova riga sul server SSH con Borg. In questo esempio si deve copiare ssh-ed25519 AAAAC3.....U0i hassio.

    [15:15:00] INFO: A public/private key pair was generated for you.
    [15:15:00] NOTICE: Please use this public key on the backup server:
    [15:15:00] NOTICE: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHRHnaf0uiRPxVYKJ8PcfK5GJLz/omuZYS5627v1+U0i hassio
    [15:15:00] INFO: Trying to initialize the Borg repository.
    
  6. Così al prossimo avvio del add-on ci si può collegare al server SSH e avviare il backup

Configurazione automazione

Questo add-on non si auto esegue e quindi serve un automazione per eseguire lo snapshot e poi eseguire il backup. Ho creato un’automazione unica che prima esegue lo snapshot e poi dopo un ritardo di 2 ore esegue il backup.

alias: Borg Backup
description: ''
trigger:
  - platform: time
    at: '03:25:00'
condition: []
action:
  - service: hassio.snapshot_full
    data: {}
  - delay:
      hours: 2
      minutes: 0
      seconds: 0
      milliseconds: 0
  - service: hassio.addon_start
    data:
      addon: ea8a4296_borg_backup			# MODIFICARE SECONDO IL PROPRIO HASSIO
mode: single

Funzione aggiuntiva

Nel mio fork come detto ho aggiunto una funzione, che permette di fare il clean dei vecchi snapshot presenti su Home Assistant. Questi file possono raggiungere anche parecchie centinaia di Mb, nel mio caso si parla di circa 500Mb per ogni snapshot. Per Borg non è un problema grazie alla deduplicazione, mentre in locale si può riempire abbastanza velocemente la memoria.

Grazie al parametro local_snapshot si può definire quanti snapshot devono rimanere su Home Assistant al termine del backup. Nel esempio sopra vengono mantenuti i 3 snapshot più recenti, tutti gli altri sono eliminati.

Vorta

Si può aggiungere la stessa configurazione su Vorta, così da poter accedere ai vari backup da un’altra postazione, in caso di necessità di ripristino. Vi consiglio di farlo subito e non aspettare il momento del bisogno. Importante è salvare in un posto sicuro la passphrase per poter ricuperare i backup, senza questa password non è possibile ricuperare i backup.


Foto articolo di: Bethany Drouin da Pixabay