ویرگول
ورودثبت نام
پوریا اعلمی فر
پوریا اعلمی فرمهندسی کامپیوتر گرایش شبکه و نرم افزار. برنامه نویس، عاشق لینوکس، شبکه و منابع opensuse
پوریا اعلمی فر
پوریا اعلمی فر
خواندن ۹ دقیقه·۱۵ روز پیش

پروتکل matrix، راحت شدن از تولید «ملی»

Element
Element

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

چاره شما قرص لاغری زیمباوس… نه، نه، نه! ببخشید، اشتباه شد. منظورم اپلیکیشن Element با استفاده از پروتکل Matrix است.

1.پروتکل ماتریکس (Matrix) چیست؟

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

به بیان ساده، درست مانند اینکه می‌توانید از طریق سرویس‌دهنده Gmail به فردی که از Yahoo استفاده می‌کند ایمیل ارسال کنید، با پروتکل ماتریکس نیز می‌توانید در بستر «اینترنت همه چیز» (Internet of Everything) به صورت تحت شبکه ارتباط برقرار کنید؛ چه در پیام‌رسان‌ها، چه در اینترنت اشیا (IoT) و سایر سرویس‌ها.

از ویژگی‌های کلیدی این پروتکل، رمزنگاری سر‌به‌سر یا End-to-End Encryption (E2E) است. این ویژگی باعث می‌شود داده‌ها رمزگذاری شوند و تنها مبدأ و مقصد نهایی به محتوا دسترسی داشته باشند؛ بنابراین داده‌ها به امن‌ترین شکل ممکن رد و بدل می‌شوند. در این سناریو، حتی شرکت‌ها، توسعه‌دهندگان برنامه ها یا سرورهایی که سرویس چت را اجرا می‌کنند، نمی‌توانند محتوای پیام‌های شما را مشاهده کنند.

این پروتکل بر پایه تبادل پیام با فرمت JSON و از طریق RESTful API کار می‌کند و به کاربران این امکان را می‌دهد که کنترل کاملی بر تاریخچه چت‌ها، اطلاعات کاربری و کلیدهای رمزنگاری خود داشته باشند.

2.Matrix اپلیکیشن است یا شبکه؟

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

برای درک بهتر این موضوع، پروتکل HTTP را در نظر بگیرید؛ شما برای وب‌گردی از مرورگرهایی مثل Chrome، Safari یا Firefox استفاده می‌کنید، اما همه این نرم‌افزارها اطلاعات را از طریق بستر شبکه HTTP دریافت و ارسال می‌کنند. ماتریکس نیز دقیقاً نقش همان بستر زیرساختی را بازی می‌کند. بنابراین شما برنامه‌ای به نام «ماتریکس» را روی گوشی خود نصب نمی‌کنید، بلکه یک برنامه کاربردی یا کلاینت (مانند Element) را نصب می‌کنید که وظیفه آن اتصال به شبکه گسترده ماتریکس است.

3.ماتریکس چگونه کار می‌کند؟

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

سرورهایی که از پروتکل matrix استفاده می کنند
سرورهایی که از پروتکل matrix استفاده می کنند

هر سرور در ماتریکس HomeServer نامیده می شود، شما به عنوان Client (در هر مدل شبکه‌ ای‌، هر سخت‌ افزار یا نرم‌ افزاری که درخواست اتصال به سرور Server را داشته باشد یک Client محسوب می‌شود. کلاینت‌ ها کاربرانی هستند که از سرویس‌ دهنده خدمات دریافت می‌کنند) انتخاب می کنید از هر HomeServer که می خواهید استفاده کنید. HomeServer ها می توانند سرور های عمومی مثل سروری که خود ماتریکس راه اندازی کرده است باشد و یا می تواند سرور های شخصی خودتان باشد.

متصل شدن به یک HomeServer
متصل شدن به یک HomeServer

زمانی که شما پیامی ارسال می کنید، پیامتان به HomeServer شما ارسال می شود، HomeServer بعد از دریافت پیام از شما، آن را به کاربران مشترک در آن room ارسال می کند. (در ماتریکس هر نوع چت شخصی و یا گروه را room می نامند)

ارسال پیام با استفاده از پروتکل matrix
ارسال پیام با استفاده از پروتکل matrix

در واقع زمانی که شما پیامی ارسال می کنید، HomeServer پیام را برای کاربران ارسال می کند. این کاربران ممکن است کاربران همان HomeServer و یا کاربران HomeServer های دیگری باشند. پس پیام شما اگر برای کاربران یک HomeServer دیگر باشد، Homeserver شما بعد از دریافت پیامتان، پیام را برای HomeServer های دیگر ارسال خواهد کرد. و آن HomeServer پیام را دریافت و به کاربران مربوطه ارسال خواهد کرد.

دریافت پیام
دریافت پیام

4.آموزش استفاده و راه‌اندازی Matrix

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

  • سمت کاربر (استفاده به عنوان پیام‌رسان)

  • سمت سرور (راه‌اندازی زیرساخت)


1.سمت کاربر (استفاده به عنوان پیام‌رسان)

Element چیست و چه کاربردی دارد؟

برای استفاده از ماتریکس، شما کافیست یکی از کلاینت های آن را نصب و به یک HomeServer متصل شوید. یکی از محبوب ترین کلاینت ها، کلاینت Element است، که شامل نسخه Android، IOS، Windows, Linux، Mac و البته نسخه تحت وب می شود. نگران نباشید استفاده از المنت مانند هر پیامرسان دیگری ساده است. در ضمن شما می توانید از هر کلاینت دیگه ماتریکس مانند X Element، SchildiChat و FluffyChat استفاده کنید.

دانلود اپلیکیشن Element: ا https://wiiz.ir/Element.apk

نکته: ماتریکس کلاینت‌های جداگونه برای اندروید، iOS، لینوکس و ویندوز داره. می‌تونی بدون باز کردن سایت، مستقیم از اپلیکیشن‌ها به سرورها وصل بشی!

قدم اول:  ثبت‌نام تو سایت ماتریکس(چون اینترنت ملیه سرور اصلی باز نمیشه) یا طبرستان یا ویز

مرورگرتون (مثل کروم یا فایرفاکس) را باز کنید و به صفحه ثبت‌نام طبرستان http://im.tabarestangnu.ir یا ویز chat.wiiz.ir بروید، در این قسمت روی دکمه Create Account یا ثبت‌نام بزنید، یه نام کاربری انتخاب کنید(این اسمیه که بقیه تو ماتریکس باهاش می‌شناسنت) یه رمز عبور قوی انتخاب کنید و تمام، حساب شما با موفقیت ساخته شد.

قدم دوم: یه برنامه برای اتصال به ماتریکس انتخاب کنید(مثل Element که بالا بهتون معرفی کردم) و نصب کنید

قدم سوم: ورود به برنامه

برای ورود به حساب کاربری، تو صفحه اول دکمه Sign In یا ورود رو بزنید، در بخش Home Server، دامنه wiiz.ir یا matrix.tabarestangnu.ir رو بنویسید یا انتخاب کنید (بسته به سایتی که ثبت نام کردید)، نام کاربری و رمز عبورتون را وارد کنید و دکمه ورود رو بزنید. اگه همه‌چیز درست باشه، وارد اکانتتون می‌شید!


2.سمت سرور (راه‌اندازی زیرساخت)

همین طور شما می توانید HomeServer خودتان را ایجاد کنید، رایج‌ترین نرم‌افزار برای این کار Synapse (نوشته شده با زبان پایتون) است. برای راه‌اندازی، شما به یک سرور لینوکسی (VPS یا سرور لوکال) نیاز دارید. معمولاً با نصب Docker، ایمیج رسمی Synapse را اجرا کرده و دیتابیس آن را به PostgreSQL متصل می‌کنند. برای مثال در ادامه روش نصب با داکر را بررسی می‌کنیم که در طول آن باید مراحل زیر را طی کنید.

راه‌اندازی Matrix با نصب داکر

مرحله ۱: نصب Docker و Docker Compose

ابتدا به کمک آموزش رسمی نصب داکر در وبسایت آن داکر را بر روی سرور خود نصب کنید. برای این کار می‌توانید از لینک https://docs.docker.com/engine/install استفاده کنید.

جهت تایید نصب صحیح دستور زیر را بزنید:

docker --version

مرحله ۲: ایجاد دایرکتوری

یک پوشه برای Synapse ایجاد کنید و وارد آن شوید:

mkdir -p ~/matrix && cd ~/matrix

مرحله ۳: ساخت فایل Docker Compose

یک فایل به نام docker-compose.yml ایجاد کنید و محتوای زیر را قرار دهید:

services: synapse: image: matrixdotorg/synapse:latest container_name: synapse restart: unless-stopped ports: - "8008:8008" # HTTP - "8448:8448" # Federation (HTTPS) volumes: - ./data:/data environment: - SYNAPSE_SERVER_NAME=your.domain.com - SYNAPSE_REPORT_STATS=yes

نکته: جای your.domain.com، دامنه یا آی‌پی سرورتان را قرار دهید.

مرحله ۴: اجرای Synapse

برای راه‌اندازی سرور:

docker compose up -d

نکته: d- باعث می‌شود کانتینر در پس‌زمینه اجرا شود. داده‌ها در پوشه data ذخیره می‌شوند و با آپدیت کانتینر حفظ می‌شوند.

مرحله ۵: دسترسی و مدیریت

  • API و مدیریت: http://your.domain.com:8008

  • کلاینت رسمی ماتریکس: https://app.element.io

سپس با استفاده از یک Reverse Proxy مانند Nginx، درخواست‌ها به سرور ماتریکس هدایت می‌شوند. پس از این راه‌اندازی فنی، افراد با وارد کردن IP یا دامنه داخلی سرور شما در کلاینت المنت خود، به یک سیستم پیام‌رسان داخلی و مقاوم در برابر قطعی اینترنت متصل می‌شوند.


اصطلاحات رایج در ماتریکس

برای درک بهتر عملکرد و مفاهیم اکوسیستم ماتریکس، آشنایی با اصطلاحات زیر ضروری است:

  • Homeserver (هوم‌سرور): سرور میزبان شما که اطلاعات حساب کاربری، وضعیت فعلی و تاریخچه پیام‌هایتان را ذخیره کرده و به نمایندگی از شما با سایر سرورها در شبکه ارتباط برقرار می‌کند.

  • Client (کلاینت): نرم‌افزارهای رابط کاربری (موبایل، وب یا دسکتاپ) که برای اتصال به هوم‌سرور و چت کردن استفاده می‌شوند.

  • Room (اتاق): محیط پایه‌ای برای تمامی ارتباطات در ماتریکس؛ خواه یک گفتگوی خصوصی دو نفره باشد، خواه یک گروه چند هزار نفره.

  • Event (رویداد): هر اتفاقی که در سیستم می‌افتد (ارسال پیام، تغییر عکس پروفایل، خروج از گروه) یک رویداد محسوب شده و با فرمت JSON در دیتابیس شبکه ثبت می‌گردد.

  • Bridge (پل ارتباطی): ربات‌ها یا نرم‌افزارهای واسطی که سرور ماتریکس شما را به سایر پیام‌رسان‌ها (مانند تلگرام، اسلک، واتس‌اپ) متصل می‌کنند تا بتوانید بدون خروج از ماتریکس با کاربران شبکه‌های دیگر چت کنید.

Federation (فدراسیون): قابلیت تبادل اطلاعات و همگام‌سازی بی‌درنگ میان هوم‌سرورهای مستقل که شبکه غیرمتمرکز ماتریکس را شکل می‌دهد.


5.راهنمای استفاده از ماتریکس

1.چت کردن با دوستانتان

تو ماتریکس، هر کسی یه اسم کاربری داره که فرمتش به این شکل هست: #username:homeserver. مثلاً #stallman:wiiz.ir. برای چت کردن، کافیه اسم کاربری دوستتان را در قسمت سرچ اپلیکیشن پیدا کنید و بهش پیام بدید.  

2.چطور چت خصوصی را شروع کنید؟

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

3.ساختن گروه (اتاق عمومی یا خصوصی)

تو اپلیکیشن Element می‌توانید یه اتاق بسازید و دوستتان را دعوت کنید. این اتاق می‌تونه خصوصی باشه (فقط با دعوت) یا عمومی (همه می‌تونن بیان). فرض کنید می‌خواید یه گروه برای همکلاسی‌هاتون درست کنید. در Element، دکمه New Room رو بزنید، یه اسم بذارید (مثل "کلاس درس") و دوستانتان را دعوت کنید.

4.چطور دوستانتان را دعوت کنید؟

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

5.استفاده از پل‌ها (Bridges)

پل‌ها بهتون اجازه می‌دن از تو ماتریکس با آدم هایی تو برنامه های دیگه (مثل تلگرام) چت کنید. اگه دوستتان تو تلگرام هست، می‌توانید یه پل به تلگرام وصل کنید و از Element بهش پیام بدید.

نکته: در زمان اینترنت داخلی متاسفانه پل‌ها کار نمیکنند. 


جمع‌بندی نهایی

در شرایطی که اینترنت ابزار بازی فیلترچی هاست و با قطعی‌های طولانی‌مدت روبرو هستیم، پلتفرم‌های داخلی مانند ایتا یا بله، اگرچه دسترسی را ممکن می‌سازند اما هزینه آن را به قیمت شنود، نظارت گسترده و فقدان حریم خصوصی از کاربران می‌گیرند، انتخاب پروژه های open source بهترین گزینه موجود می باشد زیرا ما آموختیم که پروتکل ماتریکس (Matrix) پاسخی هوشمندانه به این دوگانه دردناک است:

  1. تداوم ارتباط: با استفاده از معماری فدرال و امکان راه‌اندازی سرورهای داخلی، حتی در صورت قطع کامل اینترنت جهانی، شبکه ارتباطی شما فعال باقی می‌ماند.

  2. حریم خصوصی تضمین‌شده: برخلاف سرویس‌های متمرکز داخلی که داده‌ها در دسترس ناظران است، ماتریکس با رمزنگاری سرتاسری (E2E) تضمین می‌کند که محتوای پیام‌ها فقط بین فرستنده و گیرنده قابل خواندن باشد. هیچ نهاد دولتی، شرکت واسط یا مهاجم سایبری نمی‌تواند بدون کلید شما، به مکالمات دسترسی پیدا کند.

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

قطع اینترنتتولید ملیopen source
۵
۱۳
پوریا اعلمی فر
پوریا اعلمی فر
مهندسی کامپیوتر گرایش شبکه و نرم افزار. برنامه نویس، عاشق لینوکس، شبکه و منابع opensuse
شاید از این پست‌ها خوشتان بیاید