coffreobsidian/Serveur perso/automatiser-lancement-serveur-windows.md
2025-03-24 22:19:57 +01:00

3.6 KiB
Raw Permalink Blame History

🚀 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

# 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 + Rtaskschd.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 :
-ExecutionPolicy Bypass -File "J:\my-next-site\start-my-site.ps1"

⚙️ Onglet Conditions

  • Décocher : Démarrer uniquement si lordinateur est sur secteur

⚙️ Onglet Paramètres

  • Coche :
    • Autoriser lexé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

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