توصيف الاستلام التلقائي لشهادات allowencrypt باستخدام وحدة النقل في نظام التشغيل 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. إضافة عامل ميناء ل autoload وتشغيل

     $ sudo systemctl enable docker $ sudo systemctl start docker 
  5. أضف مستخدمًا إلى مجموعة عامل الميناء حتى تتمكن من تشغيل عامل التشغيل دون sudo

     $ usermod -aG docker user 

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


  1. تثبيت نقطة

     $ sudo yum install python-pip 
  2. تثبيت virtualenv

     $ pip install virtualenv 
  3. بعد ذلك ، تحتاج إلى إنشاء مجلد مع المشروع وتهيئته. سيتم استدعاء المجلد الذي يحتوي على كل ما تحتاجه لإدارة الحزمة.

     $ mkdir docker $ cd docker $ virtualenv ve 
  4. لبدء استخدام البيئة الافتراضية ، يجب تشغيل الأمر التالي في مجلد المشروع.

     $ source ve/bin/activate 
  5. يمكنك تثبيت عامل ميناء الإنشاء.

     pip install docker-compose 

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

     $ docker network create network 

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

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

    وكيل المحتوى / عامل ميناء 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 بحيث يتيح حاوية تشفير التشفير رؤية الحاوية الوكيل. يجب مشاركة المجلدات / etc / nginx / certs /etc/nginx/vhost.d و / usr / share / nginx / html بواسطة كلتا الحاويتين. لكي تعمل حاوية allowencrypt بشكل صحيح ، يجب أن يكون التطبيق متاحًا على كل من المنفذين 80 و 443.


    محتويات اختبار / عامل ميناء 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 

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


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


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

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


All Articles