180 lines
4.9 KiB
Markdown
180 lines
4.9 KiB
Markdown
# Configuration nginx pour 4nk.network
|
|
|
|
## Configuration actuelle
|
|
|
|
Le site 4nk.network est configuré avec nginx pour servir le site statique avec les fonctionnalités suivantes :
|
|
|
|
### ✅ Fonctionnalités implémentées
|
|
|
|
- **Redirection HTTP → HTTPS** : Toutes les requêtes HTTP sont automatiquement redirigées vers HTTPS
|
|
- **Certificats SSL** : Certificats auto-signés temporaires (en attente de configuration DNS)
|
|
- **Headers de sécurité** : HSTS, X-Frame-Options, X-Content-Type-Options, etc.
|
|
- **HTTP/2** : Support du protocole HTTP/2 pour de meilleures performances
|
|
- **Cache optimisé** : Cache des fichiers statiques (CSS, JS, images) pour 1 an
|
|
- **Logs** : Logs d'accès et d'erreur spécifiques au domaine
|
|
- **Proxy /contact** : Requêtes POST du formulaire vers le backend local `127.0.0.1:3001`
|
|
|
|
### 📁 Fichiers de configuration
|
|
|
|
- `4nk.network.conf` : Configuration nginx principale
|
|
- `letsencrypt-setup.sh` : Script pour migrer vers Let's Encrypt
|
|
- `README.md` : Cette documentation
|
|
- `4nk-mailer.service.example` : Exemple d'unité systemd pour le backend mailer
|
|
|
|
## 🚀 Prochaines étapes
|
|
|
|
### 1. Configuration DNS
|
|
|
|
Pour activer les certificats Let's Encrypt, vous devez configurer le DNS :
|
|
|
|
```bash
|
|
# Enregistrements DNS requis
|
|
4nk.network. A [IP_DU_SERVEUR]
|
|
www.4nk.network. A [IP_DU_SERVEUR]
|
|
```
|
|
|
|
### 2. Migration vers Let's Encrypt
|
|
|
|
Une fois le DNS configuré, exécutez le script de migration :
|
|
|
|
```bash
|
|
sudo /home/debian/website/conf/letsencrypt-setup.sh
|
|
```
|
|
|
|
Ce script va :
|
|
- Vérifier que le DNS pointe vers ce serveur
|
|
- Générer les certificats Let's Encrypt
|
|
- Mettre à jour la configuration nginx
|
|
- Configurer le renouvellement automatique
|
|
|
|
### 3. Test de la configuration
|
|
|
|
```bash
|
|
# Test de la redirection HTTP → HTTPS
|
|
curl -I http://4nk.network
|
|
|
|
# Test de l'accès HTTPS
|
|
curl -I https://4nk.network
|
|
|
|
# Test du proxy /contact (attend 400 si champs manquants)
|
|
curl -i -X POST https://4nk.network/contact -H 'content-type: application/json' -d '{"name":"","email":"","message":""}'
|
|
|
|
# Test des headers de sécurité
|
|
curl -I https://4nk.network | grep -E "(Strict-Transport-Security|X-Frame-Options)"
|
|
```
|
|
|
|
## 🔧 Gestion de la configuration
|
|
|
|
### Redémarrage de nginx
|
|
|
|
```bash
|
|
# Test de la configuration
|
|
sudo nginx -t
|
|
|
|
# Rechargement de la configuration
|
|
sudo systemctl reload nginx
|
|
|
|
# Redémarrage complet
|
|
sudo systemctl restart nginx
|
|
```
|
|
|
|
### Vérification des certificats
|
|
|
|
```bash
|
|
# Certificats auto-signés actuels
|
|
sudo openssl x509 -in /etc/ssl/4nk.network/fullchain.pem -text -noout
|
|
|
|
# Certificats Let's Encrypt (après migration)
|
|
sudo certbot certificates
|
|
```
|
|
|
|
### Logs
|
|
|
|
```bash
|
|
# Logs d'accès
|
|
sudo tail -f /var/log/nginx/4nk.network.access.log
|
|
|
|
# Logs d'erreur
|
|
sudo tail -f /var/log/nginx/4nk.network.error.log
|
|
|
|
## Backend mailer (Express + Nodemailer)
|
|
|
|
- Service HTTP local: `http://127.0.0.1:3001`
|
|
- Endpoints: `POST /contact`, `GET /health`
|
|
- Code: `/home/debian/website/server/index.js`
|
|
|
|
### Variables d'environnement supportées
|
|
|
|
- `SERVER_PORT` (defaut: 3001)
|
|
- `SMTP_HOST` (defaut: 127.0.0.1)
|
|
- `SMTP_PORT` (defaut: 25)
|
|
- `SMTP_SECURE` (defaut: false)
|
|
- `SMTP_TLS_REJECT_UNAUTHORIZED` (defaut: false)
|
|
- `SMTP_FROM` (defaut: no-reply@4nk.network)
|
|
- `SMTP_TO` (defaut: nicolas.cantu@4nk.network)
|
|
|
|
Vous pouvez utiliser un fichier d'environnement chargé par systemd via `EnvironmentFile`.
|
|
|
|
### Exemple d'unité systemd
|
|
|
|
Voir `conf/4nk-mailer.service.example` et adaptez le chemin de `EnvironmentFile` si besoin.
|
|
```
|
|
|
|
## 📊 Monitoring
|
|
|
|
### Vérification du statut
|
|
|
|
```bash
|
|
# Statut nginx
|
|
sudo systemctl status nginx
|
|
|
|
# Test de connectivité
|
|
curl -I https://4nk.network
|
|
|
|
# Vérification SSL
|
|
openssl s_client -connect 4nk.network:443 -servername 4nk.network
|
|
```
|
|
|
|
### Renouvellement des certificats
|
|
|
|
Les certificats Let's Encrypt sont automatiquement renouvelés via cron :
|
|
|
|
```bash
|
|
# Vérifier la tâche cron
|
|
crontab -l | grep certbot
|
|
|
|
# Renouvellement manuel
|
|
sudo certbot renew --dry-run
|
|
```
|
|
|
|
## 🛡️ Sécurité
|
|
|
|
### Headers de sécurité configurés
|
|
|
|
- `Strict-Transport-Security` : Force HTTPS pendant 1 an
|
|
- `X-Frame-Options: DENY` : Empêche le clickjacking
|
|
- `X-Content-Type-Options: nosniff` : Empêche le MIME sniffing
|
|
- `X-XSS-Protection` : Protection XSS
|
|
- `Referrer-Policy` : Contrôle des référents
|
|
|
|
### Configuration SSL
|
|
|
|
- Protocoles : TLSv1.2 et TLSv1.3
|
|
- Ciphers modernes et sécurisés
|
|
- Session cache optimisé
|
|
- Prefer server ciphers désactivé
|
|
|
|
## 📝 Notes importantes
|
|
|
|
1. **DNS requis** : Les certificats Let's Encrypt nécessitent que le domaine pointe vers ce serveur
|
|
2. **Ports ouverts** : Assurez-vous que les ports 80 et 443 sont ouverts
|
|
3. **Sauvegarde** : La configuration actuelle est sauvegardée avant migration
|
|
4. **Renouvellement** : Les certificats Let's Encrypt expirent tous les 90 jours
|
|
|
|
## 🔗 Liens utiles
|
|
|
|
- [Documentation nginx](https://nginx.org/en/docs/)
|
|
- [Let's Encrypt](https://letsencrypt.org/)
|
|
- [Certbot](https://certbot.eff.org/)
|
|
- [SSL Labs Test](https://www.ssllabs.com/ssltest/)
|