توفر لوحة تحكم المشرف واجهة ويب لإدارة نسخة Bedrud الخاصة بك. يمكن للمشرفين العامين عرض إحصائيات النظام، وإدارة المستخدمين والغرف، وتهيئة الإعدادات على مستوى النسخة، وتوليد رموز الدعوة.
المتطلبات الأساسية
- وصول superadmin: يجب أن يكون لديك
superadminفي مصفوفةaccessesلمستخدمك. - إعداد المشرف الأول: بعد تثبيت Bedrud، أنشئ مستخدماً ورقِّه عبر سطر الأوامر:
bedrud user create --email "admin@example.com" --password "securepassword" --name "Admin"
bedrud user promote --email "admin@example.com"لا توجد واجهة ويب أو API لإنشاء أول superadmin. هذا مقصود لأسباب أمنية.
الوصول إلى لوحة المشرف
بمجرد حصولك على وصول superadmin، تتوفر لوحة المشرف في /dashboard/admin في تطبيق الويب Bedrud الخاص بك.
التنقل:
- يُظهر الشريط الجانبي قسماً بعنوان “المشرف” مع روابط إلى النظرة العامة، المستخدمين، الغرف، والإعدادات. هذا القسم مرئي فقط للمشرفين العامين.
- تتضمن القائمة المنسدلة للمستخدم في أعلى اليمين رابط “لوحة المشرف” مع أيقونة درع.
- المستخدمون غير المشرفين الذين يحاولون زيارة عناوين
/dashboard/admin/*يُعاد توجيههم تلقائياً إلى/dashboard.
صفحة النظرة العامة
توفر صفحة النظرة العامة في /dashboard/admin لوحة معلومات بمقاييس النظام الرئيسية.
إحصائيات النظام
تعرض البطاقات:
- المستخدمون المتصلون: إجمالي المشاركين النشطين المتميزين عبر جميع الغرف
- إجمالي الغرف: إجمالي الغرف على النسخة
- إجمالي المستخدمين: إجمالي المستخدمين المسجلين
حالة شهادة TLS
يُظهر مؤشر مُلوَّن حالة شهادة TLS لخادمك:
| الحالة | اللون | المعنى |
|---|---|---|
| صالحة | أخضر | الشهادة صالحة |
| قريبة من الانتهاء | كهرماني | تنتهي خلال 30 يوماً |
| منتهية | أحمر | انتهت صلاحية الشهادة |
| غير مُهيّأة | رمادي | TLS مُعطّل |
تتحدّث حالة الشهادة كل 5 دقائق.
الرسوم البيانية
- إنشاء الغرف: رسم بياني شريطي للغرف المُنشأة خلال آخر 8 أسابيع
- التسجيلات الحديثة: قائمة بأحدث تسجيلات المستخدمين
إدارة المستخدمين
قائمة المستخدمين
تعرض قائمة المستخدمين في /dashboard/admin/users جميع المستخدمين المسجلين في جدول قابل للبحث والفرز.
الأعمدة:
- الاسم: الاسم المعروض للمستخدم
- البريد الإلكتروني: عنوان البريد الإلكتروني للمستخدم
- المزوّد: طريقة المصادقة (local، google، github، guest، passkey)
- الدور: شارة مستوى الوصول. تظهر “Superadmin” للمستخدمين الذين لديهم وصول
superadmin. - تاريخ الإنشاء: تاريخ التسجيل
- الحالة: مفتاح تبديل نشط/محظور
الإجراءات:
- البحث: اكتب في شريط البحث لتصفية المستخدمين بالاسم أو البريد الإلكتروني (جانب العميل).
- الفرز: انقر على أي رأس عمود للفرز. انقر مرة أخرى للتبديل بين تصاعدي/تنازلي.
- التصفح: عناصر تحكم التنقل لتصفح قوائم المستخدمين الكبيرة.
إجراءات المستخدم
يتضمن كل صف مستخدم أزرار إجراءات سريعة:
- ترقية/خفض: تبديل بين مستويات الوصول
["user"]و["user", "superadmin"]. مرئي في عمود مستوى الوصول. - نشط/محظور: تبديل حالة حساب المستخدم. لا يمكن للمستخدمين المحظورين تسجيل الدخول أو تحديث الرموز.
- عرض التفاصيل: انقر على صف المستخدم لفتح عرض التفاصيل.
تفاصيل المستخدم
تعرض صفحة التفاصيل في /dashboard/admin/users/:userId ملفاً شخصياً كاملاً للمستخدم.
المعلومات المعروضة:
- اسم المستخدم، البريد الإلكتروني، المزوّد، وتاريخ التسجيل
- شارة مستوى الوصول (superadmin/user)
- رسم بياني لنشاط إنشاء الغرف (تاريخ 8 أسابيع)
- قائمة الغرف التي أنشأها المستخدم
الإجراءات:
- ترقية/خفض: زر مخصص في رأس التفاصيل
- حذف المستخدم: يزيل المستخدم وجميع بياناته نهائياً. يتطلب تأكيد البريد الإلكتروني. زر الحذف مخفي لحسابك الخاص (لا يمكنك حذف نفسك).
الحذف دائم وغير متزامن. حذف مستخدم يزيل أيضاً جميع غرفه ومفاتيح المرور والتفضيلات. يُرجع الطلب فوراً بينما يعمل التنظيف في الخلفية.
إدارة الغرف
قائمة الغرف
تعرض قائمة الغرف في /dashboard/admin/rooms جميع الغرف على النسخة.
الأعمدة:
- اسم الغرفة: معرّف الغرفة
- الرؤية: عامة، خاصة، أو غير مُدرجة
- الحد الأقصى للمشاركين: قابل للتعديل مباشرة — انقر على القيمة لتغييرها
- الحالة: نشطة أو غير نشطة
- تاريخ الإنشاء: تاريخ إنشاء الغرفة
الإجراءات:
- البحث: تصفية الغرف بالاسم (جانب العميل)
- الفرز: انقر على رؤوس الأعمدة للفرز
- تعليق: إنهاء مكالمة نشطة دون حذف الغرفة
- حذف: إغلاق غرفة نهائياً مع حذف متسلسل
تفاصيل الغرفة
توفر صفحة التفاصيل في /dashboard/admin/rooms/:roomId رؤية عميقة داخل الغرفة.
إعدادات الغرفة:
- اسم الغرفة، وضع الرؤية، الحد الأقصى للمشاركين
- مفتاح تبديل الوضع الدائم: فعّله لمنع التنظيف التلقائي للغرف الخاملة. هذا متاح للمشرفين العامين فقط — منشئو الغرف لا يمكنهم تغييره.
المشاركون المباشرون:
- قائمة مشاركين في الوقت الفعلي تستطلع كل 3 ثوانٍ
- لكل مشارك: الاسم، وقت الانضمام، معلومات المسارات (صوت/فيديو/مشاركة شاشة)
- رسم بياني لمعدل البت: رسم بياني مباشر لمعدل البت لمسارات الصوت والفيديو
- طرد: إزالة أي مشارك من الغرفة
- كتم: كتم مسارات الصوت لأي مشارك
إعدادات النظام
صفحة الإعدادات في /dashboard/admin/settings مُنظّمة في 9 ألسنة تبويب. انقر على “حفظ التغييرات” بعد تعديل أي لسان تبويب (لسان التبويب العام يحفظ تلقائياً عند تغيير وضع التسجيل).
لسان التبويب العام
- وضع التسجيل:
- مفتوح: يمكن لأي شخص تسجيل حساب
- بالدعوة فقط: يجب على المستخدمين الجدد تقديم رمز دعوة صالح
- مغلق: لا تسجيلات جديدة — يمكن للمستخدمين الحاليين تسجيل الدخول
- تُحفظ التغييرات تلقائياً عند تبديل الأوضاع
إدارة رموز الدعوة (داخل لسان التبويب العام):
تتحكم الرموز في من يمكنه التسجيل عند وضع الدعوة فقط.
- توليد رمز: أدخل بريداً إلكترونياً اختيارياً لقفل الرمز لعنوان محدد، واختر فترة صلاحية (24 ساعة، 72 ساعة، 7 أيام، أو 30 يوماً).
- قائمة الرموز: تعرض جميع الرموز مع حالتها. الرموز غير المستخدمة لديها شارة “نشط” خضراء، والرموز المستخدمة تظهر “مستخدم” بالرمادي.
- نسخ الرمز: انقر على زر النسخ لنسخ قيمة الرمز المكونة من 32 حرفاً إلى الحافظة.
- إبطال: احذف رمزاً لمنع استخدامه.
لسان تبويب المصادقة
- مفاتيح المرور: تبديل المصادقة بدون كلمة مرور FIDO2/WebAuthn
- مزودو OAuth: تهيئة Google و GitHub و Twitter OAuth:
- معرّف العميل
- سر العميل
- عنوان URL لإعادة التوجيه
كل مزود لديه بطاقة تهيئة خاصة به. فعّل المزوّد بملء جميع الحقول الثلاثة.
لسان تبويب LiveKit
- LiveKit خارجي: تبديل لاستخدام خادم LiveKit خارجي بدلاً من المضمّن
- المضيف: مضيف ومنفذ خادم LiveKit (مثلاً:
127.0.0.1:7880) - مفتاح API: مفتاح API لخادم LiveKit
- سر API: سر API لخادم LiveKit
لسان تبويب الخادم
- المنفذ: منفذ خادم HTTP (الافتراضي:
80) - المضيف: اسم مضيف الخادم
- النطاق: نطاق الخادم
- البريد الإلكتروني: البريد الإلكتروني الإداري (يُستخدم لتسجيل شهادة ACME)
- TLS: تفعيل HTTPS مع ملفات الشهادة
- ACME: تفعيل إدارة شهادات Let’s Encrypt التلقائية
- البروكسي العكسي: الإشارة إلى أن الخادم خلف بروكسي (يؤثر على اكتشاف IP العميل)
- مسارات الشهادة: مسارات ملف الشهادة وملف المفتاح (لإعداد TLS اليدوي)
- حالة الشهادة: مؤشر مضمن يُظهر صحة شهادة TLS الحالية
لسان تبويب CORS
- الأصول المسموح بها: قائمة مفصولة بفواصل لأصول CORS
- الرؤوس المسموح بها: قائمة مفصولة بفواصل لرؤوس الطلب المسموح بها
- الطرق المسموح بها: قائمة مفصولة بفواصل لطرق HTTP المسموح بها
- السماح ببيانات الاعتماد: تبديل لتضمين بيانات الاعتماد في طلبات الأصول المتقاطعة
- الحد الأقصى للعمر: مدة التخزين المؤقت لاستجابات CORS التمهيدية (بالثواني)
لسان تبويب حدود الغرف
التحكم في عدد الغرف النشطة التي يمكن لمستخدم واحد إنشاؤها:
- الحد الأقصى للغرف لكل مستخدم: الحد الأقصى لعدد الغرف النشطة التي يمكن لمستخدم غير superadmin إنشاؤها (الافتراضي: 100، 0 = غير محدود). يتجاوز المشرفون العامون هذا الحد.
لسان تبويب حصص التحميل
التحكم في حدود التخزين لتحميلات صور الدردشة:
- الحد الأقصى لبايتات التحميل لكل مستخدم: حصة تخزينية لكل مستخدم عبر جميع الغرف (الافتراضي: 524288000 = 500 ميجابايت، 0 = غير محدود). يتجاوز المشرفون العامون هذا الحد.
- حد القرص العام: سقف التخزين الإجمالي عبر جميع المستخدمين. عند تجاوزه، تُرفض جميع التحميلات حتى يحرر المسؤول مساحة (الافتراضي: 0 = غير محدود). ينطبق هذا الحد على الجميع، بما في ذلك المشرفين العامين.
لسان تبويب تحميلات الدردشة
تهيئة كيفية تخزين تحميلات صور الدردشة:
- الخلفية:
disk(نظام الملفات المحلي)،s3(تخزين متوافق مع S3)، أوinline(base64 مُضمّن) - الحد الأقصى لبايتات التحميل: الحد الأقصى لحجم الملف لكل تحميل
- الحد الأقصى المُضمّن: الحد الأقصى لحجم التحميلات المُضمّنة/base64
- دليل القرص: الدليل المحلي لتحميلات خلفية
disk
إعدادات S3 (عندما تكون الخلفية s3):
- نقطة النهاية، الحاوية، المنطقة
- مفتاح الوصول، المفتاح السري
- عنوان URL العام
لسان تبويب التسجيل
- مستوى التسجيل:
trace،debug،info،warn، أوerror. مفيد للتصحيح — انتقل إلىdebugلرؤية سجلات مفصلة، ثم عد إلىinfoللإنتاج.
استكشاف الأخطاء وإصلاحها
”لوحة المشرف غير مرئية”
العرض: لا يظهر قسم المشرف في الشريط الجانبي، ورابط “لوحة المشرف” مفقود من القائمة المنسدلة للمستخدم.
السبب: المستخدم المسجّل دخوله ليس لديه superadmin في مصفوفة accesses.
الحل: استخدم سطر الأوامر لترقية المستخدم:
bedrud user promote --email "your-email@example.com"ثم سجّل الخروج وسجّل الدخول مرة أخرى للحصول على JWT جديد بالصلاحيات المُحدَّثة.
”الإعدادات لا تُحفظ”
العرض: حفظ الإعدادات يُرجع نجاحاً، لكن قيم الأسرار تظهر بدون تغيير.
السبب: الخادم يحافظ على قيم الأسرار الحالية عند إرسال "••••••••" أو سلسلة فارغة في طلب التحديث. هذا بالتصميم — يمنع استبدال الأسرار عن طريق الخطأ عند تغيير الحقول غير السرية فقط.
الحل: أرسل قيمة السر الفعلية (وليس العنصر النائب المُخفى) في طلب التحديث.
”لا يمكنني حذف حسابي الخاص”
العرض: زر الحذف مخفي في صفحة تفاصيل مستخدمك، أو API تُرجع خطأ 400.
السبب: الحذف الذاتي ممنوع للسلامة. لا يمكنك حذف الحساب الذي سجّلت دخولك به حالياً.
الحل: اطلب من مشرف عام آخر حذف الحساب، أو استخدم سطر الأوامر كمستخدم مختلف.
”إعادة توجيه إلى لوحة التحكم عند زيارة عنوان المشرف”
العرض: زيارة /dashboard/admin مباشرة تُعيد التوجيه إلى /dashboard.
السبب: مسار حارس المشرف يفحص مصفوفة accesses في JWT الخاص بك. إذا كان superadmin مفقوداً، يقوم الحارس بإعادة التوجيه.
الحل: تحقق من أن حسابك لديه وصول superadmin. إذا تم تغيير وصولك مؤخراً، سجّل الخروج وسجّل الدخول مرة أخرى لتحديث JWT الخاص بك.
انظر أيضاً
- واجهة برمجة المشرفين — مرجع API كامل لجميع نقاط نهاية المشرف
- المصادقة — مستويات الوصول ونظام الأدوار
- الإعداد — مرجع إعدادات config.yaml
- البدء السريع — شرح إعداد المشرف الأول