#!/bin/bash # Script de déploiement pour Audio Classifier # Usage: ./deploy.sh [user@]hostname set -e if [ -z "$1" ]; then echo "Usage: ./deploy.sh user@hostname" echo "Exemple: ./deploy.sh root@mon-serveur.com" exit 1 fi SERVER=$1 APP_NAME="audio-classifier" REMOTE_DIR="~/$APP_NAME" echo "🚀 Déploiement de Audio Classifier sur $SERVER" echo "" # 1. Vérifier la connexion SSH echo "📡 Vérification de la connexion SSH..." ssh $SERVER "echo '✅ Connexion SSH OK'" || exit 1 echo "" # 2. Créer le dossier distant echo "📁 Création du dossier distant $REMOTE_DIR..." ssh $SERVER "mkdir -p $REMOTE_DIR" echo "" # 3. Copier les fichiers echo "📦 Transfert des fichiers..." rsync -avz --progress \ --exclude 'node_modules' \ --exclude '.next' \ --exclude '__pycache__' \ --exclude '*.pyc' \ --exclude '.git' \ --exclude 'backend/models/*.pb' \ ./ $SERVER:$REMOTE_DIR/ echo "" # 4. Télécharger les modèles Essentia sur le serveur echo "🤖 Téléchargement des modèles Essentia..." ssh $SERVER "cd $REMOTE_DIR && bash scripts/download-essentia-models.sh" echo "" # 5. Vérifier Docker echo "🐳 Vérification de Docker..." ssh $SERVER "command -v docker >/dev/null 2>&1" || { echo "⚠️ Docker n'est pas installé sur le serveur." echo "Installation de Docker..." ssh $SERVER "curl -fsSL https://get.docker.com | sudo sh && sudo usermod -aG docker \$(whoami)" echo "✅ Docker installé. Vous devrez peut-être vous reconnecter au serveur." } ssh $SERVER "command -v docker-compose >/dev/null 2>&1 || command -v docker compose >/dev/null 2>&1" || { echo "⚠️ Docker Compose n'est pas installé." echo "Installation de Docker Compose..." ssh $SERVER "sudo apt-get update && sudo apt-get install -y docker-compose-plugin" } echo "" # 6. Build et démarrage echo "🔨 Build et démarrage de l'application..." ssh $SERVER "cd $REMOTE_DIR && docker-compose down && docker-compose build && docker-compose up -d" echo "" # 7. Vérifier le statut echo "📊 Vérification du statut..." sleep 5 ssh $SERVER "cd $REMOTE_DIR && docker-compose ps" echo "" echo "✅ Déploiement terminé !" echo "" echo "🌐 L'application devrait être accessible sur:" echo " - Backend API: http://$SERVER:8000" echo " - Frontend: http://$SERVER:3000" echo "" echo "📝 Pour voir les logs:" echo " ssh $SERVER 'cd $REMOTE_DIR && docker-compose logs -f'"