- API routes pour gestion clients (CRUD complet) - Système de stockage JSON persistant (data/clients.json) - Configuration Next.js serveur (next.config.server.js) - Script de build pour déploiement (scripts/build-server.sh) - Documentation complète de déploiement (ADMIN_DEPLOY.md) Fonctionnalités admin: - Création/modification/suppression de clients - Génération automatique de tokens uniques - QR codes pour configuration clients - Authentification par mot de passe - Backend Node.js avec API REST Déploiement prévu: marama.syoul.fr
191 lines
4.4 KiB
Bash
Executable File
191 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
echo "🚀 Build de l'admin pour déploiement serveur"
|
|
echo "============================================"
|
|
echo ""
|
|
|
|
# Couleurs
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
# Vérifier qu'on est dans le bon répertoire
|
|
if [ ! -f "package.json" ]; then
|
|
echo "❌ Erreur: Exécutez ce script depuis la racine du projet"
|
|
exit 1
|
|
fi
|
|
|
|
# Étape 1: Configuration Next.js pour serveur
|
|
echo -e "${BLUE}📦 Étape 1/4: Configuration Next.js${NC}"
|
|
if [ -f "next.config.js" ]; then
|
|
cp next.config.js next.config.js.backup
|
|
fi
|
|
cp next.config.server.js next.config.js
|
|
echo -e "${GREEN}✅ Configuration serveur activée${NC}"
|
|
echo ""
|
|
|
|
# Étape 2: Installation des dépendances
|
|
echo -e "${BLUE}📦 Étape 2/4: Vérification des dépendances${NC}"
|
|
if [ ! -d "node_modules" ]; then
|
|
echo "Installation des dépendances..."
|
|
npm install
|
|
else
|
|
echo "Dépendances déjà installées"
|
|
fi
|
|
echo -e "${GREEN}✅ Dépendances OK${NC}"
|
|
echo ""
|
|
|
|
# Étape 3: Build Next.js
|
|
echo -e "${BLUE}📦 Étape 3/4: Build de production${NC}"
|
|
rm -rf .next
|
|
|
|
if npm run build; then
|
|
echo -e "${GREEN}✅ Build réussi${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ Build avec avertissements${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# Étape 4: Préparer les fichiers pour le déploiement
|
|
echo -e "${BLUE}📦 Étape 4/4: Préparation du déploiement${NC}"
|
|
|
|
# Créer le dossier de déploiement
|
|
mkdir -p deploy
|
|
rm -rf deploy/*
|
|
|
|
# Copier les fichiers nécessaires
|
|
echo "Copie des fichiers..."
|
|
cp -r .next deploy/
|
|
cp -r public deploy/
|
|
cp package.json deploy/
|
|
cp package-lock.json deploy/ 2>/dev/null || true
|
|
cp next.config.server.js deploy/next.config.js
|
|
|
|
# Créer le dossier data
|
|
mkdir -p deploy/data
|
|
cp data/.gitkeep deploy/data/ 2>/dev/null || true
|
|
|
|
# Créer un fichier .env.example
|
|
cat > deploy/.env.example << 'EOF'
|
|
# Mot de passe admin
|
|
ADMIN_PASSWORD=votre_mot_de_passe_securise
|
|
|
|
# Port (optionnel, par défaut 3000)
|
|
PORT=3000
|
|
EOF
|
|
|
|
# Créer un fichier de lancement
|
|
cat > deploy/start.sh << 'EOF'
|
|
#!/bin/bash
|
|
# Script de lancement pour le serveur
|
|
|
|
# Installer les dépendances production uniquement
|
|
npm ci --production
|
|
|
|
# Démarrer le serveur
|
|
npm start
|
|
EOF
|
|
|
|
chmod +x deploy/start.sh
|
|
|
|
# Créer un fichier README pour le déploiement
|
|
cat > deploy/DEPLOY.md << 'EOF'
|
|
# Déploiement sur serveur
|
|
|
|
## Étapes de déploiement
|
|
|
|
1. **Transférer les fichiers sur le serveur**
|
|
```bash
|
|
rsync -avz --delete deploy/ user@marama.syoul.fr:/var/www/pension-admin/
|
|
```
|
|
|
|
2. **Se connecter au serveur**
|
|
```bash
|
|
ssh user@marama.syoul.fr
|
|
cd /var/www/pension-admin
|
|
```
|
|
|
|
3. **Configurer les variables d'environnement**
|
|
```bash
|
|
cp .env.example .env
|
|
nano .env # Modifier ADMIN_PASSWORD
|
|
```
|
|
|
|
4. **Installer et démarrer**
|
|
```bash
|
|
chmod +x start.sh
|
|
./start.sh
|
|
```
|
|
|
|
5. **Avec PM2 (recommandé)**
|
|
```bash
|
|
npm install -g pm2
|
|
pm2 start npm --name "pension-admin" -- start
|
|
pm2 save
|
|
pm2 startup
|
|
```
|
|
|
|
## Configuration Nginx (reverse proxy)
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name admin.marama.syoul.fr;
|
|
|
|
location / {
|
|
proxy_pass http://localhost:3000;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection 'upgrade';
|
|
proxy_set_header Host $host;
|
|
proxy_cache_bypass $http_upgrade;
|
|
}
|
|
}
|
|
```
|
|
|
|
## SSL avec Certbot
|
|
|
|
```bash
|
|
sudo certbot --nginx -d admin.marama.syoul.fr
|
|
```
|
|
EOF
|
|
|
|
echo -e "${GREEN}✅ Fichiers prêts dans deploy/${NC}"
|
|
echo ""
|
|
|
|
# Restaurer la config originale
|
|
if [ -f "next.config.js.backup" ]; then
|
|
mv next.config.js.backup next.config.js
|
|
fi
|
|
|
|
# Afficher le résumé
|
|
DEPLOY_SIZE=$(du -sh deploy | cut -f1)
|
|
|
|
echo ""
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e "${GREEN}✅ BUILD SERVEUR TERMINÉ !${NC}"
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo ""
|
|
echo -e "📁 Dossier de déploiement: ${BLUE}deploy/${NC}"
|
|
echo -e "📊 Taille: ${BLUE}${DEPLOY_SIZE}${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}📤 Prochaines étapes:${NC}"
|
|
echo ""
|
|
echo "1. Transférer sur le serveur:"
|
|
echo " ${BLUE}rsync -avz --delete deploy/ user@marama.syoul.fr:/var/www/pension-admin/${NC}"
|
|
echo ""
|
|
echo "2. Sur le serveur:"
|
|
echo " ${BLUE}cd /var/www/pension-admin${NC}"
|
|
echo " ${BLUE}./start.sh${NC}"
|
|
echo ""
|
|
echo "3. Configurer le mot de passe admin:"
|
|
echo " ${BLUE}nano .env${NC}"
|
|
echo " ${BLUE}ADMIN_PASSWORD=votre_mot_de_passe${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}📖 Documentation complète: deploy/DEPLOY.md${NC}"
|
|
echo ""
|
|
|