OffshoreVps
آموزش‌ها3 اکتبر 20267 دقیقه مطالعهنوشته‌ی تیم OffshoreVps

چگونه یک سرور Matrix (Synapse) را روی VPS میزبانی کنیم

homeserver Matrix خودتان را با Synapse، PostgreSQL و Docker اجرا کنید: پیکربندی، HTTPS، واگذاری federation، کاربران و ثبت‌نام.

Matrix یک شبکه گفتگوی باز است. وقتی هوم‌سرور Matrix خودتان را راه می‌اندازید، پیام‌ها و حساب‌هایتان روی سرور شما می‌مانند و همچنان می‌توانید با افراد روی سرورهای دیگر Matrix صحبت کنید. این راهنما Synapse، هوم‌سرور مرجع، را با Docker و PostgreSQL پشت HTTPS نصب می‌کند.

پنجره‌ی ترمینال روی یک VPS که دستورهای میزبانی سرور Matrix را نشان می‌دهد، با «mkdir -p ~/synapse && cd ~/synapse» شروع می‌شود
نوع دستورهایی که در این راهنما روی سرور خود اجرا می‌کنید.

ابتدا چه چیزهایی را باید بدانید

  • فدراسیون. سرور شما می‌تواند با دیگران صحبت کند، یعنی برای ذخیره اتاق‌هایی که به آن‌ها می‌پیوندید پهنای باند و دیسک مصرف می‌کند. سرورهای خصوصی کوچک سبک هستند. پیوستن به اتاق‌های عمومی بسیار بزرگ چنین نیست.
  • اندازه. 2 vCPU و 4 GB رم برای یک گروه کوچک مناسب است. میزبانی سرور Matrix را ببینید.
  • دامنه. به یک دامنه نیاز دارید. نام سرور (برای مثال example.com) بخشی از هر شناسه کاربری است و بعداً قابل تغییر نیست.

مرحله ۱: ساخت پیکربندی

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

مرحله ۲: تغییر به 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
گام‌های این راهنما به ترتیب: ۱. ابتدا چه چیزی را باید بدانید؛ ۲. ساخت پیکربندی؛ ۳. رفتن به PostgreSQL؛ ۴. HTTPS و federation؛ ۵. ساخت کاربران و قفل کردن ثبت‌نام؛ ۶. کلاینت‌ها و احتیاط
گام‌های این راهنما به ترتیب.

مرحله ۳: فایل 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

مرحله ۴: 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"}}`
  }
}

پس از فعال شدن DNS، فدراسیون را با Matrix Federation Tester آزمایش کنید.

مرحله ۵: ساخت کاربران و قفل کردن ثبت‌نام

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 را به‌روز نگه دارید. ابتدا مقاوم‌سازی سرور را بخوانید.