Линукс дээрх docker ашиглан letsencrypt сертификатыг автоматаар хүлээн авах тохиргоог хийж байна

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

Энэ бол SSL сертификатуудыг автоматаар хүлээн авдаг прокси ашиглан Docker дээр вэб сайтыг хэрхэн тохируулах заавар юм. 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 community хэвлэлийг суулгана уу
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Эхлүүлэх болон ажиллуулахын тулд docker нэмнэ үү
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Docker-ийг sudoгүйгээр ажиллуулахын тулд хэрэглэгчийг докерын бүлэгт нэмнэ үү
    $ usermod -aG docker user

Дараагийн алхам бол docker-compose програмыг суулгах явдал юм. Хэрэгслийг хэд хэдэн аргаар суулгаж болно, гэхдээ би системийг шаардлагагүй багцаар дүүргэхгүйн тулд pip manager болон 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

сэтгэгдэл нэмэх