# 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/)