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 😉
“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_uploads: اشتراک گذاری فایل را فعال می کند.
⦁ groups: دید کاربر را فعال می کند.
⦁ announce: مدیر را قادر می سازد اعلان ها را برای همه کاربران ارسال کند.
تنظیم ذخیره سازی بانک اطلاعاتی
بخش بعدی که باید ویرایش کنید، تعیین میکند که Prosody پیام کاربران و سایر داده ها را در کجا ذخیره کند. تنظیمات پیش فرض استفاده از فایل های متنی است ، اما پیکربندی مقیاس پذیرتر ذخیره پیام ها در یک پایگاه داده است.
Prosody سه گزینه برای پایگاه داده ها ارائه می دهد. MySQL ، PostgreSQL و. SQLite راه اندازی و نگهداری SQLite ساده تر است، از کمترین منابع استفاده می کند و برای استقرارهای کوچکتر مناسب است.
با برداشتن خط اصلی ، دو خط زیر را فعال کنید – به شرح زیر:
/etc/prosody/prosody.cfg.lua

storage = “sql” — Default is “internal”

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

بایگانی پیام
با ویرایش خط زیر می توانید تعیین کنید چه مدت سرور پیام های چت قدیمی را ذخیره کند:
/etc/prosody/prosody.cfg.lua

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

دوره پیش فرض یک هفته نشان داده میشود. از d برای روزها ، w برای هفته ها و y برای سالها استفاده کنید.
رمزگذاری آپلودها و دانلود های فایل
خط https_certificate به Prosody می گوید که کجا به دنبال گواهی ترکیبی و کلیدی که قبلاً ایجاد کرده اید برای استفاده در انتقال فایل بگردد.
آن را ویرایش کنید تا از مسیر فایل ترکیبی شما استفاده کند:
/etc/prosody/prosody.cfg.lua

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

حذف localhost
در پیکربندی پیش فرض ، Prosody برای اتصالات چت به localhost یا 127.0.0.1 گوش می دهد. این مورد برای سرور راه دور نیاز نیست.
این رفتار با اضافه کردن — به خط غیرفعال کنید به طوری که بعد از ویرایش اینگونه به نظر برسد:
/etc/prosody/prosody.cfg.lua

–VirtualHost “localhost”

تغییر حداکثر اندازه بارگذاری فایل
سرور Prosody شما با ضمیمه کردن فایل های اشتراک گذاری کاربران به پنجره های چت، از آن ها پشتیبانی می کند. حداکثر اندازه پیش فرض فایل هایی که کاربران می توانند به اشتراک بگذارند یک مگابایت است.
با افزودن خط زیر به انتهای پیکربندی ، این حد را روی مقدار بالاتری تنظیم کنید:
/etc/prosody/prosody.cfg.lua

http_upload_file_size_limit = 10485760

عدد در انتهای خط حداکثر اندازه فایل در بایت است. اندازه نشان داده شده در اینجا 10485760 بایت یا 10 مگابایت است. وب سایت GbMb ابزاری مفید برای تبدیل مگابایت به بایت فراهم می کند.
اگر می خواهید دانلود فایل های بزرگتر از 10 مگابایت مجاز باشد ، باید خط دیگری را اضافه کنید که متغیر http_max_content_size را تنظیم کند. http_max_content_size باید بزرگتر از حداکثر اندازه آپلود فایل باشد.
در اینجا ، حداکثر اندازه فایل روی 20 مگابایت (20971520 بایت) و http_max_content_size روی 30 مگابایت تنظیم شده است:
/etc/prosody/prosody.cfg.lua

http_upload_file_size_limit = 20971520
http_max_content_size = 31457280

http_max_content_size 50 را 50% بزرگتر از حداکثر اندازه فایل تنظیم کنید.
پیکربندی فایل گروه ها
ماژول groups که در بخش ماژول ها فعال کرده اید به کلاینت های چت اجازه می دهد تا یکدیگر را ببینند.
ماژول groups فایلی را می خواند که اسامی گروه و اعضای آنها را در خود جای می دهد. با اضافه کردن خط زیر در پایین تنظیمات ، مکان و نام فایل را تنظیم کنید:
/etc/prosody/prosody.cfg.lua

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

این خط Prosody را پیکربندی می کند تا فایلی را در /etc/prosody/sharedgroups.txt برای جمع آوری اطلاعات گروهی بخواند. این فایل را در مرحله 4 با کاربران و گروه ها پر می کنید.
این فایل را با دستور زیر در ترمینال متفاوت ایجاد کنید:
⦁ $ sudo touch /etc/prosody/sharedgroups.txt

ابزار touch وقتی از گزینه های اضافی استفاده نمی شود ، یک فایل خالی ایجاد می کند.
اضافه کردن پیکربندی سرور چت VirtualHost
Prosody برای راه اندازی سرور چت که از نام هاست شما استفاده می کند از یک بلوک پیکربندی که با VirtualHost شروع می شود استفاده می کند.
بلوک پیکربندی زیر را به انتهای پیکربندی اضافه کنید:
/etc/prosody/prosody.cfg.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 را قادر می سازد اتاق های چت چند کاربره را به کاربران خود ارائه دهد. در بخش جدید بلوک پیکربندی زیر را در پایین فایل پیکربندی اضافه کنید:
/etc/prosody/prosody.cfg.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 : کلید خصوصی TLS که برای امنیت اتصالات چت استفاده می شود.
Certificate: گواهینامه خصوصی TLS که از آن برای امنیت اتصالات چت استفاده می شود.
ویرایشگر را ذخیره کرده و از آن خارج شوید.
اکنون ، Prosody را ریستارت کنید تا پیکربندی جدید اعمال شود:
⦁ $ sudo systemctl restart prosody.service

