يوثق دليل Docker الحالي لـ Jitsi تغييرًا هامًا في عملية النشر: فمنذ الإصدار 1000 stable-11146، تعمل حاوياتها بمعرف مستخدم/مجموعة غير مميز (UID/GID 1000)، ويجب أن تكون مجلدات البيانات الدائمة قابلة للكتابة من قِبل مستخدم الحاوية هذا. كما لم تعد خدمة Jibri بحاجة إلى هذه SYS_ADMINالإمكانية. لذا، يُنصح بعدم نسخ الأدلة القديمة التي توصي باستخدام حاويات مميزة أو 777صلاحيات واسعة النطاق إلى عملية نشر حالية دون مراجعة التعليمات الخاصة بالإصدار.
يستخدم هذا الدليل Docker Compose لتثبيت Jitsi Meet مُستضاف ذاتيًا. وهو يتبع مثالًا افتراضيًا واضحًا: فريق Riverview يُشغّل Jitsi بالفعل على [عنوان URL] meet.example.net، ويخزن الإعدادات في [موقع ملف الإعدادات] /opt/jitsi-meet-cfg، ويريد من المشرفين تسجيل الاجتماعات محليًا وبثها أحيانًا إلى وجهة RTMP. هذا مثال على الإعدادات، وليس تقريرًا عن تثبيت أو اختبار حقيقي.
ملاحظة توضيحية: الصور المعروضة أدناه هي أمثلة تخطيطية، وليست لقطات من خادم حقيقي؛ مخرجات الأوامر المعروضة وحالات الاجتماع هي لأغراض التوضيح فقط.
ما يفعله جبري، وما يحتاجه
Jibri هي البنية التحتية للبث التابعة لـ Jitsi لتسجيل المؤتمرات أو بثها مباشرةً. تنضم Jibri إلى الاجتماع عبر جلسة متصفح، وتلتقط الصوت والفيديو، ثم تُشفّر الناتج. ولذلك، يعتمد إعداد Jibri الفعال على توافق خدمة Jitsi على الويب، وخادم Prosody XMPP، وJicofo على حساب المُسجّل الداخلي وغرفة Jibri "brewery" حيث تُعلن النسخ المتاحة عن نفسها.
استخدم تثبيتًا كاملاً لـ Jitsi Meet تحت إدارتك؛ لا يمكن ربط Jibri بخدمة meet.jit.si العامة كما لو كانت خادمك الخاص. يوضح مشروع Jibri الأصلي تشغيله على جهاز منفصل أو جهاز افتراضي، دون أي استخدام غير ذي صلة لشاشته أو أجهزة الصوت الخاصة به. تُضمّن حزمة Docker Compose الرسمية Jibri كخدمة إضافية. بالنسبة للتثبيتات الصغيرة، يمكن أن يكون ذلك عبارة عن حاوية منفصلة على مضيف Compose؛ أما للاستخدام المستدام، فخصص له وحدة معالجة مركزية وذاكرة ومساحة تخزين كافية، أو ضعه على مضيف ذي موارد مناسبة.
يمكن لنسخة واحدة من Jibri التعامل مع جلسة تسجيل أو بث واحدة في كل مرة. إذا كان Riverview يتوقع جلسات متزامنة، فعليه تخطيط مجموعة Jibri تضم نسخًا متعددة، مع مراعاة إعدادات إعادة توجيه الصوت الإضافية الموضحة في دليل Jitsi. إن إضافة المزيد من الحاويات دون أجهزة صوتية فريدة لا يُعد خطة توسع كاملة.
مثال على إعدادات البيئة لتمكين Jibri؛ قيم كلمة المرور عبارة عن عناصر نائبة مخفية.
الخطوة 1: تجهيز بيئة Docker Jitsi Meet
ابدأ بإصدار رسمي من Docker Jitsi Meet وملفات Compose الخاصة به. احتفظ .envبالملفات من نفس الإصدار. في ملف البيئة، فعّل التسجيل.
ENABLE_RECORDING=1
يستخدم إعداد Compose الخاص بـ Jitsi حسابات XMPP داخلية لـ Jibri نفسه ولجلسة متصفح المُسجِّل. عيّن قيمًا قوية ومميزة لكلمات مرور Jibri والمُسجِّل، واحرص على سريتها. بالنسبة للبنية الجديدة كليًا، gen-passwords.shيمكن لبرنامج المشروع النصي إنشاء كلمات مرور الخدمة الداخلية. سيؤدي ذلك إلى تغيير ملف البيئة، لذا قم بعمل نسخة احتياطية منه أولًا. إذا كانت بنية Jitsi قيد التشغيل بالفعل، فلا تُعِد إنشاء جميع كلمات المرور بشكل عشوائي: يجب أن تتلقى جميع المكونات قيد التشغيل بيانات الاعتماد المُحدَّثة المطابقة أثناء إعادة التشغيل المُخطَّطة.
في مثال ريفرفيو، ENABLE_RECORDING=1يُعدّ هذا الخيار مطلوبًا، بينما يُوفّر قالب بيئة الإصدار أسماء المستخدمين والإعدادات الافتراضية لمستخدم XMPP، ومستخدم المُسجّل، ومنصة Brewery MUC، ومسار التخزين، وخيارات أخرى. يُرجى عدم لصق كلمات المرور في مشكلة عامة، أو لقطة شاشة طرفية، أو دردشة اجتماع مشتركة.
قم بإعداد دليل Jibri الدائم لمستخدم الحاوية غير المميز قبل بدء الخدمة.
الخطوة الثانية: إنشاء وحدة تخزين دائمة قابلة للكتابة
يجب أن تبقى التسجيلات محفوظة بعد استبدال الحاوية، لذا يقوم إعداد Compose الخاص بـ Jitsi بتثبيت وحدة تخزين مضيفة دائمة لـ Jibri. في المثال المذكور CONFIG=/opt/jitsi-meet-cfg، يكون دليل المضيف هو /opt/jitsi-meet-cfg/storage/jibri. أنشئه قبل بدء الخدمة واجعله قابلاً للكتابة بواسطة UID/GID الخاص بالحاوية 1000.
يجب أن تُظهر القائمة الرقمية المالك والمجموعة 1000. استخدم المسار الفعلي CONFIGمن ملف بيئتك إذا كان مختلفًا. تجنب تغيير ملكية دليل تكوين Jitsi بالكامل بشكل متكرر؛ طبّق الملكية المطلوبة على مسار تخزين Jibri، واحتفظ بالتسجيلات الموجودة عند تعديل مضيف قائم. في أنظمة SELinux، احتفظ بإعدادات تسمية وحدة التخزين من ملف Compose الرسمي المطابق بدلاً من حذفها.
يمكن تهيئة دليل التسجيل الخاص بالحاوية؛ والمثال الموثق في الدليل JIBRI_RECORDING_DIRهو `<اسم الدليل /storage/recordings>`، المُثبَّت أسفل دليل تخزين Jibri الخاص بالمضيف. تحقق من قالب بيئة الإصدار قبل تغييره. تأكد من أن المضيف لديه مساحة كافية على القرص وخطة احتفاظ بالبيانات: قد يملأ مسجل البيانات مساحة تخزين صغيرة بمرور الوقت.
الخطوة 3: ابدأ تشغيل Jibri باستخدام ملف Compose المطابق
من الدليل الذي يحتوي على ملفات Jitsi Compose الرسمية وملف البيئة المُهيأ، ابدأ تشغيل الحزمة الأساسية باستخدام تجاوز Jibri:
docker compose -f docker-compose.yml -f jibri.yml up -d
يستخدم الدليل الرسمي نمط Compose هذا لإضافة Jibri إلى نشر Docker. يحدد ملف Jibri المُعدّل صورة حاوية الخدمة، وتكوينها، ومواقع تخزينها، وتخصيص الذاكرة المشتركة. استخدم الملف المرفق مع الإصدار الذي اخترته؛ تجنب مزج الإصدار الحالي jibri.ymlمع إصدار أقدم .envأو حزمة Compose.
تحقق مما إذا كانت خدمة Jibri تعمل بشكل مستمر، وراجع سجلاتها مع Jicofo و Prosody:
يُعد تشغيل الحاوية فحصًا أوليًا، وليس دليلًا على إمكانية تسجيل المؤتمر. يجب على Jibri المصادقة على مضيف XMPP الصحيح والانضمام إلى غرفة الدردشة الداخلية المتوقعة. إذا أظهرت السجلات حالات فشل في المصادقة، فقارن نطاق XMPP، وغرفة الدردشة الداخلية، وحساب Jibri، وحساب المُسجِّل، وكلمات المرور بين ملف البيئة وتكوين الخدمة المُنشأ. يجب أن تتطابق القيم؛ إذ أن تغيير كلمة مرور أحد المكونات فقط سيؤدي إلى فشل عملية المصافحة.
قم بتشغيل خدمة Jibri Compose وافحص حالتها؛ هذه الشاشة توضيحية وليست دليلاً على عملية نشر تم اختبارها.
الخطوة 4: اختبار التسجيل وبث RTMP
انضم إلى اجتماع تجريبي meet.example.netباستخدام حساب مشرف. في قائمة "المزيد من الإجراءات" الخاصة بالاجتماع، تأكد من توفر خياري التسجيل والبث المباشر. ابدأ بتسجيل قصير، وانتظر حتى تنتهي الجلسة، ثم تحقق من مسار التخزين المضيف المُهيأ للعثور على التسجيل. سيظل التسجيل موجودًا بعد إعادة إنشاء حاوية Jibri، لأنه يُخزن على وحدة التخزين المضيفة المُثبتة وليس فقط في الطبقة القابلة للكتابة داخل الحاوية.
للبث المباشر، استخدم عنوان URL الخاص باستقبال RTMP ومفتاح البث المُقدم من خدمة الوجهة. أدخل قيم الموفر الحالية في سير عمل البث المباشر في Jitsi، وتحقق من حالة معاينة أو استقبال الوجهة. قد تتغير لوحات معلومات الموفر وتسمياته، لذا استخدم تعليمات RTMP الحالية للوجهة. تعامل مع مفتاح البث ككلمة مرور: لا تنشره في دردشة الاجتماع أو لقطات شاشة المقالات. يُعد التسجيل على وحدة التخزين المحلية وإرسال البث المباشر إلى خدمة RTMP من وظائف Jibri ذات الصلة، لكن لكل منهما وجهات وفحوصات مختلفة.
يمكن لقائمة الاجتماع أن تعرض إجراءات التسجيل والبث المباشر بعد تكوين Jibri؛ ويعتمد توفر القائمة على عملية النشر.
قم بتشخيص المشكلة من نقطة الفشل
لا يظهر أي تسجيل أو بث: تأكد ENABLE_RECORDING=1من وجود ملف البيئة النشط وأن حزمة Compose المطابقة قد أُعيد إنشاؤها بعد التغيير. تحقق من إعدادات الويب وProsody وJicofo المُنشأة بدلاً من تعديل الملفات داخل حاوية قيد التشغيل؛ إذ يُعيد Docker إنشاء إعدادات الخدمة من مُدخلات المضيف.
يظهر الإجراء، لكن لا يمكن لـ Jibri الانضمام: راجع سجلات Jibri وJicofo بحثًا عن أخطاء مصادقة XMPP أو أخطاء MUC. تحقق من المضيف الداخلي، ونطاق المُسجِّل، واسم المُنشئ، وكلا كلمتي المرور الداخليتين باستخدام نفس إصدار Compose.
إذا توقف الحاوية أو أعيد تشغيلها: تحقق من سجلاتها بحثًا عن مسار تخزين مفقود أو غير قابل للكتابة. في الصور الحالية غير الجذرية، تأكد من إمكانية الكتابة إلى الدليل المُثبَّت بواسطة UID/GID 1000. تحقق أيضًا من ذاكرة المضيف وتكوين الذاكرة المشتركة المُقدَّم من ملف Jibri Compose الرسمي.
تبدأ الجلسة ولكن لا يظهر أي ملف تسجيل: تأكد من أن دليل التسجيل المُكوّن مُطابق لوحدة التخزين المضيفة وأن الجلسة قد أُوقفت/انتهت بشكل طبيعي. تحقق من مساحة القرص الحرة وأذونات الملفات.
التسجيل يعمل لكن البث يفشل: أعد التحقق من عنوان URL الخاص باستقبال RTMP ومفتاح البث، ومتطلبات الوجهة الحالية، ومسار الشبكة الصادر للمضيف. راجع سجلات Jibri لمعرفة سبب فشل البث بدلاً من فتح منافذ واردة إضافية دون دليل.
عندما ينجح اجتماع ما، ولكنك تحتاج إلى تسجيلات متزامنة أكثر، قم بزيادة السعة بشكل مدروس. يُشير حدّ جلسة واحدة لكل مثيل في Jibri إلى أن المهام المتزامنة تتطلب المزيد من المثيلات؛ كما يُشير دليل Docker إلى ضرورة اختيار واجهات إعادة توجيه صوتية منفصلة للمثيلات المتعددة. اختبر مثيلًا إضافيًا واحدًا قبل توسيع المجموعة، وتأكد من قدرة كل مثيل على إنشاء تسجيل منفصل.
استخدم هذه المراجع الرسمية
اتبع التعليمات الخاصة بنشرك بدلاً من نسخ الإعدادات من إصدار Jibri آخر. يوثق دليل Jitsi Docker سير عمل Compose، ومتغيرات التسجيل، ومسار التخزين، وأذونات الحاويات غير الجذرية، وملاحظات Jibri الحالية. يشرح ملف README الخاص بمشروع Jibri دور Jibri، وحدود الجلسة الواحدة، ونموذج التكوين. يُعد تعريف خدمة Jibri Compose الرسمي وقالب البيئة المصدر الموثوق لأسماء المتغيرات ونقاط التحميل الخاصة بكل إصدار.