website/conf/README.md
2025-09-29 08:24:59 +00:00

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 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 :

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