自建一个サイバー小屋供朋友間自由無限制的交流,而不必担心任何監視審查。
Matrix はプロトコルであり、異なる実装があります。動作方式は電子メールに似ており、「非中央集権」と「エンドツーエンド暗号化」の特徴を持っています。
- サーバー側の実装(Matrix プロトコルに従っていれば、どんな実装でも相互通信可能です):
- 老舗の Synapse:Synapse: Matrix homeserver written in Python/Twisted. (github.com)
- 新鋭の Conduit: Conduit - Your own chat server
- クライアントの実装
- 推奨 Element、全プラットフォーム対応
- 中国地域の iOS にはあまり良いクライアントがないため、一時的にブラウザで Hydrogen を使用できます。
それに加えて、ブリッジコンポーネントを通じて、Matrix ネットワークで他のプラットフォームと交流できます。例えば、Telegram、E-mail などです。
最後に、基本的なテキスト送信に加えて、音声通話やビデオチャットも可能で、Jitsi ビデオ会議プラットフォームや Etherpad オープンソース協力テキストエディタなどをインストールできます。
この記事はその展開プロセスに重点を置いており、具体的な使用方法については:自建 即時通信 - 全面監視下、一つの自由無制限交流のサイバー小屋 - 技焉洲 (vfly2.com)
コントロール端に適用されるシステム:主流の Linux ディストリビューション、この記事では Debian システムを使用しています。非 Debian 系の場合は Ansible の部分を少し調整すれば同様にできます。
被制御端に適用されるシステム:主流の Linux ディストリビューション
通過予想時間:60 分
この matrix-docker-ansible-deploy プロジェクトは、Ansible を使用して被制御端で Docker コンテナを使って Matrix サーバーを設定するため、手動でこれらのタスクを実行する必要はありません、操作が簡単で、手間がかかりません;ただし、メモリ使用量は手動で Docker を使用してデプロイするよりもやや高く、さらに 443 ポートが占有されるため、再利用するには技術レベルに一定の要求があります。
被制御端のメモリは 2g 未満を推奨しません。 ドキュメントを確認してサービスを 1g に削減することがぎりぎり可能です。前の設定が完了した後、初回インストールには通常 20 分かかります。
実際に必要なサーバーの仕様は、あなたのインスタンスがどれだけの大部屋(千人以上)に接続するかに大きく依存し、ユーザー数ではありません。
この記事のプロセスに従って、実際にインストールするプロジェクト:
- サーバー側:Synapse
- クライアント側:Element の Web 端
簡単に保つ、一度このプロセスを通過できれば、他のコンポーネントを追加するのはドキュメントを見て数行の設定を追加するだけのことです。
前置準備#
簡単のために、root で被制御端を制御し、パスワードで SSH 接続を行います。したがって、被制御端の SSH が root ログインを許可していることを確認してください。
以下で「サーバー」とは「被制御端」を指し、Ansible は「コントロール端」にインストールされます。このコントロール端はローカルコンピュータ上でも、サーバー上でも構いません。
ドメインの DNS 解決を設定する#
ドメイン vfly2.com を例にとり、実際の操作時には実際のドメインに変更してください。
Cloudflare DNS の場合、
DNS only
を使用していることを確認してください。
基本:
- vfly2.com A レコードをサーバー IP に解決します(これを行わなくても、後で手動でリバースプロキシを設定する必要があります)。
- matrix.vfly2.com A レコードをサーバー IP に解決します。
- element.vfly2.com CNAME レコードを matrix.vfly2.com に解決します(A レコードでも構いませんが、CNAME の方が後でサーバーを移行する際に便利です)。
被制御端#
- 最新の Debian システムを使用することを推奨し、できれば再インストールされた新しいシステムが望ましいです。
- root でログインできるか、sudo 権限があること(この記事では root でログインできる必要があります)。
- Python3 と pip がインストールされていること、
apt install python3 python3-pip -y
。 - ファイアウォールが以下のポートを開放しているか、他のプログラムがポートを占有していないことを確認してください。
- 80/tcp: HTTP ウェブサーバー
- 443/tcp: HTTPS ウェブサーバー
- 3478: TURN over TCP/UDP (Coturn に使用)
- 5349: TURN over TCP/UDP (Coturn に使用)
- 8448/tcp: Matrix Federation API HTTPS ウェブサーバー。
- 範囲 49152-49172/udp: TURN over UDP
コントロール端#
別の Linux サーバーに Ansible をインストールしてコントロール端として使用し、通常のユーザーで操作できます。この記事はこのモードです。
コントロール端の要件:
- git がインストールされていること、一般的にはインストールされています。
- just がインストールされていること(これは make タイプのツールで、より使いやすいです)。
- ansible と PassLib ライブラリがインストールされていること。
just をインストール:
sudo -i # root に切り替え
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | sudo bash -s -- --to /usr/local/bin
just --help # インストールが成功したか確認
ansible をインストール:
python3 -m pip install --user ansible
ansible --version
# この時点で ansible は ~/.local/bin/ansible にインストールされています。
PassLib をインストール:
python3 -m pip install --user passlib
コントロール端で playbook をダウンロード#
Playbook を置くためのディレクトリを作成します(ここでは ~/Projects
を使用):
mkdir ~/Projects && cd ~/Projects && \
git clone https://github.com/spantaleev/matrix-docker-ansible-deploy.git
matrix-docker-ansible-deploy という名前のディレクトリが作成されます。以降のすべての操作はこのディレクトリ内で行います。
カスタム設定ファイル#
- ディレクトリを作成します(カスタム設定を置くため)。
mkdir inventory/host_vars/matrix.vfly2.com
- サンプルファイルとホストファイルをコピーします。
cp examples/vars.yml inventory/host_vars/matrix.vfly2.com/vars.yml
cp examples/hosts inventory/hosts # 被制御端の接続情報が含まれています。
- ホストファイルを編集します。
vim inventory/hosts
被制御端の情報をその中に入れ、ansible がコントロールにログインできるようにします。パスワードでログインする場合の例は以下の通りです。
[matrix_servers]
matrix.vfly2.com ansible_host=<ip> ansible_ssh_user=root ansible_ssh_pass=<ユーザーパスワード> ansible_ssh_port=<sshポート>
- カスタム設定ファイルを作成します(以下のサンプルを参考に)。
vim inventory/host_vars/matrix.vfly2.com/vars.yml
設定ファイルのサンプル#
以下の設定ファイルを使用して一度通過することをお勧めします。通過できたら、他のコンポーネントを徐々に追加してください。
変更が必要な項目:
matrix_domain
matrix_homeserver_generic_secret_key
devture_traefik_config_certificatesResolvers_acme_email
devture_postgres_connection_password
---
# 裸ドメイン、ユーザー ID 用
# 間違った場合は、アンインストールして再インストールする必要があります。
matrix_domain: vfly2.com
# インストールする Matrix サーバー、ここでは synapse 実装を使用
# さらに多くのオプションは roles/custom/matrix-base/defaults/main.yml を参照してください。
# docs/configuring-playbook-IMPLEMENTATION_NAME.md で具体的な説明を確認できます。
matrix_homeserver_implementation: synapse
# Synapse に関するいくつかの設定
# デフォルト設定は roles/custom/matrix-synapse/defaults/main.yml にあります。
# 登録を許可
matrix_synapse_enable_registration: true
# 登録には招待コードが必要
matrix_synapse_registration_requires_token: true
# 複数の他のパスワードを生成するための基本キー
# 任意の文字列で構いません。推奨は openssl rand -base64 48 で生成した 64 ビット文字列です。
matrix_homeserver_generic_secret_key: 'Wddx05J0Tty9R1M7fzw2nEdR1U9wtGh61+wm3T4SUQi2IbtF2roi6VfqSrMzfKJc'
# デフォルトでは Traefik を使用してリバースプロキシを実装し、SSL 証明書を自動的に取得し、リバースプロキシコンポーネントを自動化します。
# 他の代替手段については、`docs/configuring-playbook-own-webserver.md` を参照してください。
matrix_playbook_reverse_proxy_type: playbook-managed-traefik
# Let's Encrypt による証明書発行用のメールアドレス
# 詳細は docs/configuring-playbook-ssl-certificates.md を参照してください。
devture_traefik_config_certificatesResolvers_acme_email: '[email protected]'
# Postgres のスーパーユーザーは matrix であり、ここでそのパスワードを設定します。
# この playbook は各コンポーネントに対してユーザーとデータベースを作成し、matrix ユーザーを介して実行します。
devture_postgres_connection_password: '9HwDqeQ/ZzRlRyaH7KsjW0Q7mEwO7t52YrIsiRUzFieDmvfJ6U4aiMMcrU/5Hdsq'
# synapse_admin コンポーネントをインストールします。これはバックエンドで、ユーザーを確認し、登録用の招待コードを追加できます。
# ドメインを個別に設定する必要はなく、URL は https://matrix.vfly2.com/synapse-admin/ です。
matrix_synapse_admin_enabled: true
正式インストール#
# すべての操作はこのディレクトリ内で行います。
cd ~/Projects/matrix-docker-ansible-deploy
パスワードでログインできるようにするため、sshpass をインストールする必要があります:
sudo apt install sshpass
また、手動で一度ログインする必要があります。
ssh -p 22 [email protected]
インストールの前に、またはその後に playbook や設定ファイルを更新した場合は、Ansible roles を更新する必要があります。これが被制御端の操作方法を指示します。
just roles # その通り、このコマンドを実行するだけです。
古いインスタンスを移行する場合は、このステップで移行の部分のプロセスに進むことができます。
新しいマシンにインストール#
すべての Matrix サービスを完全にインストールして起動します。
ansible-playbook -i inventory/hosts setup.yml --tags=install-all,ensure-matrix-users-created,start
このコマンドが完了した後、Web 端を開いてユーザーを登録すれば使用可能になります。
互いに発見する#
連邦間の相互発見を実現するために設定します。裸ドメイン vfly2.com を直接サーバーに解決する場合は、このセクションを無視できます。なぜなら、playbook が自動的に設定しているからです。
(重要) Federation Server discovery
他のインスタンスが自分を発見するのを助けます。正しく設定されていないと、連邦に参加できず、他の連邦メンバーと接続できません。ただし、単独使用には影響しません。
つまり、ウェブページ https://<matrix_domain>/.well-known/matrix/server
の内容が正常であるかどうかです。
この playbook はインスタンスを別のドメイン(この記事では matrix.vfly2.com
)にインストールしますが、Matrix プロトコル自体は基本ドメインを発見することを要求します。
この記事で使用されている playbook によってインストールされたものはここにあります: https://matrix.vfly2.com/.well-known/matrix/server 、その内容は:
{
"m.server": "matrix.vfly2.com:8448"
}
単に、https://vfly2.com/.well-known/matrix/server にアクセスした際の内容が上記と同じであることを確認するだけで、リバースプロキシなどを利用したり、手動で内容を新しいファイルにコピーしてウェブサーバーに公開することができます。
(それほど重要ではない) Client Server discovery
自分のクライアントが接続しているサーバーを発見するのを助け、ユーザーをより便利に照会できるようにします。
つまり、ウェブページ https://<matrix_domain>/.well-known/matrix/client
の内容が正常であるかどうかです。
上記と同様です。
サービスが正常に動作しているか確認する#
ansible-playbook -i inventory/hosts setup.yml --tags=self-check
Federation Tester を使用して検出することもできます。
ユーザーの作成#
管理バックエンドから追加するのが最も簡単です。上記の設定サンプルに従ってインストールした場合、https://<domain>/synapse-admin/
にアクセスすればバックエンドに入れます。そこで直接ユーザーを作成できます。
バックエンドでも招待コードを生成でき、他の人はその招待コードを使用して登録できます。
その他の方法については公式の説明を参照してください: https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/registering-users.md
せっかく自建した Matrix ですから、Matrix のメンテナンスも忘れずに。この記事で使用した Ansible による Matrix のバックアップと移行については:Matrix メンテナンス :バックアップと移行 - 技焉洲 (vfly2.com)をご覧ください。
原文リンク: https://technique.vfly2.com/2024/01/automated-installation-of-matrix-using-ansible/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (technique.vfly2.com) 。
保持更新 ٩(・̤̀ᵕ・̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @[email protected]
接收新文章的推送,如果能留言互动就更好了。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。