
به اشتراک بگذارید

به اشتراک بگذارید
جلسه دونفره دیروز روی سرور تازه روان بود و امروز، با ورود نفر سوم، تصویر همه سیاه شد. فاصله این دو جلسه یک قدم جاافتاده در نصب Jitsi Meet است که تا نفر سوم خودش را نشان نمیدهد. روی Ubuntu 24.04 یا Debian 12، پنج اشتباه رایج همینطور تا روز جلسه پنهان میمانند.
🧩 سه سرویس پشت یک صفحه جلسه
سرویس Prosody سرور XMPP برای سیگنالدهی است و Jicofo جلسه را مدیریت میکند؛ تصویرها را Jitsi Videobridge جابهجا میکند.
✅ آزمایش نهایی را با سه دستگاه از سه شبکه جدا بگیرید.
✅ دستورها از هندبوک رسمی Jitsi آمدهاند.
جلسه آزمایشی دونفره چیزی درباره سرور ثابت نمیکند، چون رسانهاش از videobridge نمیگذرد؛ کار از ورود نفر سوم شروع میشود. گفتگوی متنی تیم ابزار جدایی میخواهد و مقایسه سه پیامرسان سازمانی خودمیزبان برای همان انتخاب است.
📌 پنج اشتباه و نشانه هر کدام
◀️ دامنه و گواهی معتبر
◀️ پورت UDP 10000 و NAT
◀️ محدود کردن ساخت اتاق
◀️ تخمین منابع سرور

اپلیکیشنهای موبایل Jitsi فقط به سروری با گواهی امضاشده یک مرجع معتبر وصل میشوند. هندبوک برای این گواهی Let’s Encrypt را پیشنهاد میکند و کار را از یک دامنه و رکورد A شروع میکند؛ پس یک زیردامنه، مثلاً meet.example.org، برای نصب Jitsi Meet آماده کنید.
فرض ما سروری با IP عمومی است، مثل یک سرور مجازی. سرور پشت روتر خانه یا دفتر حساب دیگری دارد. رکورد A زیردامنه به همین IP اشاره میکند؛ راهنمای تنظیمات DNS و رکوردهای دامنه نشان میدهد این رکورد در پنل دامنه کجا ساخته میشود. ثبت FQDN روی خود سرور اختیاری است:
sudo hostnamectl set-hostname meet.example.org
همان نام را با IP عمومی در /etc/hosts هم بنویسید.
راهنمای نصب هندبوک Jitsi امروز Debian 12 و Ubuntu 24.04 یا تازهتر را پشتیبانی میکند و OpenJDK 17 میخواهد؛ آموزشهای Debian 10 و Ubuntu 20.04 کهنهاند. فقط روی اوبونتو مخزن universe را با sudo add-apt-repository universe فعال کنید؛ Debian 12 به این خط نیاز ندارد. بعد بستههای لازم و دو مخزن Prosody و Jitsi:
sudo apt update
sudo apt install apt-transport-https gnupg2 nginx-full curl
sudo curl -sL https://prosody.im/files/prosody-debian-packages.key -o /usr/share/keyrings/prosody-debian-packages.key
echo "deb [signed-by=/usr/share/keyrings/prosody-debian-packages.key] http://packages.prosody.im/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/prosody-debian-packages.list
curl -sL https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
echo "deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/" | sudo tee /etc/apt/sources.list.d/jitsi-stable.list
sudo apt update
این دو مخزن بیرون از ایران میزبانی میشوند و از بعضی شبکههای داخلی ممکن است باز نشوند. پیش از شروع، پاسخ curl -I https://download.jitsi.org/stable/ را روی خود سرور ببینید و اگر پاسخی نیامد، از پشتیبانی دیتاسنتر بپرسید.
پورت 80/TCP باید پیش از نصب باز باشد، چون Let’s Encrypt هنگام نصب به آن نیاز دارد. هندبوک 80، 443، 22 و 5349 روی TCP و 10000 روی UDP را لازم میداند؛ 3478/UDP اختیاری است و تغییری در config.js میخواهد. اگر SSH پورت دیگری دارد، پیش از ufw enable همان را باز کنید؛ فایروال دیتاسنتر هم همینها را میخواهد:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw allow 22/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw enable
sudo apt install jitsi-meet
نصبکننده نام میزبان و نوع گواهی را میپرسد. گواهی خودامضا هشدار مرورگر میآورد و اپلیکیشن موبایل را بیرون نگه میدارد. بعد از نصب، https://meet.example.org را باز کنید و یک جلسه بسازید. اگر nginx از قبل روی 443 همین سرور باشد، نصبکننده پیکربندی turnserver را رد میکند.

اگر بعد از نصب Jitsi Meet جلسه دونفره سالم است و سهنفره قطع میشود، علت در مسیر videobridge است. دو نفر با اتصال مستقیم P2P حرف میزنند؛ نفر سوم که بیاید، صدا و تصویر به jitsi-videobridge2 روی پورت 10000/UDP میرود. بخش پرسشهای هندبوک همین نشانه را ثبت کرده است.
در سالن همایش، دو نفرِ سر یک میز بیمیکروفون حرفشان را میزنند. از شنونده سوم به بعد صدا باید از آمپلیفایر بگذرد؛ اگر کابلش جدا باشد، گفتگوی سر میز ادامه دارد و سالن چیزی نمیشنود. در Jitsi نقش آمپلیفایر را jitsi-videobridge2 دارد.
| نشانه | علت محتمل | جای بررسی |
|---|---|---|
| تصویر سیاه یا قطع با نفر سوم | مسیر videobridge بسته است | پورت 10000/UDP |
| هیچکس صدا و تصویر دیگری را ندارد | سرور پشت NAT بینگاشت | بخش ice4j در jvb.conf |
| فقط بعضیها صدا و تصویر ندارند | شبکه آنها UDP را بسته و مسیر TCP نیست | پورت 5349/TCP برای coturn |
| مرورگر وصل میشود و اپلیکیشن موبایل نه | زنجیره کامل گواهی (fullchain) تحویل داده نمیشود | خط ssl_certificate در nginx |
| غریبهها اتاق میسازند | ساخت جلسه پیشفرض باز است | احراز هویت با توکن |
⚠️ آزمایش دونفره مسیر videobridge را پنهان میکند
جلسه دونفره موفق درباره پورت 10000/UDP خبری نمیدهد. آزمایش را با سه دستگاه بگیرید؛ مثلاً یک لپتاپ روی اینترنت ثابت و دو گوشی روی دو اپراتور.
اگر ip address show روی سرور فقط IP خصوصی (10.x، 172.16 تا 172.31 یا 192.168.x) نشان میدهد، هندبوک سرور را پشت NAT میداند. از پشتیبانی ارائهدهنده بپرسید. اگر ارائهدهنده 443/TCP و 10000/UDP را به همین سرور میرساند و جلسه سهنفره باز کار نکرد، نگاشت را بنویسید و جای دو مقدار نمونه، IP داخلی و عمومی سرور را بگذارید:
ice4j {
harvest {
mapping {
static-mappings = [
{
local-address = "<Local.IP.Address>"
public-address = "<Public.IP.Address>"
}
]
}
}
}
🔸 نشانی عمومی videobridge کجا ثبت میشود
فایل: /etc/jitsi/videobridge/jvb.conf
بخش: ice4j.harvest.mapping با دو کلید local-address و public-address
پس از ذخیره: sudo systemctl restart jitsi-videobridge2
طبق بخش Access Control راهنمای نصب، نصب Jitsi Meet بهطور پیشفرض به هر کسی که نشانی سرور را دارد اجازه ساختن جلسه میدهد. برای اینکه فقط کاربران خودتان اتاق بسازند و مهمانها بعد وارد شوند، احراز هویت را روشن کنید.
⚠️ دامنه عمومی و ساخت اتاق باز
تا احراز هویت روشن نشده، هر کسی نشانی را پیدا کند از پهنای باند سرور استفاده میکند. جلسه بیسقف زمانی به غریبهها هم میچسبد. رمز اتاق جلوی ساختن اتاق تازه را نمیگیرد.
هندبوک برای نصب تازه احراز هویت JWT را توصیه میکند. گام اول در صفحه Token Authentication نصب یک بسته با دسترسی root است:
apt-get install jitsi-meet-tokens
نصبکننده Application ID و Application Secret را میپرسد و آنها را با authentication = “token” در پیکربندی Prosody مینویسد. از آن به بعد فقط کسی که توکن معتبر دارد اتاق میسازد و بقیه از دامنه ناشناس وارد میشوند. باقی تنظیمها در همان صفحه است و اتصال به Keycloak در صفحه Authentication.
روش قدیمی secure domain، با internal_hashed و prosodyctl، را هندبوک در صفحه Secure Domain برای نصب تازه منسوخ خوانده است؛ آن را فقط روی سرورهای قدیمی میبینید.

