Postavljanje automatskog preuzimanja certifikata letsencrypt uz pomoć dockera u Linuxu

Nedavno sam mijenjao virtualni poslužitelj, pa sam sve morao ponovno postaviti. Preferiram da web stranica bude dostupna putem https, a da se certifikati letsencrypt automatski dobivaju i produžuju. To se može postići korištenjem dvije slike docker nginx-proxy i nginx-proxy-companion.

Ovo je vodič za postavljanje web stranice na docker s proxyem koji automatski dobiva SSL certifikati. Koristi se virtualni poslužitelj CentOS 7.

Pretpostavljam da je poslužitelj već kupljen, konfiguriran, da se na njega ulazi putem ključa, te da je instaliran fail2ban itd.

Za početak je potrebno instalirati docker.

  1. Prvo je potrebno instalirati ovisnosti
    $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. Priključite repozitorij
    $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. Zatim instalirajte docker community edition
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Dodajte docker u automatsko pokretanje i pokrenite ga
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Dodajte korisnika u docker grupu kako biste mogli pokretati docker bez sudo
    $ usermod -aG docker user

Sljedeći korak je instalirati docker-compose. Alat se može instalirati na nekoliko načina, ali preferiram instalirati ga putem pip menadžera i virtualenv-a kako ne bih zagušio sustav suvišnim paketima.

  1. Instalirajte pip
    $ sudo yum install python-pip
  2. Instalirajte virtualenv
    $ pip install virtualenv
  3. Zatim je potrebno stvoriti mapu s projektom i inicijalizirati je. Mapa sa svim potrebnim za upravljanje paketima zvat će se ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Da biste počeli koristiti virtualno okruženje, trebate izvršiti sljedeću naredbu u mapi s projektom.
    $ source ve/bin/activate
  5. Možete instalirati docker-compose.
    pip install docker-compose

    Da bi kontejneri vidjeli jedni druge, stvorit ćemo mrežu. Po defaultu se koristi bridge drajver.

    $ docker network create network

    Zatim je potrebno konfigurirati docker-compose, proxy će biti u mapi proxy, testna web stranica u mapi test. Kao primjer koristim domensko ime example.com

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

    Sadržaj proxy/docker-compose.yml

    verzija: '3'
    
    mreže:
      zadano:
        vanjski:
          ime: mreža
    
    usluge:
      nginx-proxy:
        naziv_kontejnera: nginx-proxy
        slika: jwilder/nginx-proxy
        portovi:
          - 80:80
          - 443:443
        volumeni:
          - 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:
        naziv_kontejnera: nginx-proxy-letsencrypt
        slika: jrcs/letsencrypt-nginx-proxy-companion
        volumeni: 
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/var/run/docker.sock:ro
        okruženje:
          - NGINX_PROXY_CONTAINER=nginx-proxy
    
    volumeni:
      certs:
      vhost.d:
      html:

    Varijabla okruženja NGINX_PROXY_CONTAINER je potrebna kako bi letsencrypt kontejner mogao vidjeti proxy kontejner. Mape /etc/nginx/certs, /etc/nginx/vhost.d i /usr/share/nginx/html trebaju se zajednički koristiti između oba kontejnera. Za ispravan rad letsencrypt kontejnera, aplikacija mora biti dostupna na portovima 80 i 443.

    Sadržaj test/docker-compose.yml

    verzija: '3'
    
    mreže:
      zadano:
        vanjski:
          ime: mreža
    
    usluge:
    
      nginx:
        naziv_kontejnera: nginx
        slika: nginx:latest
        okruženje:
          - VIRTUAL_HOST=example.com
          - LETSENCRYPT_HOST=example.com
          - LETSENCRYPT_EMAIL=admin@example.com

    Ovdje su varijable okruženja potrebne kako bi proxy ispravno obradio zahtjev prema serveru i zatražio certifikat za ispravno naziv domene.

    Preostalo je samo pokrenuti docker-compose

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

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster