
Synapse: خادم ماتريكس المنزلي مكتوب بلغة بايثون/تويستيد.
element-hq/synapse <https://github.com/element-hq/synapse>_Synapse هو خادم منازل مفتوح المصدر لـ Matrix <https://matrix.org/>_ تم تطويره من 2019 حتى 2023 كجزء من مؤسسة Matrix.org. مؤسسة Matrix.org غير قادرة على تخصيص موارد لصيانة Synapse ويستمر تطويره بواسطة Element <https://github.com/element-hq/synapse>؛ بالإضافة إلى ذلك، لديك خيار خوادم Matrix الأخرى <https://matrix.org/ecosystem/servers/>.
انظر منشور المدونة مستقبل Synapse وDendrite <https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/>_ لمزيد من المعلومات.
=========================================================================
باختصار، Matrix هو معيار مفتوح للاتصالات على الإنترنت، يدعم التجميع والتشفير والصوت عبر الإنترنت (VoIP). لدى Matrix.org المزيد لتقوله حول أهداف مشروع Matrix <https://matrix.org/docs/guides/introduction>، وتصف المواصفات الرسمية <https://spec.matrix.org/> التفاصيل التقنية.
.. contents::
يشرح توثيق Synapse كيفية تثبيت Synapse <https://matrix-org.github.io/synapse/latest/setup/installation.html>. نوصي باستخدام صور Docker <https://matrix-org.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks> أو حزم Debian من Matrix.org <https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages>_.
.. _federation:
لدى Synapse مجموعة متنوعة من خيارات التكوين <https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html>_ التي يمكن استخدامها لتخصيص سلوكه بعد التثبيت. هناك تفاصيل إضافية حول كيفية تكوين Synapse للتجميع هنا <https://matrix-org.github.io/synapse/latest/federate.html>_.
.. _reverse-proxy:
يوصى بوضع وكيل عكسي مثل
nginx <https://nginx.org/en/docs/http/ngx_http_proxy_module.html>_ أو
Apache <https://httpd.apache.org/docs/current/mod/mod_proxy_http.html>_ أو
Caddy <https://caddyserver.com/docs/quick-starts/reverse-proxy>_ أو
HAProxy <https://www.haproxy.org/>_ أو
relayd <https://man.openbsd.org/relayd.8>_ أمام Synapse. إحدى مزايا ذلك هي أنه يمكنك كشف المنفذ الافتراضي لـ HTTPS (443) لعملاء Matrix دون الحاجة إلى تشغيل Synapse بصلاحيات الجذر. للحصول على معلومات حول تكوين أحدها، راجع توثيق الوكيل العكسي <https://matrix-org.github.io/synapse/latest/reverse_proxy.html>_.
إرشادات ترقية Synapse موجودة في ملاحظات الترقية_. يُرجى مراجعة هذه الإرشادات لأن الترقية قد تتطلب خطوات إضافية لبعض إصدارات Synapse.
.. _ملاحظات الترقية: https://matrix-org.github.io/synapse/develop/upgrade.html
يستخدم Synapse عددًا من تبعيات المنصة مثل Python وPostgreSQL، ويهدف إلى اتباع الإصدارات المدعومة من المنبع. راجع سياسة الإهمال <https://matrix-org.github.io/synapse/latest/deprecation_policy.html>_ لمزيد من التفاصيل.
يخدم Matrix بيانات خام مقدمة من المستخدم في بعض واجهات API - وتحديدًا نقاط نهاية مستودع المحتوى_.
.. _نقاط نهاية مستودع المحتوى: https://matrix.org/docs/spec/client_server/latest.html#get-matrix-media-r0-download-servername-mediaid
بينما نبذل جهدًا معقولًا للتخفيف من هجمات XSS (على سبيل المثال، باستخدام CSP_)، لا ينبغي استضافة خادم منازل Matrix على نطاق يستضيف تطبيقات ويب أخرى. ينطبق هذا بشكل خاص على مشاركة النطاق مع عملاء ويب Matrix والتطبيقات الحساسة الأخرى مثل البريد الإلكتروني على الويب. راجع
https://developer.github.com/changes/2014-04-25-user-content-security لمزيد من المعلومات.
.. _CSP: https://github.com/matrix-org/synapse/pull/1021
من الناحية المثالية، لا ينبغي أن يكون خادم المنازل على نطاق فرعي مختلف فقط، بل على نطاق مسجل_ مختلف تمامًا (يُعرف أيضًا باسم موقع المستوى الأعلى أو eTLD+1). وذلك لأن بعض الهجمات_ لا تزال ممكنة طالما أن التطبيقين يشتركان في نفس النطاق المسجل.
.. _نطاق مسجل: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-2.3
.. _بعض الهجمات: https://en.wikipedia.org/wiki/Session_fixation#Attacks_using_cross-subdomain_cookie
لتوضيح ذلك بمثال، إذا كان تطبيق Element Web الخاص بك أو أي تطبيق ويب حساس آخر مستضافًا على A.example1.com، فيجب من الناحية المثالية استضافة Synapse على example2.com. يتم توفير قدر من الحماية من خلال الاستضافة على B.example1.com بدلاً من ذلك، لذا فهذا مقبول أيضًا في بعض السيناريوهات. ومع ذلك، يجب عدم استضافة Synapse على A.example1.com.
لاحظ أن كل ما سبق يشير حصريًا إلى النطاق المستخدم في إعداد Synapse public_baseurl. على وجه الخصوص، لا علاقة له بالنطاق المذكور في معرفات MXID المستضافة على ذلك الخادم.
اتباع هذه النصيحة يضمن أنه حتى إذا تم العثور على ثغرة XSS في Synapse، فإن التأثير على التطبيقات الأخرى سيكون ضئيلًا.
أسهل طريقة لتجربة تثبيت Synapse الجديد هي الاتصال به من عميل ويب.
ما لم تكن تقوم بتشغيل نسخة اختبارية من Synapse على جهازك المحلي، ستحتاج عمومًا إلى تمكين دعم TLS قبل أن تتمكن من الاتصال بنجاح من عميل: راجع
شهادات TLS <https://matrix-org.github.io/synapse/latest/setup/installation.html#tls-certificates>_.
طريقة سهلة للبدء هي تسجيل الدخول أو التسجيل عبر Element على
https://app.element.io/#/login أو https://app.element.io/#/register على التوالي.
ستحتاج إلى تغيير الخادم الذي تسجل الدخول إليه من matrix.org وتحديد عنوان URL لخادم المنازل مثل https://<server_name>:8448
(أو https://<server_name> فقط إذا كنت تستخدم وكيلًا عكسيًا).
إذا كنت تفضل استخدام عميل آخر، فراجع قائمة العملاء لدينا <https://matrix.org/ecosystem/clients/>_.
إذا سار كل شيء على ما يرام، يجب أن تكون قادرًا على الأقل على تسجيل الدخول وإنشاء غرفة والبدء في إرسال الرسائل.
.. _client-user-reg:
بشكل افتراضي، يتم تعطيل تسجيل المستخدمين الجدد عبر عملاء Matrix. لتمكينه:
في
قسم تكوين التسجيل <https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#registration>_
قم بتعيين enable_registration: true في homeserver.yaml.
ثم إما:
أ. إعداد CAPTCHA <https://matrix-org.github.io/synapse/latest/CAPTCHA_SETUP.html>_، أو
ب. تعيين enable_registration_without_verification: true في homeserver.yaml.
نحن نوصي بشدة باستخدام CAPTCHA، خاصة إذا كان خادم منازلك معرضًا للإنترنت العام. بدونها، يمكن لأي شخص تسجيل حسابات بحرية على خادم منازلك. يمكن استغلال ذلك من قبل المهاجمين لإنشاء روبوتات بريد عشوائي تستهدف باقي اتحاد Matrix.
سيتم تشكيل اسم المستخدم الجديد جزئيًا من server_name، وجزئيًا من جزء محلي تحدده عند إنشاء الحساب. سيتخذ اسمك الشكل التالي::
@localpart:my.domain.name
(يُنطق "at localpart on my dot domain dot name").
كما هو الحال عند تسجيل الدخول، ستحتاج إلى تحديد "خادم مخصص". حدد localpart المطلوب في مربع 'اسم المستخدم'.
يتضمن الأسئلة الشائعة للمسؤولين <https://matrix-org.github.io/synapse/latest/usage/administration/admin_faq.html>_ نصائح للتعامل مع بعض المشكلات الشائعة. لمزيد من التفاصيل، راجع توثيق Synapse الأوسع <https://matrix-org.github.io/synapse/latest/>_.
للحصول على دعم إضافي لتثبيت أو إدارة Synapse، يُرجى السؤال في غرفة الدعم المجتمعي |room|_ (من حساب matrix.org إذا لزم الأمر). نحن لا نستخدم مشكلات GitHub لطلبات الدعم، فقط لتقارير الأخطاء وطلبات الميزات.
.. |room| replace:: #synapse:matrix.org
.. _room: https://matrix.to/#/#synapse:matrix.org
.. |docs| replace:: docs
.. _docs: docs
مهمة خوادم الهوية هي ربط عناوين البريد الإلكتروني ومعرفات الطرف الثالث الأخرى (3PIDs) بمعرفات مستخدمي Matrix، بالإضافة إلى التحقق من ملكية 3PIDs قبل إنشاء هذا الربط.
ليست هي المكان الذي يتم فيه تخزين الحسابات أو بيانات الاعتماد - فهذه موجودة على خوادم المنازل. خوادم الهوية هي فقط لربط معرفات الطرف الثالث بمعرفات Matrix.
هذه العملية حساسة جدًا من ناحية الأمان، حيث يوجد خطر واضح من البريد العشوائي إذا كان من السهل جدًا الاشتراك في حسابات Matrix أو جمع بيانات 3PID. على المدى الطويل، نأمل في إنشاء نظام لا مركزي لإدارته (matrix-doc #712 <https://github.com/matrix-org/matrix-doc/issues/712>)، ولكن في الوقت الحالي، يتم إسناد دور إدارة الهوية الموثوقة في نظام Matrix البيئي إلى مجموعة من الشركاء الموثوقين المعروفين، الذين يديرون 'خوادم هوية Matrix' مثل Sydent <https://github.com/matrix-org/sydent>، ودورهم هو فقط المصادقة وتتبع عمليات تسجيل الدخول باستخدام 3PID ونشر المفاتيح العامة للمستخدمين النهائيين.
يمكنك استضافة نسختك الخاصة من Sydent، ولكن هذا سيمنعك من الوصول إلى مستخدمين آخرين في نظام Matrix البيئي عبر عناوين بريدهم الإلكتروني، ويمنعهم من العثور عليك. لذلك نوصي باستخدام أحد خوادم الهوية المركزية في https://matrix.org أو https://vector.im في الوقت الحالي.
للتأكيد: سيتم استخدام خادم الهوية فقط إذا اخترت ربط عنوان بريد إلكتروني بحسابك، أو إرسال دعوة لمستخدم آخر عبر عنوان بريده الإلكتروني.
نرحب بالمساهمات في Synapse من المجتمع!
أفضل مكان للبدء هو دليل المساهمين <https://matrix-org.github.io/synapse/latest/development/contributing_guide.html>.
هذا جزء من توثيقنا الأكبر <https://matrix-org.github.io/synapse/latest>، والذي يتضمن
معلومات لمطوري Synapse بالإضافة إلى مدراء Synapse. قد يهتم المطورون بشكل خاص بما يلي:
مخطط قاعدة بيانات Synapse <https://matrix-org.github.io/synapse/latest/development/database_schema.html>_،ملاحظات حول تفاصيل تنفيذ Synapse <https://matrix-org.github.io/synapse/latest/development/internal_documentation/index.html>_، وكيفية استخدامنا لـ git <https://matrix-org.github.io/synapse/latest/development/git.html>_.بالإضافة إلى كل ذلك، انضم إلى مجتمع المطورين لدينا على Matrix:
#synapse-dev:matrix.org <https://matrix.to/#/#synapse-dev:matrix.org>_، مع بشر حقيقيين!
.. |support| image:: https://img.shields.io/matrix/synapse:matrix.org?label=support&logo=matrix :alt: (احصل على الدعم على #synapse:matrix.org) :target: https://matrix.to/#/#synapse:matrix.org
.. |development| image:: https://img.shields.io/matrix/synapse-dev:matrix.org?label=development&logo=matrix :alt: (ناقش التطوير على #synapse-dev:matrix.org) :target: https://matrix.to/#/#synapse-dev:matrix.org
.. |documentation| image:: https://img.shields.io/badge/documentation-%E2%9C%93-success :alt: (توثيق معروض على GitHub Pages) :target: https://matrix-org.github.io/synapse/latest/
.. |license| image:: https://img.shields.io/github/license/matrix-org/synapse :alt: (تحقق من الترخيص في ملف LICENSE) :target: LICENSE
.. |pypi| image:: https://img.shields.io/pypi/v/matrix-synapse :alt: (أحدث إصدار تم إصداره على PyPi) :target: https://pypi.org/project/matrix-synapse
.. |python| image:: https://img.shields.io/pypi/pyversions/matrix-synapse :alt: (إصدارات Python المدعومة) :target: https://pypi.org/project/matrix-synapse