راه اندازی چت ماتریکس

پیام رسان امن و غیرمتمرکز matrix

یک دنیا را تصور کن…
… در جایی که ارسال پیام یا تماس با هر کسی به همان اندازه ساده است که برای آنها ایمیل ارسال کنید.
… جایی که می توانید بدون اینکه مجبور شوید همان برنامه را نصب کنید ارتباط برقرار کنید.
… جایی که می توانید انتخاب کنید چه کسی ارتباط شما را میزبانی می کند.
… جایی که مکالمات شما با رمزگذاری E2E ایمن می شوند.
… جایی که یک API استاندارد HTTP ساده برای به اشتراک گذاری داده های real-time در وب وجود دارد.

آنچه در این مطلب میخوانید:

Matrix در واقع یک فروشگاه مکالمه غیرمتمرکز است تا یک پروتکل پیام رسانی.

وقتی پیامی را در Matrix ارسال می‌کنید، روی تمام سرورهایی که کاربران آن‌ها در یک مکالمه شرکت می‌کنند، تکرار می‌شود، مشابه نحوه تکثیر commit‌ها بین مخازن Git.

هیچ نقطه کنترل یا شکست واحدی در یک مکالمه Matrix که چندین سرور را در بر می گیرد وجود ندارد: عمل ارتباط با فرد دیگری در Matrix مالکیت مکالمه را به طور مساوی با آنها به اشتراک می گذارد. حتی اگر سرور شما آفلاین شود، مکالمه می تواند بدون وقفه در جاهای دیگر ادامه یابد تا زمانی که بازگردد.

این بدان معناست که هر سروری بر داده‌های کاربران خود حاکمیت کامل دارد، و هر کسی می‌تواند سرور خود را انتخاب یا اجرا کند و در شبکه گسترده‌تر ماتریکس شرکت کند. اینگونه است که ماتریکس کنترل بر ارتباطات را دموکراتیک می کند.

به‌طور پیش‌فرض، Matrix از API‌های ساده HTTPS+JSON به‌عنوان انتقال پایه خود استفاده می‌کند، اما از انتقال‌های پیچیده‌تر مانند WebSockets یا ماتریکس با پهنای باند بسیار کم از طریق CoAP+Noise نیز استفاده می‌کند.

بنیاد Matrix

Matrix از طریق یک فرآیند حاکمیت باز مدیریت می شود که توسط The Matrix.org Foundation – یک شرکت غیرانتفاعی علاقه مند به جامعه بریتانیا، مراقبت می شود.

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

نگهبانان مدیران قانونی بنیاد هستند و مسئول اطمینان از ادامه ماموریت و محافظت بی طرفانه از توسعه ماتریکس هستند.

قابلیت‌های Matrix

قابلیت‌های Matrix عبارتند از:

  • پیام رسانی
  • رمزگذاری End-to-End
  • ویپ VoIP
  • پل زدن
  • IOT، VR

پیام رسانی

Matrix به شما APIها و SDKهای HTTP ساده (iOS، Android، Web) را برای ایجاد اتاق‌های گفتگو، چت مستقیم و ربات‌های چت، با رمزگذاری سرتاسر، انتقال فایل، تاریخچه مکالمه همگام‌سازی شده، پیام‌های فرمت‌شده، رسید خواندن و موارد دیگر در اختیار شما می‌گذارد.

مکالمات روی همه سرورهای شرکت کننده در آنها تکرار می شود، به این معنی که هیچ نقطه کنترل یا شکست واحدی وجود ندارد. شما می توانید به هر کاربر دیگری در اکوسیستم جهانی Matrix با بیش از 40 میلیون کاربر دسترسی داشته باشید، حتی از طریق پل ها.

رمزگذاری End-to-End

Matrix پیشرفته ترین رمزگذاری End-to-End را از طریق ratchet های رمزنگاری Olm و Megolm فراهم می کند. این تضمین می کند که فقط گیرندگان مورد نظر می توانند پیام های شما را رمزگشایی کنند، در حالی که در صورت اضافه شدن دستگاه غیرمنتظره به مکالمه هشدار می دهد.

