Sazkirina wergirtina otomatîkî ya sertîfîkayên letsencrypt bi karanîna docker li ser linux

Min vê dawîyê servera virtual guhert, û neçar ma ku her tiştî dîsa mîheng bikim. Ez tercîh dikim ku malper bi https ve were gihîştin û sertîfîkayên letsencrypt bixweber werin wergirtin û nûve kirin. Ev dikare bi karanîna du wêneyên docker nginx-proxy û nginx-proxy-companion were bidestxistin.

Ev rêbernameyek e ku meriv çawa malperek li ser Docker saz dike, bi proxyek ku bixweber sertîfîkayên SSL-ê distîne. Pêşkêşkara virtual CentOS 7 tê bikar anîn.

Ez texmîn dikim ku server jixwe hatî kirîn, mîheng kirin, bi karanîna mifteyek têketin, fail2ban hatî saz kirin, hwd.

Pêşî hûn hewce ne ku docker saz bikin.

  1. Pêşî hûn hewce ne ku pêwendiyan saz bikin
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Depoyê girêdin
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Dûv re guhertoya civata docker saz bikin
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Dockerê li destpêkirinê zêde bikin û bixebitin
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Bikarhênerek li koma docker zêde bikin da ku bikaribe docker bêyî sudo bimeşîne
    $ usermod -aG docker user

Pêngava paşîn sazkirina docker-compose ye. Karûbar dikare bi çend awayan were saz kirin, lê ez tercîh dikim ku ez bi navgîniya rêveberê pip û virtualenv-ê saz bikim, da ku pergalê bi pakêtên nehewce re nehêlim.

  1. Pip saz bikin
    $ sudo yum install python-pip
  2. virtualenv saz bikin
    $ pip install virtualenv
  3. Piştre hûn hewce ne ku peldankek bi projeyê re biafirînin û wê dest pê bikin. Peldanka bi her tiştê ku hûn ji bo birêvebirina pakêtan hewce ne dê jê re vebêjin.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Ji bo ku hûn dest bi karanîna jîngeha virtual bikin, hûn hewce ne ku emrê jêrîn di peldanka projeyê de bimeşînin.
    $ source ve/bin/activate
  5. Hûn dikarin docker-compose saz bikin.
    pip install docker-compose

    Ji bo ku konteynir hevdu bibînin, em ê torgilokek çêbikin. Bi xwerû, ajokera pirê tê bikar anîn.

    $ docker network create network

    Dûv re hûn hewce ne ku docker-compose mîheng bikin, proxy dê di peldanka proxy de be, malpera testê dê di peldanka ceribandinê de be. Mînakî, ez navê domainê example.com bikar tînim

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

    Dilşad 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:

    Guherbara jîngehê NGINX_PROXY_CONTAINER pêdivî ye ku konteynera letsencrypt konteynera proxy bibîne. Peldankên /etc/nginx/certs /etc/nginx/vhost.d û /usr/share/nginx/html divê ji hêla herdu konteyneran ve werin parve kirin. Ji bo ku konteynera letsencrypt rast bixebite, pêdivî ye ku serîlêdan hem li porta 80 û 443-ê bigihîje.

    Dilşad 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]

    Li vir, guhêrbarên jîngehê hewce ne da ku proxy bi rast daxwazê ​​​​ji serverê re pêvajoyê bike û ji bo navê domainê rast sertîfîkayek bixwaze.

    Tiştê ku dimîne ev e ku meriv docker-compose bimeşîne

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

Source: www.habr.com

Add a comment