تخطَّ إلى المحتوى

إنشاء تطبيق GitHub

يبيّن هذا الدليل كيف تعطي خادمك هوية GitHub تخصّه. يستغرق الأمر نحو دقيقتين، ولا يفعله إلا مالك الخادم، ويحدث مرة واحدة لكل خادم.

لربط حسابك بعد ذلك، انظر إعداد تكامل GitHub.

لماذا يحتاج خادمك إلى تطبيقه

قسم بعنوان “لماذا يحتاج خادمك إلى تطبيقه”

يخرج من التسجيل الواحد عملان مختلفان، والتطبيق هو ما يجعل الاثنين صادقين:

العمل ما يجيب عنه لماذا يهم
شخص يسجّل الدخول معرّف عميل التطبيق، عبر تدفق الجهاز تحصل على اعتماد يخصّك، على الخادم وعلى كل جهاز، بلا رمز تلصقه أو تدوره
الخادم يتصرّف معرّف التطبيق + المفتاح الخاص ← رمز التثبيت تكفّ خطافات الويب واستطلاع طلبات السحب ومزامنة التذاكر عن الاعتماد على بقاء رمز إنسان واحد صالحًا

لاحظ ما ليس في الجدول: سر العميل. يصادق تدفق الجهاز في GitHub بمعرّف العميل وحده — طلب رمز الجهاز واستطلاع الرمز معًا — فلا سرّ يُحفظ من أجل تسجيل الدخول.

من غير تطبيق يخصّك يبقى الأول يعمل بمعرّف العميل الذي يشحنه البناء، ويرجع الثاني إلى اعتماد مالك الخادم، فيمضي العمل في الخلفية باعتماد من أتمّ الإعداد أولًا.

  • أنت مالك الخادم — عمليات providerApps.* مقصورة عليه، والبطاقة مخفية عن سواه
  • حساب على GitHub، أو مؤسسة لديك صلاحية إنشاء التطبيقات فيها
  • لا شيء يلزم أن يبلغه العموم: تسجيل الدخول تدفق جهاز، فلا يحتاج الخادم إلى منفذ وارد ولا نفق ولا عنوان URL لرد اتصال ولا نطاق
  1. افتح github.com/settings/apps/new (لمؤسسة: الإعدادات ← إعدادات المطوّر ← تطبيقات GitHub ← تطبيق GitHub جديد)
  2. اسم تطبيق GitHub — أي اسم، وControl Center (yourname) مناسب. يظهر على الإيداعات والتعليقات التي ينشرها الخادم
  3. عنوان URL للصفحة الرئيسية — أي عنوان، مثل https://github.com/your-name
  4. عنوان URL لرد الاتصال — اتركه فارغًا. تدفق الجهاز بلا عنوان
  5. حدّد تفعيل تدفق الجهاز. هذا الإعداد الوحيد الذي لا يعمل تسجيل الدخول من غيره
  6. ألغِ تحديد خطاف الويب ← نشط إلا إذا كنت توصّل خطافات الويب على حدة
  7. تحت أذونات المستودع، امنح على الأقل:
    • المحتويات: قراءة وكتابة
    • البيانات الوصفية: للقراءة فقط (إلزامي)
    • طلبات السحب: قراءة وكتابة
    • المشكلات: قراءة وكتابة، إن كنت تستخدم GitHub Issues للتذاكر، وللبحث في تعليقات محادثة طلب السحب التي يجريها البوت (انظر التحدث إلى Control Center من طلب سحب على GitHub)
    • الفحوصات: للقراءة فقط، لحالة CI في صفحة طلب السحب
  8. تحت أين يمكن تثبيت تطبيق GitHub هذا؟، اختر ما يناسب — «على هذا الحساب فقط» هو المناسب لخادم شخصي
  9. انقر إنشاء تطبيق GitHub

في صفحة التطبيق، فور إنشائه:

القيمة أين
معرّف التطبيق لسان عام، قرب الأعلى
معرّف العميل لسان عام، تحت «أسرار العميل»
المفتاح الخاص توليد مفتاح خاص — يُنزَّل ملف .pem

يُنزَّل ملف المفتاح الخاص مرة واحدة، ولا يعرضه GitHub بعدها. أبقِه حتى تلصقه، وتستطيع دائمًا توليد مفتاح آخر.

سر العميل اختياري، ولا يفيد إلا في أمر واحد: إن تركت «انتهاء صلاحية رموز تفويض المستخدم» مفعّلًا، فهو ما يجدّد رمز الشخص في صمت بدل مطالبته بتسجيل الدخول من جديد كل ثماني ساعات. تسجيل الدخول نفسه لا يستخدمه.

الإعداد الأبسط أن تعطّل انتهاء الصلاحية هذا، فلا يُحتاج إلى سر في أي موضع. إن أبقيته مفعّلًا، ولّد سرًا والصقه في الإعدادات ← الخادم ← تسجيل الدخول الموحّد (بطاقة تطبيقات الموفّرين) — لا متغير بيئة له، ولا يُضمَّن سر في البناء، فيبقى على خادمك.

التطبيق المسجَّل غير المثبَّت يستطيع مصادقة الأشخاص، ولا يقرأ شيئًا.

  1. في صفحة التطبيق، افتح تثبيت التطبيق
  2. ثبّته على حسابك أو مؤسستك
  3. اختر كل المستودعات، أو حدّد المستودعات التي يجب أن يراها هذا الخادم
  1. انتقل إلى الإعدادات ← الخادم ← تسجيل الدخول الموحّد وانزل إلى بطاقة تطبيقات الموفّرين
  2. في كتلة GitHub، اضبط كل حقل:
    • معرّف التطبيق — المعرّف الرقمي
    • المفتاح الخاص — الصق ملف .pem كاملًا، بما فيه سطرَا BEGIN وEND
    • معرّف العميل — من الصفحة نفسها
    • سر العميل — فقط إن ولّدت واحدًا (لتجديد الرمز)
  3. انقر اختبار

يُحلَّل المفتاح عند حفظه، فيُرفض اللصق الناقص أو ذو الصيغة الخاطئة فورًا، قبل أن يفشل طلب في الخلفية بعد ساعات. يمضي اختبار أبعد ويسأل GitHub عن الحسابات التي ثُبّت التطبيق عليها — «محفوظ» و«يعمل» ادّعاءان مختلفان، والثاني وحده يعني أن شيئًا سيعمل.

نقطة التحقق: يظهر في كتلة GitHub «يمكن للخادم التصرف باسم نفسه، ويمكن للأشخاص تسجيل الدخول.»، ويعرض صف GitHub تحت الإعدادات ← مساحة العمل ← الملف الشخصي والهوية ← استضافة الكود الآن تسجيل الدخول عبر GitHub.

اضبطه بمتغيرات البيئة بدل ذلك

قسم بعنوان “اضبطه بمتغيرات البيئة بدل ذلك”

في التثبيت بلا واجهة أو بالسكربت، يبذر الخادم كل حقل من البيئة في أول مرة لا يجد فيها قيمة مخزَّنة:

نافذة طرفيّة
GITHUB_APP_ID=123456
GITHUB_APP_PRIVATE_KEY="$(cat control-center.private-key.pem)"
GITHUB_CLIENT_ID=Iv1.0123456789abcdef

لا أعلام سطر أوامر لهذه القيم — سر على سطر الأوامر يقرأه كل عملية على المضيف عبر ps. البيئة هي الموضع الوحيد لضبطها، وهي تغلب ما يشحنه البناء. .env.template القائمة الكاملة.

في التطوير المحلي يحمل .env في جذر المستودع القيم نفسها، ويمرّرها تطبيق الحاسوب إلى الخادم الذي يطلقه. ضع المفتاح في سطر واحد هناك: قيمة .env سطر واحد، و\n داخل علامتي تنصيص مزدوجتين يُفك إلى سطر جديد.

GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEow…\n-----END RSA PRIVATE KEY-----"

GITHUB_APP_ID وGITHUB_APP_PRIVATE_KEY هما الاسمان اللذان يقرأهما أصلًا وسيط بيانات اعتماد البيئة المعزولة، فالمضيف الذي ضبط رموز الوكيل الدقيقة النطاق يحصل على مسار تسجيل الدخول من غير ضبط إضافي. يحدث البذر مرة واحدة لكل حقل — بعد ذلك تفوز القيمة المخزَّنة، فتعديل الإعدادات لا يُلغى عند إعادة التشغيل التالية.

لا تدفق جهاز في Linear، فتسجيل الدخول فيه جولة عبر المتصفح ويحتاج عنوان URL لرد الاتصال. تعرض بطاقة تطبيقات الموفّرين العنوان الذي تسجّله، حرفيًا.

  1. أنشئ تطبيق OAuth على linear.app/settings/api/applications/new
  2. اضبط عنوان URL لرد الاتصال على العنوان الذي تعرضه البطاقة، حرفيًا
  3. الصق معرّف العميل وسر العميل في كتلة Linear
  4. ويمكنك إضافة مفتاح API لمساحة العمل — هو الاعتماد الذي يستخدمه الخادم لمزامنة التذاكر حين لا يطلب إنسان

يقول حوار تسجيل الدخول إن الموفّر لم يُرجع رمز جهاز

قسم بعنوان “يقول حوار تسجيل الدخول إن الموفّر لم يُرجع رمز جهاز”

تفعيل تدفق الجهاز مطفأ على التطبيق. شغّله تحت عام وأعد المحاولة.

يقول اختبار إن بيانات الاعتماد تعمل لكن التطبيق غير مثبّت في أي موضع

قسم بعنوان “يقول اختبار إن بيانات الاعتماد تعمل لكن التطبيق غير مثبّت في أي موضع”

التسجيل والتثبيت خطوتان منفصلتان. افتح تثبيت التطبيق في صفحة التطبيق وثبّته.

يقول اختبار إن المفتاح الخاص تعذّرت قراءته

قسم بعنوان “يقول اختبار إن المفتاح الخاص تعذّرت قراءته”

الصق ملف .pem كاملًا، بما فيه سطرَا -----BEGIN و-----END. لا يُستخدم مفتاح ed25519 أو EC — تطبيقات GitHub توقّع بـ RSA.

عضو سجّل دخوله ولا يرى مستودعات

قسم بعنوان “عضو سجّل دخوله ولا يرى مستودعات”

التطبيق غير مثبَّت على الحساب الذي يملكها، أو يختار تثبيته مستودعات أخرى. تسجيل دخوله لا يمنح إلا ما يُسمح للتطبيق برؤيته.