Ajout interface admin déployable sur serveur
- 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
This commit is contained in:
190
scripts/build-server.sh
Executable file
190
scripts/build-server.sh
Executable file
@ -0,0 +1,190 @@
|
||||
#!/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 ""
|
||||
|
||||
Reference in New Issue
Block a user