رمزگذاری Matrix بر اساس الگوریتم Double Ratchet است که توسط سیگنال رایج شده است، اما برای پشتیبانی از رمزگذاری به اتاق‌هایی که هزاران دستگاه را شامل می‌شود، گسترش یافته است. Olm و Megolm به عنوان یک استاندارد باز مشخص شده‌اند و پیاده‌سازی‌ها تحت مجوز Apache منتشر می‌شوند که به‌طور مستقل توسط NCC Group ممیزی می‌شوند.

VoIP

با ظهور WebRTC، توسعه دهندگان توانایی تبادل تماس های صوتی و تصویری با کیفیت بالا را به دست آوردند، اما هیچ روش استانداردی برای مسیریابی تماس ها وجود نداشت.

ماتریس لایه سیگنالینگ گمشده برای WebRTC است. اگر در حال ساخت VoIP در برنامه خود هستید، یا می‌خواهید برنامه VoIP موجود خود را در معرض مخاطبان گسترده‌تری قرار دهید، ساختن بر روی SDK و پل‌های Matrix باید بی‌معنا باشد.

پل زدن

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

تیم اصلی Matrix پل‌هایی را به Slack، IRC، XMPP و Gitter حفظ می‌کند، و در همین حال، جامعه گسترده‌تر Matrix پل‌هایی را برای Telegram، Discord، WhatsApp، Facebook، Hangouts، Signal و بسیاری دیگر فراهم می‌کند.

IOT، VR و موارد دیگر…

Matrix می تواند هر نوع داده real-time را مدیریت کند، نه تنها پیام رسانی و VoIP.

با ساختن پل‌ها به هرچه بیشتر سیلوهای اینترنت اشیا، می‌توان داده‌ها را به‌طور امن در شبکه Matrix منتشر کرد. راه حل های IoT ساخته شده بر روی Matrix، به جای قفل شدن برای فروشندگان خاص، یکپارچه هستند و حتی می توانند داده های Matrix را مستقیماً از دستگاه ها از طریق انتقال پهنای باند بسیار کم (100bps یا کمتر) منتشر یا مصرف کنند.

در همین حال، فروشندگان مجازی به جای همکاری با یکدیگر برای ایجاد یک اکوسیستم باز، سیلوهایی را که در پیام‌رسانی فوری دیده‌ایم، بازسازی می‌کنند. ماتریس می تواند لایه یکپارچه برای ارتباطات و داده های جهانی در AR و VR باشد.

# پیام رسان Matrix # پیام رسان Matrix


راه اندازی چت ماتریکس

راه اندازی چت خصوصی ماتریکس

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

 در این مقاله قصد دارم چند چت رایگان معرفی بکنم که شما به راحتی می‌توانید آنها را نصب بکنید و در سازمان خود راه اندازی کنید.

  از جمله چت‌های رایگان می‌توان از Rocket Chat, Mattermost, Elemen-matrix نام برد.

Element Chat: اول از همه باید بدانیم که ماتریکس یک پروتکل ارتباطی است  که element  یک چت سرور است که با استفاده از پروتکل ماتریکس ه ما یک چت اختصاصی می‌دهد  ناگفته نماند که  علت محبوبیت المنت این است که رای تمام سیستم عامل‌ها چت کلاینت ماتریکس دارد.

لیست کلاینت‌هایی که matrix  ا ساپورت می‌کنند:

https://matrix.org/ecosystem/clients

Mattermost: این چت از websocket و https برای ارتباط استفاده می‌کند. و  مانند element  نسخه سرور کلاینت‌  برای سیستم عامل‌های مختلف از جمله دسترسی از طریق وب را پشتیبانی می‌کند.

Rocketchat:  این چت هم مانند element  و element  به صورت سرور و کلاینت ارائه می‌گردد و از  پروتکل ماتریکس برای ارتباط استفاده می‌کند.  لازم به ذکر است که این چت قبلاً به صورت کاملاً ایگان و متن باز ارائه می‌شد اما چند سالی است که اکثر امکانات آن به صورت ابری ارائه می‌گردد و شامل هزینه می‌شود. این را بدانید که ماتریکس یک پروتکل است که element  روی این پروتکل یک چت سرور به اسم matrix-synapse  توسعه داده است.

 برای نصب mattermost  و element به  3 عنصر نیاز داریم:

  1. چت سرور
  2. دیتابیس سرور
  3. وب سرور

 که در صورت  نیاز می‌توانید وب سرور را روی یک دامنه ست کنید و گواهی SSL  آن را فعال کنید.

نصب mattermost:

این چت سرور را به روش‌های مختلف می‌توان نصب کرد:

 داکر,  کوبرنتیز,  از طریق سورس کد  و یا حتی از طریق  پکیج  که در این  مقاله ما  ما از  طریقه  پکیج منیجر ر روی لینوکس اون تو آن را نصب می‌کنیم.

پس از نصب اون نوبت ست کردن نام ها، تاریخ   و به روز رسانی آن است. به ترتیب عناصر زیر را نصب و تنظیم می‌کنیم:

نصب دیتابیس سرور:

 رای انتخاب دیتابیس سرور شما می‌توانید هم از mysql  و هم از postgresql  استفاده کنید اما خود mattermost دیتابیس سرور postgresql  را پیشنهاد می‌کند.

 ابتدا آن را با استفاده از دستور زیر نصب می‌کنیم:

sudo apt install postgresql postgresql-contrib

سپس با استفاده از دستور زیر به آن ورود می‌کنیم

sudo --login --user postgres

با دستور زیر وارد interactive mode  ی‌شویم 

psql

دستورات زیر را برای ساخت دیتابیس و کاربر  و دسترسی به دیتابیسی که ایجاد کرده‌ایم اجرا می‌کنیم  و پس از آن از محیط  دیتابیس خارج می‌شویم. توجه داشته باشید که من در این مقاله از پسوردهای ضعیف استفاده می‌کنم اما شما در محیط واقعی از پسوردهای قوی استفاده کنید.

# CREATE DATABASE mattermost; 
# CREATE USER mattermost WITH PASSWORD 'mattermost'; 
# GRANT ALL PRIVILEGES ON DATABASE mattermost to mattermost; 
# \q 
$ exit

حال وقت آن رسیده است که یک سری تنظیمات را در دیتابیس هم انجام دهیم.  توجه داشته باشید که در زمان نصب این  پکیج از postgres  ورژن ۱۴ استفاده شده است.  در صورتی که شما از ورژن دیگری استفاده می‌کنید مسیر شما متفاوت است و اگر توجه کنید در مسیر زیر یک دایرکتوری به اسم ۱۴ وجود دارد. در صورتی که شما از ورژن دیگری استفاده می‌کنید باید این عدد را به شماره ورژن خود تغییر دهید.

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

vim /etc/postgresql/14/main/postgresql.conf

 سپس عبارت #listen_addresses = ‘localhost’  فایل  پیدا کنید و آن را با listen_addresses = ‘*’

جایگزین کنید، فایل را ذخیره و ازآن خارج شوید.  توجه داشته باشید که در صورتی که این عبارت به صورت کامنت هست  سمبل #  را از پشت آن بردارید. بعد از آن فایل زیر را با استفاده از ویرایشگر متنی دلخواه باز بکنید و دوباره توجه داشته باشید که در مسیر زیر از ورژن نصبی خود استفاده بکنید.

vim /etc/postgresql/14/main/pg_hba.conf

در این فایل عبارت 

local   all         all              peer  

را پیدا کنید  و آن را با

local   all         all              trust

جایگزین کنید.

همچنین در  آخر همین فایل،  عبارت زیر را اضافه کنید.  توجه داشته باشید عبارت SERVER_IP  را با آی پی سرور خود جایگزین کنید.

host all all {SERVER-IP}/32 md5

سرور دیتابیس سرور را ریستارت کنید. 

sudo systemctl restart postgresql

در پایان با استفاده از دستور زیر از فعال بودن دیتابیس سرور مطمئن شوید.

sudo systemctl status postgresql

  نصب سرور mattermost:

در ابتدا با استفاده از دستورات زیر مخازن mattermost  ا به سرور خود اضافه می‌کنیم و سرور را به روز می‌کنیم 

sudo rm /usr/share/keyrings/mattermost-archive-keyring.gpg $
$ curl -sL -o- https://deb.packages.mattermost.com/pubkey.gpg |  gpg --dearmor | sudo tee /usr/share/keyrings/mattermost-archive-keyring.gpg > /dev/null
$ curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost
$ sudo apt update 

 برای  نصب mattermost server  دستور دستور زیر را در  ترمینال اجرا کنید

