Files
benoit e84ed7c731 fix: routes API accessibles sous /api en production
- Création d'un apiRouter Express pour toutes les routes API
- Routes montées sous /api ET à la racine (rétrocompatibilité)
- QR code corrigé : HTTPS en mode production
- start.sh : affichage URL HTTPS corrigé
- Résout le problème de connexion en mode production
2026-05-27 22:31:41 +02:00

205 lines
4.9 KiB
Bash
Executable File

#!/bin/bash
# PTT Live - Script de démarrage unifié
# Lance le serveur et le client en mode production
set -e
# Couleurs
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m'
# Détection IP réseau
get_network_ip() {
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS
ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | head -n 1
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
# Linux
hostname -I | awk '{print $1}'
else
echo "localhost"
fi
}
NETWORK_IP=$(get_network_ip)
echo -e "${BLUE}=================================="
echo "🚀 PTT Live - Démarrage"
echo "==================================${NC}"
echo ""
echo -e "${GREEN}📡 IP réseau détectée : ${NETWORK_IP}${NC}"
echo ""
# Vérifier que les dépendances sont installées
if [ ! -d "server/node_modules" ]; then
echo -e "${RED}❌ Dépendances serveur manquantes${NC}"
echo " Exécutez d'abord : ./install/macos.sh (ou linux.sh)"
exit 1
fi
if [ ! -d "client/node_modules" ]; then
echo -e "${RED}❌ Dépendances client manquantes${NC}"
echo " Exécutez d'abord : ./install/macos.sh (ou linux.sh)"
exit 1
fi
# Créer fichier PID pour cleanup
PID_FILE="/tmp/ptt-live.pid"
# Fonction cleanup
cleanup() {
echo ""
echo -e "${YELLOW}⏹ Arrêt PTT Live...${NC}"
if [ -f "$PID_FILE" ]; then
while read -r pid; do
if ps -p "$pid" > /dev/null 2>&1; then
kill "$pid" 2>/dev/null || true
fi
done < "$PID_FILE"
rm -f "$PID_FILE"
fi
echo -e "${GREEN}✓ Arrêté${NC}"
exit 0
}
trap cleanup SIGINT SIGTERM EXIT
# Afficher le QR code AVANT de lancer le serveur
if [ "$1" == "--dev" ]; then
./show-qr.sh --dev
else
./show-qr.sh
fi
# Démarrer le serveur (silencieux, logs dans fichier)
echo -e "${BLUE}🔧 Démarrage serveur...${NC}"
echo ""
cd server
# En mode production (pas --dev), activer HTTPS
if [ "$1" != "--dev" ]; then
export ENABLE_HTTPS=true
fi
# Lancer le serveur en background silencieux
npm start > ../server.log 2>&1 &
SERVER_PID=$!
echo "$SERVER_PID" > "$PID_FILE"
cd ..
# Attendre que le serveur soit prêt
echo ""
echo -e "${YELLOW}⏳ Attente démarrage serveur...${NC}"
# Déterminer le protocole selon le mode
if [ "$1" != "--dev" ]; then
HEALTH_URL="https://localhost:3000/health"
else
HEALTH_URL="http://localhost:3000/health"
fi
for i in {1..30}; do
if curl -kssf "$HEALTH_URL" > /dev/null 2>&1; then
echo -e "${GREEN}✓ Serveur prêt${NC}"
break
fi
if [ $i -eq 30 ]; then
echo -e "${RED}❌ Timeout : le serveur n'a pas démarré${NC}"
echo " Consultez server.log pour plus de détails"
exit 1
fi
sleep 1
done
echo ""
# Build client si pas déjà fait ou mode dev
if [ "$1" == "--dev" ]; then
echo -e "${BLUE}🎨 Démarrage client (dev)...${NC}"
cd client
npm run dev &
CLIENT_PID=$!
echo "$CLIENT_PID" >> "$PID_FILE"
cd ..
echo -e "${GREEN}✓ Client dev démarré${NC}"
echo ""
echo -e "${GREEN}=================================="
echo "✅ PTT Live démarré (mode dev)"
echo "==================================${NC}"
echo ""
echo -e "${BLUE}🌐 ACCÈS CLIENT (HTTPS) :${NC}"
echo -e "${GREEN} 👉 Local : https://localhost:5173${NC}"
echo -e "${GREEN} 👉 Réseau : https://${NETWORK_IP}:5173${NC}"
echo ""
echo -e "${YELLOW}⚠️ Acceptez le certificat auto-signé dans votre navigateur${NC}"
echo -e "${YELLOW} (Cliquez sur 'Avancé' puis 'Continuer')${NC}"
echo ""
echo "📊 API serveur (HTTP uniquement) : http://localhost:3000"
echo "🎛️ Interface admin : https://localhost:5173/admin"
echo ""
echo "📝 Logs serveur : tail -f server.log"
echo ""
echo -e "${YELLOW}Appuyez sur Ctrl+C pour arrêter${NC}"
echo ""
# Attendre indéfiniment
wait
else
# Mode production : build et serve
echo -e "${BLUE}🎨 Build client production...${NC}"
cd client
if [ ! -d "dist" ] || [ "$1" == "--rebuild" ]; then
npm run build
echo -e "${GREEN}✓ Client buildé${NC}"
else
echo -e "${YELLOW}⚠️ Build existant utilisé (--rebuild pour forcer)${NC}"
fi
cd ..
echo ""
echo -e "${GREEN}=================================="
echo "✅ PTT Live démarré (production)"
echo "==================================${NC}"
echo ""
echo -e "${BLUE}🌐 ACCÈS CLIENT (HTTPS) :${NC}"
echo -e "${GREEN} 👉 Local : https://localhost:3000${NC}"
echo -e "${GREEN} 👉 Réseau : https://${NETWORK_IP}:3000${NC}"
echo ""
echo -e "${YELLOW}⚠️ Acceptez le certificat auto-signé dans votre navigateur${NC}"
echo -e "${YELLOW} (Cliquez sur 'Avancé' puis 'Continuer')${NC}"
echo ""
echo "🎛️ Interface admin : https://localhost:3000/admin"
echo "📊 API serveur : https://localhost:3000/api"
echo ""
echo "📝 Logs serveur : tail -f server.log"
echo ""
echo -e "${YELLOW}Appuyez sur Ctrl+C pour arrêter${NC}"
echo ""
# Attendre indéfiniment
wait
fi