OffshoreVps
チュートリアル2026年10月3日読了時間 7 分執筆:OffshoreVps チーム

VPS で Matrix サーバー(Synapse)をホストする方法

Synapse、PostgreSQL、Docker で自分専用の Matrix ホームサーバーを動かす:設定、HTTPS、フェデレーションの委任、ユーザー、登録。

Matrix はオープンなチャットネットワークです。自分専用の Matrix ホームサーバーを運用すると、メッセージとアカウントは自分のサーバーに保存され、他の Matrix サーバーの人々とも引き続き会話できます。このガイドでは、リファレンスホームサーバーである Synapse を、Docker と PostgreSQL を使い、HTTPS の背後にインストールします。

Matrix サーバーをホストするために使うコマンドを、「mkdir -p ~/synapse && cd ~/synapse」から始めて表示している VPS のターミナルウィンドウ
このガイドでサーバー上で実行するコマンドの例。

最初に知っておくこと

  • フェデレーション。サーバーが他のサーバーと通信できるため、参加するルームを保存するのに帯域幅とディスクを使います。小規模なプライベートサーバーなら負荷は軽いですが、非常に大規模な公開ルームに参加するとそうはいきません。
  • サイズ。小規模なグループには 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
このガイドの手順(順番どおり):1. 最初に知っておくこと;2. 設定を生成する;3. PostgreSQL に切り替える;4. HTTPS とフェデレーション;5. ユーザーを作成して登録を制限する;6. クライアントと注意点
このガイドの手順(順番どおり)。

ステップ 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 を最新に保ってください。まずサーバーの堅牢化をお読みください。