My boring Blog

Home page di Mauro Frigerio

Borg Backup server in Docker

10-03-2021 Tempo di lettura 3 minuti Article

Ma serve veramente fare un backup? La mia risposta è: assolutamente si! Quante volte grazie ai salvataggi sono riuscito a evitare grandi problemi e la perdita di informazioni importanti. Avere un sistema di backup automatico è ancora più importante, perchè se lo facciamo manualmente è di sicuro la prima attività che rimandiamo. Ma quando ci serve poi è troppo tardi.

Negli ambienti Unix like (Linux, macOS,…) esiste un sistema molto comodo e veloce: Borg backup. Veloce e anche molto efficace nel non occupare troppo spazio. Quest’ultimo punto è importante per me perchè oltre i backup sul mio NAS regolarmente copio tutto su un server esterno (off-site backup). Server che è a pagamento e quindi devo cercare di ridurre il bisogno di spazio.

Problema con Synology

I NAS Synology sono ottimi e li trovo anche molto stabili, perfetti per gestire i miei dati di casa. Tra le multiple opzioni offerte purtroppo però non c’è Borg. Questo non è un grosso problema perchè posso usare Samba per fare il backup, ma Samba non mi ha mai convinto.

Su Synocommunity esiste un pacchetto già pronto per Borg, ma non è molto aggiornato. Cosa fare?

Borg backup server su Docker

Aggirare il problema è possibile grazie a Docker, creando un container con un server SSH e Borg (il mantainer di Borg non vuole creare un container ufficiale). Ma mantenere un’immagine sempre aggiornata, per un amatore con poco tempo libero, non è facile. Quindi basta customizzare un container già presente, in questo caso ho preso OpenSSH di Linuxserver.io.

Creare il proprio server Borg su Docker (how to)

Ecco la ricetta per creare il proprio server SSH e Borg.

docker-compose

Grazie a docker-compose è possibile creare il container e ricrearlo se ci sono aggiornamenti. Su questo mio repository ci sono alcuni esempi di come si può usare (traefik in questo caso no serve).

  backup-server:
    image: linuxserver/openssh-server
    container_name: backup-server
    environment:
      - PUID=CHANGE_YOUR-UID-NUMBER
      - PGID=CHANGE_YOUR-GID-NUMBER
      - TZ=CHANGE_YOUR_TIME_ZONE
      - PUBLIC_KEY=CHANGE_SSH-CLIENT-PUB-KEY
      - SUDO_ACCESS=false
      - PASSWORD_ACCESS=false
      - USER_NAME=CHANGE_USER-NAME
    volumes:
      - /volume1/docker/backup/config:/config
    ports:
      - 12222:2222

Cambiare tutte le variabili e i volumi secondo il proprio sistema. La chiave pubblica SSH del client può essere creata direttamente da Vorta (vedi il prossimo capitolo). Il UIDe GIDpossono essere letti nel sistema host di docker lanciando il comando ìd.

script

Nella cartella /config che è collegata con il container creare una nuova cartella: /config/custom-cont-init.d. In questa cartella creare uno script, il nome è indifferente (esempio: borg.sh).

#!/bin/bash

echo "**** installing borg backup ****"
apk add --no-cache borgbackup

Il container di Open SSH è aggiornato regolarmente e ad ogni aggiornamento del container e riavvio dello stesso verrà installata l’ultima versione di Borg backup presente nel repository di Alpine Linux.

Aggiungere una cartella /config/data (o in un’altra posizione) per raccogliere i dati dei backup.

Vorta

Sul mio computer Ubuntu uso Vorta come interfaccia grafica per gestire i backup. Sono un po’ pigro nel usare alcuni sistemi solo con linea di comando, in particolare se non li uso tutti i giorni (perchè mi dimentico i comandi).

Tra le funzioni carine che trovo in Vorta (oltre a Borg Backup) ci sono:

  • possibilità di scegliere se eseguire o no il backup in base al Wifi (utile per quando si fa roaming con il telefono)
  • programmare l’esecuzione automatica
  • visualizzazione dei backup eseguiti
  • mounting dei vari punti di ripristino per consultare i singoli file

Prossimi passi

  • gestire i backup di Home Assistant con Borg
  • creare procedura per il backup dei raspberry pi

Foto di: Bethany Drouin da Pixabay