بلاگ/راه‌اندازی Jitsi Meet خودمیزبان روی سرور مجازی و اختصاصی: ویدیو کنفرانس خصوصی با Docker
به‌روز شده

راه‌اندازی Jitsi Meet خودمیزبان روی سرور مجازی و اختصاصی: ویدیو کنفرانس خصوصی با Docker

1405/07/206 بازدید
راه‌اندازی Jitsi Meet خودمیزبان روی سرور مجازی و اختصاصی: ویدیو کنفرانس خصوصی با Docker

راه‌اندازی Jitsi Meet خودمیزبان روی سرور مجازی و اختصاصی: ویدیو کنفرانس خصوصی با Docker

اگر جلسات تیم یا مشاوره‌های آنلاین‌تان روی Zoom یا Google Meet برگزار می‌شود، داده‌های آن جلسات روی سرورهای شرکت ثالث ذخیره و پردازش می‌شود. راه‌اندازی Jitsi Meet روی سرور خودتان این وابستگی را حذف می‌کند: یک ابزار ویدیو کنفرانس متن‌باز که کامل زیر کنترل شما اجرا می‌شود، بدون محدودیت زمانی یا تعداد شرکت‌کننده‌ای که پلن‌های رایگان رقبا تحمیل می‌کنند.

نصب Jitsi Meet با Docker روی سرور

این راهنما مراحل نصب Jitsi Meet با Docker Compose را روی یک VPS یا سرور اختصاصی، از پیکربندی دامنه و HTTPS تا تنظیم TURN server برای عبور از NAT، قدم‌به‌قدم توضیح می‌دهد.

چرا Jitsi Meet خودمیزبان؟

Jitsi Meet یک نسخهٔ عمومی رایگان هم دارد (meet.jit.si) که نیازی به نصب ندارد، اما روی زیرساخت مشترک و با محدودیت کیفیت در ساعات پرترافیک اجرا می‌شود. نسخهٔ خودمیزبان این مشکلات را ندارد و پهنای باند، نسخه و دادهٔ جلسات کامل در اختیار شماست.

ویژگیJitsi خودمیزبانJitsi عمومی (meet.jit.si)Zoom/Google Meet
محل ذخیره دادهسرور شماسرور Jitsi (مشترک)سرور شرکت ثالث
محدودیت زمانی جلسهنداردندارددر پلن رایگان دارد
شخصی‌سازی برندینگکاملنداردمحدود
کیفیت در ساعات پرترافیکقابل کنترل با منابع خودتانوابسته به بار عمومی سرویسوابسته به پلن
هزینهٔ ماهانههزینهٔ سروررایگانرایگان تا پولی بر اساس پلن

برای تیم‌هایی که جلسات حساس (مشاوره حقوقی، جلسات مدیریتی، پشتیبانی مشتری) برگزار می‌کنند یا می‌خواهند آدرس و ظاهر صفحهٔ جلسه مطابق برند خودشان باشد، این تفاوت‌ها قابل چشم‌پوشی نیستند.

نمودار مفهومی ویدیو کنفرانس خودمیزبان: جلسه و شرکت‌کنندگان متصل به سرور اختصاصی به‌جای زیرساخت ابری مشترک

پیش‌نیازها

قبل از شروع، این موارد باید آماده باشد:

  • یک VPS یا سرور اختصاصی با سیستم‌عامل لینوکس (اوبونتو ۲۲.۰۴ یا دبیان ۱۲ پیشنهاد می‌شود)
  • یک دامنه یا ساب‌دامنه که به IP سرور اشاره کند (مثلاً meet.example.com)
  • Docker و Docker Compose نصب‌شده روی سرور
  • دسترسی root یا sudo برای باز کردن پورت‌ها در فایروال

باز کردن پورت‌های لازم

Jitsi برای ارتباط صوتی و تصویری به چند پورت مشخص نیاز دارد. این‌ها باید هم در فایروال سرور (ufw/iptables) و هم در پنل امنیتی ارائه‌دهندهٔ VPS باز شوند:

پورتپروتکلکاربرد
443TCPHTTPS و رابط وب Jitsi
4443TCPکانال رزرو برای رسانه (fallback)
10000UDPانتقال رسانهٔ اصلی (videobridge)
20000-20050UDPفقط در صورت استفاده از چند videobridge (Octo)

فراموش کردن باز کردن پورت ۱۰۰۰۰/UDP رایج‌ترین دلیلی است که تصویر یا صدا در جلسه بالا نمی‌آید، چون این پورت مسیر اصلی انتقال رسانه است، نه پورت وب.

نصب Jitsi Meet با Docker Compose

مخزن رسمی jitsi/docker-jitsi-meet ساده‌ترین روش نصب است:

git clone https://github.com/jitsi/docker-jitsi-meet.git
cd docker-jitsi-meet
cp env.example .env
./gen-passwords.sh

پیکربندی دامنه و HTTPS رایگان با Let's Encrypt

در فایل .env مقادیر زیر را تنظیم کنید:

PUBLIC_URL=https://meet.example.com
ENABLE_LETSENCRYPT=1
LETSENCRYPT_DOMAIN=meet.example.com
LETSENCRYPT_EMAIL=admin@example.com

با فعال بودن ENABLE_LETSENCRYPT، کانتینر nginx در اولین بالا آمدن به‌صورت خودکار گواهی SSL را از Let's Encrypt دریافت و هر چند ماه یک‌بار تمدید می‌کند؛ نیازی به certbot جدا نیست. سپس سرویس‌ها را بالا بیاورید:

