Konfigurieren des automatischen Empfangs von Letsencrypt-Zertifikaten mit Docker unter Linux

Ich habe kürzlich einen virtuellen Server geändert und musste alles neu konfigurieren. Ich bevorzuge, dass die Site über https zugänglich ist und letsencrypt-Zertifikate automatisch abgerufen und erneuert werden. Dies kann erreicht werden, indem zwei Docker-Images verwendet werden, Nginx-Proxy und Nginx-Proxy-Begleiter.


Dies ist eine Anleitung zum Einrichten einer Site in Docker mit einem Proxy, der automatisch SSL-Zertifikate empfängt. Der virtuelle CentOS 7-Server wird verwendet.


Ich gehe davon aus, dass der Server bereits gekauft, konfiguriert, per Schlüssel angemeldet, fail2ban installiert usw. wurde.


Zuerst müssen Sie Docker installieren.


  1. Zuerst müssen Sie die Abhängigkeiten installieren

    $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 
  2. Repository verbinden

     $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
  3. Installieren Sie dann das Docker für die Community Edition

     $ sudo yum install docker-ce docker-ce-cli containerd.io 
  4. Fügen Sie Docker zum automatischen Laden hinzu und führen Sie es aus

     $ sudo systemctl enable docker $ sudo systemctl start docker 
  5. Fügen Sie der Docker-Gruppe einen Benutzer hinzu, um Docker ohne sudo ausführen zu können

     $ usermod -aG docker user 

Der nächste Schritt ist die Installation von Docker-Compose. Das Dienstprogramm kann auf verschiedene Arten installiert werden. Ich bevorzuge jedoch die Installation über Pip Manager und Virtualenv, um das System nicht mit unnötigen Paketen zu verstopfen.


  1. Installieren Sie pip

     $ sudo yum install python-pip 
  2. Installieren Sie virtualenv

     $ pip install virtualenv 
  3. Als Nächstes müssen Sie einen Ordner mit dem Projekt erstellen und initialisieren. Der Ordner mit allem, was Sie für die Paketverwaltung benötigen, heißt ve.

     $ mkdir docker $ cd docker $ virtualenv ve 
  4. Um die virtuelle Umgebung zu verwenden, müssen Sie den folgenden Befehl im Projektordner ausführen.

     $ source ve/bin/activate 
  5. Sie können Docker-Compose installieren.

     pip install docker-compose 

    Erstellen Sie ein Netzwerk, damit sich die Container sehen können. Standardmäßig wird der Brückentreiber verwendet.

     $ docker network create network 

    Als Nächstes müssen Sie Docker-Compose konfigurieren. Der Proxy befindet sich im Proxy-Ordner, die Testsite im Testordner. Zum Beispiel verwende ich den Domainnamen example.com

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

    Inhaltsproxy / 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: 

    Die Umgebungsvariable NGINX_PROXY_CONTAINER wird benötigt, damit der letsencrypt-Container den Proxy-Container sieht. Die Ordner / etc / nginx / certs /etc/nginx/vhost.d und / usr / share / nginx / html müssen von beiden gemeinsam genutzt werden. Damit der letsencrypt-Container ordnungsgemäß funktioniert, muss die Anwendung sowohl auf Port 80 als auch auf Port 443 verfügbar sein.


    Inhalt von 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 - LETSENCRYPT_EMAIL=admin@example.com 

    Hier werden Umgebungsvariablen benötigt, damit der Proxy die Anforderung an den Server korrekt verarbeitet und ein Zertifikat für den richtigen Domänennamen anfordert.


    Es bleibt nur Docker-Compose auszuführen


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

Source: https://habr.com/ru/post/de445448/


All Articles