# 🚀 Automatiser le lancement de Strapi, Next.js et FastAPI au démarrage de Windows Server 2025 ## 🎯 Objectif Automatiser le lancement des 3 services suivants au **démarrage du serveur** : | Service | Dossier | Commande | |-----------|----------------------------------------|------------------------------------------------------------| | **Strapi** | `J:\my-next-site\cmsbackend\` | `npm run develop` | | **Next.js** | `J:\my-next-site\` | `npm run dev` | | **FastAPI** | `J:\my-next-site\llm-api\` | `uvicorn api:app --host 0.0.0.0 --port 8000` | ## ✅ Stratégie recommandée Utiliser un **script PowerShell** lancé via le **Planificateur de tâches Windows** : - Simple à maintenir - Exécution dans des fenêtres indépendantes - Redémarrage automatique après un redémarrage - Pas besoin de créer un service Windows --- ## 🧰 Étape 1 – Créer le script PowerShell ### 📄 Script : `start-my-site.ps1` ```powershell # Lancer Strapi Start-Process powershell -ArgumentList "cd 'J:\my-next-site\cmsbackend'; npm run develop" -WindowStyle Normal # Lancer Next.js Start-Process powershell -ArgumentList "cd 'J:\my-next-site'; npm run dev" -WindowStyle Normal # Lancer FastAPI Start-Process powershell -ArgumentList "cd 'J:\my-next-site\llm-api'; uvicorn api:app --host 0.0.0.0 --port 8000" -WindowStyle Normal ``` > 💾 Sauvegarder ce script dans un emplacement fixe (ex. : `J:\my-next-site\start-my-site.ps1`) --- ## 🧰 Étape 2 – Créer une tâche planifiée ### 🧭 Ouvrir le planificateur - `Win + R` → `taskschd.msc` ### ⚙️ Onglet **Général** - **Nom** : `Lancer mes services web` - Coche : `Exécuter avec les autorisations maximales` - Choisir un **compte administrateur** ### ⚙️ Onglet **Déclencheurs** - **Nouveau** - Déclencheur : `Au démarrage` - Délai (optionnel) : `30 secondes` - Cocher : `Activé` ### ⚙️ Onglet **Actions** - **Programme/script** : `powershell.exe` - **Ajouter des arguments** : ```bash -ExecutionPolicy Bypass -File "J:\my-next-site\start-my-site.ps1" ``` ### ⚙️ Onglet **Conditions** - Décocher : `Démarrer uniquement si l’ordinateur est sur secteur` ### ⚙️ Onglet **Paramètres** - Coche : - `Autoriser l’exécution de la tâche à la demande` - `Redémarrer en cas d’échec` - `Réessayer toutes les 1 min` - (optionnel) `Arrêter si la tâche dure trop longtemps` --- ## 🔁 Gestion des plantages Le planificateur peut relancer automatiquement le script si les options sont activées. Cependant, pour une meilleure résilience, tu peux envisager : ## ⚡️ Bonus : Utiliser `pm2` pour Node.js ```bash npm install -g pm2 # Lancer Strapi cd J:\my-next-site\cmsbackend pm2 start npm --name strapi -- run develop # Lancer Next.js cd J:\my-next-site pm2 start npm --name next -- run dev # Sauvegarder et rendre permanent pm2 save pm2 startup ``` PM2 permet de : - Redémarrer automatiquement en cas de crash - Avoir des logs - Démarrer avec le système --- ## ✅ Résumé | Élément | Action | |--------------|------------------------------------------------------------------------| | Script PS1 | `start-my-site.ps1` avec `Start-Process` pour chaque service | | Planificateur| Tâche lancée **au démarrage**, en **admin**, avec **PowerShell** | | Résilience | Gérée via **planificateur** ou via **PM2** pour Node.js | --- > ✉️ Besoin : export `.ps1` prêt à l’emploi ou `.xml` du planificateur ? Demande-moi !