Танзими гирифтани автоматии сертификатҳои letsencrypt бо истифода аз docker дар Linux

Ман ба наздикӣ сервери виртуалиро иваз кардам ва маҷбур шудам, ки ҳама чизро аз нав танзим кунам. Ман бартарӣ медиҳам, ки сайт тавассути https дастрас бошад ва сертификатҳои letsencrypt ба таври худкор гирифта ва нав карда шаванд. Инро бо истифода аз ду тасвири докер nginx-proxy ва nginx-proxy-companion ба даст овардан мумкин аст.

Ин дастур оид ба чӣ гуна сохтани вебсайт дар Docker бо прокси, ки ба таври худкор сертификатҳои SSL мегирад, мебошад. Сервери виртуалии CentOS 7 истифода мешавад.

Ман гумон мекунам, ки сервер аллакай харида шудааст, танзим шудааст, бо истифода аз калид ворид шудааст, fail2ban насб шудааст ва ғайра.

Аввал шумо бояд docker насб кунед.

  1. Аввал шумо бояд вобастагиҳоро насб кунед
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Репозиторийро пайваст кунед
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Сипас нашри ҷомеаи docker насб кунед
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Барои оғозёбӣ ва иҷро кардани docker илова кунед
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Ба гурӯҳи докер корбар илова кунед, то тавонанд докерро бидуни sudo идора кунад
    $ usermod -aG docker user

Қадами навбатӣ насб кардани docker-compose аст. Утилитаро бо якчанд роҳ насб кардан мумкин аст, аммо ман бартарӣ медиҳам, ки тавассути менеҷери pip ва virtualenv насб кунам, то системаро бо бастаҳои нолозим парешон накунам.

  1. Пипро насб кунед
    $ sudo yum install python-pip
  2. Virtualenv насб кунед
    $ pip install virtualenv
  3. Минбаъд шумо бояд папкаеро бо лоиҳа эҷод кунед ва онро оғоз кунед. Папка бо ҳама чизест, ки барои идоракунии бастаҳо лозим аст ve номида мешавад.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Барои оғози истифодаи муҳити виртуалӣ, шумо бояд фармони зеринро дар ҷузвдони лоиҳа иҷро кунед.
    $ source ve/bin/activate
  5. Шумо метавонед docker-compose -ро насб кунед.
    pip install docker-compose

    Барои он ки контейнерҳо ҳамдигарро бубинанд, мо шабака эҷод мекунем. Бо нобаёнӣ, ронандаи пул истифода мешавад.

    $ docker network create network

    Минбаъд ба шумо лозим аст, ки docker-compose-ро танзим кунед, прокси дар папкаи прокси, сайти санҷишӣ дар папкаи санҷишӣ хоҳад буд. Масалан, ман номи домени example.com -ро истифода мебарам

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

    Мундариҷа 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:

    Тағйирёбандаи муҳити зист NGINX_PROXY_CONTAINER барои дидани контейнери прокси контейнери letsencrypt лозим аст. Папкаҳои /etc/nginx/certs /etc/nginx/vhost.d ва /usr/share/nginx/html бояд аз ҷониби ҳарду контейнер мубодила карда шаванд. Барои дуруст кор кардани контейнери letsencrypt, барнома бояд дар бандари 80 ва 443 дастрас бошад.

    Мундариҷа 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]

    Дар ин ҷо, тағирёбандаҳои муҳити зист лозиманд, то прокси дархостро ба сервер дуруст коркард кунад ва сертификатро барои номи домени дуруст дархост кунад.

    Танҳо иҷро кардани docker-compose боқӣ мемонад

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

Манбаъ: will.com

Илова Эзоҳ