Matrix شبكة دردشة مفتوحة. عندما تشغّل خادم Matrix المنزلي الخاص بك، تبقى رسائلك وحساباتك على خادمك، وما زال بإمكانك التحدث مع أشخاص على خوادم Matrix الأخرى. يثبّت هذا الدليل Synapse، الخادم المنزلي المرجعي، باستخدام Docker وPostgreSQL خلف HTTPS.
ما يجب معرفته أولًا
- الاتحاد (Federation). يمكن لخادمك التحدث مع الخوادم الأخرى، ما يعني أنه يستهلك النطاق الترددي والقرص لتخزين الغرف التي تنضم إليها. الخوادم الخاصة الصغيرة خفيفة. أما الانضمام إلى غرف عامة ضخمة جدًا فليس كذلك.
- الحجم. يناسب 2 vCPU و4 GB من RAM مجموعة صغيرة. راجع استضافة خادم Matrix.
- النطاق. تحتاج إلى نطاق. اسم الخادم (مثل
example.com) جزء من كل معرّف مستخدم ولا يمكن تغييره لاحقًا.
الخطوة 1: إنشاء الإعدادات
mkdir -p ~/synapse && cd ~/synapse
docker run -it --rm -v $(pwd)/data:/data \
-e SYNAPSE_SERVER_NAME=example.com \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:latest generate
الخطوة 2: التحويل إلى PostgreSQL
SQLite هو الخيار الافتراضي، لكن PostgreSQL أفضل لأي استخدام يتجاوز التجربة. عدّل data/homeserver.yaml واستبدل كتلة database:
database:
name: psycopg2
args:
user: synapse
password: CHANGE_ME
database: synapse
host: db
cp_min: 5
cp_max: 10
الخطوة 3: ملف Compose
services:
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: CHANGE_ME
POSTGRES_DB: synapse
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
volumes:
- ./pgdata:/var/lib/postgresql/data
synapse:
image: matrixdotorg/synapse:latest
restart: unless-stopped
depends_on: [db]
ports:
- "127.0.0.1:8008:8008"
volumes:
- ./data:/data
docker compose up -d
docker compose logs -f synapse
الخطوة 4: HTTPS والاتحاد
قدّم Synapse على matrix.example.com وانشر ملف تفويض حتى يبقى اسم خادمك example.com:
matrix.example.com {
reverse_proxy 127.0.0.1:8008
}
example.com {
handle /.well-known/matrix/server {
header Content-Type application/json
respond `{"m.server": "matrix.example.com:443"}`
}
handle /.well-known/matrix/client {
header Content-Type application/json
header Access-Control-Allow-Origin *
respond `{"m.homeserver": {"base_url": "https://matrix.example.com"}}`
}
}
اختبر الاتحاد باستخدام Matrix Federation Tester بعد تفعيل DNS.
الخطوة 5: إنشاء المستخدمين وقفل التسجيل
docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
أبقِ enable_registration مضبوطًا على false في homeserver.yaml ما لم ترد تسجيلًا مفتوحًا.
العملاء والعناية
استخدم Element أو أي عميل Matrix وسجّل الدخول باسم خادمك. انسخ مجلد data وبيانات Postgres احتياطيًا، وأبقِ Synapse محدّثًا. اقرأ تأمين الخادم أولًا.