====== Self-hosting for teams - 6 - Sauvegarde chiffrée distante ====== Le but des backups est de conserver une copie des bases de données de chaque services qui pourra servir en cas de corruption de données ou de pertes de données sur le serveur. ===== Configuration du backup automatique régulier avec duplicity et cron ===== Nous allons donc générer des clés SSH pour transmettre les fichiers de manière chiffrée, puis des clés GPG pour que les fichiers soient chiffrés au repos. Duplicity est un logiciel basé sur ''%%rsync%%'' qui gère précisément ce type de copie. ==== Duplicity ==== Ouvrez un terminal vers votre home server et un autre vers votre serveur de backup. Le tutoriel de [[https://www.digitalocean.com/community/tutorials/how-to-use-duplicity-with-gpg-to-securely-automate-backups-on-ubuntu|DigitalOcean]] explique comment installer ''duplicity'', préparer les clés SSH et GPG. Commencez [[https://www.digitalocean.com/community/tutorials/how-to-use-duplicity-with-gpg-to-securely-automate-backups-on-ubuntu#how-to-install-duplicity-from-source-on-ubuntu|par installer duplicity]] sur votre home server. Si la commande ''%%python setup.py install%%'' produit une erreur, essayez d'installer ''%%gcc%%'' via ''%%sudo apt-get install build-essential%%''. Créez ensuite une paire de clés SSH sur votre home server. sudo su cd ssh-keygen -t rsa ''%%duplicity%%'' semble ne pas fonctionner quand la clé SSH elle-même est chiffrée. Attention donc à ne pas donner de //passphrase// après ''%%ssh-keygen -t rsa%%''. ssh-copy-id root@URL_DU_SERVEUR_DU_BACKUP Il vous sera demandé le mot de passe ''%%root%%'' de votre serveur backup. Testez maintenant la connexion SSH : ssh root@URL_DU_SERVEUR_DU_BACKUP Vous devriez être directement connecté dans votre session ''%%root%%'' de votre serveur backup. Lancez ''%%exit%%'' pour revenir à votre session home serveur. Vous pouvez ensuite créer vos clés GPG [[https://www.digitalocean.com/community/tutorials/how-to-use-duplicity-with-gpg-to-securely-automate-backups-on-ubuntu#create-gpg-keys|en suivant le tutoriel Digital Ocean]], jusqu'à //How To Use Duplicity//. Nous supposerons l'identifiant clé GPG que vous avez créée est ''%%ID_CLE%%'' . Pour tester ''%%duplicity%%'', sur votre serveur de backup, créez un répertoire temporaire : mkdir /tmp/bkp Sur votre home serveur, créez des fichiers test : cd /tmp/ mkdir /tmp/test touch /tmp/test/file{1..1000} Puis, sur le home serveur, copiez votre clé GPG sur le serveur backup. gpg --export-secret-keys ID_CLE > key.cer scp key.cer BACKUP_HOST:. Et copiez les fichiers via ''%%duplicity%%''. duplicity --encrypt-key ID_CLE /tmp/test sftp://root@IP_SERVEUR_TEST//tmp/bkp Sur le serveur backup, importez la clé copiée et déchiffrez le backup. gpg --import key.cer duplicity file:///tmp/bkp/ /tmp/restore/ ll /tmp/restore/ Si le test s'est bien déroulé, vous devriez voir une liste de fichiers ''%%file1 file2 ...%%''. ==== Backup automatique avec Cron ==== Le backup utilise deux scripts, l'un exécutant le second, pour faire la sauvegarde des données des containers. Le tutoriel de [[https://www.digitalocean.com/community/tutorials/how-to-use-duplicity-with-gpg-to-securely-automate-backups-on-ubuntu#how-to-install-duplicity-from-source-on-ubuntu|DigitalOcean]] explique comment installer ''%%duplicity%%'', préparer les clés SSH et GPG. Créez un dossier ''%%backup_script%%'' pour y placer les scripts : cd mkdir backup_script mkdir /tmp/bkp cd backup_script nano backup.sh nano duplicity.sh Pour les fichiers, voici les contenus à ajouter : # backup.sh script ~/backup_script/backup_`date -I`.log -c "sh ~/backup_script/duplicity.sh $1 $2" cat ~/backup_script/backup_`date -I`.log | mail -s "Log de backup `date -I`" -t adressedu@destinataire.com # duplicity.sh echo "----------------------------------" echo "Début de backup data serveur" echo "----------------------------------" echo echo Source: $1 echo Destination: $2 echo PASSPHRASE="clédechiffrement" duplicity --encrypt-key ID_CLE $1 $2 echo "----------------------------------" echo "Fin de backup data serveur" echo "----------------------------------" Changer la clé par celle utilisée pour la génération (GPG), ainsi que son id. Enfin, c'est le service ''%%cron%%'' qui s'occupe d'exécuter les backups à des moments choisis, il faut éditer le fichier ''%%/etc/crontab%%''. Pour tester, on paramètre l'execution toutes les 5 minutes: # ajouter au fichier */5 * * * * root sh ~/backup_script/backup.sh ~/ file:///tmp/bkp/