Gnuragist.es

Support Gnu/Linux

Outils pour utilisateurs

Outils du site


documentation:borg

**Ceci est une ancienne révision du document !**

Borgmatic

Mettre en place un serveur accessible en ssh et disposant d'un espace de stockage qui pourra accueillir les sauvegardes de différentes machines appartenant à l'un ou l'autre compte.

NOMDUCOMPTE NOMDEMACHINE SERVEUR STORAGE PHRASEDEPASSE NOMDEFICHIER

on peut init depuis le client - mais il faut un user ssh sur le serveur - donc que le home de chaque user soit sur 1TB - que chaque user dispose d'une clé ssh copié sur le serveur

  1. quid si la brique est compromise … les backups aussi sont alors accessibles !
  2. mais dans l'autre sens aussi … si le serveur borg est compromis et qu'il peut prendre toute une brique, il y a un accès possible à « toutes les briques ».
    1. Donc c'est quand même mieux de ne pas demander au serveur d'aller chercher toutes les briques mais bien que chaque dispose d'un accès « personnel » au serveur.
      1. Donc il faudrait, dans la plus grande prudence … faire un backup du serveur de backup .

Serveur

Matériel

Avec l'outil que ptr à trouvé…

  • Un plug PC 32bit 1 cœur, 512Mb de RAM
  • Un boitier eSATA de 4 disques SATA
  • 1 disque de 80GB pour le système
  • 3 disques de 2TB pour le storage configurés en RAID5 avec mdadm et monté, par exemple, sur /media/STORAGE
    ### installation
apt install borgmatic

Groupe borg

groupadd borg

R/W sur storage pour le groupe borg

chown root:borg /media/STORAGE
chmod 770 /media/STORAGE

Nouveau compte

adduser NOM_DU_COMPTE

ajout au groupe borg

C'est nécessaire pour avoir le droit d'aller dans /media/STORAGE parce que c'est accessible uniquement à root et aux membres du groupe borg.

adduser NOM_DU_COMPTE borg

faire un dossier pour le compte

mkdir /media/STORAGE/NOM_DU_COMPTE

Client

Un « client » est une machine appartenant au NOMDUCOMPTE

En tant que root !

Faire une clé ecd25219 sans mot de passe

ssh-keygen -t ed25519 -C ""
et ne pas mettre de phrase de passe

La copier sur le serveur borg

ssh-copy-id NOM_DU_COMPTE@SERVEUR_BORG

installer borgmatic

apt install borgmatic

Générer une config de base

generate-borgmatic-config

 initier le repo sur le serveur

Sans chiffrement

Déconseillé.

Avec chiffrement

Voir https://borgbackup.readthedocs.io/en/stable/usage/init.html#borg-init

borg init --encryption=repokey-blake2 NOM_DU_COMPTE@SERVEU_BORG:/media/STORAGE/NOM_MACHINE
Passe phrase : PHRASE_DE_PASSE
borg key export NOM_DU_COMPTE@SERVEU_BORG:/media/STORAGE/NOM_MACHINE NOM_DE_FICHIER
cat NOM_DE_FICHIER 
BORG_KEY f6dc3da161fa259ad8c79380b2593d4996e4fb3c3efd802c88d996dd93b5f250
hqlhbGdvcml0aG2mc2hhMjU2pGRhdGHaAZ6DIeXAqvfULdYvWU6QooZHvmEaUvP3yzjQj9
l2I7xiDA/5rOjlP8kUFpefFtlMgo0gVcG8NQzqlZu8LQ/yFE3y52ldLc692D9Hr/rmrF+t
9wo7gvy33BaQmh+MrmbabipuJfm6p+u0lso11OJOwoX/GBXghL1lpazQnlERU1PqZZfiDe
ct6R1B67vdvQZXhVOuuYuLH9BNDMpq0eSc+9VHV3M/wFygmQtXfpcPTW2GekuQfSp9sk3D
a2pSFZs+wOMSZrx432DG5l/dbMXZgwmYgsMuixR2b+d/dNjSheMPy8tju2qCWL+ChbAm9A
oETPxAAOdBWUzxGgXPpnmuLxrjHf+XMpnt8E0fW6cqd/hdi2yuZJ0f7daZTVSM0KphHcP2
61JM+elY+xBFur8ibVekYllMC3Ot94DU/SYdAATxv8+X99tyB2UreGYxlwhCXUHNGba2XO
WWaDVNciAc1xc3sAX1gBVihEpZV4EbTPWkNj9DD3sWks9O0OeqTHdnhMVD1fpkKw2GDhfs
qb77w6DSwVZRnpgK58QwYDiTogukaGFzaNoAIIjMp6rDyIGoH+kxvLmOMq7w7/vzIL7PfO
wQvKVucuWuqml0ZXJhdGlvbnPOAAGGoKRzYWx02gAg0tq+i2wceA8guVTmn4AzKJsJRDb8
ueHXWCC+xBNhDNKndmVyc2lvbgE=

Et la coller dans le password store du NOMDUCOMPTE dans borgsurSERVEUR en tant que commentaire repokey-blake2 = “coller la clé”.

Effacer le fichier NOMDEFICHIER.

rm NOM_DE_FICHIER

Éditer la config

location:
    source_directories:
        - /
    repositories:
        - NOM_DU_COMPTE@SERVEUR:/media/STORAGE/NOM_MACHINE
    exclude_patterns:
        - /dev
        - /proc
        - /sys
        - /tmp
        - /run
        - /lost+found
        - /swapfile
        - /var/cache/apt
        - /mnt/mmcboot
storage:
    encryption_passcommand: secret-tool lookup borg-repository repo-name
    encryption_passphrase: "PHRASE_DE_PASSE"
    compression: lz4
retention:
    keep_daily: 7
    keep_monthly: 2

Borg info

Depuis le client

borg info NOM_DU_COMPTE@SERVEUR:/media/STORAGE/NOM_MACHINE
Et donner la phrase de passe

Depuis le serveur

borg info /media/STORAGE/NOM_MACHINE
Et donner la phrase de passe

Borg mount

Depuis le serveur

mkdir /tmp/test
borg mount /media/STORAGE/NOM_MACHINE

Cron

nano /etc/cron.d/borgmatic
Et mettre :
42 00 * * * root /usr/bin/borgmatic

Pour tator et mabrique

NOMDUCOMPTE = nom de la personne / assoss / autre qui reprendra de 1 à n NOMDEMACHINE pour les sauvegardes.

sur mon ordi

créer un password store

pass init --store NOM_DU_COMPTE

créer un mot de passe pour NOMDUCOMPTEsurmabrique dans misc avec comme commentaire username = NOMDUCOMPTE.

créer un mot de passe pour NOMDUCOMPTEsurtator dans misc avec comme commentaire username = NOMDUCOMPTE.

créer un mot de passe pour borgsurtator dans misc avec comme commentaire repokey-blake2 = comming soon pour y coller plus tard la clé obtenue depuis la machine avec la commande borg key export NOM_DU_COMPTE@SERVEU_BORG:/media/STORAGE/NOM_MACHINE NOM_DE_FICHIER.

sur mabrique

Créer un utilisateur pour NOMDUCOMPTE avec le mot de passe créé précédemment.

Ce NOMDUCOMPTE recevra la clé publique de root sur une des machine NOM_DE_MACHINE qui sera sauvegardée.

Modifier la configuration de ssh pour authoriser le saut ssh vers tator. Yunohost gére la configuration, donc cela va lever un warning pour le diagnostic automatique de Yunohost qui signalera que la configuration a changé.

nano /etc/ssh/sshd_config
…
Match User admin,root,NOM_DU_COMPTE, AUTRE_NOM_DU_COMPTE, etc.
    AllowTcpForwarding yes
    AllowStreamLocalForwarding yes
    PermitUserRC yes
…
service ssh relaod

sur tator

Il faut créer un utilisateur NOMDUCOMPTE pour accueillir la clé de root de chaque NOMDEMACHINE ce qui permettra un accès ssh sans mot de passe.

adduser --home /media/STORAGE/NOM_DU_COMPTE NOM_DU_COMPTE

Et changer les droits du home pour ce NOMDUCOMPTE.

chmod 700 /media/STORAGE/NOM_DU_COMPTE

Et l'ajouter au groupe borg pour avoir le droit de rentrer dans /media/STORAGE qui contient de dossier home du NOMDUCOMPTE.

