Sauvegardes automatiques avec Duplicati
Les sauvegardes, c’est le bien (y a qu’à voir cet article pour s’en rendre compte). Je possède un Raspberry Pi sur lequel tourne pas mal de truc, ainsi qu'un serveur dédié. Je vais mettre en place un système de sauvegarde automatique de mon Raspberry vers mon serveur. J'ai besoin d'un logiciel :
- qui tourne sous Gnu/Linux
- qui est libre de préférence
- qui permet de chiffrer les sauvegardes
- qui possède une interface web vu que mon Raspberry n'a pas de serveur graphique
- qui n'est pas une usine à gaz à installer et configurer
Duplicati coche toutes ces cases. On va installer la version beta qui est suffisamment stable pour une utilisation en prod.
Pour la suite de ce tuto, toutes les commandes doivent être lancées sur le Raspberry (machine sur laquelle sont présentes les données que l'on souhaite sauvegarder), sauf mention précisant de les lancer sur le serveur (machine sur laquelle seront stockées les données du Raspberry).
Dépendances
En plus des paquets demandés dans ce chapitre, il vous faudra également un serveur web configuré avec le proxy inverse activé ainsi que le SSL (Apache2 pour ma part), un client ssh et un nom de domaine (optionnel) sur le Raspberry et un serveur ssh sur le serveur de stockage des données. Je ne vais pas détailler cette partie.
Sur le Raspberry, lancez la commande suivant pour installer les dépendances requises :
sudo aptitude install mono-complete gtk-sharp2 libayatana-appindicator1
Installation de Duplicati 2 beta
Récupérez la version beta :
wget https://updates.duplicati.com/beta/duplicati_2.0.6.3-1_all.deb
Installez Duplicati :
sudo dpkg -i duplicati_2.0.6.3-1_all.deb
Lancez Duplicati afin de vérifier qu'aucune erreur ne remonte :
sudo systemctl start duplicati
Activez le lancement automatique au démarrage:
sudo systemctl enable duplicati
Configuration d’Apache2
Pour accéder à l'interface web, on va avoir besoin de créer un proxy inverse afin d'utiliser un sous-domaine (dont je ne traiterai pas ici la mise en place) qui va renvoyer vers l'interface web de Duplicati. Dans le reste du tuto, je vais utiliser le sous-domaine fictif duplicati.raspberry.fr. Si vous n'avez pas de nom de domaine, il vous suffit de rentrer dans votre navigateur adresse_ip_raspberry:8200 pour y accéder.
Pour info, pour activer la gestion du proxy inverse dans Apache2, lancez la commande suivante :
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Créez le fichier de configuration apache2 :
sudo nano /etc/apache2/sites-available/duplicati.raspberry.fr.conf
Votre fichier de configuration doit ressembler à ça :
<VirtualHost *:80> ServerName duplicati.raspberry.fr Redirect / https://duplicati.raspberry.fr/ </VirtualHost> <VirtualHost *:443> ServerName duplicati.raspberry.fr LogLevel warn CustomLog ${APACHE_LOG_DIR}/duplicati.access.log combined ErrorLog ${APACHE_LOG_DIR}/duplicati.error.log SSLEngine on SSLCertificateFile /etc/letsencrypt/live/raspberry.fr/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/raspberry.fr/privkey.pem Header set Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; connect-src 'self'; media-src 'self'; child-src 'self'; object-src 'self'; form-action 'self'; img-src 'self' * data:" ProxyPass / http://localhost:8200/ ProxyPassReverse / http://localhost:8200/ AllowEncodedSlashes On </VirtualHost>
Activez fichier de configuration :
sudo a2ensite duplicati.raspberry.fr.conf
Redémarrez Apache2
sudo systemctl restart apache2
Configuration accès SSH
Pour envoyer les données du Raspberry sur le serveur, on va passer par une connexion SSH utilisant une clé.
Commencez par créer la clé :
ssh-keygen -m PEM -t rsa -b 4096
Rentrez une phrase secrète lorsque c'est demandé.
Une fois la génération de clé terminée, affichez le contenu de clé publique :
cat .ssh/nomclé.pub
Copiez le contenu de la clé.
Connectez-vous au serveur sur lequel sera stocké les données du Raspberry et créez un utilisateur duplicati (vous pouvez changer le nom de l'utilisateur) :
sudo adduser duplicati
Connectez-vous avec cet utilisateur
sudo -i -u duplicati
Créez le fichier authorized_keys
mkdir .ssh
nano .ssh/authorized_keys
Collez-y le contenu de la clé publique et sauvegardez (CTRL + o)
Configuration de Duplicati
Accéder à l'interface web de Duplication et choisir un mot de passe
Dans Duplicati, cliquer sur Ajouter une sauvegarde
Choisissez le chiffrement AES-256 et entrez une phrase secrète (et ne l'oubliez pas), puis cliquez sur Suivant.
Choisir SFTP dans le type de stockage puis rentrer toutes les informations demandées (adresse du serveur de stockage, port SSH, etc). Le mot de passe est la phrase secrète de la clé SSH, pas le mot de passe de l'utilisateur duplicati.
Dans “Options avancées”, ajoutez l'option SSH-keyfile et indiquez le chemin de la clé SSH privée.
Cliquer sur Tester la connexion et validez la popup, ça va ajouter une option supplémentaire.
Cliquez sur suivant et sélectionnez les fichiers à sauvegarder.
Cliquez sur suivant et paramétrez le planning des sauvegardes.
Cliquez sur Suivant et choisissez la stratégie de sauvegarde (je vous conseille de choisir Rétention de sauvegarde intelligente).
Voila, vos données sont maintenant sauvegardées.