mtls
إعداد وتكوين شهادة الموثوقية المتبادلة (mTLS) لـ Platform OneEntry باستخدام الرموز وmTLS، بالإضافة إلى نشر التطبيق على خادم مع Nginx وDocker وGitLab
الجزء 1: إعداد mTLS
حماية واجهة برمجة التطبيقات (API)
- باستخدام الرمز: قم بإنشاء رمز في إعدادات OneEntry وأضفه إلى رؤوس ال طلبات مع معلمة 'x-app-token'، حيث تكون القيمة هي الرمز.
- باستخدام mTLS: قم بتمكين خيار mTLS في لوحة التحكم الخاصة بك في OneEntry وقم بإنشاء الشهادة في إعدادات OneEntry.
إعداد الشهادة
- في لوحة التحكم الخاصة بك، انتقل إلى علامة التبويب 'الوصول' وانتقل من الرمز إلى mTLS.
- قم بإنشاء شهادة جديدة في OneEntry ('الإعدادات' -> 'شهادات التطبيقات' -> 'إنشاء شهادة جديدة').
- قم بتنزيلها إلى جهاز الكمبيوتر الخاص بك واستخراجها إلى مجلد 'cert' في جذر مشروعك.
إعداد البيئة المحلية (باستخدام ReactJS كمثال)
- قم بتنزيل ملف setupProxy.js واحفظه في مجلد 'src'.
- قم بتحرير معلمة 'target'، وحدد عنوان مشروعك.
- قم بتثبيت حزمة 'http-proxy-middleware': 'npm install http-proxy-middleware'.
- ابدأ التطبيق.
الجزء 2: تكوين الخادم
إعداد الخادم
- تحديث معلومات المستودع: `apt update`.
- إضافة مستودع Docker وتثبيت الحزم: `apt install nginx certbot docker-ce pwgen`.
تكوين UFW
- حظر جميع الاتصالات الواردة: `ufw default deny incoming`.
- السماح بجميع الاتصالات الصادرة: `ufw default allow outgoing`.
- السماح بالاتصالات الواردة عبر TCP على المنافذ 22 و80 و443: `ufw allow 22,80,443/tcp`.
تكوين SSH
- تحرير تكوين خادم SSH: `nano /etc/ssh/sshd_config`.
- تعيين `PasswordAuthentication no`.
- إعادة تشغيل خادم SSH: `systemctl restart ssh`.
تكوين Nginx
- إزالة ملف التكوين الافتراضي: `rm /etc/nginx/sites-available/default`
- إنشاء ملف تكوين جديد: `nano /etc/nginx/sites-available/my_app`.
- قم بتنزيل وتحرير تكوين Nginx من OneEntry، واستبدل "your_domain.com" بنطاقك.
- ثم قم بتشغيل الأمر: ‘ln -s /etc/nginx/sites-available/my_app /etc/nginx/sites-enabled'، واستبدل "my_app" باسم ملف التكوين الخاص بك.
- إصدار شهادات SSL باستخدام Certbot: `certbot certonly --webroot -w /var/www/html -d your_domain`
- تحقق من تجديد الشهادة التلقائي: `certbot renew --dry-run`.
- تحرير مهمة cron الخاصة بـ Certbot لإعادة تحميل تكوين Nginx تلقائيًا بعد إصدار الشهادات: ‘nano /etc/cron.d/certbot'، واستبدل السطر الأخير بـ: `echo "0 */12 * * * root certbot -q renew && nginx -s reload" > /etc/cron.d/certbot`
- قم بإلغاء تعليق الأسطر في ملف التكوين 'nano /etc/nginx/sites-available/my_app' (حيث 'my_app' هو اسم ملف التكوين الخاص بك).
- تحقق من تكوين Nginx: `nginx -t`
- أعد تحميل Nginx بعد كل تغيير: `nginx -s reload`.
الجزء 3: نشر التطبيق باستخدام GitLab وGitHub
GitHub
إنشاء مستخدم جديد لـ GitHub Runner
- قم بإنشاء كلمة مرور: 'pwgen -s 15 1'
- إنشاء مستخدم جديد: 'useradd -m github-runner'
- تعيين كلمة مرور له: 'passwd github-runner'
- إضافة المستخدم الجديد إلى المجموعات: 'usermod -aG docker github-runner' و 'usermod -aG sudo github-runner'.
- تغيير الصدفة لمستخدم GitHub Runner: 'chsh -s /bin/bash github-runner'
- التبديل إلى المستخدم الجديد: 'sudo su - gitlab-runner'.
تكوين GitHub Runner
- إنشاء GitHub Runner: انتقل إلى إعدادات المستودع الخاص بك، انقر على 'الإجراءات' واختر 'Runners'، ثم انقر على 'New self-hosted runner'.
- اتبع التعليمات في كتلة 'تنزيل' وأول أمر في كتلة 'تكوين'.
- إضافة Runner إلى بدء التشغيل التلقائي للنظام: 'sudo ./svc.sh install'. ستحتاج إلى إدخال كلمة المرور التي تم إنشاؤها سابقًا.
- بدء تشغيل Runner: 'sudo ./svc.sh start'.
- انتقل إلى قسم 'الإجراءات'، انقر على 'Runners'، وتأكد من أن 'Runner' قيد التشغيل.
- العودة إلى المستخدم 'root'.
- إنشاء دليل عمل: 'mkdir -p /var/apps/frontend'
- تعيين الأذونات لمستخدم 'github-runner': 'chown -R github-runner:docker /var/apps/frontend'.
تكوين متغيرات البيئة في GitHub
- إنشاء المتغيرات `DOMAIN`، `MTLS_USER_CERT`، و`MTLS_USER_KEY` في مستودع GitHub الخاص بك ('الإعدادات' -> 'الأسرار والمتغيرات').
- إنشاء شهادة في OneEntry، إضافة الشهادة والمفتاح إلى المتغيرات. في متغير `DOMAIN`، حدد عنوان مشروعك بدون https.
- قم بتنزيل الملف docker-compose.yml وأرشيفين .github و .docker.
- ضع docker-compose.yml و.github.zip و.docker.zip في المجلد الجذر لمشروعك واستخرج الأرشيفات (يمكنك حذف الأرشيفات بعد الاستخراج).
- قم بتشغيل أمر الدفع في مشروعك.
- تحقق من العملية في علامة 'الإجراءات'.
- تحقق من إمكانية الوصول إلى التطبيق في المتصفح.
GitLab
تسجيل GitLab Runner
- تحديد العلامات 'docker، frontend'.
- انتقل إلى 'الإعدادات -> CI/CD -> Runners' وانقر على زر 'New project runner'.
- انتقل إلى الدليل الذي تم إنشاؤه: `cd /var/apps/gitlab-runner`.
- قم بتشغيل الأمر لبدء عملية التسجيل: `docker compose run runner register`.
- أدخل عنوان GitLab، على سبيل المثال، https://gitlab.com/.
- احصل على رمز التسجيل من GitLab (في قسم 'Runners' من المشروع) والصقه في الطرفية.
- حدد المنفذ كـ 'docker'.
- حدد الصورة الافتراضية كـ docker:20.10.16.
إعداد متغيرات البيئة في GitLab
- إنشاء المتغيرات `DOMAIN`، `MTLS_USER_CERT`، و`MTLS_USER_KEY` في مستودع GitLab الخاص بك ('الإعدادات' -> 'CI/CD' -> 'المتغيرات').
- إنشاء شهادة في OneEntry، إضافة الشهادة والمفتاح إلى المتغيرات، وتحديد عنوان مشروعك بدون https في متغير `DOMAIN`.
- قم بتنزيل الملفات docker-compose.yml، .gitlab-ci.yml، وأرشيف .docker، وضع الملفات في جذر مشروعك، واستخرج الأرشيفات (يمكنك حذف الأرشيفات بعد الاستخراج).
إعداد تكوين GitLab Runner (منفذ Docker)
- إنشاء الدلائل اللازمة: `mkdir -p /var/apps/gitlab-runner/volumes/etc/gitlab-runner`
- قم بتشغيل الأمر: `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
- تحرير ملف التكوين: `nano volumes/etc/gitlab-runner/config.toml`.
- تعيين معلمة `priviledged` إلى `true` لتمكين Docker-in-Docker.
- تغيير قيمة `volumes` إلى `['/var/run/docker.sock:/var/run/docker.sock', '/cache']` ليعمل Docker بشكل صحيح.
- إضافة `user = 'gitlab-runner'` في بداية الملف لتشغيل Runner كمستخدم ذلك.
- حفظ التغييرات والخروج من المحرر.
- إعادة تشغيل Runner: 'systemctl restart gitlab-runner'.
تفعيل والتحقق من GitLab Runner
- قم بتشغيل الأمر `docker compose up -d` لبدء تشغيل Runner.
- انتقل إلى GitLab وتحقق من أن Runner نشط ويعمل (يجب أن ترى حالته في قسم 'Runners' من المشروع).
إعداد Runner إضافي على المضيف (منفذ shell)
- اتبع التعليمات لتثبيت Runner إضافي يعمل مباشرة على المضيف (ليس في Docker).
- تعيين العلامات لـ Runner: 'shell، frontend'.
أذونات Runner
- إضافة مستخدم جديد إلى المجموعة: 'usermod -aG docker gitlab-runner'
- إذا كنت بحاجة إلى تغيير المالك والمجموعات لملف أو دليل: 'chown -R gitlab-runner:docker /var/apps/frontend'
التكوين النهائي والاختبار
- تأكد من أن جميع Runners تم تكوينها بشكل صحيح وجاهزة للاستخدام.
- تنفيذ أمر الدفع في مشروعك.
- تحقق من التقدم في 'البناء' -> 'خطوط الأنابيب'.
- تحقق من توفر التطبيق في المتصفح.
الخاتمة
اتبع هذه الخطوات لإعداد ونشر تطبيقك بنجاح مع OneEntry. حظًا موفقًا في التطوير!