توثيق Nibleaf

نقل تثبيت مستضاف ذاتيًا إلى بيئة الإنتاج

أثبت سلامة DNS وTLS والخدمات والتخزين والبريد والبحث والأمان والمراقبة والاستعادة قبل إطلاق Nibleaf مستضاف ذاتيًا.

  • 3 دقيقة قراءة
  • آخر تحديث 22‏/08‏/2026

لا تعني الحاوية التي تظهر بحالة سليمة أن الإطلاق إلى بيئة الإنتاج قد اكتمل. أثبت عمل المسار الكامل بدءًا من DNS وTLS، مرورًا بالتطبيق والتخزين والبريد والنشر والبحث والنسخ الاحتياطي، وانتهاءً بالاستعادة.

التحقق من DNS وTLS

اختبر كل مصدر مقصود على حدة:

  • لوحة التحكم APP_URL؛
  • التخزين STORAGE_PUBLIC_ENDPOINT؛
  • مصدر الإدارة الاختياري؛
  • مشروع واحد تحت SITE_BASE_DOMAIN؛
  • هدف CNAME للنطاق المخصّص؛
  • نطاق مخصّص خارجي حقيقي واحد.

يحتاج نطاق المشاريع بحرف بدل إلى DNS بحرف بدل وشهادة تغطي *.<base-domain>. تتطلب شهادات Let's Encrypt بحرف بدل تحدّي DNS. وبالنسبة إلى النطاقات المخصّصة، حافظ عبر مدخل الشبكة على ترويسة Host الأصلية التي جرى التحقق منها، لأن Nibleaf يستخدمها لاختيار المشروع.

التحقق من سلامة الخدمات

نفّذ من مجلد عملية النشر:

bash
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs migrate
docker compose -f docker-compose.prod.yml logs --tail=200 server worker app

يعرض الخادم وعامل المعالجة (worker) استجابات /health داخلية؛ بينما يطلب فحص سلامة التطبيق /sign-in. أبقِ هذه الفحوص ضمن الشبكة الداخلية أو واجهة loopback. بعد ذلك اختبر السلوك الفعلي: أنشئ حسابًا وتحقق منه، وارفع صورة، وانشر مشروعًا من صفحتين، وابحث عن الصفحة الثانية، واطلب صفحة غير موجودة، وأرسل رسالة إعادة تعيين كلمة المرور.

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

التحقق من حدود الأمان

تأكد مما يلي:

  • لا يمكن الوصول إلى المنافذ الداخلية من الإنترنت؛
  • تتطلب عمليات عامل المعالجة بيانات اعتماد؛
  • تستخدم إعادة توجيه المصادقة وOAuth المصدر العام؛
  • تقتصر بيانات اعتماد تخزين الكائنات على الحاوية المقصودة؛
  • تحمل صفحات HTML العامة ترويسات الأمان المتوقعة وCSP خاصًا بكل طلب؛
  • لا يمكن لمحركات البحث فهرسة صفحات الإدارة وصفحات المصادقة التي تحمل رموزًا؛
  • تتطابق سياسة التسجيل مع الجمهور المقصود؛
  • ترفض قواعد القارئ الخاص والجمهور وJWT صفحة ونتيجة بحث غير ممنوحتين؛
  • تستخدم بيانات اعتماد مزوّد Git الحد الأدنى الموثّق من صلاحيات المستودع؛
  • تخضع النسخ الاحتياطية لتحكم وصول منفصل عن الخدمة الحية.

لا تنشر الأسرار أو محتوى العملاء أو رموز الوصول أو ملفات البيئة الكاملة في السجلات أو لقطات الشاشة أو البلاغات أو مناقشات الدعم.

مراقبة مسار المستخدم

راقب سلامة الحاويات، ومهام النشر والتصدير الفاشلة، وعمق طابور المهام، واستخدام قرص Postgres، واستخدام تخزين الكائنات، وعمر النسخ الاحتياطية، وانتهاء صلاحية الشهادات، واستجابات 5xx، وتسليم البريد. أضف فحصًا خارجيًا للصفحة الرئيسية الأساسية وصفحة منشورة عميقة واحدة، لا لمنفذ التطبيق وحده.

اضبط التنبيهات قبل الإطلاق وسجّل مَن يستجيب لها.

تسجيل بوابة الإطلاق

لا تطلق الخدمة إلا بعد أن يتضمن سجل دائم وسم الصورة وملخّصها الرقمي، ونتيجة الترحيل، وأدلة DNS وTLS، وفحوص 200 وإعادة التوجيه و404 العامة، وأدلة الرفع والبحث، ومعرّفات آخر نسخة احتياطية، ونتيجة استعادة معزولة، واسم المسؤول عن التنبيهات والترقيات.

أكمل النسخ الاحتياطي والاستعادة قبل أول نشر لمحتوى في بيئة الإنتاج.