udelarinterior.matrix_synapse
Ansible Role Matrix Synapse
NginxリバースプロキシとPostgreSQLデータベースを使用した自動インストール
このロールは、最新のバージョンを自動的にインストール、アップグレード、および設定するためのもので、既知のセキュリティ脆弱性の影響を受けない推奨される選択肢です。
また、Nginxリバースプロキシと有効なLet's Encrypt証明書を設定し、クライアントと連携サーバーとの通信を簡素化します。
データベースサーバーには、PostgreSQL(本番環境で推奨)とSQLite(小規模またはテスト環境で推奨)を使用できます。ロールのデフォルトオプションはPostgreSQLで、インストールと設定を含みます。
シンプルなPostfixのローカルインストールまたは外部SMTPサーバーを使用すると、通知、アカウントの回復などをメールで送信できます。変数を通じて簡単にカスタマイズ可能なテンプレートも用意されています。
オプションで、このロールはCoTURNのインストールを提供し、TURNを使用してMatrixホームサーバーのVoIPレイリングを有効にします。
認証プロバイダーを通じて、分散型ログインの統合が可能です。このロールはオプションでLDAP統合を実装します。
最後に、このロールはSynapseと一緒にElement(以前のRiot)Webアプリケーションを提供することも可能です。この機能はデフォルトで無効になっています(synapse_installation_with_element: false
)が、Elementを提供することは非常に便利です。SynapseとElementに異なるドメイン名を設定することができる場合は、完全に推奨されます(synapse_server_name
!= element_server_name
)。そうでなければ、同じドメイン名に2つをインストールすることは自己責任で行ってください(synapse_server_name
== element_server_name
)。
バージョン3.0.0以降、このロールはElement Webアプリケーションのバージョン1.7.15以上に対応していますが、Riot/Elementのバージョン1.7.14以前には対応していません。
デプロイメントダイアグラム
基本インストール
プロダクション用に自分自身のマトリックスホームサーバーを準備するための基本的なインストールです(これはロールのデフォルトの動作です):
80,443,8448/tcp 25/tcp
| |
+-----------------------------|------------+ +----+----+
| | | | Postfix |
| Nginxサーバー | | +----^----+
| +---------v----------+ | |
| | リバースプロキシサイト | | |
| +----------------^---+ | |
+------------------------------------|-----+ |
| 8008/tcp |
+--v--------------+-----+
+-------------------+ 5432/tcp | |
| PostgreSQLサーバー |<---------+ マトリックスシナプスサーバー |
+-------------------+ | |
+-----------------------+
完全インストール
典型的で推奨される使用例は、次のアーキテクチャをデプロイすることです(これはロールのデフォルトの動作に加え、synapse_installation_with_element
とsynapse_with_turn
をtrue
に設定することが含まれます):
+~~~~~~~~~~~~~~~~~~~~~~~~~+
| Element Web App |
| (クライアントブラウザで実行) |<----<---+
+~~~~~~~~~~~~~~~~~~~~~~~~~+ |
^ v
^ | 3478,5349/tcp&upd
80,443/tcpへのGETは^ 443,8448/tcp 25/tcp 49152:65535/udpを返します
| | | |
+-----------------|--------------------------|-------------------|---------|------+
| | | | | |
| +--------------|--------------------------|----------+ +----+----+ | |
| | Nginxサーバー | | | | Postfix | | |
| | +----------v--------+ | | +----^----+ | |
| | | 標準サイト | +-----------v--------+ | | | |
| | | (riot.jsを提供) | | リバースプロキシサイト | | | | |
| | +-------------------+ +----------------^---+ | | | |
| +----------------------------------------------|-----+ | | |
| | 8008/tcp | | |
| +---v--------------+----+ | |
| +-------------------+ 5432/tcp | | | |
| | PostgreSQLサーバー |<---------+ マトリックスシナプスサーバー | | |
| +-------------------+ | | | |
| +--------------------^--+ | |
| | | |
| 3478,5349/tcp&upd | | |
| +-----------v-------v-+ |
| | coTURNサーバー | |
| Debianベースのサーバー +---------------------+ |
+---------------------------------------------------------------------------------+
要件
Ansibleバージョン >= 2.7
ロール変数
# Synapseのための私たちの親しみやすく公的なドメイン名
# ユーザーIDとルームエイリアスに対応するもの
# 例: my-organization.org (あなたは @users:my-organization.org と #rooms:my-organization.org を取得します)
synapse_server_name: "{{ inventory_hostname }}"
# 実際にシナプスをホストしているサーバーのFQDN
# 例: matrix.my-organization.org
synapse_server_fqdn: "{{ inventory_hostname }}"
# シナプスがPyPIからダウンロードされ、インストールされる場所
synapse_installation_path: /var/lib/matrix-synapse
# present : シナプスがインストールされた後は同じバージョンを維持する
# latest : pipから新しいアップグレードが利用可能な場合はアップグレードする
# アップグレードを計画している場合は、最初に確認してください: https://github.com/matrix-org/synapse/blob/master/UPGRADE.rst
synapse_pip_state: present
# matrix-synapseの特定のバージョンをインストールする場合
# 例えば: "matrix-synapse==1.12.4"のように変更します
matrix_synapse_pip_pkg: "matrix-synapse"
# 新しいユーザーのサインアップを有効にする
synapse_enable_registration: "false"
synapse_enable_registration_with_captcha: false
synapse_recaptcha_public_key: 2Q1toXytnLYl4WIrpWgvBJOaQS1Ym36tNAJnKcZY
synapse_recaptcha_private_key: QgsOB0r79J9fpn8fAAnEIiITv7IMnjnUftdJwThs
synapse_report_stats: 'no'
# 許可される最大アップロードサイズ(バイト単位)
synapse_max_upload_size: 10M
# シナプスインスタンスを管理するためのエンドポイントは/_synapse/adminの下に配置されます。これには
# 管理ユーザーのアクセストークンによる認証が必要です。これらのエンドポイントへのアクセスは
# 多くの権限を呼び出す者に付与しますので、合理的な理由がない限り、公開インターネットに公開することは推奨しません。
# https://matrix-org.github.io/synapse/latest/reverse_proxy.htmlを参照してください。
synapse_enable_admin_endpoints: false
# テンプレートと設定ファイルのローカルソース。独自のテンプレートを使用する場合に便利です。
synapse_confd_templates_src: var/lib/matrix-synapse/conf.d
### PostgreSQLサーバーでのシナプスのインストールと設定
synapse_with_postgresql: true
# PostgreSQLの資格情報
synapse_psql_db_name: matrix-synapse
synapse_psql_db_host: localhost
synapse_psql_user: matrix-synapse
synapse_psql_password: secret-password
### メール
# メールが設定されていない場合、パスワードのリセット、登録、通知は無効になります。
synapse_email_enable: true
synapse_smtp_host: localhost
synapse_smtp_port: 25
# synapse_smtp_user: synapse
# synapse_smtp_pass: secret
synapse_email_hostname: "{{ synapse_server_fqdn }}"
synapse_email_notif_from: "MyOrganization Matrix Homeserver <[email protected]>"
synapse_email_with_custom_templates: false
# trueの場合、conf.d/email.yaml.j2のカスタマイズ版テンプレートを使用することを忘れないでください
synapse_email_templates_src: email_notif_templates
synapse_email_templates_dest: "{{ synapse_installation_path }}/email_notif_templates"
### LDAP
synapse_with_ldap_authentication: false
synapse_ldap_uri: ldap.example.com:389
synapse_ldap_start_tls: 'true'
synapse_ldap_base: ou=users,dc=example,dc=com
synapse_ldap_uid: cn
synapse_ldap_mail: email
synapse_ldap_name: givenName
synapse_ldap_bind_dn: ""
synapse_ldap_bind_password: ""
### TURN
synapse_with_turn: false
synapse_turn_uri: "{{ synapse_server_fqdn }}"
synapse_turn_port: 3478
# synapse_turn_tls_port: 5349 (TLSを設定しなくても済むように未定義)
synapse_turn_communication_min_port: 49152
synapse_turn_communication_max_port: 65535
synapse_turn_shared_secret: 5Eydym68SovsZkYLT8G9TOSCFwc2E6ijVLwL4FQgbukKPUalQZOe5gj22E9EhYrm # これを変更し、ボールトから取得してください
synapse_turn_user_lifetime: 86400000
synapse_turn_allow_guests: True
synapse_turn_denied_peer_ip:
- 10.0.0.0-10.255.255.255
- 172.16.0.0-172.31.255.255
- 192.168.0.0-192.168.255.255
synapse_turn_allowed_peer_ip:
# TURNサーバー自身(特別な場合)。クライアント->TURN->TURN->クライアントのフローが機能するため。
- "{{ ansible_default_ipv4.address if(ansible_default_ipv4.address) is defined else '' }}"
- "{{ ansible_default_ipv6.address if(ansible_default_ipv6.address) is defined else '' }}"
synapse_turn_external_ip: []
# - 1.2.3.4/172.16.0.1 # TURNサーバーがNATの背後にある場合、パブリックIPとそのプライベートIPを示します。
synapse_turn_tls_cert: "/etc/letsencrypt/live/{{ synapse_turn_uri }}/cert.pem"
synapse_turn_tls_pkey: "/etc/letsencrypt/live/{{ synapse_turn_uri }}/privkey.pem"
### Element Webアプリ
# シナプスと一緒にElement Webアプリケーションもインストールします。
synapse_installation_with_element: false
element_installation_path: /var/www/element
# Element Webクライアントのための公共のドメイン名
# 例: element.my-organization.org
element_server_name: "{{ synapse_server_name }}"
# 最新バージョンを使用するためにhttps://github.com/vector-im/element-web/releasesを見てください。
element_version: '1.7.15'
element_jitsi_preferred_domain: jitsi.riot.im
# サーバーに表示される名前
element_display_name: 'My Org Chat'
element_default_theme: light # 'light', 'dark' または独自の 'custom-${theme-name}'(以下のelement_custom_themesを参照)
### Element UIカスタマイズ
element_customatize_ui: false
element_welcome_page_template_src: var/www/element/custom-welcome.html.j2 # デフォルトのElementウェルカムページを上書きしたくない場合は空にします。
element_welcome_logo_url: welcome/images/logo.svg
element_welcome_title: 'Elementへようこそ!'
element_welcome_description: '分散型、暗号化されたチャットとコラボレーション、[matrix]に基づく'
element_custom_branding:
welcomeBackgroundUrl: themes/element/img/backgrounds/lake.jpg
authHeaderLogoUrl: themes/element/img/logos/element-logo.svg
authFooterLinks:
- text: blog
url: https://element.io/blog
- text: twitter
url: https://twitter.com/element_hq
- text: github
url: https://github.com/vector-im/riot-web
element_custom_themes:
- name: "ディープパープル"
is_dark: true
colors:
accent-color: "#6503b3"
primary-color: "#368bd6"
warning-color: "#b30356"
sidebar-color: "#15171B"
roomlist-background-color: "#22262E"
roomlist-text-color: "#A1B2D1"
roomlist-text-secondary-color: "#EDF3FF"
roomlist-highlights-color: "#343A46"
roomlist-separator-color: "#a1b2d1"
timeline-background-color: "#181b21"
timeline-text-color: "#EDF3FF"
timeline-text-secondary-color: "#A1B2D1"
timeline-highlights-color: "#22262E"
依存関係
このロールは、geerlingguy.certbotに依存しており、クライアントや他の連携サーバーとの適切な通信を可能にする有効なLet's Encrypt証明書を生成および更新します。
例プレイブック
- hosts: servers
roles:
- role: udelarinterior.matrix_synapse
vars:
synapse_enable_registration: "true"
synapse_with_postgresql: true
synapse_psql_db_name: matrix-synapse
synapse_psql_db_host: localhost
synapse_psql_user: matrix-synapse
synapse_psql_password: my-password
certbot_admin_email: [email protected]
certbot_certs:
- domains:
- "{{ synapse_server_name }}"
- 'msg.my-organization.org'
- 'chat.my-organization.org'
ライセンス
(c) ウルグアイ共和国大学 (UdelaR)、ウルグアイ大学内部ネットワーク。GPL-v3の下でライセンスされています。
著者情報
@santiagomr @UdelaRInterior https://proyectos.interior.edu.uy/
Role to install and configure Matrix Synapse server from source
ansible-galaxy install udelarinterior.matrix_synapse