Configuration de l'obtention automatique de certificats letsencrypt avec docker sous linux

J'ai rĂ©cemment changĂ© de serveur virtuel et j'ai dĂ» tout reconfigurer. Je prĂ©fĂšre que le site soit accessible via https et que les certificats letsencrypt soient obtenus et renouvelĂ©s automatiquement. Cela peut ĂȘtre rĂ©alisĂ© en utilisant deux images docker : nginx-proxy et nginx-proxy-companion.

Ce guide explique comment configurer un site sur docker, avec un proxy qui obtient automatiquement Certificats SSL. Un serveur virtuel CentOS 7 est utilisé.

Je suppose que le serveur est déjà acheté, configuré, que l'accÚs se fait par clé, que fail2ban est installé, etc.

Pour commencer, il faut installer docker.

  1. Commencez par installer les dépendances
    $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. Connectez le dépÎt
    $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. Ensuite, installez la version community de docker
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Ajoutez docker au démarrage automatique et démarrez-le
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Ajoutez l'utilisateur au groupe docker, afin de pouvoir exécuter docker sans sudo
    $ usermod -aG docker user

L'Ă©tape suivante consiste Ă  installer docker-compose. L'outil peut ĂȘtre installĂ© de plusieurs maniĂšres, mais je prĂ©fĂšre l'installer via le gestionnaire pip et virtualenv, afin de ne pas encombrer le systĂšme avec des paquets inutiles.

  1. Installez pip
    $ sudo yum install python-pip
  2. Installez virtualenv
    $ pip install virtualenv
  3. Ensuite, vous devez créer un dossier pour le projet et l'initialiser. Le dossier contenant tout le nécessaire pour gérer les paquets s'appellera ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Pour commencer à utiliser l'environnement virtuel, exécutez la commande suivante dans le dossier du projet.
    $ source ve/bin/activate
  5. Vous pouvez installer docker-compose.
    pip install docker-compose

    Pour que les conteneurs se voient entre eux, créons un réseau. Par défaut, le pilote bridge est utilisé.

    $ docker network create network

    Ensuite, vous devez configurer docker-compose. Le proxy sera dans le dossier proxy, le site de test dans le dossier test. Pour l'exemple, j'utilise le nom de domaine example.com.

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

    Contenu proxy/docker-compose.yml

    version: '3'
    
    réseaux:
      par défaut:
        externe:
          nom: réseau
    
    services:
      nginx-proxy:
        nom_du_conteneur: 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:
        nom_du_conteneur: 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:

    Variable d'environnement NGINX_PROXY_CONTAINER est nĂ©cessaire pour que le conteneur letsencrypt puisse voir le conteneur proxy. Les dossiers /etc/nginx/certs, /etc/nginx/vhost.d et /usr/share/nginx/html doivent ĂȘtre utilisĂ©s en commun par les deux conteneurs. Pour le bon fonctionnement du conteneur letsencrypt, l'application doit ĂȘtre accessible sur les ports 80 et 443.

    Contenu test/docker-compose.yml

    version: '3'
    
    réseaux:
      par défaut:
        externe:
          nom: réseau
    
    services:
    
      nginx:
        nom_du_conteneur: nginx
        image: nginx:latest
        environment:
          - VIRTUAL_HOST=example.com
          - LETSENCRYPT_HOST=example.com
          - LETSENCRYPT_EMAIL=admin@example.com

    Ici, les variables d'environnement sont nécessaires pour que le proxy traite correctement la demande au serveur et demande un certificat pour le bon nom de domaine.

    Il ne reste plus qu'Ă  lancer docker-compose

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

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster