تكوين الاستلام التلقائي لشهادات Letsencrypt مع عامل إرساء على نظام Linux

لقد غيرت خادمًا افتراضيًا مؤخرًا ، واضطررت إلى إعداد كل شيء مرة أخرى. أفضل أن يكون الموقع متاحًا عبر https وأن يتم الحصول على الشهادات وتجديدها تلقائيًا. يمكن تحقيق ذلك باستخدام صورتي عامل إرساء nginx-proxy و nginx-proxy-companion.

هذا دليل حول كيفية إعداد موقع على عامل الإرساء ، باستخدام وكيل يتلقى شهادات SSL تلقائيًا. يتم استخدام الخادم الافتراضي CentOS 7.

أفترض أنه تم بالفعل شراء الخادم وتكوينه والوصول إليه يتم عن طريق المفتاح وتثبيت fail2ban وما إلى ذلك.

تحتاج أولاً إلى تثبيت عامل ميناء.

  1. تحتاج أولاً إلى تثبيت التبعيات
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. قم بتوصيل المستودع
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. ثم قم بتثبيت إصدار مجتمع عامل الميناء
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. إضافة عامل ميناء لبدء التشغيل والتشغيل
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. أضف مستخدمًا إلى مجموعة عامل الإرساء لتتمكن من تشغيل عامل الإرساء بدون sudo
    $ usermod -aG docker user

الخطوة التالية هي تثبيت docker-compose. يمكن تثبيت الأداة بعدة طرق ، لكنني أفضل التثبيت من خلال مدير pip و virtualenv ، حتى لا يعيق النظام بحزم غير ضرورية.

  1. تثبيت النقطة
    $ sudo yum install python-pip
  2. قم بتثبيت Virtualenv
    $ pip install virtualenv
  3. بعد ذلك ، تحتاج إلى إنشاء مجلد بالمشروع وتهيئته. سيتم استدعاء المجلد الذي يحتوي على كل ما هو مطلوب لإدارة الحزم ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. لبدء استخدام البيئة الافتراضية ، تحتاج إلى تشغيل الأمر التالي في مجلد المشروع.
    $ source ve/bin/activate
  5. يمكنك تثبيت عامل تركيب.
    pip install docker-compose

    لكي ترى الحاويات بعضها البعض ، فلنقم بإنشاء شبكة. يتم استخدام برنامج تشغيل الجسر بشكل افتراضي.

    $ docker network create network

    بعد ذلك ، تحتاج إلى تكوين docker-compose ، سيكون الوكيل في مجلد الوكيل ، موقع الاختبار في مجلد الاختبار. على سبيل المثال ، أستخدم اسم المجال example.com

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

    محتوى proxy / عامل ميناء 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:

    متغيرات البيئة NGINX_PROXY_CONTAINER مطلوب لحاوية Letsencrypt لرؤية حاوية الوكيل. يجب مشاركة مجلدي / etc / nginx / certs /etc/nginx/vhost.d و / usr / share / nginx / html بواسطة كلتا الحاويات. لكي تعمل حاوية LetsCrypt بشكل صحيح ، يجب أن يكون التطبيق متاحًا على كلا المنفذين 80 و 443.

    محتوى 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]

    هنا ، هناك حاجة إلى متغيرات البيئة حتى يقوم الوكيل بمعالجة الطلب بشكل صحيح إلى الخادم ويطلب شهادة لاسم المجال الصحيح.

    يبقى فقط لتشغيل عامل الميناء

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

المصدر: www.habr.com

إضافة تعليق