Konfigurimi i marrjes automatike të certifikatave letsencrypt me anë të docker në linux

Para disa kohësh, kam ndërruar serverin virtual dhe duhej ta konfiguronte gjithçka përsëri. Preferoj që faqja të jetë e aksesueshme përmes https dhe certifikatat letsencrypt të merren dhe të rinovohen automatikisht. Kjo mund të arrihet duke përdorur dy imazhe docker nginx-proxy dhe nginx-proxy-companion.

Ky udhëzues tregon si të konfiguroni faqen në docker, me një proxy që merr automatikisht Certifikatat SSL. Përdoret server virtuel CentOS 7.

Supozoj se serveri është blerë, i konfiguruar, dhe hyrja bëhet me çelës, dhe është instaluar fail2ban etj.

Për të filluar, duhet të instaloni docker.

  1. Së pari, duhet të instaloni varësitë
    $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. Për lidhjen e depot
    $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. Pastaj instaloni edicionin docker community
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Shtoni docker në autoload dhe filloni
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Shtoni përdoruesin në grupin docker, për të marrë mundësinë për të ekzekutuar docker pa sudo
    $ usermod -aG docker user

Hapi tjetër është të instaloni docker-compose. Mund ta instaloni utilitarin në disa mënyra, por unë preferoj ta instaloj përmes menaxherit pip dhe virtualenv, në mënyrë që të mos ndot sistemin me paketa të panevojshme.

  1. Instalo pip
    $ sudo yum install python-pip
  2. Instalo virtualenv
    $ pip install virtualenv
  3. Më pas duhet të krijoni një dosje për projektin dhe ta inicializoni atë. Dosja me gjithçka të nevojshme për menaxhimin e paketimeve do të quhet ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Për të filluar të përdorni ambientin virtual duhet të ekzekutoni komandën e mëposhtme në dosjen e projektit.
    $ source ve/bin/activate
  5. Mund të instaloni docker-compose.
    pip install docker-compose

    Për që enët të shohin njëra-tjetrën, do të krijojmë një rrjet. Me të drejtë, përdoret drejtuesi bridge.

    $ docker network create network

    Më pas duhet të konfiguroni docker-compose, proxy do të ndodhet në dosjen proxy, siti provues në dosjen test. Për shembuj, po përdor emrin e domenit example.com

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

    Përmbajtja 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:

    Variabël ambienti NGINX_PROXY_CONTAINER nevojitet që konteineri letsencrypt të shohë konteinerin proxy. Folderat /etc/nginx/certs /etc/nginx/vhost.d dhe /usr/share/nginx/html duhet të përdoren së bashku nga të dy kontenierët. Për funksionimin e duhur të konteinerit letsencrypt, aplikacioni duhet të jetë i aksesueshëm në portet 80 dhe 443.

    Përmbajtja 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
          - LETSENCRYPT_EMAIL=admin@example.com

    Këtu variablat e ambientit nevojiten që proxy të trajtojë saktë kërkesat ndaj serverit dhe të kërkojë një certifikatë për emrin e duhur të domain-it.

    Mbete vetëm të nisen docker-compose

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

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster