Подешавање аутоматског пријема летсенцрипт сертификата помоћу доцкер-а на линук-у

Недавно сам променио виртуелни сервер и морао сам поново све да конфигуришем. Више волим да сајт буде доступан преко хттпс и да се летсенцрипт сертификати добијају и обнављају аутоматски. Ово се може постићи коришћењем две доцкер слике нгинк-проки и нгинк-проки-цомпанион.

Ово је водич о томе како да подесите веб локацију на Доцкер-у, са проксијем који аутоматски прима ССЛ сертификате. Користи се виртуелни сервер ЦентОС 7.

Претпостављам да је сервер већ купљен, конфигурисан, пријављен помоћу кључа, инсталиран фаил2бан итд.

Прво морате да инсталирате Доцкер.

  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. Додајте корисника у доцкер групу да бисте могли да покренете доцкер без судо-а
    $ usermod -aG docker user

Следећи корак је инсталирање доцкер-цомпосе. Услужни програм се може инсталирати на више начина, али ја радије инсталирам преко пип манагер-а и виртуаленв-а, како не би затрпао систем непотребним пакетима.

  1. Инсталирај пип
    $ sudo yum install python-pip
  2. Инсталирајте виртуаленв
    $ pip install virtualenv
  3. Затим морате да креирате фасциклу са пројектом и иницијализујете је. Фасцикла са свиме што вам је потребно за управљање пакетима ће се звати ве.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Да бисте почели да користите виртуелно окружење, потребно је да покренете следећу команду у фасцикли пројекта.
    $ source ve/bin/activate
  5. Можете инсталирати доцкер-цомпосе.
    pip install docker-compose

    Да би се контејнери видели, направићемо мрежу. Подразумевано се користи драјвер за мост.

    $ docker network create network

    Затим морате да конфигуришете доцкер-цомпосе, прокси ће бити у фасцикли проксија, тест локација ће бити у фасцикли за тестирање. На пример, користим име домена екампле.цом

    $ mkdir proxy
    $ mkdir test
    $ touch proxy/docker-compose.yml
    $ touch test/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:

    Варијабла окружења НГИНКС_ПРОКСИ_ЦОНТАИНЕР неопходно је да летсенцрипт контејнер види прокси контејнер. Фасцикле /етц/нгинк/цертс /етц/нгинк/вхост.д и /уср/схаре/нгинк/хтмл морају да деле оба контејнера. Да би летсенцрипт контејнер исправно функционисао, апликација мора бити доступна на порту 80 и 443.

    Садржај тест/доцкер-цомпосе.имл

    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

Извор: ввв.хабр.цом

Додај коментар