انتقل إلى المحتوى الرئيسي

mtls

إعداد وتكوين شهادة mTLS لـ Platform OneEntry باستخدام الرموز وmTLS، بالإضافة إلى نشر التطبيق على خادم مع Nginx وDocker وGitLab

الجزء 1: إعداد mTLS

حماية واجهة برمجة التطبيقات (API)

  1. باستخدام الرمز: قم بإنشاء رمز في إعدادات OneEntry وأضفه إلى رؤوس الطلبات مع معلمة 'x-app-token'، حيث تكون القيمة هي الرمز.
  2. باستخدام mTLS: قم بتمكين خيار mTLS في لوحة التحكم الخاصة بك في OneEntry وقم بإنشاء الشهادة في إعدادات OneEntry.

إعداد الشهادة

  1. في لوحة التحكم الخاصة بك، انتقل إلى علامة التبويب 'الوصول' وقم بالتبديل من الرمز إلى mTLS.
  2. قم بإنشاء شهادة جديدة في OneEntry ('الإعدادات' -> 'شهادات التطبيقات' -> 'إنشاء شهادة جديدة').
  3. قم بتنزيلها إلى جهاز الكمبيوتر الخاص بك واستخراجها إلى مجلد 'cert' في جذر مشروعك.

إعداد البيئة المحلية (باستخدام ReactJS كمثال)

  1. قم بتنزيل ملف setupProxy.js واحفظه في مجلد 'src'.
  2. قم بتحرير معلمة 'target'، وحدد عنوان مشروعك.
  3. قم بتثبيت حزمة 'http-proxy-middleware': 'npm install http-proxy-middleware'.
  4. ابدأ التطبيق.

الجزء 2: تكوين الخادم

إعداد الخادم

  1. تحديث معلومات المستودع: apt update.
  2. إضافة مستودع Docker وتثبيت الحزم: apt install nginx certbot docker-ce pwgen.

تكوين UFW

  1. حظر جميع الاتصالات الواردة: ufw default deny incoming.
  2. السماح بجميع الاتصالات الصادرة: ufw default allow outgoing.
  3. السماح بالاتصالات الواردة عبر TCP على المنافذ 22 و80 و443: ufw allow 22,80,443/tcp.

تكوين SSH

  1. تحرير تكوين خادم SSH: nano /etc/ssh/sshd_config.
  2. تعيين PasswordAuthentication no.
  3. إعادة تشغيل خادم SSH: systemctl restart ssh.

تكوين Nginx

  1. إزالة ملف التكوين الافتراضي: rm /etc/nginx/sites-available/default.
  2. إنشاء ملف تكوين جديد: nano /etc/nginx/sites-available/my_app.
  3. قم بتنزيل وتحرير تكوين Nginx من OneEntry، واستبدل "your_domain.com" بنطاقك.
  4. ثم قم بتشغيل الأمر: ‘ln -s /etc/nginx/sites-available/my_app /etc/nginx/sites-enabled'، واستبدل "my_app" باسم ملف التكوين الخاص بك.
  5. إصدار شهادات SSL باستخدام Certbot: certbot certonly --webroot -w /var/www/html -d your_domain.
  6. تحقق من تجديد الشهادة التلقائي: certbot renew --dry-run.
  7. تحرير مهمة cron الخاصة بـ Certbot لإعادة تحميل تكوين Nginx تلقائيًا بعد إصدار الشهادات: ‘nano /etc/cron.d/certbot'، واستبدل السطر الأخير بـ: echo "0 */12 * * * root certbot -q renew && nginx -s reload" > /etc/cron.d/certbot.
  8. قم بإلغاء تعليق الأسطر في ملف التكوين 'nano /etc/nginx/sites-available/my_app' (حيث 'my_app' هو اسم ملف التكوين الخاص بك).
  9. تحقق من تكوين Nginx: nginx -t.
  10. أعد تحميل Nginx بعد كل تغيير: nginx -s reload.

الجزء 3: نشر التطبيق باستخدام GitLab وGitHub

GitHub

إنشاء مستخدم جديد لـ GitHub Runner

  1. قم بإنشاء كلمة مرور: 'pwgen -s 15 1'.
  2. إنشاء مستخدم جديد: 'useradd -m github-runner'.
  3. تعيين كلمة مرور له: 'passwd github-runner'.
  4. إضافة المستخدم الجديد إلى المجموعات: 'usermod -aG docker github-runner' و 'usermod -aG sudo github-runner'.
  5. تغيير الصدفة لمستخدم GitHub Runner: 'chsh -s /bin/bash github-runner'.
  6. التبديل إلى المستخدم الجديد: 'sudo su - gitlab-runner'.

تكوين GitHub Runner

  1. إنشاء GitHub Runner: انتقل إلى إعدادات المستودع الخاص بك، انقر على 'الإجراءات' واختر 'العدائين'، ثم انقر على 'عداء مستضاف ذاتيًا جديد'.
  2. اتبع التعليمات في كتلة 'التنزيل' وأول أمر في كتلة 'التكوين'.
  3. إضافة العداء إلى بدء التشغيل التلقائي للنظام: 'sudo ./svc.sh install'. ستحتاج إلى إدخال كلمة المرور التي تم إنشاؤها سابقًا.
  4. بدء العداء: 'sudo ./svc.sh start'.
  5. انتقل إلى قسم 'الإجراءات'، انقر على 'العدائين'، وتأكد من أن 'العداء' قيد التشغيل.
  6. العودة إلى المستخدم 'root'.
  7. إنشاء دليل عمل: 'mkdir -p /var/apps/frontend'.
  8. تعيين الأذونات للمستخدم 'github-runner': 'chown -R github-runner:docker /var/apps/frontend'.

تكوين متغيرات البيئة في GitHub

  1. إنشاء متغيرات DOMAIN وMTLS_USER_CERT وMTLS_USER_KEY في مستودع GitHub الخاص بك ('الإعدادات' -> 'الأسرار والمتغيرات').
  2. إنشاء شهادة في OneEntry، أضف الشهادة والمفتاح إلى المتغيرات. في متغير DOMAIN، حدد عنوان مشروعك بدون https.
  3. قم بتنزيل الملف docker-compose.yml وأرشيفين .github و.docker.
  4. ضع docker-compose.yml و.github.zip و.docker.zip في المجلد الجذر لمشروعك واستخرج الأرشيفات (يمكنك حذف الأرشيفات بعد الاستخراج).
  5. قم بتشغيل أمر الدفع في مشروعك.
  6. تحقق من العملية في علامة 'الإجراءات'.
  7. تحقق من إمكانية الوصول إلى التطبيق في المتصفح.
GitLab

تسجيل GitLab Runner

  1. تحديد العلامات 'docker، frontend'.
  2. انتقل إلى 'الإعدادات -> CI/CD -> العدائين' وانقر على زر 'عداء مشروع جديد'.
  3. انتقل إلى الدليل الذي تم إنشاؤه: cd /var/apps/gitlab-runner.
  4. قم بتشغيل الأمر لبدء عملية التسجيل: docker compose run runner register.
  5. أدخل عنوان GitLab، على سبيل المثال، https://gitlab.com/.
  6. احصل على رمز التسجيل من GitLab (في قسم 'العدائين' من المشروع) والصقه في الطرفية.
  7. حدد المنفذ كـ 'docker'.
  8. حدد الصورة الافتراضية كـ docker:20.10.16.

إعداد متغيرات البيئة في GitLab

  1. إنشاء متغيرات DOMAIN وMTLS_USER_CERT وMTLS_USER_KEY في مستودع GitLab الخاص بك ('الإعدادات' -> 'CI/CD' -> 'المتغيرات').
  2. إنشاء شهادة في OneEntry، أضف الشهادة والمفتاح إلى المتغيرات، وحدد عنوان مشروعك بدون https في متغير DOMAIN.
  3. قم بتنزيل الملفات docker-compose.yml و.gitlab-ci.yml وأرشيف .docker، ضع الملفات في جذر مشروعك، وقم بفك ضغط الأرشيفات (يمكنك حذف الأرشيفات بعد فك الضغط).

إعداد تكوين GitLab Runner (منفذ Docker)

  1. إنشاء الدلائل اللازمة: mkdir -p /var/apps/gitlab-runner/volumes/etc/gitlab-runner.
  2. قم بتشغيل الأمر: cat /var/apps/gitlab-runner/docker-compose.yaml version: '3' services: runner: image: 'gitlab/gitlab-runner:v16.2.0' restart: always container_name: 'gitlab-runner' privileged: true volumes: - './volumes/etc/gitlab-runner:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock' EOT.

تكوين GitLab Runner

  1. تحرير ملف التكوين: nano volumes/etc/gitlab-runner/config.toml.
  2. تعيين معلمة privileged إلى true لتمكين Docker-in-Docker.
  3. تغيير قيمة volumes إلى ['/var/run/docker.sock:/var/run/docker.sock', '/cache'] ليعمل Docker بشكل صحيح.
  4. إضافة user = 'gitlab-runner' في بداية الملف لتشغيل العداء كمستخدم ذلك.
  5. حفظ التغييرات والخروج من المحرر.
  6. إعادة تشغيل العداء: 'systemctl restart gitlab-runner'.

تفعيل والتحقق من GitLab Runner

  1. قم بتشغيل الأمر docker compose up -d لبدء العداء.
  2. انتقل إلى GitLab وتحقق من أن العداء نشط ويعمل (يجب أن ترى حالته في قسم 'العدائين' من المشروع).

إعداد عداء إضافي على المضيف (منفذ shell)

  1. اتبع التعليمات لتثبيت عداء إضافي يعمل مباشرة على المضيف (ليس في Docker).
  2. تعيين العلامات للعداء: 'shell، frontend'.

أذونات العداء

  1. إضافة مستخدم جديد إلى المجموعة: 'usermod -aG docker gitlab-runner'.
  2. إذا كنت بحاجة إلى تغيير المالك والمجموعات لملف أو دليل: 'chown -R gitlab-runner:docker /var/apps/frontend'.

التكوين النهائي والاختبار

  1. تأكد من أن جميع العدائين تم تكوينهم بشكل صحيح وجاهزين للاستخدام.
  2. تنفيذ أمر الدفع في مشروعك.
  3. تحقق من التقدم في 'البناء' -> 'خطوط الأنابيب'.
  4. تحقق من توفر التطبيق في المتصفح.

الخاتمة

اتبع هذه الخطوات لإعداد ونشر تطبيقك بنجاح باستخدام OneEntry. حظًا موفقًا في التطوير!