فهرست مطالب
- مقدمه
- منابع مورد نیاز
- زیرساخت لازم
- تغییر Hostname سیستمعامل
- توقف سرویس multipathd
- تغییر Time Zone
- اتصال سیستمعامل به یک NTP Server
- تخصیص مخازن اوبونتو به سیستمعامل
- بروزرسانی سیستمعامل به آخرین نسخهی 20.04
- نصب و راهاندازی LXD
- دریافت پروندهی Image مربوط به سرویس Rocket.Chat
- ساخت LXD Container از روی Image مربوط به سرویس Rocket.Chat
- قطع دسترسی اینترنت Container ایجاد شده
- دریافت پروژهی desertco-nginx
- دریافت پروندههای Image سرویس Nginx
- پیکربندی و امادهسازی سرویس Nginx
- راهاندازی سرویس Nginx تحت بستر Docker
- پیکربندی اولیه سامانهی Rocket.Chat
- اتصال سامانهی Rocket.Chat به سرویس Active Directory جهت احراز هویت کاربران
- غیر فعالسازی احراز هویت ۲ مرحلهای
مقدمه
- هدف از این مستند، ارائهی راهکاری جامع جهت نصب و راهاندازی سرویس Rocket.Chat در سطح شبکه است.
- در این مستند سعی شده است که تمام مطالب از پایه و نیازمندیهای اولیه به صورت کامل پوشش داده شود.
منابع مورد نیاز
- پیشنهاد میشود تعداد هستههای پردازنده برای سرویس Rocket.Chat کمتر از 4 عدد نباشد.
- همچنین مقدار Memory در نظر گرفته شده برای این سرویس کمتر از 8GB نباشد.
- در نهایت پیشنهاد میشود مقدار فضای در نظر گرفته شده برای این سرویس کمتر از 50GB نباشد.
- البته منابع مورد نیاز برای این سرویس باید متناسب با حجم کار و تعداد نفرات و کاربران سامانه در نظر گرفته شود.
- اما منابع ذکر شده جهت پیادهسازی سرویس Rocket.Chat در سطح قابل قبولی میباشد.
زیرساخت لازم
- سیستمعامل Linux Ubuntu 20.04 – Server به منظور استقرار سرویس Rocket.Chat بر روی آن پیشنهاد میشود.
- پیشنهاد میشود سیستمعامل در نظر گرفته شده برای این سرویس، خام و در حالت پایه باشد. (فاقد سرویسهای دیگر باشد.)
- به منظور پیکربندی سیستمعامل ابتدا از طریق پروتکل SSH به آن متصل شوید.
$ ssh -l root chat.homayouni.info
تغییر Hostname سیستمعامل
- پیشنهاد میشود ابتدا Hostname مربوط به سیستمعامل به صورت صحیح اصلاح شود.
- دامنهی chat.homayouni.info در مفروضات این مستند برای سرویس Rocket.Chat در نظر گرفته شده است، لذا نام Hostname سیستمعامل نیز بهتر است به این نام تغییر یابد.
- برای این منظور ابتدا پروندهی hostname را با یک ویرایشگر باز نمایید.
# vim /etc/hostname
- سپس مقدار جدید Hostname را وارد کرده و پرونده را ذخیره نمایید.
- در ادامه پروندهی hosts را با یک ویرایشگر باز نمایید.
# vim /etc/hosts
- در خط دوم اشاره به Hostname قدیمی سیستمعامل شده است، آن را با مقدار جدید تغییر دهید.
توقف سرویس multipathd
- در ادامه پیشنهاد میشود سرویس multipathd به صورت کامل متوقف شود. برای این منظور به صورت زیر عمل نمایید.
# systemctl disable --now multipathd.service multipathd.socket
- انتظار میرود با اجرای دستور بالا سرویس multipathd متوقف شود در زمان بالا آمدن سیستمعامل دیگر اجرا نشود.
تغییر Time Zone
- به منظور تغییر Time Zone سیستمعامل دستور زیر را اجرا نمایید.
# dpkg-reconfigure tzdata
- با اجرای دستور بالا ، با صفحهی مشابه تصویر زیر روبهرو خواهید شد.
- مطابق با تصویر بالا، گزینهی Asia را انتخاب نموده و گزینهی Ok را اجرا نمایید.
- در ادامه گزینهی Tehran را انتخاب نمایید.
- در نهایت بر روی گزینهی Ok کلیک نمایید.
- انتظار میرود با تصویری مشابه زیر روبهرو شوید.
اتصال سیستمعامل به یک NTP Server
- به منظور اتصال سیستمعامل به یک NTP Server ابتدا پروندهی timesyncd.conf را با یک ویرایشگر باز نمایید.
# vim /etc/systemd/timesyncd.conf
- در خط ۱۵ از پروندهی بالا اشاره به NTP Server شده است. این خط را به شکل زیر تغییر دهید.
... NTP=194.225.70.246 ...
- نکته : آدرس 194.225.70.246 مربوط به یک سرور اینترنتی و دامنهی ntp.nic.ir میباشد. استفاده از NTP Server داخلی شرکت، سازمان یا اینترنتی باید متناسب با سیاستهای اتخاذ شده، باشد.
- سپس دستور زیر را به منظور استفاده از NTP Server اجرا نمایید.
# timedatectl set-ntp on
- در نهایت یک مرتبه سرویس systemd-timesyncd را راهاندازی مجدد نمایید.
# systemctl restart systemd-timesyncd
- با انجام مراحل بالا انتظار میرود ساعت و تاریخ سیستمعامل صحیح و متصل به یک NTP Server باشد.
تخصیص مخازن اوبونتو به سیستمعامل
- در مرحلهی بعد پیشنهاد میشود مخازن موجود در سیستمعامل متناسب با شبکهی سازمان یا شرکت دستخوش تغییرات شود.
- ابتدا با یک ویرایشگر پروندهی sources.list را باز نمایید.
# vim /etc/apt/sources.list
- در ادامه تمام محتویات داخل پروندهی sources.list را پاک کرده و مقادیر زیر را جایگزین نمایید.
deb [arch=amd64] http://mirror.aminidc.com/ubuntu/ focal main restricted universe multiverse deb [arch=amd64] http://mirror.aminidc.com/ubuntu/ focal-updates main restricted universe multiverse deb [arch=amd64] http://mirror.aminidc.com/ubuntu/ focal-security main restricted universe multiverse deb [arch=amd64] http://mirror.aminidc.com/ubuntu/ focal-backports main restricted universe multiverse
- نکته : نوجه نمایید که آدرس مخازن بالا مربوط به سرورهای اینترنتی میباشد. در صورتی که در سطح شبکه، مخازن اوبونتو وجود دارد، پیشنهاد میشود مخازن داخلی شبکه را جایگزین سرورهای اینترنتی نمایید.
بروزرسانی سیستمعامل به آخرین نسخهی 20.04
- در مرحلهی بعد پیشنهاد میشود یک مرتبه سیستمعامل به آخرین نسخهی موجود 20.04 یا Focal بروزرسانی شود. برای این منظور به صورت زیر عمل نمایید.
# apt-get update # apt-get dist-upgrade -y # apt-get autoremove -y # apt-get clean
- در صورتی که دستورات بالا موفقیت آمیز اجرا شود با تصویری مشابه زیر روبهرو میشود.
- تصویری دیگر از بروزرسانی سیستمعامل به شرح زیر است.
- پیشنهاد میشود پس از اتمام فرآیند بروزرسانی، یک مرتبه سیستمعامل راهاندازی مجدد شود.
نصب و راهاندازی LXD
- پیشنهاد میشود سرویس Rocket.Chat بر روی یک Container از جنس LXD نصب و راهاندازی شود.
- در این صورت فرآیند انتقال سرویس Rocket.Chat به همراه تمام دادههای موجود در آن به سادگی امکانپذیر خواهد بود.
- نکته : میتوان همین فرآیند را از طریق Container از جنس Docker انجام داد.
- به منظور نصب و راهاندازی LXD به صورت زیر عمل نمایید.
# apt-get install -y lxd
- با اجرای دستور بالا فرآیند نصب آغاز خواهد شد.
- در طور فرآیند نصب سوالی مشابه تصویر زیر پرسیده میشود که گزینهی پیشفرض یعنی 4.0 را اجرا نمایید.
- در نهایت در صورتی که فرآیند نصب موفقیت آمیز طی شده باشد، با تصویری مشابه زیر روبهرو خواهید شد.
- نکته : علیرغم استفاده از دستور apt-get جهت نصب و راهاندازی سرویس LXD ، بستهی lxd تنها راهانداز و نصابی جهت نصب از طریق snap میباشد. لذا دسترسی به اینترنت جهت نصب این بسته نیاز میباشد. (حتی اگر بستهی LXD از مخازن داخلی شبکه، شرکت یا سازمان نصب شود.)
- در ادامه به منظور پیکربندی LXD دستور زیر را اجرا نمایید.
# lxd init
- با اجرای دستور بالا سوالاتی پرسیده میشود که مشابه تصویر زیر پاسخ دهید.
نکته : حتما مقدار سوال Name of the storage backend to use را برابر با dir وارد نمایید.
دریافت پروندهی Image مربوط به سرویس Rocket Chat
- ابتدا پروندهی Rocket-Chat-19_Sep_2023.tar.gz را از لینک اینترنتی زیر دریافت نمایید.
# wget http://dl.homayouni.info:8080/lxd-images/desertco-rocketchat/Rocket-Chat-19_Sep_2023.tar.gz
- در ادامه به صورت زیر اقدام به بارگزاری پروندهی Rocket-Chat-19_Sep_2023.tar.gz نمایید.
# lxc image import ./Rocket-Chat-19_Sep_2023.tar.gz --alias Rocket-Chat-19_Sep_2023
- به منظور مشاهدهی پروندههای Image موجود بر روی سیستم به صورت زیر عمل نمایید.
# lxc image list
- در صورتی که دستور بالا به درستی اجرا شود و فرآیند بارگزاری پروندهی Image به صورت صحیح انجام شده باشد، با تصویری مشابه زیر روبهرو خواهید شد.
ساخت LXD Container از روی Image مربوط به سرویس Rocket Chat
- به منظور ساخت Container از روی پروندهی Image بارگزاری شده به صورت زیر عمل نمایید.
# lxc launch local:Rocket-Chat-19_Sep_2023 Rocket-Chat
- دستور بالا باعث ایجاد Container با نام Rocket-Chat از روی Image با نام Rocket-Chat-19_Sep_2023 خواهد شد.
- به منظور مشاهدهی مشخصات مربوط به Container ایجاد شده به صورت زیر عمل نمایید.
# lxc list
- خروجی دستور بالا مشابه تصویر زیر خواهد بود.
- نکته : آدرسهای IP گرفته شده توسط Container بر روی سیستمهای مختلف، متفاوت خواهد بود.
قطع دسترسی اینترنت Container ایجاد شده
- پیشنهاد میشود بعد از ساخت و ایجاد Container نسبت به قطع دسترسی اینترنت آن اقدام نمایید. (به منظور عدم ارتباط سرویس Rocket.Chat با سرورهای این سرویس)
- برای این منظور ابتدا وارد محیط Container شوید.
# lxc shell Rocket-Chat
- سپس پروندهی 10-lxc.yaml را به صورت زیر با یک ویرایشگر باز نمایید.
# vim /etc/netplan/10-lxc.yaml
- Container پس از روشن شدن یک آدرس IP از DHCP گرفته است. همان را به صورت Static برای Container در نظر بگیرید اما بخش gateway را تکمیل نکنید تا بدین شکل دسترسی اینترنت Container وصل نشود.
- در نهایت به منظور اعمال تغییرات دستور زیر را اجرا نمایید.
# netplan apply
- نکته : در صورتی که قصد اتصال سامانه به سرویس Active Directory را دارید، آدرس IP سرویس Active Directory را به عنوان DNS برای Container در نظر بگیرید. (به منظور اتصال به دامنههای تعریف شده در سرویس Active Directory)
دریافت پروژهی desertco-nginx
- به منظور سرویسدهی بهتر سامانهی Rocket.Chat تحت پروتکل https از سرویس Nginx به عنوان نوعی Reverse Proxy استفاده میشود.
- برای این منظور ابتدا وارد مسیر زیر شوید. (درون ماشین Host)
# cd /opt/
- سپس پروژهی desertco-nginx را به صورت زیر دریافت نمایید.
# git clone https://git.homayouni.info/git/iman/desertco-nginx.git -b release
- نکته : در صورتی که این پروژه را به صورت Offline دریافت نمودید، آن را به مسیر opt/ منتقل نمایید.
- در ادامه وارد پوشهی مربوط به پروژه شوید.
# cd desertco-nginx
دریافت پروندههای Image سرویس Nginx
- به منظور دریافت پروندهی Image مربوط به سرویس Nginx وارد پوشهی images شوید.
# cd images
- در نهایت اسکریپت setup.sh را به صورت زیر اجرا نمایید.
# bash setup.sh
- انتظار میرود با اجرای اسکریپت بالا ، فرآیند دریافت پروندههای مورد نیاز آغاز شود.
- تصویری دیگر از مراحل اجرای اسکریپت setup.sh به شرح زیر است.
- تصویری دیگر از مراحل اجرای اسکریپت setup.sh به شرح زیر است.
- تصویری دیگر از مراحل اجرای اسکریپت setup.sh به شرح زیر است.
- تصویر بالا نشان دهندهی آن است که تمام پروندههای Image مورد نیاز به درستی بر روی سیستم بارگزاری شده است.
- نکته : در صورتی که پروندهی nginx.tar.7z را به صورت Offline در اختیار دارید و نمیخواهید از لینک اینترنتی استفاده نمایید، کافیست پروندهی nginx.tar.7z را به ماشین سامانهی Rocket.Chat انتقال دهید سپس به صورت زیر اقدام به بارگزاری آن بر روی سیستمعامل کنید.
# apt-get update # apt-get install p7zip-full docker-compose -y # 7z x nginx.tar.7z # docker load -i nginx.tar
- به منظور صحت فرآیند بارگزاری پروندهی Image مربوط به سرویس Rocket.Chat به صورت زیر عمل نمایید.
# docker images
- انتظار میرود با تصویری مشابه زیر روبهرو بشوید.
پیکربندی و امادهسازی سرویس Nginx
- به منظور پیکربندی سرویس Nginx ابتدا وارد مسیر زیر شوید.
# cd /opt/desertco-nginx/nginx/
- تمام پروندههای پیکربندی و راهانداز سرویس Nginx در مسیر بالا قرار دارد.
- به منظور پیکربندی سرویس Nginx پروندهی conf.d/nginx.conf را با یک ویرایشگر باز نمایید.
# vim conf.d/nginx.conf
- در خط سوم و نهم به آدرس دامنهای که جهت دسترسی به سرویس Rocket.Chat مد نظر دارید، اشاره شده است.
- این آدرسها را متناسب با نام انتخاب شده در شبکه انتخاب نمایید.
- با توجه به مفروضات این مستند، دامنهی chat.homayouni.info برای خطوط ذکر شده انتخاب شده است.
- در خط بیستم آدرس IP مربوط به Container سرویس Rocket.Chat را وارد نمایید. (پورت را نیز 3000 وارد نمایید.)
- نکته : معمولا Container مربوط به سرویس Rocket.Chat یک آدرس IP در شبکهی 10 خواهد گرفت. به منظور مشاهدهی IP مربوط به این Container به صورت زیر عمل نمایید.
# lxc list
راهاندازی سرویس Nginx تحت بستر Docker
- پس از پیکربندی سرویس Nginx ، به منظور راهاندازی سرویس مذکور ابتدا وارد مسیر زیر شوید.
# cd /opt/desertco-nginx/nginx
- در ادامه اسکریپت setup.sh را به منظور راهاندازی سرویس Nginx تحت بستر Docker به صورت زیر اجرا نمایید.
# bash setup.sh up
- در صورتی که اجرای اسکریپت بالا موفقیت آمیز باشد، با تصویری مشابه زیر روبهرو خواهید شد.
- در نهایت به منظور بررسی صحت سرویسها به صورت زیر عمل نمایید.
# docker ps -a
- انتظار میرود وضعیت تمام سرویسهای مذکور Up باشد.
- همان طور که در تصویر بالا مشخص است، وضعیت سرویس Nginx باید Up باشد.
پیکربندی اولیه سامانهی Rocket.Chat
- به منظور پیکربندی اولیه سامانهی Rocket.Chat از طریق یک مرورگر وارد دامنهی مربوط به سامانهی Rocket.Chat شوید.
- انتظار میرود به صورت مستقیم وارد مرحلهی Setup Wizard شوید. در صورتی که به این صفحه هدایت نشدید وارد URL زیر شوید. (توجه فرمایید که دامنه مثال میباشد.)
https://chat.homayouni.info/setup-wizard/1
- نکته : همان طور که در بخشهای قبلی اشاره شد، حتما دسترسی اینترنت Container مربوط به سرویس Rocket.Chat را قطع نمایید.
- در ادامه اطلاعات خواسته شده را به درستی وارد نمایید.
- در ادامه بر روی گزینهی Next کلیک نمایید.
- در مرحلهی بعد وارد صفحهی Organization Info خواهید شد. مطابق با تصویر زیر اطلاعات خواسته شده را تکمیل نمایید.
- در مرحلهی بعد وارد صفحهی Register Your Server خواهید شد.
- با توجه به قطع دسترسی اینترنت ، دکمهی Register Later ظاهر خواهد شد. بر روی آن کلیک نمایید.
- در صفحهی Standalone Server Confirmation بر روی گزینهی Confirm کلیک نمایید.
- در نهایت انتظار میرود وارد محیط Chat شوید.
- مطابق با تصویر بالا یک Warning مشاهده خواهید نمود. بر روی Yes کلیک نمایید.
- نمایی دیگر از محیط Chat به شرح زیر است.
اتصال سامانهی Rocket.Chat به سرویس Active Directory جهت احراز هویت کاربران
- این امکان وجود دارد تا کاربران تعریف شده درون سرویس Active Directory بتوانند درون سامانهی Rocket.Chat وارد شوند.
- برای این منظور ابتدا از طریق کاربر admin وارد سامانهی Rocket.Chat شوید.
- سپس مطابق با تصویر زیر بر روی گزینهی Workspace کلیک نمایید.
- در صفحهی باز شده از ستون سمت چپ بر روی گزینهی Settings کلیک نمایید.
- در نهایت در پنجرهی Settings گزینهی LDAP را انتخاب نمایید.
- در صفحهی LDAP اطلاعات خواسته شده را مطابق با تصویر زیر وارد نمایید.
- بخش Authentication را نیز همانند تصویر زیر تکمیل نمایید.
- در نهایت بر روی گزینهی Save Changes کلیک نمایید.
- در ادامه بر روی گزینهی Test Connection کلیک نمایید تا از صحت اتصال اطمینان حاصل کنید.
- در صورتی که اتصال موفقیت آمیز باشد با تصویری مشابه زیر روبهرو خواهید شد.
- در ادامه وارد بخش User Search شوید.
- سپس بخش Base DN را مطابق با تصویر زیر تکمیل نمایید.
- نکته : فرض این مستند بر آن است که تمام حسابهای کاربری افراد درون یک OU با نام Company-name قرار گرفته است.
- در نهایت بر روی Save changes کلیک نمایید.
- در ادامه بر روی گزینهی Test LDAP Search کلیک نمایید.
- در پنجرهی باز شده یکی از حسابهای کاربری تعریف شده در سرویس Active Directory را وارد و بر روی گزینهی Search کلیک نمایید.
- در صورتی که اتصال با سرویس Active Directory موفقیت آمیز باشد و حسابکاربری وارد شده پیدا شود، با تصویری مشابه زیر روبهرو خواهید شد.
- در ادامه یک مرتبه بر روی گزینهی Sync Now کلیک نمایید.
- در پنجرهی باز شده در بر روی گزینهی Sync کلیک نمایید.
- احتمالا با کلیک بر روی گزینهی Sync اقدام به پرسش در خصوص کلمهی عبور کاربر admin سامانهی Rocket.Chat شود. آن را وارد نمایید.
- در نهایت انتظار میرود با پیغام Synchronization in progress روبهرو شوید.
- حال انتظار میرود هر یک از کاربران تعریف شده در سرویس Active Directory امکان ورود به سامانهی Rocket.Chat را داشته باشند.
غیر فعالسازی احراز هویت ۲ مرحلهای
- در صورتی که احراز هویت ۲ مرحلهای غیر فعال نباشد، در هنگام ورود کاربران به سامانه Rocket.Chat با تصویری مشابه زیر روبهرو خواهید شد.
- برای حل این مشکل با حسابکاربری admin وارد سامانه شوید.
- سپس به بخش تنظیمات بروید.
- از بخش تنظیمات از ستون کناری گزینهی Settings را انتخاب نمایید.
- در صفحهی باز شده بر روی گزینهی Accounts کلیک نمایید.
- سپس بخش Two Factor Authentication را به طور کامل غیر فعال کنید.
- در نهایت بر روی گزینهی Save changes کلیک نمایید.
- حال انتظار میرود کاربران معمولی نیز بتوانند به راحتی وارد سامانه شوند.
- نمایی از سامانهی Rocket.Chat پس از ورود کاربر به شرح زیر است.
- تست شده بر روی Linux Ubuntu 20.04
- تست شده بر روی LXD نسخهی 4.0.9
- تست شده با Active Directory نصب شده بر روی Windows Server 2022