- 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
438 lines
9.1 KiB
Markdown
438 lines
9.1 KiB
Markdown
# 🖥️ 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
|
|
|