# تهيئة عملية نشر لبيئة الإنتاج

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

انسخ `.env.production.example` من الإصدار الذي تنشره؛ فهو قالب الإعدادات
المرجعي. ثبّت صورةً محددة، واضبط المصادر العامة التي يمكن للمتصفح الوصول
إليها، وأنشئ أسرارًا مستقلة، وأبقِ الخدمات الداخلية خاصة.

## ضبط المصادر العامة

`APP_URL` هو مصدر لوحة التحكم الذي يتعامل معه المتصفح، وأساس المصادقة في
عملية النشر المعتادة. لا تضف شرطة مائلة في نهايته. أبقِ
`NIBLEAF_BIND=127.0.0.1` عندما يعمل وكيل عكسي على المضيف نفسه.

يتيح `SITE_BASE_DOMAIN` مضيفين للمشاريع مثل
`project.docs.example.com`؛ ويتطلب DNS بحرف بدل وشهادة TLS بحرف بدل.
أما `CUSTOM_DOMAIN_CNAME_TARGET` فهو اسم مضيف تديره أنت ويمكن لنطاقات العملاء
أن تشير إليه. اترك ميزات النطاق الاختيارية فارغة إلى أن يصبح مسار DNS وTLS
الخاص بها جاهزًا.

## إنشاء أسرار مستقلة

أنشئ الأسرار على المضيف المستهدف:

```bash
openssl rand -hex 32
openssl rand -base64 24
```

استخدم قيمًا عشوائية منفصلة للمصادقة، وواجهة API الداخلية، وPostgres، وتخزين
الكائنات. لا تنسخ قيمًا من مثال، أو من عملية نشر تطويرية، أو من طلب دعم، أو من
بيئة أخرى. ترفض نقطة دخول بيئة الإنتاج أسرار المصادقة التجريبية المعروفة.

يتطلب Git ثنائي الاتجاه مفتاح تشفير بترميز base64 حجمه 32 بايت بالضبط، وسرًا
منفصلًا لواجهة API وعامل المعالجة (worker) لا يقل عن 32 محرفًا:

```bash
openssl rand -base64 32
openssl rand -hex 32
```

انشر `GIT_CREDENTIAL_ENCRYPTION_KEY` و`GIT_WORKER_SECRET` في الخدمات التي
يسردها ملف Compose الخاص بالإصدار. اقرأ [حدود تدوير مفتاح Git](/use-nibleaf/git-authoring)
قبل تفعيل اتصال بمستودع في بيئة الإنتاج.

## تهيئة تخزين الكائنات

يستخدم الخادم `STORAGE_ENDPOINT` للطلبات الداخلية. ويستخدم متصفح الكاتب
عناوين URL موقّعة مسبقًا بالاعتماد على `STORAGE_PUBLIC_ENDPOINT`، لذلك يجب أن
يكون ذلك المصدر متاحًا للعامة وأن يطابق الطريقة التي تُوقّع بها الطلبات.
أما `STORAGE_PUBLIC_URL` فهو الأساس المستخدم عندما تشير الصفحات المنشورة إلى
الأصول.

بالنسبة إلى maxio المضمّن، وجّه اسم مضيف التخزين العام إلى المنفذ 9000 في
maxio عبر TLS. وبالنسبة إلى R2 أو S3 أو Backblaze B2 أو أي مزوّد آخر متوافق،
تأكد من اتساق نقطة النهاية، والمنطقة، وسلوك نمط المسار، وبيانات الاعتماد،
والحاوية، ومصادر CORS، وعنوان URL العام. ارفع صورة حقيقية وافتحها قبل دعوة
الكتّاب.

## تهيئة التسجيل والبريد

تتطلب بيئة الإنتاج التحقق من البريد الإلكتروني افتراضيًا. اضبط `EMAIL_FROM`
على مُرسِل تم التحقق منه، وهيّئ Postmark أو `SMTP_URL`. أرسل رسالة تحقق ورسالة
إعادة تعيين كلمة المرور إلى صندوق بريد خارجي؛ فلا يستطيع فحص سلامة الحاوية
إثبات وصول الرسالة.

بعد إنشاء حسابات المالكين المقصودين، اضبط `DISABLE_SIGNUP=true` إذا كان ينبغي
إغلاق التسجيل. تظل الحسابات الحالية قادرة على تسجيل الدخول.

## الحفاظ على عنوان العميل خلف الوكيل

مرّر المضيف الأصلي ومخطط HTTPS. لا تهيّئ `TRUSTED_PROXY_HOPS` إلا بعد التقاط
سلسلة التمرير العامة الفعلية وتهيئة مدخل الشبكة لتجاهل ترويسات التمرير غير
الموثوقة. تسمح القيمة المرتفعة أكثر من اللازم للعملاء بالتأثير في العنوان
المستخدم لتحديد المعدل؛ أما القيمة المنخفضة أكثر من اللازم فتجمع حركة المرور
تحت الوكيل.

## حماية واجهات المشغّلين

لا تربط بمنفذ على المضيف في ملف Compose الخاص ببيئة الإنتاج إلا خدمة التطبيق.
أبقِ Postgres وDragonfly وواجهة API وعامل المعالجة (worker) وإدارة maxio وتطبيق
الإدارة الاختياري ضمن شبكة Docker أو واجهة loopback أو شبكة VPN خاصة.

اضبط `WORKBENCH_USER` و`WORKBENCH_PASS` كليهما حتى عندما لا يكون منفذ عامل
المعالجة 4312 منشورًا. استخدم نفق SSH عندما يحتاج المشغّل إلى لوحة تحكم المهام.

راجع [مرجع متغيّرات البيئة](/reference/environment-variables) كاملًا، ثم نفّذ
[قائمة تحقق بيئة الإنتاج](/self-hosting/production). وإذا كان الموقع سيكون
خاصًا، فأكمل [إجراء استعادة وصول القرّاء](/secure-access/private-reader-access) قبل إرسال
الدعوات.
