Matrix はオープンなチャットネットワークです。自分専用の Matrix ホームサーバーを運用すると、メッセージとアカウントは自分のサーバーに保存され、他の Matrix サーバーの人々とも引き続き会話できます。このガイドでは、リファレンスホームサーバーである Synapse を、Docker と PostgreSQL を使い、HTTPS の背後にインストールします。
最初に知っておくこと
- フェデレーション。サーバーが他のサーバーと通信できるため、参加するルームを保存するのに帯域幅とディスクを使います。小規模なプライベートサーバーなら負荷は軽いですが、非常に大規模な公開ルームに参加するとそうはいきません。
- サイズ。小規模なグループには 2 vCPU と 4 GB の RAM が適しています。Matrix サーバーホスティングをご覧ください。
- ドメイン。ドメインが必要です。サーバー名(例:
example.com)はすべてのユーザー ID の一部になり、後から変更できません。
ステップ 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"}}`
}
}
DNS が反映されたら、Matrix Federation Tester でフェデレーションをテストします。
ステップ 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 を最新に保ってください。まずサーバーの堅牢化をお読みください。