全システム正常稼働中 21 対応暗号資産 · Monero歓迎 No-KYCポリシー
ChainVPS

チャット · KYC不要

Matrix (Synapse) をオフショアVPSでホスト

オフショアのKYC不要VPSで自分専用のMatrixホームサーバーを運用し、エンドツーエンド暗号化されたフェデレーション型チャットネットワークの鍵を自ら管理しましょう。

概要

Synapseは、分散型かつエンドツーエンド暗号化されたリアルタイムチャット・音声・ビデオ通話のためのオープンプロトコルであるMatrixの、リファレンスサーバー実装です。Synapseを自前でホストすることで、より広いMatrixネットワークと連携(フェデレーション)することも、完全にプライベートな状態を保つこともできる、自分専用のホームサーバーを持つことができます。すべてのメッセージ、メディアファイル、アカウントは、あなたが管理するハードウェア上に存在します。

オフショアでホストする理由

チャットのメタデータ(誰が誰と、いつ、どこから会話したか)は、中央集権型プラットフォームやそのホスティング先の法域がまさにログとして記録し、開示してしまう類のデータです。暗号資産で支払うKYC不要のオフショアVPS上であれば、コミュニティのメッセージと暗号鍵を保持するホームサーバーは実在の身元とは一切紐づかず、あなたの居住国の及ばないプライバシーに配慮した法域に置かれます。

デプロイ

実際に動作するリファレンス構成

これを新しいChainVPSインスタンスにコピーしてください。プレースホルダーを置き換えてから起動します。

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

ファイアウォール

開放するポート

ポートプロトコル用途
443TCPHTTPSリバースプロキシ: Element/クライアントAPI + /.well-known によるフェデレーション委任(インターネットに公開する必要がある唯一のポート)
8008TCPSynapseのクライアント+フェデレーション用HTTPリスナー — 127.0.0.1のみにバインドし、TLSはプロキシ側で処理
8448TCP任意の直接フェデレーション用ポート。.well-known による委任を使用しない場合のみ必要(独自のTLSが必要)
5432TCPPostgreSQL — Docker内部ネットワーク専用。ホストやインターネットに公開しないこと

適正サイジング

必要なプラン

軽量

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

個人や家族向けのサーバーで、ユーザー数は10人程度以下、フェデレーションはほぼ、または全く行わない構成向け。Synapseはメモリを多く消費するため、現実的な最低ラインは2GB、大規模な公開ルームに参加する場合は4GBが必要です。

中規模

VPS Pro (4 vCPU, 8 GB RAM)

数十人から数百人規模の小さなコミュニティで、フェデレーションが活発な構成向け。Synapseのキャッシュと Postgres の shared_buffers をチューニングしてください。メディアとDBにはSSDストレージが重要です。

大規模

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

数百人から数千人規模のユーザー、または非常に大規模なフェデレーションルームへの参加向け。Synapseをワーカー(federation sender、sync、media)に分割し、Postgresも個別にチューニングしてください。無制限帯域により、メディア/フェデレーションのトラフィックに上限を設ける必要がありません。

最適なロケーション: コミュニケーション用サーバーには、プライバシー重視のロケーションを選びましょう。スイスとアイスランドは強力なデータ保護法域を提供しており、メッセージのメタデータと暗号鍵を保持するホームサーバーの置き場所として自然な選択です。一方、オランダとルクセンブルクは低遅延でヨーロッパへの良好なピアリングルートを提供し、リアルタイムのチャットや音声通話をより快適にします。Matrixはリアルタイム性が重要なため、コアとなるユーザーに最も近いプライバシー重視のリージョンを優先してください。フェデレーション型でインターネットに公開されるホームサーバーは常に狙われる標的となるため、無制限帯域と標準搭載のDDoS対策が重要です。

セキュリティを固める

セキュリティ強化チェックリスト

  • オープン登録を無効化する: enable_registration: false を設定するか、招待ごとのトークンを使って registration_requires_token でサインアップを制限してください — 登録が開放されたMatrixサーバーは数日以内に発見され、スパムボットに殺到されます。
  • フェデレーションの制御: /.well-known/matrix/server による委任を使用して server_name をシンプルに保ち(@user:example.com のように)、サーバーをプライベートにする場合は federation_domain_whitelist を設定する(またはフェデレーションを完全に無効化する)ことで、見知らぬサーバーからのアクセスを防いでください。
  • URLプレビューとメディアを制限する: url_preview_enabled はサーバー側で任意のURLを取得します(SSRFのリスク) — プライベートアドレス範囲用の url_preview_ip_range_blacklist はデフォルトのままにし、max_upload_size に上限を設け、メディアストレージは際限なく増え続けるため、定期的なメディアの保持期間管理・削除(retention/purge)を実行してください。
  • プロキシ配下でレート制限を強化する: Synapseが実際のクライアントIPを認識できるよう、8008番リスナーに x_forwarded: true を設定し、rc_login、rc_registration、rc_message をチューニングしてブルートフォースや悪用を抑えてください。その下層のL3/4レイヤーはChainVPSのDDoS対策でカバーされます。
  • Postgresと署名鍵をバックアップする: 定期的にDBをダンプし、synapse-data/*.signing.key をオフサイトにコピーしてください — 署名鍵を紛失すると、サーバーの身元とすべてのフェデレーション信頼関係が永久に失われます。
  • 常に最新の状態を保つ: ghcr.io/element-hq/synapse のタグを固定しつつ定期的に更新し、report_stats: no を維持し、ポート8008や5432は絶対にインターネットに公開しないでください — 到達可能にすべきなのは443番(および任意で8448番)のみです。

質問

ホスティング Matrix (Synapse) — FAQ

自分のドメインは必要ですか?

はい。MatrixのユーザーIDとフェデレーションはドメインに紐づいています(例: @you:example.com)。VPSを指し示し、/.well-known のフェデレーションレコードを提供するために、自分で管理できるDNSを持つドメインが必要です。ドメイン自体はプライバシーに配慮したレジストラで登録できます。サーバー自体はKYC不要のままです。

Synapseを完全にプライベートな状態で、フェデレーションなしに運用できますか?

はい。federation_domain_whitelist を空にするか、フェデレーション用リスナーを省略することで、ホームサーバーが公開のMatrixネットワークと通信しないようにできます。それでもユーザー同士は、あなたのオフショアサーバー上だけで、エンドツーエンド暗号化されたチャット・音声・ビデオ通話をフルに利用できます。

デフォルトのSQLiteではなくPostgreSQLを使うのはなぜですか?

Synapseは、あくまで簡易的なテスト用途としてSQLiteを同梱しています。SQLiteは同時実行やフェデレーションの負荷に対応できず、ワーカーによるスケールもできません。実運用では必ず、Cロケールで作成したPostgreSQLを使用する必要があります(上記のcomposeファイルがこれを自動で行います)。後からの移行は非常に手間がかかるため、最初からPostgresで始めましょう。

Synapseは実際どれくらいのRAMを必要としますか?

多くの人が想定するよりも多く必要です。利用者が少なく静かな単一ユーザーのサーバーであれば約1.5〜2GBで収まりますが、大規模なフェデレーションルームに参加した途端、ルームごとのキャッシュがメモリを膨れ上がらせます。小さなコミュニティでは4GBを見込んでおき、キャッシュ(caches: global_factor)を野放しに増やすのではなく、搭載RAMに合わせて調整してください。

ユーザーはどのクライアントをインストールすればよいですか?

Element(web、デスクトップ、iOS、Android)が標準的なMatrixクライアントで、URLを入力するだけであなたのホームサーバーに接続できます。443番ポートで提供する /.well-known/matrix/client レコードにより、ユーザーのMatrix IDだけからElementがサーバーを自動検出できます。

オフショアでホスティングすると、フェデレーションや通話品質に悪影響はありますか?

いいえ。フェデレーションはロケーションに関わらず標準的なHTTPS上で機能し、標準搭載のDDoS対策によって公開サーバーは安定した状態を保てます。リアルタイムの音声・ビデオ通話については、レイテンシを最小限に抑えるため、ユーザーに最も近いプライバシー重視のロケーションを選んでください。オランダとルクセンブルクはヨーロッパ向けトラフィックのピアリングが良好です。

今すぐ起動 Matrix (Synapse)
次の60秒以内に。

帯域無制限 · DDoS対策込み · 21種類の暗号資産 · KYC不要。