$ sudo apt install mattermost -y

پس از اجرای این دستور مترموست  در  مسیر /opt/mattermost  نصب شده است.

حالا با استفاده از ویرایشگر متنی دلخواه فایل تنظیمات متروس را باز می‌کنیم. و پارامترهای دیتابیس را  غییر می‌دهیم.

$ sudo vim /opt/mattermost/config/config.json
  1. در ابتدا “DriverName”  را به postgres تغییر دهید
  2. و در مقابل “DataSource”  مشخصات دیتابیس خود را به صورت زیر وارد کنید.

توجه داشته باشید که  پارامترهای DATABASE_USER:DATABASE_PASSWORD  و DATABASE_NAME  را  مشخصات دیتابیس  خودتان جایگزین کنید.

در اینجا لازم است تغییراتی در  فایل systemd  ایجاد کنیم.  برای این کار فایل زیر را با استفاده از ویرایشگر متنی دلخواه باز کنید.

$ sudo vim /lib/systemd/system/mattermost.service

 محتویات داخل آن را پاک کنید و متن زیر را در آن وارد کنید ذخیره کنید و خارج شوید 

[Unit]

Description=Mattermost

After=network.target

After=postgresql.service

Requires=postgresql.service

[Service]

Type=notify

ExecStart=/opt/mattermost/bin/mattermost

TimeoutStartSec=3600

Restart=always

RestartSec=10

WorkingDirectory=/opt/mattermost

User=mattermost

Group=mattermost

LimitNOFILE=49152

Environment=”MM_INSTALL_TYPE=deb_package”

[Install]

WantedBy=multi-user.target

WantedBy=postgresql.service

~                                     

از آن با دستورات زیر اول تغییرات را اعمال می‌کنیم و سپس سرور را استارت و Enable می‌کنیم.

$ sudo systemctl daemon-reload
$ sudo systemctl restart mattermost.service
$ sudo systemctl enable mattermost.service

در پایان دستور زیر را اجرا کنید تا از  فعال متر موست مطمئن شویم.

$ sudo status mattermost.service

پایان mattermost با موفقیت نصب شد و می‌توانید آدرس سرور با پورت  را در مرورگر دلخواه خود وارد کنید و یک اکانت ادمین بسازید.

توجه داشته باشید در صورتی که mattermost  را روی دامنه ست کرده‌اید می‌توانید به صورت اختیاری  از یک reverse proxy مثل nginx و یا caddy استفاده کنید و با استفاده از letsencypt گواهی SSL  آن را فعال کنید.

 ساخت کاربر جدید:

برای ساخت کاربر جدید  می‌توانید از محیط گرافیکی استفاده کنید  و فقط می‌توانید یک دعوتنامه به آدرس ایمیل آنها ارسال کنید.

برای مدیریت mattermost ابزار خط فرمانی به اسم mmctl وجود دارد که برای استفاده از آن ابتدا باید از طریق دستور زیر به صورت ادمین وارد سرور mattermost شویم.

$ mmctl auth login http://SERVER_IP:8065 --name default_connection --username adminuser

وجود توجه داشته باشید که عبارت SERVER_IP  را با آی پی  و نام دامنه سرور خود جایگزین کنید.  دقت کنید در صورتی که از SSL  ستفاده می‌کنید http را با https  جایگزین کنید.

پس از اینکه  دستور بالا را وارد کردید  پسورد کاربر ادمین خود را وارد کنید  و در صورت ورود موفقیت آمیز پیغام زیر را دریافت خواهید کرد.

 این ابزار خط فرمان امکانات زیادی دارد که در  سایت  mattermost به آدرس زیر می‌توانید مشاهده کنید.

https://docs.mattermost.com/manage/mmctl-command-line-tool.html

به طور مثال برای ساخت کاربر جدید میتوانید دستور زیر را اجرا کنید.

$ mmctl user create --email user@example.com --username userexample --password Password1

امکانات همچنین برای دانلود کلاینت‌  رای سیستم عامل‌های مختلف 

