#!/bin/bash # scripts/recover.sh - Script de récupération après erreur de mise à jour set -euo pipefail echo "🔧 Script de récupération Nextcloud" echo "" # 1. Arrêter tous les conteneurs echo "⏹️ Arrêt de tous les conteneurs..." docker-compose down --remove-orphans || { echo "⚠️ Erreur lors de l'arrêt normal, tentative de force..." docker-compose kill 2>/dev/null || true docker-compose rm -f 2>/dev/null || true } # 2. Nettoyer les conteneurs orphelins echo "🧹 Nettoyage des conteneurs orphelins..." docker container prune -f # 3. Redémarrer les services echo "▶️ Redémarrage des services..." if ! docker-compose up -d; then echo "❌ Erreur lors du redémarrage" exit 1 fi # 4. Attendre que Nextcloud soit prêt echo "⏳ Attente du démarrage de Nextcloud..." for i in {1..60}; do if docker-compose exec -T nextcloud curl -f http://localhost/status.php >/dev/null 2>&1; then echo "✅ Nextcloud prêt" break fi if [ "$i" -eq 60 ]; then echo "❌ Timeout: Nextcloud n'est pas prêt" echo "📋 Logs des conteneurs:" docker-compose logs --tail=50 nextcloud exit 1 fi sleep 2 done # 5. Désactiver le mode maintenance echo "▶️ Désactivation du mode maintenance..." if docker-compose exec -T -u www-data nextcloud php occ maintenance:mode --off; then echo "✅ Mode maintenance désactivé" else echo "⚠️ Impossible de désactiver le mode maintenance" fi # 6. Vérifier le statut echo "" echo "📊 Statut final:" docker-compose exec -T -u www-data nextcloud php occ status echo "" echo "✅ Récupération terminée !" echo "" echo "Prochaines étapes:" echo " 1. Vérifiez que tout fonctionne: make health" echo " 2. Consultez les logs si nécessaire: make logs" echo " 3. Si problème persiste, restaurez le backup: make restore backups/nextcloud_backup_20251216_035002.tar.gz"