پرش به محتوا

راه‌اندازی سرور مترموست و جیتسی به‌صورت ساده

نصب خودکار Mattermost و Jitsi Meet روی یک سرور اوبونتو، با میرورهای داخلی که دانلودها را سریع و قابل‌اتکا می‌کنند.

6 دقیقه مطالعه
  • 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

جمع‌بندی

با این اسکریپت، یک سرور چت و ویدیوکنفرانس مستقل در حد نیم‌ساعت بالا می‌آید — روی زیرساخت خودتان و بدون هزینه‌ی به‌ازای هر کاربر.

کار سختِ باقی‌مانده نصب نیست؛ نگهداری است: به‌روزرسانی‌ها، پشتیبان‌گیری آزمون‌شده، پایش در دسترس‌بودن و رسیدگی وقتی چیزی از کار می‌افتد.