4.9 KiB
4.9 KiB
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 principaleletsencrypt-setup.sh: Script pour migrer vers Let's EncryptREADME.md: Cette documentation4nk-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 :
# 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 :
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
# 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
# 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
# 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
# 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
# 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 :
# 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 anX-Frame-Options: DENY: Empêche le clickjackingX-Content-Type-Options: nosniff: Empêche le MIME sniffingX-XSS-Protection: Protection XSSReferrer-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
- DNS requis : Les certificats Let's Encrypt nécessitent que le domaine pointe vers ce serveur
- Ports ouverts : Assurez-vous que les ports 80 et 443 sont ouverts
- Sauvegarde : La configuration actuelle est sauvegardée avant migration
- Renouvellement : Les certificats Let's Encrypt expirent tous les 90 jours