Nyetél resi otomatis sertipikat letsencrypt nganggo docker dina linux

Kuring nembe robah server virtual, sarta kapaksa ngonpigurasikeun sagalana deui. Kuring resep yén situs éta tiasa diaksés via https sareng sertipikat letsencrypt dicandak sareng di-renew sacara otomatis. Ieu tiasa dihontal ku ngagunakeun dua gambar docker nginx-proxy sareng nginx-proxy-companion.

Ieu mangrupikeun pituduh ngeunaan cara nyetél halaman wéb dina Docker, kalayan proksi anu otomatis nampi sertipikat SSL. Pangladén virtual CentOS 7 dianggo.

Kuring nganggap yén server geus dibeuli, ngonpigurasi, asup maké konci, fail2ban dipasang, jsb.

Mimiti anjeun kedah pasang docker.

  1. Mimiti anjeun kedah pasang dependensi
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Sambungkeun gudang
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Teras pasang édisi komunitas docker
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Tambahkeun docker pikeun ngamimitian sareng ngajalankeun
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Tambahkeun pangguna kana grup docker pikeun tiasa ngajalankeun docker tanpa sudo
    $ usermod -aG docker user

Lengkah saterusna nyaéta masang docker-compose. Utiliti tiasa dipasang ku sababaraha cara, tapi kuring langkung resep masang pip manager sareng virtualenv, supados henteu ngaganggu sistem sareng bungkusan anu teu perlu.

  1. Pasang pip
    $ sudo yum install python-pip
  2. Pasang virtualenv
    $ pip install virtualenv
  3. Satuluyna anjeun kudu nyieun folder jeung proyék jeung initialize eta. Polder sareng sadaya anu anjeun peryogikeun pikeun ngatur bungkusan bakal disebat ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Pikeun ngamimitian nganggo lingkungan virtual, anjeun kedah ngajalankeun paréntah di handap ieu dina folder proyék.
    $ source ve/bin/activate
  5. Anjeun tiasa masang docker-compose.
    pip install docker-compose

    Dina raraga wadahna ningali silih, urang bakal nyieun jaringan. Sacara standar, supir sasak dianggo.

    $ docker network create network

    Salajengna anjeun kedah ngonpigurasikeun docker-compose, proxy bakal aya dina folder proxy, situs uji bakal aya dina folder uji. Contona, Kuring maké ngaran domain example.com

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

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

    Variabel lingkungan NGINX_PROXY_CONTAINER perlu pikeun wadah letsencrypt ningali wadahna proxy. The /etc/nginx/certs /etc/nginx/vhost.d jeung /usr/share/nginx/html polder kudu dibagikeun ku duanana peti. Pikeun wadah letsencrypt tiasa dianggo leres, aplikasina kedah tiasa diaksés dina port 80 sareng 443.

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

    Di dieu, variabel lingkungan diperyogikeun supados proxy leres ngolah pamundut ka server sareng nyuhunkeun sertipikat pikeun nami domain anu leres.

    Sadaya anu tetep nyaéta ngajalankeun docker-compose

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

sumber: www.habr.com

Tambahkeun komentar