# Déploiement Jenkins

# Résumé du déploiement Jenkins

## Architecture globale

**Service** : Jenkins LTS  
**Conteneurisation** : Podman  
**Reverse Proxy** : Nginx  
**Domaine** : jenkins.sanjy.fr  
**Certificat SSL** : Let's Encrypt (avec renouvellement automatique via Certbot)

---

## Couche conteneur (Podman)
```bash
podman run -d \
  --name jenkins \
  -p 127.0.0.1:8080:8080 \      # Interface web Jenkins (localhost uniquement)
  -p 127.0.0.1:50000:50000 \    # Port agents Jenkins (localhost uniquement)
  -v jenkins_home:/var/jenkins_home \  # Persistance des données
  docker.io/jenkins/jenkins:lts
```

**Points clés** :
- Exposition locale uniquement (`127.0.0.1`) → pas de binding direct sur l'IP publique
- Volume nommé `jenkins_home` pour la persistance
- Ports 8080 (UI) et 50000 (agents) disponibles en local

---

## Couche reverse proxy (Nginx)

### Flux HTTP (port 80)
- **Redirection automatique** : HTTP → HTTPS (301 permanent)
- Compatible IPv4 et IPv6

### Flux HTTPS (port 443)
- **SSL/TLS** : TLSv1.2 et TLSv1.3 avec chiffrements forts
- **Certificat** : `/etc/letsencrypt/live/sanjy.fr/` (wildcard ou multi-domaine)
- **HSTS** : Force HTTPS pendant 1 an

### Configuration proxy
| Fonctionnalité | Configuration |
|----------------|---------------|
| **Proxy pass** | `http://localhost:8080` |
| **Headers** | Host, X-Real-IP, X-Forwarded-For/Proto |
| **WebSocket** | Upgrade + Connection headers (pour logs temps réel) |
| **Buffering** | Désactivé (meilleure réactivité) |
| **Timeouts** | 90s (connect/send/read) |

---

## Flux de requêtes
```
Internet → nginx:443 (HTTPS) → localhost:8080 (HTTP) → Container Jenkins
```

**Sécurité** :
- Jenkins accessible depuis Internet via jenkins.sanjy.fr
- Le conteneur n'écoute que sur localhost (pas exposé directement sur l'IP publique)
- Nginx gère la terminaison SSL/TLS et les headers de sécurité
- Communication locale non chiffrée entre Nginx et Jenkins (acceptable car localhost)

---

## Points notables

✅ **Support WebSocket** : Logs Jenkins en temps réel  
✅ **HTTP/2** : Performance optimisée  
✅ **HSTS** : Protection contre downgrade SSL  
✅ **Buffering désactivé** : Streaming des gros fichiers/logs  
✅ **Certificat managé** : Renouvellement automatique Certbot