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:
437
ADMIN_DEPLOY.md
Normal file
437
ADMIN_DEPLOY.md
Normal file
@ -0,0 +1,437 @@
|
||||
# 🖥️ Guide de déploiement de l'interface Admin
|
||||
|
||||
Ce guide explique comment déployer l'interface d'administration sur votre serveur **marama.syoul.fr**.
|
||||
|
||||
---
|
||||
|
||||
## 📋 Vue d'ensemble
|
||||
|
||||
```
|
||||
┌─────────────────────┐ ┌──────────────────────────┐
|
||||
│ APK Client │ │ Admin Web │
|
||||
│ (Statique) │ │ marama.syoul.fr │
|
||||
│ │ │ │
|
||||
│ • Accueil │ │ • Login admin │
|
||||
│ • Explorer │ ←────│ • Gestion clients │
|
||||
│ • Mana Tracker │ │ • Génération tokens │
|
||||
│ • Infos │ │ • QR codes │
|
||||
└─────────────────────┘ └──────────────────────────┘
|
||||
Voyageurs Gérant (vous)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Déploiement en 5 étapes
|
||||
|
||||
### Étape 1 : Build de l'application admin
|
||||
|
||||
```bash
|
||||
cd "/home/syoul/Ccompagnon Marama"
|
||||
./scripts/build-server.sh
|
||||
```
|
||||
|
||||
Ce script va :
|
||||
- ✅ Configurer Next.js en mode serveur (avec API routes)
|
||||
- ✅ Build l'application
|
||||
- ✅ Préparer les fichiers dans `deploy/`
|
||||
- ✅ Créer les scripts de lancement
|
||||
|
||||
**⏱️ Durée :** 2-3 minutes
|
||||
|
||||
---
|
||||
|
||||
### Étape 2 : Transférer sur votre serveur
|
||||
|
||||
```bash
|
||||
# Depuis votre machine locale
|
||||
rsync -avz --delete deploy/ user@marama.syoul.fr:/var/www/pension-admin/
|
||||
|
||||
# Remplacez 'user' par votre nom d'utilisateur SSH
|
||||
```
|
||||
|
||||
**Alternative avec SCP :**
|
||||
```bash
|
||||
scp -r deploy/* user@marama.syoul.fr:/var/www/pension-admin/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Étape 3 : Configuration sur le serveur
|
||||
|
||||
```bash
|
||||
# Se connecter au serveur
|
||||
ssh user@marama.syoul.fr
|
||||
|
||||
# Aller dans le dossier
|
||||
cd /var/www/pension-admin
|
||||
|
||||
# Configurer le mot de passe admin
|
||||
cp .env.example .env
|
||||
nano .env
|
||||
```
|
||||
|
||||
**Contenu de `.env` :**
|
||||
```bash
|
||||
# ⚠️ IMPORTANT : Changez ce mot de passe !
|
||||
ADMIN_PASSWORD=votre_mot_de_passe_tres_securise
|
||||
|
||||
# Port (optionnel)
|
||||
PORT=3000
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Étape 4 : Installer et démarrer
|
||||
|
||||
#### Option A : Lancement simple (test)
|
||||
|
||||
```bash
|
||||
chmod +x start.sh
|
||||
./start.sh
|
||||
```
|
||||
|
||||
L'admin sera accessible sur `http://marama.syoul.fr:3000`
|
||||
|
||||
#### Option B : Avec PM2 (production, recommandé ⭐)
|
||||
|
||||
```bash
|
||||
# Installer PM2 (si pas déjà fait)
|
||||
npm install -g pm2
|
||||
|
||||
# Démarrer l'application
|
||||
pm2 start npm --name "pension-admin" -- start
|
||||
|
||||
# Sauvegarder la config PM2
|
||||
pm2 save
|
||||
|
||||
# Configurer le démarrage auto
|
||||
pm2 startup
|
||||
# Suivre les instructions affichées
|
||||
|
||||
# Commandes utiles PM2
|
||||
pm2 status # Voir le statut
|
||||
pm2 logs pension-admin # Voir les logs
|
||||
pm2 restart pension-admin # Redémarrer
|
||||
pm2 stop pension-admin # Arrêter
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Étape 5 : Configuration Nginx (reverse proxy)
|
||||
|
||||
#### A. Créer la configuration Nginx
|
||||
|
||||
```bash
|
||||
sudo nano /etc/nginx/sites-available/pension-admin
|
||||
```
|
||||
|
||||
**Contenu du fichier :**
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name admin.marama.syoul.fr;
|
||||
|
||||
# Logs
|
||||
access_log /var/log/nginx/pension-admin-access.log;
|
||||
error_log /var/log/nginx/pension-admin-error.log;
|
||||
|
||||
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_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### B. Activer la configuration
|
||||
|
||||
```bash
|
||||
# Créer le lien symbolique
|
||||
sudo ln -s /etc/nginx/sites-available/pension-admin /etc/nginx/sites-enabled/
|
||||
|
||||
# Tester la configuration
|
||||
sudo nginx -t
|
||||
|
||||
# Recharger Nginx
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
#### C. Configurer SSL (HTTPS) avec Let's Encrypt
|
||||
|
||||
```bash
|
||||
# Installer Certbot (si pas déjà fait)
|
||||
sudo apt install certbot python3-certbot-nginx
|
||||
|
||||
# Obtenir le certificat SSL
|
||||
sudo certbot --nginx -d admin.marama.syoul.fr
|
||||
|
||||
# Le renouvellement est automatique !
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Configuration DNS
|
||||
|
||||
Ajoutez un enregistrement A ou CNAME dans votre DNS :
|
||||
|
||||
```
|
||||
Type: A
|
||||
Nom: admin.marama.syoul.fr (ou juste "admin")
|
||||
Valeur: [IP de votre serveur]
|
||||
TTL: 3600
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Utilisation de l'interface admin
|
||||
|
||||
### 1. Se connecter
|
||||
|
||||
```
|
||||
URL: https://admin.marama.syoul.fr
|
||||
Mot de passe: celui défini dans .env
|
||||
```
|
||||
|
||||
### 2. Ajouter un client
|
||||
|
||||
1. Cliquer sur **"Nouveau client"**
|
||||
2. Remplir le formulaire :
|
||||
- **Email** : email du voyageur
|
||||
- **N° Bungalow** : 1, 2, 3, etc.
|
||||
- **WiFi** : nom et mot de passe
|
||||
- **Message du gérant** : message personnalisé
|
||||
|
||||
3. Cliquer sur **"Créer"**
|
||||
4. Un **QR code** et un **lien unique** sont générés automatiquement
|
||||
|
||||
### 3. Partager avec le client
|
||||
|
||||
**Option A : QR Code** (recommandé)
|
||||
- Afficher le QR code
|
||||
- Le voyageur scan avec son téléphone
|
||||
- L'app se configure automatiquement
|
||||
|
||||
**Option B : Lien**
|
||||
- Copier le lien unique
|
||||
- L'envoyer par email/SMS au client
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Mise à jour de l'application
|
||||
|
||||
Quand vous modifiez le code :
|
||||
|
||||
```bash
|
||||
# Sur votre machine locale
|
||||
cd "/home/syoul/Ccompagnon Marama"
|
||||
./scripts/build-server.sh
|
||||
|
||||
# Transférer
|
||||
rsync -avz --delete deploy/ user@marama.syoul.fr:/var/www/pension-admin/
|
||||
|
||||
# Sur le serveur
|
||||
ssh user@marama.syoul.fr
|
||||
cd /var/www/pension-admin
|
||||
pm2 restart pension-admin
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📂 Structure des fichiers sur le serveur
|
||||
|
||||
```
|
||||
/var/www/pension-admin/
|
||||
├── .next/ # Application Next.js compilée
|
||||
├── public/ # Assets statiques
|
||||
├── data/
|
||||
│ └── clients.json # Base de données des clients (créé auto)
|
||||
├── package.json # Dépendances
|
||||
├── next.config.js # Config Next.js
|
||||
├── .env # Variables d'environnement (mot de passe)
|
||||
├── start.sh # Script de lancement
|
||||
└── DEPLOY.md # Documentation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔒 Sécurité
|
||||
|
||||
### Recommandations importantes
|
||||
|
||||
1. **Mot de passe fort**
|
||||
```bash
|
||||
# Générer un mot de passe sécurisé
|
||||
openssl rand -base64 32
|
||||
```
|
||||
|
||||
2. **Permissions fichiers**
|
||||
```bash
|
||||
chmod 600 /var/www/pension-admin/.env
|
||||
chmod 600 /var/www/pension-admin/data/clients.json
|
||||
```
|
||||
|
||||
3. **Firewall**
|
||||
```bash
|
||||
# Autoriser uniquement HTTP/HTTPS
|
||||
sudo ufw allow 80/tcp
|
||||
sudo ufw allow 443/tcp
|
||||
sudo ufw enable
|
||||
```
|
||||
|
||||
4. **Sauvegarde des données**
|
||||
```bash
|
||||
# Créer un cron job pour sauvegarder clients.json
|
||||
0 2 * * * cp /var/www/pension-admin/data/clients.json /backup/clients-$(date +\%Y\%m\%d).json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Dépannage
|
||||
|
||||
### L'application ne démarre pas
|
||||
|
||||
```bash
|
||||
# Vérifier les logs
|
||||
pm2 logs pension-admin
|
||||
|
||||
# Vérifier que Node.js est installé
|
||||
node --version # doit être >= 18
|
||||
|
||||
# Réinstaller les dépendances
|
||||
cd /var/www/pension-admin
|
||||
rm -rf node_modules
|
||||
npm ci --production
|
||||
pm2 restart pension-admin
|
||||
```
|
||||
|
||||
### Erreur 502 Bad Gateway
|
||||
|
||||
```bash
|
||||
# Vérifier que l'app tourne
|
||||
pm2 status
|
||||
|
||||
# Vérifier les logs Nginx
|
||||
sudo tail -f /var/log/nginx/pension-admin-error.log
|
||||
|
||||
# Redémarrer Nginx
|
||||
sudo systemctl restart nginx
|
||||
```
|
||||
|
||||
### Les clients ne peuvent pas se connecter
|
||||
|
||||
```bash
|
||||
# Vérifier les permissions du fichier data
|
||||
ls -la /var/www/pension-admin/data/
|
||||
|
||||
# Vérifier le contenu
|
||||
cat /var/www/pension-admin/data/clients.json
|
||||
|
||||
# Si le fichier n'existe pas, l'app le créera automatiquement
|
||||
```
|
||||
|
||||
### Changer le mot de passe admin
|
||||
|
||||
```bash
|
||||
# Sur le serveur
|
||||
cd /var/www/pension-admin
|
||||
nano .env
|
||||
# Modifier ADMIN_PASSWORD
|
||||
|
||||
# Redémarrer
|
||||
pm2 restart pension-admin
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Monitoring
|
||||
|
||||
### Voir les statistiques avec PM2
|
||||
|
||||
```bash
|
||||
pm2 monit # Monitoring en temps réel
|
||||
pm2 logs # Voir tous les logs
|
||||
pm2 status # Statut de toutes les apps
|
||||
```
|
||||
|
||||
### Logs Nginx
|
||||
|
||||
```bash
|
||||
# Logs d'accès
|
||||
sudo tail -f /var/log/nginx/pension-admin-access.log
|
||||
|
||||
# Logs d'erreurs
|
||||
sudo tail -f /var/log/nginx/pension-admin-error.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Commandes utiles
|
||||
|
||||
```bash
|
||||
# Redémarrer l'application
|
||||
pm2 restart pension-admin
|
||||
|
||||
# Voir les logs en direct
|
||||
pm2 logs pension-admin --lines 100
|
||||
|
||||
# Recharger l'app (sans downtime)
|
||||
pm2 reload pension-admin
|
||||
|
||||
# Arrêter l'application
|
||||
pm2 stop pension-admin
|
||||
|
||||
# Démarrer l'application
|
||||
pm2 start pension-admin
|
||||
|
||||
# Supprimer de PM2
|
||||
pm2 delete pension-admin
|
||||
|
||||
# Sauvegarder la config PM2
|
||||
pm2 save
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 Conseils
|
||||
|
||||
1. **Tester localement d'abord**
|
||||
```bash
|
||||
# Sur votre machine
|
||||
npm run dev
|
||||
# Ouvrir http://localhost:3000/admin
|
||||
```
|
||||
|
||||
2. **Utiliser un sous-domaine dédié**
|
||||
- `admin.marama.syoul.fr` (recommandé)
|
||||
- Plutôt que `marama.syoul.fr/admin`
|
||||
|
||||
3. **Configurer les sauvegardes automatiques**
|
||||
- Le fichier `data/clients.json` contient toutes vos données
|
||||
- Sauvegardez-le régulièrement
|
||||
|
||||
4. **Monitoring avec Uptime Robot**
|
||||
- Gratuit
|
||||
- Vous alerte si le site est down
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support
|
||||
|
||||
Si vous rencontrez des problèmes :
|
||||
|
||||
1. Vérifier les logs : `pm2 logs pension-admin`
|
||||
2. Vérifier Nginx : `sudo nginx -t`
|
||||
3. Vérifier les permissions : `ls -la data/`
|
||||
|
||||
---
|
||||
|
||||
**Version** : 1.0.0 - Novembre 2025
|
||||
**Serveur** : marama.syoul.fr
|
||||
**URL Admin** : https://admin.marama.syoul.fr
|
||||
|
||||
Reference in New Issue
Block a user