community italiana di domotica personale
 
Backup con restic via Backrest: installarlo e configurarlo con Docker su Raspberry Pi OS

Backup con restic via Backrest: installarlo e configurarlo con Docker su Raspberry Pi OS

SCOPI DELLA GUIDA:
  • Installare e configurare l’applicazione web Backrest per la gestione dei backup basati su restic
  • Livello di difficoltà: medio
CONCETTI AFFRONTATI:
  • Installazione e configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
  • Sistema operativo Raspberry Pi OS (aka Raspbian) ver 64bit
  • Docker per Raspberry Pi OS
  • Backrest per Docker
  • restic (incluso nell’immagine Docker di Backrest)
PREREQUISITI:
DISPOSITIVI FISICI UTILIZZATI:
GUIDA DEDICATA A utenti:
Raspbian
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 1.1

Backrest - Docker

Abstract

Effettuare i backup del propri dati è fondamentale per garantire un buon livello di sicurezza in caso di perdita degli stessi nei più disparati scenari – per errori propri, guasti o altro. Spesso ci si rende conto dell’esigenza di effettuare il backup solo dopo averli persi: sano è quindi adottarli prima che ciò accada perché (e questo è pressoché certo) prima o poi questo capita. Vi vediamo, che fate gesti scaramantici, ma per lo più è così.

Negli ultimi tempi un semplice ma potente tool open source chiamato restic si è affacciato sul panorama. Disponibile per molte, diverse piattaforme, restic consente di effettuare backup in tantissime, diverse modalità: è possiblie effettuali localmente, usando unità esterne, path di rete, risorse cloud e altro. Inoltre, supporta la gestione di backup incrementali, verifica di congruità dei dati salvati e tanti piccoli dettagli che lo rendono un oggetto davvero molto flessibile e interessante.

D’altro canto, restic è un componente da utilizzarsi, tipicamente, via riga di comando sui più disparati ambienti (Linux, Windows, MacOS). La risposta per una forte semplificazione nell’uso di restic è Backrest, un progetto che consente di usare questo potente tool sfruttando una semplice ma efficace interfaccia web.

Implementare Backrest permette quindi all’utente di sfruttare la potenza di restic tramite un’interfaccia grafica, intuitiva e molto pratica.

La presente guida illustra come implementare Backrest tramite Docker su Raspberry Pi, il che consente un uso ancora più semplificato perché non prevede la previa installazione di restic, il quale in questo caso è già incluso nel container che si andrà a realizzare.

Si parte

Assunti

Questa guida è dedicata a chi abbia già un Raspberry in uso con sistema operativo Raspberry Pi OS (aka Raspbian) in versione 64bit. Per coloro che non abbiano ancora provveduto e si trovino ad avere un Raspberry Pi, magari acquistato appositamente per realizzare la propria domotica, allora questo passo della guida va smarcato seguendo prima un’altra guida, che spiega passo passo come configurare il sistema operativo Raspberry Pi OS.

La guida da seguire:

Una volta terminata la configurazione di Linux Debian (inclusa la possibilità di collegarvisi tramite SSH nonché aver effettuato il perfezionamento) è possibile procedere nella presente guida.

Come funziona (importante)

Prima di passare alla configurazione è essenziale capire come Backrest (e quindi restic) funzioni.

Sostanzialmente, Backrest/restic sfruttano due concetti semplici: i “repository“, ovvero dove i dati vengono salvati, e i “plan“, ovvero cosa viene salvato (quali “percorsi“), quando e come, e su quale repository.

Ora, mentre tipicamente quelli da salvare sono percorsi locali alla macchina sulla quale è in esecuzione Backrest/restic (inclusi eventuali percorsi esterni montati dal sistema operativo, come dischi di rete o altro), i repository – ovvero dove i backup vengono effettivamente salvati – possono essere i più disparati, inclusi ulteriori percorsi locali (o esterni, mappati) o risorse diverse, come percorsi SFTP, server REST, Amazon S3, Minio Server, Wasabi, Aliyun e molto altro.

Ora, tutto questo è importante averlo bene in mente perché, usando Docker, è altrettanto importante capire cosa e come passare al container Backrest che andremo a creare:

  • quanto ai repository, è possibile anche non “passargli niente”, dato che è possibile definire dei repository target che non siano su filesystem locale ma su risorse Cloud o di altro tipo come quelle sopracitate;
  • quanto ai percorsi, è sempre necessario indicare al container quali percorsi locali (anche derivanti da mount di percorsi esterni da parte del sistema operativo) debbano essere messi a disposizione di Backrest allo scopo di effettuarne i backup.