docker-compose up -d

بعد از چند ثانیه، آدرس https://meet.example.com باید صفحهٔ ورودی Jitsi را نشان دهد.

تنظیم TURN server برای عبور از NAT

بسیاری از کاربران پشت NAT شرکتی یا فایروال‌های محدودکننده هستند که اتصال مستقیم UDP را مسدود می‌کنند. بدون TURN server، تصویر این کاربران قطع یا سیاه می‌ماند حتی اگر خود سرور Jitsi سالم باشد.

Jitsi از coturn به‌عنوان TURN server پشتیبانی می‌کند. برای فعال کردن آن در .env:

ENABLE_TRANSCRIPTIONS=0
TURN_HOST=turn.example.com
TURN_PORT=443
TURN_TRANSPORT=tcp

coturn را می‌توان روی همان سرور یا سروری جدا نصب کرد. اگر نسبت زیادی از کاربران شما از شبکه‌های سخت‌گیرانه متصل می‌شوند، TURN روی سرور جدا با IP اختصاصی پیشنهاد بهتری است، چون ترافیک رله‌شده می‌تواند حجم بالایی از پهنای باند را مصرف کند و بهتر است از منابع videobridge اصلی جدا بماند.

تخمین منابع سرور بر اساس تعداد شرکت‌کننده همزمان

مصرف منابع Jitsi تقریباً خطی با تعداد استریم‌های ویدیویی همزمان رشد می‌کند، نه فقط تعداد جلسات. جدول زیر یک تخمین کلی برای یک جلسهٔ ویدیویی با کیفیت متوسط (۷۲۰p) است:

شرکت‌کننده همزمانvCPU پیشنهادیRAM پیشنهادیپهنای باند تخمینینوع سرور پیشنهادی
تا ۱۰ نفر۲ هسته۴ گیگابایتحدود ۱۰ مگابیت بر ثانیهVPS پایه
۱۰ تا ۳۰ نفر۴ هسته۸ گیگابایتحدود ۳۰ مگابیت بر ثانیهVPS متوسط
۳۰ تا ۷۵ نفر۸ هسته۱۶ گیگابایتحدود ۷۰ مگابیت بر ثانیهVPS بالا یا سرور اختصاصی
بیش از ۷۵ نفر۱۶+ هسته، چند videobridge (Octo)۳۲+ گیگابایتبیش از ۱۵۰ مگابیت بر ثانیهسرور اختصاصی

این اعداد تخمینی هستند و به کیفیت تصویر انتخابی، تعداد کسانی که دوربین‌شان روشن است و میزان استفاده از اشتراک صفحه بستگی دارند؛ بهتر است با نصب روی یک منبع کوچک شروع کنید و با مانیتورینگ مصرف CPU در ساعات واقعی استفاده، منابع را بالا ببرید.

برای تیم‌های کوچک تا متوسط، یک سرور مجازی (VPS) با امکان ارتقای آنی منابع، نقطهٔ شروع مناسبی است؛ وقتی جلسات بزرگ و همیشگی با بیش از ۷۵ شرکت‌کننده بخشی از روزمرهٔ سازمان شد، انتقال videobridge به یک سرور اختصاصی ثبات بیشتری در کیفیت تصویر می‌دهد، چون منابع CPU و پهنای باند با سرورهای دیگر مشترک نیست.

نکات امنیتی و نگهداری

برای سخت‌تر کردن سطح حمله روی سرور، نکات افزایش امنیت سرور لینوکس عمومی هم در کنار موارد زیر کاربرد دارند:

  • محدود کردن ایجاد جلسه: با تنظیم ENABLE_AUTH=1 و ENABLE_GUESTS=1 در .env، فقط کاربران احراز هویت‌شده می‌توانند جلسه بسازند و مهمان‌ها فقط می‌توانند به جلسهٔ موجود ملحق شوند.
  • به‌روزرسانی منظم: تصاویر Docker را هر چند هفته با docker-compose pull و docker-compose up -d به‌روزرسانی کنید تا آسیب‌پذیری‌های امنیتی پوشش داده شود.
  • محدود کردن دسترسی به پورت‌های مدیریتی: پورت‌های پیش‌فرض مانیتورینگ Prosody و Jicofo را فقط از IP داخلی یا VPN در دسترس بگذارید، نه از اینترنت عمومی.
  • پشتیبان‌گیری از .env و گواهی‌های SSL: این دو فایل تمام پیکربندی دامنه، رمزها و گواهی را در خود دارند؛ از دست رفتن‌شان یعنی تنظیم مجدد کامل. پشتیبان‌گیری خودکار و رمزنگاری‌شده با Restic راهی ساده برای این کار است.

جمع‌بندی

راه‌اندازی Jitsi Meet روی سرور خودتان با Docker Compose چند ساعت کار می‌برد: نصب Docker، تنظیم دامنه و HTTPS با Let's Encrypt، باز کردن پورت‌های ۴۴۳، ۴۴۴۳ و ۱۰۰۰۰/UDP، و در صورت نیاز یک TURN server برای کاربران پشت NAT سخت‌گیر. در ازای این کار، کنترل کامل روی داده‌های جلسات و بدون محدودیت پلن‌های رایگان را به دست می‌آورید.

اگر هنوز زیرساخت مناسبی برای این نصب ندارید، یک سرور مجازی ابری آریانت با منابع قابل ارتقا و پهنای باند مناسب برای ویدیو کنفرانس، نقطهٔ شروع مناسبی برای این پروژه است.