Letsencrypti sertifikaatide automaatse vastuvõtmise seadistamine Linuxi dockeri abil

Vahetasin hiljuti virtuaalserverit ja pidin kõik uuesti konfigureerima. Eelistan, et sait oleks juurdepääsetav https kaudu ja lubaks hankida ja uuendada automaatselt sertifikaate Sencrypt. Seda saab saavutada kahe dokkimiskujutise nginx-proxy ja nginx-proxy-companion abil.

See on juhend Dockeris veebisaidi seadistamiseks puhverserveri abil, mis võtab automaatselt vastu SSL-sertifikaate. Kasutatakse CentOS 7 virtuaalserverit.

Eeldan, et server on juba ostetud, seadistatud, võtmega sisse logitud, fail2ban installitud jne.

Kõigepealt peate installima dokkeri.

  1. Kõigepealt peate installima sõltuvused
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Ühendage hoidla
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Seejärel installige dockeri kogukonna väljaanne
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Lisage dokki käivitamiseks ja käivitamiseks
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Lisage dockeri rühma kasutaja, et saaksite Dockerit käitada ilma sudota
    $ usermod -aG docker user

Järgmine samm on docker-compose installimine. Utiliiti saab installida mitmel viisil, kuid eelistan installida pip-halduri ja virtualenvi kaudu, et mitte risustada süsteemi mittevajalike pakettidega.

  1. Installige pip
    $ sudo yum install python-pip
  2. Installige virtualenv
    $ pip install virtualenv
  3. Järgmisena peate looma projektiga kausta ja selle lähtestama. Kausta, mis sisaldab kõike, mida vajate pakettide haldamiseks, nimetatakse ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Virtuaalse keskkonna kasutamise alustamiseks tuleb projekti kaustas käivitada järgmine käsk.
    $ source ve/bin/activate
  5. Saate installida docker-compose.
    pip install docker-compose

    Selleks, et konteinerid üksteist näeksid, loome võrgu. Vaikimisi kasutatakse silladraiverit.

    $ docker network create network

    Järgmiseks tuleb seadistada docker-compose, puhverserver asub puhverserveri kaustas, testsait on testkaustas. Näiteks kasutan domeeninime example.com

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

    Sisu puhverserver/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:

    Keskkonna muutuja NGINX_PROXY_CONTAINER see on vajalik, et letsencrypt konteiner näeks puhverserveri konteinerit. Mõlemad konteinerid peavad jagama kaustu /etc/nginx/certs /etc/nginx/vhost.d ja /usr/share/nginx/html. Letsencrypt konteineri korrektseks tööks peab rakendus olema ligipääsetav nii pordis 80 kui ka 443.

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

    Siin on vaja keskkonnamuutujaid, et puhverserver töötleks päringu õigesti serverile ja taotleks õige domeeninime sertifikaati.

    Jääb vaid käivitada docker-compose

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

Allikas: www.habr.com

Lisa kommentaar