Automatinio letsencrypt sertifikatų gavimo nustatymas naudojant docker Linux sistemoje

Neseniai pakeičiau virtualų serverį ir turėjau viską konfigūruoti iš naujo. Norėčiau, kad svetainė būtų pasiekiama per https ir automatiškai būtų gaunami bei atnaujinami sertifikatai. Tai galima pasiekti naudojant du doko vaizdus nginx-proxy ir nginx-proxy-companion.

Tai vadovas, kaip nustatyti svetainę „Docker“, naudojant tarpinį serverį, kuris automatiškai gauna SSL sertifikatus. Naudojamas CentOS 7 virtualus serveris.

Darau prielaidą, kad serveris jau nupirktas, sukonfigūruotas, prisijungęs naudojant raktą, įdiegtas fail2ban ir pan.

Pirmiausia turite įdiegti dokerį.

  1. Pirmiausia turite įdiegti priklausomybes
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Prijunkite saugyklą
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Tada įdiekite docker bendruomenės leidimą
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Pridėkite dokerį prie paleidimo ir paleiskite
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Pridėkite vartotoją prie docker grupės, kad galėtumėte paleisti docker be sudo
    $ usermod -aG docker user

Kitas veiksmas – įdiegti docker-compose. Įrankį galima įdiegti keliais būdais, bet aš norėčiau įdiegti per pip tvarkyklę ir virtualenv, kad neužgriozdinčiau sistemos nereikalingais paketais.

  1. Įdiekite pip
    $ sudo yum install python-pip
  2. Įdiekite virtualenv
    $ pip install virtualenv
  3. Tada turite sukurti aplanką su projektu ir jį inicijuoti. Aplankas su viskuo, ko reikia paketams tvarkyti, bus vadinamas ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Norėdami pradėti naudotis virtualia aplinka, projekto aplanke turite paleisti šią komandą.
    $ source ve/bin/activate
  5. Galite įdiegti docker-compose.
    pip install docker-compose

    Kad konteineriai matytų vienas kitą, sukursime tinklą. Pagal numatytuosius nustatymus naudojama tilto tvarkyklė.

    $ docker network create network

    Toliau reikia sukonfigūruoti docker-compose, tarpinis serveris bus tarpinio serverio aplanke, bandymo svetainė bus bandomajame aplanke. Pavyzdžiui, aš naudoju domeno pavadinimą example.com

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

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

    Aplinkos kintamasis NGINX_PROXY_CONTAINER būtina, kad letsencrypt konteineris matytų tarpinio serverio konteinerį. Aplankai /etc/nginx/certs /etc/nginx/vhost.d ir /usr/share/nginx/html turi būti bendrinami abiejuose konteineriuose. Kad „letsencrypt“ konteineris veiktų tinkamai, programa turi būti pasiekiama per 80 ir 443 prievadus.

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

    Čia reikalingi aplinkos kintamieji, kad tarpinis serveris tinkamai apdorotų užklausą serveriui ir prašytų tinkamo domeno vardo sertifikato.

    Belieka paleisti docker-compose

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

Šaltinis: www.habr.com

Добавить комментарий