فهرست عنوانها
برای راه اندازی یک خانه هوشمند نیازی نیست که حتماً گوشه گوشه منزلتان را در اختیار الکسا (یا آمازون اکو) قرار دهید تا تک تک صحبتهای شما را گوش کنند و یا اینکه نیاز به کار با دستیار گوگل داشته باشید. برای انجام این کار میتوانید از سیستم عامل لینوکس استفاده کنید و دستیار صوتی Mycroft هم میتواند همه این کارها را برای شما انجام دهد بدون اینکه انبوهی اطلاعات درباره شما جمع آوری کند. بهتر از همه اینکه میتوانید Mycroft را روی یک رزبری پای نصب و اجرا کنید.
اما ساختن یک خانه هوشمند فراتر از نصب رباتهای کوچک در اطراف آن و فراخوانی آنهاست. با نزدیک شدن فصل سرما، شهروندان به دنبال تعمیر آبگرمن، شوفاژ و سیستمهای گرمایشی هستند. خیلی از آنها مجبور به پرداخت هزینه برای خرید آبگرمن جدید میشوند و بعضی دیگر سعی میکنند ابزارهای موجود را تغییر داده و دستکاری کنند تا زمستانی اقتصادی تر داشته باشند.
شیوع ویروس کرونا هم باعث شد بیشتر کارمندان کارشان را از منزل انجام دهند و برای بعضی از مشاغل این شرایط تا ماهها ادامه خواهد داشت.
در نتیجه برای هوشمند کردن ادارههای خانگی هم پروژههای مخصوصی داریم. با استفاده از این پروژهها میتوانید از کنفرانسهای زوم و مجموعه ابزارهای اداری گوگل با سیستمهای اپن سورسی مثل Jitsi Meet و Collabora Online استفاده کنید.
همچنین از آنجایی که داکر در حال حاضر محبوبیت و کاربرد زیادی پیدا کرده، سعی میکنیم با استفاده از موتور مدیریت Portainer از قدرت آن استفاده کنیم. به این ترتیب کار اضافه کردن سرویسها به دفتر خانگی هوشمند شما آسان تر انجام میشود.
یک دفتر خانگی هوشمند
از دید عامه مردم، هوشمندسازی ابزارهای روزمره یعنی متصل کردن کامپیوترهای شبکه شده به هم و قراردادن آنها جایی که نیازی به آنها نداریم و نصب اپلیکیشنهای مختلف روی دستگاههای همراه برای قرار گرفتن در جریان عملکرد همه این تجهیزات.
این کار میتواند باعث قرار گرفتن همه این دستگاهها (و حتی گوشی شما) در معرض حمله شود.
بعضی از شرکتها توانایی بیشتری برای حفظ امنیت تجهیزات اینترنت اشیاء دارند و کاربران میتوانند با تغییر دادن نام کاربری و رمزعبور پیش فرض از وقوع خیلی از حملهها پیشگیری کنند.
رزبری پای از سال 2016 به بعد با سرویس SSH عرضه نمیشود چون شناسایی چنین دستگاههایی در صورت اتصال به اینترنت به راحتی انجام میشود. اما پروژههای زیادی برای تشکیل خانه هوشمند وجود دارند که جذاب و ایمن هستند و استفاده از آنها لذت بخش است.
خیلی از این پروژهها انواع پروژههای پای هستند مثل پروژه Elio Struyf که از یکسری الای دی برای نمایش وضعیت خارج از دفتر خانگی استفاده میکند.
مراقب باشید!
شیوع ویروس کرونا خیلی از ما را ملزم به استفاده از سرویسهای ویدیو کنفرانس کرد و در چنین شرایطی موضوعاتی مثل ترس از خرابکاری بچهها و ایجاد اختلال در ویدیو کنفرانس توسط دیگران طبیعی است.
برای پیشگیری از بروز چنین مشکلی میتوان یک چراغ هشدار رنگی نزدیک در نصب کرد تا وقتی مشغول کار هستید دیگران متوجه باشند که نباید وارد اتاق شوند.
سیستمهای امنیت خانگی هم کاربرد و محبوبیت زیادی پیدا کرده اند. باز هم رزبری پای در این زمینه برتری دارد، میتوانید برای تنظیم این سیستم از راهنمای ما استفاده کنید تا نیازی به استفاده از محصولات آماده نداشته باشید چون به غیر از مسائل امنیتی، هر لحظه امکان توقف پشتیبانی از چنین محصولاتی توسط شرکت سازنده وجود دارد و در این صورت محصول خریداری شده کاملاً بی استفاده خواهد شد.
مثلاً در سال 2014 زمانی که گوگل سرویس Nest را خرید، این اتفاق رخ داد. سال پیش این شرکت اعلام کرد که طرح Works With Nest را متوقف میکند در نتیجه همه سختافزارهای قدیمی تر Nest که توسط گوگل تولید نشده اند دچار اختلال میشوند.
از نظر تئوری امکان رخ دادن این اتفاق برای پروژههای اپن سورس هم وجود دارد اما در صورت رخ دادن چنین اتفاقی کد پروژه در دسترس است و دیگران میتوانند آن را تغییر داده و اصلاح کنند.
تجهیزات هوشمند پرطرفدار
امروزه شرکتهای آب، برق و گاز به دنبال نصب و استفاده از کنتورهای هوشمند هستند و البته به این ابزارها باید آبگرمن هوشمند، ترموستات هوشمند و فریزر هوشمند را هم اضافه کرد. میتوان از چنین ابزارهایی برای صرفه جویی در هزینهها استفاده کرد و قطعاً داشتن تواناییهایی مثل امکان گرم کردن خانه قبل از رسیدن به خانه میتواند بسیار مفید باشد.
در این مطلب به شما خواهیم گفت که چطور میتوانید همه این ابزارها را با استفاده از نرمافزار اتوماسیون خانگی اپن سورس openHAB به هم متصل کنید. بدون وجود یک دستیار هوشمند هیچ خانه هوشمندی کامل نیست بنابراین از Mycroft هم برای راه اندازی این خانه هوشمند استفاده میکنیم.
همچنین قرار است از داکر هم استفاده کنیم تا خانه هوشمندمان هوشمندتر شود و برای انجام این کار از پکیج کلود Nextcloud استفاده میکنیم.
سپس یکسری نکته درباره استفاده از این کانتینر با Portainer مطرح میکنیم. Portainer یک موتور مدیریت است که میتوانید از آن برای محدود کردن سربار کانتینر استفاده کنید. همچنین به شما خواهیم گفت که چطور میتوانید با استفاده از Jitsi Meet سرویس ویدیو کنفرانس خودتان را تنظیم کنید.
openHAB و Mycroft
میتوانید از قدرت اپلاینس (یا لوازم) openHAB اوبونتو و دستیار هوشمند Mycroft برای فعال کردن فرمانهای صوتی استفاده کنید.
سیستم اتوماسیون خانگی openHAB قابلیت اتصال با انواع تجهیزات اینترنت اشیاء را که ممکن است همین حالا هم در منزل شما نصب شده باشند را دارد.
معمولاً چنین دستگاههایی اپلیکیشنهای مخصوص و اختصاصی خودشان را دارند اما همگی از یکسری پروتکل اپن سورس استفاده میکنند – اگر هم اینطور نباشد، کاربران نحوه اتصال آنها به openHAB را تشخیص داده اند.
قبلاً نحوه نصب این ابزار را توضیح دادیم ولی این بار این کار را به روشی متفاوت انجام میدهیم چون اخیراً Canonical سیستم openHAB Ubuntu Appliance را برای رزبری پای منتشر کرد.
این یعنی میتوانیم از ایمیج کارت SD استفاده کرده، سیستم را بوت کرده و یک سرور اتوماسیون خانگی تحت وب کاملاً کاربردی بسازیم.
برای استفاده از این اپلاینسهای اوبونتو باید یک حساب Ubuntu SSO داشته باشید که ساختن آن رایگان است و میتوانید در کل اکوسیستم تحت وب اوبونتو از آن استفاده کنید.
پس از انجام این کار نیاز به یک جفت کلید SSH دارید و بعد باید کلید عمومی خودتان را آپلود کنید تا از سیستم SSO (احرازهویت یکپارچه) برای لاگین کردن به اپلاینسهای مختلف استفاده کنید.
شاید از قبل کلید SSH را ساخته باشید که در این حالت نباید آن را بازنویسی کنید. برای بررسی این موضوع کد زیر را اجرا کنید:
اگر چنین فایلی وجود نداشت، آن را با استفاده از کد زیر ایجاد کنید:
و بعد اینتر بزنید تا مسیر پیش فرض را قبول کنید. پس از تولید کلید، کد زیر را اجرا کنید:
و بعد محتوای آن را در کلیپ بورد کپی کنید.
به سیستم Ubuntu SSO لاگین کرده و به بخش کلیدهای SSH بروید. محتوای کپی شده را در باکس Public SSH Key وارد کرده و روی دکمه import کلیک کنید.
حالا میتوانید با همین کلید وارد سرویسها و اپلاینسهای اوبونتو شوید (فقط با همین سیستم) اما باز هم باید اپلاینسها را به سیستم کلود اوبونتو وارد کنیم تا اطلاعات آنها را استخراج کنیم، پس مراحل زیر را طی کنید:
نصبopenHAB
گام اول: دانلود
را دانلود کنید. حجم این ایمیج 500 مگابایت است اما فشرده است. اگر قصد دارید مرحله بعد را به صورت دستی انجام دهید، باید این فایل را با استفاده از فرمان xz -d openhab-core18-pi.img.xz از حالت فشرده خارج کنید اما نرم افزار Raspberry Pi Imager هم میتواند این کار را برای شما انجام دهد.
گام دوم: نوشتن ایمیج روی کارت SD
برای انجام این کار حداقل به کارتی با ظرفیت 4 گیگابایت نیاز دارید. در توزیعهای مبتنی بر Debian (از جمله اوبونتو) میتوانید Pi Imager را دانلود کرده و با dpkg –i یا به صورت گرافیکی با Gdebi نصب کنید. از این روش برای رایت کردن فایل ایمیج استفاده کنید.
گام سوم: بوت کردن پای
یک مانیتور، صفحه کلید و کابل شبکه (اختیاری) به پای وصل کرده، یک کارت تمیز در پای نصب کرده و آن را روشن کنید. با انجام این کار یکسری گزینه برای پیکربندی مشاهده میکنید و بعد از شما درخواست میشود که ایمیل آدرس سرویس کلود اوبونتوی خودتان را درج کنید تا بتوانید احرازهویت SSH را برای اپلاینس مورد نظر انجام دهید.
پس از انجام این کار، آدرس آیپی پای را نوشته و از طریق یک مرورگر به آن متصل شوید، مثلاً با استفاده از این فرمان
http://192.168.0.2:8080
شاید کار کردن با رابط کاربری openHAB در ابتدا کمی گیج کننده به نظر برسد به خصوص با توجه به اینکه اولین گام آن انتخاب یک رابط کاربری است. بعداً هم میتوانید به این صفحه برگردید تا سایر گزینهها را بررسی کنید. گزینه PaperUI را انتخاب کرده و Bindingهای در دسترس را مشخص کنید (در بخش Add-ons) و اینکه آیا یکی از آنها با سختافزار شما همخوانی دارد یا خیر.
از این قسمت به بعد مستندات openHAB میتوانند کمک زیادی به شما کنند.
میتوانید اپلاینسها را هر طور که خواستید تنظیم کنید. اگر از Ubuntu Core استفاده میکنید میتوانید از مخازن لینوکس Snap اضافه کنید.
میتوانید به جای انجام گام بعدی در Nextcloud با لاگین SSH به اپلاینس مورد نظر و اجرای کد زیر، نصب را انجام دهید (نام کاربری، قسمت اول ایمیل Ubuntu SSO شماست):
به Snapcraft لاگین کرده و اپلاینس (appliance) مورد نظرتان را اضافه کنید و البته میتوانید اپلاینسهای اضافه شده در حال حاضر مثل Plex، Nextcloud، Mosquitto و AdGuard را مشاهده کنید که قطعاً به زودی گزینههای بیشتری هم اضافه میشوند.
فعال سازی دستیار هوشمند
احتمالاً در جریان هستید که شرلوک هلمز برادر بزرگتری به اسم مای کرافت داشت و نام دستیار خانگی Mycroft هم بر اساس همین نام انتخاب شده است.
دستگاه Mark I یک دستیار صوتی جذاب و کاربرپسند بود که با رزبری پای 3 کار میکرد. این دستگاه طرفداران زیادی داشت؛ متأسفانه در حال حاضر امکان استفاده از آن وجود ندارد و هنوز نسخه جایگزینی برای آن منتشر نشده اما خوشبختانه نسخههای مختلف Mycroft اپن سورس هستند و میتوانید آنها را با پای 3 یا 4 هم استفاده کنید.
این ابزار بر اساس ایمیج Linux Buster رزبری پای طراحی شده که میتوانید آن را از طریق این لینک دانلود کنید.
باز هم میتوانید از Raspberry Pi Imager (یا ابزار دلخواه خودتان) برای نوشتن ایمیج روی یک کارت SD استفاده کنید. این بار به کارتی با گنجایش حداقل 8 گیگابایت نیاز دارید. پس از انجام این کار کارت را در پای درج کرده و روشن کنید.
مثل اپلاینس openHAB این بار هم برای تنظیمات اولیه نیاز به صفحه نمایش و کیبورد دارید که به پای متصل شده باشد اما این ابزارها مورد نیاز نیستند مگر اینکه مشکلی ایجاد شود.
مهارت کار با openHAB برای Mycroft قابل استفاده است و با استفاده از این مهارت میتوانید Mycroft را طوری تنظیم کنید که در سطح منزل به فرمانهای صوتی شما پاسخ دهد.
Picroft پس از اولین بوت پارتیشن خودش را تغییر اندازه میدهد تا از کل فضای روی کارت SD استفاده کند. وقتی بوت شدن Picroft برای بار دوم انجام شد، از شما سوال میکند که برای تنظیم سیستم به کمک نیاز دارید یا خیر که میتوانید انجام این کار را تأیید کنید.
برای کار با این سیستم به میکروفون و اسپیکر نیاز دارید و در هم فهرست همه سختافزارهای پشتیبانی شده ثبت شده است. بعضی از دستگاهها از همان شروع با این سیستم کار میکنند و بعضی دیگر به مداخله دستی نیاز دارند.
ما برای تنظیم این سیستم از HAT 4 میکروفونی Seeed Respeaker استفاده کردیم که نصب و تنظیم آن راحت است. سایر دستگاهها هم الگوی مشابهی دارند. کافیست این فرمان را اجرا کنید.
اگر شبکه شما درست کار میکند (اگر این طور نیست میتوانید شبکه را ریبوت کنید) میتوانید برای انجام این کار به پای لاگین SSH کنید (نام کاربری پیش فرض mycroft و رمزعبور pi است که باید در اسرع وقت آن را تغییر دهید).
حالا اگر برای صدا از فیش 3 و نیم میلی متری استفاده میکنید باید sudo raspi-config را اجرا کرده گزینه 7 Advanced Options، A4 Audio و در نهایت 1. Force 3.5mm jack را انتخاب کنید.
حالا سیستم را ریبوت کنید تا تغییرات اعمال شوند. اگر برای کار با Respeaker به مشکل برخوردید، میتوانید به این مستندات رجوع کنید.
دستگاه را ریبوت کنید تا آن را با سرویس Mycroft Home جفت کنید. برای استفاده از این نرم افزار باید یک اکانت بسازید که کار چندان سختی نیست.
پس از ساختن چنین اکانتی تنها اطلاعاتی که از شما جمع آوری میشود، کوئریهای شماست که از آنها برای آموزش هر چه بهتر سیستم تشخیص گفتار استفاده میشود.
پس از آن کافیست با یک دستگاه دیگر این سیستم را از طریق https://home.mycroft.ai تنظیم کنید. اگر مشکلی برای صدا وجود نداشته باشد، در این لحظه یک صدای لرزش میشنوید. در غیر این صورت هر زمان که لازم بود میتوانید به ویزارد mycroft-setup-wizard برگردید.
وقتی همه چیز درست شد و مشکلی نبود، کلاینت Mycroft CLI فعال میشود و میتوانید فرمانهای دلخواهتان را اعلام کنید.
با بیان عبارت Hey Mycroft، این دستیار هوشمند فعال میشود. میتوانید از فرمانهای زیر استفاده کنید:
Tell me a joke (یک جک بگو)
What is my IP address? (آدرس آیپی من چیست؟)
و غیره.
این دستیار هوشمند شنیدن کلمه Thank you را هم دوست دارد. واکنشهای این سیستم هوشمند هم به روی ترمینال و هم روی صفحه قابل نمایش هستند.
هر زمان که خواستید با استفاده از فرمان :quit میتوانید از CLI خارج شوید و بعد هر فرمانی که روی نسخه لینوکس معمولی در رزبری پای اجرا میکنید را اجرا کنید.
برای برگشتن به CLI این دستور را اجرا کنید:
یک اسکریپت تنظیم صدا به روش دلخواه به نام audio_setup.sh هم وجود دارد و البته فراموش نکنید که مستندات مفید Mycroft را هم بررسی کنید.
امکان نصب Mycroft روی یک کامپیوتر لینوکسی معمولی به صورت Snap Package از طریق داکر یا مستقیماً از طریق صفحه گیتهاب وجود دارد.
موتور فعال سازی دستیار هوشمند که به آن Precise هم گفته میشود برای دستیابی به دقت سطح بالا از TensorFlow استفاده میکند که برای استفاده از آن، میزبان (هاست) باید افزونههای AVX را داشته باشد و البته اکثر سیستمهایی که در یک دهه پیش ساخته شده اند از آن پشتیبانی میکنند.
Jitsi Meet
Jitsi Meet یک نرم افزار ویدیو کنفرانس است که میتوانید از طریق اپلیکیشن موبایل یا مرورگر به آن متصل شوید.
میتوانید با مراجعه به سایت https://meet.jit.si و انتخاب یک نام برای جلسه مجازی خودتان از سیستم استفاده کنید (یا یکی از جلساتی که سیستم به صورت تصادفی ایجاد میکند را انتخاب کنید).
برای کلاینتها نیازی به دانلود یا پیکربندی وجود ندارد و فقط باید روی یک لینک کلیک کنند که میتوانید آن را از داخل اتاق چت، از طریق ایمیل در اختیار دیگران قرار دهید. یا میتوانید با استفاده از پین کد ارتباط برقرار کنید که کاملاً راحت و ساده است.
Jitsi رایگان و استفاده از آن راحت است و الگوریتم مولد نام تصادفی آن ابزاری جالب برای سرگرمی در این دوره محسوب میشود.
سرویس رایگان Jitsi محدودیتهایی دارد اما وقتی میزبانی نصب Jitsi را خودمان انجام دادیم، مشکلات رفع شدند.
برای انجام این کار نیاز به هیچ سختافزار تخصصی ندارید و به دلیل وجود پکیج دبیان و اوبونتو نیازی به انجام کار سنگین برای پیکربندی ندارید. اما به یک دامنه نیاز دارید. میتوانید یک دامنه رایگان از یک سرویس DNS پویا مثل DuckDNS یا Dyndns هم انتخاب کنید. همانطور که احتمالاً تصور میکنید انجام این کارها با Jitsi کمی سخت و پیچیده است.
علاوه بر اینکه باید با یکسری از ابهامات درگاههای NAT (مثل مودمهای خانگی) کار کنید، باید همه این ارتباطات را با SSL ایمن سازی کنید و اگر تقلب کرده یا از گواهینامههای غیرمعتبر استفاده کنید، کاربرانتان پیام هشدار میبینند.
اگر مشکلی با مشاهده این هشدارها توسط خودتان یا کاربرانتان ندارید و کاربران شما همگی محلی هستند، میتوانید با استفاده از یک نام دامنه ساختگی و انتقال درخواستهای فایلهای /etc/hosts کاربران به سیستم خودتان این مشکل را حل کنید.
یا میتوانید مستقیماً از آدرس آیپی استفاده کنید اما احتمالاً در این صورت گفتگوی رودررو به جای استفاده از سیستمها راحت تر است!
اگر خودتان دامنه داشته باشید، در فرایند نصب به طور خودکار گواهینامههای Let’s Encrypt نصب میشود و کسی پیام هشدار مشاهده نمیکند.
Jitsi در اصل متشکل از اجزای مختلفی است که همگی با هم کار میکنند تا در دنیایی که روزبروز فاصلهها بیشتر میشوند، بتوانید با دیگران ارتباط برقرار کنید.
اول از همه برای انجام این کار و ایجاد سمت فرانت اند به یک وب سرور نیاز دارید. میتوانید برای انجام این کار از Nginx یا آپاچی استفاده کنید. بخش عمدهای از این نرم افزار به زبان جاوا نوشته شده است. همچنین کارهای لازم برای اتصال بیش از دو شرکت کننده (در تماس ویدیویی) توسط Jitsi VideoBridge (JVB) انجام میشود. برای انجام این کار از پروتکلهای XMPP (مثل Jabber) و WebRTC (مثل Google Meet) استفاده میشود تا ویدیوها به صورت روان و بدون مشکل به سمت همه شرکت کنندگان در تماس هدایت شوند.
تصمیم گیری درباره اینکه کدام شرکت کننده صحبت کننده است تا سایر کاربران عبارت ‘focussed’ را روی صفحه نمایش کنند توسط Jicofo (Jitsi Conference Focus) انجام میشود.
دقت داشته باشید که پردازش ویدیو در این روش در سطح Jitsi است و همه کارهای کدگذاری و کدگشایی در سمت کاربر انجام میشود.
در محوریت این اتصالات سرور Prosody XMPP قرار دارد که اتصال همه کاربران و اجزا را حفظ میکند. برای کسب اطلاعات بیشتر درباره این موضوع و سایر اطلاعات مربوط به Jitsi میتوانید به این منبع مراجعه کنید.
رفع مشکلات احتمالی
اگر امکان پیوستن به یک کنفرانس از مکانهای مختلف وجود دارد اما سایر شرکت کنندهها را مشاهده نمیکنید و فقط یک پیام مشاهده میکنید که به شما میگوید تنها خود شما در جلسه حضور دارید، به احتمال زیاد مشکل از port forwarding است. در بعضی از پیکربندیها وجود پورت اضافه 4443 لازم است.
مرحله بعدی بررسی فایلهای لاگ است. فایلهای Jicofo و JVB در مسیر /var/log/jitsi و Prosody در مسیر /var/log/prosody قرار دارند.
بهتر است این فایلها را پس از تغییر پیکربندی حذف کنید تا با فایلهای لاگ قبلی اشتباه نگیرید.
یا میتوانید آخرین رکوردها را مشاهده کنید. پس از هرگونه تغییر پیکربندی، باید مطمئن شوید که همه سرویسها ریاستارت میشوند و برای انجام این کار از این کد استفاده کنید:
بهتر است nginx را هم به این فهرست اضافه کنید به خصوص اگر آیتمهایی را تغییر داده اید که بر فرانت اند تأثیرگذار هستند مثل احرازهویتی که قبلاً اضافه کردیم.
و اگر مشکلی پیش آمد میتوانید با استفاده از کد زیر همه دادههای Jitsi و پیکربندیها را بررسی کنید:
کار با Jitsi
برای اینکه Jitsi برای کاربرانی که با موانعی مثل فایروال، NAT و موانع مختلف دیگر روبرو شده اند، درست کار کند، باید ترافیک وب و پیامهای XMPP به خوبی به سمت سرور شما جریان پیدا کنند.
بنابراین باید پورت UDP شماره 10 هزار و پورتهای TCP شماره 80 و 443 را باز کنید. میتوان از پورت TCP شماره 4443 برای انتقال ارتباطات در مواقعی که کانکشنهای UDP یک کاربر مسدود شده اند استفاده کرد. اگر این کار را برای یک مودم خانگی انجام میدهید، باید port forward را برای این پورتها انجام دهید.
در حالت ایده آل تماسهای تک به تک باید JVB را دور بزنند و مستقیماً به یکدیگر متصل شوند (به همین دلیل به آن حالت نظیر به نظیر یا p2p گفته میشود) اما ممکن است انجام این کار سخت باشد – و قطعاً هر شخصی که تا به امروز سعی کرده باشد از طریق پیام رسان MSN فایل به اشتراک بگذارد از این موضوع باخبر است.
Prosody قابلیت کار کردن با یک سرور TURN (یا STUN) برای انجام این کار را دارد اما در این مطلب راجع به آن صحبت نمیکنیم.
در عوض کار را با تنظیماتی ساده شروع میکنیم اما باید به یک نکته توجه داشته باشید: پیکربندی پیش فرض Jitsi به گونهای است که همه میتوانند در سرور شما یک جلسه شروع کرده یا وارد جلسه شوند.
اگر سرور شما با این تنظیمات کار کند، دیر یا زود یک شخص یا ربات آن را شناسایی کرده و ممکن است دردسر ایجاد کند. در راهنمایی که پیش از این به آن اشاره کردیم، نحوه تنظیم احرازهویت برای رفع این مشکل توضیح داده شده است.
همچنین توصیه میشود که فلسلفه باز ماندن این پورت را هم بررسی کنید. استفاده از این راهنما برای تنظیم و راه اندازی سیستم کافیست؛ فقط فراموش نکنید که سرویسهای بی استفاده را حتماً متوقف کنید.
و حالا میتوانیم نصب را انجام دهیم. اول از همه مخزن Jitsi را با این دستور اضافه میکنیم:
و بعد این دستور را اجرا کنید:
حین پیکربندی پکیج، نام میزبان پای از شما پرسیده میشود و اینکه میخواهید یک مجوز جدید با امضای خودتان ایجاد کرده یا از یک مجوز موجود استفاده کنید.
اگر برای این دامنه از قبل مجوزی معتبر و مناسب نداشتید، گزینه اول را انتخاب کنید. بعداً این مجوز را با مجوز Let’s Encrypt جابجا میکنیم.
در این مرحله باید بتوانید با مرورگر به سرور لاگین کنید. کافیست به آدرس https://meet.yourdomain.com مراجعه کنید تا هشدار مجوزی که قبلاً درباره آن صحبت کردیم را ببینید.
میتوانید فعلاً این خطا را نادیده بگیرید (فقط همین بار) تا وارد صفحه خوشامدگویی Jitsi شوید که در آنجا میتوانید یک جلسه جدید شروع کنید. مرورگر مجوز دسترسی به میکروفون و دوربین را از شما میخواهد و باید پیامی ببینید که اعلام میکند شما مدیر این جلسه هستید.
حضور یک نفره در اتاق جلسه جذابیتی ندارد پس توصیه میشود که با یک دستگاه دیگر هم وارد جلسه شوید (یا از یکی از دوستتان بخواهید این کار را انجام دهد). برای انجام این کار به آدرس سرور یک اسلش و بعد نام جلسه را اضافه کنید.
حالا میتوانیم برای سرور خودمان گام احرازهویت را اضافه کنیم. پیکربندی prosody در آدرس /etc/prosody/conf.d/meet.yourdomain.com.cfg.lua را ویرایش کنید (نام دامنه را همانطور که لازم است ویرایش کنید).
در قسمتی که با VirtualHost “meet.yourdomain.com” شروع میشود، خط احرازهویت را که فعلاً روی حالت anonymous تنظیم شده تغییر به این صورت تغییر دهید:
سپس خط زیر را در انتهای فایل اضافه کنید تا یک دامنه مهمان ایجاد کنید (و دامنه را تنظیم کنید):
نگران زیردامنههای اضافه اینجا نباشید چون فقط به صورت داخلی مورد استفاده قرار میگیرند در نتیجه نیازی به رکورد DNS ندارند.
حالا از Lua به جاوااسکریپت حرکت کرده و نام دامنه مهمان را به فرانت اند اضافه میکنیم. /etc/jitsi/meet/meet.yourdomain.com-config.js را ویرایش کرده و خطهای زیر را به قسمت hosts اضافه کنید:
در نهایت، باید امکان ارسال درخواست را فقط برای کاربران ثبت نام شده فراهم کنیم که این کار با ویرایش /etc/jitsi/jicofo/sip-communicator.properties و اضافه کردن خط زیر انجام میشود:
حالا سرویسها را ری استارت کرده و با استفاده از فرمان prosodyctl register یک کاربر اضافه میکنیم. میتوانید با استفاده از خط زیر یک مجوز Let’s Encrypt اضافه کنید:
Nextcloud
اکثر کاربران با قابلیتها و امکانات Nextcloud آشنا هستند و این سرویس همواره در حال بهتر شدن است. آخرین نسخه از پلتفرم به اشتراک گذاری و میزبانی Nextcloud 19 به یک مرکز همکاری کامل و تمام عیار تبدیل شده است.
اگر شما هم در سرور خانگی خودتان پشته LAMP (یعنی پکیج لینوکس، آپاچی، MySQL، PHP) یا نظیر آن را دارید میتوانید یک نمونه Nextcloud به آن اضافه کنید که این کار از طریق استخراج یک آرشیو به دایرکتوری روت سرور وب یا با کپی کردن فایل Web Installer PHP در آنجا و اجرای مستقیم آن انجام میشود.
تنظیم پشته LAMP (یا پشته LEMP با Nginx و MariaDB) در اوبونتو یا دبین به راحتی انجام میشود (گرچه ساختن دیتابیسها به روش دستی کمی پیچیده است) – قبلاً این موضوع را پوشش دادیم و راهنماهای زیادی هستند که با جستجوی DuckDuckGo میتوانید آنها را پیدا کنید.
اگر از نسخه قدیمی تر Nextcloud استفاده میکنید میتوانید به راحتی با استفاده از رابط کاربری تحت وب ارتقاء را انجام دهید.
این بار نصب Nextcloud را به روشی متفاوت و از طریق داکر انجام میدهیم. این کار باید باعث شود که نمونه نصب شده ما قابل جابجایی باشد و بتوانیم به راحتی اجرا از طریق VPS را به اجرا روی سرور خانگی تغییر دهیم یا بالعکس.
اطلاعات پیکربندی و دادهها در volumeهایی خارج از کانتینر داکر ذخیره میشود (که باید آنها را موقت و نابودشدنی در نظر بگیرید) در نتیجه برای انتقال سرویس فقط کافیست این volumeها را کپی کرده و به یک نمونه جدید از مخزن متصل کنید.
اولین کار نصب موتور داکر است که نیاز به اضافه کردن کلید GPG به مجموعه کلیدهای apt دارد:
باید بررسی کنید که جزئیات کلید با کلیدی که با 9DC8 شروع میشود و در مستندات آنلاین وجود دارد (میتوانید این فرمانهای طولانی را از این مستندات کپی کنید) تطبیق داشته باشد.
سپس مخازن داکر را اضافه کنید (اگر از نسخه 18.04 استفاده میکنید، focal را به bionic تغییر دهید)، کشها را آپدیت کنید و داکر را با استفاده از این فرمان نصب کنید:
با اجرای ایمیج Hello World مطمئن شوید که تنظیمات درست اجرا شده و بعد ایمیج Nextcloud را اجرا کنید:
اولین سوئیچ به داکر اعلام میکند که کانتینر را به صورت مجزا (در پس زمینه) اجرا کند و دومی اعلام میکند که پورت 80 کانتینر (یعنی پورتی که وب سرور روی آن کار میکند) را برای پورت 8080 سرور ما باز کند.
حالا – وقتی چند صد مگ اطلاعات دانلود شد و کانتیر شما جان گرفت – اگر (با آدرس یا نام هاست خودتان) به مسیر http://yourserver:8080 بروید باید صفحه خوشامدگویی Nextcloud را ببینید.
حالا یک هشدار درباره استفاده از SQLite توسط کانتینر مشاهده میکنید، این دیتابیس سبک وزن برای کاربران کم مناسب است اما برای امکاناتی که قرار است عده زیادی از آنها استفاده کنند نیاز به یک نمونه MariaDB یا MySQL مناسب تر دارید.
به ترمینال برگردید، نام کانتینر خودتان را پیدا کنید (از آخرین ستون اولین فرمان) و با اجرای دستور زیر آن را متوقف کنید:
حالا میتوانیم Nextcloud را به یک کانتینر MariaDB متصل کنیم و هر دو را در volumeهای مربوط به خودشان ذخیره کنیم که به این ترتیب قابلیت جابجایی فراهم میشود.
Volumeهای ایجاد شده در مسیر /var/lib/docker/volumes/ خواهند بود. میتوانیم نامها را به کانتینرهای خودمان هم اضافه کنیم.
انجام کارهای لازم برای برقراری ارتباط بین این دو کانتینر کمی پیچیده است و میتوانید برای مشاهده دستورالعملهای لازم به بخش Docker Compose مستندات مراجعه کنید اما به زودی دوباره به این موضوع برمیگردیم.
کانتینرها پس از متوقف شدنشان باز هم وجود خواهند داشت. وجود چند نمونه از یک (کانتینر) مشکلی ایجاد نمیکند چون لایههای فایل سیستم پیازی بین آنها به اشتراک گذاشته میشود.
اما بهتر است پس از انجام کار، مرتب سازیهای لازم را انجام دهید و موارد ناخواسته مثل دیتابیس بالا را با فرمان زیر حذف کنید:
اگر میخواهید همه چیز را حذف کنید (که البته باید مراقب باشید) باید این کار را با فرمان زیر انجام دهید:
در این مرحله میتوانید دوباره به مرحله نصب برگشته و اطلاعات لاگین برای ادمین را وارد کرده، کار را با دیتابیس SQLite ادامه داده و باز هم از اولین volume استفاده کنید.
در ادامه ما از تنظیمات نمونه Docker Compose استفاده میکنیم و البته یکسری جزئیات را رد میکنیم که میتوانید از طریق مستندات این جزئیات را پیدا کنید.
برای اجرای داکر با این روش از چهار کانتینر استفاده میشود که یکی از آنها یک پروکسی معکوس است. این پروکسی Nginx را اجرا میکند که رمزنگاری SSL را فراهم میکند (اگر قرار است این نصب از طریق اینترنت در دسترس افراد زیادی قرار بگیرد، وجود این رمزنگاری ضروری است).
در این تنظیمات هاست Let’s Encrypt هم وجود دارد که اعتبارنامهها (نام کاربری و رمزعبور) را به صورت خودکار به روز رسانی میکند.
بنابراین اگر تنظیمات یک نام دامنه را داشته باشید، سایر مراحل کار به راحتی انجام میشود.
میتوانید دستورات لازم برای Compose را در فایل راهنما مشاهده کنید یا از مخزن nextcloud/docker در گیتهاب استخراج کنید.
فایل docker-compose را ویرایش کرده، پسورد MySQL، میزبان مجازی (نام دامنه خودتان) و متغیرهای Let’s Encrypt را تنظیم کنید.
سپس برای نصب Docker Compose از مستندات رسمی کمک بگیرید چون ممکن است روش طی کردن این فرایند متفاوت باشد.
اگر مشکلی ایجاد شد میتوانید فایلهای لاگ هر کانتینر را بررسی کنید، مثلاً:
به احتمال زیاد میتوانید راهی برای برگشتن به صفحه تنظیمات Nextcloud پیدا کنید و بقیه تنظیمات فقط شامل یکسری فرمان ترمینال هستند.
فقط باید یک پسورد ادمین انتخاب کنید، از db به عنوان نام دیتابیس استفاده کنید (که از اطلاعات داخلی داکر استفاده میکند تا نیازی به نام دامنه نداشته باشید) و چند لحظه صبر کنید تا همه چیز از سر گرفته شود.
اولین گام شما باید ساختن یک کاربر جدید باشد که میتوانید این کار را از بخش Users در منوی دراپ داون گوشه سمت راست بالا انجام دهید. بهتر است اکانت admin را برای مدیر حفظ کنید.
حالا که در این قسمت هستید میتوانید از دسترسیهای ادمین برای مشاهده اپلیکیشنهای اضافه شده به Nextcloud استفاده کنید. گزینه Apps را از منوی کاربر در گوشه سمت راست بالای صفحه انتخاب کنید تا فهرست کاربران را ببینید.
بهتر است با استفاده از فرمان زیر، مخزنها را به روز رسانی کنید:
… از دایرکتوی که فایل docker-compose.yml در آن قرار دارد.
Portainer و داکر
اگر یک سرور خانگی یا VPS دارید، داکر برای شما فوق العاده مفید است چون میتوانید بدون دستکاری پیکربندیهای سیستم، سرویسهای دلخواه را اضافه کنید.
آنطور که ما با Nextcloud مشاهده کردیم، حتی با استفاده از 4 مخزن داکر هم کارها پیچیده میشود. Portainer یک سیستم مدیریت داکر است که کار آن بازسازی ترتیب کانتینرها است.
علاوه بر اجرای محلی میتوان از Portainer برای مدیریت سیستمهای راه دوری که کارگزار آن را مدیریت میکنند هم استفاده کرد.
علاوه بر اجرای محلی میتوان از Portainer برای مدیریت سیستمهای راه دوری که کارگزار آن را مدیریت میکنند هم استفاده کرد.
این ابزار دو بخش سرور و کارگزار دارد که هر دو به صورت مخزن داکر ارائه میشوند. برای تنظیمات اولیه فقط به ایمیج سرور نیاز داریم.
از کارگزار برای سوارمهای داکر (Swarm) مارشال استفاده میشود که روشی دیگر برای اتصال کانتینرها به هم است. کار را با ایجاد یک volume برای دادهها و سپس فعال سازی ایمیج شروع میکنیم:
دقت داشته باشید که میتوان این ایمیجها را بر اساس فهرستشان در هاب داکر اضافه کرد و اطلاعات بیشتر درباره ایمیج Portainer در این لینک قابل دسترس است.
حالا باید پنل ادمین Portainer را مشاهده کنید که روی پورت 9000 منتظر شما است پس مرورگر را به سمت همین آدرس هدایت کرده، یک پسورد انتخاب کرده، سپس گزینه Manage the local Docker environment را انتخاب کرده و از اینترفیس جذاب و کاربرپسند آن لذت ببرید.
اگر قبلاً Nextcloud را از طریق داکر نصب کرده باشید، باید فهرست همه این کانتینرها را در Local Endpoint از صفحه Home مشاهده کنید.
اگر روی Containers در منوی سمت چپ کلیک کنید، این اطلاعات (و آخرین کانتینر Portainer ما) را با جزئیات بیشتر مشاهده خواهید کرد. ستون اقدامات فوری (quick action) به شما امکان میدهد که فایلهای لاگ، اطلاعات، آمار و لاگ هر دایرکتوری را از طریق مرورگر مشاهده کنید.
این روش برای عیب یابی مفید است اما دقت داشته باشید که به طور کلی کانتینرها طراحی مینیمالی دارند در نتیجه ابزارهای کاربردی چندانی برای آنها مشاهده نمیکنید. اضافه کردن کانتینر جدید آسان است. مثلاً اگر بخواهید کد Collabora اضافه کنید و آن را به Nextcloud متصل کنید، کافیست Add Container را انتخاب کرده و یک نام معنادار وارد کنید.
در فیلد ایمیج کد collabora/code را وارد کرده و در قسمت Manual network port publishing آدرس 127.0.0.1:9980 را در فیلد host و 9980 را در فیلد container وارد کنید.
در تنظیمات Advanced container زیر، به بخش Env بروید و متغیرهای محیطی زیر را تنظیم کنید:
در نهایت در ستون Restart policy، گزینه Always را انتخاب کنید تا کانتینر شما پس از تغییر پیکربندی ریاستارت شود. حالا گزینه Deploy را انتخاب کنید.
برای کسب اطلاعات بیشتر درباره اتصال کانیتنر به نمونه Nextcloud به آدرس https://nextcloud.com/collaboraonline مراجعه کنید.
اگر همه چیز طبق انتظار پیش برود، باید بتوانید از طریق Nextcloud وضعیت را مشخص کنید به خصوص از بخش Collabora Online در قسمت تنظیمات. اگر از مثال Docker Compose صفحه قبل استفاده میکنید، ممکن است لازم باشد کانتینر پروکسی معکوس را تغییر دهید تا ترافیک به سمت کانتینر جدید هدایت شود.
در این صورت، این مثال را در بخش Stacks مشاهده میکنید به همراه یک هشدار درباره اینکه این نمونه خارج از Portainer ایجاد شده است.
در تعاریف Portainer به یک گروه کانتینر استک گفته میشود و با استکهایی که به صورت بیرونی (اکسترنال) ساخته شده باشند کارهای محدودی میتوان انجام داد. اما ساختن استک جدید راحت است و با پیست کردن، آپلود یا هدایت Portainer به سمت آدرس یک فایل docker-compose.yml قابل انجام است.
Mailcow:Dockerized
میتوان از ابزارهای Nextcloud، اپلیکیشنهای تقویم، Talk و ایمیل آن برای برقراری ارتباط بین کاربران استفاده کرد.
اپلیکیشن ایمیل صرفاً یک کلاینت است در نتیجه میتوانید آن را مثل یک کلاینت ایمیل کامپیوتری تنظیم کنید.
اغلب گفته میشود که تنظیم و راه اندازی سرور ایمیل کار سختی است.
این ادعا درست است اما به لطف وجود ایمیج Mailcow:Dockerized میتوانیم یک کانتینر آماده تنظیم کنیم که Postfix، Dovecot و Roundcube را اجرا میکند و بعد با فشردن چند کلید سرور ایمیل خودمان را راه اندازی کنیم.
انجام این تنظیمات نیاز به کار در حال روت دارد اما این ایمیج از خصوصیات توسعه یافته استفاده میکند و به همین دلیل به دسترسیهای روت نیاز دارد.
با استفاده از فرمان زیر بررسی میکنیم که umask ما درست تنظیم شده باشد (باید به 0022 اشاره کند):
حالا مخزن را در مسیر /opt کلون میکنیم:
در این مرحله نام دامنه از شما سوال میشود. این نام دامنه میزبانی است که اجرا را روی آن انجام میدهید نه آدرس ایمیلهایی که قرار است تنظیم کنید.
اگر سیستم شما محدودیت حافظه داشته باشد، این اسکریپت به شما توصیه میکند که Solr را غیرفعال کنید (پلتفرم جستجوی جاوا) که باید این کار را انجام دهید.
این اسکریپت فایل mailcow.conf را ایجاد میکند که در صورت نیاز میتوانید آن را تغییر دهید. در ادامه توضیحات بیشتر را ارائه میکنیم. اول اینکه بهتر است Nextcloud و سایر کانتینرها را متوقف کنید تا مزاحمتی ایجاد نکنند.
در Portainer میتوانید این کار را با انتخاب Containers از منوی سمت چپ، انتخاب همه گزینهها به غیر از Portainer و بعد کلیک روی دکمه توقف انجام دهید.
دکمه kill هم وجود دارد که میتوانید از آن برای توقف اجباری استفاده کنید و البته اگر نیازی به کانتینرها ندارید میتوانید همه آنها را حذف کنید. حالا به ترمینال برمیگردیم (باز هم با اکانت روت) و Mailcow را استخراج میکنیم:
در این مرحله شما اساساً یک سرور ایمیل فعال دارید. حالا باید بتوانید از طریق اینترفیس تحت وب و با استفاده از اطلاعات لاگین admin:moohoo به اینترفیس تحت وب لاگین کنید اما هنوز پیکربندیهای زیادی وجود دارد که باید انجام دهید از جمله تغییر دادن رمزعبور که میتوانید با کلیک کردن روی دکمه Edit کنار کاربر ادمین این کار را انجام دهید.
اگر میخواهید ایمیلها را درست دریافت کنید، باید رکوردهای MX دامنه خودتان را برای ارائه دهنده سرویس DNS به درستی تنظیم کنید در غیر این صورت مسیریابی ایمیلها درست انجام نمیشود.
پس از انجام این کار میتوانید پیکربندیها را از طریق بخش Domains از Mailcow انجام دهید. سپس میتوانید آدرسهای واقعی را در بخش Mailboxes تنظیم کنید.
در دنیایی که همه ما هر روز تعداد بی شماری ایمیل اسپم دریافت میکنیم، بهتر است که فابلیت DKIM (Domain Keys Identified Mail) را فعال کنید که پیامهای ارسال شده از سمت سرور شما را امضاء میکند. سرورهایی که DKIM برای آنها فعال باشد، هنگام دریافت ایمیل از دامنه شما این کلید را اعتبارسنجی میکنند تا از بروز رفتارهای نادرست پیشگیری کنند.