Konfiguriranje automatskog prijema letsencrypt certifikata s dockerom na linuxu

Nedavno sam promijenio virtuelni server i morao sam sve ponovo podesiti. Više volim da stranica bude dostupna preko https i da se letsencrypt certifikati automatski pribavljaju i obnavljaju. Ovo se može postići korištenjem dvije docker slike nginx-proxy i nginx-proxy-companion.

Ovo je vodič o tome kako postaviti web lokaciju na docker-u, s proxyjem koji automatski prima SSL certifikate. Koristi se virtuelni server CentOS 7.

Pretpostavljam da je server već kupljen, konfigurisan, pristup mu se vrši pomoću ključa, instaliran fail2ban itd.

Prvo morate instalirati docker.

  1. Prvo morate instalirati ovisnosti
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Povežite spremište
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Zatim instalirajte docker community edition
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Dodajte docker za pokretanje i pokretanje
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Dodajte korisnika u docker grupu kako biste mogli pokrenuti docker bez sudoa
    $ usermod -aG docker user

Sljedeći korak je instaliranje docker-compose. Uslužni program se može instalirati na više načina, ali ja radije instaliram preko pip managera i virtualenv-a, kako ne bi zakrčio sistem nepotrebnim paketima.

  1. Instaliraj pip
    $ sudo yum install python-pip
  2. Instalirajte virtualenv
    $ pip install virtualenv
  3. Zatim morate kreirati folder s projektom i inicijalizirati ga. Fascikla sa svime što je potrebno za upravljanje paketima će se zvati ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Da biste počeli da koristite virtuelno okruženje, potrebno je da pokrenete sledeću naredbu u fascikli projekta.
    $ source ve/bin/activate
  5. Možete instalirati docker-compose.
    pip install docker-compose

    Da bi kontejneri vidjeli jedni druge, napravimo mrežu. Upravljački program za most se koristi po defaultu.

    $ docker network create network

    Zatim morate konfigurirati docker-compose, proxy će biti u proxy folderu, a testno mjesto u test folderu. Na primjer, koristim ime domene example.com

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

    Sadržaj 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:

    varijabla okruženja NGINX_PROXY_CONTAINER potrebno da letsencrypt kontejner vidi proxy kontejner. Fascikle /etc/nginx/certs /etc/nginx/vhost.d i /usr/share/nginx/html moraju dijeliti oba kontejnera. Da bi letsencrypt kontejner radio ispravno, aplikacija mora biti dostupna na 80 i 443 portu.

    Sadržaj 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]

    Ovdje su potrebne varijable okruženja kako bi proxy ispravno obradio zahtjev do servera i zatražio certifikat za ispravno ime domene.

    Ostaje samo pokrenuti docker-compose

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

izvor: www.habr.com

Dodajte komentar