كيفية تثبيت خادم Synapse Matrix باستخدام Docker Compose

مثال توضيحي: تخيل مجموعة صغيرة من المتطوعين ترغب في امتلاك خادم Matrix خاص بها على عنوان IP محدد chat.example.com. هذا إعداد افتراضي، وليس تقريرًا عن خادم تم اختباره. يمكن تطبيق الخطوات نفسها على نطاق حقيقي، ولكن اختر اسم خادم Matrix بعناية: يستخدمه Synapse في معرّفات المستخدمين، ولا يمكن تغييره لاحقًا.

يشرح هذا الدليل كيفية إنشاء خدمة Synapse وقاعدة بيانات PostgreSQL باستخدام Docker Compose. تبدأ صورة Docker الرسمية لـ Synapse بقاعدة بيانات SQLite افتراضيًا، وهو أمر مناسب للتجربة المؤقتة؛ بينما توصي وثائق Docker الخاصة بـ Synapse باستخدام PostgreSQL في بيئات الإنتاج. لذلك، يقوم هذا المثال بإنشاء إعدادات Synapse أولًا، ثم يُغيّر إعدادات قاعدة البيانات إلى PostgreSQL، ثم يُشغّل كلا الحاويتين. الصورة الرسمية هي [اسم الصورة] ghcr.io/element-hq/synapse. تمت مراجعة التعليمات وتفاصيل الصورة مع الوثائق الرسمية الحالية بتاريخ 6 أكتوبر 2026؛ قد تتغير علامات الصورة وإصدارات البرامج المدعومة، لذا يُرجى مراجعة الوثائق المرفقة قبل أي عملية نشر طويلة الأمد.

ما تحتاجه قبل التثبيت

  • خادم لينكس أو أي مضيف آخر يدعم Docker مع تثبيت Docker Engine ومكوّن Docker Compose الإضافي. تأكد من توفر Compose باستخدام الأمر المناسب docker compose version. اتبع تعليمات التثبيت الرسمية من Docker لنظام التشغيل الخاص بك.
  • نطاق أو نطاق فرعي يشير إلى الخادم. في هذا المثال، chat.example.comهو اسم خادم Synapse، لذا ستكون معرّفات المستخدمين المحليين على النحو التالي @alex:chat.example.com: . استبدله بنطاق تتحكم به قبل إنشاء التكوين.
  • يُستخدم خادم وكيل عكسي أو أي طريقة أخرى لإنهاء بروتوكول TLS للاستخدام العام. 8008لا يُعد مُستمع HTTP الافتراضي لـ Synapse على المنفذ نقطة نهاية HTTPS مُتاحة على الإنترنت. يربط مثال Compose هذا ذلك المنفذ بواجهة الاسترجاع الخاصة بالمضيف، بحيث يمكن لخادم وكيل عكسي على نفس الجهاز الوصول إليه.

ليس بالضرورة أن يكون الاسم هو SYNAPSE_SERVER_NAMEعنوان URL لكل اتصال عميل. إذا كنت ترغب في استخدام معرّفات أقصر، مثل " @alex:example.comأثناء خدمة العملاء من" chat.example.com، فإن ذلك يتطلب تحديد نطاق وتكوين اكتشاف مُسبقين. حدد هذا قبل إنشاء الحسابات.

1. أنشئ دليل عمل وكلمة مرور لقاعدة البيانات

على الخادم، أنشئ مجلدًا لمشروع Compose وملفات Synapse الدائمة:

mkdir -p ~/matrix-synapse/data
cd ~/matrix-synapse

أنشئ ملفًا محليًا .envيمكن لـ Docker Compose قراءته. أنشئ كلمة مرور عشوائية طويلة باستخدام مدير كلمات مرور أو مولد كلمات مرور آمن محلي، وضعها بعد POSTGRES_PASSWORD=. استخدم الأحرف والأرقام في هذا المثال لتجنب مشاكل الاقتباس في YAML لاحقًا. لا ترفع هذا الملف إلى مستودع عام، وقيّد صلاحياته.

umask 077
nano .env

يجب أن يحتوي الملف على سطر واحد، على سبيل المثال POSTGRES_PASSWORD=replace-with-a-long-random-value. النص هنا هو نص مؤقت، وليس كلمة مرور قابلة لإعادة الاستخدام. احتفظ بكلمة المرور لاستخدامها في إعدادات قاعدة بيانات Synapse في الخطوة 3.

2. حدد خدمات Synapse و PostgreSQL

أنشئ compose.yamlفي دليل المشروع:

services:
  postgres:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
      POSTGRES_DB: synapse
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U synapse -d synapse"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 20s

  synapse:
    image: ghcr.io/element-hq/synapse:latest
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      SYNAPSE_SERVER_NAME: chat.example.com
      SYNAPSE_REPORT_STATS: "no"
    volumes:
      - ./data:/data
    ports:
      - "127.0.0.1:8008:8008"

volumes:
  postgres_data:

استبدل chat.example.comاسم الخادم النهائي الذي اخترته. يتيح فحص سلامة PostgreSQL لـ Compose الانتظار حتى تُبلغ قاعدة البيانات عن جاهزيتها قبل بدء تشغيل Synapse. ./dataيبقى كل من وحدة تخزين قاعدة البيانات المُسماة والدليل المُثبَّت على المضيف بعد استبدال الحاوية؛ فإزالة الحاويات وحدها لا تمحوهما. تجنّب حذف docker compose down -vوحدة تخزين قاعدة البيانات إلا إذا كنت ترغب في حذفها عمدًا.

يُستخدم هذا المثال :latestلتسهيل عملية السحب الأولى. بالنسبة للخادم المُدار، حدد وسجل علامة إصدار Synapse أو ملخص الصورة، ثم قم بتحديثها من خلال عملية ترقية مُخططة بعد مراجعة ملاحظات الإصدار. لا تفترض أن latestالعلامة القابلة للتغيير ستحتفظ بنفس الإصدار.

3. قم بإنشاء إعدادات Synapse وقم بتوجيهها إلى PostgreSQL

قم بتشغيل الصورة الرسمية مرة واحدة في وضع إنشاء التكوين. ولأن Compose يتم تثبيته ./dataفي هذا الموقع /data، فإن التكوين المُنشأ ومفتاح التوقيع يبقيان على المضيف.

docker compose run --rm synapse generate

يستخدم هذا الأمر اسم الخادم وخيار الإحصائيات المجهولة من بيئة Compose. كما يقوم Synapse بإنشاء مفتاح توقيع؛ احتفظ به مع دليل البيانات وقم بتضمينه في النسخ الاحتياطية المحمية. لا تقم بإعادة إنشائه أو حذفه أثناء تحديث الحاوية العادي.

افتح القسم data/homeserver.yamlالمُنشأ واستبدله database:بالإعدادات التالية. استخدم كلمة المرور الأصلية بدلاً .envمن الكلمة الافتراضية:

database:
  name: psycopg2
  args:
    user: synapse
    password: 'replace-with-the-same-random-value'
    dbname: synapse
    host: postgres
    port: 5432
    cp_min: 5
    cp_max: 10

حافظ على مسافة بادئة ملف YAML المحيطة، وتأكد من وجود database:قسم نشط واحد فقط. اسم المضيف postgresهو اسم خدمة Compose، والذي يمكن للحاويات حله على شبكتها الافتراضية المشتركة. يستخدم التكوين اسم محرك PostgreSQL الموثق من Synapse، psycopg2وأسماء وسيطات قاعدة البيانات بما في ذلك dbname.

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

4. ابدأ تشغيل Synapse باستخدام Docker Compose

ابدأ تشغيل المكدس في الخلفية:

docker compose up -d

تحقق من حالة الخدمة واقرأ سجلات بدء التشغيل:

docker compose ps
docker compose logs --tail=100 synapse

انتظر حتى يُكمل Synapse إعداد قاعدة البيانات عند بدء التشغيل لأول مرة. تشغيل الحاوية يعني فقط أن العملية نشطة؛ لذا، تفحّص السجلات بحثًا عن أخطاء في التكوين أو قاعدة البيانات أو الأذونات قبل المتابعة. لمراقبة السجلات فور وصولها، استخدم الأمر docker compose logs -f synapseواضغط Ctrl+Cلإيقاف متابعتها دون إيقاف الحاوية.

5. تحقق من واجهة برمجة التطبيقات المحلية وقم بتكوين الوصول العام

من مضيف Docker، اطلب نقطة نهاية إصدارات واجهة برمجة تطبيقات عميل Synapse:

curl -fsS http://127.0.0.1:8008/_matrix/client/versions

تُعدّ الاستجابة الناجحة عبارة عن بيانات JSON تصف إصدارات واجهة برمجة تطبيقات عميل Matrix المدعومة. وهذا يؤكد أن مستمع HTTP يستجيب محليًا؛ ولكنه لا يثبت أن نظام أسماء النطاقات (DNS) أو بروتوكول HTTPS أو الاتحاد مُهيأ بشكل صحيح.

قم بتهيئة خادم الوكيل العكسي للمضيف لإعادة توجيه الطلبات الخاصة بالنطاق المُختار http://127.0.0.1:8008والحصول على شهادة TLS صالحة. احتفظ بمسار طلب Matrix عند استخدام الوكيل. ثم تحقق من نقطة النهاية العامة.

curl -fsS https://chat.example.com/_matrix/client/versions

