Configurazione di a ricezione automatica di certificati letsencrypt cù docker in linux

Recentemente aghju cambiatu un servitore virtuale, è aghju avutu à stallà tuttu di novu. Preferite chì u situ sia accessibile nantu à https è per i certificati di letsencrypt per esse acquistati è rinnuvati automaticamente. Questu pò esse ottenutu usendu duie imagine docker nginx-proxy è nginx-proxy-companion.

Questa hè una guida nantu à cumu cunfigurà un situ in docker, cù un proxy chì riceve automaticamente certificati SSL. U servitore virtuale CentOS 7 hè adupratu.

Assumimu chì u servitore hè digià acquistatu, cunfiguratu, l'accessu à questu hè realizatu da chjave, fail2ban hè stallatu, etc.

Prima avete bisognu di stallà Docker.

  1. Prima avete bisognu di stallà e dipendenze
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Cunnette u repository
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Allora installate l'edizione comunità di docker
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Aghjunghjite docker à l'iniziu è eseguite
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Aghjunghjite un utilizatore à u gruppu docker per pudè eseguisce docker senza sudo
    $ usermod -aG docker user

U prossimu passu hè di stallà docker-compose. L'utilità pò esse installata in parechje manere, ma aghju preferitu à stallà attraversu u pip manager è virtualenv, per ùn impiccà u sistema cù pacchetti innecessarii.

  1. Installa pip
    $ sudo yum install python-pip
  2. Installa virtualenv
    $ pip install virtualenv
  3. Dopu, avete bisognu di creà un cartulare cù u prugettu è inizializà. U cartulare cù tuttu ciò chì hè necessariu per a gestione di pacchetti serà chjamatu ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Per cumincià à utilizà l'ambiente virtuale, avete bisognu di eseguisce u cumandimu seguitu in u cartulare di u prugettu.
    $ source ve/bin/activate
  5. Pudete installà docker-compose.
    pip install docker-compose

    Per chì i cuntenituri si vedanu, creamu una reta. U driver di ponte hè utilizatu per difettu.

    $ docker network create network

    Dopu, avete bisognu di cunfigurà docker-compose, u proxy serà in u cartulare proxy, u situ di prova in u cartulare di prova. Per esempiu, aghju utilizatu u nome di duminiu example.com

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

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

    variabile ambientale NGINX_PROXY_CONTAINER necessariu per u container letsencrypt per vede u containeru proxy. U cartulare /etc/nginx/certs /etc/nginx/vhost.d è /usr/share/nginx/html deve esse spartutu da i dui cuntenituri. Per chì u containeru letsencrypt funziona bè, l'applicazione deve esse dispunibule nantu à i porti 80 è 443.

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

    Quì, e variabili di l'ambienti sò necessarii per chì u proxy processa currettamente a dumanda à u servitore è dumanda un certificatu per u nome di duminiu currettu.

    Resta solu per eseguisce docker-compose

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

Source: www.habr.com

Add a comment