#!/bin/bash # AHAD QUANT — Installation service automatique (Linux VPS) # Lance UNE SEULE FOIS en tant que root # Apres ca : le serveur demarre automatiquement a chaque reboot set -e echo "" echo "========================================" echo " AHAD QUANT — Installation service" echo "========================================" echo "" # Detecter le chemin du projet SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$SCRIPT_DIR" PYTHON_BIN="$(which python3)" SERVICE_USER="ahad_quant" INSTALL_DIR="/opt/ahad_quant" echo "[1/7] Dossier projet source : $PROJECT_DIR" echo "[2/7] Python : $PYTHON_BIN" # Créer l'utilisateur dédié (sans droits root, sans shell interactif) echo "[3/7] Création de l'utilisateur système '$SERVICE_USER'..." if ! id "$SERVICE_USER" &>/dev/null; then useradd -r -s /bin/false -d "$INSTALL_DIR" -m "$SERVICE_USER" echo " ✅ Utilisateur '$SERVICE_USER' créé" else echo " ✅ Utilisateur '$SERVICE_USER' existe déjà" fi # Copier le projet dans /opt/ahad_quant echo "[4/7] Déploiement dans $INSTALL_DIR..." mkdir -p "$INSTALL_DIR" cp -r "$PROJECT_DIR"/. "$INSTALL_DIR/" chown -R "$SERVICE_USER:$SERVICE_USER" "$INSTALL_DIR" chmod 750 "$INSTALL_DIR" echo " ✅ Fichiers copiés et permissions appliquées" # Installer les dependances echo "[5/7] Installation des dependances Python..." pip3 install -r "$INSTALL_DIR/requirements.txt" -q echo " ✅ Dépendances installées" # Creer le fichier service systemd avec utilisateur non-root echo "[6/7] Creation du service systemd (utilisateur: $SERVICE_USER)..." cat > /etc/systemd/system/ahad_quant.service << EOF [Unit] Description=AHAD QUANT — Web Command Center After=network.target Wants=network-online.target [Service] Type=simple User=${SERVICE_USER} WorkingDirectory=${INSTALL_DIR} ExecStart=${PYTHON_BIN} ${INSTALL_DIR}/web_ui.py Restart=always RestartSec=10 Environment=PYTHONUNBUFFERED=1 NoNewPrivileges=true PrivateTmp=true [Install] WantedBy=multi-user.target EOF # Activer et demarrer le service echo "[7/7] Activation du service..." systemctl daemon-reload systemctl enable ahad_quant systemctl start ahad_quant echo "" echo "========================================" echo " Installation terminee !" echo "========================================" echo "" echo " AHAD QUANT tourne sous l'utilisateur '$SERVICE_USER' (non-root)" echo " Fichiers deployés dans : $INSTALL_DIR" echo "" echo " ⚠️ N'oubliez pas de configurer $INSTALL_DIR/.env :" echo " cp $INSTALL_DIR/.env.example $INSTALL_DIR/.env" echo " nano $INSTALL_DIR/.env" echo "" echo " Acces : http://$(hostname -I | awk '{print $1}'):8080" echo "" echo " Commandes utiles :" echo " systemctl status ahad_quant # voir le statut" echo " systemctl stop ahad_quant # arreter" echo " systemctl restart ahad_quant # redemarrer" echo " journalctl -u ahad_quant -f # voir les logs" echo ""