Pagse-set up ng awtomatikong pagtanggap ng mga certificate ng letsencrypt gamit ang docker sa linux

Pinalitan ko kamakailan ang virtual server, at kinailangan kong i-configure muli ang lahat. Mas gusto kong ma-access ang site sa pamamagitan ng https at ang mga certificate ng letsencrypt ay makuha at awtomatikong ma-renew. Ito ay maaaring makamit sa pamamagitan ng paggamit ng dalawang docker na imahe nginx-proxy at nginx-proxy-companion.

Ito ay isang gabay sa kung paano mag-set up ng isang website sa Docker, na may proxy na awtomatikong tumatanggap ng mga SSL certificate. Ginagamit ang CentOS 7 virtual server.

Ipinapalagay ko na ang server ay nabili na, na-configure, naka-log in gamit ang isang susi, naka-install na fail2ban, atbp.

Una kailangan mong i-install ang docker.

  1. Una kailangan mong mag-install ng mga dependencies
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Ikonekta ang repositoryo
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Pagkatapos ay i-install ang docker community edition
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Magdagdag ng docker sa startup at tumakbo
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Magdagdag ng user sa docker group para makapagpatakbo ng docker nang walang sudo
    $ usermod -aG docker user

Ang susunod na hakbang ay ang pag-install ng docker-compose. Maaaring mai-install ang utility sa maraming paraan, ngunit mas gusto kong mag-install sa pamamagitan ng pip manager at virtualenv, upang hindi masira ang system sa mga hindi kinakailangang pakete.

  1. I-install ang pip
    $ sudo yum install python-pip
  2. I-install ang virtualenv
    $ pip install virtualenv
  3. Susunod na kailangan mong lumikha ng isang folder na may proyekto at simulan ito. Ang folder na may lahat ng kailangan mo upang pamahalaan ang mga pakete ay tatawaging ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Upang simulan ang paggamit ng virtual na kapaligiran, kailangan mong patakbuhin ang sumusunod na command sa folder ng proyekto.
    $ source ve/bin/activate
  5. Maaari mong i-install ang docker-compose.
    pip install docker-compose

    Para makita ng mga container ang isa't isa, gagawa kami ng network. Bilang default, ginagamit ang driver ng tulay.

    $ docker network create network

    Susunod na kailangan mong i-configure ang docker-compose, ang proxy ay nasa proxy folder, ang test site ay nasa test folder. Halimbawa, ginagamit ko ang domain name example.com

    $ mkdir proxy
    $ mkdir test
    $ touch proxy/docker-compose.yml
    $ touch test/docker-compose.yml

    Nilalaman 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:

    variable ng kapaligiran NGINX_PROXY_CONTAINER ito ay kinakailangan para sa letsencrypt container upang makita ang proxy container. Ang /etc/nginx/certs /etc/nginx/vhost.d at /usr/share/nginx/html na mga folder ay dapat na ibahagi ng parehong mga container. Para gumana nang tama ang lalagyan ng letsencrypt, dapat na ma-access ang application sa parehong port 80 at 443.

    Nilalaman 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]

    Dito, kailangan ang mga variable ng kapaligiran upang maiproseso nang tama ng proxy ang kahilingan sa server at humiling ng certificate para sa tamang domain name.

    Ang natitira na lang ay ang magpatakbo ng docker-compose

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

Pinagmulan: www.habr.com

Magdagdag ng komento