Raspberry Pi 4 に Conduit を使用して Matrix サーバーをセットアップする方法

Raspberry Pi 4 は、家庭、プライベートグループ、または研究室向けの実用的な小型 Matrix ホームサーバーを構築できます。Conduit は軽量ハードウェアを念頭に置いて設計されています。Matrix は分散型通信のためのオープンプロトコルです。ユーザーはホームサーバーに接続し、ホームサーバーはユーザーのアカウントとルームデータを保存します。フェデレーションにより、そのホームサーバーは他の Matrix サーバーとイベントを交換できます。

このガイドでは、Docker 内の Conduit を使用し、HTTPS 用に NGINX を前面に配置します。これにより、Matrix サービスは Pi 上で隔離され、公開 Web ポートのみが公開されます。手順は、2026 年 10 月時点で入手可能な Conduit、Matrix、Raspberry Pi、Docker、および NGINX のドキュメントに基づいて確認されています。重要な制限事項が 1 つあります。Conduit はまだベータ版であるため、Matrix の一部の機能や古いルーム バージョンが、成熟した Synapse デプロイメントとまったく同じように動作しない可能性があることを許容できるユーザーに最適です。重要なサービスに使用する前に、公式の Conduit プロジェクトを確認してください。

机の上に置かれたRaspberry Pi 4シングルボードコンピュータ
信頼性の高いストレージ、電源、ネットワーク環境と組み合わせれば、Raspberry Pi 4は小型のConduit Matrixホームサーバーをホストするのに十分な性能を備えている。

1. インストールする前にセットアップ方法を理解してください

最終的な処理経路は単純明快です。ElementなどのMatrixクライアントがに接続しhttps://matrix.example.com、NGINXがTLSを終端してリクエストをPi上のConduitに転送します。Conduitはデータベースを永続的なDockerストレージに保存します。フェデレーションが有効になっている場合、他のホームサーバーも同じパブリックHTTPSエンドポイントにアクセスできます。

Raspberry Pi 4、安定した電源、microSDカードまたはSSD、そして64ビットオペレーティングシステムが必要です。Matrixはデータベースとメディアデータを継続的に書き込むため、長期間使用する予定のサーバーにはSSDが推奨されます。サーバーをインターネットからアクセス可能にする必要がある場合は、ドメイン名も必要になります。

2026年9月15日現在、最新のRaspberry Pi OS 64ビット版はDebian 13「Trixie」をベースとしており、Raspberry Pi 4向けにはRaspberry Pi OS Liteが利用可能です。詳細は公式のRaspberry Pi OSダウンロードページをご覧ください。このサーバーには、不要なデスクトップ環境を排除したLite版が最適です。

Matrixサーバー名は慎重に選択してください。

このガイドでは、サーバー名は ですmatrix.example.com。結果として生成される Matrix ユーザー ID は のようになります@alice:matrix.example.com。この名前は長期的な ID として扱ってください。Matrix ID とフェデレーション参照にはサーバー名が含まれるため、後で変更しても、単に Web ホストの名前を変更するのと同等にはなりません。

2. Raspberry Pi OSをインストールし、Piをアップデートします。

Raspberry Pi Imagerを使用して、Raspberry Pi OS Lite 64ビット版をカードまたはSSDに書き込みます。ヘッドレスインストールを行う場合は、イメージング中にSSHを有効にし、Piを起動します。64ビットARMシステムであることを確認してください。

uname -m
cat /etc/os-release

uname -m通常は報告されるはずですaarch64。その後、最新のアップデートをインストールしてください。

sudo apt update
sudo apt full-upgrade -y
sudo reboot
Raspberry Piのターミナルにapt update、apt upgrade、およびrebootコマンドが表示されている。
DockerとConduitをインストールする前に、Raspberry PiのOSをアップデートしてください。そうすることで、サーバーは最新のシステムパッケージから起動します。

3. Docker EngineとComposeをインストールする

Dockerのドキュメントによると、64ビット版Raspberry Pi OSのユーザーは、古い32ビット版Raspberry Pi OSのパスではなく、サポートされているDebian ARM64パッケージを使用する必要があるとのことです。正式な手順は、Docker Engine for Debianのページに記載されています。以下のリポジトリ設定は、この方法に従っています。

sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg   -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io   docker-buildx-plugin docker-compose-plugin

sudo docker run --rm hello-world

