Scripts sécurisés pour sauvegarder vos volumes Docker avec Restic.
- Backup complet et sécurisé de volumes Docker avec Restic
- Installation automatique des dépendances
- Restauration facile
- Compatible avec différents backends (S3, sftp, local, etc.)
- Déduplication des données
- Chiffrement fort
- Politique de rétention flexible
- Notifications d'échec via webhooks (compatible Discord)
- Automatisation sécurisée via cron/systemd
- Un système avec accès sudo ou droits d'installation
- Docker
- Internet pour l'installation des dépendances (si nécessaire)
git clone https://github.com/rubynouille/backupper.git
cd backupper
chmod +x *.sh- Créez votre fichier d'environnement
cp .backup_env.example ~/.backup_env
chmod 600 ~/.backup_env # IMPORTANT: permissions restreintes- Éditez votre fichier d'environnement
nano ~/.backup_env
# Modifiez les valeurs selon votre configuration, notamment:
# - RESTIC_PASSWORD
# - RESTIC_REPOSITORY (s3:endpoint/bucket/path, sftp:user@host:/path, etc.)
# - Identifiants du backend si nécessaire (S3, etc.)
# - WEBHOOK_URL (optionnel, pour notifications Discord)Pour configurer les notifications Discord :
- Dans votre serveur Discord, allez dans Paramètres du serveur > Intégrations > Webhooks
- Cliquez sur "Nouveau webhook"
- Donnez un nom et choisissez le canal pour les notifications
- Copiez l'URL du webhook
- Ajoutez-la à votre fichier
.backup_env:WEBHOOK_URL="https://discord.com/api/webhooks/your-webhook-id/your-webhook-token"
Pour configurer les notifications Slack :
- Créez une application Slack ou utilisez les webhooks entrants
- Obtenez l'URL du webhook
- Ajoutez-la à votre fichier
.backup_env:WEBHOOK_URL="https://hooks.slack.com/services/XXX/YYY/ZZZ"
./backup_volumes.shPour tester que vos webhook notifications fonctionnent correctement (notamment pour Discord) :
./test_notification.shCe script vérifie :
- Que votre URL webhook est configurée
- L'envoi de messages normaux
- Le comportement en cas de message vide
- L'envoi de notifications d'erreur
# Lister les snapshots disponibles
RESTIC_PASSWORD="votre_mot_de_passe" restic -r "votre_repository" snapshots
# Restaurer un volume depuis un snapshot
./restore_volume.sh <nom_volume> <snapshot_id>- Configurez votre cron
crontab -e- Ajoutez la tâche planifiée
0 2 * * * /bin/bash -c 'BACKUP_ENV_FILE="$HOME/.backup_env" /chemin/vers/backup_volumes.sh 2>&1 | logger -t docker-backup'
- Vérifiez les logs
grep docker-backup /var/log/syslogVous serez obligé de mettre à jour en forcant un overwrite des fichiers :
git fetch origin
git reset --hard origin/main
chmod +x *.sh- Le fichier .backup_env doit être protégé (chmod 600)
- Les dossiers temporaires sont automatiquement protégés (chmod 700)
- Les sauvegardes sont chiffrées avant de quitter votre serveur
- Aucun fichier n'est conservé localement (suppression immédiate après backup)
- Local (filesystem)
- S3 (AWS S3, Minio, tout stockage compatible S3)
- SFTP (serveur SSH)
- Rest Server (serveur REST dédié à Restic)
- Azure Blob Storage
- Google Cloud Storage
- Et bien d'autres...
MIT