FireWatch / scripts /setup.sh
rinogeek's picture
first commit
e9d86db
#!/bin/bash
# Script de configuration automatique pour FireWatch AI
# Créé par Marino ATOHOUN
set -e
# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
NC='\033[0m' # No Color
# Fonction de logging
log() {
echo -e "${GREEN}[$(date +'%H:%M:%S')] $1${NC}"
}
error() {
echo -e "${RED}[$(date +'%H:%M:%S')] ERROR: $1${NC}"
exit 1
}
warning() {
echo -e "${YELLOW}[$(date +'%H:%M:%S')] WARNING: $1${NC}"
}
info() {
echo -e "${BLUE}[$(date +'%H:%M:%S')] INFO: $1${NC}"
}
# Banner
echo -e "${PURPLE}"
echo "🔥 ========================================= 🔥"
echo " FireWatch AI - Configuration Setup"
echo " Créé par Marino ATOHOUN"
echo "🔥 ========================================= 🔥"
echo -e "${NC}"
# Vérification des prérequis
log "Vérification des prérequis..."
# Vérifier Python
if ! command -v python3.11 &> /dev/null; then
if ! command -v python3 &> /dev/null; then
error "Python 3.11+ requis. Veuillez l'installer d'abord."
else
PYTHON_VERSION=$(python3 --version | cut -d' ' -f2 | cut -d'.' -f1,2)
if [[ $(echo "$PYTHON_VERSION < 3.11" | bc -l) -eq 1 ]]; then
error "Python 3.11+ requis. Version actuelle: $PYTHON_VERSION"
fi
PYTHON_CMD="python3"
fi
else
PYTHON_CMD="python3.11"
fi
log "✓ Python trouvé: $($PYTHON_CMD --version)"
# Vérifier pip
if ! command -v pip3 &> /dev/null; then
error "pip3 requis. Veuillez l'installer d'abord."
fi
log "✓ pip trouvé: $(pip3 --version)"
# Vérifier git
if ! command -v git &> /dev/null; then
error "git requis. Veuillez l'installer d'abord."
fi
log "✓ git trouvé: $(git --version)"
# Configuration de l'environnement virtuel
log "Configuration de l'environnement virtuel..."
if [ ! -d "venv" ]; then
info "Création de l'environnement virtuel..."
$PYTHON_CMD -m venv venv
else
info "Environnement virtuel existant trouvé"
fi
# Activation de l'environnement virtuel
log "Activation de l'environnement virtuel..."
source venv/bin/activate
# Mise à jour de pip
log "Mise à jour de pip..."
pip install --upgrade pip
# Installation des dépendances
log "Installation des dépendances Python..."
if [ -f "requirements.txt" ]; then
pip install -r requirements.txt
else
error "Fichier requirements.txt non trouvé"
fi
# Configuration des variables d'environnement
log "Configuration des variables d'environnement..."
if [ ! -f ".env" ]; then
if [ -f ".env.example" ]; then
cp .env.example .env
info "Fichier .env créé à partir de .env.example"
warning "Veuillez éditer .env avec vos configurations"
else
error "Fichier .env.example non trouvé"
fi
else
info "Fichier .env existant trouvé"
fi
# Génération d'une clé secrète Django
log "Génération d'une clé secrète Django..."
SECRET_KEY=$(python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())")
sed -i "s/SECRET_KEY=.*/SECRET_KEY=$SECRET_KEY/" .env
info "Clé secrète générée et configurée"
# Création des répertoires nécessaires
log "Création des répertoires nécessaires..."
mkdir -p media/uploads/images media/uploads/videos media/results models logs static/css static/js static/images
# Configuration de la base de données
log "Configuration de la base de données..."
python manage.py makemigrations
python manage.py migrate
# Collecte des fichiers statiques
log "Collecte des fichiers statiques..."
python manage.py collectstatic --noinput
# Vérification des modèles YOLOv8
log "Vérification des modèles YOLOv8..."
if [ -f "models/incendies.pt" ]; then
log "✓ Modèle d'incendie trouvé"
else
warning "✗ Modèle d'incendie non trouvé (models/incendies.pt)"
info "L'application fonctionnera en mode simulation"
fi
if [ -f "models/intrusion.pt" ]; then
log "✓ Modèle d'intrusion trouvé"
else
warning "✗ Modèle d'intrusion non trouvé (models/intrusion.pt)"
info "L'application fonctionnera en mode simulation"
fi
# Création d'un superutilisateur (optionnel)
echo ""
read -p "Voulez-vous créer un superutilisateur maintenant ? (y/N): " create_superuser
if [[ $create_superuser =~ ^[Yy]$ ]]; then
log "Création du superutilisateur..."
python manage.py createsuperuser
fi
# Tests de base
log "Exécution des tests de base..."
python manage.py check
# Résumé de l'installation
echo ""
echo -e "${GREEN}🎉 Configuration terminée avec succès ! 🎉${NC}"
echo ""
echo -e "${BLUE}Prochaines étapes :${NC}"
echo "1. Activez l'environnement virtuel : source venv/bin/activate"
echo "2. Lancez le serveur : python manage.py runserver"
echo "3. Ouvrez votre navigateur : http://127.0.0.1:8000"
echo "4. Accédez à l'admin : http://127.0.0.1:8000/admin/"
echo ""
echo -e "${YELLOW}Pour utiliser vos modèles YOLOv8 :${NC}"
echo "1. Placez incendies.pt et intrusion.pt dans le dossier models/"
echo "2. Décommentez les lignes de chargement dans detection/views.py"
echo "3. Redémarrez le serveur"
echo ""
echo -e "${PURPLE}FireWatch AI est prêt ! Créé par Marino ATOHOUN${NC}"