الدليل
مسارَان، لأن القارئ مختلف:
| لمن | يبدأ من | |
|---|---|---|
| التشغيل | فريق onz.one — من يجهّز الخوادم ويشغّل المستأجرين | ops/README.md |
| المنتج | العميل — من يستخدم النظام في شركته | product/README.md |
ما الذي تغيّر عن الدليل القديم
الملفات السابقة (DOCKER_SETUP.md, PLESK_SETUP.md, PORTAINER_SETUP.md, DEPLOY_MULTI_TENANT.md, Plesk_Docker_Setup_Guide.md) حُذفت لا لأنها قديمة فحسب، بل لأن ثلاثًا منها كانت تتناقض، وواحدة تشرح آلية لا وجود لها:
١. قواعد Docker Proxy في بلِسك لا تملك واجهة برمجية. كان PLESK_SETUP.md مبنيًّا عليها بالكامل. التحقّق على الخادم:
plesk ext docker --help
→ Hook ApiCli is not implemented in docker (exit 4)
فهي تُضبط باليد فقط، ولا يمكن أتمتتها — وهو ما ألغى التصميم القائم عليها.
٢. WEB_PORT و ADMS_PORT كانت موصوفة بثلاث طرق متناقضة: «لا تُستعمل إطلاقًا» في ملف، و«فريدة لكل عميل» في ملفين. من يقرأ لا يعرف أيّها يصدّق. في التوجيه الحالي (Traefik) هذه المنافذ غير موجودة أصلًا: الحاويات لا تنشر منافذ، والوسيط يصل إليها على شبكة داخلية.
٣. التوثيق كان يصف عملًا يدويًّا جرت أتمتته. اختيار اسم الشركة والمنافذ لكل عميل صار من عمل TenantProvisioningService.
ملف غلط بجوار ملف صحيح أخطر من غياب الملفين، لذلك حُذفت بدل أن تُترك.
ما بقي كما هو، لأنه خطط ورؤية لا تعليمات تشغيل: BIOMETRIC_ROADMAP.md · DEVICE_ENGINE_PLAN.md · ONZ_PLATFORM_VISION.md
قاعدة في هذا الدليل
كل أمر مكتوب هنا قابل للنسخ والتشغيل كما هو. حيث تلزم قيمة من عندك، تجدها بين قوسين معقوفين هكذا [ضع-القيمة] — لا نكتب <your-value> داخل أمر، لأن الشِل يقرأ < إعادة توجيه ويفشل الأمر برسالة مضلِّلة.
وحيث لم نتحقّق من شيء على خادم فعلي، مكتوب ذلك صراحةً.