99 lines
2.9 KiB
Bash
99 lines
2.9 KiB
Bash
#!/bin/bash
|
|
# scripts/update.sh - Mise à jour Nextcloud
|
|
|
|
set -euo pipefail
|
|
|
|
MAINTENANCE_ENABLED=false
|
|
|
|
# Fonction de nettoyage en cas d'erreur
|
|
cleanup() {
|
|
local exit_code=$?
|
|
|
|
if [ "$exit_code" -ne 0 ]; then
|
|
echo "❌ Erreur détectée lors de la mise à jour (code: $exit_code)"
|
|
echo "⚠️ IMPORTANT: Vérifiez les logs et considérez une restauration si nécessaire"
|
|
fi
|
|
|
|
# Désactiver le mode maintenance si activé
|
|
if [ "$MAINTENANCE_ENABLED" = true ]; then
|
|
echo "▶️ Tentative de désactivation du mode maintenance..."
|
|
docker-compose exec -T -u www-data nextcloud php occ maintenance:mode --off 2>/dev/null || true
|
|
fi
|
|
|
|
exit "$exit_code"
|
|
}
|
|
|
|
trap cleanup EXIT INT TERM
|
|
|
|
echo "🔄 Mise à jour de Nextcloud"
|
|
|
|
# Backup avant update
|
|
echo "💾 Backup de sécurité..."
|
|
if ! bash scripts/backup.sh; then
|
|
echo "❌ Erreur lors du backup, abandon de la mise à jour"
|
|
exit 1
|
|
fi
|
|
|
|
# Mode maintenance
|
|
echo "⏸️ Mode maintenance activé"
|
|
if docker-compose exec -T -u www-data nextcloud php occ maintenance:mode --on; then
|
|
MAINTENANCE_ENABLED=true
|
|
else
|
|
echo "❌ Impossible d'activer le mode maintenance"
|
|
exit 1
|
|
fi
|
|
|
|
# Pull nouvelle image
|
|
echo "📥 Téléchargement de la nouvelle version..."
|
|
if ! docker-compose pull nextcloud; then
|
|
echo "❌ Erreur lors du téléchargement de l'image"
|
|
exit 1
|
|
fi
|
|
|
|
# Restart
|
|
echo "🔄 Redémarrage..."
|
|
docker-compose up -d --force-recreate nextcloud cron
|
|
|
|
# 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"
|
|
exit 1
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
# Upgrade via OCC
|
|
echo "⬆️ Lancement de l'upgrade..."
|
|
if ! docker-compose exec -T -u www-data nextcloud php occ upgrade; then
|
|
echo "❌ Erreur lors de l'upgrade"
|
|
exit 1
|
|
fi
|
|
|
|
# Scan et indices (non bloquant)
|
|
echo "🔍 Scan des fichiers..."
|
|
docker-compose exec -T -u www-data nextcloud php occ files:scan --all || echo "⚠️ Avertissement: Erreur lors du scan"
|
|
|
|
echo "📊 Ajout des indices manquants..."
|
|
docker-compose exec -T -u www-data nextcloud php occ db:add-missing-indices || echo "⚠️ Avertissement: Erreur lors de l'ajout des indices"
|
|
|
|
echo "🔧 Conversion des colonnes..."
|
|
docker-compose exec -T -u www-data nextcloud php occ db:convert-filecache-bigint --no-interaction || echo "⚠️ Avertissement: Erreur lors de la conversion"
|
|
|
|
# Désactiver maintenance
|
|
echo "▶️ Désactivation du mode maintenance"
|
|
if docker-compose exec -T -u www-data nextcloud php occ maintenance:mode --off; then
|
|
MAINTENANCE_ENABLED=false
|
|
echo "✅ Mise à jour terminée !"
|
|
else
|
|
echo "⚠️ Attention: Impossible de désactiver le mode maintenance"
|
|
echo " Exécutez manuellement: make occ maintenance:mode --off"
|
|
fi
|
|
|
|
docker-compose exec -T -u www-data nextcloud php occ status
|