می‌توانید از لینک زیر آنها را  دانلود و نصب کنید.

https://mattermost.com/apps

********

چون چیزی به اسم «دانلود ماتریکس» معنی ندارد. ماتریکس یک شیوه‌نامهٔ ارتباطی است. مثل اینه که بگی برای دانلود وب باید چی کار کنیم!
همون‌طور که برای استفاده از وب نیاز به یه کارخواه وب(مرورگر) داری،‌برای استفاده از ماتریکس هم نیاز به یه کارخواه ماتریکس(پیام‌رسان) داری. برای اندروید، پیام‌رسان خوب ماتریکسی المنته ( که از اف‌دروید می‌گیریم) و برای گنو، فعلاً‌ بهترین چیزی که تو ذهنمه، تاندربرده که توی اوبونتو از پیش نصبه!

خب همینو میخواستم دیگه، یه چیزی برای دانلود. اولش گفتید دانلود ماتریکس معنی نداره ولی بعدش اپ معرفی کردید. در ضمن تاندربرد مربوط به شرکت موزیلا هست و برای مدیریت ایمیله، من یه چیزی مثل تلگرام یا واتس اپ میخوام، یه نوع پیام رسان همه کاره شخصی که روی اوبونتو استفاده کنم.

*******

Folders and files

Name
Latest commitXaqronCOTURN beta added1fa2866 · 6 years agoHistory5 Commits
resourcesCOTURN beta added6 years ago
LICENSEInitial commit6 years ago
README.mdCOTURN beta added6 years ago

Repository files navigation

سیناپس

راه اندازی سرور سیناپس برای پیام رسان ماتریکس

دستورالعمل راه اندازی سرور سیناپس برای پیامرسان های مبتنی بر پروتکل ماتریکس


اگر قصد راه اندازی سرور سیناپس را ندارید و صرفا به دنبال پیامرسانی امن با امکانات بالا می گردید توصیه می شود رایوت را نصب کنید و ادامه ی این آموزش برای شما مناسب نمی باشد. استفاده از این آموزش مستلزم دانش متوسط از سرورهای لینوکس و تنظیمات مرتبط با دامنه می باشد.


پیامرسانهای متنوعی بر اساس پروتکل ماتریکس ساخته شده اند که لیستی از آنها را در اینجا می توانید مشاهده کنید. این پروتکل بر اساس بلاک چین بوده و پیامرسانهای مبتنی بر آن غیرمتمرکز می باشند. بدین معنی که تعدادی کاربر به یک سرور متصل می شوند و قادر به تبادل پیام خواهند بود. در صورتی که این سرور به سرور های دیگری متصل باشد امکان ارتباط بین کاربران آنها فراهم خواهد شد.

اکثر سرویسهای امروزی به صورت متمرکز طراحی شده اند یعنی کنترل تمامی سیستم در اختیار شخصیتی حقوقی قرار دارد. نظیر پیامرسان تلگرام، سرویس توییتر و یا فیسبوک. در شکل زیر در سمت چپ مدل متمرکز و در سمت راست مدل نیمه متمرکز را ملاحظه می فرمایید. پیامرسانهای مبتنی بر پروتکل ماتریکس مطابق مدل سمت راست می باشند. دقت کنید تفاوت این نوع از طراحی در عدم کنترل یک شخصیت حقوقی واحد بر مجموعه ها می باشد و نه صرفا آرایش فیزیکی زیرا در عمل سرویسهای متمرکز هم با استفاده از CDN ها بار را توزیع می نمایند.

هدف از این آموزش راه اندازی یکی از سرورهای سمت راست نظیر دایره ی قرمز (دایره ی وسط) در بخش نیمه متمرکز» می باشد. بدین صورت شما و دوستانتان قادر خواهید بود با ارتباطی امن به تبادل پیام بپردازید. در صورتی که سرور خود را به سایر سرورهای مبتنی بر پروتکل ماتریکس متصل نمایید امکان ارتباط بین کاربران شما و کاربران آن سرورها به وجود خواهد آمد.

