Skip to main content

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)

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) → sécurité par défaut
  • 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 n'est jamais exposé directement sur Internet
  • Nginx gère SSL/TLS et les headers de sécurité
  • Isolation réseau via 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