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

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

Бул SSL сертификаттарын автоматтык түрдө алган прокси менен Dockerде веб-сайтты кантип орнотуу боюнча колдонмо. 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

Source: www.habr.com

Комментарий кошуу