Automatesch Empfang vun letsencrypt Certificaten opbauen mat Docker op Linux

Ech hunn viru kuerzem de virtuelle Server geännert, an hu missen alles erëm konfiguréieren. Ech léiwer datt de Site iwwer https zougänglech ass a letsencrypt Certificaten automatesch kritt an erneiert ginn. Dëst kann erreecht ginn andeems Dir zwee Docker-Biller benotzt nginx-Proxy an nginx-Proxy-Companion.

Dëst ass e Guide wéi Dir eng Websäit op Docker opstellt, mat engem Proxy deen automatesch SSL Zertifikater kritt. Den CentOS 7 virtuelle Server gëtt benotzt.

Ech huelen un datt de Server scho kaaft gouf, konfiguréiert, ageloggt mat engem Schlëssel, fail2ban installéiert, etc.

Als éischt musst Dir Docker installéieren.

  1. Als éischt musst Dir Ofhängegkeeten installéieren
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Connect Repository
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Installéiert dann Docker Gemeinschaft Editioun
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Füügt Docker fir ze starten a lafen
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Füügt e Benotzer an den Docker-Grupp fir Docker ouni sudo auszeféieren
    $ usermod -aG docker user

De nächste Schrëtt ass d'Installatioun vun Docker-compose. D'Utility kann op verschidde Manéieren installéiert ginn, awer ech léiwer duerch de Pip Manager a virtualenv ze installéieren, fir de System net mat onnéidege Packagen ze rächen.

  1. Installéiert Pip
    $ sudo yum install python-pip
  2. Installéiert virtualenv
    $ pip install virtualenv
  3. Als nächst musst Dir en Dossier mam Projet erstellen an initialiséieren. Den Dossier mat alles wat Dir braucht fir Packagen ze managen gëtt ve genannt.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Fir d'virtuell Ëmfeld ze benotzen, musst Dir de folgende Kommando am Projet Dossier lafen.
    $ source ve/bin/activate
  5. Dir kënnt docker-compose installéieren.
    pip install docker-compose

    Fir datt d'Container sech géigesäiteg gesinn, kreéiere mir en Netzwierk. Par défaut gëtt de Bréck Chauffer benotzt.

    $ docker network create network

    Als nächst musst Dir Docker-compose konfiguréieren, de Proxy ass am Proxy Dossier, den Test Site ass am Test Dossier. Zum Beispill benotzen ech den Domain Numm example.com

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

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

    Ëmfeld Variabel NGINX_PROXY_CONTAINER et ass néideg fir de Letsencrypt Container de Proxy Container ze gesinn. D' /etc/nginx/certs /etc/nginx/vhost.d an /usr/share/nginx/html Ordner musse vu béide Container gedeelt ginn. Fir datt de letsencrypt Container richteg funktionnéiert, muss d'Applikatioun souwuel um Port 80 wéi och 443 zougänglech sinn.

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

    Hei sinn Ëmfeldvariablen gebraucht fir datt de Proxy d'Ufro un de Server korrekt veraarbecht an e Certificat fir de richtege Domain Numm freet.

    Alles wat bleift ass docker-compose ze lafen

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

Source: will.com

Setzt e Commentaire