slack

این چند روز اخیر یک شرکت دیگه ارتباط با ایران و کاربران ایرانی رو محدود کرد و مشکلاتی را برای شرکت‌های ایرانی که از محصولات آن استفاده می‌کردند ایجاد کرده است. Slack یه اپلیکیشن چت گروهی می‌باشد که خیلی امکانات خوبی در اختیار شرکت‌ها قرار می‌دهد. این اپلیکیشن بر روی زیرساخت ابری پیاده‌سازی شده که این امکان به کیفیت این سرویس نیز کمک عمده‌ای کرده است. خوب دیگه این امکان فراهم نیست تا شرکت‌ها و افراد ایرانی از اسلک استفاده کنند از این رو باید یک گزینه‌ی جایگزین برای این نرم‌افزار فراهم شود تا امکانات خوبی را اختیار آنها قرار دهد. پیشنهاد من استفاده از اپلیکیشن متن‌باز Rocket.Chat می‌باشد. این نرم‌افزار به صورت کامل رایگان، بدون محدودیت و متن باز می‌باشد. یک راهکار خوب برای جایگزین کردن با اسلک می‌باشد. البته این سرویس نسخه‌ی ابری هم دارد که به صورت پولی می‌باشد و می‌بایست برای آن پرداخت انجام دهید. از امکانات دیگر این نرم‌افزار می‌توان به سازگاری آن با تمام پلتفرم‌ها می‌باشد که انواع مختلفی از clientها را پشتیبانی می‌کند و در کل خیلی کار راه‌انداز هست و توصیه می‌کنم در کنار سرویس‌های داخلی شرکت خودتون از این چت سرور هم استفاده کنید.

rocket.chat

از مزایای استفاده از راکت چت گفتم حالا می‌خوام در مورد نصبش صحبت کنم. نصب این ابزار روش‌های مختلفی دارد که خوب داکیومنت خوبی هم برای نصب اون وجود دارد که در این لینک می‌توانید آنها را مشاهده کنید. اما روشی که من می‌‌خوام به شما پیشنهاد بدم استفاده از داکر کامپوز می‌باشد.نحوه‌ی نصب داکر و داکر کامپوز رو قبلا توضیح دادم اما اگر نیاز هست که نصب انجام دهید از این روش می‌توانید داکر را و از این روش داکر کامپوز را نصب کنید.

فایل داکر کامپوز:

فایل داکر کامپوز را می‌توانید از اینجا دریافت کنید. دقت کنید که حتما موارد که داخل [ متغیرهای پیاده‌سازی ] می‌باشد را مخصوص سرویس خود تکمیل نمایید. این متغیرها شامل مواردی همچون پورت‌های سرویس بر روی هاست و دایرکتوری مربوط به ذخیره اطلاعات داخل کانتینرها می‌باشد.

