سرورلینوکسهک و امنیت

آموزش نصب و راه‌اندازی سرور چت Prosody روی اوبونتو 24.04

مقدمه پروزودی (Prosody) یک سرور چت XMPP است که از پیام‌رسانی رمزنگاری‌شده با TLS (به‌صورت یک‌به‌یک و گروهی) پشتیبانی می‌کند. پروتکل XMPP (Extensible Messaging and Presence Protocol) یک پروتکل پیام‌رسانی باز است که در گذشته با نام جَبر (Jabber) نیز شناخته می‌شد. این بدان معناست که هر کلاینت چت XMPP می‌تواند به سرور Prosody متصل شده و گفتگو را آغاز کند.

XMPP یک استاندارد بالغ و متن‌باز است که توسط نیروی مهندسی اینترنت (IETF) نگهداری می‌شود. این پروتکل به‌طور فعال توسعه پیدا می‌کند و در بسیاری از برنامه‌ها استفاده می‌شود؛ به‌عنوان‌مثال، سرویس Google Talk که توسط میلیون‌ها کاربر استفاده می‌شد، بر پایه همین پروتکل بنا شده بود. سرورهای XMPP مانند Prosody، گزینه‌ای انعطاف‌پذیر برای پیام‌رسانی محسوب می‌شوند که بیش از دو دهه از عمر آن‌ها می‌گذرد.

در این آموزش، شما یک سرور Prosody را نصب و پیکربندی می‌کنید که از چت‌های یک‌به‌یک و گروهی و همچنین قابلیت آپلود فایل در پنل چت برای به اشتراک‌گذاری پشتیبانی می‌کند. تمامی ارتباطات توسط گواهی رمزنگاری TLS محافظت می‌شوند تا داده‌های شخصی شما کاملاً خصوصی بمانند.

پیش‌نیازها پیش از شروع این راهنما، به موارد زیر نیاز دارید:

  • یک سرور اوبونتو 24.04 با حداقل ۵۱۲ مگابایت رم که طبق راهنمای راه‌اندازی اولیه سرور اوبونتو پیکربندی شده باشد (شامل یک کاربر غیر روت با دسترسی sudo و فایروال).
  • یک کلاینت چت XMPP روی سیستم محلی خود. هر یک از برنامه‌های چت لیست‌شده در صفحه کلاینت‌های XMPP با سرور Prosody شما سازگار خواهد بود.
  • دو زیردامنه (Hostname) که به سرور شما pointing شده باشند. شما به دو زیردامنا نیاز دارید زیرا Prosody از یکی برای چت مستقیم و دیگری برای اتاق‌های چت گروهی استفاده می‌کند. برای یادگیری نحوه اتصال دامنه‌ها به سرورهای ابری پارمین کلود (Parmin Cloud) می‌توانید به مستندات DNS پارمین کلود مراجعه کنید. در این راهنما از دو زیردامنه نمونه زیر استفاده می‌کنیم:
    • chat.your-domain: برای چت‌های یک‌به‌یک.
    • room.your-domain: برای اتاق‌های چت گروهی.

به‌عنوان کاربر غیر روت با دسترسی sudo وارد سرور خود شوید تا این راهنما را آغاز کنید.


مرحله ۱ — نصب Prosody

در این مرحله، مخزن APT اختصاصی Prosody را به سرور خود اضافه کرده و سپس Prosody را از آن نصب می‌کنید. ما از مخزن رسمی Prosody استفاده می‌کنیم تا مطمئن شویم جدیدترین نسخه‌های پکیج‌ها نصب می‌شوند.

ابتدا با ویرایشگر متن خود یک فایل مخزن جدید ایجاد و باز کنید. این فایل اطلاعات مخزن Prosody را برای مدیریت‌گر پکیج APT نگه می‌دارد:

bash
sudo nano /etc/apt/sources.list.d/prosody.list

خط زیر را در فایل اضافه کنید (دقت کنید که برای اوبونتو 24.04 از کلمه noble استفاده کرده‌ایم):

/etc/apt/sources.list.d/prosody.list

text
deb https://packages.prosody.im/debian noble main

اکنون باید کلید عمومی APT مربوط به Prosody را دانلود و نصب کنید. سرور شما از این کلید برای تایید صحت پکیج‌ها استفاده می‌کند.

دستور زیر از ابزار wget برای دانلود کلید به دایرکتوری فعلی شما استفاده می‌کند:

bash
wget https://prosody.im/files/prosody-debian-packages.key

