داشبورد مدیریت یک رابط وب برای مدیریت نمونه Bedrud شما فراهم میکند. کاربران superadmin میتوانند آمار سیستم را مشاهده کنند، کاربران و اتاقها را مدیریت کنند، تنظیمات سراسری نمونه را پیکربندی کنند و token (توکن) دعوت ایجاد کنند.
پیشنیازها
- دسترسی superadmin: باید
superadminدر آرایهaccessesکاربر خود داشته باشید. - راهاندازی اولین مدیر: پس از نصب Bedrud، یک کاربر ایجاد کرده و از طریق CLI ارتقا دهید:
bedrud user create --email "admin@example.com" --password "securepassword" --name "Admin"
bedrud user promote --email "admin@example.com"هیچ رابط وب یا API برای ایجاد اولین superadmin وجود ندارد. این موضوع عامدانه و به دلایل امنیتی است.
دسترسی به پنل مدیریت
پس از داشتن دسترسی superadmin، پنل مدیریت در /dashboard/admin در برنامه وب Bedrud شما در دسترس است.
ناوبری:
- نوار کناری (sidebar) یک بخش “مدیریت” با لینکهایی به نمای کلی، کاربران، اتاقها و تنظیمات نمایش میدهد. این بخش فقط برای کاربران
superadminقابل مشاهده است. - منوی کشویی (dropdown) کاربر در گوشه بالا سمت راست شامل لینک “پنل مدیریت” با آیکون سپر است.
- کاربران غیرمدیر که تلاش میکنند به URLهای
/dashboard/admin/*دسترسی پیدا کنند، به طور خودکار به/dashboardهدایت میشوند.
صفحه نمای کلی
صفحه نمای کلی در /dashboard/admin یک داشبورد با معیارهای کلیدی سیستم ارائه میدهد.
آمار سیستم
کارتها نمایش میدهند:
- کاربران آنلاین: تعداد کل شرکتکنندگان فعال یکتا در تمام اتاقها
- کل اتاقها: تعداد کل اتاقهای نمونه
- کل کاربران: تعداد کل کاربران ثبتنام شده
وضعیت گواهی TLS
یک نشانگر رنگی وضعیت گواهی TLS سرور شما را نشان میدهد:
| وضعیت | رنگ | معنی |
|---|---|---|
| معتبر | سبز | گواهی معتبر است |
| نزدیک به انقضا | کهربایی | ظرف ۳۰ روز آینده منقضی میشود |
| منقضی شده | قرمز | گواهی منقضی شده است |
| پیکربندی نشده | خاکستری | TLS غیرفعال است |
وضعیت گواهی هر ۵ دقیقه بهروزرسانی میشود.
نمودارها
- ایجاد اتاق: نمودار میلهای اتاقهای ایجاد شده در ۸ هفته گذشته
- ثبتنامهای اخیر: لیست جدیدترین ثبتنامهای کاربران
مدیریت کاربران
لیست کاربران
لیست کاربران در /dashboard/admin/users تمام کاربران ثبتنام شده را در یک جدول قابل جستجو و مرتبسازی نمایش میدهد.
ستونها:
- نام: نام نمایشی کاربر
- ایمیل: آدرس ایمیل کاربر
- ارائهدهنده: روش احراز هویت (local، google، github، guest، passkey)
- نقش: نشان سطح دسترسی. برای کاربران با دسترسی
superadminعبارت “Superadmin” را نشان میدهد. - تاریخ ایجاد: تاریخ ثبتنام
- وضعیت: کلید فعال/مسدود
عملیاتها:
- جستجو: در نوار جستجو تایپ کنید تا کاربران بر اساس نام یا ایمیل فیلتر شوند (سمت کلاینت).
- مرتبسازی: روی هدر هر ستون کلیک کنید تا مرتب شود. دوباره کلیک کنید تا صعودی/نزولی تغییر کند.
- صفحهبندی: کنترلهای ناوبری برای مرور لیستهای بزرگ کاربران.
عملیاتهای کاربر
هر ردیف کاربر شامل دکمههای عملیات سریع است:
- ارتقا/تنزل: تغییر بین سطوح دسترسی
["user"]و["user", "superadmin"]. در ستون سطح دسترسی قابل مشاهده است. - فعال/مسدود: تغییر وضعیت حساب کاربر. کاربران مسدود شده نمیتوانند وارد شوند یا توکن خود را تازهسازی کنند.
- مشاهده جزئیات: روی ردیف کاربر کلیک کنید تا نمای جزئیات باز شود.
جزئیات کاربر
صفحه جزئیات در /dashboard/admin/users/:userId یک پروفایل کامل کاربر را نمایش میدهد.
اطلاعات نمایش داده شده:
- نام کاربر، ایمیل، ارائهدهنده و تاریخ ثبتنام
- نشان سطح دسترسی (superadmin/user)
- نمودار فعالیت ایجاد اتاق (تاریخچه ۸ هفته)
- لیست اتاقهای ایجاد شده توسط کاربر
عملیاتها:
- ارتقا/تنزل: دکمه اختصاصی در هدر جزئیات
- حذف کاربر: کاربر و تمام دادههای او را به طور دائمی حذف میکند. نیازمند تأیید ایمیل است. دکمه حذف برای حساب خودتان مخفی است (نمیتوانید خودتان را حذف کنید).
حذف دائمی و ناهمگام است. حذف یک کاربر همچنین تمام اتاقها، کلیدهای عبور و تنظیمات او را حذف میکند. درخواست بلافاصله برمیگردد در حالی که عملیات پاکسازی در پسزمینه اجرا میشود.
مدیریت اتاقها
لیست اتاقها
لیست اتاقها در /dashboard/admin/rooms تمام اتاقهای نمونه را نشان میدهد.
ستونها:
- نام اتاق: شناسه اتاق
- نمایانی: عمومی، خصوصی یا فهرستنشده
- حداکثر شرکتکنندگان: قابل ویرایش inline (درونخطی) — روی مقدار کلیک کنید تا تغییر دهید
- وضعیت: فعال یا غیرفعال
- تاریخ ایجاد: تاریخ ایجاد اتاق
عملیاتها:
- جستجو: فیلتر اتاقها بر اساس نام (سمت کلاینت)
- مرتبسازی: روی هدر ستونها کلیک کنید تا مرتب شوند
- تعلیق: پایان یک تماس فعال بدون حذف اتاق
- حذف: بستن دائمی یک اتاق با حذف آبشاری
جزئیات اتاق
صفحه جزئیات در /dashboard/admin/rooms/:roomId دید عمیقی به یک اتاق فراهم میکند.
تنظیمات اتاق:
- نام اتاق، حالت نمایانی، حداکثر شرکتکنندگان
- تغییر حالت Persistent (ماندگار): فعال کنید تا از پاکسازی خودکار اتاقهای بیکار جلوگیری شود. این گزینه فقط برای
superadminدر دسترس است — سازندگان اتاق نمیتوانند آن را تغییر دهند.
شرکتکنندگان زنده:
- لیست شرکتکنندگان که هر ۳ ثانیه بهروزرسانی میشود
- برای هر شرکتکننده: نام، زمان پیوستن، اطلاعات ترک (صدا/تصویر/اشتراکگذاری صفحه)
- نمودار نرخ بیت: نمودار زنده نرخ بیت برای ترکهای صوتی و تصویری
- اخراج: حذف هر شرکتکننده از اتاق
- قطع صدا: قطع صدای ترکهای صوتی هر شرکتکننده
تنظیمات سیستم
صفحه تنظیمات در /dashboard/admin/settings در ۹ tab (تب) سازماندهی شده است. پس از تغییر هر تب روی “ذخیره تغییرات” کلیک کنید (زبانه عمومی در تغییرات حالت ثبتنام به طور خودکار ذخیره میشود).
تب عمومی
- حالت ثبتنام:
- باز: هر کسی میتواند حساب بسازد
- فقط با دعوت: کاربران جدید باید یک توکن دعوت معتبر ارائه دهند
- بسته: بدون ثبتنام جدید — کاربران موجود همچنان میتوانند وارد شوند
- تغییرات هنگام تغییر حالت به طور خودکار ذخیره میشوند
مدیریت token دعوت (درون تب عمومی):
tokenها کنترل میکنند چه کسی میتواند در حالت فقط با دعوت ثبتنام کند.
- ایجاد توکن: یک ایمیل اختیاری برای قفل کردن توکن به یک آدرس خاص وارد کنید و دوره انقضا را انتخاب کنید (۲۴ ساعت، ۷۲ ساعت، ۷ روز یا ۳۰ روز).
- لیست توکنها: تمام توکنها را با وضعیتشان نشان میدهد. توکنهای استفادهنشده نشان سبز “فعال” دارند و توکنهای استفاده شده “استفاده شده” را به رنگ خاکستری نشان میدهند.
- کپی توکن: روی دکمه کپی کلیک کنید تا مقدار ۳۲ کاراکتری توکن در کلیپبورد شما کپی شود.
- ابطال: یک توکن را حذف کنید تا از استفاده آن جلوگیری شود.
تب احراز هویت
- کلیدهای عبور: تغییر وضعیت احراز هویت بدون رمز عبور FIDO2/WebAuthn
- ارائهدهندگان OAuth: پیکربندی OAuth گوگل، گیتهاب و توییتر:
- Client ID
- Client Secret
- Redirect URL
هر ارائهدهنده کارت پیکربندی مخصوص به خود را دارد. با پر کردن هر سه فیلد، یک ارائهدهنده را فعال کنید.
تب LiveKit
- LiveKit خارجی: تغییر وضعیت برای استفاده از یک سرور LiveKit خارجی به جای سرور embedded
- میزبان: میزبان و پورت سرور LiveKit (مثلاً
127.0.0.1:7880) - کلید API: کلید API سرور LiveKit
- سکرت API (API Secret): API Secret سرور LiveKit
تب سرور
- پورت: پورت سرور HTTP (پیشفرض:
80) - میزبان: نام میزبان سرور
- دامنه: دامنه سرور
- ایمیل: ایمیل مدیریتی (برای ثبت گواهی ACME استفاده میشود)
- TLS: فعال کردن HTTPS با فایلهای گواهی
- ACME: فعال کردن مدیریت خودکار گواهی Let’s Encrypt
- پروکسی معکوس: نشان دادن اینکه سرور پشت یک پروکسی است (بر تشخیص IP کلاینت تأثیر میگذارد)
- مسیرهای گواهی: مسیرهای فایل گواهی و کلید (برای راهاندازی دستی TLS)
- وضعیت گواهی: نشانگر درونخطی که سلامت فعلی گواهی TLS را نشان میدهد
تب CORS
- مبدأهای مجاز: لیست جدا شده با کاما از مبدأهای CORS
- هدرهای مجاز: لیست جدا شده با کاما از هدرهای درخواست مجاز
- روشهای مجاز: لیست جدا شده با کاما از روشهای HTTP مجاز
- Allow Credentials: فعال/غیرفعال کردن ارسال credentials (اعتبارنامهها) در درخواستهای cross-origin
- حداکثر عمر: مدت زمان کش برای پاسخهای preflight CORS (ثانیه)
تب محدودیتهای اتاق
تعداد اتاقهای فعالی که یک کاربر میتواند ایجاد کند را کنترل میکند:
- حداکثر اتاق برای هر کاربر: حداکثر تعداد اتاقهای فعالی که یک کاربر غیر superadmin میتواند ایجاد کند (پیشفرض: ۱۰۰، ۰ = نامحدود). superadminها از این محدودیت معاف هستند.
تب سهمیه آپلود
محدودیتهای ذخیرهسازی برای آپلود تصاویر چت را کنترل میکند:
- حداکثر بایت آپلود برای هر کاربر: سهمیه ذخیرهسازی هر کاربر در تمام اتاقها (پیشفرض: ۵۲۴۲۸۸۰۰۰ = ۵۰۰ مگابایت، ۰ = نامحدود). superadminها از این محدودیت معاف هستند.
- آستانه دیسک جهانی: سقف ذخیرهسازی کل برای همه کاربران. وقتی بیش از حد شود، همه آپلودها تا زمانی که مدیر فضا آزاد کند رد میشوند (پیشفرض: ۰ = نامحدود). این محدودیت برای همه از جمله superadminها اعمال میشود.
تب آپلود چت
پیکربندی نحوه ذخیرهسازی آپلود تصاویر چت:
- پشتیبان:
disk(فایل سیستم محلی)،s3(ذخیرهسازی سازگار با S3)، یاinline(base64 embedded) - حداکثر بایت آپلود: حداکثر اندازه فایل برای هر آپلود
- حداکثر درونخطی: حداکثر اندازه برای آپلودهای inline/base64
- پوشه دیسک: پوشه محلی برای آپلودهای پشتیبان
disk
پیکربندی S3 (وقتی پشتیبان s3 است):
- نقطه پایانی (Endpoint)، سطل (Bucket)، منطقه (Region)
- کلید دسترسی (Access Key)، کلید مخفی (Secret Key)
- URL عمومی (Public URL)
تب ثبت وقایع
- سطح ثبت:
trace،debug،info،warnیاerror. برای اشکالزدایی مفید است — برای دیدن لاگهای جزئی بهdebugتغییر دهید، سپس برای محیط عملیاتی بهinfoبرگردید.
عیبیابی
”پنل مدیریت قابل مشاهده نیست”
نشانه: بخش مدیریت در نوار کناری ظاهر نمیشود و لینک “پنل مدیریت” از منوی کشویی کاربر غایب است.
علت: کاربر وارد شده superadmin در آرایه accesses خود ندارد.
راهحل: از CLI برای ارتقای کاربر استفاده کنید:
bedrud user promote --email "your-email@example.com"سپس خارج شده و دوباره وارد شوید تا یک JWT جدید با دسترسیهای بهروزرسانی شده دریافت کنید.
”تنظیمات ذخیره نمیشوند”
نشانه: ذخیره تنظیمات با موفقیت برمیگردد، اما مقادیر محرمانه بدون تغییر به نظر میرسند.
علت: سرور مقادیر محرمانه موجود را وقتی "••••••••" یا یک رشته خالی در درخواست بهروزرسانی ارسال میکنید، حفظ میکند. این طراحی عمدی است — از بازنویسی تصادفی مقادیر محرمانه وقتی فقط فیلدهای غیرمحرمانه را تغییر میدهید جلوگیری میکند.
راهحل: مقدار واقعی محرمانه (نه جایگزین پوشانده شده) را در درخواست بهروزرسانی ارسال کنید.
”نمیتوانم حساب خودم را حذف کنم”
نشانه: دکمه حذف در صفحه جزئیات کاربر خودتان مخفی است یا API خطای 400 برمیگرداند.
علت: حذف خود به دلایل امنیتی مسدود شده است. نمیتوانید حسابی که در حال حاضر با آن وارد شدهاید را حذف کنید.
راهحل: از یک superadmin دیگر بخواهید حساب را حذف کند، یا از CLI به عنوان یک کاربر دیگر استفاده کنید.
”هنگام بازدید از URL مدیریت به داشبورد هدایت میشوم”
نشانه: بازدید مستقیم از /dashboard/admin به /dashboard هدایت میشود.
علت: مسیر نگهبان مدیریت، آرایه accesses در JWT شما را بررسی میکند. اگر superadmin موجود نباشد، نگهبان هدایت میکند.
راهحل: تأیید کنید که حساب شما دسترسی superadmin دارد. اگر دسترسی شما اخیراً تغییر کرده، خارج شده و دوباره وارد شوید تا JWT خود را تازهسازی کنید.
مشاهده همچنین
- API مدیریت — مرجع کامل API برای تمام نقاط پایانی مدیریت
- احراز هویت — سطوح دسترسی و سیستم نقشها
- پیکربندی — مرجع تنظیمات config.yaml
- شروع سریع — راهنمای راهاندازی اولین مدیر