Site icon BLD Web Agency

Comment héberger un serveur BorgBackup

Borg est un outil de sauvegarde incrémentielle en ligne de commande écrit en Python. C’est un fork d’Attic mais un peu plus en avance puisqu’il corrige pas mal de bug d’Attic et propose des fonctionnalités supplémentaires (choix de la compression, par exemple).En outre le projet est très actif et en constante évolution. Nous allons voir comment héberger un serveur BorgBackup afin d’être autonome sur la destination de vos sauvegardes.

BorgBackup la solution efficace pour vos sauvegardes

Une des particularités de Borg est qu’il supporte la déduplication, c’est-à-dire que les fichiers sauvegardés sont découpés en une multitude de tronçons, et Borg ne sauvegarde que les tronçons qui ont été modifiés depuis la dernière sauvegarde, d’où une économie substantielle en termes d’espace disque et un gain lors de transfert des sauvegardes distantes. De plus Borg gère différents types de compression permettant de diminuer encore la taille des sauvegardes ainsi que le chiffrement en AES 256-bit.

Une fois compris le principe des sauvegardes de Borg, celui-ci est très simple d’utilisation au quotidien, pas de base de données à gérer, les commandes sont simples et logiques et l’aide est très bien faite.

Pour ceux que la ligne de commande rebute, il est possible d’installer une interface graphique en complément. Celle-ci est indépendante de Borg mais est pleinement fonctionnelle, même si elle n’utilise pas toutes les fonctionnalités que l’on retrouve avec la ligne de commande

Voici en quelques lignes ses grands atouts :

Comment décentraliser ses sauvegardes Borg

Faire des sauvegardes c’est bien, mais les réaliser sur le même support de stockage que l’origine, c’est moins futé ! C’est pourquoi il est indispensable de décentraliser ses sauvegarde (à minima) dans un datacenter différent de celui de la source. Pour cela, plusieurs solutions payantes existent comme :

Si vous préférez gérer cette destination, en avoir l’accès et la gestion totale, le plus simple est d’héberger son serveur borgbackup. Celui qui hébergera les repos de chacune de vos sauvegardes.

Que l’infrastructure de sauvegarde soit chez vous, ou sur un serveur dédié / VPS, la méthode sera la même. Voici un schéma simplifié d’une infrastructure de backup basée sur l’utilisation d’un serveur borgbackup :

Déployer un serveur BorgBackup avec Docker

Pour ce tutoriel, vous aurez besoin :

Installation de borgbackup et borgmatic avec Pipx

apt update && apt install -y git python3 python3-venv python3-dev libacl1-dev build-essential gcc libssl-dev python3-setuptools python3-openssl python3-venv python3-llfuse net-tools libfuse-dev fuse pkg-config python3-pkgconfig
wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py
python3 -m pip install pipx && python3 -m pipx ensurepath

pipx install borgmatic
pipx install borgbackup

mkdir -p ~/.config/borgmatic
touch ~/.config/borgmatic/config.yaml

ssh-keygen -t rsa ~/.ssh/id_rsa -C "mon-client"
❯ borg --version
borg 1.2.6
❯ borgmatic --version
1.8.2

A ce stade, notre client est prêt à réaliser ses premières sauvegardes.

Déploiement de notre serveur Borgbackup sous Docker

Retrouvez toutes les informations sur le fonctionnement de l’image Docker sur le Hub.

Connectez-vous à votre serveur distant qui hébergera les repo et le serveur borgbackup et lancez les commandes suivantes :

mkdir -p /opt/dockers/borgbackup-server/{backup,sshkeys}
mkdir -p /opt/dockers/borgbackup-server/sshkeys/clients

## Créez le fichier suivant et collez-y la clé SSH publique de votre client
touch /opt/dockers/borgbackup-server/sshkeys/clients/mon-client

Enfin, lancez le Docker avec la commande suivante :

docker run -d --name=borgbackup-server -e TZ="Europe/Paris" \
-e BORG_SERVE_ARGS='' -e BORG_APPEND_ONLY=no -e BORG_ADMIN='' \
-v /opt/dockers/borgbackup-server/backup:/backup:rw \
-v /opt/dockers/borgbackup-server/sshkeys:/sshkeys:rw \
-p 2277:22 martinbouillaud/borgbackup-server:latest

Lors du démarrage du Docker, celui-ci va :

La connexion à votre repo Borg sur la machine distance s’effectue avec l’utilisateur borg sur le port 2277.

Initialisation du repo Borg

Afin de simplifier la connexion à notre serveur Borg, voici une config SSH d’exemple :

Host borgrepo
    Hostname MON_SERVEUR_BORG
    User borg
    IdentityFile ~/.ssh/id_rsa
    Port 2277

Sur votre machine cliente, lancez la commande suivante pour initialiser le repo Borg. Il vous sera demandé une clé de chiffrement, qu’il est possible de générer facilement avec la commande suivante :

❯ pwgen 26 1
aibae3iefaisiexeH5Eirunoh2 ## Gardez cette clé de côté, elle sera nécessaire dans la configuration Borgmatic

❯ borg init --encryption=repokey borgrepo:/backup/mon-client

Création du fichier de configuration Borgmatic

Voici un exemple de fichier de configuration Borgmatic, vous permettant de sauvegarde votre /home :

constants:
  hostname: mon-client
  homedir: /home/monuser

source_directories:
    - {homedir}

repositories:
    - path: ssh://borgrepo/backup/{hostname}/
      label: monserveurborg

local_path: ~/.local/bin/borg

one_file_system: true
read_special: false

exclude_patterns:
    - '*.pyc'
    - '*/.cache'
    - '*/.vim*.tmp'

exclude_caches: true
exclude_if_present:
    - .nobackup

exclude_nodump: true

encryption_passphrase: "aibae3iefaisiexeH5Eirunoh2"

compression: lz4
retries: 3
retry_wait: 10

ssh_command: ssh -i {homedir}/.ssh/id_rsa -p 2277

borg_config_directory: '{homedir}/.config/borgmatic'
borg_keys_directory: '{homedir}/.config/borgmatic/keys'

archive_name_format: '{hostname}-{now:%Y-%m-%d_%H:%M:%S}'

keep_hourly: 24
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
keep_yearly: 1

checks:
    - name: repository
      frequency: 2 weeks
check_repositories:
    - 'ssh://borgrepo/backup/{hostname}/'
check_last: 2

color: true

Enfin, lancez votre première backup :

borgmatic -c ~/.config/borgmatic/config.yaml --log-file /var/log/borgmatic.log --syslog-verbosity 1 --log-file-verbosity 1 --stats

Conclusion

Si vous avez des questions sur le fonctionnement de l’image, ou des repos Borg, n’hésitez pas à nous contacter. Nous proposons également des hébergements de repo Borg.

Allez à la page entière pour voir et envoyer le formulaire.

Quitter la version mobile