
# 🚀 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               |

---

