GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer Jenkins avec SSL derrière Nginx sur Ubuntu 20.04

Jenkins est un outil d'automatisation d'outils open source permettant de configurer l'ensemble du pipeline de livraison de logiciels - livraison continue. Cela permet aux développeurs de gérer et de contrôler les processus de livraison de logiciels tout au long du cycle de vie, de manière à créer, tester et déployer leurs logiciels de manière fiable.

Jenkins a une communauté extensible, dynamique et active. Il est écrit en Java. Généralement, Jenkins s'exécute comme une application de servlet Java intégrée autonome. Il est également possible de s'exécuter dans des conteneurs de servlets Java tels que Apache Tomcat ou GlassFish.

Dans ce tutoriel, nous apprenons à configurer Jenkins avec SSL derrière Nginx sur Ubuntu 20.04 .

Prérequis

  • Un serveur Ubuntu 20.04
  • Un utilisateur avec des privilèges sudo
  • Minimum de 1 Go de RAM
  • Oracle JDK 11 ou supérieur installé.

Étape 1 :Installez Jenkins sur Ubuntu

Le package Jenkins disponible dans le référentiel Ubuntu par défaut est probablement derrière la dernière version. Il est recommandé d'installer Jenkin à partir du package de maintenance prévu qui est disponible dans le référentiel officiel.

Nous allons d'abord ajouter la clé du référentiel au système.

$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

Lors de la rédaction de ce guide, la procédure installera la version 2.303.3 de Jenkins

Ensuite, ajoutons le référentiel de packages au sources.list fichier :

$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

Nous devrions mettre à jour le cache du dépôt

$ sudo apt update

Vous pouvez maintenant installer Jenkins :

$ sudo apt install jenkins

Ensuite, démarrez le service

$ sudo systemctl start jenkins

Configurons le service pour qu'il démarre automatiquement avec le serveur

$ sudo systemctl enable jenkins

Vous pouvez vérifier l'état du service

$ sudo systemctl status jenkins

Vous pouvez vérifier la version en consultant le fichier /var/lib/jenkins/config.xml

$ cat /var/lib/jenkins/config.xml
<?xml version='1.1' encoding='UTF-8'?> 
<hudson>   
      <disabledAdministrativeMonitors/>   
      <version>2.303.3</version>
...
...
</hudson>

Étape 2 :Configurer Nginx avec un certificat SSL

Maintenant que nous allons utiliser Nginx pour proxy la communication, nous devrons d'abord l'installer

$ sudo apt install nginx

Vous devez maintenant copier le certificat dans le dossier à utiliser. Nous considérerons que vous avez déjà votre certificat SSL.

Nous copierons le certificat

$ sudo cp jenkins.domain.com.crt /etc/nginx/certs/jenkins.domain.com.crt

Copiez ensuite les clés

$ sudo cp jenkins.domain.com.key /etc/nginx/certs/jenkins.domain.com.key

Pour éviter tout conflit avec la configuration par défaut de Nginx, nous supprimerons la configuration par défaut du sites-enabled répertoire

sudo rm /etc/nginx/sites-enabled/default

Créons maintenant le fichier de configuration de Jenkins. Jenkins utilise normalement le port 8080 pour fonctionner mais comme nous utilisons Nginx, il écoutera sur les ports 80 et 443, puis avec les informations du nom de domaine, il proxyera la communication en interne sur le port 8080 pour Jenkins.

La configuration que nous allons définir forcera automatiquement toutes les requêtes HTTP vers HTTPS

$ sudo vim /etc/nginx/sites-available/jenkins.conf
upstream jenkins.domain.com {
       server SERVER_IP:8080;
}
server {
        server_name jenkins.domain.com;
        listen 80 ;
        access_log /var/log/nginx/jenkins.log;
        return 301 https://$host$request_uri;
}
server {
        server_name jenkins.domain.com;
        listen 443 ssl http2 ;
        access_log /var/log/nginx/jenkins.log;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/jenkins.domain.com.crt;
        ssl_certificate_key /etc/nginx/certs/jenkins.domain.com.key;
        add_header Strict-Transport-Security "max-age=31536000";
        location / {
                proxy_pass http://jenkins.domain.com;
        }
}

En plus de la configuration Jenkins Nginx, nous avons ajouté certains des dérivés nginx requis. Vous pouvez utiliser et optimiser en fonction des exigences de votre serveur Web.

Créez maintenant une symbolique du fichier de configuration pour l'activer

$ sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins.conf

Démarrez maintenant le service Nginx

$ sudo systemctl start nginx

Puis activez-le au démarrage

$ sudo systemctl enable nginx

Vous pouvez maintenant tester votre configuration Nginx

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez maintenant le service Nginx pour prendre en compte la configuration

$ sudo systemctl restart nginx

Ouvrez maintenant les ports 80 et 443 sur le pare-feu :

$ sudo ufw allow 80,443/tcp

Assurez-vous également d'ouvrir le port ssh avant d'activer UFW, sinon vous risquez de perdre votre connexion ssh en cas de problème

$ sudo ufw allow 'OpenSSH'

Activez maintenant UFW si ce n'est pas encore fait

$ sudo ufw enable

Étape 3 :Accédez à Jenkins et configurez-le

Ouvrez maintenant votre navigateur avec l'URL http://jenkins.domain.com et vous verrez alors la page de Jenkins vous demandant un mot de passe

Pour avoir le mot de passe, vous devez afficher le contenu du fichier qui est indiqué

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
88ba484d8cff4150a90683a07c89ea7c

Collez ensuite le mot de passe et passez à la page suivante. Vous aurez maintenant la page demandant d'installer les plugins par défaut ou de sélectionner ceux à installer. Dans notre cas, nous laisserons ceux par défaut

Ensuite, vous verrez le processus d'installation

Vous devez maintenant créer l'utilisateur administrateur.

Validez maintenant l'URL de Jenkins.

Vous pouvez maintenant commencer à utiliser votre Jenkins

Conclusion

Dans ce tutoriel, nous avons appris à configurer Jenkins avec SSL derrière Nginx sur Ubuntu 20.04. Vous pouvez commencer à configurer les tâches et les pipelines de votre processus CI/CD.


Ubuntu
  1. Comment installer Jenkins sur Ubuntu 18.04

  2. Comment configurer l'origine Cloudflare SSL avec Nginx

  3. Comment installer Elgg avec Nginx sur Ubuntu 14.04

  4. Comment installer Joomla avec Nginx sur Ubuntu 18.04

  5. Comment installer Elasticsearch sur Ubuntu 22.04 avec SSL

Comment installer WordPress avec Nginx sur Ubuntu

Comment installer SuiteCRM sur Ubuntu 20.04 avec Apache/Nginx

Comment installer MediaWiki sur Ubuntu 20.04 avec Apache/Nginx

Comment configurer Nginx avec SSL

Comment installer Nginx avec Let's Encrypt SSL sur Ubuntu 20.04 LTS

Comment installer Nginx sur Ubuntu 22.04