ajout du pm2 pour installtion debian 12
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -26,6 +26,7 @@ yarn-error.log*
|
|||||||
|
|
||||||
# local env files
|
# local env files
|
||||||
.env*.local
|
.env*.local
|
||||||
|
.env
|
||||||
|
|
||||||
# vercel
|
# vercel
|
||||||
.vercel
|
.vercel
|
||||||
|
|||||||
108
README.md
108
README.md
@@ -1,65 +1,91 @@
|
|||||||
# Runlock.re - Site Web Next.js
|
# Runlock.re - Expert Vaultwarden à la Réunion
|
||||||
|
|
||||||
Site web moderne pour Runlock.re, expert Vaultwarden à la Réunion.
|
Site web pour Runlock.re - Solutions de gestion de mots de passe sécurisées pour entreprises à la Réunion.
|
||||||
|
|
||||||
## 🚀 Technologies
|
## 🚀 Technologies utilisées
|
||||||
|
|
||||||
- **Next.js 14** - Framework React
|
- **Next.js 14** - Framework React
|
||||||
- **TypeScript** - Typage statique
|
- **TypeScript** - Typage statique
|
||||||
- **Tailwind CSS** - Styling
|
- **Tailwind CSS** - Styling
|
||||||
- **Framer Motion** - Animations
|
- **Framer Motion** - Animations
|
||||||
|
- **Nodemailer** - Envoi d'emails
|
||||||
- **Lucide React** - Icônes
|
- **Lucide React** - Icônes
|
||||||
|
|
||||||
## 📦 Installation
|
## 📋 Prérequis
|
||||||
|
|
||||||
|
- Node.js 18+
|
||||||
|
- npm ou yarn
|
||||||
|
- Git
|
||||||
|
|
||||||
|
## 🛠️ Installation locale
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Cloner le dépôt
|
||||||
|
git clone https://github.com/VOTRE_USERNAME/runlock-v2.git
|
||||||
|
cd runlock-v2
|
||||||
|
|
||||||
# Installer les dépendances
|
# Installer les dépendances
|
||||||
npm install
|
npm install
|
||||||
|
|
||||||
# Lancer le serveur de développement
|
# Créer le fichier .env.local
|
||||||
|
cp .env.example .env.local
|
||||||
|
# Éditer .env.local avec vos configurations SMTP
|
||||||
|
|
||||||
|
# Lancer en mode développement
|
||||||
npm run dev
|
npm run dev
|
||||||
|
|
||||||
# Build pour la production
|
|
||||||
npm run build
|
|
||||||
|
|
||||||
# Lancer en production
|
|
||||||
npm start
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🎨 Fonctionnalités
|
Le site sera accessible sur [http://localhost:3000](http://localhost:3000)
|
||||||
|
|
||||||
- ✨ Animations fluides avec Framer Motion
|
## 📝 Variables d'environnement
|
||||||
- 🎯 Design moderne orienté sécurité
|
|
||||||
- 📱 Responsive design
|
|
||||||
- ⚡ Performance optimisée
|
|
||||||
- 🔒 Thème sombre sécurisé
|
|
||||||
|
|
||||||
## 📄 Structure
|
Créez un fichier `.env.local` avec les variables suivantes :
|
||||||
|
|
||||||
```
|
```env
|
||||||
├── app/
|
SMTP_HOST=ssl0.ovh.net
|
||||||
│ ├── layout.tsx # Layout principal
|
SMTP_PORT=465
|
||||||
│ ├── page.tsx # Page d'accueil
|
SMTP_USER=votre-email@runlock.re
|
||||||
│ └── globals.css # Styles globaux
|
SMTP_PASSWORD=votre-mot-de-passe
|
||||||
├── components/
|
SMTP_FROM=noreply@runlock.re
|
||||||
│ ├── Header.tsx # Navigation
|
|
||||||
│ ├── Footer.tsx # Pied de page
|
|
||||||
│ └── sections/ # Sections de la page
|
|
||||||
│ ├── Hero.tsx
|
|
||||||
│ ├── Stats.tsx
|
|
||||||
│ ├── Services.tsx
|
|
||||||
│ ├── Encryption.tsx
|
|
||||||
│ ├── Timeline.tsx
|
|
||||||
│ ├── Pricing.tsx
|
|
||||||
│ ├── FAQ.tsx
|
|
||||||
│ └── Contact.tsx
|
|
||||||
└── ...
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🌐 Déploiement
|
## 🏗️ Scripts disponibles
|
||||||
|
|
||||||
Le site peut être déployé sur :
|
```bash
|
||||||
- Vercel (recommandé pour Next.js)
|
npm run dev # Lancer en mode développement
|
||||||
- Netlify
|
npm run build # Construire pour la production
|
||||||
- Tout hébergeur supportant Node.js
|
npm run start # Lancer en mode production
|
||||||
|
npm run lint # Vérifier le code
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📄 Pages disponibles
|
||||||
|
|
||||||
|
- `/` - Page d'accueil
|
||||||
|
- `/mentions-legales` - Mentions légales
|
||||||
|
- `/politique-confidentialite` - Politique de confidentialité
|
||||||
|
- `/rgpd` - Conformité RGPD
|
||||||
|
|
||||||
|
## 📧 Fonctionnalités
|
||||||
|
|
||||||
|
- Formulaire de contact avec envoi d'email via SMTP OVH
|
||||||
|
- Animations de fond sur toutes les sections
|
||||||
|
- Design responsive
|
||||||
|
- Optimisé pour le SEO
|
||||||
|
|
||||||
|
## 🚀 Déploiement
|
||||||
|
|
||||||
|
Consultez le fichier [DEPLOIEMENT.md](./DEPLOIEMENT.md) pour les instructions complètes de déploiement sur un serveur Debian 13.
|
||||||
|
|
||||||
|
## 📞 Contact
|
||||||
|
|
||||||
|
- Email : contact@runlock.re
|
||||||
|
- Téléphone : 0693 51 15 58
|
||||||
|
- Localisation : La Réunion (974)
|
||||||
|
|
||||||
|
## 📜 Licence
|
||||||
|
|
||||||
|
© 2025 Runlock.re - Tous droits réservés
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Réalisé par** [Httpdesign.fr](https://httpdesign.fr)
|
||||||
|
|||||||
330
SETUP_PM2.md
Normal file
330
SETUP_PM2.md
Normal file
@@ -0,0 +1,330 @@
|
|||||||
|
# Configuration PM2 pour Runlock.re
|
||||||
|
|
||||||
|
Ce guide explique comment configurer PM2 pour que votre application se relance automatiquement après un crash ou un redémarrage du serveur.
|
||||||
|
|
||||||
|
## 📋 Prérequis
|
||||||
|
|
||||||
|
- Node.js installé sur le serveur
|
||||||
|
- Application qui fonctionne avec `npm run dev`
|
||||||
|
- Accès SSH au serveur
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Étape 1 : Installer PM2 globalement
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo npm install -g pm2
|
||||||
|
```
|
||||||
|
|
||||||
|
Vérifier l'installation :
|
||||||
|
```bash
|
||||||
|
pm2 --version
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔨 Étape 2 : Builder l'application pour la production
|
||||||
|
|
||||||
|
D'abord, arrêtez votre application en cours (`Ctrl+C` si elle tourne avec `npm run dev`).
|
||||||
|
|
||||||
|
Puis build l'application :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Étape 3 : Configurer PM2 avec ecosystem.config.js
|
||||||
|
|
||||||
|
Le fichier `ecosystem.config.js` est déjà créé dans votre projet.
|
||||||
|
|
||||||
|
**Important** : Si vous êtes dans un environnement de production, assurez-vous que :
|
||||||
|
|
||||||
|
1. Le fichier `.env.local` existe avec vos variables d'environnement
|
||||||
|
2. Le port 3000 est disponible (ou changez-le dans `ecosystem.config.js`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ▶️ Étape 4 : Démarrer l'application avec PM2
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pm2 start ecosystem.config.js
|
||||||
|
```
|
||||||
|
|
||||||
|
Vous devriez voir quelque chose comme :
|
||||||
|
```
|
||||||
|
[PM2] Starting ecosystem.config.js
|
||||||
|
[PM2] Process launched
|
||||||
|
┌─────────┬────────┬─────────┬─────────┬─────────┐
|
||||||
|
│ App name│ id │ mode │ pid │ status │
|
||||||
|
├─────────┼────────┼─────────┼─────────┼─────────┤
|
||||||
|
│ runlock │ 0 │ cluster │ 12345 │ online │
|
||||||
|
└─────────┴────────┴─────────┴─────────┴─────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Étape 5 : Sauvegarder la configuration PM2
|
||||||
|
|
||||||
|
Pour que PM2 redémarre l'application au boot du serveur :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pm2 save
|
||||||
|
pm2 startup
|
||||||
|
```
|
||||||
|
|
||||||
|
La commande `pm2 startup` affichera une commande à exécuter avec `sudo`. Copiez et exécutez cette commande.
|
||||||
|
|
||||||
|
Exemple :
|
||||||
|
```bash
|
||||||
|
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u votre-utilisateur --hp /home/votre-utilisateur
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Étape 6 : Vérifier que tout fonctionne
|
||||||
|
|
||||||
|
### Vérifier le statut
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pm2 status
|
||||||
|
```
|
||||||
|
|
||||||
|
### Voir les logs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pm2 logs runlock
|
||||||
|
```
|
||||||
|
|
||||||
|
### Voir les logs en temps réel
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pm2 logs runlock --lines 50
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Commandes PM2 utiles
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Voir le statut
|
||||||
|
pm2 status
|
||||||
|
|
||||||
|
# Voir les logs
|
||||||
|
pm2 logs runlock
|
||||||
|
|
||||||
|
# Voir les 50 dernières lignes
|
||||||
|
pm2 logs runlock --lines 50
|
||||||
|
|
||||||
|
# Redémarrer l'application
|
||||||
|
pm2 restart runlock
|
||||||
|
|
||||||
|
# Arrêter l'application
|
||||||
|
pm2 stop runlock
|
||||||
|
|
||||||
|
# Supprimer l'application de PM2
|
||||||
|
pm2 delete runlock
|
||||||
|
|
||||||
|
# Monitoring en temps réel
|
||||||
|
pm2 monit
|
||||||
|
|
||||||
|
# Redémarrer toutes les applications
|
||||||
|
pm2 restart all
|
||||||
|
|
||||||
|
# Voir les informations détaillées
|
||||||
|
pm2 show runlock
|
||||||
|
|
||||||
|
# Vider les logs
|
||||||
|
pm2 flush
|
||||||
|
|
||||||
|
# Recharger sans downtime (recommandé pour les mises à jour)
|
||||||
|
pm2 reload runlock
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Mise à jour de l'application
|
||||||
|
|
||||||
|
Quand vous mettez à jour votre application :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Aller dans le dossier du projet
|
||||||
|
cd /chemin/vers/runlock-v2
|
||||||
|
|
||||||
|
# 2. Récupérer les dernières modifications (si Git)
|
||||||
|
git pull
|
||||||
|
|
||||||
|
# 3. Installer les nouvelles dépendances
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# 4. Rebuild l'application
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# 5. Recharger PM2 (reload = zéro downtime)
|
||||||
|
pm2 reload runlock
|
||||||
|
|
||||||
|
# Ou redémarrer complètement
|
||||||
|
pm2 restart runlock
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 Dépannage
|
||||||
|
|
||||||
|
### L'application ne démarre pas
|
||||||
|
|
||||||
|
1. Vérifiez les logs :
|
||||||
|
```bash
|
||||||
|
pm2 logs runlock --lines 100
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Vérifiez que le port 3000 est libre :
|
||||||
|
```bash
|
||||||
|
sudo netstat -tulpn | grep 3000
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Vérifiez que `.env.local` existe :
|
||||||
|
```bash
|
||||||
|
ls -la .env.local
|
||||||
|
```
|
||||||
|
|
||||||
|
### L'application ne redémarre pas au boot
|
||||||
|
|
||||||
|
1. Vérifiez que `pm2 startup` a été exécuté :
|
||||||
|
```bash
|
||||||
|
pm2 startup
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Vérifiez que PM2 est sauvegardé :
|
||||||
|
```bash
|
||||||
|
pm2 save
|
||||||
|
```
|
||||||
|
|
||||||
|
### L'application crash en boucle
|
||||||
|
|
||||||
|
1. Vérifiez les logs pour voir l'erreur :
|
||||||
|
```bash
|
||||||
|
pm2 logs runlock --err
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Vérifiez la mémoire disponible :
|
||||||
|
```bash
|
||||||
|
free -h
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Réduisez `max_memory_restart` dans `ecosystem.config.js` si nécessaire
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔐 Sécurité
|
||||||
|
|
||||||
|
### Changer le port (si nécessaire)
|
||||||
|
|
||||||
|
Si le port 3000 est déjà utilisé, modifiez `ecosystem.config.js` :
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
env: {
|
||||||
|
NODE_ENV: 'production',
|
||||||
|
PORT: 3001 // Changez le port ici
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis redémarrez :
|
||||||
|
```bash
|
||||||
|
pm2 restart runlock
|
||||||
|
```
|
||||||
|
|
||||||
|
### Limiter les logs
|
||||||
|
|
||||||
|
Pour éviter que les logs prennent trop de place :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pm2 install pm2-logrotate
|
||||||
|
pm2 set pm2-logrotate:max_size 10M
|
||||||
|
pm2 set pm2-logrotate:retain 7
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Monitoring
|
||||||
|
|
||||||
|
### Dashboard PM2 Plus (optionnel)
|
||||||
|
|
||||||
|
PM2 offre un dashboard en ligne gratuit :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pm2 link [secret_key] [public_key]
|
||||||
|
```
|
||||||
|
|
||||||
|
Les clés sont disponibles sur [pm2.io](https://pm2.io)
|
||||||
|
|
||||||
|
### Monitoring local
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pm2 monit
|
||||||
|
```
|
||||||
|
|
||||||
|
Cette commande affiche :
|
||||||
|
- Utilisation CPU
|
||||||
|
- Utilisation mémoire
|
||||||
|
- Logs en temps réel
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Test final
|
||||||
|
|
||||||
|
Pour tester que tout fonctionne :
|
||||||
|
|
||||||
|
1. **Test de redémarrage manuel** :
|
||||||
|
```bash
|
||||||
|
pm2 restart runlock
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Test de crash** :
|
||||||
|
```bash
|
||||||
|
# Tuer le processus manuellement (ne faites pas ça en production !)
|
||||||
|
pm2 delete runlock
|
||||||
|
pm2 start ecosystem.config.js
|
||||||
|
# PM2 devrait le relancer automatiquement
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Test au boot** :
|
||||||
|
```bash
|
||||||
|
# Redémarrer le serveur
|
||||||
|
sudo reboot
|
||||||
|
# Après le redémarrage, vérifiez
|
||||||
|
pm2 status
|
||||||
|
# L'application devrait être "online"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Résumé rapide
|
||||||
|
|
||||||
|
Pour démarrer rapidement :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Installer PM2
|
||||||
|
sudo npm install -g pm2
|
||||||
|
|
||||||
|
# 2. Builder l'app
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# 3. Démarrer avec PM2
|
||||||
|
pm2 start ecosystem.config.js
|
||||||
|
|
||||||
|
# 4. Sauvegarder pour le boot
|
||||||
|
pm2 save
|
||||||
|
pm2 startup
|
||||||
|
# (Suivez les instructions affichées)
|
||||||
|
|
||||||
|
# 5. Vérifier
|
||||||
|
pm2 status
|
||||||
|
pm2 logs runlock
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Dernière mise à jour** : 2025
|
||||||
|
|
||||||
24
ecosystem.config.js
Normal file
24
ecosystem.config.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
module.exports = {
|
||||||
|
apps: [{
|
||||||
|
name: 'runlock',
|
||||||
|
script: 'npm',
|
||||||
|
args: 'start',
|
||||||
|
instances: 1,
|
||||||
|
autorestart: true,
|
||||||
|
watch: false,
|
||||||
|
max_memory_restart: '1G',
|
||||||
|
env: {
|
||||||
|
NODE_ENV: 'production',
|
||||||
|
PORT: 3000
|
||||||
|
},
|
||||||
|
error_file: './logs/pm2-error.log',
|
||||||
|
out_file: './logs/pm2-out.log',
|
||||||
|
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
|
||||||
|
merge_logs: true,
|
||||||
|
// Redémarrer automatiquement après un crash
|
||||||
|
min_uptime: '10s',
|
||||||
|
max_restarts: 10,
|
||||||
|
restart_delay: 4000
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
1416
package-lock.json
generated
1416
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -18,6 +18,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.10.5",
|
"@types/node": "^20.10.5",
|
||||||
|
"@types/nodemailer": "^7.0.4",
|
||||||
"@types/react": "^18.2.45",
|
"@types/react": "^18.2.45",
|
||||||
"@types/react-dom": "^18.2.18",
|
"@types/react-dom": "^18.2.18",
|
||||||
"autoprefixer": "^10.4.16",
|
"autoprefixer": "^10.4.16",
|
||||||
|
|||||||
Reference in New Issue
Block a user