Vendosja e marrjes automatike të certifikatave letsencrypt duke përdorur docker në linux

Kohët e fundit kam ndryshuar serverin virtual dhe më është dashur të konfiguroj gjithçka përsëri. Unë preferoj që faqja të jetë e aksesueshme përmes https dhe certifikatat letsencrypt të merren dhe rinovohen automatikisht. Kjo mund të arrihet duke përdorur dy imazhe docker nginx-proxy dhe nginx-proxy-companion.

Ky është një udhëzues se si të konfiguroni një faqe interneti në Docker, me një përfaqësues që merr automatikisht certifikatat SSL. Përdoret serveri virtual CentOS 7.

Unë supozoj se serveri tashmë është blerë, konfiguruar, hyrë duke përdorur një çelës, është instaluar fail2ban, etj.

Së pari ju duhet të instaloni docker.

  1. Së pari ju duhet të instaloni varësitë
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Lidhni depon
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Pastaj instaloni botimin e komunitetit docker
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Shto docker në nisje dhe ekzekuto
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Shtoni një përdorues në grupin docker për të qenë në gjendje të ekzekutoni docker pa sudo
    $ usermod -aG docker user

Hapi tjetër është instalimi i docker-compose. Programi mund të instalohet në disa mënyra, por unë preferoj ta instaloj përmes menaxherit të pip dhe virtualenv, në mënyrë që të mos rrëmbej sistemin me paketa të panevojshme.

  1. Instaloni pip
    $ sudo yum install python-pip
  2. Instaloni virtualenv
    $ pip install virtualenv
  3. Më pas ju duhet të krijoni një dosje me projektin dhe ta inicializoni atë. Dosja me gjithçka që ju nevojitet për të menaxhuar paketat do të quhet ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Për të filluar përdorimin e mjedisit 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

    Në mënyrë që kontejnerët të shohin njëri-tjetrin, ne do të krijojmë një rrjet. Si parazgjedhje, përdoret drejtuesi i urës.

    $ docker network create network

    Më pas ju duhet të konfiguroni docker-compose, përfaqësuesi do të jetë në dosjen e përfaqësuesit, faqja e testimit do të jetë në dosjen e provës. Për shembull, unë jam duke përdorur emrin e domenit example.com

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

    përmbajtje 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:

    Variabli i mjedisit NGINX_PROXY_CONTAINER është e nevojshme që kontejneri letsencrypt të shohë kontejnerin e përfaqësuesit. Dosjet /etc/nginx/certs /etc/nginx/vhost.d dhe /usr/share/nginx/html duhet të ndahen nga të dy kontejnerët. Që kontejneri letsencrypt të funksionojë siç duhet, aplikacioni duhet të jetë i aksesueshëm në portin 80 dhe 443.

    përmbajtje test/docker-kompozoj.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]

    Këtu nevojiten variablat e mjedisit në mënyrë që përfaqësuesi të përpunojë saktë kërkesën në server dhe të kërkojë një certifikatë për emrin e saktë të domenit.

    Gjithçka që mbetet është të ekzekutoni docker-compose

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

Burimi: www.habr.com

Shto një koment