استبدل اسم المضيف المذكور في المثال باسم مضيفك الحقيقي. إذا احتاج العملاء إلى اكتشاف الخادم الرئيسي من نطاق معرف مستخدم منفصل، فانشر سجلات اكتشاف Matrix المعروفة المناسبة لهذا التصميم. يتطلب الاتحاد أيضًا توجيهًا عامًا صحيحًا ونظام أسماء نطاقات (DNS)؛ ففتح المنفذ المحلي 8008وحده لا يوفر نشرًا عامًا كاملًا. راجع إرشادات Synapse الخاصة بالوكيل العكسي والاتحاد قبل إتاحة الخدمة.

6. أنشئ حساب المسؤول الأول

يُعطّل برنامج Synapse التسجيل العام افتراضيًا. بالنسبة للخوادم الخاصة، احتفظ بهذا الإعداد الافتراضي وأنشئ الحسابات من سطر الأوامر. أضف registration_shared_secretقيمة قوية مؤقتًا إلى data/homeserver.yaml، ثم أعد تشغيل Synapse ليتعرف على التغيير.

docker compose restart synapse

شغّل أداة التسجيل داخل الحاوية. ستطلب منك اسم المستخدم وكلمة المرور؛ سيؤدي هذا الإعداد --adminإلى إنشاء أول مسؤول.

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

بعد إنشاء الحساب، قم بإزالته registration_shared_secretمن الإعدادات وأعد تشغيل Synapse. يُتيح ترك كلمة المرور مُفعّلة لأي شخص يحصل عليها تسجيل حسابات عادية أو حسابات إدارية عبر واجهة التسجيل. سجّل الدخول عبر عميل Matrix يدعم خوادم منزلية مخصصة، باستخدام عنوان URL للخادم الذي يوفره خادم الوكيل العكسي الخاص بك.

النسخ الاحتياطية، والترقيات، والإصلاحات الشائعة

  • احفظ البيانات المهمة احتياطيًا: أوقف أو أنشئ لقطة دورية لبيانات PostgreSQL، واحفظ نسخة احتياطية منها ./data، بما في ذلك الإعدادات والوسائط ومفتاح التوقيع. compose.yamlلا يمكن استعادة الخادم الرئيسي بنسخة احتياطية واحدة فقط. خزّن النسخ الاحتياطية في مكان منفصل عن الخادم، وتأكد دوريًا من إمكانية قراءتها.
  • لا يمكن لبرنامج Synapse الكتابة إلى هذا المجلد /data: تحقق من ملكية المضيف وأذونات الوصول إليه ./data. يحتاج مستخدم وقت تشغيل الصورة الرسمية إلى إذن لقراءة الإعدادات وكتابة البيانات. اضبط ملكية المضيف بعناية بدلاً من جعل المجلد قابلاً للكتابة من قِبل جميع المستخدمين.
  • فشل الاتصال بقاعدة البيانات: تحقق من أن إعدادات قاعدة البيانات تستخدم host: postgres، وأن كلمة المرور مطابقة .env، وأن docker compose logs postgresقاعدة البيانات سليمة. يقلل شرط جاهزية Compose من depends_onحالات التزامن عند بدء التشغيل، ولكنه لا يُصلح بيانات الاعتماد غير الصحيحة.
  • تعمل واجهة برمجة التطبيقات المحلية، لكن لا يمكن للعملاء الاتصال: تحقق من سجل نظام أسماء النطاقات (DNS)، وشهادة TLS، وخادم الوكيل العكسي، وسجلات الاكتشاف لنطاقك المُختار. يُعدّ تعيين منفذ الاسترجاع فقط مقصودًا لخادم وكيل على نفس المضيف؛ أما خادم الوكيل في حاوية أخرى فيحتاج إلى شبكة Docker مشتركة وتصميم توجيه مختلف.
  • الترقية: قم بعمل نسخة احتياطية أولاً، ثم راجع ملاحظات إصدار Synapse، وقم بتحديث علامة الصورة المثبتة، وأعد إنشاء الخدمة باستخدام docker compose pullالأمر التالي docker compose up -d. احتفظ بنفس دليل البيانات، ووحدة تخزين قاعدة البيانات، واسم الخادم، ومفتاح التوقيع.

في نموذج الإعداد التوضيحي لمجموعة المتطوعين، لا يكتمل التثبيت إلا عند استجابة نقطة نهاية الإصدارات المحلية، واستجابة نقطة نهاية HTTPS عبر الخادم الوكيل، وتمكّن المسؤول من تسجيل الدخول باستخدام نطاق معرف المصفوفة المقصود. تُعدّ هذه الفحوصات مؤشرات عملية على نجاح عملية النشر الأولية، لكنها لا تُغني عن مراجعة متطلبات الأمان والنسخ الاحتياطي والاتحاد والتشغيل قبل دعوة مجتمع أوسع.

