Mete kanpe resi otomatik sètifika letsencrypt lè l sèvi avèk docker sou linux

Mwen fèk chanje sèvè vityèl la, epi mwen te oblije configured tout bagay ankò. Mwen prefere ke sit la aksesib atravè https epi kite sètifika yo jwenn ak renouvle otomatikman. Sa a ka reyalize lè w itilize de imaj docker nginx-proxy ak nginx-proxy-companion.

Sa a se yon gid sou kòman yo mete kanpe yon sit entènèt sou Docker, ak yon prokurasyon ki otomatikman resevwa sètifika SSL. Yo itilize sèvè vityèl CentOS 7 la.

Mwen sipoze ke sèvè a te deja achte, konfigirasyon, konekte lè l sèvi avèk yon kle, fail2ban enstale, elatriye.

Premye ou bezwen enstale Docker.

  1. Premye ou bezwen enstale depandans
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Konekte depo
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Lè sa a, enstale Docker edisyon kominote a
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Ajoute Docker nan demaraj epi kouri
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Ajoute yon itilizatè nan gwoup docker pou kapab kouri docker san sudo
    $ usermod -aG docker user

Pwochen etap la se enstale docker-compose. Yo ka enstale sèvis piblik la nan plizyè fason, men mwen prefere enstale atravè manadjè a pip ak virtualenv, pou yo pa ankonbre sistèm nan ak pakè ki pa nesesè.

  1. Enstale pip
    $ sudo yum install python-pip
  2. Enstale virtualenv
    $ pip install virtualenv
  3. Apre sa, ou bezwen kreye yon katab ak pwojè a epi inisyalize li. Katab la ak tout sa ou bezwen pou jere pakè yo pral rele ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Pou kòmanse itilize anviwònman vityèl la, ou bezwen kouri lòd sa a nan katab pwojè a.
    $ source ve/bin/activate
  5. Ou ka enstale docker-compose.
    pip install docker-compose

    Nan lòd pou resipyan yo wè youn ak lòt, nou pral kreye yon rezo. Pa default, yo itilize chofè pon an.

    $ docker network create network

    Apre sa, ou bezwen konfigirasyon docker-compose, prokurasyon an pral nan katab la prokurasyon, sit tès la pral nan katab tès la. Pa egzanp, mwen itilize non domèn example.com

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

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

    Anviwònman varyab NGINX_PROXY_CONTAINER li nesesè pou veso letsencrypt la wè veso prokurasyon an. Dosye /etc/nginx/certs /etc/nginx/vhost.d ak /usr/share/nginx/html yo dwe pataje pa tou de veso yo. Pou veso letsencrypt la travay kòrèkteman, aplikasyon an dwe aksesib sou tou de pò 80 ak 443.

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

    Isit la, varyab anviwònman yo bezwen pou ke prokurasyon an kòrèkteman trete demann lan nan sèvè a epi mande yon sètifika pou non an domèn kòrèk.

    Tout sa ki rete se kouri docker-compose

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

Sous: www.habr.com

Add nouvo kòmantè