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
|
||||
.env*.local
|
||||
.env
|
||||
|
||||
# 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
|
||||
- **TypeScript** - Typage statique
|
||||
- **Tailwind CSS** - Styling
|
||||
- **Framer Motion** - Animations
|
||||
- **Nodemailer** - Envoi d'emails
|
||||
- **Lucide React** - Icônes
|
||||
|
||||
## 📦 Installation
|
||||
## 📋 Prérequis
|
||||
|
||||
- Node.js 18+
|
||||
- npm ou yarn
|
||||
- Git
|
||||
|
||||
## 🛠️ Installation locale
|
||||
|
||||
```bash
|
||||
# Cloner le dépôt
|
||||
git clone https://github.com/VOTRE_USERNAME/runlock-v2.git
|
||||
cd runlock-v2
|
||||
|
||||
# Installer les dépendances
|
||||
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
|
||||
|
||||
# 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
|
||||
- 🎯 Design moderne orienté sécurité
|
||||
- 📱 Responsive design
|
||||
- ⚡ Performance optimisée
|
||||
- 🔒 Thème sombre sécurisé
|
||||
## 📝 Variables d'environnement
|
||||
|
||||
## 📄 Structure
|
||||
Créez un fichier `.env.local` avec les variables suivantes :
|
||||
|
||||
```
|
||||
├── app/
|
||||
│ ├── layout.tsx # Layout principal
|
||||
│ ├── page.tsx # Page d'accueil
|
||||
│ └── globals.css # Styles globaux
|
||||
├── components/
|
||||
│ ├── 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
|
||||
└── ...
|
||||
```env
|
||||
SMTP_HOST=ssl0.ovh.net
|
||||
SMTP_PORT=465
|
||||
SMTP_USER=votre-email@runlock.re
|
||||
SMTP_PASSWORD=votre-mot-de-passe
|
||||
SMTP_FROM=noreply@runlock.re
|
||||
```
|
||||
|
||||
## 🌐 Déploiement
|
||||
## 🏗️ Scripts disponibles
|
||||
|
||||
Le site peut être déployé sur :
|
||||
- Vercel (recommandé pour Next.js)
|
||||
- Netlify
|
||||
- Tout hébergeur supportant Node.js
|
||||
```bash
|
||||
npm run dev # Lancer en mode développement
|
||||
npm run build # Construire pour la production
|
||||
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": {
|
||||
"@types/node": "^20.10.5",
|
||||
"@types/nodemailer": "^7.0.4",
|
||||
"@types/react": "^18.2.45",
|
||||
"@types/react-dom": "^18.2.18",
|
||||
"autoprefixer": "^10.4.16",
|
||||
|
||||
Reference in New Issue
Block a user