A seguire, assumeremo quindi che l’utente abbia ben compreso i contenuti del presente paragrafo.

Installare Docker

Installare Docker su Raspberry Pi OS è piuttosto semplice: esistono si una procedura completamente automatica che una manuale. Entrambe le procedure sono illustrate in dettaglio in questa breve guida.

Se si ha già provveduto all’installazione di Docker, va da sé che questo passaggio possa essere saltato.

ATTENZIONE: affinché i comandi a seguire funzionino, è necessario aver aggiunto Docker al gruppo sudoerscome spiegato in guida.

Configurazione base

Prima di procedere all’istanziamento di Backrest, però, è necessario creare una serie di cartelle le quale conterranno vari contenuti persistenti. Una volta collegati via SSH al computer ospitante tramite una propria utenza (eg. “pi“), provvedere a creare le cartelle:

sudo mkdir -p ~/backrest/data ~/backrest/config ~/backrest/cache ~/backrest/repos

La prima cartella creata, “data“, conterrà le informazioni relative all’app stessa, mentre la seconda, “config“, ne conterrà la configurazione. In “cache” verranno salvati file temporanei mentre “repos” viene proposta come possibile cartella dove effettuare i backup, sulla base di quanto spiegato nel paragrafo sopra. Starà poi all’utente usarla o meno, se sostituirla con altre eccetera.

Istanziare Backrest

Arrivati a questo punto è possibile provvedere all’instanziamento di Backrest, il quale viene eseguito come container Docker tramite un’istanza specifica.

In ambito Docker, l’istanziamento dell’applicazione può essere effettuato tramite esecuzione di un comando manuale (più immediato) oppure tramite una configurazione del tool di gestione Docker Compose, approccio inizialmente più ostico ma che consigliamo per tutta una serie di motivi. Entrambe le scelte sono valide, ma in prospettiva (specie in ottica di aggiornamento) imparare ad usare Docker Compose è altamente consigliato.

Provvediamo quindi all’istanziamento vero e proprio dell’applicazione, utilizzando come spiegato prima o il comando “docker run” o la più versatile configurazione Docker Compose.

ATTENZIONE: affinché i comandi a seguire funzionino, è necessario aver aggiunto Docker al gruppo sudoerscome spiegato in guida.
Vetrina - Offerte del giorno

Tramite comando “docker run”

Istanziamo dunque Backrest su Docker tramite il comando:

docker run --init -d -it --name=backrest --restart always -p 9898:9898 -v PATH_DA_BACKUPPARE:/NOME_RISORSA -v ~/backrest/data:/data -v ~/backrest/config:/config -v ~/backrest/cache:/cache -v ~/backrest/repos:/repos  --env BACKREST_DATA="/data" --env BACKREST_CONFIG="/config/config.json" --env XDG_CACHE_HOME="/cache" garethgeorge/backrest:latest-alpine

avendo cura di adeguare il comando personalizzando il PATH_DA_BACKUPPARE corretto. Un esempio? Se si vuole effettuare il backup completo di Home Assistant, il quale sia configurato nella cartella homeassistant presente nella home dell’utente in uso, indicare ~/homeassistant:/homeassistant, il quale passerà la cartella ~/homeassistant al container, il quale la conoscerà direttamente come /homeassistant.

N.b. Se si vuole indicare un percorso diverso, locale, dove salvare i backup, modificare la voce -v ~/backrest/repos, oppure aggiungerne di nuove.

Congratulazioni: Backrest è ora operativo.
Ora si può passare al suo uso.

Tramite Docker Compose

Se astutamente si sceglie di utilizzare Docker Compose, allora è semplicemente necessario aggiungere al proprio file docker-compose.yaml la seguente configurazione (sotto il bocco services):

  backrest:
    container_name: backrest
    image: garethgeorge/backrest:latest-alpine
    restart: unless-stopped
    volumes:
      - ~/backrest/data:/data
      - ~/backrest/config:/config
      - ~/backrest/cache:/cache
      - PATH_DA_BACKUPPARE:/NOME_RISORSA
      - ~/backrest/repos:/repos # (opzionale)
    environment:
      - BACKREST_DATA=/data
      - BACKREST_CONFIG=/config/config.json
      - XDG_CACHE_HOME=/cache
    ports:
      - 9898:9898

avendo cura di adeguare il comando personalizzando il PATH_DA_BACKUPPARE corretto. Un esempio? Se si vuole effettuare il backup completo di Home Assistant, il quale sia configurato nella cartella homeassistant presente nella home dell’utente in uso, indicare ~/homeassistant:/homeassistant, il quale passerà la cartella ~/homeassistant al container, il quale la conoscerà direttamente come /homeassistant.

