improve scripts security

This commit is contained in:
BeauTroll
2025-12-15 11:14:16 +01:00
parent dc15b4665d
commit 517e337a25
4 changed files with 272 additions and 49 deletions

View File

@@ -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