المراجع الرسمية

اترك تعليقاً

أفضل 10 أدوات مسح Ping للعثور على الأجهزة على شبكتك

أفضل 10 أدوات مسح Ping للعثور على الأجهزة على شبكتك

قارن بين 10 أدوات مسح الشبكة المحلية (Ping) لاكتشاف الشبكات المحلية بسرعة، وإجراء مسح شامل للأنظمة الأساسية المختلفة، وإدارة عناوين IP. تعرّف على ما يمكن أن يكشفه لك المسح وما لا يمكنه كشفه.

أفضل 6 أدوات لإدارة الشبكة لتتبع الأداء

أفضل 6 أدوات لإدارة الشبكة لتتبع الأداء

قارن بين ست أدوات لإدارة الشبكة لمراقبة الأداء، بما في ذلك تغطية SNMP، ورسم الخرائط، والتنبيهات، ونماذج النشر، والمفاضلات المتعلقة بالتكلفة.

أفضل برامج تحليل شبكة الواي فاي لأنظمة ويندوز، وiOS، وأندرويد

أفضل برامج تحليل شبكة الواي فاي لأنظمة ويندوز، وiOS، وأندرويد

قارن بين أفضل برامج تحليل شبكة Wi-Fi لأنظمة Windows و iPhone و Android، بما في ذلك أدوات ازدحام القنوات وتغطية الإشارة والخرائط الحرارية واستكشاف أخطاء الشبكة وإصلاحها.

مراقبة الاتصال: 7 أدوات مجانية ومفتوحة المصدر لمراقبة توافر الشبكة

مراقبة الاتصال: 7 أدوات مجانية ومفتوحة المصدر لمراقبة توافر الشبكة

قارن بين سبعة برامج مراقبة زمن الاستجابة المجانية والمفتوحة المصدر، بدءًا من مجموعات الشبكة الكاملة وحتى مجسات زمن الاستجابة المركزة، واختر البرنامج المناسب من حيث التوافر وفقدان الحزم والسجل.

جودة الخدمة في الشبكات: ما هي جودة الخدمة وكيف تعمل

جودة الخدمة في الشبكات: ما هي جودة الخدمة وكيف تعمل

تعرف على معنى جودة الخدمة في الشبكات، وكيف تحدد علامات DSCP وقوائم انتظار حركة المرور أولويات تطبيقات الصوت والفيديو والأعمال، وما لا تستطيع جودة الخدمة إصلاحه.

أفضل الممارسات لمراقبة الشبكات: ما الذي يجب تتبعه وما هي الأدوات التي يجب استخدامها

أفضل الممارسات لمراقبة الشبكات: ما الذي يجب تتبعه وما هي الأدوات التي يجب استخدامها

قم ببناء نظام مراقبة شبكة عملي مع تغطية واضحة للأجهزة، ومقاييس أداء مفيدة، وتنبيهات قابلة للتنفيذ، ومقارنة بين SolarWinds NPM وPRTG وOpManager.

أفضل برامج خادم SFTP لنقل الملفات بشكل آمن

أفضل برامج خادم SFTP لنقل الملفات بشكل آمن

قارن بين برامج خوادم SFTP الموثوقة لأنظمة ويندوز ولينكس، بما في ذلك OpenSSH وBitvise وSolarWinds وSFTPGo. اعثر على الخيار الأمثل الذي يلبي احتياجاتك الأمنية واحتياجات نقل الملفات.

أفضل 7 أدوات لإدارة عناوين IP لفرق الشبكات

أفضل 7 أدوات لإدارة عناوين IP لفرق الشبكات

قارن بين سبع أدوات لإدارة عناوين IP لاكتشاف الشبكات الفرعية، وتنسيق DNS وDHCP، وجرد الشبكة، وIPAM مفتوح المصدر.

أفضل 10 أدوات لفحص الشبكات لاكتشاف الأجهزة وعناوين IP

أفضل 10 أدوات لفحص الشبكات لاكتشاف الأجهزة وعناوين IP

قارن بين أدوات فحص الشبكة لاكتشاف الأجهزة بسرعة، وعمليات فحص IP عبر الأنظمة الأساسية، وإدارة عناوين IP للمؤسسات، مع إرشادات حول مطابقة كل خيار مع شبكتك.

كيفية استخدام Nmap لتتبع المسار وقراءة مسار الشبكة

كيفية استخدام Nmap لتتبع المسار وقراءة مسار الشبكة

استخدم خيار --traceroute في Nmap لرسم خرائط القفزات إلى مضيف مصرح به، وفهم مخرجات القفزة وRTT، واستكشاف الأخطاء وإصلاحها في الاستجابات المفقودة دون الإفراط في المسح.