Do not speak Portuguese? Translate this site with Google or Bing Translator
Jenkins com segurança com Nginx e SSL com Letsencrypt

Posted on: February 15, 2023 04:53 PM

Posted by: Renato

Views: 666

Implantação com um clique: hospede Jenkins com segurança com Nginx e SSL com Letsencrypt usando o Docker Compose

Você deseja implantar uma instância segura do Jenkins com um proxy e suporte a SSL? Não procure mais! Neste tutorial, iremos guiá-lo através do processo de configuração do Jenkins com proxy Nginx e SSL usando Letsencrypt e Docker Compose. Seja você um desenvolvedor que deseja automatizar seu pipeline de CI/CD ou um administrador de sistema que deseja gerenciar sua infraestrutura, este tutorial o ajudará. Com apenas algumas etapas simples, você estará pronto para usar uma instância Jenkins totalmente funcional em pouco tempo. Então vamos começar!

Por que você precisa colocar Jenkins atrás de um proxy reverso Nginx

Existem várias razões pelas quais você pode querer colocar Jenkins atrás de um proxy reverso Nginx. Um dos principais motivos é melhorar a segurança da sua instância do Jenkins. Ao colocar o Jenkins atrás de um proxy Nginx, você pode adicionar uma camada extra de proteção ao seu servidor Jenkins. O Nginx pode ser configurado para bloquear certos tipos de tráfego, como solicitações maliciosas ou métodos HTTP vulneráveis, o que pode ajudar a evitar ataques à sua instância do Jenkins. Além disso, usar um proxy reverso Nginx permite configurar facilmente o SSL para sua instância Jenkins, o que é essencial para criptografar o tráfego entre o servidor Jenkins e os clientes. Isso pode ajudar a proteger dados confidenciais, como senhas e chaves de API, de serem interceptados por terceiros. Geral,

Pré-requisitos :

  • Docker e Docker Compose instalados em sua máquina
  • Um nome de domínio apontado para o endereço IP do servidor

Etapa 1: criar um diretório para o proxy Jenkins e Nginx

Vamos criar um diretório para nossos arquivos proxy Jenkins e Nginx:

mkdir jenkins-nginx 
cd jenkins-nginx

Etapa 2: criar um arquivo do Docker Compose

Em seguida, vamos criar um arquivo Docker Compose para definir os containers Jenkins e Nginx:

nano docker-compose .yml

Cole o seguinte conteúdo no arquivo:

versão:  '3.7' 

serviços: 
  jenkins: 
    imagem:  jenkins/jenkins:lts 
    container_name:  jenkins 
    restart:  sempre 
    volumes: 
      -  jenkins_data:/var/jenkins_home 
      -  /var/run/docker.sock:/var/run/docker.sock 
    ambiente : 
      -  VIRTUAL_HOST=${VIRTUAL_HOST} 
      -  LETSENCRYPT_HOST=${LETSENCRYPT_HOST} 
      -  LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL} 
      -  VIRTUAL_PORT=8080 
    redes: 
      -  jenkins 
  nginx-proxy: 
    image:  jwilder/nginx-proxy 
    container_name:  nginx-proxy 
    restart:  sempre
    portas: 
      -  "80:80" 
      -  "443:443" 
    volumes: 
      -  conf:/etc/nginx/conf.d 
      -  vhost:/etc/nginx/vhost.d 
      -  html:/usr/share/nginx/html 
      -  cert:/etc/nginx/certs 
      -  /var/run/docker.sock:/tmp/docker.sock:ro 
    redes: 
      -  jenkins 
  acme-companion: 
    image:  jrcs/letsencrypt-nginx-proxy-companion 
    container_name:  acme-companion 
    reiniciar:  sempre 
    ambiente: 
      -  NGINX_PROXY_CONTAINER=nginx-proxy 
      -  NGINX_DOCKER_GEN_CONTAINER=nginx-proxy 
      -  NGINX_DOCKER_GEN_NETWORK=jenkins_default
    volumes: 
      -  conf:/etc/nginx/conf.d 
      -  vhost:/etc/nginx/vhost.d 
      -  html:/usr/share/nginx/html 
      -  cert:/etc/nginx/certs 
      -  /var/run/ docker.sock:/var/run/docker.sock 
    depende: 
      -  redes nginx-proxy : - volumes jenkins : jenkins_data: conf: vhost: html: cert: redes: jenkins: driver: ponte
    
       


  
  
  
  
  


  
     

No arquivo Docker Compose acima, definimos três serviços:

  • Jenkins : Este é o contêiner Jenkins que executará o servidor Jenkins.
  • Proxy Nginx : Este é o contêiner do proxy Nginx que atuará como um proxy reverso para o Jenkins.
  • Letsencrypt-nginx-proxy-companion : Este é um contêiner que ajuda a gerar e renovar certificados SSL para nosso domínio usando Letsencrypt.

Também definimos alguns volumes e redes que serão utilizados pelos containers.

Etapa 3: criar um arquivo .env

Em seguida, vamos criar um arquivo .env para armazenar nossas variáveis ​​de ambiente:

nano . ambiente

Cole o seguinte conteúdo no arquivo, substituindo your-domain.compelo seu nome de domínio real:

VIRTUAL_HOST =seu-dominio.com 
LETSENCRYPT_HOST =seu-dominio.com 
LETSENCRYPT_EMAIL [email protected]

Etapa 4: iniciar os contêineres

Agora, podemos iniciar os contêineres Jenkins, proxy Nginx e Letsencrypt usando o seguinte comando:

docker-compose up -d

Isso puxará as imagens necessárias e iniciará os contêineres em segundo plano. Você pode verificar o status dos contêineres usando o seguinte comando:

docker-compose ps

Etapa 5: conclua a configuração do Jenkins

Depois que o contêiner Jenkins estiver funcionando, você poderá concluir a configuração abrindo seu nome de domínio em um navegador da web. Você verá o assistente de configuração do Jenkins, que o guiará pelo restante do processo de configuração.

Obtenha a senha do administrador do Jenkins:

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

Conclusão:

Neste tutorial, mostramos como implantar Jenkins facilmente com proxy Nginx e SSL pronto com Letsencrypt usando docker-compose. Essa configuração permite que você acesse Jenkins facilmente usando seu nome de domínio e garante que todo o tráfego seja criptografado usando SSL. Espero que você tenha achado este tutorial útil e que tenha conseguido configurar o Jenkins com sucesso em seu servidor.

Github: https://github.com/lucenarenato/one-click-jenkins-deployment

Fonte: https://itnext.io/one-click-deployment-securely-host-jenkins-with-nginx-and-ssl-with-letsencrypt-using-docker-1303b06c3369

 


4

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email