4NK_IA_back/scripts/install.sh
root bf2c0901f4 feat: Organisation des scripts et amélioration de l'installation
- Création du répertoire scripts/ avec tous les scripts d'installation et de test
- Scripts d'installation automatique (install.sh, quick-start.sh)
- Scripts de maintenance complète (maintenance.sh)
- Scripts de test (test-installation.sh, test-api.sh, test-services.sh, test-integration.sh)
- Amélioration du Dockerfile avec healthchecks et sécurité
- Mise à jour du docker-compose.yml avec healthchecks et dépendances
- Makefile étendu avec nouvelles commandes
- Documentation complète mise à jour
- Fichier de configuration d'exemple (env.example)
- app.py corrigé et fonctionnel
2025-09-11 00:41:57 +02:00

287 lines
6.8 KiB
Bash
Executable File

#!/bin/bash
# Script d'installation automatique pour 4NK IA Backend
# Usage: ./install.sh [dev|prod]
set -e
# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Fonction pour afficher les messages
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Vérification des prérequis
check_prerequisites() {
log_info "Vérification des prérequis..."
# Vérifier Docker
if ! command -v docker &> /dev/null; then
log_error "Docker n'est pas installé. Veuillez l'installer d'abord."
exit 1
fi
# Vérifier Docker Compose
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
log_error "Docker Compose n'est pas installé. Veuillez l'installer d'abord."
exit 1
fi
# Vérifier Python 3
if ! command -v python3 &> /dev/null; then
log_error "Python 3 n'est pas installé. Veuillez l'installer d'abord."
exit 1
fi
log_success "Tous les prérequis sont satisfaits"
}
# Installation des dépendances système
install_system_dependencies() {
log_info "Installation des dépendances système..."
# Mise à jour des paquets
apt-get update
# Installation des dépendances essentielles
apt-get install -y \
python3 \
python3-pip \
python3-venv \
python3-dev \
build-essential \
libmagic1 \
poppler-utils \
tesseract-ocr \
tesseract-ocr-fra \
libtesseract-dev \
libgl1-mesa-glx \
libglib2.0-0 \
libsm6 \
libxext6 \
libxrender-dev \
libgomp1 \
libgcc-s1
log_success "Dépendances système installées"
}
# Création de l'environnement virtuel Python
setup_python_env() {
log_info "Configuration de l'environnement Python..."
# Création de l'environnement virtuel
python3 -m venv venv
# Activation de l'environnement virtuel
source venv/bin/activate
# Mise à jour de pip
pip install --upgrade pip
# Installation des dépendances Python
pip install -r services/host_api/requirements.txt
log_success "Environnement Python configuré"
}
# Configuration des variables d'environnement
setup_environment() {
log_info "Configuration des variables d'environnement..."
# Création du fichier .env s'il n'existe pas
if [ ! -f .env ]; then
cat > .env << EOF
# Configuration de base
TZ=Europe/Paris
PUID=1000
PGID=1000
# Base de données PostgreSQL
POSTGRES_USER=notariat
POSTGRES_PASSWORD=notariat_pwd
POSTGRES_DB=notariat
# Redis
REDIS_URL=redis://redis:6379/0
# MinIO
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin123
MINIO_BUCKET=documents
# Neo4j
NEO4J_AUTH=neo4j/neo4j123
# OpenSearch
OPENSEARCH_PASSWORD=admin123
# Services externes
ANYLLM_BASE_URL=http://anythingsqlite:3001
ANYLLM_API_KEY=your_api_key_here
OLLAMA_BASE_URL=http://ollama:11434
# API Configuration
API_HOST=0.0.0.0
API_PORT=8000
API_WORKERS=4
# Logging
LOG_LEVEL=INFO
LOG_FORMAT=json
# Security
SECRET_KEY=your_secret_key_here
ACCESS_TOKEN_EXPIRE_MINUTES=30
EOF
log_success "Fichier .env créé avec les valeurs par défaut"
else
log_warning "Fichier .env existe déjà, pas de modification"
fi
}
# Construction des images Docker
build_docker_images() {
log_info "Construction des images Docker..."
# Construction de l'image host-api
docker build -t 4nk-ia-backend:latest -f docker/host-api/Dockerfile .
# Construction de l'image worker
docker build -t 4nk-ia-worker:latest -f docker/worker/Dockerfile .
log_success "Images Docker construites"
}
# Démarrage des services
start_services() {
local mode=${1:-dev}
log_info "Démarrage des services en mode $mode..."
if [ "$mode" = "prod" ]; then
docker-compose -f infra/docker-compose.yml up -d
else
docker-compose -f docker-compose.dev.yml up -d
fi
log_success "Services démarrés"
}
# Vérification de la santé des services
check_services_health() {
log_info "Vérification de la santé des services..."
# Attendre que les services soient prêts
sleep 30
# Vérifier l'API
if curl -f http://localhost:8000/api/health > /dev/null 2>&1; then
log_success "API backend accessible"
else
log_warning "API backend non accessible"
fi
# Vérifier MinIO
if curl -f http://localhost:9000/minio/health/live > /dev/null 2>&1; then
log_success "MinIO accessible"
else
log_warning "MinIO non accessible"
fi
# Vérifier AnythingLLM
if curl -f http://localhost:3001/api/health > /dev/null 2>&1; then
log_success "AnythingLLM accessible"
else
log_warning "AnythingLLM non accessible"
fi
}
# Affichage des informations de connexion
show_connection_info() {
log_info "Informations de connexion:"
echo ""
echo "🌐 Services Web:"
echo " - API Backend: http://localhost:8000"
echo " - API Documentation: http://localhost:8000/api-docs"
echo " - MinIO Console: http://localhost:9001"
echo " - AnythingLLM: http://localhost:3001"
echo " - Grafana: http://localhost:3000"
echo " - Neo4j Browser: http://localhost:7474"
echo ""
echo "🔧 Services de base de données:"
echo " - PostgreSQL: localhost:5432"
echo " - Redis: localhost:6379"
echo " - OpenSearch: localhost:9200"
echo ""
echo "📚 Documentation:"
echo " - README: ./README.md"
echo " - Changelog: ./CHANGELOG.md"
echo " - Contributing: ./CONTRIBUTING.md"
echo ""
}
# Fonction principale
main() {
local mode=${1:-dev}
echo "🚀 Installation de 4NK IA Backend"
echo "Mode: $mode"
echo ""
check_prerequisites
install_system_dependencies
setup_python_env
setup_environment
build_docker_images
start_services "$mode"
check_services_health
show_connection_info
log_success "Installation terminée avec succès !"
echo ""
echo "Pour démarrer les services:"
echo " ./start-stack.sh"
echo ""
echo "Pour arrêter les services:"
echo " ./stop_notary_system.sh"
echo ""
}
# Gestion des arguments
case "${1:-}" in
"dev"|"prod"|"")
main "$1"
;;
"help"|"-h"|"--help")
echo "Usage: $0 [dev|prod]"
echo ""
echo "Options:"
echo " dev - Installation en mode développement (défaut)"
echo " prod - Installation en mode production"
echo " help - Afficher cette aide"
;;
*)
log_error "Option invalide: $1"
echo "Utilisez '$0 help' pour voir les options disponibles"
exit 1
;;
esac