راهاندازی سرور مترموست و جیتسی بهصورت ساده
نصب خودکار Mattermost و Jitsi Meet روی یک سرور اوبونتو، با میرورهای داخلی که دانلودها را سریع و قابلاتکا میکنند.
- Mattermost
- Jitsi
- Docker
- NGINX
چت تیمی و جلسه ویدیویی معمولاً روی سرویسهایی میزبانی میشوند که هزینهشان با تعداد کاربر بالا میرود و گفتوگوهای داخلی سازمان هم روی سرور دیگران میماند. اگر تیمتان به اندازهای رسیده که این دو مسئله شوند، میتوانید هر دو را روی سرور خودتان بیاورید: Mattermost برای چت تیمی و Jitsi Meet برای جلسه ویدیویی.
مشکل اینجاست که نصب دستی این دو، چند ساعت کار است و یک جای کار همیشه میلنگد — معمولاً
همانجایی که apt یا Docker Hub در دسترس نیست.
برای همین یک اسکریپت نوشتهایم که کل مسیر را خودکار میکند و برای شرایط شبکه ایران تنظیم شده است:
مخزن اسکریپت: github.com/saqi-sn/install-mattermost-and-jitsi
چه چیزی نصب میشود
اسکریپت این اجزا را روی یک سرور اوبونتو بالا میآورد:
- Docker و Docker Compose برای اجرای سرویسها
- NGINX بهعنوان reverse proxy
- PostgreSQL بهعنوان دیتابیس Mattermost
- Mattermost برای چت تیمی
- Jitsi Meet (اختیاری) شامل Web، Videobridge، Jicofo و Prosody
دانلودها از میرورهای داخلی انجام میشود — مخازن اوبونتو از امیرکبیر، یزد و علموصنعت، و
ایمیجهای Docker از dockerhub.ir. نتیجهاش نصب سریعتر و بدون گیرکردن وسط کار است.
پیشنیازها
سرور
| منبع | حداقل | پیشنهادی |
|---|---|---|
| سیستمعامل | Ubuntu 20.04 / 22.04 / 24.04 | Ubuntu 22.04 LTS |
| حافظه | 4GB | 8GB و بیشتر |
| پردازنده | 2 هسته | 4 هسته |
| فضا | 20GB | 50GB SSD |
اگر Jitsi را هم نصب میکنید، ۸ گیگابایت حافظه را جدی بگیرید. ویدیوکنفرانس با ۴ گیگابایت کار میکند اما در جلسههای چندنفره کیفیت افت میکند.
دامنه و DNS
قبل از اجرای اسکریپت، رکوردهای DNS باید به IP سرور اشاره کنند. این مرحله را جا نیندازید؛ اگر Let’s Encrypt انتخاب کنید و DNS آماده نباشد، صدور گواهی شکست میخورد.
chat.example.com → IP سرور
meet.example.com → IP سرور # فقط اگر Jitsi میخواهید
اجرا
# دریافت اسکریپت
wget https://raw.githubusercontent.com/saqi-sn/install-mattermost-and-jitsi/main/install-mattermost-jitsi.sh
chmod +x install-mattermost-jitsi.sh
sudo ./install-mattermost-jitsi.sh
اسکریپت اول پیشنیازها را بررسی میکند — نسخه سیستمعامل، حافظه، پردازنده و فضای دیسک — و اگر چیزی کم باشد همان اول اعلام میکند، نه وسط نصب.
بعد چند سوال میپرسد:
- دامنه Mattermost (مثلاً
chat.example.com) - اینکه Jitsi هم نصب شود یا نه، و اگر بله دامنهاش
- روش گواهی TLS: Let’s Encrypt یا self-signed
- ایمیل، نام کاربری و رمز مدیر Mattermost
رمزهای دیتابیس و اعتبارنامههای Jitsi خودکار ساخته میشوند. همهشان در این فایل ذخیره میشود:
/root/mattermost-jitsi-credentials.txt
لاگ کامل نصب هم اینجاست، که اگر جایی خطا خورد اولین جایی است که باید نگاه کنید:
/var/log/mattermost-jitsi-setup.log
بعد از نصب
اول: فایل اعتبارنامهها را امن کنید
این مهمترین کاری است که بلافاصله باید انجام دهید. فایل اعتبارنامهها رمز مدیر و رمزهای دیتابیس را بهصورت متن ساده دارد:
chmod 600 /root/mattermost-jitsi-credentials.txt
یک نسخه در جای امن (مثلاً یک password manager) نگه دارید و بعد فایل را از سرور پاک کنید.
ساختار نصب
/opt/mattermost-jitsi/
├── mattermost/
│ ├── docker-compose.yml
│ ├── config/
│ ├── data/
│ ├── logs/
│ └── plugins/
└── jitsi/
├── docker-compose.yml
├── .env
├── prosody/
├── jicofo/
└── jvb/
پیکربندی NGINX هم در /etc/nginx/sites-available/ با نامهای mattermost و jitsi
قرار میگیرد.
پورتها و فایروال
اسکریپت UFW را فعال میکند و این پورتها را باز میگذارد:
| پورت | کاربرد |
|---|---|
| 80 | HTTP (تغییر مسیر به HTTPS و چالش Let’s Encrypt) |
| 443 | HTTPS |
| 10000/UDP | ویدیوی Jitsi |
پورت 10000/UDP را حتماً بررسی کنید. اگر سرورتان پشت فایروال ابری است، باید آنجا هم باز
شود؛ وگرنه Jitsi بالا میآید اما صدا و تصویر برقرار نمیشود. این شایعترین مشکلی است که
بعد از نصب میبینیم.
sudo ufw status verbose
بررسی سرویسها
docker ps
docker logs -f mattermost-app
docker logs -f jitsi-web
docker logs -f jitsi-prosody
برای ریاستارت:
cd /opt/mattermost-jitsi/mattermost
docker compose restart
نکتهای درباره Jitsi
بهصورت پیشفرض، Jitsi احراز هویت ندارد: هرکسی که لینک اتاق را داشته باشد میتواند وارد شود. برای استفاده داخلی سازمان معمولاً قابل قبول نیست. اگر جلسههایتان محرمانه است، یا احراز هویت Prosody را فعال کنید یا دستکم نام اتاقها را قابلحدس نگذارید.
چند کار که بعداً پشیمانتان نمیکند
۱. بهروزرسانی خودکار امنیتی را روشن کنید:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
۲. Fail2Ban را نصب کنید تا تلاشهای ورود پیدرپی مسدود شوند:
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
۳. پشتیبانگیری را از همان روز اول راه بیندازید — هم از دیتابیس و هم از پوشه
/opt/mattermost-jitsi/. و مهمتر از گرفتن پشتیبان، یکبار آزمودن بازیابی آن است.
پشتیبانی که هیچوقت بازیابی نشده، پشتیبان نیست.
۴. تمدید گواهی را بررسی کنید. Let’s Encrypt خودکار تمدید میشود، اما یکبار مطمئن شوید تایمر certbot فعال است:
systemctl list-timers | grep certbot
جمعبندی
با این اسکریپت، یک سرور چت و ویدیوکنفرانس مستقل در حد نیمساعت بالا میآید — روی زیرساخت خودتان و بدون هزینهی بهازای هر کاربر.
کار سختِ باقیمانده نصب نیست؛ نگهداری است: بهروزرسانیها، پشتیبانگیری آزمونشده، پایش در دسترسبودن و رسیدگی وقتی چیزی از کار میافتد.