از آنجایی که دستور apt-key add در نسخه‌های جدید اوبونتو منسوخ شده است، کلید را با فرمت مناسب در مسیر کلیدهای معتبر سیستم ذخیره کنید:

bash
sudo gpg –dearmor -o /etc/apt/trusted.gpg.d/prosody.gpg prosody-debian-packages.key

اکنون می‌توانید فایل کلید دانلود شده را حذف کنید، زیرا دیگر به آن نیاز ندارید:

bash
rm prosody-debian-packages.key

پایگاه داده پکیج‌های سرور خود را به‌روزرسانی کنید تا نسخه‌های جدیدتر از مخزن Prosody شامل شوند:

bash
sudo apt update

اکنون می‌توانید پکیج سرور Prosody و برخی پکیج‌های افزاینده اختیاری را نصب کنید:

bash
sudo apt install prosody prosody-modules lua-dbi-sqlite3 lua-event

پکیج‌هایی که نصب کردید به شرح زیر هستند:

  • prosody: خود سرور Prosody.
  • prosody-modules: ماژول‌های اضافی Prosody که قابلیت‌های سرور را گسترش می‌دهند.
  • lua-dbi-sqlite3: به Prosody اجازه می‌دهد از دیتابیس SQLite استفاده کند.
  • lua-event: به Prosody اجازه می‌دهد ارتباط کلاینت‌های همزمان بیشتری را مدیریت کند.

نصب Prosody کامل شد. در مرحله بعد، دو گواهی TLS دریافت می‌کنید که Prosody برای رمزنگاری داده‌های شما هنگام عبور از اینترنت استفاده خواهد کرد.


مرحله ۲ — دریافت گواهینامه‌های TLS

پروزودی از گواهینامه‌های TLS برای رمزنگاری ارتباط بین سرور و کلاینت‌ها استفاده می‌کند. این گواهی‌ها همان گواهی‌هایی هستند که هنگام بازدید از وب‌سایت‌های با آدرس HTTPS استفاده می‌شوند. سازمان Let’s Encrypt گواهینامه‌های TLS رایگان ارائه می‌دهد و ابزار certbot را برای دریافت و مدیریت آن‌ها فراهم کرده است. در این مرحله، ابزار certbot را نصب کرده و از آن برای دریافت یک جفت گواهی برای دو زیردامنه خود استفاده می‌کنید.

ابتدا certbot را نصب کنید (در اوبونتو 24.04 این پکیج در مخازن پیش‌فرض موجود است):

bash
sudo apt install certbot

سپس، اجازه عبور ترافیک HTTP از طریق فایروال UFW را بدهید تا certbot بتواند درخواست گواهی شما را تایید کند:

bash
sudo ufw allow http

دستور certbot زیر را اجرا کنید تا گواهی برای یکی از زیردامنه‌های شما دریافت شود:

bash
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 ارسال می‌شود تا از طریق آن در مورد مسائل امنیتی، انقضای گواهی و … به شما اطلاع‌رسانی شود. (به جای your_email ایمیل واقعی خود را وارد کنید).
  • -d chat.your-domain: نام دامنه‌ای که قصد دارید برای سرور Prosody از آن استفاده کنید.

هنگام اجرای این دستور، از شما پرسیده می‌شود که آیا مایلید آدرس ایمیل خود را با Electronic Frontier Foundation به اشتراک بگذارید یا خیر (این بخش اختیاری است). سپس ثبت گواهی با خروجی زیر ادامه می‌یابد:

text
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”

همین دستور را مجدداً برای دریافت گواهی زیردامنه دوم خود اجرا کنید:

bash
sudo certbot certonly –standalone –agree-tos –email your_email -d room.your-domain

اکنون دو دایرکتوری در مسیر زیر دارید:

  • /etc/letsencrypt/live/room.your-domain
  • /etc/letsencrypt/live/chat.your-domain

این دایرکتوری‌ها حاوی فایل‌های گواهی و کلید برای دامنه‌های شما هستند.

از آنجایی که سرور Prosody به‌عنوان کاربر root اجرا نمی‌شود، مالکیت و مجوزهای دسترسی (Permissions) دایرکتوری‌ها و فایل‌های کلید باید تغییر کنند تا سرور Prosody بتواند آن‌ها را بخواند و استفاده کند.

اولین قدم، تغییر گروه مالک کلیدهای خصوصی به گروه prosody است:

bash
sudo chgrp prosody /etc/letsencrypt/live/room.your-domain/privkey.pem
sudo chgrp prosody /etc/letsencrypt/live/chat.your-domain/privkey.pem

سپس، مجوزهای دایرکتوری‌هایی که حاوی فایل‌های گواهی TLS هستند را به 0755 تغییر دهید:

bash
sudo chmod 0755 /etc/letsencrypt/archive
sudo chmod 0755 /etc/letsencrypt/live

اکنون، مجوزهای دسترسی به کلیدهای خصوصی TLS را تغییر دهید:

bash
sudo chmod 0640 /etc/letsencrypt/live/room.your-domain/privkey.pem
sudo chmod 0640 /etc/letsencrypt/live/chat.your-domain/privkey.pem

مجوز 0640 روی این فایل‌ها به این معناست که کاربر root دسترسی خواندن و نوشتن دارد. اعضای گروه prosody (که کاربر اجرای سرور Prosody در آن عضو است) دسترسی خواندن دارند و سایر کاربران سیستم هیچ دسترسی‌ای به این فایل ندارند.

می‌توانید با استفاده از دستور cat به‌عنوان کاربر prosody تست کنید که آیا سرور می‌تواند کلید خصوصی را بخواند یا خیر:

bash
sudo -u prosody cat /etc/letsencrypt/live/chat.your-domain/privkey.pem

اگر موفقیت‌آمیز باشد، محتوای فایل کلید روی صفحه نمایش شما ظاهر می‌شود.

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

ابتدا به دایرکتوری که حاوی فایل‌های کلید و گواهی است بروید و سپس با دستور cat محتوای آن‌ها را در یک فایل جدید به نام key-and-cert.pem ترکیب کنید:

bash
cd /etc/letsencrypt/live/chat.your-domain/
sudo sh -c ‘cat privkey.pem fullchain.pem >key-and-cert.pem’

بخش ابتدایی این دستور (sudo sh -c) یک زیرشل (sub-shell) با دسترسی کاربر root باز می‌کند تا بتواند فایل جدید را در این مسیر بنویسد.

اکنون گروه و مجوزهای این فایل جدید را با گروه و مجوزی که برای کلید خصوصی قبلی تنظیم کردید مطابقت دهید:

bash
sudo chmod 0640 key-and-cert.pem
sudo chgrp prosody key-and-cert.pem

به دایرکتوری خانه کاربر خود برگردید:

bash
cd

در نهایت، این فایل باید هر بار که گواهی تمدید می‌شود بازسازی گردد تا از گواهی منقضی‌شده استفاده نشود.

ابزار certbot دارای قابلیتی به نام “hook” (قلاب) است که اجازه می‌دهد قبل یا بعد از تمدید گواهی، یک اسکریپت اجرا شود. شما می‌توانید از این مکانیزم برای اجرای اسکریپتی استفاده کنید که فایل ترکیبی شما را پس از هر تمدید بازسازی کند.

فایل اسکریپت جدیدی به نام /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh با ویرایشگر متن باز کنید:

bash
sudo nano /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh

سپس کدهای زیر را در آن قرار دهید:

/etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh

bash
#!/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 را به فایل جدیدی در سمت راست هدایت می‌کند.

تا زمانی که مجوز اجرا به اسکریپت ندهید، قابل اجرا نخواهد بود:

bash
sudo chmod +x /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh

سپس، با اجرای دستور certbot زیر تست کنید که آیا گواهی‌ها به‌درستی نصب شده‌اند و اسکریپت پس از تمدید (hook) کار می‌کند یا خیر:

bash
sudo certbot renew –dry-run

این دستور به certbot می‌گوید که گواهی‌ها را تمدید کند اما با گزینه --dry-run از ایجاد تغییرات واقعی جلوگیری می‌کند. در صورت موفقیت، خروجی زیر را مشاهده خواهید کرد:

text
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 را ویرایش خواهید کرد.


مرحله ۳ — پیکربندی Prosody

پروزودی گزینه‌های پیکربندی زیادی دارد و این موضوع در حجم بالای فایل پیکربندی اصلی /etc/prosody/prosody.cfg.lua مشهود است. برای مدیریت بهتر این بخش، فایل را از ابتدا تا انتها ویرایش می‌کنیم.

پیش از شروع ویرایش یک فایل پیکربندی بزرگ، همیشه خوب است یک کپی از آن بگیرید تا در صورت نیاز بتوانید به نسخه اصلی برگردانید:

bash
sudo cp /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.original

