#!/bin/bash # Script d'installation pour Audio Classifier sur serveur Linux # À exécuter directement sur le serveur après avoir cloné le repo set -e echo "🚀 Installation de Audio Classifier" echo "" # 1. Vérifier qu'on est dans le bon dossier if [ ! -f "docker-compose.yml" ]; then echo "❌ Erreur: Ce script doit être exécuté depuis la racine du projet" echo "Usage: cd audio-classifier && bash install-server.sh" exit 1 fi # 2. Vérifier l'architecture echo "🔍 Détection de l'architecture..." ARCH=$(uname -m) echo "Architecture détectée: $ARCH" if [ "$ARCH" = "x86_64" ]; then echo "✅ Architecture x86_64 - Parfait pour Essentia !" elif [ "$ARCH" = "aarch64" ]; then echo "⚠️ Architecture ARM64 - Essentia pourrait avoir des limitations" else echo "⚠️ Architecture non testée: $ARCH" fi echo "" # 3. Installer Docker si nécessaire echo "🐳 Vérification de Docker..." if ! command -v docker &> /dev/null; then echo "Docker non trouvé. Installation..." curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER echo "✅ Docker installé" echo "⚠️ Vous devrez vous reconnecter pour utiliser Docker sans sudo" echo "Commande: exit puis reconnectez-vous en SSH" else echo "✅ Docker déjà installé" fi echo "" # 4. Installer Docker Compose si nécessaire echo "🐳 Vérification de Docker Compose..." if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null 2>&1; then echo "Docker Compose non trouvé. Installation..." sudo apt-get update sudo apt-get install -y docker-compose-plugin echo "✅ Docker Compose installé" else echo "✅ Docker Compose déjà installé" fi echo "" # 5. Télécharger les modèles Essentia echo "🤖 Téléchargement des modèles Essentia..." if [ -f "scripts/download-essentia-models.sh" ]; then bash scripts/download-essentia-models.sh echo "✅ Modèles téléchargés" else echo "⚠️ Script de téléchargement non trouvé, les modèles seront téléchargés plus tard" fi echo "" # 6. Créer le fichier .env si nécessaire if [ ! -f ".env" ]; then echo "📝 Création du fichier .env..." cat > .env << 'EOF' # Database POSTGRES_USER=audio_classifier POSTGRES_PASSWORD=change_this_password POSTGRES_DB=audio_classifier DATABASE_URL=postgresql://audio_classifier:change_this_password@db:5432/audio_classifier # Backend ESSENTIA_MODELS_PATH=/app/models # Frontend NEXT_PUBLIC_API_URL=http://localhost:8000 EOF echo "✅ Fichier .env créé" echo "⚠️ Pensez à modifier les mots de passe dans .env" else echo "✅ Fichier .env existe déjà" fi echo "" # 7. Arrêter les conteneurs existants echo "🛑 Arrêt des conteneurs existants..." docker compose down 2>/dev/null || true echo "" # 8. Build de l'application echo "🔨 Build de l'application..." docker compose build echo "✅ Build terminé" echo "" # 9. Démarrer l'application echo "🚀 Démarrage de l'application..." docker compose up -d echo "" # 10. Attendre que les services démarrent echo "⏳ Attente du démarrage des services..." sleep 10 echo "" # 11. Vérifier le statut echo "📊 Statut des services:" docker compose ps echo "" # 12. Vérifier Essentia echo "🔍 Vérification d'Essentia..." docker compose logs backend | grep -i essentia | tail -3 echo "" # 13. Afficher les informations finales echo "✅ Installation terminée !" echo "" echo "🌐 Application accessible sur:" SERVER_IP=$(hostname -I | awk '{print $1}') echo " - Backend API: http://$SERVER_IP:8000" echo " - API Docs: http://$SERVER_IP:8000/docs" echo " - Frontend: http://$SERVER_IP:3000" echo "" echo "📝 Commandes utiles:" echo " - Voir les logs: docker compose logs -f" echo " - Arrêter: docker compose down" echo " - Redémarrer: docker compose restart" echo "" echo "🎵 Pour scanner vos fichiers audio:" echo " docker compose exec backend python -m src.cli.scanner /path/to/music"