Tất cả hệ thống hoạt động bình thường 21 tiền mã hóa được chấp nhận · Hoan nghênh Monero Chính sách không KYC
ChainVPS

Trò chuyện · không KYC

Lưu Trữ Matrix (Synapse) Trên VPS Offshore

Vận hành máy chủ Matrix (homeserver) của riêng bạn trên một VPS offshore, không cần KYC, và nắm giữ chìa khóa cho mạng lưới trò chuyện liên hợp (federated), mã hóa đầu cuối của chính bạn.

Đó là gì

Synapse là bản triển khai máy chủ tham chiếu (reference implementation) của Matrix — một giao thức mở dành cho trò chuyện, thoại và video thời gian thực, phi tập trung và mã hóa đầu cuối. Tự lưu trữ (self-hosting) Synapse mang lại cho bạn một homeserver riêng, có thể liên hợp (federate) với mạng lưới Matrix rộng lớn hơn hoặc hoàn toàn riêng tư, với mọi tin nhắn, tệp media và tài khoản đều nằm trên phần cứng do chính bạn kiểm soát.

Tại sao nên lưu trữ offshore

Metadata trò chuyện (ai nói chuyện với ai, khi nào, và từ đâu) chính xác là loại dữ liệu mà các nền tảng tập trung và cơ quan tài phán nơi đặt máy chủ của họ ghi lại và giao nộp. Trên một VPS offshore, không cần KYC, thanh toán bằng tiền mã hóa, homeserver lưu giữ tin nhắn và khóa mã hóa của cộng đồng bạn không gắn với bất kỳ danh tính thực nào ngoài đời và đặt tại một khu vực pháp lý thân thiện với quyền riêng tư, nằm ngoài tầm với của quốc gia bạn.

Triển khai

Một cấu hình mẫu hoạt động thực tế

Sao chép nội dung này vào một instance ChainVPS mới. Thay thế các placeholder, sau đó khởi chạy.

docker-compose.yml
# ── 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

Tường lửa

Các cổng cần mở

CổngGiao thứcMục đích
443TCPReverse proxy HTTPS: API Element/client + ủy quyền liên hợp /.well-known (cổng duy nhất bắt buộc phải hướng ra internet)
8008TCPListener HTTP client+liên hợp (federation) của Synapse — chỉ bind vào 127.0.0.1, TLS do proxy xử lý
8448TCPCổng liên hợp trực tiếp tùy chọn; chỉ cần thiết nếu bạn KHÔNG sử dụng ủy quyền .well-known (yêu cầu TLS riêng)
5432TCPPostgreSQL — chỉ dùng nội bộ trong mạng Docker, không bao giờ công khai ra host hay internet

Chọn đúng cấu hình

Gói nào bạn cần

Nhẹ

VPS Nano / Small (2 vCPU, 2-4 GB RAM)

Máy chủ cá nhân hoặc gia đình, dưới khoảng 10 người dùng, ít hoặc không liên hợp. Synapse khá "ngốn" RAM — 2 GB là mức sàn thực tế, nên dùng 4 GB nếu bạn tham gia bất kỳ phòng công khai lớn nào.

Trung bình

VPS Pro (4 vCPU, 8 GB RAM)

Cộng đồng nhỏ với vài chục đến hơn một trăm người dùng, có liên hợp hoạt động tích cực. Cần tinh chỉnh cache của Synapse và shared_buffers của Postgres; dung lượng lưu trữ SSD rất quan trọng cho media và cơ sở dữ liệu.

Nặng

Dedicated (8+ cores, 16-32 GB RAM)

Hàng trăm đến hàng nghìn người dùng, hoặc tham gia các phòng liên hợp cực lớn. Tách Synapse thành các worker (federation sender, sync, media) và tinh chỉnh riêng cho Postgres; băng thông không giới hạn giúp lưu lượng media/liên hợp không bị giới hạn.

Vị trí tốt nhất: Hãy chọn một địa điểm thuộc nhóm ưu tiên quyền riêng tư cho máy chủ giao tiếp: Thụy Sĩ và Iceland cung cấp các khu vực pháp lý bảo vệ dữ liệu mạnh mẽ, là nơi lý tưởng cho một homeserver lưu giữ metadata tin nhắn và khóa mã hóa, trong khi Hà Lan và Luxembourg mang lại độ trễ thấp, kết nối peering tốt vào châu Âu, giúp trò chuyện và thoại thời gian thực mượt mà hơn. Vì Matrix hoạt động theo thời gian thực, hãy ưu tiên khu vực riêng tư gần người dùng chính của bạn nhất; băng thông không giới hạn và bảo vệ DDoS đi kèm rất quan trọng vì một homeserver liên hợp, hướng ra internet luôn là mục tiêu bị nhắm tới thường trực.

Khóa chặt bảo mật

Checklist tăng cường bảo mật

  • Vô hiệu hóa đăng ký mở: đặt enable_registration: false, hoặc chặn đăng ký bằng registration_requires_token với token mời riêng cho từng người — một máy chủ Matrix mở sẽ bị phát hiện và tràn ngập bởi bot spam chỉ trong vài ngày.
  • Kiểm soát liên hợp: sử dụng ủy quyền /.well-known/matrix/server để server_name của bạn luôn gọn gàng (@user:example.com), và nếu máy chủ ở chế độ riêng tư, hãy đặt federation_domain_whitelist (hoặc tắt hoàn toàn liên hợp) để ngăn các máy chủ không xác định kết nối tới bạn.
  • Khóa chặt tính năng xem trước URL và media: url_preview_enabled sẽ tải các URL bất kỳ ở phía server (rủi ro SSRF) — giữ nguyên url_preview_ip_range_blacklist mặc định cho các dải IP riêng tư, giới hạn max_upload_size, và chạy dọn dẹp/lưu giữ media định kỳ vì dung lượng lưu trữ media sẽ tăng không giới hạn.
  • Siết chặt giới hạn tần suất (rate limit) phía sau proxy: đặt x_forwarded: true trên listener 8008 để Synapse nhận được IP thực của client, sau đó tinh chỉnh rc_login, rc_registration và rc_message để giảm thiểu brute-force và lạm dụng; bảo vệ DDoS của ChainVPS đã bao phủ lớp L3/4 bên dưới.
  • Sao lưu Postgres và signing key: dump cơ sở dữ liệu định kỳ và sao chép synapse-data/*.signing.key ra ngoài (offsite) — mất signing key đồng nghĩa với việc danh tính máy chủ và toàn bộ độ tin cậy liên hợp của bạn sẽ mất vĩnh viễn.
  • Luôn cập nhật bản vá: ghim (pin) và thường xuyên nâng cấp tag ghcr.io/element-hq/synapse, giữ report_stats: no, và không bao giờ công khai cổng 8008 hoặc 5432 ra internet — chỉ cổng 443 (và tùy chọn 8448) mới được phép truy cập từ bên ngoài.

Câu hỏi

Hosting Matrix (Synapse) — FAQ

Tôi có cần tên miền riêng không?

Có. ID người dùng Matrix và liên hợp đều gắn liền với một tên miền (ví dụ: @you:example.com). Bạn cần một tên miền với DNS do bạn kiểm soát để trỏ về VPS và phục vụ các bản ghi liên hợp /.well-known. Tên miền có thể được đăng ký qua một nhà đăng ký tôn trọng quyền riêng tư; bản thân máy chủ vẫn không cần KYC.

Tôi có thể chạy Synapse hoàn toàn riêng tư, không liên hợp không?

Có. Đặt federation_domain_whitelist rỗng hoặc bỏ qua listener liên hợp để homeserver của bạn không bao giờ giao tiếp với mạng lưới Matrix công khai. Người dùng của bạn vẫn có đầy đủ trò chuyện, thoại và video mã hóa đầu cuối với nhau, hoàn toàn trên máy chủ offshore của bạn.

Tại sao dùng PostgreSQL thay vì SQLite mặc định?

Synapse đi kèm SQLite chỉ để thử nghiệm nhanh. Nó không xử lý tốt tính đồng thời hay tải liên hợp và không thể mở rộng bằng worker. Mọi triển khai thực tế đều phải dùng PostgreSQL được tạo với locale C (file compose ở trên đã làm sẵn việc này cho bạn); di chuyển sau này sẽ rất vất vả, vì vậy hãy bắt đầu với Postgres ngay từ đầu.

Synapse thực sự cần bao nhiêu RAM?

Nhiều hơn mọi người nghĩ. Một máy chủ một người dùng, ít hoạt động, chỉ cần khoảng 1.5-2 GB, nhưng ngay khi bạn tham gia các phòng liên hợp lớn, cache theo từng phòng sẽ khiến RAM phình to nhanh chóng. Nên dự trù 4 GB cho một cộng đồng nhỏ và điều chỉnh cache (caches: global_factor) theo RAM của bạn thay vì để chúng tăng trưởng không kiểm soát.

Người dùng của tôi nên cài đặt ứng dụng client nào?

Element (web, desktop, iOS, Android) là client Matrix tiêu chuẩn và kết nối tới homeserver của bạn bằng cách nhập URL của nó. Bản ghi /.well-known/matrix/client mà bạn phục vụ trên cổng 443 cho phép Element tự động phát hiện máy chủ của bạn chỉ từ ID Matrix của người dùng.

Lưu trữ offshore có ảnh hưởng đến liên hợp hay chất lượng cuộc gọi không?

Không. Liên hợp hoạt động qua HTTPS tiêu chuẩn bất kể vị trí đặt máy chủ, và tính năng bảo vệ DDoS đi kèm giúp máy chủ hướng ra công khai luôn ổn định. Đối với thoại/video thời gian thực, hãy chọn địa điểm thuộc nhóm ưu tiên quyền riêng tư gần người dùng của bạn nhất để giảm thiểu độ trễ; Hà Lan và Luxembourg có kết nối peering tốt cho lưu lượng châu Âu.

Khởi tạo ngay Matrix (Synapse)
trong 60 giây tới.

Băng thông không giới hạn · Đã bao gồm DDoS · 21 loại tiền điện tử · Không KYC.