# Backup Automatique Nextcloud Ce dossier contient la configuration pour les backups automatiques via un container Docker dédié. ## Architecture Le service `backup-cron` est un container Alpine Linux léger qui exécute des tâches planifiées: - **Image**: Alpine Linux avec Docker CLI et docker-compose - **Fuseau horaire**: Europe/Paris (configurable via `TZ`) - **Montages**: - `/project`: Projet complet (scripts, config, etc.) - `/var/run/docker.sock`: Socket Docker pour exécuter docker-compose - `/logs`: Répertoire des logs partagé avec l'hôte ## Planning par défaut | Tâche | Fréquence | Heure | Description | |-------|-----------|-------|-------------| | Backup | Quotidien | 5h00 | Backup complet (DB + fichiers) | | Health check | Quotidien | 6h00 | Vérification après backup | | Nettoyage | Hebdomadaire | Dimanche 3h00 | Suppression logs > 30 jours | ## Utilisation ### Démarrer le service ```bash # Build et démarrage docker-compose up -d backup-cron # Ou reconstruire si modifié docker-compose up -d --build backup-cron ``` ### Vérifier le statut ```bash # Via Makefile make cron-status # Ou directement docker-compose ps backup-cron docker-compose exec backup-cron cat /etc/crontabs/root ``` ### Consulter les logs ```bash # Via Makefile make cron-logs # Ou directement tail -f logs/cron_backup.log tail -f logs/cron_health.log tail -f logs/cron_clean.log ``` ### Tester manuellement ```bash # Exécuter un backup immédiatement docker-compose exec backup-cron /bin/bash -c "cd /project && bash scripts/backup.sh" # Vérifier l'heure du container docker-compose exec backup-cron date ``` ## Personnalisation ### Modifier le planning Éditez `cron/crontab` puis reconstruisez: ```bash # Format cron: minute hour day month weekday command # Exemple: backup toutes les 6 heures 0 */6 * * * cd /project && bash scripts/backup.sh >> /logs/cron_backup.log 2>&1 # Reconstruire docker-compose up -d --build backup-cron ``` ### Changer le fuseau horaire Modifiez `docker-compose.yml`: ```yaml environment: - TZ=America/New_York # ou autre fuseau ``` ## Sécurité ⚠️ **Important**: Le container a accès au socket Docker (`/var/run/docker.sock`), ce qui lui permet d'exécuter des commandes docker-compose. Cela est nécessaire pour les backups mais donne des privilèges élevés. **Bonnes pratiques**: - N'exposez pas ce service sur le réseau externe - Gardez les scripts de backup en lecture seule si possible - Surveillez les logs régulièrement - Limitez les ressources du container si nécessaire ## Dépannage ### Le container ne démarre pas ```bash # Vérifier les logs docker-compose logs backup-cron # Reconstruire from scratch docker-compose build --no-cache backup-cron docker-compose up -d backup-cron ``` ### Les tâches ne s'exécutent pas ```bash # Vérifier que crond tourne docker-compose exec backup-cron ps aux | grep crond # Vérifier le crontab docker-compose exec backup-cron cat /etc/crontabs/root # Vérifier l'heure du container docker-compose exec backup-cron date ``` ### Problèmes de permissions ```bash # Le container doit pouvoir écrire dans ./backups et ./logs chmod 755 backups logs # Vérifier les montages docker-compose exec backup-cron ls -la /project/backups ``` ## Logs Tous les logs sont stockés dans `./logs/`: - `cron_backup.log`: Sorties des backups quotidiens - `cron_health.log`: Résultats des health checks - `cron_clean.log`: Logs de nettoyage hebdomadaire Les logs sont automatiquement nettoyés après 30 jours.