最後のコマンドでDockerのhello-world確認メッセージが表示されれば、コンテナランタイムは正常に動作しています。sudo dockerこのガイドの残りの部分もそのまま使用できます。アカウントをdockerグループに追加するのは任意ですが、Dockerグループのメンバーになると、実質的にホストのrootレベルの制御権限が付与されることを覚えておいてください。

4. コンジット構成を作成する

ConduitはTOMLファイルまたは環境変数で設定できます。公式のConduit設定リファレンスserver_nameでは、、、database_backendおよびがdatabase_path必須フィールドとして挙げられており、RocksDBが推奨されています。

作業ディレクトリを作成します。

sudo mkdir -p /opt/conduit
sudo chown "$USER":"$USER" /opt/conduit
cd /opt/conduit
nano conduit.toml

この初期設定を使用し、ホスト名と登録トークンを置き換えてください。

[global]
server_name = "matrix.example.com"
database_backend = "rocksdb"
database_path = "/var/lib/matrix-conduit/"
address = "0.0.0.0"
port = 6167

allow_registration = true
registration_token = "replace-with-a-long-random-secret"
allow_federation = true
trusted_servers = ["matrix.org"]

なぜ0.0.0.0ここなのか?コンテナ内では、Conduitはコンテナのインターフェースでリッスンする必要があり、Dockerがそれにアクセスできるようになっているためです。ホスト側のポートは引き続きのみにバインドされる127.0.0.1ため、ポート6167はインターネットに直接公開されません。

NanoエディタにConduitサーバー名、RocksDBパス、ポート、登録情報、およびフェデレーション設定を表示
最小限のConduit構成では、MatrixサーバーのID、RocksDBストレージ、ローカルサービスポート、登録およびフェデレーションの動作が定義されます。

5. Docker ComposeでConduitを実行する

作成する/opt/conduit/docker-compose.yml:

services:
  conduit:
    image: registry.gitlab.com/famedly/conduit/matrix-conduit:latest
    container_name: matrix-conduit
    restart: unless-stopped
    ports:
      - "127.0.0.1:6167:6167"
    volumes:
      - ./conduit.toml:/etc/conduit.toml:ro
      - conduit-data:/var/lib/matrix-conduit/
    environment:
      CONDUIT_CONFIG: /etc/conduit.toml

volumes:
  conduit-data:

安定版のGitLab Registryイメージは、公式のConduit Dockerドキュメントで推奨されているイメージです。無作為に選んだチュートリアルから古いイメージタグをコピーすることは避け、公式レジストリを使用し、アップグレード前にリリースノートを確認してください。

Conduit Matrixサーバー用のDocker Composeサービスを表示するエディタ
Docker Composeは、Conduitコンテナの定義、永続ストレージ、およびネットワークを、再現可能な単一のファイルにまとめています。

サービスを開始して、その状態を確認してください。

cd /opt/conduit
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps
sudo docker compose logs --tail=100 conduit

コンテナがUp繰り返し再起動ループに陥ることなく、実行状態または待機状態を維持するようにしたい場合、NGINX を設定する前にローカル API を確認してください。

curl http://127.0.0.1:6167/_matrix/client/versions
Conduitコンテナが実行されている状態で、docker compose upとdocker compose psのコマンドがターミナルに表示されている。
実行中のConduitコンテナは起動状態を維持し、内部ポートをRaspberry Piのループバックインターフェースにのみ公開する必要があります。

6. DNSをRaspberry Piに向け、NGINXをConduitの前に配置します。

パブリック IPv4 アドレスを指すAレコードを作成してください。レコードを公開する場合は、IPv6 が実際に Raspberry Pi に到達することを確認してください。IPv6 レコードが破損していると、IPv4 が正常に動作していてもクライアントが接続できなくなる可能性があります。matrix.example.comAAAA

一般的な家庭用ルーターでは、TCPポート80と443をRaspberry Piに転送してください。ISPがキャリアグレードNAT(CGNAT)を使用している場合、通常の受信ポート転送は機能しない可能性があります。その場合は、パブリックIPアドレス、VPS/リバーストンネル構成、または別のホスティング構成が必要になります。

NGINXをインストールする:

sudo apt install -y nginx

作成する/etc/nginx/sites-available/matrix:

server {
    listen 80;
    server_name matrix.example.com;

    client_max_body_size 20M;

    location / {
        proxy_pass http://127.0.0.1:6167;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

NGINXの公式リバースプロキシガイド文書proxy_passと、ここで使用されている転送ヘッダー。

sudo ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/matrix
sudo nginx -t
sudo systemctl reload nginx
NGINXの設定例(HTTPSプロキシとMatrixの既知のエンドポイントを表示)
NGINXは外部に公開されるレイヤーであり、HTTPSを終端し、MatrixからのリクエストをConduitに転送します。Matrixの既知のエンドポイントは、Conduitにプロキシすることも、明示的に提供することもできます。

7. HTTPSとMatrix検出を有効にする

Matrixを通常の公開展開するには、有効なHTTPS接続が必要です。DNSがRaspberry Piに解決され、ポート80にアクセス可能になった後にのみ、証明書を取得してください。Debian TrixieにはCertbotパッケージが用意されており、Certbotプロジェクトはcertbot.eff.orgで最新のプラットフォーム固有の手順も公開しています。

Debian/NGINXでよく使われるルートは次のとおりです。

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d matrix.example.com

CertbotがNGINX仮想ホストを更新した後、再度設定をテストしてください。

sudo nginx -t
sudo systemctl reload nginx

このガイドでは、Matrixサーバー名とパブリックエンドポイントに同じホスト名を使用しているため、Conduitは/.well-knownリバースプロキシ経由でMatrix検出パスに応答できます。Matrix仕様では、クライアントや他のサーバーが正しいホームサーバーのURLを検出できるように、これらのエンドポイントを定義しています。Matrixクライアント/サーバー仕様を参照してください。

8. 最初のアカウントを作成し、サーバーを検証します。

ConduitのDockerドキュメントによると、新しいホームサーバーで最初に作成されたアカウントが管理者になります。登録トークンをサポートするMatrixクライアントを開き、カスタムホームサーバーを選択して、以下を入力してください。

https://matrix.example.com

トークンを使用して最初のアカウントを登録してくださいconduit.toml。これは、サービス開始後すぐに行ってください。それ以降の登録を希望しない場合は、設定を編集してallow_registration = falseコンテナを再起動してください。

cd /opt/conduit
sudo docker compose restart conduit
アカウント作成、サインイン、サーバー変更のオプションを備えた要素サインインページ
ElementなどのMatrixクライアントでは、登録またはサインインする前に、デフォルトの公開サーバーではなく、カスタムホームサーバーのURLを選択してください。

次に、ドメインにアクセスできる任意のマシンから、次の3つのチェックを実行します。

curl https://matrix.example.com/_matrix/client/versions

curl https://matrix.example.com/.well-known/matrix/client

curl https://matrix.example.com/.well-known/matrix/server

最初の要求では、サポートされているMatrixクライアントAPIのバージョンを記述したJSONが返されるはずです。既知の要求では、有効なJSON検出情報が返されるはずです。フェデレーションについては、Matrixフェデレーションテスターを使用して、新しいアカウントからフェデレーションルームに参加してみてください。

Matrixクライアントのバージョンと、よく知られているクライアントおよびサーバーの検出エンドポイントを確認するためのcurlチェックを表示するターミナル
Matrix版からのJSON応答が正常であること、および既知のURLは、HTTPSルーティングと検出の最終チェックとして有用です。

Raspberry Pi Matrixサーバーが動作しなくなる一般的な間違い

  • 32ビットOSを不必要に使用する: Raspberry Pi 4の場合は、Raspberry Pi OS 64ビット版と、DockerがサポートするDebian ARM64パッケージを使用してください。
  • Conduitを直接公開する場合:127.0.0.1ホスト上でポート6167をバインドしたままにして、NGINX経由でHTTPSを公開します。
  • 保護なしで登録を有効にする場合:初期設定時には強力な登録トークンを使用し、不要になった場合は登録を無効にしてください。
  • 誤ったDNSを公開する場合: IPv4レコードとIPv6レコードの両方を公開する場合は、両方とも正常に動作するエンドポイントにつながる必要があります。
  • ルーターやファイアウォールのルールを忘れると、正しいコンテナではブロックされた受信TCP 80/443を補うことはできません。
  • メッセージングと音声通話が同じであると仮定すると、マトリックスメッセージングは​​機能するものの、通話は失敗する可能性があります。Conduitのドキュメントによると、音声通信にはCoturnなどのTURNサーバーが必要です。
  • バックアップのスキップ: ConduitのFAQでは、適切なファイルシステムスナップショットを使用しない限り、データベースの通常のファイルシステムコピーを作成する前にConduitを停止することを推奨しています。アップグレードの前に、Dockerボリュームと構成をバックアップしてください。

成功したインストールとはどのようなものか

以下の条件がすべて満たされたら完了です。Conduitコンテナが再起動後も実行状態を維持し、https://matrix.example.com/_matrix/client/versionsJSONを返します。Matrixクライアントがカスタムホームサーバーに登録またはサインインできます。アカウントがルームを作成してメッセージを送信できます。フェデレーションが有効になっている場合、フェデレーションテスターがサーバーにアクセスでき、ユーザーが別のホームサーバー上のアカウントと通信できます。

小規模なRaspberry Pi環境においては、これは管理の終着点ではなく、あくまでもクリーンなベースラインです。空きストレージを監視し、Raspberry Pi OSとDockerのパッチ適用を最新の状態に保ち、データベースのバックアップを取り、追加機能を有効にする前にConduitの公式ドキュメントを必ずお読みください。ConduitはPiクラスのハードウェアにとって軽量で魅力的な選択肢ですが、ベータ版であることは単なる注釈ではなく、運用上の重要な考慮事項となります。

コメントを残す

Zimbraの送信メール遅延を修正:「接続タイムアウト ポート25」

Zimbraの送信メール遅延を修正:「接続タイムアウト ポート25」

ポート25におけるZimbra送信メールの遅延エラーを診断します。キュー、MX DNS、ファイアウォール、プロバイダブロックを確認し、承認済みのSMTPリレーを設定してください。

Raspberry Pi 4 に Conduit を使用して Matrix サーバーをセットアップする方法

Raspberry Pi 4 に Conduit を使用して Matrix サーバーをセットアップする方法

Raspberry Pi 4上に、Conduit、Docker、NGINX、HTTPS、登録制御、フェデレーション、およびチェック機能を備えた軽量なMatrixホームサーバーをセットアップします。

スケーラブルなマルチサーバー構成向けにJitsi Videobridgeを設定する方法

スケーラブルなマルチサーバー構成向けにJitsi Videobridgeを設定する方法

共有の Jitsi Meet 環境に Jitsi Videobridge サーバーを追加し、登録とファイアウォール アクセスを設定し、ブリッジの選択を確認し、Octo が必要となるタイミングを把握します。

Zimbraサーバーに商用SSL証明書をインストールする方法

Zimbraサーバーに商用SSL証明書をインストールする方法

Zimbraに商用SSL証明書を安全にインストールするには、CSRを作成し、CAチェーンを構築し、鍵と証明書を検証し、展開し、サービスを再起動し、HTTPSを確認します。

BigBlueButtonのインターフェースとロゴをカスタマイズする方法

BigBlueButtonのインターフェースとロゴをカスタマイズする方法

BigBlueButtonのデフォルトロゴを変更したり、個々の会議にロゴを追加したり、より広範なインターフェースブランディングにカスタムクライアント構築が必要な場合を理解したりします。

How to Clear Zimbra Audit Logs to Free Up Disk Space Safely

How to Clear Zimbra Audit Logs to Free Up Disk Space Safely

Learn how to identify, archive, compress, and remove old Zimbra audit logs, when to avoid truncating audit.log, and how to verify that disk space and logging recover correctly.

Kopano Dagentの「ストレージサーバーへの接続に失敗しました」エラーを修正する

Kopano Dagentの「ストレージサーバーへの接続に失敗しました」エラーを修正する

Kopano dagentストレージサーバーへの接続障害のトラブルシューティングを行うには、サーバーの状態、server_socket、Unixソケットの権限、リモートリスナー、および制御された配信テストを確認します。

ownCloudのファイルロック「ロックメカニズムタイムアウト」エラーを修正する方法

ownCloudのファイルロック「ロックメカニズムタイムアウト」エラーを修正する方法

トランザクションロックを特定し、ロックストレージをRedisに移動し、クラスタをチェックし、安全に再テストすることで、ownCloudのファイルロックタイムアウトエラーを修正します。

How to Fix Matrix Synapse Running Out of Memory During Sync

How to Fix Matrix Synapse Running Out of Memory During Sync

Troubleshoot Matrix Synapse OOM problems during /sync by checking memory pressure, tuning caches carefully, isolating initial sync, and monitoring workers.

Nextcloudでパフォーマンスへの影響を最小限に抑えつつサーバーサイド暗号化を有効にする方法

Nextcloudでパフォーマンスへの影響を最小限に抑えつつサーバーサイド暗号化を有効にする方法

マスターキーモード、APCu、Redis、またはValkeyによるロック、そしてパフォーマンスへの影響を最小限に抑える段階的な導入により、Nextcloudのサーバー側暗号化を安全に有効化します。