Linux-da docker ilə letsencrypt sertifikatlarının avtomatik alınmasının konfiqurasiyası

Bu yaxınlarda virtual serveri dəyişdim və hər şeyi yenidən qurmalı oldum. Mən saytın https üzərindən əlçatan olmasına və letsencrypt sertifikatlarının avtomatik əldə edilməsinə və yenilənməsinə üstünlük verirəm. Buna nginx-proxy və nginx-proxy-companion iki docker təsvirindən istifadə etməklə nail olmaq olar.

Bu, SSL sertifikatlarını avtomatik qəbul edən proksi ilə docker-də saytın necə qurulmasına dair bələdçidir. CentOS 7 virtual serverindən istifadə olunur.

Güman edirəm ki, server artıq alınıb, konfiqurasiya edilib, ona giriş açarla həyata keçirilir, fail2ban quraşdırılıb və s.

Əvvəlcə docker quraşdırmalısınız.

  1. Əvvəlcə asılılıqları quraşdırmalısınız
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Repozitoriyaya qoşulun
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Sonra docker icma nəşrini quraşdırın
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Başlanğıc və işə docker əlavə edin
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Docker-i sudo olmadan işlədə bilmək üçün docker qrupuna bir istifadəçi əlavə edin
    $ usermod -aG docker user

Növbəti addım docker-compose quraşdırmaqdır. Kommunal bir neçə yolla quraşdırıla bilər, lakin sistemi lazımsız paketlərlə bağlamamaq üçün pip meneceri və virtualenv vasitəsilə quraşdırmağı üstün tuturam.

  1. Pip quraşdırın
    $ sudo yum install python-pip
  2. virtualenv quraşdırın
    $ pip install virtualenv
  3. Sonra, layihə ilə bir qovluq yaratmalı və onu işə salmalısınız. Paketin idarə edilməsi üçün lazım olan hər şeyin olduğu qovluq ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Virtual mühitdən istifadə etməyə başlamaq üçün layihə qovluğunda aşağıdakı əmri yerinə yetirməlisiniz.
    $ source ve/bin/activate
  5. Siz docker-compose quraşdıra bilərsiniz.
    pip install docker-compose

    Konteynerlərin bir-birini görməsi üçün bir şəbəkə yaradaq. Körpü sürücüsü standart olaraq istifadə olunur.

    $ docker network create network

    Sonra, docker-compose konfiqurasiya etməlisiniz, proxy proxy qovluğunda, test saytı test qovluğunda olacaq. Məsələn, example.com domen adından istifadə edirəm

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

    Məzmun 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:

    mühit dəyişəni NGINX_PROXY_CONTAINER letsencrypt konteyneri üçün proxy konteynerini görmək lazımdır. /etc/nginx/certs /etc/nginx/vhost.d və /usr/share/nginx/html qovluqları hər iki konteyner tərəfindən paylaşılmalıdır. Letsencrypt konteynerinin düzgün işləməsi üçün proqram həm 80, həm də 443 portlarında mövcud olmalıdır.

    Məzmun 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]

    Burada mühit dəyişənləri lazımdır ki, proksi serverə sorğunu düzgün emal etsin və düzgün domen adı üçün sertifikat tələb etsin.

    Yalnız docker-compose işləmək qalır

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

Mənbə: www.habr.com

Добавить комментарий