рд▓рд┐рдирдХреНрд╕рд╡рд░ рдбреЙрдХрд░ рд╡рд╛рдкрд░реВрди letsencrypt рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╛рдВрдЪреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдкрд╛рд╡рддреА рд╕реЗрдЯ рдХрд░рдгреЗ

рдореА рдиреБрдХрддрд╛рдЪ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рд╕рд░реНрд╡реНрд╣рд░ рдмрджрд▓рд▓рд╛ рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдкреБрдиреНрд╣рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рдореА рд╣реЗ рдкрд╕рдВрдд рдХрд░рддреЛ рдХреА рд╕рд╛рдЗрдЯ https рджреНрд╡рд╛рд░реЗ рдкреНрд░рд╡реЗрд╢рдпреЛрдЧреНрдп рдЕрд╕реЗрд▓ рдЖрдгрд┐ letsencrypt рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдЖрдкреЛрдЖрдк рдорд┐рд│рддреАрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдиреВрддрдиреАрдХрд░рдг рдХреЗрд▓реЗ рдЬрд╛рд╡реЗ. nginx-proxy рдЖрдгрд┐ nginx-proxy-companion рдпрд╛ рджреЛрди рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рд╡рд╛рдкрд░реВрди рд╣реЗ рд╕рд╛рдзреНрдп рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рдЖрдкреЛрдЖрдк SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдкреНрд░реЙрдХреНрд╕реАрд╕рд╣ рдбреЙрдХрд░рд╡рд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╢реА рд╕реЗрдЯ рдХрд░рд╛рд╡реА рдпрд╛рдмрджреНрджрд▓ рд╣реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдЖрд╣реЗ. CentOS 7 рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рд╕рд░реНрд╡реНрд╣рд░ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ.

рдореА рдЧреГрд╣реАрдд рдзрд░рддреЛ рдХреА рд╕рд░реНрд╡реНрд╣рд░ рдЖрдзреАрдЪ рдЦрд░реЗрджреА рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдХреА рд╡рд╛рдкрд░реВрди рд▓реЙрдЧ рдЗрди рдХреЗрд▓реЗ рдЖрд╣реЗ, fail2ban рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЗ.

рдкреНрд░рдердо рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

  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. рдирдВрддрд░ рдбреЙрдХрд░ рд╕рдореБрджрд╛рдп рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдЖрдгрд┐ рд░рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░ рдЬреЛрдбрд╛
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. sudo рд╢рд┐рд╡рд╛рдп рдбреЙрдХрд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░ рдЧреНрд░реБрдкрдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЬреЛрдбрд╛
    $ usermod -aG docker user

рдкреБрдвреАрд▓ рдкрд╛рдпрд░реА рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╣реЗ. рдпреБрдЯрд┐рд▓рд┐рдЯреА рдЕрдиреЗрдХ рдкреНрд░рдХрд╛рд░реЗ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ, рдкрд░рдВрддреБ рдореА рдкрд╛рдИрдк рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЖрдгрд┐ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓реЗрдирд╡реНрд╣ рджреНрд╡рд╛рд░реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдкрд╕рдВрдд рдХрд░рддреЛ, рдЬреЗрдгреЗрдХрд░реВрди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреЕрдХреЗрдЬреЗрд╕рд╕рд╣ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдЧреЛрдВрдзрд│ рд╣реЛрдК рдирдпреЗ.

  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. рддреБрдореНрд╣реА рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░реВ рд╢рдХрддрд╛.
    pip install docker-compose

    рдХрдВрдЯреЗрдирд░ рдПрдХрдореЗрдХрд╛рдВрдирд╛ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рддрдпрд╛рд░ рдХрд░реВ. рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдмреНрд░рд┐рдЬ рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ.

    $ docker network create network

    рдкреБрдвреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓, рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░реЙрдХреНрд╕реА рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдЕрд╕реЗрд▓, рдЪрд╛рдЪрдгреА рд╕рд╛рдЗрдЯ рдЪрд╛рдЪрдгреА рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдЕрд╕реЗрд▓. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдореА 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]

    рдпреЗрдереЗ, рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд рдЬреЗрдгреЗрдХрд░реВрди рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рд╡рд┐рдирдВрддреАрд╡рд░ рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрд▓ рдЖрдгрд┐ рдпреЛрдЧреНрдп рдбреЛрдореЗрди рдирд╛рд╡рд╛рд╕рд╛рдареА рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╛рдЪреА рд╡рд┐рдирдВрддреА рдХрд░реЗрд▓.

    рдлрдХреНрдд рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ рдЪрд╛рд▓рд╡рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ

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

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