المتطلبات المسبقة
يُعد Overleaf مشروعًا نموذجيًا مفتوح المصدر قائمًا على بنية الخدمات المصغّرة (microservices)، حيث تعمل جميع الخدمات داخل Docker.- الشيفرة المصدرية الرسمية لإصدار Community Edition موجودة على GitHub Overleaf Official.
- الشيفرة المصدرية لـ Overleaf-CEP متاحة على GitHub Yu-i-i/Overleaf.
- إصدار Overleaf Pro متاح على GitHub Ayaka-notes/overleaf-pro.
نظرًا لأن الخوادم التي تحتوي على 8 أنوية معالج أو أكثر تكون عادةً باهظة الثمن، يُوصى بشدة باستخدام حاسوبك المحلي للتطوير.
- خادم أو حاسوب مكتبي قوي للتطوير
- إصدار حديث ومستقر من Ubuntu LTS (مثل Ubuntu 24.04)
- بيئة Docker وGit
دليل الإعداد
سنستخدم هنا overleaf-cep كمثال لتوضيح كيفية إعداد بيئة تطوير Overleaf.1
سحب الشيفرة المصدرية
أولًا، لنقم باستنساخ المستودع:
bash
2
مزامنة package-lock.json
نظرًا لأن Overleaf يُطوَّر في مستودع داخلي، فمن المرجح جدًا أن يصبح ملف إذا لم يكن nodejs مثبتًا لديك، فلا تقلق، يمكنك استخدام
package-lock.json غير متزامن بسبب بعض مشكلات التطوير. نحتاج إلى تشغيل الأمر التالي لمزامنته (إذا كانت لديك بيئة nodejs محلية):bash
docker مباشرةً لتشغيل الأمر نفسه. شغّله من جذر مستودع Overleaf:bash
3
بناء صورة التطوير
يوفر Overleaf مجلدًا مخصصًا
/develop لتخزين سكربتات التطوير. ما عليك سوى بناء الخدمات:bash
إذا نفدت ذاكرة RAM لدى Docker أثناء بناء الخدمات بالتوازي، فأنشئ ملف
.env في هذا المجلد يحتوي على COMPOSE_PARALLEL_LIMIT=1.4
تشغيل جميع الخدمات المصغّرة
ثم شغّل الخدمات:بمجرد تشغيل الخدمات، افتح http://localhost/launchpad لإنشاء أول حساب مسؤول.
bash
يجب تشغيل
bin/up قبل تشغيل الأمر bin/dev. وإلا فقد تواجه سلسلة من مشكلات الأذونات.افتراضيًا، لا تكون صلاحيات المسؤول متاحة. تحتاج إلى إضافة ما يلي إلى
develop/dev.env. بعد ذلك، يمكنك الوصول إلى لوحة الإدارة.TeX Live
يتطلب إنشاء ملف PDF بناء صورة TeX Live لمعالجة الترجمة داخل Docker:.env في هذا المجلد يحتوي على DOCKER_SOCKET_PATH=/var/run/docker.sock.raw
يمكنك أيضًا استخدام ayaka-notes/texlive-full، ويمكنك استخدام الوسم base، وهو الإصدار الأدنى من texlive.
التطوير
لتجنب تشغيلbin/build && bin/up بعد كل تغيير في الشيفرة، يمكنك تشغيل Overleaf Community Edition في وضع التطوير، حيث تُحدَّث الخدمات تلقائيًا عند تغيير الشيفرة.
للقيام بذلك، استخدم السكربت المضمّن bin/dev:
node --watch، الذي يراقب الشيفرة تلقائيًا ويعيد تشغيل الخدمات عند الحاجة.
لتحسين الأداء، يمكنك تشغيل مجموعة فرعية فقط من الخدمات في وضع التطوير عن طريق تمرير قائمة مفصولة بمسافات إلى السكربت bin/dev:
سيؤدي تشغيل خدمة
web في وضع التطوير إلى تحديث خدمة web فقط عند تغيير شيفرة الواجهة الخلفية. ولتحديث شيفرة الواجهة الأمامية تلقائيًا أيضًا، تأكد من تشغيل خدمة webpack في وضع التطوير كذلك.تصحيح الأخطاء
عند التشغيل في وضع التطوير، تكشف معظم الخدمات منفذًا لتصحيح الأخطاء يمكنك ربط مصحح أخطاء به، مثل أداة الفحص في Chrome Dev Tools أو مصحح مدمج في بيئة تطوير متكاملة (IDE). يوضح الجدول التالي المنفذ المكشوف على الجهاز المضيف لكل خدمة:
للاتصال بخدمة باستخدام التصحيح عن بُعد في Chrome، انتقل إلى chrome://inspect/ وتأكد من تحديد Discover network targets. ثم انقر على Configure… وأضف إدخالًا
localhost:[service port] لكل خدمة تريد ربط مصحح الأخطاء بها.
بعد إضافة الإدخال، ستظهر الخدمة كـ Remote Target يمكنك فحصها وتصحيح أخطائها.
السجلات
في بيئة التطوير، يوفر overleaf السكربتbin/logs، لكنك تحتاج إلى تثبيت بعض الاعتماديات:

