دردشة · بدون KYC
استضف Matrix (Synapse) على VPS خارجي
شغّل خادم Matrix الرئيسي (homeserver) الخاص بك على VPS خارجي بدون KYC، واحتفظ بمفاتيح شبكة الدردشة الاتحادية المشفّرة من طرف إلى طرف الخاصة بك وحدك.
ما هو
Synapse هو التطبيق المرجعي لخادم بروتوكول Matrix، وهو بروتوكول مفتوح للدردشة والصوت والفيديو اللامركزية والمشفّرة من طرف إلى طرف في الوقت الفعلي. استضافة Synapse بنفسك تمنحك خادمك الرئيسي (homeserver) الخاص، القادر على الاتحاد (federate) مع شبكة Matrix الأوسع أو البقاء خاصًا بالكامل، مع بقاء كل رسالة وملف وسائط وحساب على عتاد تتحكم فيه أنت.
لماذا تستضيفه خارجيًا
البيانات الوصفية للدردشة (من يتحدّث مع من، ومتى، ومن أين) هي بالضبط نوع البيانات التي تسجّلها المنصات المركزية والولايات القضائية المستضيفة لها ثم تُسلّمها عند الطلب. على VPS خارجي بدون KYC ويُدفع ثمنه بالعملات المشفّرة، يبقى الخادم الرئيسي الذي يحمل رسائل مجتمعك ومفاتيح التشفير غير مسجَّل بأي هوية حقيقية، ويقع ضمن ولاية قضائية صديقة للخصوصية وخارج متناول بلدك الأصلي.
النشر
إعداد مرجعي عملي
انسخ هذا إلى نسخة ChainVPS جديدة. استبدل العناصر النائبة، ثم قم بتشغيله.
# ── One-time setup, run in order on Ubuntu 24.04 (Docker + compose-plugin installed) ──
#
# 1. Generate Synapse's config (replace matrix.example.com with your real domain):
# mkdir -p synapse-data pgdata
# docker run --rm -v "$(pwd)/synapse-data:/data" \
# -e SYNAPSE_SERVER_NAME=matrix.example.com \
# -e SYNAPSE_REPORT_STATS=no \
# ghcr.io/element-hq/synapse:latest generate
#
# 2. In synapse-data/homeserver.yaml, REPLACE the generated sqlite `database:`
# block with the postgres block shown at the bottom of this file, and add
# `x_forwarded: true` under the port-8008 listener (you are behind a proxy).
#
# 3. Bring the stack up: docker compose up -d
#
# 4. Create your admin user:
# docker compose exec synapse register_new_matrix_user \
# -u admin -a -c /data/homeserver.yaml http://localhost:8008
#
# 5. Put a TLS reverse proxy (Caddy/nginx) on 443 -> 127.0.0.1:8008 and serve
# /.well-known/matrix/server + /.well-known/matrix/client for federation.
services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: CHANGE_ME_STRONG_DB_PASSWORD
POSTGRES_DB: synapse
# Synapse REQUIRES the DB to use C locale — this is a hard requirement:
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
volumes:
- ./pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U synapse"]
interval: 10s
timeout: 5s
retries: 5
synapse:
image: ghcr.io/element-hq/synapse:latest
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
SYNAPSE_SERVER_NAME: matrix.example.com
SYNAPSE_REPORT_STATS: "no"
volumes:
- ./synapse-data:/data
ports:
# Client + federation HTTP. Bound to localhost — TLS is terminated by
# your reverse proxy. Never expose 8008 to the internet in the clear.
- "127.0.0.1:8008:8008"
# ── Paste this into synapse-data/homeserver.yaml, replacing the sqlite block ──
# database:
# name: psycopg2
# args:
# user: synapse
# password: CHANGE_ME_STRONG_DB_PASSWORD
# dbname: synapse
# host: db
# port: 5432
# cp_min: 5
# cp_max: 10
جدار الحماية
المنافذ المطلوب فتحها
| المنفذ | البروتوكول | الغرض |
|---|---|---|
| 443 | TCP | بروكسي عكسي HTTPS: واجهة برمجة تطبيقات Element/العميل + تفويض الاتحاد عبر /.well-known (المنفذ الوحيد الذي يجب أن يواجه الإنترنت) |
| 8008 | TCP | مستمع HTTP لعميل واتحاد Synapse — يُربط بـ 127.0.0.1 فقط، وتتم معالجة TLS عبر البروكسي |
| 8448 | TCP | منفذ اتحاد مباشر اختياري؛ لا يلزم إلا إذا لم تستخدم تفويض .well-known (يتطلّب TLS خاصًا به) |
| 5432 | TCP | PostgreSQL — لشبكة Docker الداخلية فقط، لا تنشره أبدًا على المضيف أو الإنترنت |
الحجم الأمثل
الباقة التي تحتاجها
VPS Nano / Small (2 vCPU, 2-4 GB RAM)
خادم شخصي أو عائلي، لأقل من ~10 مستخدمين، مع اتحاد قليل أو معدوم. برنامج Synapse يستهلك ذاكرة كبيرة — 2 GB هو الحد الأدنى الواقعي، و4 GB إذا انضممت إلى أي غرف عامة كبيرة.
VPS Pro (4 vCPU, 8 GB RAM)
مجتمع صغير من عشرات إلى بضع مئات من المستخدمين مع اتحاد نشط. اضبط ذاكرات التخزين المؤقت (caches) في Synapse وقيمة shared_buffers في Postgres؛ يهم نوع تخزين SSD لملفات الوسائط وقاعدة البيانات.
Dedicated (8+ cores, 16-32 GB RAM)
مئات إلى آلاف المستخدمين أو العضوية في غرف اتحادية كبيرة جدًا. قسّم Synapse إلى عمليات عمل (workers) منفصلة (مرسل الاتحاد، المزامنة، الوسائط)، وامنح Postgres ضبطًا خاصًا به؛ النطاق الترددي غير المقيد يبقي حركة الوسائط/الاتحاد بلا سقف.
أفضل المواقع: اختر موقعًا ضمن فئة الخصوصية لخادم الاتصالات: تقدّم سويسرا وآيسلندا ولايات قضائية قوية لحماية البيانات، ما يجعلهما موطنًا طبيعيًا لخادم رئيسي يحمل بيانات وصفية للرسائل ومفاتيح التشفير، بينما تمنح هولندا ولوكسمبورغ مسارات منخفضة زمن الاستجابة وجيدة الربط (peering) نحو أوروبا لدردشة وصوت أكثر سلاسة في الوقت الفعلي. وبما أن Matrix يعمل في الوقت الفعلي، يُفضَّل اختيار منطقة فئة الخصوصية الأقرب إلى مستخدميك الأساسيين؛ ويُعدّ النطاق الترددي غير المقيد والحماية المدمجة من هجمات DDoS أمرًا مهمًا لأن الخادم الرئيسي الاتحادي المواجه للإنترنت يمثّل هدفًا دائمًا.
أحكِم تأمينه
قائمة تحقق التحصين
- عطّل التسجيل المفتوح: اضبط enable_registration: false، أو قيّد التسجيلات خلف registration_requires_token برموز دعوة فردية — فالخادم المفتوح على Matrix يُكتشف ويُغرق بروبوتات البريد العشوائي (spam bots) خلال أيام.
- التحكم في الاتحاد: استخدم تفويض /.well-known/matrix/server لإبقاء server_name نظيفًا (@user:example.com)، وإذا كان الخادم خاصًا فاضبط federation_domain_whitelist (أو عطّل الاتحاد كليًا) لمنع الخوادم غير المعروفة من الوصول إليك.
- أحكم قفل معاينات الروابط والوسائط: يقوم url_preview_enabled بجلب روابط عشوائية من جهة الخادم (خطر SSRF) — أبقِ على url_preview_ip_range_blacklist الافتراضي للنطاقات الخاصة، وحدّد سقفًا لـ max_upload_size، وشغّل عمليات دورية للاحتفاظ بالوسائط وحذفها لأن مساحة تخزين الوسائط تنمو دون حدود.
- شدّد حدود المعدّل (rate limits) خلف البروكسي: اضبط x_forwarded: true على مستمع المنفذ 8008 ليرى Synapse عناوين IP الحقيقية للعملاء، ثم اضبط rc_login وrc_registration وrc_message لتخفيف هجمات القوة الغاشمة (brute-force) وإساءة الاستخدام؛ وتغطي حماية ChainVPS من DDoS الطبقة L3/4 الكامنة تحت ذلك.
- انسخ Postgres ومفتاح التوقيع احتياطيًا: خذ نسخة احتياطية دورية من قاعدة البيانات وانسخ synapse-data/*.signing.key إلى موقع خارجي — فقدان مفتاح التوقيع يعني ضياع هوية خادمك وكل ثقة الاتحاد بشكل نهائي.
- حافظ على التحديث: ثبّت وحدّث بانتظام وسم صورة ghcr.io/element-hq/synapse، وأبقِ report_stats: no، ولا تنشر أبدًا المنفذ 8008 أو 5432 على الإنترنت — يجب ألا يكون قابلاً للوصول سوى المنفذ 443 (واختياريًا 8448).
الأسئلة
الاستضافة Matrix (Synapse) — الأسئلة الشائعة
هل أحتاج إلى نطاق (domain) خاص بي؟
نعم. تُربط معرّفات مستخدمي Matrix والاتحاد بنطاق (مثل @you:example.com). تحتاج إلى نطاق تتحكم في إعدادات DNS الخاصة به لتوجيهه نحو VPS ولخدمة سجلات الاتحاد عبر /.well-known. يمكن تسجيل النطاق عبر مسجِّل يحترم الخصوصية؛ ويبقى الخادم نفسه بدون KYC.
هل يمكنني تشغيل Synapse بخصوصية كاملة، دون أي اتحاد؟
نعم. اضبط federation_domain_whitelist فارغة أو احذف مستمع الاتحاد حتى لا يتواصل خادمك الرئيسي مع شبكة Matrix العامة أبدًا. سيظل مستخدموك يحصلون على دردشة وصوت وفيديو مشفّرة بالكامل من طرف إلى طرف فيما بينهم، بالكامل على خادمك الخارجي.
لماذا PostgreSQL بدلاً من SQLite الافتراضي؟
يأتي Synapse مزوّدًا بـ SQLite للاختبار السريع فقط. فهو لا يتعامل جيدًا مع التزامن أو حمل الاتحاد، ولا يمكن توسيعه باستخدام عمليات عمل (workers). يجب على أي نشر حقيقي استخدام PostgreSQL بإعداد C locale (يقوم ملف compose أعلاه بذلك نيابةً عنك)؛ والترحيل لاحقًا مؤلم، لذا ابدأ مباشرة على Postgres.
كم من ذاكرة RAM يحتاجها Synapse فعليًا؟
أكثر مما يتوقعه الناس. يكفي خادم هادئ لمستخدم واحد نحو ~1.5-2 GB، لكن بمجرد انضمامك إلى غرف اتحادية كبيرة، تتضخم ذاكرات التخزين المؤقت (caches) الخاصة بكل غرفة وتستهلك الذاكرة. خصّص 4 GB لمجتمع صغير واضبط قيمة caches: global_factor بما يتناسب مع ذاكرتك بدلاً من تركها تنمو دون ضبط.
ما هو العميل (client) الذي يجب أن يثبّته مستخدميّ؟
يُعدّ Element (ويب، سطح مكتب، iOS، Android) العميل القياسي لـ Matrix، ويتصل بخادمك الرئيسي بإدخال عنوان URL الخاص به. يتيح سجل /.well-known/matrix/client الذي تخدمه على المنفذ 443 لتطبيق Element اكتشاف خادمك تلقائيًا بالاعتماد فقط على معرّف Matrix الخاص بالمستخدم.
هل تؤثر الاستضافة الخارجية سلبًا على الاتحاد أو جودة المكالمات؟
لا. يعمل الاتحاد عبر HTTPS القياسي بغض النظر عن الموقع، وتحافظ الحماية المدمجة من DDoS على استقرار الخادم المواجه للجمهور. أما بالنسبة للصوت/الفيديو في الوقت الفعلي، فاختر موقع فئة الخصوصية الأقرب إلى مستخدميك لتقليل زمن الاستجابة (latency)؛ إذ تتمتع هولندا ولوكسمبورغ بربط جيد (peering) لحركة المرور الأوروبية.
المزيد للاستضافة الذاتية
حزم أخرى بنقرة واحدة
أطلق فورًا Matrix (Synapse)
خلال الـ60 ثانية القادمة.
نطاق غير محدود · حماية DDoS مشمولة · 21 عملة رقمية · بدون KYC.