Linux жүйесінде докер көмегімен letsencrypt сертификаттарын автоматты түрде алуды орнату

Мен жақында виртуалды серверді өзгерттім және бәрін қайтадан конфигурациялауға тура келді. Мен сайтқа https арқылы кіруге болатынын және letsencrypt сертификаттарының автоматты түрде алынуын және жаңартылғанын қалаймын. Бұған nginx-proxy және nginx-proxy-companion екі докер кескінін пайдалану арқылы қол жеткізуге болады.

Бұл Docker жүйесінде 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

Келесі қадам 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

Ақпарат көзі: www.habr.com

пікір қалдыру