مزیت این مدل ارتباطی این است که حتی بر روی اینترنت ملی نیز پیامرسان شما قادر به ارائه سرویس خواهد بود ضمن اینکه همیشه اطلاعات شما در اختیار خودتان خواهد بود. شما کماکان قادر به استفاده از انواع پیامرسان های سازگار با پروتکل ماتریکس نظیر رایوت خواهید بود با این تفاوت که به جای سرور پیش فرض می توانید به سرور خود متصل شوید. نظیر شکل زیر:

سرور اختصاصی

دستورالعمل راه اندازی سرور سیناپس

– توجه: در تمامی مراحل این آموزش example.com باید با دامنه خود شما جایگزین گردد.

این دستورالعمل برای سرورهای مبتنی بر دبیان (debian) می باشد هر چند برای سایر سرورهای لینوکسی هم کمابیش قابل استفاده می باشد.

ابتدا از آپدیت بودن سرور اطمینان حاصل نمایید:

$ sudo apt update

$ sudo apt full-upgrade -y

$ sudo apt autoremove

$ sudo apt autoclean

nginx را نصب نمایید:

$ sudo apt install nginx -y

مخزن سیناپس و کلید آنرا اضافه کنید:$ sudo add-apt-repository https://matrix.org/packages/debian/

$ wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -

سیستم عامل را آپدیت و سیناپس را نصب نمایید:

$ sudo apt-get update

$ sudo apt-get install matrix-synapse

در هنگام نصب تصویری نظیر شکل زیر خواهید دید که از شما نام دامنه مورد نظرتان را خواهد پرسید و اینکه آیا مایل به ارسال آمار سرور خود به صورت ناشناس به سایت سیناپس هستید یا خیر. اگر دامنه ی شما example.com می باشد نظیر تصویر زیر در پنجره ی مربوطه آنرا وارد کنید (یا هر دامنه ی دیگر)

ثبت دامنه

توجه داشته باشید که شما باید پیش از این یک رکورد دی ان اس منطبق با آی پی سرور خود و دامنه تان در دی ان اس سرور تان ثبت کرده باشید.

DNS: A Record for example.com => x.x.x.x

مثلا x.x.x.x می تواند 87.22.131.95 باشد که آدرس سرور شماست. اگر دامنه ی شما بر روی سی پانل تنظیم شده است می توانید با simple zone editor اقدام به ثبت یک A Record‌ برای آی پی سرور خود نمایید.

سیناپس را برای شروع در هر بار روشن شدن سرور فعال نمایید:

$ sudo systemctl enable matrix-synapse

$ sudo systemctl start matrix-synapse

از آنجا که به پسوردی رندم نیاز داریم برنامه ی pwgen را نصب و با دستور زیر پسورد مربوطه را تولید و در گوشه ای یادداشت نمایید:

$ sudo apt install pwgen

$ pwgen -1aB 32 1

نوبت به تغییر تنظیمات سیناپس رسیده است. قبل از این کار یک پشتیبان از فایل مربوطه تهیه نمایید تا در صورت وقوع هر مشکلی بتوانید از ابتدا شروع کنید:

$ sudo cp /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.bak

حالا با ادیتور متنی دلخواه خود اقدام به ویرایش فایل تنظیمات نمایید:

$ sudo nano /etc/matrix-synapse/homeserver.yaml

رمز تولید شده در مرحله ی قبل را داخل گیومه جایگزین عبارت randomly_generated_string نمایید و علامت # را از ابتدای خط حذف نمایید. شبیه به خط زیر:

registration_shared_secret: "Pheinahkahgaibo7aaH4EingozaduuTh"

کلیدهای CTRL+X و سپس y‌ را فشار دهید تا فایل ذخیره گردد و از ویرایشگر فایل خارج شوید. سپس سیناپس را مجددا با دستور زیر راه اندازی نمایید:

$ sudo systemctl restart matrix-synapse

یک کاربر جدید به سیناپس اضافه نمایید. لزومی ندارد این کاربر دسترسی روت داشته باشه پس با دستور زیر فقط برای آن نام کاربری و کلمه ی عبور انتخاب نمایید:

$ register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448

تنظیمات وب سرور

برای ارسال درخواستها به سیناپس از nginx به عنوان reverse proxy استفاده می کنیم. یعنی وب سرور nginx درخواستها را دریافت کرده، به سیناپس ارسال می کند و پاسخ آنرا برای کاربر ارسال می نماید. برای تنظیم وب سرور فایلی با نام دامنه ی خود در مسیر زیر می سازیم:

