Aller au contenu
selfhostr

guide · 6 min de lecture

Sauvegarder son serveur pour de vrai

La règle 3-2-1, restic vers Swiss Backup en Swift, la rétention qui vous sauve d'un rançongiciel — et la restauration, essayée avant d'en avoir besoin.

Une sauvegarde qui n'a jamais été restaurée n'est pas une sauvegarde. C'est une intention, dans un dossier.

Ce guide met en place quelque chose qui tient : trois copies, deux supports, une hors de chez vous — et surtout une restauration réellement essayée, parce que c'est le seul moment où l'on découvre que le chiffrement demandait une clé qu'on n'a pas notée.

Ce qu'il faut sauvegarder, et ce qu'il ne faut pas

Tout n'a pas la même valeur. Trois catégories :

Irremplaçable. Vos photos, vos documents, la base de votre gestionnaire de mots de passe. Ce qui n'existe nulle part ailleurs et qu'aucun achat ne reconstitue. C'est ça qui part hors de chez vous.

Pénible à refaire. Vos fichiers docker-compose.yml, vos configurations, vos certificats. Petit en volume, et vous coûterait un week-end. Sauvegardez-le aussi : ça ne pèse rien.

Retéléchargeable. Films, séries, images Docker. Payer chaque mois pour stocker ailleurs ce qui se retrouve en une commande est la façon la plus courante de faire exploser une facture de sauvegarde.

Cette distinction n'est pas cosmétique : c'est elle qui décide si vous payez pour 250 Go ou pour 8 To.

La règle 3-2-1

  • 3 copies de vos données ;
  • sur 2 supports différents ;
  • dont 1 hors de chez vous.

Traduit sur un serveur à la maison :

  1. l'original, sur le serveur ;
  2. une copie sur un disque différent — une grappe avec parité ne compte pas, elle protège d'un disque mort, pas d'un rm -rf, d'un rançongiciel ni d'un dégât des eaux ;
  3. une copie hors du logement.

Le troisième point est celui qu'on repousse. C'est le seul qui survit à un cambriolage ou à un incendie.

Ce guide utilise restic

Chiffré de bout en bout, dédupliqué, incrémental. Un fichier qui ne change pas n'est stocké qu'une fois, quelle que soit la fréquence des sauvegardes.

Chiffré avant l'envoi, donc l'hébergeur ne peut pas lire vos fichiers. Ce qui a un revers qu'il faut avoir en tête tout de suite : la clé perdue, les données sont perdues. Personne ne peut vous la renvoyer.

sudo apt install restic

Étape 1 — La copie locale

D'abord la deuxième copie, sur un autre disque de la machine :

sudo mkdir -p /mnt/sauvegarde/restic
sudo restic init --repo /mnt/sauvegarde/restic

Il demande un mot de passe. C'est la clé de déchiffrement. Notez-la ailleurs que sur ce serveur — dans votre gestionnaire de mots de passe, sur papier, chez quelqu'un. Une clé qui ne vit que sur la machine qu'elle protège ne protège rien.

Arrêtez les services avant de copier leurs données :

cd /srv/docker && docker compose stop
sudo restic --repo /mnt/sauvegarde/restic backup /srv/docker /var/lib/docker/volumes
docker compose start

Arrêter n'est pas facultatif dès qu'il y a une base de données. Copier les fichiers d'un PostgreSQL en train d'écrire donne une sauvegarde qui a l'air complète et ne se restaure pas — et vous ne l'apprenez que le jour où vous en avez besoin.

Étape 2 — La copie hors de chez vous

C'est là qu'intervient une offre de stockage. Ce guide utilise Swiss Backup d'Infomaniak : données en Suisse, tarif à l'espace, et compatible restic sans intermédiaire.

Créez-y un espace, puis un utilisateur de type Swift dans son interface. Vous obtenez un identifiant de la forme SBI-XXXX et un mot de passe.

Un fichier ~/.restic-swissbackup, lisible par vous seul :

