این راهنماها مفاهیم یک صنعت را روی اشیایی که پلتفرم امروز دارد (بوکهها، لاینها، بستهها، حسابهای پارتنر، نودها، API) نگاشت میکنند. اینها نگاشتهای مفهومیاند، نه قابلیتهای مخصوص صنعت، و حساب پارتنر یک حساب تفویضی است، نه tenant ایزوله.
نگاشت مفهومی
در پنل چیزی به نام دوره یا دانشجو وجود ندارد. جدول میگوید کدام شیء چه نقشی دارد؛ فصلهای زیر آنها را به همین ترتیب تنظیم میکنند.
| در صنعت شما | روی پلتفرم | کجا در پنل |
|---|---|---|
| مرکز آموزشی یا پارتنر توزیع | حساب پارتنر (ریسلر): داشبورد تفویضی با کردیت، مجوزها و لاینهای خودش | Users ← افزودن ریسلر؛ Groups برای مجوزهای آن |
| مجموعه دورهها | بوکه: مجموعهای نامدار از کانالها، فیلمها یا سریالها که یک بسته میدهد | Bouquets، از Streams و Movies / Series |
| درسهای ضبطشده | کاتالوگ VOD: فیلم و سریال با فصل و قسمت، دستهبندیها و اطلاعات متادیتا | Movies و Series، یا کار ingest VOD |
| کلاس زنده | کانال زنده: یک استریم با منابع، EPG و فرمتهای خروجیاش | Streams ← افزودن استریم زنده (URL منبع یا RTMP push) |
| دسترسی دانشجو | لاین: یک دسترسی با بسته، بوکهها، انقضا، محدودیت اتصال و خروجیهایش | Lines ← افزودن، یا کدهای فعالسازی، یا Reseller API |
| بازه دسترسی دوره | تاریخ انقضای لاین، که با بسته، کردیت یا API تمدید میشود | تاریخ انقضای لاین و مدت بسته |
| محدودیت نشست همزمان | حداکثر اتصال لاین: چند دستگاه میتوانند همزمان تماشا کنند | حداکثر اتصال لاین |
| یکپارچهسازی LMS یا فروش | Reseller API و وبهوکها: عملیات پنل از سیستم خودتان | کلیدهای Reseller API و وبهوکها در داشبورد ریسلر |
پیشنیازها
آنچه پیش از نصب باید داشته باشید.
- یک سرور لینوکس (اوبونتو 22.04 یا 24.04) روی شبکه پردیس که Postgres، Redis و ffmpeg را نصبکننده نصب میکند، و یک دامنه یا آدرس داخلی برای پنل و پخشکننده.
- ضبطهایی که منتشر میکنید (فایلها یا یک سیستم ضبط که بتواند RTMP بفرستد) و برای کلاسهای زنده، یک انکودر در هر اتاقی که پخش خواهد کرد.
- یک کلید مجوز: طرح Free به کلید نیاز ندارد؛ مؤسسات واجد شرایط کلید رایگان Professional را با ایمیل از دامنه آموزشی خود درخواست میکنند.
استقرار زیرساخت
سرور مدیریت را نصب کنید، سپس برای هر ساختمان یک نود.
- نصبکننده را روی سرور مدیریت اجرا کنید؛ پنل، API، worker و مبدأ را بهصورت یونیتهای systemd نصب میکند و اولین مدیر را میسازد.
- URL عمومی API (API_PUBLIC_URL) و پایه پخش را تنظیم کنید تا لینکهای پخشکننده به آدرس پردیس اشاره کنند.
- برای هر ساختمانی که سالنهایش تماشا میکنند، از Servers ← افزودن نود یک نود ثبت کنید؛ پنل آن را از بسته نود با SSH نصب میکند.
- صفحه Servers را بررسی کنید: نود heartbeat و ترافیک خود را گزارش میدهد و بینندگان آن ساختمان به آن هدایت میشوند.
سازماندهی محتوا
دورهها بهصورت سریال، برنامهها بهصورت بوکه و بسته.
- برای هر دانشکده یا موضوع یک دستهبندی زیر Movies / Series بسازید.
- هر دوره را بهعنوان یک سریال اضافه کنید: یک فصل برای هر ماژول، یک قسمت برای هر درس، با ضبط بهعنوان منبع (بارگذاری یا کار ingest VOD).
- برای هر مجموعه دوره (مثلاً دورههای یک برنامه آموزشی در یک ترم) از سریالهایی که اضافه کردهاید یک بوکه بسازید.
- برای هر برنامه آموزشی یک بسته بسازید: بوکههایی که میدهد، بازه دسترسی بهعنوان مدت، و محدودیت نشست همزمان.
پیکربندی پارتنر (ریسلر)
یک مرکز آموزشی یا دانشکده بهعنوان حساب تفویضی.
- در Groups گروهی با مجوزهای مورد نیاز مرکز بسازید (لاینهای خودش، بدون تغییر کاتالوگ).
- مرکز را در Users بهعنوان ریسلر با آن گروه، موجودی کردیت و بستههایی که میتواند بدهد اضافه کنید.
- آدرس داشبورد را به آن بدهید؛ دانشجویان خودش را از آنجا مدیریت میکند و پنل لاگ ممیزی را نگه میدارد.
پیکربندی دسترسی دانشجویان
یک لاین برای هر دانشجو، که هنگام ثبتنام ساخته میشود.
- برای گروههای کوچک، لاینها را از Lines ← افزودن با بسته برنامه اضافه کنید؛ انقضا از مدت بسته پیروی میکند.
- برای روز ثبتنام، برای بسته کدهای فعالسازی بسازید؛ دانشجو کد را در پخشکننده وارد میکند و لاین میگیرد.
- برای سیستم دانشجویی یا LMS، یک کلید Reseller API بسازید و بگذارید سیستم با action=create_line و یک شناسه درخواست برای هر دانشجو لاین بسازد.
- حداکثر اتصال را برابر تعداد دستگاههایی بگذارید که دانشجو همزمان میتواند استفاده کند؛ پخشکننده اتصال بعدی فراتر از آن را رد میکند.
راهاندازی VOD
درسهای ضبطشده بهصورت درخواستی.
- هر ضبط را بهعنوان منبع یک قسمت بارگذاری کنید، یا کار ingest VOD را به فایل اشاره دهید تا worker آن را دانلود و در ریشه رسانه انکد کند.
- متادیتا (عنوان، توضیح، پوستر) را دستی یا از TMDB برای مطالب عمومی پر کنید؛ درسها معمولاً فقط عنوان و توضیح میخواهند.
- پخش را در پخشکننده وب با یک لاین آزمایشی بررسی کنید؛ لینک امضاشده است و پس از زمان تنظیمشده منقضی میشود.
پخش زنده کلاس
یک سخنرانی بهصورت کانال زنده.
- در Streams یک استریم زنده اضافه کنید که انکودر اتاق منبع آن باشد (آدرس RTMP push یا URL pull).
- استریم را در بوکه دوره بگذارید تا فقط دانشجویان ثبتنامشده آن را ببینند؛ اگر برنامه زمانی دارید آن را به EPG اضافه کنید.
- وقتی دانشجویان میتوانند کلاس را بعداً ببینند، catch-up یا timeshift را روی استریم فعال کنید؛ ضبط را میتوان بهعنوان قسمت هم بارگذاری کرد.
اشتراک و انقضای دسترسی
دسترسی که با دوره پایان مییابد.
- بازه دسترسی را بهعنوان مدت بسته بگذارید؛ لاینی که از آن ساخته شود در پایان آن بازه منقضی میشود.
- لاین را برای ترم جدید از پنل با کردیت مرکز، یا از طریق API با action=renew_line تمدید کنید.
- سیستم خود را مشترک وبهوکها کنید: به آن گفته میشود لاینی نزدیک انقضاست، منقضی شده یا غیرفعال شده است.
یکپارچهسازی با LMS بیرونی
LMS دسترسی را هدایت میکند؛ پخشکننده پخش میکند.
- برای LMS یک کلید Reseller API بسازید؛ آن را در رازهای LMS نگه دارید، هرگز در یک صفحه.
- هنگام ثبتنام، LMS با بسته برنامه و یک شناسه درخواست action=create_line را صدا میزند؛ هنگام انصراف action=disable_line.
- از صفحه دوره LMS به پخشکننده وب لینک بدهید یا مشخصات پخشکننده را به دانشجو بدهید؛ بین این دو ورود یکپارچه (SSO) وجود ندارد.
ملاحظات امنیتی
سرویس را داخل مؤسسه نگه دارید.
- ورود دومرحلهای را برای هر حساب پنل فعال کنید و به کارکنان کوچکترین گروه مجوزی را بدهید که کار میکند.
- دادههای شخصی دانشجویان را در سیستم دانشجویی نگه دارید؛ لاین فقط نام و انقضا میخواهد.
- حداکثر اتصال را کم نگه دارید و برای جلوگیری از اشتراکگذاری، وابسته کردن پخش به آدرس بیننده را در نظر بگیرید.
- پشتیبانگیری رمزگذاریشده از پایگاه داده را روشن کنید و، اگر فضای سازگار با S3 دارید، نسخه خارج از سایت را.
عیبیابی
بررسیهای اولیه معمول.
- دانشجو نمیتواند وارد شود: انقضای لاین و فعال بودن آن را بررسی کنید، سپس بسته و بوکه دوره را.
- ضبط پخش نمیشود: نتیجه کار ingest را در صفحه Jobs بررسی کنید، سپس فایل در ریشه رسانه و انقضای لینک امضاشده را.
- بینندگان یک ساختمان به مبدأ میرسند: heartbeat نود را بررسی کنید و اینکه آدرس بیننده در مسیریابی نود قرار میگیرد.
- API فراخوانی را رد میکند: کلید، متد action (نوشتنها POST هستند) و شناسه درخواست یک فراخوانی تکراری را بررسی کنید.