version: ‘2’
services:
  mongo:
    restart: unless-stopped
    image: mongo
    volumes:
      – [data directory path]:/data/db
      – [backup directory path]:/backups
    command: –smallfiles
  rocketchat-oeru:
    restart: unless-stopped
    image: rocketchat/rocket.chat
    ports:
      – “127.0.0.1:[port number]:3000” # should be a free port above 1024
    depends_on:
      – mongo
    environment:
      – MONGO_URL=mongodb://mongo/rocket
      – ROOT_URL=[domain name (including schema, e.g. http://)]
    volumes:
      – [upload directory path]:/var/www/rocket.chat/uploads


پس از دریافت و تغییر پارامترهای داکر کامپوز و اصلاح آن براس استفاده خودتون مراحل زیر را طی کنید.

نحوه‌ی اجرای سرویس:

با استفاده از دستورات زیر ایمیج‌های مورد نیاز را دانلود می‌کنیم البته که می‌توان این دستورات رو هم نزد و هر زمانی که فایل کامپوز را اجرا کنید قبل از اجرا ایمیج‌ها را ابتدا دریافت می‌کند اما می‌توان جداگانه ایمیج‌ها را دریافت کرد چون معمولا تو ایران دریافت ایمیج‌ خیلی زمان‌بر است از این رو خوبه که اول ایمیج‌ها را دریافت کنید.

docker pull mongo
docker pull rocket.chat

بعد از اتمام دریافت ایمیج‌ها می‌توانید با استفاده از دستور زیر کامپوز‌فایل مورد نظر را اجرا کرده تا سرویس‌های مد نظر راه‌اندازی شود.

docker-compose up -d

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

docker-compose logs -f 

و با این دستور ۱۰۰ خط آخر لاگ تمام کانتینرها را مشاهده کنید.

docker-compose logs -f --tail 100

استفاده از nginx به عنوان reverse proxy:

خوب الان سرویس چت آماده هست اما روی پورت داخلی سرور در حال سرویس‌دهی می‌باشد. البته این پورت به فراخور تنظیمات شما می‌تواند متفاوت باشد اما به صورت پیش‌فرض پورت داخل کانتینر 3000 می‌باشد. برای این که بتوانیم از این سرویس استفاده کنیم پیشنهاد می‌کنم که از nginx به عنوان reverse proxy استفاده کنیم تا تمام درخواست‌‌ها به سمت آن آمده و nginx آنها را به بکند خودش هدایت کند. برای این کار از کانفیگ زیر استفاده می‌کنیم. البته این کانفیگ را می‌توانید از اینجا نیز دریافت کنید. ابتدا مقادیر مورد نظر خود را جایگزین می‌کنید سپس برای دامنه‌ی مد نظر خود گواهی‌نامه‌ی امن دریافت کنید. بعد از آن سرویس nginx را تست کرده و بعد از آن را reload نمایید. تمام این مراحل را در ادامه می‌توانید مشاهده کنید.

letsencrypt

دریافت ssl certificate از letsencrypt:

دریافت Certificate از letsencrypt روش‌های متعددی دارد که خیلی کار را باهاش را راحت‌ کرده است. در یک سری پست و ویدیو مفصل که بعدا آماده می‌کنم تمام روش‌‌‌های دریافت Certificate را بررسی می‌کنیم اما اینجا با استفاده از روش standalone گواهی مد نظر خودمون رو دریافت خواهیم کرد. حتما قبل از دریافت certificate نیاز است تا certbot را نصب کرده باشید که برای نصب می‌توانید از این لینک استفاده کنید.

certbot certonly --standalone --preferred-challenges http -d [domain name]

بعد از استفاده از این دستور certificate مورد نظر در مسیرهای که نمایش می‌دهد ذخیره می‌شود.برای کیفیت بیشتر و امن‌تر کردن سرویس از dhparam.pem نیز استفاده شده است که با دستور زیر ایجاد می‌شود.

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

بعد از ایجاد تمام این موارد می‌توانید با استفاده از دستور زیر کانفیگ nginx را بررسی و تست نمایید.

nginx -t

اگر نتیجه اوکی بود با استفاده از دستور زیر می‌توانید سرویس nginx خود را مجدد راه‌اندازی و یا reload نمایید.

systemctl reload nginx
systemctl status nginx

بعد از راه‌‌اندازی کامل nginx و سرویس‌های دیگه می‌تونید به آدرس domain name خود مراجعه کرده و ادامه‌ی کانفیگ‌های مربوط به rocket chat رو انجام دهید.می‌شد به جای استفاده از nginx از Traefik استفاده کرد یا اینکه خود nginx رو هم به صورت کانتینر راه‌اندازی کرد اما معمولا روی سرورها یک nginx برای مصارف دیگه هست که از همین استفاده کنیم. در کل Traefik گزینه‌ی مناسبی برای این گونه استفاده ها می‌باشد. داکیومنت و موارد اون رو هم می‌تونید اینجا بررسی کنید.

منبع