نحوه نصب Prosody روي اوبونتو 18.04
Prosody يك سرور چت XMPP است كه از چت روم هاي تكي و گروهي يك به يك رمزگذاري شده توسط TLS پشتيباني مي كند. XMPP (پروتكل حضور و پيام رساني گسترده) يك پروتكل پيام رساني باز است كه به طور رسمي با عنوان Jabber شناخته مي شود. اين بدان معني است كه هر كلاينت چت XMPP قادر خواهد بود به يك سرور Prosody وصل شود و چت را شروع كند.
XMPP يك استاندارد كامل و آزاد است كه توسط Internet Engineering Task Force (IETF) نگهداري مي شود. اين برنامه در بسياري از برنامه ها مانند Google Talk كه توسط ميليون ها كاربر استفاده مي شود ، بطور فعال نگهداري و به كار گرفته مي شود. سرورهاي XMPP ، مانند Prosody ، گزينه اي قابل انعطاف براي سرور چت هستند كه بيش از دو دهه است كه وجود دارند.
در اين آموزش ، يك سرور Prosody را نصب و پيكربندي ميكنيد كه از جلسات چت يك به يك و گروهي و امكان بارگذاري فايل ها در پنل چت براي اشتراك گذاري پشتيباني مي كند. تمام جلسات چت توسط گواهي رمزنگاري TLS محافظت مي شود تا اطلاعات شخصي شما خصوصي بماند.
پيش نيازها
قبل از شروع اين راهنما به موارد زير نياز خواهيد داشت:
يك سرور Ubuntu 18.04 با حداقل 512 مگابايت رم كه با دنبال كردن راهنماي ستاپ اوليه سرور براي اوبونتو 18.04 تنظيم شده باشد، شامل يك كاربر فعال با sudo ، غير ريشه و يك فايروال.
• يك كلاينت چت XMPP كه روي سيستم محلي شما نصب شده باشد. هر يك از برنامه هاي چت كه در صفحه كلاينت XMPP ذكر شده است با سرور Prosody شما سازگار خواهد بود.
• دو نام هاست كه به سرور شما اشاره كنند. شما به دو نام هاست نياز داريد زيرا Prosody از يك هاست براي چت مستقيم و از ديگري براي اتاق هاي گفتگوي گروهي استفاده مي كند. اين راهنما از دو نام هاست مثال زير استفاده خواهد كرد:
chat.your-domain : نام هاست چت يك به يك.
room.your-domain : نام هاست چت گروهي.
به عنوان كاربر فعال با sudo و غير ريشه براي شروع اين راهنما به سرور خود وارد شويد.
مرحله 1 – نصب Prosody
در اين مرحله مخزن Prosody APT سفارشي را به سرور خود اضافه مي كنيد و سپس Prosody را از آن نصب مي كنيد. براي اطمينان از نصب جديدترين بسته ها از مخزن Prosody استفاده مي كنيد.
ابتدا با ويرايشگر متن خود يك فايل مخزن جديد ايجاد و آن را باز كنيد. اين فايل اطلاعات مخزن Prosody را براي مدير بسته APT در اختيار دارد:
⦁ $ sudo nano /etc/apt/sources.list.d/prosody.list
⦁
خط زير را در فايل خود اضافه كنيد:
/etc/apt/sources.list.d/prosody.list
deb https://packages.prosody.im/debian bionic main
حال بايد كليد عمومي Prosody APT را دانلود و نصب كنيد. سرور شما از اين مسئله استفاده خواهد كرد تا تأييد كند بسته Prosody توسط تيم Prosody ساخته شده است و معتبر است.
دستور زير از ابزار wget براي دانلود كليد در ديركتوري فعلي شما استفاده مي كند:
⦁ $ wget https://prosody.im/files/prosody-debian-packages.key
براي افزودن كليد Prosody به حلقه كليد APT از دستور apt-key add استفاده كنيد:
⦁ $ sudo apt-key add prosody-debian-packages.key
⦁
اكنون مي توانيد كليد را حذف كنيد زيرا ديگر نيازي به آن نداريد:
⦁ $ rm prosody-debian-packages.key
⦁
بانك اطلاعات بسته سرور خود را به روز كنيد تا نسخه هاي جديدتر بسته از مخزن Prosody را شامل شود:
⦁ $ sudo apt update
⦁
اكنون آماده نصب بسته سرور Prosody و برخي بسته هاي اختياري ديگر هستيد:
⦁ $ sudo apt install prosody prosody-modules lua-dbi-sqlite3 lua-event
⦁
بسته هاي نصب شده به شرح زير است:
prosody: سرور prosody.
prosody-modules : ماژول هاي Prosody اضافي كه عملكرد سرور Prosody را گسترش مي دهد.
lua-dbi-sqlite3 : استفاده از يك پايگاه داده SQLite را براي Prosody ممكن ميسازد.
lua-event: Prosodyرا قادر مي سازد كلاينت هاي همزمان بيشتري را اداره كند.
اكنون نصب Prosody به پايان رسيده است. در مرحله بعد ، دو گواهينامه TLS دريافت خواهيد كرد كه Prosody براي رمزگذاري داده هاي خود از طريق اينترنت و از طريق سرور Prosody از آنها استفاده مي كند.
مرحله 2 – اخذ گواهينامه هاي TLS
Prosody از گواهينامه هاي TLS براي رمزگذاري اتصالات بين سرور و كلاينت استفاده مي كند. اين گواهينامه ها همان مواردي هستند كه هر زمان كه از وب سايت با آدرس HTTPS بازديد مي كنيد ، از آن استفاده مي نماييد. Let’s Encrypt يك سازمان بدون بهره وري است كه گواهينامه هاي TLS رايگان ارائه مي دهد. همچنين ابزار certbot را براي دريافت و مديريت گواهينامه هاي خود ارائه مي دهند. در اين مرحله شما مي توانيد ابزار certbot را نصب كرده و از آن براي گرفتن يك جفت گواهي براي دو نام هاست مورد نظر خود به سرور خود استفاده كنيد.
براي اطمينان از استفاده از جديدترين بسته ها ، certbot را از مخازن PPA اوبونتو Let’s Encrypt نصب خواهيد كرد.
ابتدا دستور زير را براي اضافه كردن مخزن سفارشي اجرا كنيد:
⦁ $ sudo add-apt-repository ppa:certbot/certbot
⦁
اكنون ، certbot را نصب كنيد:
⦁ $ sudo apt install certbot
⦁
در مرحله بعد ، اجازه ترافيك HTTP از طريق UFW را بدهيد تا certbot بتواند به كارگيري گواهي شما را تأييد كند:
⦁ $ sudo ufw allow http
⦁
دستور certbot زير را اجرا كنيد ، كه گواهي يكي از نام هاي هاست شما را دريافت مي كند:
⦁ $ sudo certbot certonly –standalone –agree-tos –email your_email -d chat.your-domain
⦁
اين گزينه ها عبارتند از:
– –certonly : گواهينامه را دريافت كنيد و هيچ تغيير ديگري در سرور ايجاد نكنيد.
–standalone : يك سرور وب موقت را براي تاييد اعتبار گواهي راه اندازي كنيد.
–agree-tos: بطور خودكار با شرايط سرويس Let’s Encrypt موافقت كنيد.
–email your_email : آدرس ايميلي كه شما براي Let’s Encrypt ارسال مي كنيد تا از آنها استفاده كنند و در مورد مسائل امنيتي ، اعلام انقضاي گواهي و ساير اطلاعات مهم به شما اطلاع دهند.
-d chat.your-domain: نام ميزباني كه قصد استفاده از آن را براي سرور Prosody خود داريد.
هنگامي كه اين دستور را اجرا مي كنيد از شما سؤال مي شود كه آيا مي خواهيد آدرس ايميل خود را با بنياد الكترونيكي Frontier به اشتراك بگذاريد ، كه اختياري است. سپس ثبت نام سرتيفيكيت با خروجي زير ادامه خواهد يافت:
Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/chat.your-domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/chat.your-domain/privkey.pem
Your cert will expire on 2020-07-26. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
“certbot renew”
– If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
دوباره همين دستور را اجرا كنيد تا يك گواهي براي نام هاست دوم خود دريافت كنيد.
اكنون دو دايركتوري داريد:
⦁ /etc/letsencrypt/live/room.your-domain
⦁ /etc/letsencrypt/live/chat.your-domain
اين دايركتوري ها حاوي گواهي و فايلهاي كليدي براي نامهاي هاست شما هستند.
از آنجا كه سرور Prosody به عنوان كاربر اصلي كار نمي كند ، مالكيت و مجوزهاي دايركتوري ها و فايل هاي كليدي نياز به تغيير دارد تا سرور Prosody بتواند آنها را بخواند و از آنها استفاده كند.
مجوز فايل ها و دايركتوري ها در لينوكس اين امكان را به شما مي دهد كه كاربران و پردازش ها بتوانند دايركتوري ها و پوشه ها را بخوانند ، بنويسند و اجرا كنند. اين كنترل از تغيير سيستم توسط يك كاربر غير مجاز محافظت مي كند و همچنين از خوانده شدن فايل هاي خصوصي مانند كليد خصوصي TLS توسط يك كاربر غير مجاز محافظت مي كند.
اگر با كاربران و مجوزهاي لينوكس آشنا نيستيد مقاله مقدمه اي بر مجوزهاي لينوكس مطالبي عالي را ارائه مي دهد.
اولين قدم براي تغيير گروه مالك كليدهاي خصوصي به گروه سرور Prosody با دستورات زير است:
⦁ $ sudo chgrp prosody /etc/letsencrypt/live/room.your-domain/privkey.pem
⦁
⦁ $ sudo chgrp prosody /etc/letsencrypt/live/chat.your-domain/privkey.pem
⦁
ابزار chgrp مالكيت گروهي فايل ها و ديركتوري ها را تغيير مي دهد. در اينجا ، شما گروه را از root پيش فرض به prosody تغيير داده ايد.
سپس ، مجوزهاي دايركتوري هايي كه حاوي فايل هاي گواهي TLS هستند را به 0755 تغيير دهيد. اين دايركتوري ها متعلق به كاربر root و گروه root هستند. دستور زير مجوزهاي موجود در اين ديركتوري ها را تغيير مي دهد:
⦁ $ sudo chmod 0755 /etc/letsencrypt/archive
⦁
⦁ $ sudo chmod 0755 /etc/letsencrypt/live
⦁
مجوزهاي جديد 0755 در اين ديركتوري ها بدان معني است كه كاربر اصلي ، مجوزهاي خواندن ، نوشتن و اجراي مجوزها را دارد. اعضاي گروه اصلي مجوزها را خوانده و اجرا مي كنند. ساير كاربران و گروه هاي موجود در سيستم مجوزهاي خواندن و اجراي آنها را دارند.
اكنون مجوزهاي كليدهاي خصوصي TLS را تغيير دهيد:
⦁ $ sudo chmod 0640 /etc/letsencrypt/live/room.your-domain/privkey.pem
⦁
⦁ $ sudo chmod 0640 /etc/letsencrypt/live/chat.your-domain/privkey.pem
⦁
مجوزهاي 0640 در اين فايل ها بدين معني است كه كاربر اصلي داراي مجوزهاي خواندن و نوشتن روي فايل است. اعضاي گروه Prosody مجوزهاي مربوط به خواندن فايل را دارند. گروه Prosody يك عضو دارد ، كاربر Prosody . كاربري است كه سرور Prosody با آن اجرا مي شود و كاربري كه با آن به فايل دسترسي خواهد داشت. همه كاربران ديگر در سيستم اجازه دسترسي به فايل را ندارند.
اين دو دستور از ابزار chmod استفاده مي كنند كه كاربران و گروه هايي را كه مجوزهاي خواندن ، نوشتن و اجرا در فايل ها و دايركتوري ها را دارند تعيين مي كنند.
شما مي توانيد آزمايش كنيد كه Prosody مي تواند كليدهاي خصوصي را با استفاده از sudo براي خواندن فايل هاي كليد خصوصي با cat به عنوان كاربر prosody بخواند:
⦁ $ sudo -u prosody cat /etc/letsencrypt/live/chat.your-domain/privkey.pem
⦁
اگر موفقيت آميز بود ، مي توانيد محتويات فايل كليدي نمايش داده شده روي صفحه خود را مشاهده كنيد.
Prosody براي رمزگذاري اتصالات آپلود و دانلود فايل ، از يك فايل واحد حاوي گواهي و كليد خصوصي استفاده مي كند. اين فايل توسط certbot بطور خودكار ايجاد نمي شود بنابراين بايد آن را بصورت دستي ايجاد كنيد.
ابتدا وارد پوشه اي خواهيد شد كه حاوي فايل هاي كليد و گواهينامه است ، سپس از cat استفاده كنيد تا محتواي آنها را در يك فايل جديد key-and-cert.pem تركيب كنيد:
⦁ $ cd /etc/letsencrypt/live/chat.your-domain/
⦁
⦁ $ sudo sh -c ‘cat privkey.pem fullchain.pem >key-and-cert.pem’
آغاز اين دستور ، sudo sh-c ، يك زير پوسته جديد را باز مي كند كه داراي مجوزهاي كاربر اصلي است و مي تواند فايل جديد را روي /etc/letsencrypt/live/chat.your-domain/ بنويسيد.
اكنون گروه و مجوزهاي اين فايل جديد را تغيير دهيد تا با گروه و مجوزهاي تنظيم شده براي ساير كليدهاي خصوصي با دستور زير مطابقت داشته باشد:
⦁ $ sudo chmod 0640 key-and-cert.pem
⦁
⦁ $ sudo chgrp prosody key-and-cert.pem
به ديركتوري هوم كاربرتان بازگرديد:
⦁ $ cd
⦁
سرانجام ، هر زمان كه گواهي تجديد شود يا حاوي يك گواهي منقضي شده باشد ، بايد اين فايل دوباره ايجاد شود.
certbot با مكانيسمي به نام ” hook ” همراه است كه اجازه مي دهد قبل يا بعد از تمديد مجوز ، اسكريپت اجرا شود. شما مي توانيد از اين مكانيزم براي اجراي يك اسكريپت استفاده كنيد كه پس از هر بار تجديد گواهي ، دستوري را كه اجرا كرديد ، دوباره ايجاد كند.
فايل اسكريپت جديد با نام /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh را با يك ويرايشگر متن باز كنيد:
⦁ $ sudo nano /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh
⦁
سپس موارد زير را به ويرايشگر اضافه كنيد:
/etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh
#!/usr/bin/env bash
set -e
# combines the certificate and key into a single file with cat
cat /etc/letsencrypt/live/chat.your-domain/privkey.pem
/etc/letsencrypt/live/chat.your-domain/fullchain.pem
>/etc/letsencrypt/live/chat.your-domain/key-and-cert.pem
به اين ترتيب فيلمنامه Bash شما تجزيه مي شود:
⦁ #!/usr/bin/env bash : به سيستم مي گويد از مترجم Bash براي اجراي اسكريپت استفاده كند.
⦁ set –e: در صورت عدم موفقيت ، باعث خروج اسكريپت ميشود.
⦁ > : خروجي دستور cat را در فايل جديد سمت راست تغيير دهيد.
اسكريپت را نمي توان اجرا كرد تا زماني كه به شما اجازه اجراي دستور زير را بدهد:
⦁ $ sudo chmod +x /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh
⦁
+ x به اسكريپت مجوزهاي اجرا را مي دهد.
سپس ، آزمايش كنيد كه گواهينامه ها به درستي نصب شده باشند و اسكريپت hook بعد از تمديد با اجراي دستور certbot زير كار مي كند:
⦁ $ sudo certbot renew –dry-run
⦁
اين دستور به certbot مي گويد تا گواهينامه ها را تمديد كند اما با گزينه –dry-run كه باعث مي شود هر گونه تغييري در certbot متوقف شود. اگر همه چيز موفقيت آميز باشد ، خروجي زير را مشاهده خواهيد كرد:
Output
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/chat.your-domain/fullchain.pem (success)
/etc/letsencrypt/live/room.your-domain/fullchain.pem (success)
** DRY RUN: simulating ‘certbot renew’ close to cert expiry
** (The test certificates above have not been saved.)
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Running post-hook command: /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh
اكنون مجوزهاي TLS را براي سرور Prosody خود را دريافت كرده ايد. در مرحله بعد ، فايل پيكربندي اصلي Prosody را ويرايش مي كنيد.
مرحله 3 – پيكربندي Prosody
Prosody گزينه هاي پيكربندي زيادي دارد و اين در اندازه بزرگ فايل پيكربندي اصلي /etc/prosody/prosody.cfg.lua منعكس مي شود. براي مديريت اين بخش از ابتداي فايل به سمت پايين كار خواهيد كرد و ويرايشهايي را در فايل انجام مي دهيد.
قبل از شروع ويرايش يك فايل پيكربندي بزرگ ، بهتر است كه يك نسخه كپي تهيه كنيد تا نسخه اصلي را براي بازگشت به آن يا بازيابي داشته باشيد. يك كپي از پيكربندي را با دستور cp تهيه كنيد:
⦁ $ sudo cp /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.original
⦁
اكنون يك نسخه از فايل اصلي در /etc/prosody/prosody.cfg.lua.original داريد.
سپس ، فايل پيكربندي را با يك ويرايشگر متن باز كنيد:
⦁ $ sudo nano /etc/prosody/prosody.cfg.lua
⦁
در بخش هاي بعدي تغييرات پيكربندي به كارهاي كوچكتر تقسيم مي شوند.
ايجاد يك ادمين
ادمين هاي Prosody كاربراني هستند كه مي توانند از طريق كلاينت چت خود ، روي سرور Prosody تغييراتي ايجاد كنند ، به همه كاربران پيام دهند و ساير اقدامات ويژه را انجام دهند.
ادمين هاي سرور Prosody با خط زير تنظيم شده اند:
/etc/prosody/prosody.cfg.lua
…
admins = { }
…
در اين خط مثال ، كاربر admin به مثال سرورchat.your-domain شما اضافه مي شود:
/etc/prosody/prosody.cfg.lua
…
admins = { “admin@chat.your-domain” }
…
اگر مي خواهيد كاربر ديگري اضافه كنيد ، بايد كاما را بعد از اولي قرار دهيد:
/etc/prosody/prosody.cfg.lua
…
admins = { “admin@chat.your-domain”, “sammy@chat.your-domain” }
…
فعال كردن ماژول هاي Prosody
توسعه دهندگان Prosody ويژگي هاي بسياري را در ماژول هايي قرار داده اند كه مي توانند فعال يا غيرفعال شوند.
با حذف — يك ماژول كه قبل از آن آمده است، فعال مي شود. به عنوان مثال ، در اينجا ، ماژول tls غيرفعال است:
Module Disabled
–“tls”; — Add support for secure TLS on c2s/s2s connections
و در اينجا فعال است:
Module Enabled
“tls”; — Add support for secure TLS on c2s/s2s connections
در ادامه اين پاراگراف بخش ماژول هاي ويرايش شده در فايل پيكربندي Prosody با خطوط ويرايش شده، هايلايت گرديده است:
/etc/prosody/prosody.cfg.lua
…
modules_enabled = {
— Generally required
“roster”; — Allow users to have a roster. Recommended
برچسب: ،