Nastavenie automatického získavania certifikátov letsencrypt pomocou dockeru v linuxe

Nedávno som menil virtuálny server a musel som všetko nastaviť znova. Preferujem, aby bol web dostupný cez https a certifikáty letsencrypt sa získavali a predlžovali automaticky. Toho môžeme dosiahnuť použitím dvoch obrazov docker nginx-proxy a nginx-proxy-companion.

Toto je návod, ako nastaviť web na docker s proxy, ktorá automaticky získava SSL certifikáty. Používa sa virtuálny server CentOS 7.

Predpokladám, že server je už zakúpený, nastavený, prístup naň sa realizuje pomocou kľúča, nainštalovaný je fail2ban a podobne.

Na začiatok je potrebné nainštalovať docker.

  1. Najprv je potrebné nainštalovať závislosti
    $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. Pripojiť repozitár
    $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. Potom nainštalovať docker community edition
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Pridať docker do automatického spúšťania a spustiť
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Pridať používateľa do skupiny docker, aby bolo možné spúšťať docker bez sudo
    $ usermod -aG docker user

Ďalší krok — nainštalovať docker-compose. Nástroj je možné nainštalovať viacerými spôsobmi, ale ja uprednostňujem inštaláciu cez pip manažér a virtualenv, aby som nezaplnil systém zbytočnými balíkmi.

  1. Nainštalovať pip
    $ sudo yum install python-pip
  2. Nainštalovať virtualenv
    $ pip install virtualenv
  3. Potom treba vytvoriť priečinok s projektom a inicializovať ho. Priečinok so všetkým potrebným na správu balíkov sa bude nazývať ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Aby ste mohli začať používať virtuálne prostredie, musíte spustiť nasledujúci príkaz v priečinku s projektom.
    $ source ve/bin/activate
  5. Môžete nainštalovať docker-compose.
    pip install docker-compose

    Aby kontejnery videli navzájom, vytvoríme sieť. Predvolene sa používa ovládač bridge.

    $ docker network create network

    Následne je potrebné nastaviť docker-compose, proxy bude ležať v priečinku proxy, testovací web v priečinku test. Pre príklad používam doménové meno example.com.

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

    Obsah proxy/docker-compose.yml

    verzia: '3'
    
    sieť:
      predvolená:
        externé:
          meno: sieť
    
    služby:
      nginx-proxy:
        názov_kontajnera: nginx-proxy
        obrázok: jwilder/nginx-proxy
        porty:
          - 80:80
          - 443:443
        objemy:
          - 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:
        názov_kontajnera: nginx-proxy-letsencrypt
        obrázok: jrcs/letsencrypt-nginx-proxy-companion
        objemy: 
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/var/run/docker.sock:ro
        prostredie:
          - NGINX_PROXY_CONTAINER=nginx-proxy
    
    objemy:
      certs:
      vhost.d:
      html:

    Premenná prostredia NGINX_PROXY_CONTAINER je potrebná, aby kontejner letsencrypt videl proxy kontejner. Zložky /etc/nginx/certs, /etc/nginx/vhost.d a /usr/share/nginx/html musia byť zdieľané obidvoma kontajnermi. Pre správne fungovanie kontajnera letsencrypt musí byť aplikácia dostupná na porte 80 aj 443.

    Obsah test/docker-compose.yml

    verzia: '3'
    
    sieť:
      predvolená:
        externé:
          meno: sieť
    
    služby:
    
      nginx:
        názov_kontajnera: nginx
        obrázok: nginx:latest
        prostredie:
          - VIRTUAL_HOST=example.com
          - LETSENCRYPT_HOST=example.com
          - LETSENCRYPT_EMAIL=admin@example.com

    Tu sú premenné prostredia potrebné na to, aby proxy správne spracoval požiadavku na server a požiadal o certifikát na správne doménové meno.

    Stačí len spustiť docker-compose

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

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster