Free cloud beta or self-host with the public AGPL-3.0 release.Compare options
كل المقالات
الاستضافة الذاتيةDockerدليل

استضافة منصة توثيق ذاتياً باستخدام Docker Compose

مسار موثق من التثبيت إلى أول نشر يدوي في Nibleaf، مع سلامة الإصدار والنسخ والاستعادة والترقية والتراجع والأمان والمراقبة وتحديد الموارد.

· 15 دقائق قراءة · بقلم

الاستضافة الذاتية قرار ملكية تشغيلية، لا مجرد أمر docker compose up. تصبح مناسبة عندما يستطيع فريقك امتلاك قاعدة البيانات والأصول والأسرار والترقيات والاستعادة والمراقبة. إذا لم تستطع تسمية مالك لهذه الحدود، قد تكون الخدمة المُدارة أو المولد الثابت أبسط.

هذا الدليل يصف مساراً من إصدار محدد إلى أول نشر يدوي، ثم النسخ والاستعادة والتحديث وتحديد الموارد. لا تستخدم فرعاً متحركاً أو وسم latest كهوية إنتاج.

اعرف ما الذي يثبته الإصدار

نزّل artifacts من الإصدار العام المقصود، وتحقق من checksum أو التوقيع المنشور. سمِّ رقم الإصدار وcommit وdigest للصورة. قد يحتوي main على ميزات لم تصل إلى الصورة العامة.

شغّل installer من نسخة راجعتها محلياً. لا تمرر أسراراً في command history إذا كان السكربت يقبل ملف env. احتفظ بنسخة recovery من القيم خارج المضيف وخارج backup المحتوى.

قبل الاعتماد، اقرأ سياسة دعم الإصدار وEOL. المشروع AGPL-3.0؛ فهم الالتزامات القانونية والعلامة التجارية يحتاج إلى مستشار مؤهل، وهذا الدليل ليس نصيحة قانونية.

ارسم الخدمات والحالة الدائمة

الخدمةالدورحالة دائمة؟
appواجهة الإدارة والقارئلا
serverAPI والمصادقة والنشرلا
workerالأعمال الخلفية والتصدير والفهرسةjobs جارية فقط
postgresالمشاريع والصفحات واللقطات والهويةنعم
dragonflyطابور وcacheيعاد بناؤه، لكن افحص الأعمال أثناء القطع
maxioأصول S3-compatible المضمنةنعم

إذا استخدمت S3 أو R2 خارجياً، يصبح bucket جزءاً من حد الاستعادة، ولا ينسخه helper المحلي تلقائياً. اجعل web proxy فقط عاماً، وأبق بقية الخدمات على شبكة Compose.

ثبّت حتى أول نشر يدوي

بعد انتهاء التثبيت:

cd nibleaf
docker compose ps
docker compose logs migrate
docker compose logs --tail=100 server worker app

لا تكمل إذا فشلت migration أو كانت خدمة طويلة العمر تعيد التشغيل. افتح hostname النهائي عبر TLS، وأنشئ المالك، ثم:

  1. افتح المشروع الابتدائي وغيّر جملة مرئية.
  2. انتظر حالة الحفظ.
  3. افتح Preview وتأكد أن المسودة تغيرت بينما الموقع العام يعرض اللقطة السابقة.
  4. اضغط Publish بنفسك وانتظر READY.
  5. افتح الصفحة من متصفح signed-out وافحص النص والصورة والبحث.
  6. اطلب مساراً مفقوداً وتأكد من HTTP 404 حقيقي.
  7. في العربية افحص lang="ar" وdir="rtl" والشيفرة LTR.

النشر الابتدائي الذي ينشئه النظام دليل provisioning، لا يحل محل هذا المسار اليدوي.

اضبط origins والأسرار والبريد والتخزين

يجب أن تتفق URL لوحة الإدارة وأصل المصادقة وقاعدة نطاقات المواقع وURL الأصول وhostname الوكيل. الانحراف يكسر cookies والتحويلات وcanonical والصور حتى لو بدت الحاويات سليمة.

أنشئ أسراراً مستقلة للمصادقة وقاعدة البيانات وhash التحليلات والتخزين. اضبط البريد قبل فرض التحقق، وعطل التسجيل المفتوح إذا كان التثبيت خاصاً. لخدمة S3 افحص endpoint والمنطقة والصلاحيات وCORS وhostname العام معاً.

انسخ واستعد الحد الكامل

تشمل الاستعادة الكاملة PostgreSQL والأصول والأسرار اللازمة وDNS/TLS وإعدادات المزود. قد يغطي scripts/backup.sh قاعدة البيانات وحجم Maxio المضمن عند استخدام نسخة تطابق الإصدار؛ لا يغطي bucket خارجياً أو أسراراً خارج Compose.

قبل backup مخطط، راقب jobs الجارية. لا تقطع عاملاً وسط export أو publish بلا قرار: انتظر إكمال job القابل للإعادة، أو أوقف الإدخال وسجّل ما سيعاد تشغيله. استعادة قاعدة في لحظة وأصول في لحظة أخرى قد تنتج مراجع مفقودة.

استعد في تثبيت نظيف ومعزول، وزود الأسرار الأصلية، وشغّل الصورة المثبتة، وافتح صفحات وصوراً، ثم أعد بناء البحث ونفذ نشراً يدوياً. قِس recovery point وrecovery time؛ وجود archive لا يثبت الاستعادة.

حدّث وتراجع من دون أمنيات

قبل التحديث:

  1. اقرأ release notes ودعم/EOL وتغييرات env.
  2. اختبر backup واستعادة متوافقين.
  3. اسحب digest الهدف.
  4. شغّل migration منفصلة وافحص سجلها.
  5. ابدأ الخدمات واختبر الصحة والمسار العام.
  6. كرر النشر والبحث والصورة وcanonical وsitemap و404.

قد تكون migration forward-only. إذا كتبت النسخة الجديدة بيانات، قد يتطلب التراجع استعادة قاعدة وأصول ما قبل التحديث ثم تشغيل الصورة القديمة. إعادة نشر لقطة محتوى سابقة لا تعكس schema أو secrets أو DNS.

على مضيف Compose واحد، قد تظهر 503 أثناء الاستبدال. لا تدّع zero downtime من دون overlap مثبت ومجسات خارجية مستمرة. إذا كان التوقف غير مقبول، غيّر topology لا صياغة التقرير.

صالح المهام الجارية وحدود الدعم

قبل التحديث أو الاستعادة، افحص مهام النشر والفهرسة والبريد وwebhook والتصدير. سجّل ما يمكن استئنافه وما يجب إعادته بمفتاح عدم تكرار وما سيُهمل. بعد التعافي، نفذ مهمة كاملة من كل نوع حرج؛ استعادة القاعدة والأصول لا تثبت مصالحة العامل والطابور.

اقرأ دعم وEOL للإصدار الدقيق. الشيفرة العامة AGPL-3.0؛ انطباق شروط استخدام الشبكة على تعديلاتك، واستخدام الأسماء والشعارات والنطاقات، مسائل قانونية وعلامات تجارية خارج هذا الدليل. اطلب مستشارًا مؤهلًا للقرارات المهمة. هذا ليس نصيحة قانونية ولا يمنح حقوق علامة.

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

راقب DNS وTLS والوكيل وhealth للخادم وفشل العامل وPostgreSQL وعمليات الأصول والقرص وانتهاء الشهادة وصفحة عامة. افصل liveness عن readiness. راقب عمق الطابور وزمن أقدم job، ولا تعتبر الحاوية السليمة دليلاً على نجاح publish.

حدد الموارد من القياس لا من التخمين

استخدم ورقة ملاحظات الموارد كأسماء أعمدة فقط؛ قيمها توضيحية. اجمع سبعة أيام ممثلة تشمل القراءة والنشر والفهرسة والنسخ وتجربة استعادة.

لكل خدمة قِس الذاكرة المستقرة والذروة وCPU وعمق الطابور والاتصالات وزمن النشر وp95 الخارجي. سجّل المضيف والمراجعة وحجم المحتوى وشكل الحركة والأداة. اترك هامشاً لـcache بارد وburst إعادة المحاولة واستبدال متداخل واستعادة.

توصية 2 GB نقطة بداية لسحب صورة جاهزة، وليست SLA أو حداً عاماً. إذا لم توجد نافذة قياس، تبقى السعة مجهولة.

Compose مناسب لفريق صغير يقبل مضيفاً مفهوماً ويملك عمل التشغيل. إذا أردت تشغيل خدمة ثابتة فقط، قارن Docusaurus أو Starlight. وإذا أردت نقل التشغيل، قيّم Nibleaf Cloud أو خدمة مُدارة أخرى وفق export والوصول والتعافي.

أسئلة شائعة

كم ذاكرة أحتاج لاستضافة منصة توثيق؟
توصية المشروع الابتدائية 2 GB عند سحب صورة مبنية مسبقاً، وليست benchmark للإنتاج. قس المنظومة كاملة مع محتواك وحركتك وذروة النشر قبل اختيار السعة.
ما الذي يجب نسخه احتياطياً؟
انسخ PostgreSQL ومخزن الأصول والأسرار والإعدادات الخارجية اللازمة للاستعادة. حالة cache والطابور قابلة لإعادة البناء عادة، لكن تحقق من jobs الجارية قبل القطع.
هل يحقق Docker Compose انعدام التوقف؟
لا يثبت ذلك بمفرده. قد توجد نافذة استبدال 503 على مضيف واحد. يلزم تداخل نسخ جاهزة وتوجيه واعٍ بالصحة ومجسات خارجية مستمرة لإثبات عدم الانقطاع.

انشر وثائق واضحة بالعربية والإنجليزية

ابدأ مجانًا على Nibleaf Cloud، أو شغّل الإصدار العام المرخّص بـ AGPL على بنيتك التحتية.