N.b. Se si vuole indicare un percorso diverso, locale, dove salvare i backup, modificare la voce ~/backrest/repos, oppure aggiungerne di nuove.

Una volta salvato il file docker-compose.yaml, eseguire il comando:

docker compose up -d backrest

il quale provvederà a istanziare il container.

Congratulazioni: Backrest è ora operativo.
Ora si può passare al suo uso.

Uso

Reso operativo, vediamo ora come utilizzare Backrest.

Accedere a Backrest

La configurazione di dettaglio di Backrest si effettua sempre dopo il primo avvio del container. La sua interfaccia viene esposta (di base) sulla porta 9898 del Raspberry Pi ospitante tale applicativo (salvo diverse configurazioni a monte). Pertanto, è sufficiente collegarsi tramite browser all’indirizzo:

http://INDIRIZZO_IP_DEL_RASPBERRY:9898

Dove ovviamente INDIRIZZO_IP_DEL_RASPBERRY andrà sostituito con l’indirizzo IP del computer ospitante.

La prima schermata ci darà il benvenuto e ci chiederà di creare un primo utente:

Backrest - crazione utente
creazione primo utente.

Fatto ciò, Backrest ci permetterà di entrare nell’interfaccia vera e propria.

Backrest - interfaccia
l’interfaccia principale di Backrest.

Ora siamo pronti ad operare.

Creare un Repo

Arrivati sin qui dovremmo aver passato al container dei percorsi, in base alla configurazione del container, utili per l’uso come repository, ovvero location dove salvare i nostri backup (salvo voler usare altri target, come spiegato prima).

Negli esempi portati abbiamo passato un unico percorso, conosciuto dall’applicazione come “repos“, collegato alla cartella locale ~/backrest/repos.

Clicchiamo quindi su “Add Repo” per andare a creare un repository “logico” che venga scritto nella cartella “repos” utile al backup, per esempio, di Home Assistant.

Backrest - Nuovo Repo

Con poca fantasia gli diamo nome “home-assistant-repo” e gli indichiamo di salvare sotto /repos/homeassistant. Completiamo indicando una password di accesso.

Sotto, volendo, possiamo indicare anche altri parametri, ovvero per quanti giorni il dato dev’essere considerato fresco ed altro (tutto spiegato presso il wiki di Backrest).

Cliccato su “Submit“, il nostro Repo sarà pronto.

Creare un Plan

Creato un repository per effettuare i nostri backup, andiamo a creare un piano di backup.

Clicchiamo quindi su “Add Plan” per andare a creare un plan utile al backup, per esempio, di Home Assistant, che utilizzi il Repo appena creato ad hoc.

Backrest - Nuovo Plan

In questo caso chiameremo il plan “home-assistant-backup“, associandolo naturalmente al repo appena creato, “home-assistant-repo“.

Quanto a “Paths“, andremo a indicare la radice dei file da backuppare, ovvero /homeassistant in base alle scelte fatte (a mo’ d’esempio) al momento della creazione del container.

Anche in questo caso abbiamo svariate variabili da configurare: quanto eseguire il backup e ogni quanto; quale sia la policy di retain (ovvero quale profondità storica conservare dei dati) e altro. Anche in questo caso, tutto è spiegato in dettaglio presso il wiki di Backrest.

Cliccato su “Submit“, il nostro Plan sarà pronto.

Esecuzione del backup

A questo punto, salvo non si voglia attendere l’esecuzione automatica – se pianificata – cliccando sul nome del Plan sarà possibile accedere alla schermata di dettaglio, presso la quale è presente il pulsante “Backup now“.

Cliccandolo, il backup avrà luogo per la prima volta.

In caso di errori, l’interfaccia li riporterà sottoforma di log e darà modo all’utente di correggere eventuali errori.

Considerazioni finali

Restic, utilizzato tramite Backrest, è uno strumento estremamente versatile

L’esempio che abbiamo portato per la sua prima configurazione è solo una delle centinaia di configurazioni realizzabili: è possibile creare quanti Repo e quanti Plan si vuole, configurando vari backup in modi molto diversi tra loro. Il nostro consiglio spassionato è quello di non utilizzare la stessa macchina dal quale si attingono i dati da backuppare per salvare i propri backup: questo, naturalmente, non vi tutelerebbe a fronte di eventuali guasti dei volumi su di essa presenti.

Una buona soluzione è infatti utilizzare, come Repo per dati importanti, delle coordinate cloud (o comunque non locali) così come spiegato all’inizio. Per tutto il resto, si rimanda al sito wiki del progetto.

Buon backup a tutti!

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.