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

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