Outils pour utilisateurs

Outils du site


autohebergement:sauvegardes_chez_les_copain_e_s

Ceci est une ancienne révision du document !


Sauvegardes chez les copain·e·s

L'idée de cette page est de proposer une architecture matérielle et logicielle pour partager les sauvegardes. Le principe général est simple, c'est du donnant donnant : Alice a des données à sauvegarder, Bob aussi. Alors Bob met à disposition chez lui un endroit pour déposer les sauvegardes distances d'Alice, et échange du même service.

On utilisera le logiciel Borg et l'outil Borgmatic qui permet une automatisation facile. Borg est un outil de sauvegardes puissant et pratique à mon goût :

  • il chiffre les données (obligé si on souhaite stocker les données chez quelqu'un d'autre)
  • il compresse les données (à différents taux de compression, cf un chouette article de Lapineige à ce sujet)
  • il déduplique les données, c'est à dire que si un fichier est présent plusieurs fois dans la sauvegarde, il ne “pèsera” que pour un.

De plus, Borgmatic permet d'envoyer nos sauvegardes sur plusieurs dépôts (distants ou locaux). On peut donc imaginer un système à plus que deux, et accueillir Carole et Dave, au moins !

Matériel

Pour avoir un échange équitable, le mieux est qu'Alice et Bob participent également. Quelques possibilités :

  • Alice prête son propre matériel à Bob, Bob peut donc l'utiliser à distance (et inversement)
  • Alice branche son matériel chez Bob (et inversement)

L'idée ensuite est pour Alice de pouvoir se connecter via SSH à un petit serveur, fusse-t-il physique (Raspberry Pi + disque dur externe) ou virtuel (machine virtuelle avec un bon gros disque de stockage, si besoin).

Configuration

À présent, prenons l'exemple suivant : Alice et/ou Bob préparent le matériel qui restera chez Bob, à destination d'Alice. Le matériel consiste en un Raspberry Pi et un disque dur externe, mais ça ne change pas grand chose au schmilblik.

Voilà les étapes principales :

  1. faire un compte “alice” sur le serveur de sauvegardes et lui donner un accès en écrite sur le disque dur externe
  2. créer une clé SSH pour s'y connecter
  3. initialiser le dépôt de sauvegardes avec Borg
  4. configurer Borgmatic chez Alice

Pré-requis logiciels

Sur le serveur de sauvegardes, seul le logiciel Borg est nécessaire (et un serveur SSH évidemment). Sur le serveur à sauvegarder, il faudra Borg et Borgmatic.

1. Créer un compte "alice" sur le serveur de sauvegardes

Quelques étapes simples :

# Créer le compte
sudo useradd --create-home alice

# Accès en écriture
sudo mkdir /backup/alice
sudo chown -R alice:alice /backup/alice

2. Créer une clé SSH pour alice

# On se connecte en tant qu'alice
sudo su alice

# On crée le dossier .ssh et un fichier qui autorise à se connecter avec des clés
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# On crée la clé en se laissant guider. Sans passphrase.
ssh-keygen

# On autorise cette clé pour la connexion
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Et on peut refiler la clé id_rsa à Alice. Elle pourra l'utiliser pour se connecter elle-même manuellement, ou bien automatiquement avec Borgmatic.

3. Initialiser le dépôt de sauvegardes

Ça se fait avec Borg. Là, on a le choix : un seul dépôt, sous /backup/alice par exemple, ou bien si on en veut plusieurs : /backup/alice/serveur1, /backup/alice/serveur2, etc. Prenons le premier cas pour l'exemple.

D'abord, il nous faut générer une repokey, une sorte de phrase de passe que Borg utilise pour chiffrer et déchiffrer le dépôt. On peut utiliser un générateur de mot/phrase de passe ou bien si vous n'avez pas d'idée, on peut utiliser openssl s'il est installé : openssl rand -base64 45. Pour l'exemple, la phrase de passe sera PHRASE-DE-PASSE.

Ensuite, on lance Borg :

borg init --encryption repokey /backup/alice

On nous demande deux fois la phrase de passe (à garder quelque part pour la suite), et c'est bon, le dépôt est initialisé. Pour vérifier et utiliser Borg un petit peu, on peut faire :

borg info /backup/alice

4. Configurer Borgmatic

Maintenant on est sur le serveur à sauvegarder, on va utiliser Borgmatic. Pour l'exemple, on a un dossier /srv/borg dans lequel on met nos fichiers de configuration. On va mettre notre phrase de passe (PHRASE-DE-PASSE) dans le fichiers /srv/borg/passphrase. On met dans le dossier la clé id_rsa. Et puis le fichier de configuration config.yaml qui ressemble à ça :

location:
    # Quels dossiers sauvegarder
    source_directories:
        - /srv/apps/

    # À quels dépôts Borg envoyer (distants ou locaux)
    repositories:
        - alice@chez.bob.fr:/backup/alice

    # On peut exclure des patterns. Utile pour les bases de données qu'on exporte autrement
    exclude_patterns:
         - "*/*/db"

storage:
    # La phrase de passe
    encryption_passcommand: "cat /srv/borg/passphrase"
    # Quelle compression on veut, on peut choisir
    compression: lz4
    # La commande pour se connecter au serveur distant, avec la clé SSH
    ssh_command: ssh -i /srv/borg/id_rsa


# Combien de temps on garde les sauvegardes ?
retention:
    # Keep all archives within this time interval.
    keep_within: 24H

    # Number of daily archives to keep.
    keep_daily: 7

    # Number of weekly archives to keep.
    keep_weekly: 4

    # Number of monthly archives to keep.
    keep_monthly: 6

consistency:
    # List of one or more consistency checks to run: "repository", "archives", "data",
    # and/or "extract". Defaults to "repository" and "archives". Set to "disabled" to
    # disable all consistency checks. "repository" checks the consistency of the
    # repository, "archives" checks all of the archives, "data" verifies the integrity
    # of the data within the archives, and "extract" does an extraction dry-run of the
    # most recent archive. Note that "data" implies "archives".
   checks:
       - disabled
        # - repository
        # - archives

# Options for customizing borgmatic's own output and logging.
#output:
#    color: true

autohebergement/sauvegardes_chez_les_copain_e_s.1609412962.txt.gz · Dernière modification: 2021/08/16 14:13 (modification externe)