صفحه Requirements در هندبوک Jitsi عددی برای تعداد شرکتکننده نمیدهد. منابع را به ترتیب اهمیت میچیند: شبکه، RAM، CPU و دیسک. به گفته هندبوک، اشتباه در این محاسبه در یک سیستم بلادرنگ بهراحتی کار پایه جلسه را خراب میکند و به کندی ختم نمیشود.
| منبع | راهنمای هندبوک | معنای عملی |
|---|---|---|
| شبکه به ازای هر تصویر | تصویر 720 حدود ۲۵۰۰ کیلوبیت و 4K حدود ۱۰ مگابیت در ثانیه | تعداد تصویر همزمان را حساب کنید |
| شبکه سرور | ۱ گیگابیت برای سازمان کوچک اغلب کافی است؛ سرور جدی ۱۰ گیگابیت | سرعت واقعی را با iperf3 بسنجید |
| حافظه RAM | معمولاً ۸ گیگابایت؛ ۴ برای جلسه کوچک؛ ۲ برای آزمایش | جلسه بزرگ سرور بیشتر میخواهد |
| پردازنده CPU | ۴ هسته اختصاصی برای سرور پایه؛ Prosody فقط یک هسته را به کار میگیرد | اختصاصی بودن CPU را بپرسید |
| دیسک | ۲۰ گیگابایت دیسک معمولی | دیسک SSD شرط نیست |
در مثال همان صفحه، بیست کاربر 4K روی سرور ۱۰۰ مگابیتی جا نمیشوند. برآورد منابع پیش از نصب Jitsi Meet را از ستون شبکه شروع کنید و برای رشد، videobridge بیشتر را به سرور بزرگتر ترجیح دهید. برای جلسههای بیش از صد نفر، هندبوک این سقفها را در /etc/systemd/system.conf پیشنهاد میکند:
DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000
DefaultTasksMax=65000
سپس sudo systemctl daemon-reload را بزنید و jitsi-videobridge2 را دوباره راه بیندازید.
هر Jibri فقط یک جلسه را ضبط میکند و برای 1080×720 دستکم ۸ گیگابایت RAM میخواهد. هندبوک Jibri را روی سرور جلسه توصیه نمیکند.
در راهنمای نصب هندبوک تنظیمی برای سقف مدت جلسه نیامده است. راه مستند هندبوک برای پایان خودکار جلسه، سامانه رزرو است: ماژول reservations در Prosody مدت را از یک API بیرونی میگیرد و جلسه طولانیتر را میبندد. مسیر نصب پیشفرض هندبوک سقف دیگری تعریف نمیکند.
اگر جلسه آزمایشی چیزی را خراب نشان داد، پرسشی را بخوانید که نشانه شما را با همان کلمهها گفته است.
به گفته هندبوک، احتمالاً زنجیره کامل گواهی (fullchain) تحویل داده نمیشود. با Let’s Encrypt، خط ssl_certificate در nginx باید به fullchain.pem اشاره کند. گواهی خودامضا هم اپلیکیشن را بیرون نگه میدارد.
نصبکننده IP ثابت را میپذیرد، اما مسیر مستند هندبوک با دامنه و گواهی Let’s Encrypt جلو میرود. اگر همکاران از گوشی وارد میشوند، دامنه بگیرید.
فهرست هندبوک فعلی از Ubuntu 24.04 شروع میشود؛ سازگاری نسخه قدیمیتر را خودتان باید بسنجید.
بله. فقط ساختن اتاق حساب میخواهد و بقیه از دامنه مهمان وارد میشوند.
در نصب پیشفرض نه. برای سقف زمانی، ماژول reservations در Prosody همراه یک API رزرو لازم است.
از نظر فنی بله، ولی هندبوک توصیه نمیکند؛ Jibri پرمصرف است و ممکن است دیسک را پر کند.
در /var/log/jitsi/jvb.log و /var/log/jitsi/jicofo.log و /var/log/prosody/prosody.log.
جمعبندی؛ نصب Jitsi Meet با نفر سوم سنجیده میشود جلسه دونفره فقط ثابت میکند صفحه باز میشود. سرور وقتی آماده تیم است که سه دستگاه از سه شبکه همزمان صدا و تصویر هم را داشته باشند و اپلیکیشن موبایل بیهشدار وصل شود. چهار کار شما را به این نقطه میرساند: دامنه با گواهی Let’s Encrypt، پورتهای 10000/UDP و 5349/TCP باز، نگاشت NAT در jvb.conf برای سرور با IP خصوصی، و احراز هویت با توکن JWT. اندازه سرور را از ستون شبکه شروع کنید. مشکلی ماند؟ اول سراغ لاگهای jvb، jicofo و prosody بروید.
🚀 پیامرسانی که کنار همین جلسهها بنشیند
تیمی که جلسهاش روی سرور خودش است، پیامهایش را هم معمولاً همانجا میخواهد. مقایسه Mattermost و دو رقیبش را بخوانید.
در اولین جلسهای که روی سرور خودتان گرفتید چند نفر بودید و با ورود نفر چندم چیزی خراب شد؟ یک خط از jvb.log همان لحظه، حدس را به سند تبدیل میکند.
مستندات رسمی Jitsi که دستورها از آنها آمده