Nastavitev samodejnega prejemanja potrdil letsencrypt z uporabo dockerja v sistemu Linux

Pred kratkim sem zamenjal virtualni strežnik in moral sem vse znova konfigurirati. Raje imam, da je stran dostopna prek https in naj se potrdila za šifriranje samodejno pridobijo in obnovijo. To je mogoče doseči z uporabo dveh slik dockerja nginx-proxy in nginx-proxy-companion.

To je vodnik o tem, kako nastaviti spletno mesto na Dockerju s proxyjem, ki samodejno prejme potrdila SSL. Uporabljen je virtualni strežnik CentOS 7.

Predvidevam, da je strežnik že kupljen, konfiguriran, prijavljen s ključem, nameščen fail2ban itd.

Najprej morate namestiti docker.

  1. Najprej morate namestiti odvisnosti
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Poveži repozitorij
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Nato namestite izdajo skupnosti docker
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Dodaj docker v zagon in zagon
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Dodajte uporabnika v skupino dockerjev, da boste lahko zagnali docker brez sudo
    $ usermod -aG docker user

Naslednji korak je namestitev docker-compose. Pripomoček je možno namestiti na več načinov, a jaz raje nameščam preko upravitelja pip in virtualenv, da ne zamašim sistema z nepotrebnimi paketi.

  1. Namestite pip
    $ sudo yum install python-pip
  2. Namestite virtualenv
    $ pip install virtualenv
  3. Nato morate ustvariti mapo s projektom in jo inicializirati. Mapa z vsem, kar potrebujete za upravljanje paketov, se bo imenovala ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Če želite začeti uporabljati virtualno okolje, morate zagnati naslednji ukaz v mapi projekta.
    $ source ve/bin/activate
  5. Lahko namestite docker-compose.
    pip install docker-compose

    Da se kontejnerji vidijo, bomo ustvarili mrežo. Privzeto je uporabljen mostni gonilnik.

    $ docker network create network

    Nato morate konfigurirati docker-compose, proxy bo v mapi proxy, testno mesto bo v testni mapi. Na primer, uporabljam ime domene example.com

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

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

    Spremenljivka okolja NGINX_PROXY_CONTAINER vsebnik letsencrypt mora videti vsebnik proxy. Oba vsebnika morata deliti mapi /etc/nginx/certs /etc/nginx/vhost.d in /usr/share/nginx/html. Da vsebnik letsencrypt deluje pravilno, mora biti aplikacija dostopna na vratih 80 in 443.

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

    Tukaj so spremenljivke okolja potrebne, da proxy pravilno obdela zahtevo do strežnika in zahteva potrdilo za pravilno ime domene.

    Vse kar ostane je zagnati docker-compose

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

Vir: www.habr.com

Dodaj komentar