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

mtls

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

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

حماية واجهة برمجة التطبيقات
  1. 1. باستخدام الرمز: قم بإنشاء رمز في إعدادات OneEntry وأضفه إلى رؤوس الطلبات مع معلمة 'x-app-token'، حيث تكون القيمة هي الرمز
  2. 2. باستخدام mTLS: قم بتمكين خيار mTLS في لوحة التحكم الخاصة بك في OneEntry وقم بإنشاء الشهادة في إعدادات OneEntry.
إعداد الشهادة
  1. 1. في لوحة التحكم الخاصة بك، انتقل إلى علامة التبويب 'الوصول' وانتقل من الرمز إلى mTLS.
  2. 2. قم بإنشاء شهادة جديدة في OneEntry ('الإعدادات' -> 'شهادات التطبيق' -> 'إنشاء شهادة جديدة').
  3. 3. قم بتنزيلها إلى جهاز الكمبيوتر الخاص بك واستخراجها إلى مجلد 'cert' في جذر مشروعك.
إعداد البيئة المحلية (باستخدام ReactJS كمثال)
  1. 1. قم بتنزيل ملف setupProxy.js واحفظه في مجلد 'src'.
  2. 2. قم بتحرير معلمة 'target'، وحدد عنوان مشروعك.
  3. 3. قم بتثبيت حزمة 'http-proxy-middleware': 'npm install http-proxy-middleware'.
  4. 4. ابدأ التطبيق.

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

إعداد الخادم
  1. 1. تحديث معلومات المستودع: `apt update`.
  2. 2. أضف مستودع Docker وقم بتثبيت الحزم: `apt install nginx certbot docker-ce pwgen`.
تكوين UFW
  1. 1. حظر جميع الاتصالات الواردة: `ufw default deny incoming`.
  2. 2. السماح بجميع الاتصالات الصادرة: `ufw default allow outgoing`.
  3. 3. السماح بالاتصالات الواردة عبر TCP على المنافذ 22 و80 و443: `ufw allow 22,80,443/tcp`.
تكوين SSH
  1. 1. تحرير تكوين خادم SSH: `nano /etc/ssh/sshd_config`.
  2. 2. تعيين `PasswordAuthentication no`.
  3. 3. إعادة تشغيل خادم SSH: `systemctl restart ssh`.
تكوين Nginx
  1. 1. إزالة ملف التكوين الافتراضي: `rm /etc/nginx/sites-available/default`
  2. 2. إنشاء ملف تكوين جديد: `nano /etc/nginx/sites-available/my_app`.
  3. 3. قم بتنزيل وتحرير تكوين Nginx من OneEntry، واستبدل "your_domain.com" بنطاقك.
  4. 4. ثم قم بتشغيل الأمر: ‘ln -s /etc/nginx/sites-available/my_app /etc/nginx/sites-enabled'، واستبدل "my_app" باسم ملف التكوين الخاص بك.
  5. 5. إصدار شهادات SSL باستخدام Certbot: `certbot certonly --webroot -w /var/www/html -d your_domain`
  6. 6. تحقق من تجديد الشهادة التلقائي: `certbot renew --dry-run`.
  7. 7. تحرير مهمة cron الخاصة بـ Certbot لإعادة تحميل تكوين Nginx تلقائيًا بعد إصدار الشهادات: ‘nano /etc/cron.d/certbot'، واستبدل السطر الأخير بـ: `echo "0 */12 * * * root certbot -q renew && nginx -s reload" > /etc/cron.d/certbot`
  8. 8. قم بإلغاء تعليق الأسطر في ملف التكوين 'nano /etc/nginx/sites-available/my_app' (حيث 'my_app' هو اسم ملف التكوين الخاص بك).
  9. 9. تحقق من تكوين Nginx: `nginx -t`
  10. 10. أعد تحميل Nginx بعد كل تغيير: `nginx -s reload`.

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

GitHub
إنشاء مستخدم جديد لـ GitHub Runner
  1. 1. قم بإنشاء كلمة مرور: 'pwgen -s 15 1'
  2. 2. إنشاء مستخدم جديد: 'useradd -m github-runner'
  3. 3. تعيين كلمة مرور له: 'passwd github-runner'
  4. 4. إضافة المستخدم الجديد إلى المجموعات: 'usermod -aG docker github-runner' و 'usermod -aG sudo github-runner'.
  5. 5. تغيير الصدفة لمستخدم GitHub Runner: 'chsh -s /bin/bash github-runner'
  6. 6. التبديل إلى المستخدم الجديد: 'sudo su - gitlab-runner'.
تكوين GitHub Runner
  1. 1. إنشاء GitHub Runner: انتقل إلى إعدادات المستودع الخاص بك، انقر على 'الإجراءات' واختر 'Runners'، ثم انقر على 'New self-hosted runner'.
  2. 2. اتبع التعليمات في كتلة 'تنزيل' وأول أمر في كتلة 'تكوين'.
  3. 3. إضافة Runner إلى بدء التشغيل التلقائي للنظام: 'sudo ./svc.sh install'. ستحتاج إلى إدخال كلمة المرور التي تم إنشاؤها سابقًا.
  4. 4. بدء تشغيل Runner: 'sudo ./svc.sh start'.
  5. 5. انتقل إلى قسم 'الإجراءات'، انقر على 'Runners'، وتأكد من أن 'Runner' قيد التشغيل.
  6. 6. العودة إلى المستخدم 'root'.
  7. 7. إنشاء دليل عمل: 'mkdir -p /var/apps/frontend'
  8. 8. تعيين الأذونات لمستخدم 'github-runner': 'chown -R github-runner:docker /var/apps/frontend'.
تكوين متغيرات البيئة في GitHub
  1. 1. إنشاء المتغيرات `DOMAIN`، `MTLS_USER_CERT`، و `MTLS_USER_KEY` في مستودع GitHub الخاص بك ('الإعدادات' -> 'الأسرار والمتغيرات').
  2. 2. إنشاء شهادة في OneEntry، إضافة الشهادة والمفتاح إلى المتغيرات. في متغير `DOMAIN`، حدد عنوان مشروعك بدون https.
  3. 3. قم بتنزيل الملف docker-compose.yml وأرشيفين .github و .docker.
  4. 4. ضع docker-compose.yml و .github.zip و .docker.zip في المجلد الجذر لمشروعك واستخرج الأرشيفات (يمكنك حذف الأرشيفات بعد الاستخراج).
  5. 5. قم بتشغيل أمر الدفع في مشروعك.
  6. 6. تحقق من العملية في علامة التبويب 'الإجراءات'.
  7. 7. تحقق من إمكانية الوصول إلى التطبيق في المتصفح.
GitLab
تسجيل GitLab Runner
  1. 1. تحديد العلامات 'docker، frontend'.
  2. 2. انتقل إلى 'الإعدادات -> CI/CD -> Runners' وانقر على زر 'New project runner'.
  3. 3. انتقل إلى الدليل الذي تم إنشاؤه: `cd /var/apps/gitlab-runner`.
  4. 4. قم بتشغيل الأمر لبدء عملية التسجيل: `docker compose run runner register`.
  5. 5. أدخل عنوان GitLab، على سبيل المثال، https://gitlab.com/.
  6. 6. احصل على رمز التسجيل من GitLab (في قسم 'Runners' من المشروع) والصقه في الطرفية.
  7. 7. حدد المنفذ كـ 'docker'.
  8. 8. حدد الصورة الافتراضية كـ docker:20.10.16.
إعداد متغيرات البيئة في GitLab
  1. 1. إنشاء المتغيرات `DOMAIN`، `MTLS_USER_CERT`، و `MTLS_USER_KEY` في مستودع GitLab الخاص بك ('الإعدادات' -> 'CI/CD' -> 'المتغيرات').
  2. 2. إنشاء شهادة في OneEntry، إضافة الشهادة والمفتاح إلى المتغيرات، وتحديد عنوان مشروعك بدون https في متغير `DOMAIN`.
  3. 3. قم بتنزيل الملفات docker-compose.yml، .gitlab-ci.yml، وأرشيف .docker، ضع الملفات في جذر مشروعك، واستخرج الأرشيفات (يمكنك حذف الأرشيفات بعد الاستخراج).
إعداد تكوين GitLab Runner (منفذ Docker)
  1. 1. إنشاء الدلائل اللازمة: `mkdir -p /var/apps/gitlab-runner/volumes/etc/gitlab-runner`
  2. 2. قم بتشغيل الأمر: `cat \ /var/apps/gitlab-runner/docker-compose.yamlversion: '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. 1. تحرير ملف التكوين: `nano volumes/etc/gitlab-runner/config.toml`.
  2. 2. تعيين معلمة `priviledged` إلى `true` لتمكين Docker-in-Docker.
  3. 3. تغيير قيمة `volumes` إلى `['/var/run/docker.sock:/var/run/docker.sock', '/cache']` ليعمل Docker بشكل صحيح.
  4. 4. إضافة `user = 'gitlab-runner'` في بداية الملف لتشغيل Runner كمستخدم ذلك.
  5. 5. حفظ التغييرات والخروج من المحرر.
  6. 6. إعادة تشغيل Runner: 'systemctl restart gitlab-runner'.
تفعيل والتحقق من GitLab Runner
  1. 1. قم بتشغيل الأمر `docker compose up -d` لبدء تشغيل Runner.
  2. 2. انتقل إلى GitLab وتحقق من أن Runner نشط ويعمل (يجب أن ترى حالته في قسم 'Runners' من المشروع).
إعداد Runner إضافي على المضيف (منفذ shell)
  1. 1. اتبع التعليمات لتثبيت Runner إضافي يعمل مباشرة على المضيف (ليس في Docker).
  2. 2. تعيين العلامات لـ Runner: 'shell، frontend'.
أذونات Runner
  1. 1. إضافة مستخدم جديد إلى المجموعة: 'usermod -aG docker gitlab-runner'
  2. 2. إذا كنت بحاجة إلى تغيير المالك والمجموعات لملف أو دليل: 'chown -R gitlab-runner:docker /var/apps/frontend'

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

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

الخاتمة

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