adduser NOM_DU_COMPTE borg

sur une NOM_DE_MACHINE

Faire une clé ssh pour root sans mot de passe.

root@NOM_DE_MACHINE:/root# ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): -ne rien mettre-
Enter same passphrase again: -ne rien mettre-

Ajouter tator et mabrique dans le /root/.ssh/config pour le proxy jump ssh.

nano /root/.ssh/config
Et mettre :
Host tierce
Hostname tierce.nohost.me
User NOM_DU_COMPTE  

Host tator
Hostname 192.168.1.9
User NOM_DU_COMPTE
ProxyJump tierce

Copier la clé de root sur ma brique.

ssh-copy-id tierce

Copier la clé de root sur tator.

ssh-copy-id tator

Installer borgmatic.

apt install borgmatic

Créer une config de base pour borgmatic.

generate-borgmatic-config

Vérifier ce qui est monté pour éventuellement l'exclure des backups puisque ce qui est backuper c'est / et que parfois, pour les briques qui sont sur un disque SATA ou USB par exemple, la carte SD avec l'ancien système est montée sur /media/mmcboot.

mount
et/ou bien:
ls /mnt
et/ou bien:
ls /media

Modifier le fichier de config de borgmatic.

nano /etc/borgmatic/config.yaml #voir exemple plus haut

Initier le repo borg pour NOMDEMACHINE.

borg init --encryption=repokey-blake2 NOM_DU_COMPTE@SERVEUR:/media/STORAGE/NOM_DE_MACHINE

Copier la clé de chiffrement dans le password store du client sur mon ordinateur.

borg key export NOM_DU_COMPTE@SERVEU_BORG:/media/STORAGE/NOM_MACHINE NOM_DE_FICHIER
cat NOM_DE_FICHIER 
BORG_KEY f6dc3da161fa259ad8c79380b2593d4996e4fb3c3efd802c88d996dd93b5f250
hqlhbGdvcml0aG2mc2hhMjU2pGRhdGHaAZ6DIeXAqvfULdYvWU6QooZHvmEaUvP3yzjQj9
l2I7xiDA/5rOjlP8kUFpefFtlMgo0gVcG8NQzqlZu8LQ/yFE3y52ldLc692D9Hr/rmrF+t
9wo7gvy33BaQmh+MrmbabipuJfm6p+u0lso11OJOwoX/GBXghL1lpazQnlERU1PqZZfiDe
ct6R1B67vdvQZXhVOuuYuLH9BNDMpq0eSc+9VHV3M/wFygmQtXfpcPTW2GekuQfSp9sk3D
a2pSFZs+wOMSZrx432DG5l/dbMXZgwmYgsMuixR2b+d/dNjSheMPy8tju2qCWL+ChbAm9A
oETPxAAOdBWUzxGgXPpnmuLxrjHf+XMpnt8E0fW6cqd/hdi2yuZJ0f7daZTVSM0KphHcP2
61JM+elY+xBFur8ibVekYllMC3Ot94DU/SYdAATxv8+X99tyB2UreGYxlwhCXUHNGba2XO
WWaDVNciAc1xc3sAX1gBVihEpZV4EbTPWkNj9DD3sWks9O0OeqTHdnhMVD1fpkKw2GDhfs
qb77w6DSwVZRnpgK58QwYDiTogukaGFzaNoAIIjMp6rDyIGoH+kxvLmOMq7w7/vzIL7PfO
wQvKVucuWuqml0ZXJhdGlvbnPOAAGGoKRzYWx02gAg0tq+i2wceA8guVTmn4AzKJsJRDb8
ueHXWCC+xBNhDNKndmVyc2lvbgE=
rm NOM_DE_FICHIER

Simuler une sauvegarde

borgmatic -n -v2

Planifier la sauvegarde.

nano /etc/cron.d/borgmatic
et coller:
42 23 * * * root /usr/bin/borgmatic #ou 43 est la minute et 23 l'heure de début * * * étant chaque jour, chaque mois, chaque jour de la semaine

À suivre

?? stockage chiffré monté au boot

?? postgress

?? mysql

?? alertes

documentation/borg.1616769099.txt.gz · Dernière modification : 2021/03/26 15:31 de tierce