تثبيت Matrix Synapse كنظام محادثات خاص ومعزول

:globe_with_meridians: قبل البدء

ستحتاج إلى:

  • سيرفر VPS من أي مزود (Ubuntu 20.04 أو 22.04)

  • دومين خاص بك (Domain)

  • إمكانية تعديل إعدادات DNS للدومين

  • إنشاء Subdomain مخصص مثل:

    matrix.your-domain.com
    

:gear: إعداد الدومين (DNS)

قبل تثبيت النظام، نقوم بربط الدومين بالسيرفر عبر إعداد DNS:

  • نضيف A Record

  • يشير إلى IP الخاص بالسيرفر

مثال:

  • الاسم: matrix

  • القيمة: YOUR_SERVER_IP

:backhand_index_pointing_right: الناتج يكون:

matrix.your-domain.com → IP السيرفر

:link: الهدف من هذه الخطوة

هذه الإعدادات تسمح لك بـ:

  • الوصول للسيرفر عبر دومين بدل IP

  • تجهيز بيئة آمنة وسهلة الاستخدام

  • ربط خدمة Matrix لاحقًا مع Nginx و SSL


:bullseye: الخلاصة

بعد هذه الخطوات سيكون لديك:

  • سيرفر VPS جاهز

  • دومين مرتبط بالسيرفر

  • Subdomain مخصص لخدمة Matrix

  • بيئة جاهزة لبدء التثبيت الفعلي

شرح تثبيت Matrix Synapse على سيرفر Ubuntu

في هذا الدليل سنتعلم كيفية تثبيت وتشغيل Matrix Synapse (وهو سيرفر المحادثات الخاص بـ Matrix) على سيرفر Ubuntu باستخدام Docker وNginx مع تأمينه باستخدام SSL.

تم تعطيل خاصية الفدرالية في هذا السيرفر، مما يعني أنه يعمل بشكل مستقل تمامًا عن شبكة Matrix العالمية.
لا يمكن تبادل الرسائل أو الاتصال مع أي سيرفر خارجي، وجميع المحادثات تظل داخل السيرفر فقط، مما يوفر بيئة مغلقة وخاصة للاستخدام الداخلي.

:warning: مهم جدًا:
استبدل matrix.3xa.net باسم الدومين الخاص بك، واستبدل الـ IP والإعدادات بما يناسب سيرفرك.

:one: تحديث النظام وتثبيت المتطلبات الأساسية

أول خطوة هي تحديث النظام وتثبيت الأدوات الأساسية:

apt update
apt upgrade -y

apt install -y curl git ufw nginx certbot python3-certbot-nginx

:two: تثبيت Docker

نقوم بتثبيت Docker لتشغيل خدمة Matrix داخل حاويات:

curl -fsSL https://get.docker.com | sh

التحقق من التثبيت:

docker --version

تفعيل خدمة Docker لتعمل تلقائيًا عند تشغيل السيرفر:

systemctl enable docker
systemctl start docker

:three: تجهيز مجلد Matrix

ننشئ مجلد خاص بملفات السيرفر:

mkdir -p /opt/matrix
cd /opt/matrix

:four: إنشاء إعدادات Matrix الأولية

نقوم بتوليد ملف الإعداد الأساسي:

docker run -it --rm \
-v /opt/matrix/data:/data \
-e SYNAPSE_SERVER_NAME=matrix.3xa.net \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:latest generate

:repeat_button: استبدل:

  • matrix.3xa.net → بدومينك الحقيقي

:five: إنشاء ملف Docker Compose

نقوم بإنشاء ملف تشغيل الخدمة:

nano /opt/matrix/docker-compose.yml

ثم نضع بداخله:

services:
  synapse:
    image: matrixdotorg/synapse:latest
    container_name: synapse
    restart: unless-stopped

    volumes:
      - ./data:/data

    ports:
      - "127.0.0.1:8008:8008"

:six: تعديل إعدادات Matrix

نفتح ملف الإعداد:

nano /opt/matrix/data/homeserver.yaml

ونضيف أو نعدل الإعدادات التالية:

enable_registration: false
send_federation: false
max_upload_size: 1G

:locked: شرح سريع:

  • enable_registration: false → منع التسجيل العشوائي

  • send_federation: false → تعطيل الربط مع سيرفرات أخرى

  • max_upload_size → تحديد حجم الملفات


:seven: تشغيل السيرفر

cd /opt/matrix
docker compose up -d

التحقق:

docker ps

:eight: إعداد Nginx كـ Reverse Proxy

ننشئ ملف إعداد الموقع:

nano /etc/nginx/sites-available/matrix.3xa.net

ونضع:

server {
    listen 80;
    server_name matrix.3xa.net;

    location / {
        proxy_pass http://127.0.0.1:8008;

        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
    }
}

:repeat_button: استبدل:

  • matrix.3xa.net بدومينك

:nine: تفعيل الموقع وإعادة تشغيل Nginx

ln -s /etc/nginx/sites-available/matrix.3xa.net /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

:locked_with_key: 1​:zero: تفعيل SSL (HTTPS)

certbot --nginx -d matrix.3xa.net

:fire: 1​:one: إعداد جدار الحماية

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

:bust_in_silhouette: 1​:two: إنشاء حساب مدير (Admin User)

docker exec -it synapse register_new_matrix_user \
-c /data/homeserver.yaml \
http://localhost:8008

عند السؤال:

Make admin [no]?
  • اكتب no لحساب عادي

  • اكتب yes إذا كان هذا الحساب هو حساب الإدارة الرئيسي

وادخل اسم المستخدم وكلمة المرور الخاصة بالحساب

____________________________________________________________________

اخيرا : :speech_balloon: ربط تطبيق Element مع سيرفر Matrix الخاص بك

ما هو تطبيق Element؟

Element هو تطبيق محادثات (Chat App) مبني على بروتوكول Matrix، ويُعتبر الواجهة الأساسية والأشهر للتواصل مع سيرفرات Matrix مثل السيرفر الذي قمنا بإعداده.

بمعنى أبسط:

Element هو التطبيق الذي تستخدمه للدخول إلى سيرفر Matrix وإرسال واستقبال الرسائل.

كيف يعمل؟

  • السيرفر (Matrix Synapse) هو “الخادم”

  • Element هو “التطبيق” الذي تتواصل من خلاله مع هذا الخادم

    :locked_with_key: مميزات Element

    • يدعم المحادثات الفردية والجماعية

    • يدعم التشفير الكامل للرسائل (End-to-End Encryption)

    • يعمل على الويب والجوال والكمبيوتر

    • يمكن ربطه بأي سيرفر Matrix خاص أو عام

    • لا يعتمد على رقم هاتف أو بريد إلكتروني (حسب إعداد السيرفر)

      لماذا نستخدمه مع السيرفر الخاص؟

      في هذا المشروع، نستخدم Element لأنه:

      • يوفر واجهة سهلة للمستخدمين

      • يتصل مباشرة بسيرفر Matrix الذي قمنا بإنشائه

      • يسمح لنا باستخدام النظام بدون الحاجة لأي خدمات خارجية

      • يدعم الخصوصية الكاملة داخل السيرفر الخاص

        فتح تطبيق Element

        بعد ما تعرفنا على أن Element هو تطبيق المحادثة الخاص بـ Matrix، الآن نبدأ باستخدامه للدخول إلى سيرفرنا الخاص.

        يمكنك استخدام Element من أحد الخيارات التالية:

        • :globe_showing_europe_africa: نسخة الويب:
          https://app.element.io/

        • :mobile_phone: تطبيق الجوال: (Android / iOS) من متجر التطبيقات

        • :laptop: تطبيق سطح المكتب: للويندوز / ماك / لينكس


        :gear: الدخول إلى السيرفر الخاص

        عند فتح التطبيق لأول مرة، لا تسجل الدخول مباشرة، بل قم بتغيير السيرفر الافتراضي.

        افتراضيًا Element يستخدم سيرفر جاهز (Matrix.org)، لكن نحن نحتاج ربطه بسيرفرنا الخاص.


        :link: تغيير الدومين الافتراضي

        داخل شاشة تسجيل الدخول:

        1. اضغط على خيار “Change” أو “Edit” بجانب السيرفر

        2. اختر: Custom server / Advanced

        3. في خانة السيرفر أدخل رابط سيرفرك:

        https://matrix.your-domain.com
        

        :repeat_button: استبدل:

        • your-domain.com ➜ بالدومين الخاص بك

        مثال:

        https://matrix.3xa.net
        

        :locked_with_key: المتابعة إلى تسجيل الدخول

        بعد إدخال الدومين الصحيح:

        • اضغط Continue

        • ستظهر صفحة تسجيل الدخول الخاصة بسيرفرك

        • الآن يمكنك تسجيل الدخول بالحساب اللي سويناه ( اسم المستخدم + كلمة السر )

        • أو إنشاء حساب (إذا كان مسموح) لكن في إعدادنا الحالي قمنا بإعلاقه وجعل التسجيل خاص من السرفر عن طريق الامر السابق وهو

        • إنشاء حساب مدير (Admin User)

          docker exec -it synapse register_new_matrix_user \
          -c /data/homeserver.yaml \
          http://localhost:8008
          

وذلك لزيادة الأمان

بالنسبة لـ Element ستجدون في موقعه جميع روابط التحميل لكل الأجهزه ( ابل اندرويد .. الخ ) كذلك نسخة الويب بدون تحميل

نسخة الويب : https://app.element.io/

لباقي الأجهزة

عنده تحميله على الهاتف نختار الدخول اليدوي

نغير السيرفر الإفتراضي الى موقعنا اللي سويناه (https://matrix.3xa.net)

نختار اخر

ثم نضيفة

بعدها نسجل الدخول بالمستخدم اللي سويناه

ثم يفتح معانا

**ملاحظة عشان تضيف مستخدم تتواصل معه لازم تسوي له انشاء من السيرفر ثم تضيفة في البرنامج عندك

الاضافة تكون باسم المستخدم اللي انشأته متبوعا برابط الموقع كذا : @ahmed:matrix.3xa.net
نفس الصورة انا أنشأت مستخدم بإسم mo عشان اضيفة اعمل كذأ**

بعدها اقدر اتواصل معاه

**

element يوجد به خصائص كثيره وممتعه اكتشفها بنفسك**

**لا تنسى إذا سجلت دخول تعمل مفاتح التشفير

**

المصادر: