mtls
إعداد وتكوين شهادة mTLS لـ Headless CMS OneEntry باستخدام الرموز وmTLS، بالإضافة إلى نشر التطبيق على خادم مع Nginx وDocker وGitLab
الجزء 1: إعداد mTLS
حماية واجهة برمجة التطبيقات
- 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: انتقل إلى إعدادات المستودع الخاص بك، انقر على 'الإجراءات' واختر 'Runners'، ثم انقر على 'New self-hosted runner'.
- 2. اتبع التعليمات في كتلة 'تنزيل' وأول أمر في كتلة 'تكوين'.
- 3. إضافة Runner إلى بدء التشغيل التلقائي للنظام: 'sudo ./svc.sh install'. ستحتاج إلى إدخال كلمة المرور التي تم إنشاؤها سابقًا.
- 4. بدء تشغيل Runner: 'sudo ./svc.sh start'.
- 5. انتقل إلى قسم 'الإجراءات'، انقر على 'Runners'، وتأكد من أن 'Runner' قيد التشغيل.
- 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 -> Runners' وانقر على زر 'New project runner'.
- 3. انتقل إلى الدليل الذي تم إنشاؤه: `cd /var/apps/gitlab-runner`.
- 4. قم بتشغيل الأمر لبدء عملية التسجيل: `docker compose run runner register`.
- 5. أدخل عنوان GitLab، على سبيل المثال، https://gitlab.com/.
- 6. احصل على رمز التسجيل من GitLab (في قسم 'Runners' من المشروع) والصقه في الطرفية.
- 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.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. تحرير ملف التكوين: `nano volumes/etc/gitlab-runner/config.toml`.
- 2. تعيين معلمة `priviledged` إلى `true` لتمكين Docker-in-Docker.
- 3. تغيير قيمة `volumes` إلى `['/var/run/docker.sock:/var/run/docker.sock', '/cache']` ليعمل Docker بشكل صحيح.
- 4. إضافة `user = 'gitlab-runner'` في بداية الملف لتشغيل Runner كمستخدم ذلك.
- 5. حفظ التغييرات والخروج من المحرر.
- 6. إعادة تشغيل Runner: 'systemctl restart gitlab-runner'.
تفعيل والتحقق من GitLab Runner
- 1. قم بتشغيل الأمر `docker compose up -d` لبدء تشغيل Runner.
- 2. انتقل إلى GitLab وتحقق من أن Runner نشط ويعمل (يجب أن ترى حالته في قسم 'Runners' من المشروع).
إعداد Runner إضافي على المضيف (منفذ shell)
- 1. اتبع التعليمات لتثبيت Runner إضافي يعمل مباشرة على المضيف (ليس في Docker).
- 2. تعيين العلامات لـ Runner: 'shell، frontend'.
أذونات Runner
- 1. إضافة مستخدم جديد إلى المجموعة: 'usermod -aG docker gitlab-runner'
- 2. إذا كنت بحاجة إلى تغيير المالك والمجموعات لملف أو دليل: 'chown -R gitlab-runner:docker /var/apps/frontend'
التكوين النهائي والاختبار
- 1. تأكد من أن جميع Runners تم تكوينها بشكل صحيح وجاهزة للاستخدام.
- 2. تنفيذ أمر الدفع في مشروعك.
- 3. تحقق من التقدم في 'البناء' -> 'خطوط الأنابيب'.
- 4. تحقق من توفر التطبيق في المتصفح.
الخاتمة
اتبع هذه الخطوات لإعداد ونشر تطبيقك بنجاح باستخدام OneEntry. حظًا موفقًا في التطوير!