Impostazione dell'acquisizione automatica dei certificati letsencrypt utilizzando docker su linux

Di recente ho cambiato server virtuale e ho dovuto configurare tutto da capo. Preferisco che il sito sia accessibile tramite https e che i certificati letsencrypt vengano ottenuti e rinnovati automaticamente. Questo può essere realizzato utilizzando due immagini docker nginx-proxy e nginx-proxy-companion.

Questa guida spiega come configurare un sito su docker, con un proxy che ottiene automaticamente Certificati SSL. Si utilizza un server virtuale CentOS 7.

Presumo che il server sia già acquistato, configurato, l'accesso avvenga tramite chiave, fail2ban sia installato, ecc.

Per prima cosa è necessario installare docker.

  1. Prima di tutto, installare le dipendenze
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Collegare il repository
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Poi installare la community edition di docker
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Aggiungere docker all'avvio automatico e avviarlo
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Aggiungere l'utente al gruppo docker, per avere la possibilità di eseguire docker senza sudo
    $ usermod -aG docker user

Il passo successivo è installare docker-compose. Lo strumento può essere installato in vari modi, ma preferisco installarlo tramite il gestore pip e virtualenv, per non appesantire il sistema con pacchetti superflui.

  1. Installare pip
    $ sudo yum install python-pip
  2. Installare virtualenv
    $ pip install virtualenv
  3. Dopo, è necessario creare una cartella per il progetto e inizializzarla. La cartella contenente tutto il necessario per gestire i pacchetti si chiamerà ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Per iniziare a utilizzare l'ambiente virtuale, è necessario eseguire il seguente comando nella cartella del progetto.
    $ source ve/bin/activate
  5. Si può installare docker-compose.
    pip install docker-compose

    Affinché i container possano vedersi a vicenda, creiamo una rete. Di default viene utilizzato il driver bridge.

    $ docker network create network

    Poi è necessario configurare docker-compose, il proxy sarà nella cartella proxy, il sito di prova nella cartella test. Per esempio utilizzo il nome di dominio example.com

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

    Contenuto proxy/docker-compose.yml

    version: '3'
    
    reti:
      predefinito:
        esterno:
          nome: rete
    
    servizi:
      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 d'ambiente NGINX_PROXY_CONTAINER è necessaria affinché il contenitore letsencrypt possa vedere il contenitore proxy. Le cartelle /etc/nginx/certs, /etc/nginx/vhost.d e /usr/share/nginx/html devono essere condivise da entrambi i contenitori. Per il corretto funzionamento del contenitore letsencrypt, l'applicazione deve essere accessibile sia sulla porta 80 che sulla porta 443.

    Contenuto test/docker-compose.yml

    version: '3'
    
    reti:
      predefinito:
        esterno:
          nome: rete
    
    servizi:
    
      nginx:
        container_name: nginx
        image: nginx:latest
        environment:
          - VIRTUAL_HOST=example.com
          - LETSENCRYPT_HOST=example.com
          - LETSENCRYPT_EMAIL=admin@example.com

    Qui le variabili d'ambiente sono necessarie affinché il proxy gestisca correttamente le richieste al server e richieda un certificato sul nome di dominio corretto.

    Rimane solo da avviare docker-compose

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

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster