Stel outomatiese ontvangs van letsencrypt-sertifikate op met docker op Linux

Ek het onlangs 'n virtuele bediener verander, en ek moes alles weer opstel. Ek verkies dat die webwerf toeganklik is oor https en dat letsencrypt-sertifikate outomaties verkry en hernu word. Dit kan bereik word deur twee docker-beelde nginx-proxy en nginx-proxy-companion te gebruik.

Dit is 'n gids oor hoe om 'n webwerf op docker op te stel, met 'n instaanbediener wat outomaties SSL-sertifikate ontvang. Die CentOS 7 virtuele bediener word gebruik.

Ek neem aan dat die bediener reeds gekoop is, gekonfigureer is, toegang verkry is deur sleutel, fail2ban is geïnstalleer, ens.

Eerstens moet jy docker installeer.

  1. Eerstens moet jy die afhanklikhede installeer
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Koppel bewaarplek
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Installeer dan docker-gemeenskapsuitgawe
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Voeg docker by opstart en hardloop
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Voeg 'n gebruiker by die docker-groep om docker sonder sudo te kan hardloop
    $ usermod -aG docker user

Die volgende stap is om docker-compose te installeer. Die hulpprogram kan op verskeie maniere geïnstalleer word, maar ek verkies om deur die pip-bestuurder en virtualenv te installeer, om nie die stelsel met onnodige pakkette te verstop nie.

  1. Installeer pip
    $ sudo yum install python-pip
  2. Installeer virtualenv
    $ pip install virtualenv
  3. Vervolgens moet u 'n gids met die projek skep en dit inisialiseer. Die gids met alles wat nodig is vir pakketbestuur sal ve genoem word.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Om die virtuele omgewing te begin gebruik, moet jy die volgende opdrag in die projekgids uitvoer.
    $ source ve/bin/activate
  5. Jy kan docker-compose installeer.
    pip install docker-compose

    Laat ons 'n netwerk skep sodat die houers mekaar kan sien. Die brugbestuurder word by verstek gebruik.

    $ docker network create network

    Vervolgens moet u docker-compose instel, die instaanbediener sal in die proxy-lêergids wees, die toetswebwerf in die toetslêergids. Ek gebruik byvoorbeeld die domeinnaam example.com

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

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

    omgewingsveranderlike NGINX_PROXY_CONTAINER nodig vir die letsencrypt-houer om die instaanbedienerhouer te sien. Die /etc/nginx/certs /etc/nginx/vhost.d en /usr/share/nginx/html dopgehou moet deur beide houers gedeel word. Vir die letsencrypt-houer om korrek te werk, moet die toepassing op beide 80 en 443 poorte beskikbaar wees.

    inhoud toets/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]

    Hier is omgewingsveranderlikes nodig sodat die proxy die versoek na die bediener korrek verwerk en 'n sertifikaat vir die korrekte domeinnaam versoek.

    Dit bly net om docker-compose te laat loop

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

Bron: will.com

Voeg 'n opmerking