Debian 12上でMatrix SynapseとElementを使用してチャットサーバーをインストールし、作成する方法
Debian 12上でMatrix SynapseとElementを使用してチャットサーバーをインストールし作成する方法
このページで
- 前提条件
- ステップ1 - ファイアウォールを設定する
- ステップ 2 - Matrix Synapse をインストールする
- ステップ3 - PostgreSQLをインストールして構成する
- ステップ4 - Nginxをインストールする
- ステップ5 - SSLをインストールする
- ステップ 6 - Matrix Synapseの設定
- ステップ7 - Nginxを設定する
- ステップ8 - Coturnをインストールする
- ステップ9 - アクセスマトリックス
- ステップ10 - Elementをインストールする
- ステップ11 - 要素を構成する
- 結論
Matrixは、分散型でエンドツーエンド暗号化された通信のためのオープンスタンダードです。これは、標準化されたAPIを使用して互いに通信するサーバーとサービスのコレクションであり、リアルタイムで同期します。アカウント情報やチャット履歴を保存するためにホームサーバーを使用します。もし1つのホームサーバーがダウンしても、分散型の特性により他のサーバーは問題なく通信を続けることができます。誰かがホストしているMatrixホームサーバーを使用するか、自分自身でホストしてデータの制御を維持することができます。
このチュートリアルでは、Matrixのホームサーバー実装であるSynapseを使用してチャットサーバーをインストールし、作成する方法を学びます。ElementはMatrix React SDKを使用して構築されたMatrix Webクライアントです。これにより、Web上でMatrixチャットを提供することができます。また、お好きな他のMatrixクライアントを使用してサーバーに接続することもできます。さらに、音声通話とビデオ通話を有効にするためにCoturnサーバーもインストールします。Coturnサービスは、使用することに興味がない場合はオプションです。
前提条件
Debian 12を実行しているサーバー。
ルート権限を持つ非sudoユーザー。
シンプルなファイアウォール(UFW)が有効で実行中です。
あなたのサーバーにポイントするMatrix、Element、Coturnの完全修飾ドメイン名(FQDN)。私たちは3つのサービスのために、それぞれmatrix.example.com、element.example.com、およびcoturn.example.comを使用します。
すべてが最新であることを確認してください。
sudo apt update && sudo apt upgrade
ステップ1 - ファイアウォールを設定する
パッケージをインストールする前に、最初のステップはファイアウォールを設定してHTTP、HTTPS、およびSynapse用のポートを開くことです。
ファイアウォールの状態を確認してください。
sudo ufw status
次のようなものが表示されるはずです。
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
ファイアウォールでHTTP、HTTPS、およびSynapseポートを開きます。
sudo ufw allow 8448
sudo ufw allow http
sudo ufw allow https
再度ステータスを確認して、確認してください。
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
8448 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
8448 (v6) ALLOW Anywhere (v6)
ステップ2 - Matrix Synapseをインストールする
MatrixのGPGキーを追加します。
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
行列APTリポジトリを追加します。
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list
システムのリポジトリリストを更新します。
sudo apt update
マトリックスシナプスをインストールします。
sudo apt install matrix-synapse-py3
インストール中に、サーバー名を入力するよう求められます。これはあなたのマトリックスIDの一部を構成します。その代わりにあなたのマトリックスドメイン名を入力してください。これがあなたのホームサーバーアドレスとして機能します。
あなたはまた、ホームサーバーに関する匿名化された統計情報をMatrixに送信するかどうか尋ねられます。Nと入力して拒否してください。
これらの設定は後でファイル/etc/matrix-synapse/conf.d/server_name.yamlで変更できます。
Matrix Synapseのサービスはインストール中に有効化され、開始されます。サービスの状態を確認してください。
sudo systemctl status matrix-synapse
? matrix-synapse.service - Synapse Matrix homeserver
Loaded: loaded (/lib/systemd/system/matrix-synapse.service; enabled; preset: enabled)
Active: active (running) since Mon 2023-10-02 07:47:43 UTC; 1min 33s ago
Process: 1558 ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-keys (code=>
Main PID: 1563 (python)
Tasks: 8 (limit: 2315)
Memory: 102.7M
CPU: 3.609s
CGroup: /system.slice/matrix-synapse.service
??1563 /opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/
Oct 02 07:47:41 lomp matrix-synapse[1558]: Generating signing key file /etc/matrix-synapse/homeserver.signing.key
Oct 02 07:47:43 lomp matrix-synapse[1563]: This server is configured to use 'matrix.org' as its trusted key server via the
Oct 02 07:47:43 lomp matrix-synapse[1563]: 'trusted_key_servers' config option. 'matrix.org' is a good choice for a key
Oct 02 07:47:43 lomp matrix-synapse[1563]: server since it is long-lived, stable and trusted. However, some admins may
Oct 02 07:47:43 lomp matrix-synapse[1563]: wish to use another server for this purpose.
Oct 02 07:47:43 lomp matrix-synapse[1563]: To suppress this warning and continue using 'matrix.org', admins should set
Oct 02 07:47:43 lomp matrix-synapse[1563]: 'suppress_key_server_warning' to 'true' in homeserver.yaml.
Oct 02 07:47:43 lomp matrix-synapse[1563]: --------------------------------------------------------------------------------
Oct 02 07:47:43 lomp matrix-synapse[1563]: Config is missing macaroon_secret_key
Oct 02 07:47:43 lomp systemd[1]: Started matrix-synapse.service - Synapse Matrix homeserver.
ステップ3 - PostgreSQLをインストールして構成する
私たちは、PostgreSQLの公式APTリポジトリを使用して最新バージョンのPostgreSQLをインストールします。PostgreSQLのGPGキーを追加するには、次のコマンドを実行してください。
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
APTリポジトリをソースリストに追加してください。
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
システムリポジトリを更新してください。
sudo apt update
これで、次のコマンドを使用してPostgreSQLをインストールできます。
sudo apt install postgresql postgresql-contrib
このチュートリアルを書いている時点で、PostgreSQL 16 が最新のバージョンです。別のバージョンをインストールするには、次のようにコマンドを変更します。これにより、PostgreSQL 14 がインストールされます。
sudo apt install postgresql-14 postgresql-contrib-14
PostgreSQLサービスの状態を確認してください。
sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Mon 2023-10-02 07:51:10 UTC; 13s ago
Main PID: 4001 (code=exited, status=0/SUCCESS)
CPU: 1ms
Oct 02 07:51:10 lomp systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Oct 02 07:51:10 lomp systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
サービスはデフォルトで有効になっていて、実行されていることがわかります。
postgresシステムアカウントにログインします。
sudo -su postgres
PostgreSQLのために新しいデータベースユーザーとデータベースを作成します。
createuser --pwprompt synapse
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse synapsedb
postgres アカウントからログアウトします。
exit
ステップ4 - Nginxをインストールする
運用環境では、Nginxプロキシを使用してSynapseサーバーを実行することが推奨されます。
Debian 12 には古いバージョンの Nginx が付属しています。最新バージョンをインストールするには、公式の Nginx リポジトリをダウンロードする必要があります。
Nginxの署名キーをインポートします。
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Nginxの安定版のリポジトリを追加してください。
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
システムリポジトリを更新してください。
sudo apt update
Nginxをインストールします。
sudo apt install nginx
インストールを確認してください。私たちはDebianを使用しているので、次のコマンドはsudo権限で実行する必要があります。
sudo nginx -v
nginx version: nginx/1.24.0
Nginxサーバーを開始します。
sudo systemctl start nginx
サービスの状態を確認してください。
sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Mon 2023-10-02 07:59:12 UTC; 1s ago
Docs: https://nginx.org/en/docs/
Process: 5767 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 5768 (nginx)
Tasks: 2 (limit: 2315)
Memory: 1.7M
CPU: 7ms
CGroup: /system.slice/nginx.service
??5768 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??5769 "nginx: worker process"
ステップ5 - SSLをインストールする
私たちは、Let's Encryptが提供する無料のSSL証明書を生成するためにCertbotをインストールする必要があります。Debianのリポジトリを使用してCertbotをインストールするか、Snapdツールを使用して最新バージョンを取得することができます。私たちはSnapdのバージョンを使用します。
Debian 12にはSnapdがインストールされていません。Snapdをインストールするには、次のコマンドを実行してください。
sudo apt install snapd -y
次のコマンドを実行して、Snapdのバージョンが最新であることを確認してください。
sudo snap install core
sudo snap refresh core
Certbotをインストールします。
sudo snap install --classic certbot
次のコマンドを使用して、Certbot コマンドが /usr/bin ディレクトリへのシンボリックリンクを作成することで実行できることを確認してください。
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Certbotのバージョンを確認してください。
certbot --version
certbot 2.6.0
次のコマンドを実行してSSL証明書を生成します。
sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d matrix.example.com
上記のコマンドは、サーバーの/etc/letsencrypt/live/matrix.example.comディレクトリに証明書をダウンロードします。
ディフィー・ヘルマン群証明書を生成します。
sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Certbotの更新スケジューラーサービスを確認してください。
sudo systemctl list-timers
あなたは、snap.certbot.renew.serviceが実行予定のサービスの1つとして見つけるでしょう。
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Mon 2023-10-02 16:33:00 UTC 8h left - - snap.certbot.renew.timer snap.certbot.renew.service
Tue 2023-10-03 00:00:00 UTC 15h left - - dpkg-db-backup.timer dpkg-db-backup.service
Tue 2023-10-03 00:00:00 UTC 15h left Mon 2023-10-02 07:38:16 UTC 26min ago exim4-base.timer exim4-base.service
プロセスのドライランを実行して、SSLの更新が正常に機能しているか確認してください。
sudo certbot renew --dry-run
エラーが見当たらなければ、すべて準備完了です。あなたの証明書は自動的に更新されます。
ステップ6 - Matrix Synapseを設定する
Matrixサーバーは、ファイル/etc/matrix-synapse/homeserver.yamlを介して設定できますが、アップグレードのたびに上書きされるため、推奨されません。商用利用の場合、設定ファイルは/etc/matrix-synapse/conf.dフォルダーに配置するべきです。
Synapseのインストールにより、/etc/matrix-synapse/conf.dフォルダーに2つの設定ファイルが作成されました。
ls /etc/matrix-synapse/conf.d
report_stats.yaml server_name.yaml
データベースの新しい設定ファイルを作成し、編集のために開きます。
sudo nano /etc/matrix-synapse/conf.d/database.yaml
以下の行をエディタに貼り付けます。your-passwordフィールドを、ステップ3で作成したPostgreSQLユーザーパスワードに置き換えます。データベースを別の場所でホストしている場合は、localhostをサーバーのIPアドレスに置き換えます。
database:
name: psycopg2
args:
user: synapse
password: 'your-password'
database: synapsedb
host: localhost
cp_min: 5
cp_max: 10
Ctrl + X を押してファイルを保存し、プロンプトが表示されたら Y を入力します。
秘密の登録キーを作成します。このキーは安全に保管する必要があります。なぜなら、このキーを使えば、登録が無効になっていても誰でも新しいユーザーを登録できるからです。
echo "registration_shared_secret: '$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)'" | sudo tee /etc/matrix-synapse/conf.d/registration_shared_secret.yaml
registration_shared_secret: 'vgd73p26ZDaFExpX4OPv45DsA2ZMAxiVZR7um9fBoBoFESmg5MSs68xAMUhwQ8Zn3NqcZMRSqxLeIFatppfne7xD2RHL16YfuIKmNeJ1FClQszO1SZknUVwOPyDiPe5gCCWgD9cHfa3dLTdZND5Y0SdH7GBkwYqKjibAe0JoQc8mKty3HWd6uIga3QewhtXr3b3Hpk8sr6zYpXvaBtWRHwaSWcLooqbWF8LPbSyrC0BVAKzXObUwqRGyDpkrnMiY'
デフォルトでは、Synapseは人がオンラインかどうかを示すプレゼンスインジケーターを有効にしています。これによりCPU使用率が高くなる可能性があるため、無効にすることができます。同じための新しい設定ファイルを作成してください。
sudo nano /etc/matrix-synapse/conf.d/presence.yaml
次の文をエディターに貼り付けてください。
presence:
enabled: false
Ctrl + X を押してファイルを保存し、プロンプトが表示されたら Y を入力します。
変更を適用するためにシナプスサービスを再起動してください。
sudo systemctl restart matrix-synapse
新しいマトリクスユーザーを作成します。ユーザー名とパスワードを求められます。これは初めて作成するユーザーなので、ユーザーを管理者にするかどうかの質問があった場合はyesと入力してください。
register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml http://localhost:8008
New user localpart [navjot]: navjot
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success!
公開登録を開きたい場合は、新しい設定ファイルを作成してください。
sudo nano /etc/matrix-synapse/conf.d/registration.yaml
その行をそこに貼り付けてください。
enable_registration: true
デフォルトでは、Synapseはメール認証なしの登録を許可していません。メール認証を有効にするには、以下の行を貼り付けてください。
registrations_require_3pid:
- email
email:
smtp_host: mail.example.com
smtp_port: 587
# If mail server has no authentication, skip these 2 lines
smtp_user: '[email '
smtp_pass: 'password'
# Optional, require encryption with STARTTLS
require_transport_security: true
app_name: 'HowtoForge Example Chat' # defines value for %(app)s in notif_from and email subject
notif_from: "%(app)s <[email >"
メール認証を無効にするには、代わりに以下の行を貼り付けてください。
enable_registration_without_verification: true
Ctrl + X を押してファイルを保存し、プロンプトが表示されたら Y を入力します。
設定を適用するために、シナプスを再起動します。
sudo systemctl restart matrix-synapse
ステップ7 - Nginxを設定する
ファイル /etc/nginx/nginx.conf を編集のために開いてください。
sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;の前に次の行を追加してください。
server_names_hash_bucket_size 64;
Ctrl + X を押してファイルを保存し、促されたらYと入力します。
/etc/nginx/conf.d/synapse.conf ファイルを作成して編集のために開いてください。
sudo nano /etc/nginx/conf.d/synapse.conf
そのコードをそこに貼り付けてください。
enforce HTTPS
server {
# Client port
listen 80;
listen [::]:80;
server_name matrix.example.com;
return 301 https://$host$request_uri;
}
server {
server_name matrix.example.com;
# Client port
listen 443 ssl http2;
listen [::]:443 ssl http2;
# Federation port
listen 8448 ssl http2 default_server;
listen [::]:8448 ssl http2 default_server;
access_log /var/log/nginx/synapse.access.log;
error_log /var/log/nginx/synapse.error.log;
# TLS configuration
ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/matrix.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
resolver_timeout 2s;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
tcp_nopush on;
gzip on;
location ~ ^(/_matrix|/_synapse/client) {
proxy_pass http://localhost:8008;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
client_max_body_size 50M;
}
}
Ctrl + X を押し、完了したら促された際に Y を入力してファイルを保存します。上記の設定は、ドメイン example.com と matrix.example.com のIPアドレスが同じサーバーを指していることを前提としています。そうでない場合は、example.com サーバー用の以下の設定ファイルを使用してください。
server {
server_name example.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
# TLS configuration
ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/matrix.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
resolver_timeout 2s;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
# Redirect
location ~ ^(/_matrix|/_synapse/client) {
return 301 "https://matrix.example.com$request_uri";
}
# Client homeserver autodiscovery
location /.well-known/matrix/client {
default_type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '{ "m.homeserver": { "base_url": "https://matrix.example.com" } }';
}
# Domain delegation
location /.well-known/matrix/server {
default_type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '{ "m.server": "matrix.example.com" }';
}
}
Nginxの設定ファイルの構文を確認してください。
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginxサービスを再起動してください。
sudo systemctl restart nginx
ステップ8 - Coturnをインストールする
ボイスおよびビデオ通話を有効にするために、NAT(TURN)サーバーを使用したトラバーサルをインストールする必要があります。このために、Coturnパッケージをインストールします。この機能が必要ない場合は、このステップをスキップできます。
Coturnをインストールします。
sudo apt install coturn
TURNとUDPポートを開いてください。
sudo ufw allow 3478
sudo ufw allow 5349
sudo ufw allow 49152:65535/udp
TurnのためにSSL証明書を生成します(turn.example.com)。
sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d turn.example.com
認証シークレットを生成し、それを設定ファイルに保存してください。
echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf
static-auth-secret=OcKBLuwpE6IyMoi9mPccjVFaL7PwJRFUuKh5EvGBVcvB7tunevQ3cpP74we8cF4XSN8lFNrgqxJeyItKOcoOABwjdTNChmJeB4WMrsLV2JNsPs3U61s9rRijj3OxBpZux0CGft8CiyNDweVLqqxNaYphNesoAT4y51RxLVdAP2ros9S3jRR7IYRccJVRMpqTa8USBuBqAkzRRPLbFOHsC6QHur2oiySuW6sqs4YkH65N8kReSzgi7Fq2Zll3RO5e
設定ファイルを編集のために開いてください。
sudo nano /etc/turnserver.conf
認証シークレットの下に以下の行を貼り付けてください。
use-auth-secret
realm=turn.example.com
cert=/etc/letsencrypt/live/turn.example.com/fullchain.pem
pkey=/etc/letsencrypt/live/turn.example.com/privkey.pem
VoIP is UDP, no need for TCP
no-tcp-relay
Do not allow traffic to private IP ranges
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255
denied-peer-ip=::1
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
Limit number of sessions per user
user-quota=12
Limit total number of sessions
total-quota=1200
Ctrl + X を押してファイルを保存し、促されたらYと入力します。
設定を適用するためにCoturnを再起動します。
sudo systemctl restart coturn
Coturnの新しいSynapse構成ファイルを作成します。
sudo nano /etc/matrix-synapse/conf.d/turn.yaml
以下の行をそれに貼り付けてください。turn_shared_secretの値を\etc\turnserver.confファイルのstatic-auth-secretの値に置き換えてください。
turn_uris: [ "turn:turn.example.com?transport=udp", "turn:turn.example.com?transport=tcp" ]
turn_shared_secret: 'static-auth-secret'
turn_user_lifetime: 86400000
turn_allow_guests: True
Ctrl + X を押してファイルを保存し、促されたらYと入力します。
変更を適用するには、シナプスを再起動してください。
sudo systemctl restart matrix-synapse
ステップ9 - アクセスマトリックス
Elementのウェブクライアントを使用して、Matrix Chatにアクセスできます。https://app.element.ioで確認してください。続行するには、サインインボタンをクリックしてください。
ホームサーバーの下にある編集リンクをクリックします。matrix.example.comをホームサーバーとして入力します。
クライアントがあなたのホームサーバーを正しく検出した場合、境界線とテキストは緑色になります。そうでない場合は赤色で表示されます。続行をクリックして続けてください。
サインイン ボタンをクリックしてログインします。安全で暗号化されたバックアップを作成するように求められます。
セキュリティフレーズの入力オプションを選択して、ログインするたびに必要となるセキュリティフレーズを作成します。続行するには続けるをクリックしてください。
セキュリティフレーズを入力し、続行ボタンをクリックして進んでください。次の画面で再確認を求められます。
もう一度フレーズを入力して、続行をクリックして進んでください。
セキュリティフレーズを忘れた場合に使用できる一連のセキュリティキーが提供されます。ダウンロードボタンをクリックして保存してください。
続けるボタンをクリックして進んでください。
アカウントのパスワードを求められます。パスワードを入力し、続行ボタンをクリックして暗号化バックアップの設定を完了してください。
HowtoForgeという名前のグループチャットルームを、ホームページのグループチャットを作成ボタンを使用して作成しました。ボタンをクリックすると、次のポップアップが表示されます。
高度なメニューを展開してオプションを選択することで、メンバーをドメインに制限することができます。ルームを作成ボタンをクリックしてルームの作成を完了します。
ステップ10 - Elementをインストールする
jqパッケージをインストールしてJSONテキストプロセッサを用意します。これを使用して、Elementの最新バージョンをGitHubリポジトリから取得します。この方法ではバージョン番号を手動で追加する必要がなく、単一のコマンドで更新もできます。
sudo apt install jq
Elementのためのディレクトリを作成します。
sudo mkdir -p /var/www/element
最新のElementリリースを取得するための新しいファイルを作成してください。
sudo nano /var/www/element/update.sh
次の行を追加してください。
#!/bin/sh
set -e
install_location="/var/www/element"
latest="$(curl -s https://api.github.com/repos/vector-im/element-web/releases/latest | jq -r .tag_name)"
cd "$install_location"
[ ! -d "archive" ] && mkdir -p "archive"
[ -d "archive/element-${latest}" ] && rm -r "archive/element-${latest}"
[ -f "archive/element-${latest}.tar.gz" ] && rm "archive/element-${latest}.tar.gz"
wget "https://github.com/vector-im/element-web/releases/download/${latest}/element-${latest}.tar.gz" -P "archive"
tar xf "archive/element-${latest}.tar.gz" -C "archive"
[ -L "${install_location}/current" ] && rm "${install_location}/current"
ln -sf "${install_location}/archive/element-${latest}" "${install_location}/current"
ln -sf "${install_location}/config.json" "${install_location}/current/config.json"
Ctrl + X を押してファイルを保存し、促されたらYと入力します。
ファイルを実行可能にしてください。
sudo chmod +x /var/www/element/update.sh
スクリプトを実行してElementをダウンロードします。
sudo /var/www/element/update.sh
ステップ11 - 要素を構成する
同じ要素設定ファイルをコピーしてください。
sudo cp /var/www/element/current/config.sample.json /var/www/element/config.json
設定ファイルを編集のために開いてください。
sudo nano /var/www/element/config.json
次の行を見つけてください。
"m.homeserver": {
"base_url": "https://matrix-client.matrix.org",
"server_name": "matrix.org"
},
デフォルトのMatrixホームサーバーアドレスをあなたのホームサーバーに変更し、server_name変数を削除してください。
"m.homeserver": {
"base_url": "https://matrix.example.com",
"server_name": "example.com"
},
ウェブサイトのタイトルでElementの代わりに自分の名前を使用したい場合は、ブランド名を変更してください。
"brand": "HowtoForge Example Chat",
disable_guests 変数を true に設定して、ゲストが Element を使用できないようにします。
"disable_guests": true,
Ctrl + X を押してファイルを保存し、促されたらYと入力します。
Elementクライアント用のSSL証明書を生成します。
sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d element.example.com
/etc/nginx/conf.d/element.conf というファイルを作成して編集のために開いてください。
sudo nano /etc/nginx/conf.d/element.conf
その中に次の行を貼り付けてください。
server {
listen 80;
listen [::]:80;
server_name element.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name element.example.com;
root /var/www/element/current;
index index.html;
access_log /var/log/nginx/element.access.log;
error_log /var/log/nginx/element.error.log;
add_header Referrer-Policy "strict-origin" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
# TLS configuration
ssl_certificate /etc/letsencrypt/live/element.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/element.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/element.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
resolver_timeout 2s;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
}
Ctrl + X を押してファイルを保存し、促されたらYと入力します。
Nginxの設定ファイルの構文を確認してください。
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginxサービスを再起動してください。
sudo systemctl restart nginx
ブラウザでURL https://element.example.com を使ってElementクライアントにアクセスできます。ログインするとアプリのダッシュボードに移動します。最初に https://app.element.io でアプリを確認するよう求められます。元のElementアプリにログインしていることを確認し、絵文字を一致させるように求められます。確認が完了すると、次のダッシュボードが表示されます。
結論
これで、Debian 12 のマシン上で Nginx をプロキシサーバーとして使用して、Matrix Synapse チャットサーバーと Coturn、Element ウェブクライアントをインストールするためのチュートリアルは終了です。質問があれば、下のコメント欄に投稿してください。












