Matrix
Matrix は、オープンな連携型インスタントメッセージングと VoIP のための野心的な新しいエコシステムです。サーバ、clients、そして IRC のような既存のメッセージングソリューションに接続するための Bridges ソフトウェアから構成されています。
Arch Linux の Matrix チャンネルは #archlinux:archlinux.org に存在します。国際的なコミュニティには独自のマトリックスルームがあります。詳しくは 国際コミュニティ を見て下さい。
https://matrix.org のような既存のサーバーを使うか、後述するあなた自身の Synapse サーバーをホストすることができます。
Matrix クライアントの一覧は アプリケーション一覧#Matrix clients を参照してください。
インストール
サーバーのリファレンス実装である Synapse は matrix-synapse パッケージでインストールできます。パッケージをインストールすると synapse ユーザーが作成されます。
設定
インストールしたら、設定ファイルを作成する必要があります。ファイルは synapse ユーザーから読み込めるように設定してください:
$ cd /var/lib/synapse $ sudo -u synapse python -m synapse.app.homeserver \ --server-name my.domain.name \ --config-path /etc/synapse/homeserver.yaml \ --generate-config \ --report-stats=yes
上記のコマンドで、入力したサーバー名の SSL 鍵と自己署名証明書が生成されます。サーバー名を変更した場合は再生成してください。
なお、同一のドメイン名にて Matrix 以外のサービスを動作させないことと、リバースプロキシを設定することが推奨されます。公式ドキュメント Security Note も参照してください。
サービス
パッケージには synapse.service
という名前の systemd サービスが付属しています。サービスを起動することで synapse ユーザーで synapse サーバーが起動し、/etc/synapse/homeserver.yaml
設定ファイルが使われます。
ユーザー管理
synapse サーバーには最低でもひとりのユーザーが必要です。以下のようにコマンドでユーザーを作成できます:
$ register_new_matrix_user -c /etc/synapse/homeserver.yaml https://localhost:8448
もしくは matrix クライアント を使ってください。
Spider Webcrawler
Webcrawler を有効にするには、サーバーが生成するリンクのプレビューのために、追加パッケージ python-lxml と python-netaddr をインストールする必要があります。その後、設定オプション url_preview_enabled: True
は homeserver.yaml
で設定することができます。synapse サーバが内部ホストに対して任意の GET リクエストを発行しないようにするには、 url_preview_ip_range_blacklist:
を設定する必要があります。
コメントアウトしなくてもよい例がいくつかあります。ローカルな IP 範囲をこのリストに追加して、synapse サーバがそれらをクロールしようとするのを防ぎます。homeserver.yaml
を変更した後、サービスを再起動する必要があります。
興味深いチャンネル
KDE コミュニティには、特定のアプリケーション、言語、イベントなどのための様々なマトリックスルームがあります。詳しくは https://community.kde.org/Matrix をご覧ください。
GNOME コミュニティでは、さまざまなマトリックス・ルームと即座に通信するためのマトリックス・インスタンスも用意しています。詳しくは https://wiki.gnome.org/GettingInTouch/Matrix をご覧ください。
トラブルシューティング
読み取り専用のファイルシステム
デフォルトでは、synapse はサービス ファイルで設定された working-directory (/var/lib/synapse
) にのみ書き込みを行うことができます。synapse が異なるパスに書き込むと、書き込みエラーが発生する場合があります(例:media-store が /var/lib/matrix-synapse/media
にある場合)
他のディレクトリへのアクセスを許可するには、 synapse.service
の ユニットファイルを置換する を作成し、 ReadWritePaths=your_paths
を [Service]
セクションに追加することで行います。