سپس فایل پیکربندی را باز کنید:

bash
sudo nano /etc/prosody/prosody.cfg.lua

تغییرات پیکربندی در بخش‌های کوچک‌تری در ادامه آورده شده است.

ایجاد مدیر (Administrator) مدیران Prosody کاربرانی هستند که می‌توانند از طریق کلاینت چت خود تغییراتی در سرور ایجاد کنند، به همه کاربران پیام بدهند و سایر اقدامات ممتاز را انجام دهند.

مدیران با خط زیر در فایل تنظیم می‌شوند:

lua
admins = { }

در این مثال، کاربر admin به سرور نمونه اضافه می‌شود:

lua
admins = { “admin@chat.your-domain” }

برای افزودن کاربر دیگر، باید بعد از کاربر اول کاما قرار دهید:

lua
admins = { “admin@chat.your-domain”, “sammy@chat.your-domain” }

فعال‌سازی ماژول‌های Prosody توسعه‌دهندگان Prosody بسیاری از قابلیت‌ها را در قالب ماژول‌هایی قرار داده‌اند که می‌توانند فعال یا غیرفعال شوند. یک ماژول با حذف علامت -- (که در زبان Lua نشان‌دهنده کامنت است) در ابتدای آن فعال می‌شود.

بخش ماژول‌های ویرایش‌شده در فایل پیکربندی به شکل زیر است (خطوطی که از حالت کامنت خارج شده‌اند):

lua
modules_enabled = {
— Generally required
“roster”; — Allow users to have a roster. Recommended 😉
“saslauth”; — Authentication for clients and servers. Recommended if you want to log in.
“tls”; — Add support for secure TLS on c2s/s2s connections
“dialback”; — s2s dialback support
“disco”; — Service discovery
— Not essential, but recommended
“carbons”; — Keep multiple clients in sync
“pep”; — Enables users to publish their avatar, mood, activity, playing music and more
“private”; — Private XML storage (for room bookmarks, etc.)
“blocklist”; — Allow users to block communications with other users
“vcard4”; — User profiles (stored in PEP)
“vcard_legacy”; — Conversion between legacy vCard and PEP Avatar, vcard
— Nice to have
“version”; — Replies to server version requests
“uptime”; — Report how long server has been running
“time”; — Let others know the time here on this server
“ping”; — Replies to XMPP pings with pongs
“register”; — Allow users to register on this server using a client and change passwords
“mam”; — Store messages in an archive and allow users to access it
“csi_simple”; — Simple Mobile optimizations
— Admin interfaces
“admin_adhoc”; — Allows administration via an XMPP client that supports ad-hoc commands
–“admin_telnet”; — Opens telnet console interface on localhost port 5582
— HTTP modules
–“bosh”; — Enable BOSH clients, aka “Jabber over HTTP”
–“websocket”; — XMPP over WebSockets
“http_files”; — Serve static files from a directory over HTTP
“http_upload”; — Enables file sharing between users
— Other specific functionality
–“limits”; — Enable bandwidth limiting for XMPP connections
“groups”; — Shared roster support
–“server_contact_info”; — Publish contact information for this service
“announce”; — Send announcement to all online users
–“welcome”; — Welcome users who register accounts
–“watchregistrations”; — Alert admins of registrations
–“motd”; — Send a message to users when they log in
–“legacyauth”; — Legacy authentication. Only used by some old clients and bots.
–“proxy65”; — Enables a file transfer proxy service which clients behind NAT can use
}

ماژول‌هایی که فعال کرده‌اید عبارتند از:

  • mam: پیام‌های چت را در سرور ذخیره می‌کند تا کاربران بتوانند بعداً به آن‌ها دسترسی پیدا کنند.
  • csi_simple: بهینه‌سازی را برای کلاینت‌های موبایل فعال می‌کند.
  • http_files: اشتراک‌گذاری فایل را فعال می‌کند.
  • http_upload: امکان آپلود فایل برای اشتراک‌گذاری را فراهم می‌کند.
  • groups: قابلیت دید کاربران توسط یکدیگر را فراهم می‌کند.
  • announce: به مدیران اجازه می‌دهد به همه کاربران آنلاین پیام ارسال کنند.

راه‌اندازی ذخیره‌سازی دیتابیس بخش بعدی که باید ویرایش کنید، محل ذخیره پیام‌ها و سایر داده‌های کاربران را تعیین می‌کند. تنظیم پیش‌فرض استفاده از فایل‌های متنی است، اما یک پیکربندی مقیاس‌پذیرتر، استفاده از دیتابیس است. Prosody از MySQL، PostgreSQL و SQLite پشتیبانی می‌کند. SQLite برای راه‌اندازی و نگهداری ساده‌تر است و برای استقرارهای کوچک مناسب می‌باشد.

دو خط زیر را با حذف علامت -- از ابتدای آن‌ها فعال کنید:

lua
storage = “sql” — Default is “internal”
sql = { driver = “SQLite3”, database = “prosody.sqlite” } — Default. ‘database’ is the filename.

آرشیو پیام‌ها می‌توانید تعیین کنید که سرور پیام‌های چت قدیمی را چقدر ذخیره کند:

lua
archive_expires_after = “1w” — Remove archived messages after 1 week

دوره پیش‌فرض 1w (یک هفته) نمایش داده شده است. می‌توانید از d برای روز، w برای هفته و y برای سال استفاده کنید.

رمزنگاری آپلود و دانلود فایل خط https_certificate به Prosody می‌گوید که کجا به دنبال فایل ترکیبی گواهی و کلید که قبلاً ساختید بگردد تا از آن برای انتقال فایل استفاده کند. آن را به مسیر فایل ترکیبی خود ویرایش کنید:

lua
https_certificate = “/etc/letsencrypt/live/chat.your-domain/key-and-cert.pem”

حذف localhost در پیکربندی پیش‌فرض، Prosody روی localhost یا 127.0.0.1 برای ارتباطات چت گوش می‌دهد. این مورد روی یک سرور ریموت لازم نیست. این رفتار را با اضافه کردن -- به ابتدای خط غیرفعال کنید:

lua
–VirtualHost “localhost”

تغییر حداکثر حجم آپلود فایل سرور Prosody شما از اشتراک‌گذاری فایل توسط کاربران در پنجره چت پشتیبانی می‌کند. حداکثر اندازه پیش‌فرض فایل‌ها ۱ مگابایت است. برای افزایش آن، خط زیر را به انتهای فایل پیکربندی اضافه کنید:

lua
http_upload_file_size_limit = 10485760

عدد انتهای خط، حداکثر حجم فایل به بایت است. مقدار اینجا برابر با ۱۰ مگابایت (۱۰۴۸۵۷۶۰ بایت) است. اگر می‌خواهید اجازه آپلود فایل‌های بزرگتر از ۱۰ مگابایت را بدهید باید خط دیگری اضافه کرده و متغیر http_max_content_size را تنظیم کنید. این مقدار باید بزرگتر از حداکثر حجم آپلود فایل باشد.

پیکربندی فایل گروه‌ها ماژول groups که در بخش ماژول‌ها فعال کردید، به کلاینت‌های چت اجازه می‌دهد یکدیگر را ببینند. این ماژول فایلی را می‌خواند که نام گروه‌ها و اعضای آن‌ها در آن قرار دارد. با اضافه کردن خط زیر به انتهای فایل پیکربندی، مسیر فایل را مشخص کنید:

lua
groups_file = “/etc/prosody/sharedgroups.txt”

این فایل را با دستور زیر در ترمینال دیگری ایجاد کنید:

bash
sudo touch /etc/prosody/sharedgroups.txt

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

lua
VirtualHost “chat.your-domain”
ssl = {
key = “/etc/letsencrypt/live/chat.your-domain/privkey.pem”;
certificate = “/etc/letsencrypt/live/chat.your-domain/fullchain.pem”;
}

گزینه‌های استفاده شده:

  • VirtualHost: دامنه‌ای که Prosody برای سرور چت استفاده می‌کند.
  • key: کلید خصوصی TLS برای امن‌سازی ارتباطات.
  • certificate: گواهی TLS برای امن‌سازی ارتباطات.

افزودن سرور اتاق چت (چت گروهی) این پیکربندی به Prosody اجازه می‌دهد اتاق‌های چت چندکاربره (Multi-User Chat) را به کاربران ارائه دهد. این بلوک را به عنوان یک بخش جدید در انتهای فایل پیکربندی اضافه کنید:

lua
Component “room.your-domain” “muc”
modules_enabled = { “mam_muc”; }
storage = { muc_log = “sql”; }
ssl = {
key = “/etc/letsencrypt/live/room.your-domain/privkey.pem”;
certificate = “/etc/letsencrypt/live/room.your-domain/fullchain.pem”;
}

گزینه‌های استفاده شده:

  • Component: ماژول muc (چت چندکاربره) را برای دامنه room.your-domain فعال می‌کند.
  • modules_enabled = { "mam_muc"; }: آرشیو کردن پیام‌های چت گروهی را فعال می‌کند.
  • storage: پیام‌های چت را در دیتابیس SQLite ذخیره می‌کند.
  • key و certificate: کلید و گواهی TLS برای این دامنه.

فایل را ذخیره کرده و از ویرایشگر خارج شوید.

اکنون سرویس Prosody را ری‌استارت کنید تا تنظیمات جدید اعمال شود:

bash
sudo systemctl restart prosody.service

مرحله ۴ — افزودن کاربران و گروه‌های Prosody

پیش از آنکه کاربران بتوانند وارد شوند، باید آن‌ها را از طریق خط فرمان به سرور Prosody اضافه کنید. از ابزار prosodyctl که به‌همراه پکیج نصب شده است برای مدیریت سرور استفاده کنید.

با دستور زیر یک کاربر جدید ثبت کنید:

bash
sudo prosodyctl register sammy chat.your-domain password

(به جای sammy نام کاربر و به جای password یک رمز عبور قوی وارد کنید). این کاربر اکنون می‌تواند به سرور Prosody شما متصل شود.

برای اینکه کاربران شما بتوانند یکدیگر را و وضعیت آنلاین/آفلاین بودن هم را ببینند، بهتر است گروه‌هایی ایجاد کنید. این کار با ایجاد گروه‌ها و افزودن کاربران به آن‌ها در فایلی که قبلاً تعریف کردیم انجام می‌شود.

فایل گروه‌ها را باز کنید:

bash
sudo nano /etc/prosody/sharedgroups.txt

یک گروه با قرار دادن نام آن بین براکت‌ها [] تعریف می‌شود. اعضای گروه در خطوط زیرِ نام گروه قرار می‌گیرند. در اینجا گروهی به نام Everyone با دو عضو sammy و admin ایجاد شده است:

/etc/prosody/sharedgroups.txt

text
[Everyone]
sammy@chat.your-domain
admin@chat.your-domain

تمام اعضای یک گروه می‌توانند یکدیگر را ببینند. هر زمان کاربران جدیدی اضافه کردید یا اطلاعات گروه را تغییر دادید، باید سرور Prosody را ری‌استارت کنید:

bash
sudo systemctl restart prosody.service

مرحله ۵ — اجازه عبور ترافیک Prosody از فایروال

پروزودی برای دریافت ارتباطات از کلاینت‌ها روی پورت‌های TCP شماره 5222 و 5322 گوش می‌دهد. با دستورات زیر این پورت‌ها را در فایروال UFW باز کنید:

bash
sudo ufw allow 5222,5322/tcp

سرور Prosody اکنون به‌طور کامل نصب و پیکربندی شده است.


مرحله ۶ — پیکربندی کلاینت چت XMPP

در این مرحله، کلاینت XMPP خود را برای اتصال به سرور Prosody پیکربندی می‌کنید. برای اتصال به سرور باید نام کاربری، نام سرور (Hostname) و رمز عبور خود را وارد کنید.

از آنجایی که سرور را روی پورت‌های استاندارد XMPP پیکربندی کرده‌اید و امنیت TLS به‌طور خودکار برقرار می‌شود، نیازی به تنظیمات دستی پورت‌ها در کلاینت ندارید.

کلاینت‌های مختلف ممکن است نام کاربری، رمز عبور و آدرس سرور را در قالب‌های متفاوتی درخواست کنند. گاهی نام کاربری و آدرس سرور به‌همراه علامت @ در قالب یک آدرس ایمیل وارد می‌شوند؛ مانند sammy@chat.your-domain. کلاینت‌ها ممکن است به این فرمت بگویند Username یا XMPP Address.

کلاینت‌های XMPP برای ورود به جزئیات مذکور به چیز دیگری نیاز ندارند. پس از ورود، می‌توانید اعضای دیگر گروه چت را پیدا کنید و در صورت پشتیبانی کلاینت شما، اتاق‌های چت گروهی ایجاد کنید.


نتیجه‌گیری

در این آموزش، شما یک سرور Prosody را با ویژگی‌های زیر راه‌اندازی کردید:

  • رمزنگاری TLS
  • پشتیبانی از چت یک‌به‌یک و اتاق‌های چت گروهی
  • اشتراک‌گذاری فایل

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

از همراهی شما با پارمین کلود سپاسگزاریم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا