- Add install-server.sh for easy deployment on Linux servers - Update Dockerfile to auto-detect architecture (x86_64/ARM64) - Add deploy.sh for remote deployment - Update requirements.txt with Essentia support notes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
137 lines
3.9 KiB
Bash
Executable File
137 lines
3.9 KiB
Bash
Executable File
#!/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"
|