Letsencrypt sertifikātu automātiskas saņemšanas iestatīšana, izmantojot docker operētājsistēmā Linux

Es nesen nomainīju virtuālo serveri, un viss bija jākonfigurē vēlreiz. Es dodu priekšroku tam, lai vietne būtu pieejama, izmantojot https, un ļautu automātiski iegūt un atjaunot sertifikātus. To var panākt, izmantojot divus docker attēlus nginx-proxy un nginx-proxy-companion.

Šis ir ceļvedis, kā izveidot vietni Docker, izmantojot starpniekserveri, kas automātiski saņem SSL sertifikātus. Tiek izmantots CentOS 7 virtuālais serveris.

Pieņemu, ka serveris jau ir iegādāts, konfigurēts, pieteicies ar atslēgu, fail2ban uzstādīts utt.

Vispirms jums jāinstalē docker.

  1. Vispirms jāinstalē atkarības
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Pievienojiet repozitoriju
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Pēc tam instalējiet docker kopienas izdevumu
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Pievienojiet docker startēšanai un palaišanai
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Pievienojiet lietotāju docker grupai, lai varētu palaist docker bez sudo
    $ usermod -aG docker user

Nākamais solis ir instalēt docker-compose. Lietderību var instalēt vairākos veidos, taču es dodu priekšroku instalēšanai caur pip pārvaldnieku un virtualenv, lai nepārblīvētu sistēmu ar nevajadzīgām pakotnēm.

  1. Instalējiet pip
    $ sudo yum install python-pip
  2. Instalējiet virtualenv
    $ pip install virtualenv
  3. Tālāk jums ir jāizveido mape ar projektu un jāinicializē. Mape ar visu nepieciešamo pakotņu pārvaldībai tiks saukta par ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Lai sāktu lietot virtuālo vidi, projekta mapē ir jāpalaiž šāda komanda.
    $ source ve/bin/activate
  5. Varat instalēt docker-compose.
    pip install docker-compose

    Lai konteineri redzētu viens otru, mēs izveidosim tīklu. Pēc noklusējuma tiek izmantots tilta draiveris.

    $ docker network create network

    Tālāk jums jākonfigurē docker-compose, starpniekserveris atradīsies starpniekservera mapē, testa vietne būs testa mapē. Piemēram, es izmantoju domēna nosaukumu example.com

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

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

    Vides mainīgais NGINX_PROXY_CONTAINER ir nepieciešams, lai konteiners letsencrypt redzētu starpniekservera konteineru. Mapes /etc/nginx/certs /etc/nginx/vhost.d un /usr/share/nginx/html ir jākoplieto abiem konteineriem. Lai letsencrypt konteiners darbotos pareizi, lietojumprogrammai ir jābūt pieejamai gan portā 80, gan 443.

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

    Šeit ir nepieciešami vides mainīgie, lai starpniekserveris pareizi apstrādātu pieprasījumu serverim un pieprasītu sertifikātu pareizajam domēna nosaukumam.

    Atliek tikai palaist docker-compose

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

Avots: www.habr.com

Pievieno komentāru