$ sudo nano /etc/nginx/sites-available/example.com

و محتویات زیر را در آن قرار می دهیم. دقت کنید به جای example.com‌ باید نام دامنه ی خود را قرار دهید:

server { listen 80; listen [::]:80;

root /var/www/html; index index.html index.htm index.nginx-debian.html;

server_name example.com www.example.com;

location /_matrix { proxy_pass http://localhost:8008; } location ~ /.well-known { allow all; } }

سافت لینک مربوطه را در بخش sites-enabled قرار دهید:

$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

بررسی کنید تا تنظیمات وب سرور خطایی نداشته باشد:

$ sudo nginx -t

راه اندازی مجدد وب سرور:

$ sudo systemctl reload nginx

تنظیمات SSL

قبل از این مرحله حتما باید رکورد DNS مربوط به سروری که بر روی آن کار می کنید را تنظیم کرده باشید تا آدرس سایت شما به سرور فعلی اشاره نماید. برای دریافت گواهی SSL از Let’s Encrypt که رایگان است استفاده می کنیم و آنرا بر روی تمدید خودکار قرار می دهیم.

$ sudo add-apt-repository ppa:certbot/certbot

$ sudo apt-get update

$ sudo apt-get install python-certbot-nginx

تنظیمات مربوط به سایت خود را تغییر دهید:

$ sudo nano /etc/nginx/sites-available/example.com

شبیه به فایل زیر: … root /var/www/html; index index.html index.htm index.nginx-debian.html;

server_name example.com www.example.com;

location /_matrix { proxy_pass http://localhost:8008; }

location ~ /.well-known { allow all; } ...

بررسی کنید تا تنظیمات وب سرور خطایی نداشته باشد:

$ sudo nginx -t

راه اندازی مجدد وب سرور:

$ sudo systemctl reload nginx

درخواست سرتیفیکیت بدهید:

$ sudo certbot --nginx -d example.com -d www.example.com

$ sudo certbot renew --dry-run

برای تمدید خودکار سرتیفیکیت خطوط زیر را به کرون تب اضافه نمایید (گزینه ۲)

$ sudo crontab -e 35 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem

35 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem

36 2 * * 1 sudo systemctl restart matrix-synapse

فایل را ذخیره و از آن خارج شوید. فایل تنظیمات سیناپس را به شکل زیر ویرایش کنید:

$ sudo nano /etc/matrix-synapse/homeserver.yaml ... tls_certificate_path: "/etc/matrix-synapse/fullchain.pem" # PEM encoded private key for TLS tls_private_key_path: "/etc/matrix-synapse/privkey.pem" # PEM dh parameters for ephemeral keys tls_dh_params_path: "/etc/ssl/certs/dhparam.pem" ...

تنظیمات فایروال

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

$ sudo ufw start

اجازه ی دسترسی به سرویسهای مورد نظر را بدهید: $ sudo ufw allow 'Nginx Full' $ sudo ufw delete allow 'Nginx HTTP' $ sudo ufw

allow 8448 $ sudo systemctl restart matrix-synapse

ارتباط با سایر سرورها به صورت امن

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

$ sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem

$ sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

$ sudo reboot

حالا باید قادر باشید همانند شکل زیر به سرور اختصاصی خود متصل شوید:

سرور اختصاصی

برای اضافه کردن لیست سایر سرورهای مورد اعتماد خود در فایل homeserver.yaml به بخش trusted_third_party_id_servers مراجعه کنید.

راه اندازی سرویس TURN/STUN

برای تماس صوتی / تصویری در صورتی که کلاینت پشت NAT‌ قرار داشته باشد به این سرویس نیاز خواهید داشت. در اینجا از COTURN استفاده شده است. برای نصب آن دستور زیر را اجرا نمایید:

$ bash install-coturn.sh yourdomain.com

کلیه تنظیمات مربوط به COTURN و سیناپس به صورت خودکار انجام خواهند شد.

منبع:

https://github.com/Xaqron/synapse

*******

وب سایت اصلی ماتریکس

https://matrix.org/ecosystem/clients