Linuxda docker yordamida letsencrypt sertifikatlarini avtomatik qabul qilishni sozlash

Men yaqinda virtual serverni o'zgartirdim va hamma narsani qayta sozlashim kerak edi. Men saytga https orqali kirishni va letsencrypt sertifikatlarini avtomatik ravishda olish va yangilashni afzal ko'raman. Bunga nginx-proxy va nginx-proxy-companion ikkita docker tasviridan foydalanish orqali erishish mumkin.

Bu SSL sertifikatlarini avtomatik ravishda qabul qiluvchi proksi-server bilan Docker-da veb-saytni qanday o'rnatish bo'yicha qo'llanma. CentOS 7 virtual serveridan foydalaniladi.

Menimcha, server allaqachon sotib olingan, sozlangan, kalit yordamida tizimga kirgan, fail2ban o'rnatilgan va hokazo.

Avval siz docker-ni o'rnatishingiz kerak.

  1. Avval siz bog'liqliklarni o'rnatishingiz kerak
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Repozitoriyni ulash
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Keyin docker hamjamiyat nashrini o'rnating
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Ishga tushirish va ishga tushirish uchun docker qo'shing
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Docker-ni sudosiz ishga tushirish uchun foydalanuvchini docker guruhiga qo'shing
    $ usermod -aG docker user

Keyingi qadam docker-compose dasturini o'rnatishdir. Yordamchi dastur bir necha usul bilan o'rnatilishi mumkin, lekin tizimni keraksiz paketlar bilan to'ldirmaslik uchun men pip menejeri va virtualenv orqali o'rnatishni afzal ko'raman.

  1. Pipni o'rnating
    $ sudo yum install python-pip
  2. virtualenv ni o'rnating
    $ pip install virtualenv
  3. Keyin loyiha bilan papka yaratishingiz va uni ishga tushirishingiz kerak. Paketlarni boshqarish uchun kerak bo'lgan barcha narsalar joylashgan papka ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Virtual muhitdan foydalanishni boshlash uchun loyiha papkasida quyidagi buyruqni bajarish kerak.
    $ source ve/bin/activate
  5. Siz docker-compose ni o'rnatishingiz mumkin.
    pip install docker-compose

    Konteynerlar bir-birini ko'rishi uchun biz tarmoq yaratamiz. Odatiy bo'lib, ko'prik drayveri ishlatiladi.

    $ docker network create network

    Keyinchalik siz docker-compose-ni sozlashingiz kerak, proksi-server proksi-server papkasida, test sayti test papkasida bo'ladi. Misol uchun, men example.com domen nomidan foydalanmoqdaman

    $ mkdir proxy
    $ mkdir test
    $ touch proxy/docker-compose.yml
    $ touch test/docker-compose.yml

    Tarkib proxy/docker-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
      nginx-proxy:
        container_name: nginx-proxy
        image: jwilder/nginx-proxy
        ports:
          - 80:80
          - 443:443
        volumes:
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/tmp/docker.sock:ro
    
      nginx-proxy-letsencrypt:
        container_name: nginx-proxy-letsencrypt
        image: jrcs/letsencrypt-nginx-proxy-companion
        volumes: 
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
          - NGINX_PROXY_CONTAINER=nginx-proxy
    
    volumes:
      certs:
      vhost.d:
      html:

    Atrof-muhit o'zgaruvchanligi NGINX_PROXY_CONTAINER letsencrypt konteyneri proksi-konteynerni ko'rishi uchun zarur. /etc/nginx/certs /etc/nginx/vhost.d va /usr/share/nginx/html papkalari ikkala konteyner tomonidan birgalikda bo'lishi kerak. Letsencrypt konteynerining to'g'ri ishlashi uchun ilova 80 va 443 portlarida mavjud bo'lishi kerak.

    Tarkib test/docker-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
    
      nginx:
        container_name: nginx
        image: nginx:latest
        environment:
          - VIRTUAL_HOST=example.com
          - LETSENCRYPT_HOST=example.com
          - [email protected]

    Bu erda proksi-server serverga so'rovni to'g'ri qayta ishlashi va to'g'ri domen nomi uchun sertifikat so'rashi uchun muhit o'zgaruvchilari kerak.

    Faqat docker-compose-ni ishga tushirish qoladi

    $ cd proxy
    $ docker-compose up -d
    $ cd ../test
    $ docker-compose up -d

Manba: www.habr.com

a Izoh qo'shish