363 lines
8.2 KiB
Markdown
363 lines
8.2 KiB
Markdown
# Borgmatic Backup - Agence66
|
|
|
|
Configuration Borgmatic pour le backup automatique du serveur Agence66.
|
|
|
|
## Vue d'ensemble
|
|
|
|
Ce dépôt contient la configuration complète pour effectuer des backups automatiques quotidiens à 3h du matin via Borgmatic et BorgBackup.
|
|
|
|
**Version Borgmatic requise : ≥ 2.0.0** (pour l'interpolation des variables d'environnement)
|
|
|
|
### Caractéristiques
|
|
|
|
- **Backup quotidien automatique** à 3h du matin via systemd timer
|
|
- **Compression** zstd pour un bon ratio performance/compression
|
|
- **Rétention intelligente** : 7 daily, 4 weekly, 6 monthly
|
|
- **Notifications** via ntfy pour succès/échec
|
|
- **Compatible** avec les backups Borg existants
|
|
- **Sécurisé** : chiffrement, exclusions de fichiers sensibles
|
|
|
|
## Dossiers sauvegardés
|
|
|
|
- `/var/www` - Sites web
|
|
- `/srv/minecraftserver` - Serveur Minecraft
|
|
- `/srv/reddiscordbot` - Bot Discord
|
|
- `/srv/waltercoiffure` - Walter Coiffure
|
|
- `/etc` - Configurations système
|
|
- `/opt/nextcloud` - Nextcloud
|
|
- `/opt/traefik` - Reverse proxy Traefik
|
|
- `/opt/n8n` - Automation n8n
|
|
- `/opt/portainer` - Gestion Docker
|
|
- `/opt/uptime-kuma` - Monitoring
|
|
- `/opt/vaultwarden` - Gestionnaire de mots de passe
|
|
- `/opt/mailcow-dockerized` - Serveur mail
|
|
- `/opt/netdata` - Monitoring système
|
|
- `/opt/gitea` - Forge Git
|
|
- `/home` - Répertoires utilisateurs
|
|
|
|
## Installation
|
|
|
|
### Prérequis
|
|
|
|
- Système Linux (Debian/Ubuntu/Arch/Fedora)
|
|
- Accès root
|
|
- Git installé
|
|
- **Borgmatic ≥ 2.0.0** (pour l'interpolation des variables d'environnement)
|
|
|
|
### Installation rapide
|
|
|
|
```bash
|
|
# Cloner le dépôt
|
|
git clone <url-du-repo>
|
|
cd agence66-borgmatic
|
|
|
|
# Copier et configurer les variables d'environnement
|
|
cp .env.example .env
|
|
nano .env # Éditer avec vos valeurs
|
|
|
|
# Éditer la configuration si nécessaire
|
|
nano config.yaml # Ajuster le repository Borg
|
|
|
|
# Exécuter l'installation
|
|
sudo ./install.sh
|
|
```
|
|
|
|
### Configuration manuelle
|
|
|
|
Si vous préférez installer manuellement :
|
|
|
|
```bash
|
|
# Installer Borgmatic ≥ 2.0.0 via pipx (recommandé)
|
|
sudo apt install pipx
|
|
sudo pipx install borgmatic
|
|
|
|
# Créer les liens symboliques
|
|
sudo ln -sf /root/.local/bin/borgmatic /usr/local/bin/borgmatic
|
|
sudo ln -sf /root/.local/bin/generate-borgmatic-config /usr/local/bin/generate-borgmatic-config
|
|
|
|
# Installer BorgBackup
|
|
sudo apt install borgbackup # Debian/Ubuntu
|
|
# ou
|
|
sudo pacman -S borg # Arch Linux
|
|
|
|
# Copier les fichiers
|
|
sudo mkdir -p /etc/borgmatic/hooks
|
|
sudo cp config.yaml /etc/borgmatic/
|
|
sudo cp hooks/*.sh /etc/borgmatic/hooks/
|
|
sudo chmod +x /etc/borgmatic/hooks/*.sh
|
|
|
|
# Copier les variables d'environnement
|
|
sudo cp .env /etc/borgmatic/
|
|
sudo chmod 600 /etc/borgmatic/.env
|
|
|
|
# Installer les services systemd
|
|
sudo cp systemd/borgmatic.service /etc/systemd/system/
|
|
sudo cp systemd/borgmatic.timer /etc/systemd/system/
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable borgmatic.timer
|
|
sudo systemctl start borgmatic.timer
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Variables d'environnement (.env)
|
|
|
|
Éditez `/etc/borgmatic/.env` avec vos valeurs :
|
|
|
|
```bash
|
|
# Repository Borg
|
|
BORG_REPO=/path/to/your/repository
|
|
# ou pour un repo distant:
|
|
BORG_REPO=ssh://user@backup.server.com/path/to/repo
|
|
|
|
# Passphrase de chiffrement
|
|
BORG_PASSPHRASE=your-secure-passphrase
|
|
|
|
# Configuration ntfy
|
|
NTFY_URL=https://ntfy.sh/your-topic
|
|
NTFY_USER=username:password
|
|
```
|
|
|
|
### Configuration Borgmatic (config.yaml)
|
|
|
|
Le fichier `/etc/borgmatic/config.yaml` contient la configuration principale.
|
|
|
|
Points importants à vérifier :
|
|
|
|
1. **Repository** : Décommentez et configurez votre repository dans la section `location.repositories`
|
|
2. **Chemins** : Ajustez `source_directories` si nécessaire
|
|
3. **Exclusions** : Personnalisez `exclude_patterns` selon vos besoins
|
|
|
|
### Initialisation du repository Borg
|
|
|
|
Si vous utilisez un nouveau repository :
|
|
|
|
```bash
|
|
# Repository local
|
|
borg init --encryption=repokey-blake2 /path/to/repo
|
|
|
|
# Repository distant
|
|
borg init --encryption=repokey-blake2 ssh://user@server/path/to/repo
|
|
```
|
|
|
|
**IMPORTANT** : Sauvegardez la clé de chiffrement !
|
|
|
|
```bash
|
|
borg key export /path/to/repo backup-key.txt
|
|
# Conservez ce fichier en lieu sûr !
|
|
```
|
|
|
|
## Utilisation
|
|
|
|
### Tester la configuration
|
|
|
|
```bash
|
|
# Valider la configuration (avec dry-run)
|
|
borgmatic --dry-run --verbosity 2
|
|
|
|
# Lister les fichiers qui seront sauvegardés
|
|
borgmatic list --json
|
|
```
|
|
|
|
### Exécuter un backup manuel
|
|
|
|
```bash
|
|
# Backup avec verbosité normale
|
|
sudo borgmatic --verbosity 1
|
|
|
|
# Backup avec verbosité détaillée
|
|
sudo borgmatic --verbosity 2
|
|
```
|
|
|
|
### Vérifier le timer systemd
|
|
|
|
```bash
|
|
# Statut du timer
|
|
systemctl status borgmatic.timer
|
|
|
|
# Voir quand le prochain backup aura lieu
|
|
systemctl list-timers | grep borgmatic
|
|
|
|
# Logs du dernier backup
|
|
journalctl -u borgmatic.service -n 100
|
|
```
|
|
|
|
### Lister les backups
|
|
|
|
```bash
|
|
# Lister toutes les archives
|
|
borgmatic list
|
|
|
|
# Informations détaillées
|
|
borg list /path/to/repo
|
|
```
|
|
|
|
### Restaurer des fichiers
|
|
|
|
```bash
|
|
# Monter une archive pour explorer
|
|
mkdir /tmp/restore
|
|
borg mount /path/to/repo::backup-20250116-0300 /tmp/restore
|
|
cd /tmp/restore
|
|
# ... copier les fichiers nécessaires ...
|
|
cd /
|
|
borg umount /tmp/restore
|
|
|
|
# Extraire directement
|
|
borg extract /path/to/repo::backup-20250116-0300 path/to/file
|
|
|
|
# Avec borgmatic
|
|
borgmatic extract --archive backup-20250116-0300 --path path/to/file
|
|
```
|
|
|
|
## Maintenance
|
|
|
|
### Vérifier l'intégrité
|
|
|
|
```bash
|
|
# Vérification complète du repository
|
|
borgmatic check --verbosity 2
|
|
|
|
# Vérification rapide
|
|
borg check /path/to/repo
|
|
```
|
|
|
|
### Nettoyer l'espace disque
|
|
|
|
Le nettoyage automatique (prune) est déjà configuré avec :
|
|
|
|
- 7 backups quotidiens
|
|
- 4 backups hebdomadaires
|
|
- 6 backups mensuels
|
|
|
|
Pour forcer un nettoyage manuel :
|
|
|
|
```bash
|
|
borgmatic prune --verbosity 1
|
|
```
|
|
|
|
### Compacter le repository
|
|
|
|
Pour libérer réellement l'espace disque après prune :
|
|
|
|
```bash
|
|
borg compact /path/to/repo
|
|
```
|
|
|
|
## Notifications
|
|
|
|
Les notifications sont envoyées via ntfy :
|
|
|
|
- ✅ **Succès** : notification normale avec le nom de l'archive
|
|
- ❌ **Échec** : notification haute priorité avec le message d'erreur
|
|
|
|
Testez manuellement les notifications :
|
|
|
|
```bash
|
|
# Test notification de succès
|
|
/etc/borgmatic/hooks/ntfy-success.sh "test-archive" ""
|
|
|
|
# Test notification d'erreur
|
|
/etc/borgmatic/hooks/ntfy-error.sh "Erreur de test"
|
|
```
|
|
|
|
## Sécurité
|
|
|
|
- Les fichiers `.env` et les clés ne sont **jamais** commités (voir `.gitignore`)
|
|
- Les permissions des fichiers sensibles sont restrictives (600)
|
|
- Le service systemd utilise `ProtectSystem=strict`
|
|
- Les logs sont dans le journal systemd, accessible uniquement en root
|
|
|
|
## Troubleshooting
|
|
|
|
### Le backup ne démarre pas
|
|
|
|
```bash
|
|
# Vérifier le timer
|
|
systemctl status borgmatic.timer
|
|
|
|
# Vérifier le service
|
|
systemctl status borgmatic.service
|
|
|
|
# Voir les logs
|
|
journalctl -u borgmatic.service -f
|
|
```
|
|
|
|
### Erreur de connexion au repository
|
|
|
|
```bash
|
|
# Tester la connexion SSH (si distant)
|
|
ssh user@backup-server
|
|
|
|
# Vérifier les variables d'environnement
|
|
sudo cat /etc/borgmatic/.env
|
|
|
|
# Tester Borg directement
|
|
sudo borg list $BORG_REPO
|
|
```
|
|
|
|
### Problème de permissions
|
|
|
|
```bash
|
|
# Vérifier les permissions des fichiers
|
|
ls -la /etc/borgmatic/
|
|
ls -la /etc/borgmatic/hooks/
|
|
|
|
# Corriger si nécessaire
|
|
sudo chmod 600 /etc/borgmatic/.env
|
|
sudo chmod 600 /etc/borgmatic/config.yaml
|
|
sudo chmod +x /etc/borgmatic/hooks/*.sh
|
|
```
|
|
|
|
### Notifications ntfy ne fonctionnent pas
|
|
|
|
```bash
|
|
# Tester manuellement
|
|
curl -u "$NTFY_USER" \
|
|
-H "Title: Test" \
|
|
-d "Message de test" \
|
|
"$NTFY_URL"
|
|
|
|
# Vérifier les variables
|
|
source /etc/borgmatic/.env
|
|
echo $NTFY_URL
|
|
echo $NTFY_USER
|
|
```
|
|
|
|
## Migration depuis l'ancien script
|
|
|
|
Si vous migrez depuis l'ancien script Borg :
|
|
|
|
1. **Le repository existant est compatible** - pas besoin de réinitialiser
|
|
2. **Les archives existantes restent accessibles**
|
|
3. **Le format de nommage est identique** : `backup-YYYYMMDD-HHMM`
|
|
4. **La rétention est la même** : 7/4/6
|
|
|
|
Pour vérifier la compatibilité :
|
|
|
|
```bash
|
|
# Lister les anciennes archives
|
|
borg list /path/to/existing/repo
|
|
|
|
# Tester avec borgmatic
|
|
borgmatic list
|
|
```
|
|
|
|
## Ressources
|
|
|
|
- [Documentation Borgmatic](https://torsion.org/borgmatic/)
|
|
- [Documentation BorgBackup](https://borgbackup.readthedocs.io/)
|
|
- [ntfy.sh](https://ntfy.sh/)
|
|
|
|
## Support
|
|
|
|
Pour tout problème :
|
|
|
|
1. Consultez la section Troubleshooting
|
|
2. Vérifiez les logs : `journalctl -u borgmatic.service -n 100`
|
|
3. Testez en mode verbeux : `borgmatic --verbosity 2`
|
|
|
|
## Licence
|
|
|
|
Configuration personnalisée pour Agence66.
|