اکنون ویرایش فایل پیکربندی اصلی Prosody را انجام داده اید. در مرحله بعد یک کاربر Prosody اضافه کرده و آنها را به گروه اضافه می کنید.
مرحله 4 – اضافه کردن کاربران و گروههای Prosody
قبل از ورود به سیستم ، باید کاربران Prosody را به سرور Prosody خود در خط فرمان اضافه کنید. برای کمک به مدیریت سرور Prosody از ابزار prosodyctl که با بسته prosody تهیه شده است ، استفاده خواهید کرد.
برای اضافه کردن کاربر جدید از دستور prosodyctl زیر استفاده کنید:
⦁ $ sudo prosodyctl register sammy chat.your-domain password

این کاربر هم اکنون می تواند به سرور Prosody شما متصل شود.
اگر برخی از گروهها را ایجاد کنید که به کابران اجازه دهند یکدیگر و وضعیت یکدیگر را ببینند ، کاربران از شما قدردانی می کنند. شما این کار را با ایجاد گروه ها و اضافه کردن کاربران به آنها با فایل گروهی که قبلاً تعریف کرده بودید انجام میدهید.
فایل گروه را باز کنید:
⦁ $ sudo nano /etc/prosody/sharedgroups.txt

گروه با قرار دادن نام آن بین براکت ها تنظیم می شود. اعضای گروه در زیر خط جدیدی با نام گروه قرار می گیرند. شما می توانید هر تعداد گروه که می خواهید ایجاد کنید و کاربران می توانند در بیش از یک گروه عضو باشند.
در اینجا ، گروهی به نام Everyone وجود دارد که دو عضو دارد: sammy  و admin .
/etc/prosody/sharedgroups.txt
[Everyone]
sammy@chat.your-domain
admin@chat.your-domain

همه اعضای یک گروه قادر خواهند بود اعضای دیگر را بصورت آنلاین یا غیر آنلاین ببینند.
هر زمان که کاربران جدید اضافه کنید یا اطلاعات گروه را تغییر دهید باید سرور Prosody را مجدداً راه اندازی کنید:
⦁ $ sudo systemctl restart prosody.service

تمام آنچه که برای پیکربندی سرور باقی مانده است این است که به Prosody اجازه دهید از طریق فایروال ارتباط برقرار کند ، که در بخش بعدی انجام خواهید داد.
مرحله 5 – مجاز کردن ترافیک Prosody از طریق فایروال
Prosody اتصالات کلاینت را روی پورت های TCP 5222 و 5322 گوش می دهد. برای باز کردن این پورت ها در UFW از دستور زیر استفاده کنید:
⦁ $ sudo ufw allow 5222,5322/tcp

سرور prosody اکنون کاملاً نصب و پیکربندی شده است.
اکنون می توانید با یک کلاینت چت به سرور Prosody خود متصل شوید. در مرحله بعد ، شما یک کلاینت XMPP را در سیستم محلی یا تلفن هوشمند خود پیکربندی می کنید تا به سرور Prosody خود متصل شوید.
مرحله 6 – پیکربندی یک کلاینت چت XMPP
در این مرحله ، کلاینت XMPP خود را روی سرور Prosody پیکربندی می کنید. برای اتصال باید نام کاربری ، نام هاست سرور و رمز عبور خود را وارد کنید.
سرور Prosody را برای استفاده از پورت های استاندارد XMPP پیکربندی کرده اید و از امنیت TLS به طور خودکار مراقبت خواهد شد ، بنابراین نیازی به تنظیم آنها برای اتصال به کلاینت خود نخواهید داشت.
کلاینت های مختلف چت ممکن است نام کاربری ، رمز عبور و نام هاست سرور را در قالب های مختلف بخواهند. نام کاربری و نام هاست سرور بعضی اوقات مانند یک آدرس ایمیل مانند sammy@chat.your-domain کنار هم قرار می گیرند. آدرس ایمیل می تواند Username  یا XMPP Address باشد.
این تصویر صفحه ورود را برای کلاینت PSI نشان می دهد که باید نام کاربری و نام میزبان سرور در فرم آدرس ایمیل وارد شود.

در حالی که ، تصویر زیر از صفحه ورود به حساب برای سرویس گیرنده Gajim لینوکس XMPP ، نام کاربری و نام میزبان را نشان می دهد فیلدهای ورودی جداگانه داده شده است.

کلاینتان XMPP برای ورود به سیستم به جزئیات بیشتری از نام کاربری ، رمز عبور و نام میزبان سرور احتیاج ندارند. جایی که این توسط کلاینت شما پشتیبانی می شود.
نتیجه
در این مقاله شما سرور Prosody را با ویژگی های زیر تنظیم می کنید:
• رمزگذاری TLS
• اتاق های چت و گفتگوی گروهی یک به یک.
• به اشتراک گذاری فایل
همچنین یک کلاینت چت XMPP را تنظیم کرده اید تا از همه این ویژگی ها استفاده کند و با دوستان و همکاران خود چتی غنی از ویژگی ها به شما ارائه دهد.
اگر به دنبال گزینه های منبع باز دیگر برای ارتباط از راه دور هستید ، آموزش های نحوه نصب Jitsi Meet را بررسی کنید.

برچسب‌ها:,