チャット · KYC不要
Matrix (Synapse) をオフショアVPSでホスト
オフショアのKYC不要VPSで自分専用のMatrixホームサーバーを運用し、エンドツーエンド暗号化されたフェデレーション型チャットネットワークの鍵を自ら管理しましょう。
概要
Synapseは、分散型かつエンドツーエンド暗号化されたリアルタイムチャット・音声・ビデオ通話のためのオープンプロトコルであるMatrixの、リファレンスサーバー実装です。Synapseを自前でホストすることで、より広いMatrixネットワークと連携(フェデレーション)することも、完全にプライベートな状態を保つこともできる、自分専用のホームサーバーを持つことができます。すべてのメッセージ、メディアファイル、アカウントは、あなたが管理するハードウェア上に存在します。
オフショアでホストする理由
チャットのメタデータ(誰が誰と、いつ、どこから会話したか)は、中央集権型プラットフォームやそのホスティング先の法域がまさにログとして記録し、開示してしまう類のデータです。暗号資産で支払うKYC不要のオフショアVPS上であれば、コミュニティのメッセージと暗号鍵を保持するホームサーバーは実在の身元とは一切紐づかず、あなたの居住国の及ばないプライバシーに配慮した法域に置かれます。
デプロイ
実際に動作するリファレンス構成
これを新しい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/クライアントAPI + /.well-known によるフェデレーション委任(インターネットに公開する必要がある唯一のポート) |
| 8008 | TCP | Synapseのクライアント+フェデレーション用HTTPリスナー — 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はメモリを多く消費するため、現実的な最低ラインは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対策によって公開サーバーは安定した状態を保てます。リアルタイムの音声・ビデオ通話については、レイテンシを最小限に抑えるため、ユーザーに最も近いプライバシー重視のロケーションを選んでください。オランダとルクセンブルクはヨーロッパ向けトラフィックのピアリングが良好です。
セルフホストをもっと見る