improve scripts security
This commit is contained in:
@@ -1,47 +1,98 @@
|
||||
#!/bin/bash
|
||||
# scripts/update.sh - Mise à jour Nextcloud
|
||||
|
||||
set -e
|
||||
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é..."
|
||||
bash scripts/backup.sh
|
||||
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é"
|
||||
docker-compose exec -u www-data nextcloud php occ maintenance:mode --on
|
||||
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..."
|
||||
docker-compose pull nextcloud
|
||||
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..."
|
||||
sleep 30
|
||||
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..."
|
||||
docker-compose exec -u www-data nextcloud php occ 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
|
||||
# Scan et indices (non bloquant)
|
||||
echo "🔍 Scan des fichiers..."
|
||||
docker-compose exec -u www-data nextcloud php occ files:scan --all
|
||||
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 -u www-data nextcloud php occ db:add-missing-indices
|
||||
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 -u www-data nextcloud php occ db:convert-filecache-bigint --no-interaction
|
||||
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"
|
||||
docker-compose exec -u www-data nextcloud php occ maintenance:mode --off
|
||||
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
|
||||
|
||||
echo "✅ Mise à jour terminée !"
|
||||
docker-compose exec -u www-data nextcloud php occ status
|
||||
docker-compose exec -T -u www-data nextcloud php occ status
|
||||
|
||||
Reference in New Issue
Block a user