export OS_AUTH_URL=https://swift02-api.cloud.infomaniak.ch/identity/v3
export OS_REGION_NAME=RegionOne
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_USERNAME=SBI-XXXX
export OS_PROJECT_NAME=sb_project_SBI-XXXX
export OS_PASSWORD=votre_mot_de_passe_swift
export RESTIC_REPOSITORY=swift:sb_project_SBI-XXXX:/serveur
export RESTIC_PASSWORD_FILE=/root/.restic-cle
chmod 600 ~/.restic-swissbackup

C'est bien Swift, le protocole d'OpenStack — pas S3. Écrire s3: donne une erreur d'authentification qu'on passe une heure à prendre pour un mauvais mot de passe.

Puis :

source ~/.restic-swissbackup
restic init
restic backup /srv/docker /var/lib/docker/volumes

Les identifiants doivent être rechargés (source) avant chaque opération — sauvegarde, liste ou restauration.

Étape 3 — La restauration, avant d'en avoir besoin

L'étape que tout le monde saute. Faites-la maintenant, tant que rien ne brûle.

source ~/.restic-swissbackup
restic snapshots
restic restore <id-du-snapshot> --target /tmp/test-restauration

Puis ouvrez vraiment un fichier restauré. Pas la liste : le fichier.

Trois choses se découvrent à ce moment-là, et une seule fois qu'il est trop tard sinon : la clé n'était notée nulle part, le dossier sauvegardé n'était pas celui qu'on croyait, et la restauration complète prend six heures — ce qui change ce qu'on répond à « on remet ça en route quand ? ».

Étape 4 — Automatiser, et faire du ménage

Une sauvegarde qu'il faut penser à lancer n'est pas lancée.

Écrivez d'abord un script, /usr/local/bin/sauvegarde — pas une ligne de cron à rallonge : on ne la relit pas, on ne la teste pas, et une faute de frappe au milieu ne se voit nulle part.

#!/bin/bash
set -euo pipefail

source /root/.restic-swissbackup

restic backup /srv/docker /var/lib/docker/volumes

# La rétention : sept jours, quatre semaines, douze mois. Sans elle, le
# dépôt grossit indéfiniment et la facture avec.
restic forget --prune \
  --keep-daily 7 --keep-weekly 4 --keep-monthly 12

set -euo pipefail compte : sans lui, un script dont la sauvegarde échoue continue jusqu'à la purge et supprime d'anciennes versions sans en avoir écrit de nouvelle.

sudo chmod 700 /usr/local/bin/sauvegarde
sudo /usr/local/bin/sauvegarde

Lancez-le une fois à la main. Un script planifié qui n'a jamais tourné devant vous échouera la nuit, sans témoin.

Puis /etc/cron.d/restic :

0 3 * * * root /usr/local/bin/sauvegarde

La rétention est aussi ce qui vous sauve d'un rançongiciel : les versions d'avant le chiffrement sont encore là. C'est la raison pour laquelle « une copie synchronisée » n'est pas une sauvegarde — une synchronisation recopie fidèlement le désastre.

Étape 5 — Surveiller

Une sauvegarde silencieuse qui échoue depuis trois mois est pire que pas de sauvegarde : elle vous a fait baisser la garde.

Vérifiez de temps en temps que la dernière date d'hier :

source ~/.restic-swissbackup && restic snapshots --latest 1

Et une fois par trimestre, contrôlez l'intégrité du dépôt :

restic check --read-data-subset=5%

Ce que ça coûte

Swiss Backup se facture à l'espace réservé, hors taxes, et les tarifs sont convertis du franc suisse. Chaque appareil sauvegardé compte séparément.

La configuration de ce guide — les données irremplaçables seulement, pas les médias retéléchargeables — tient généralement dans le plus petit palier. C'est tout l'intérêt d'avoir trié au début.

Le configurateur chiffre cette ligne dans le coût mensuel de votre installation, à côté de l'électricité.

Et ensuite

Vidéo

Korben présente restic, l'outil de ce guide : créer un dépôt, sauvegarder, restaurer. La démonstration des commandes avant de les lancer chez vous.

Rien n'est envoyé à YouTube tant que vous n'avez pas lancé la lecture. Ce site ne dépose aucun cookie qui lui soit propre.Regarder sur YouTube