Add matrix-appservice-discord bridge
Bridge is setup to work on the matrix side with this, but the discord invite link is not automatically generated.
This commit is contained in:
parent
041a1947b3
commit
835c349275
@ -40,6 +40,8 @@ Using this playbook, you can get the following services configured on your serve
|
|||||||
|
|
||||||
- (optional) the [matrix-appservice-irc](https://github.com/TeDomum/matrix-appservice-irc) bridge for bridging your Matrix server to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat)
|
- (optional) the [matrix-appservice-irc](https://github.com/TeDomum/matrix-appservice-irc) bridge for bridging your Matrix server to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat)
|
||||||
|
|
||||||
|
- (optional) the [matrix-appservice-discord](https://github.com/Half-Shot/matrix-appservice-discord) bridge for bridging your Matrix server to [Discord](https://discordapp.com/)
|
||||||
|
|
||||||
Basically, this playbook aims to get you up-and-running with all the basic necessities around Matrix, without you having to do anything else.
|
Basically, this playbook aims to get you up-and-running with all the basic necessities around Matrix, without you having to do anything else.
|
||||||
|
|
||||||
**Note**: the list above is exhaustive. It includes optional or even some advanced components that you will most likely not need.
|
**Note**: the list above is exhaustive. It includes optional or even some advanced components that you will most likely not need.
|
||||||
@ -114,6 +116,8 @@ This playbook sets up your server using the following Docker images:
|
|||||||
|
|
||||||
- [tedomum/matrix-appservice-irc](https://hub.docker.com/r/tedomum/matrix-appservice-irc/) - the [matrix-appservice-irc](https://github.com/TeDomum/matrix-appservice-irc) bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) (optional)
|
- [tedomum/matrix-appservice-irc](https://hub.docker.com/r/tedomum/matrix-appservice-irc/) - the [matrix-appservice-irc](https://github.com/TeDomum/matrix-appservice-irc) bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) (optional)
|
||||||
|
|
||||||
|
- [tedomum/matrix-appservice-discord](https://hub.docker.com/r/halfshot/matrix-appservice-discord) - the [matrix-appservice-discord](https://github.com/Half-Shot/matrix-appservice-discord) bridge to [Discord](https://discordapp.com/)
|
||||||
|
|
||||||
|
|
||||||
## Deficiencies
|
## Deficiencies
|
||||||
|
|
||||||
|
5
docs/configuring-playbook-bridge-appservice-discord.md
Normal file
5
docs/configuring-playbook-bridge-appservice-discord.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Setting up Appservice Discord (optional)
|
||||||
|
|
||||||
|
The playbook can install and configure [matrix-appservice-discord](https://github.com/Half-Shot/matrix-appservice-discord) for you.
|
||||||
|
|
||||||
|
See the project's [documentation](https://github.com/Half-Shot/matrix-appservice-discord/blob/master/README.md) to learn what it does and why it might be useful to you.
|
@ -52,3 +52,5 @@ When you're done with all the configuration you'd like to do, continue with [Ins
|
|||||||
- [Setting up Mautrix Whatsapp bridging](configuring-playbook-bridge-mautrix-whatsapp.md) (optional)
|
- [Setting up Mautrix Whatsapp bridging](configuring-playbook-bridge-mautrix-whatsapp.md) (optional)
|
||||||
|
|
||||||
- [Setting up Appservice IRC bridging](configuring-playbook-bridge-appservice-irc.md) (optional)
|
- [Setting up Appservice IRC bridging](configuring-playbook-bridge-appservice-irc.md) (optional)
|
||||||
|
|
||||||
|
- [Setting up Appservice Discord bridging](configuring-playbook-bridge-appservice-discord.md) (optional)
|
||||||
|
@ -20,6 +20,18 @@
|
|||||||
# matrix-appservice-irc's client-server port to the local host (`127.0.0.1:9999`).
|
# matrix-appservice-irc's client-server port to the local host (`127.0.0.1:9999`).
|
||||||
matrix_appservice_irc_container_expose_client_server_api_port: "{{ not matrix_nginx_proxy_enabled }}"
|
matrix_appservice_irc_container_expose_client_server_api_port: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-appservice-discord
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# Normally, matrix-nginx-proxy is enabled and nginx can reach matrix-appservice-discord over the container network.
|
||||||
|
# If matrix-nginx-proxy is not enabled, or you otherwise have a need for it, you can expose
|
||||||
|
# matrix-appservice-discord's client-server port to the local host (`127.0.0.1:9005`).
|
||||||
|
matrix_appservice_discord_container_expose_client_server_api_port: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
#
|
#
|
||||||
# matrix-base
|
# matrix-base
|
||||||
|
352
matrix-servers
Normal file
352
matrix-servers
Normal file
@ -0,0 +1,352 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# This variables file wires together the various components (roles) used by the playbook.
|
||||||
|
#
|
||||||
|
# Roles used by playbook are pretty minimal and kept independent of one another as much as possible.
|
||||||
|
# To deliver a turnkey fully-featured Matrix server, this playbook needs
|
||||||
|
# to connect them all together. It does so by overriding role variables.
|
||||||
|
#
|
||||||
|
# You can also override ANY variable (seen here or in any given role),
|
||||||
|
# by re-defining it in your own configuration file (`inventory/host_vars/matrix.<your-domain>`).
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-appservice-irc
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# Normally, matrix-nginx-proxy is enabled and nginx can reach matrix-appservice-irc over the container network.
|
||||||
|
# If matrix-nginx-proxy is not enabled, or you otherwise have a need for it, you can expose
|
||||||
|
# matrix-appservice-irc's client-server port to the local host (`127.0.0.1:9999`).
|
||||||
|
matrix_appservice_irc_container_expose_client_server_api_port: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-appservice-discord
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# Normally, matrix-nginx-proxy is enabled and nginx can reach matrix-appservice-discord over the container network.
|
||||||
|
# If matrix-nginx-proxy is not enabled, or you otherwise have a need for it, you can expose
|
||||||
|
# matrix-appservice-discord's client-server port to the local host (`127.0.0.1:9005`).
|
||||||
|
matrix_appservice_discord_container_expose_client_server_api_port: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-base
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
matrix_identity_server_url: "{{ 'https://' + matrix_synapse_trusted_third_party_id_servers[0] if matrix_synapse_trusted_third_party_id_servers|length > 0 else None }}"
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# /matrix-base
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-corporal
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
matrix_corporal_enabled: false
|
||||||
|
|
||||||
|
# Normally, matrix-nginx-proxy is enabled and nginx can reach matrix-corporal over the container network.
|
||||||
|
# If matrix-nginx-proxy is not enabled, or you otherwise have a need for it, you can expose
|
||||||
|
# matrix-corporal's web-server ports to the local host (`127.0.0.1:41080` and `127.0.0.1:41081`).
|
||||||
|
matrix_corporal_container_expose_ports: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
|
||||||
|
matrix_corporal_systemd_required_services_list: |
|
||||||
|
{{
|
||||||
|
(['docker.service'])
|
||||||
|
+
|
||||||
|
(['matrix-synapse.service'])
|
||||||
|
}}
|
||||||
|
|
||||||
|
matrix_corporal_matrix_homeserver_api_endpoint: "http://matrix-synapse:8008"
|
||||||
|
|
||||||
|
matrix_corporal_matrix_auth_shared_secret: "{{ matrix_synapse_ext_password_provider_shared_secret_auth_shared_secret }}"
|
||||||
|
|
||||||
|
matrix_corporal_matrix_registration_shared_secret: "{{ matrix_synapse_registration_shared_secret }}"
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# /matrix-corporal
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-coturn
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
matrix_coturn_enabled: true
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# /matrix-coturn
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-mailer
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# By default, this playbook sets up a postfix mailer server (running in a container).
|
||||||
|
# This is so that Synapse can send email reminders for unread messages.
|
||||||
|
# Other services (like mxisd), also use the mailer.
|
||||||
|
matrix_mailer_enabled: true
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# /matrix-mailer
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-mxisd
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# By default, this playbook installs the mxisd identity server on the same domain as Synapse (`matrix_server_fqn_matrix`).
|
||||||
|
# If you wish to use the public identity servers (matrix.org, vector.im) instead of your own you may wish to disable this.
|
||||||
|
matrix_mxisd_enabled: true
|
||||||
|
|
||||||
|
# Normally, matrix-nginx-proxy is enabled and nginx can reach mxisd over the container network.
|
||||||
|
# If matrix-nginx-proxy is not enabled, or you otherwise have a need for it, you can expose
|
||||||
|
# mxisd's web-server port to the local host (`127.0.0.1:8090`).
|
||||||
|
matrix_mxisd_container_expose_port: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
|
||||||
|
# We enable Synapse integration via its Postgres database by default.
|
||||||
|
# When using another Identity store, you might wish to disable this and define
|
||||||
|
# your own configuration in `matrix_mxisd_configuration_extension_yaml`.
|
||||||
|
matrix_mxisd_synapsesql_enabled: true
|
||||||
|
matrix_mxisd_synapsesql_type: postgresql
|
||||||
|
matrix_mxisd_synapsesql_connection: //{{ matrix_synapse_database_host }}/{{ matrix_synapse_database_database }}?user={{ matrix_synapse_database_user }}&password={{ matrix_synapse_database_password }}
|
||||||
|
|
||||||
|
matrix_mxisd_dns_overwrite_enabled: true
|
||||||
|
matrix_mxisd_dns_overwrite_homeserver_client_name: "{{ matrix_server_fqn_matrix }}"
|
||||||
|
matrix_mxisd_dns_overwrite_homeserver_client_value: "http://{{ 'matrix-corporal:41080' if matrix_corporal_enabled else 'matrix-synapse:8008' }}"
|
||||||
|
|
||||||
|
# By default, we send mail through the `matrix-mailer` service.
|
||||||
|
matrix_mxisd_threepid_medium_email_identity_from: "{{ matrix_mailer_sender_address }}"
|
||||||
|
matrix_mxisd_threepid_medium_email_connectors_smtp_host: "matrix-mailer"
|
||||||
|
matrix_mxisd_threepid_medium_email_connectors_smtp_port: 8025
|
||||||
|
matrix_mxisd_threepid_medium_email_connectors_smtp_tls: 0
|
||||||
|
|
||||||
|
matrix_mxisd_systemd_wanted_services_list: |
|
||||||
|
{{
|
||||||
|
(['matrix-corporal.service'] if matrix_corporal_enabled else ['matrix-synapse.service'])
|
||||||
|
+
|
||||||
|
(['matrix-postgres.service'] if matrix_postgres_enabled else [])
|
||||||
|
+
|
||||||
|
(['matrix-mailer.service'] if matrix_mailer_enabled else [])
|
||||||
|
}}
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# /matrix-mxisd
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-nginx-proxy
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# By default, this playbook sets up a reverse-proxy nginx proxy server on TCP ports 80, 443 and 8448.
|
||||||
|
# This is fine if you're dedicating the whole server to Matrix.
|
||||||
|
# If that's not the case, you may wish to disable this and take care of proxying yourself.
|
||||||
|
matrix_nginx_proxy_enabled: true
|
||||||
|
|
||||||
|
matrix_nginx_proxy_proxy_matrix_client_api_addr_with_container: "{{ 'matrix-corporal:41080' if matrix_corporal_enabled else 'matrix-synapse:8008' }}"
|
||||||
|
matrix_nginx_proxy_proxy_matrix_client_api_addr_sans_container: "{{ '127.0.0.1:41080' if matrix_corporal_enabled else '127.0.0.1:8008' }}"
|
||||||
|
matrix_nginx_proxy_proxy_matrix_client_api_client_max_body_size_mb: "{{ matrix_synapse_max_upload_size_mb }}"
|
||||||
|
|
||||||
|
matrix_nginx_proxy_proxy_matrix_enabled: true
|
||||||
|
matrix_nginx_proxy_proxy_riot_enabled: "{{ matrix_riot_web_enabled }}"
|
||||||
|
|
||||||
|
matrix_nginx_proxy_proxy_matrix_corporal_api_enabled: "{{ matrix_corporal_enabled and matrix_corporal_http_api_enabled }}"
|
||||||
|
matrix_nginx_proxy_proxy_matrix_corporal_api_addr_with_container: "matrix-corporal:41081"
|
||||||
|
matrix_nginx_proxy_proxy_matrix_corporal_api_addr_sans_container: "127.0.0.1:41081"
|
||||||
|
|
||||||
|
matrix_nginx_proxy_proxy_matrix_identity_api_enabled: "{{ matrix_mxisd_enabled }}"
|
||||||
|
matrix_nginx_proxy_proxy_matrix_identity_api_addr_with_container: "matrix-mxisd:8090"
|
||||||
|
matrix_nginx_proxy_proxy_matrix_identity_api_addr_sans_container: "127.0.0.1:8090"
|
||||||
|
|
||||||
|
# By default, we do TLS termination for the Matrix Federation API (port 8448) at matrix-nginx-proxy.
|
||||||
|
matrix_nginx_proxy_proxy_matrix_federation_api_enabled: true
|
||||||
|
matrix_nginx_proxy_proxy_matrix_federation_api_addr_with_container: "matrix-synapse:8048"
|
||||||
|
matrix_nginx_proxy_proxy_matrix_federation_api_addr_sans_container: "127.0.0.1:8048"
|
||||||
|
|
||||||
|
matrix_nginx_proxy_proxy_synapse_metrics: "{{ matrix_synapse_metrics_enabled }}"
|
||||||
|
matrix_nginx_proxy_proxy_synapse_metrics_addr_with_container: "matrix-synapse:{{ matrix_synapse_metrics_port }}"
|
||||||
|
matrix_nginx_proxy_proxy_synapse_metrics_addr_sans_container: "127.0.0.1:{{ matrix_synapse_metrics_port }}"
|
||||||
|
|
||||||
|
matrix_nginx_proxy_proxy_matrix_user_directory_search_enabled: "{{ matrix_mxisd_enabled }}"
|
||||||
|
matrix_nginx_proxy_proxy_matrix_user_directory_search_addr_with_container: "{{ matrix_nginx_proxy_proxy_matrix_identity_api_addr_with_container }}"
|
||||||
|
matrix_nginx_proxy_proxy_matrix_user_directory_search_addr_sans_container: "{{ matrix_nginx_proxy_proxy_matrix_identity_api_addr_sans_container }}"
|
||||||
|
|
||||||
|
matrix_nginx_proxy_systemd_wanted_services_list: |
|
||||||
|
{{
|
||||||
|
(['matrix-synapse.service'])
|
||||||
|
+
|
||||||
|
(['matrix-corporal.service'] if matrix_corporal_enabled else [])
|
||||||
|
+
|
||||||
|
(['matrix-mxisd.service'] if matrix_mxisd_enabled else [])
|
||||||
|
+
|
||||||
|
(['matrix-riot-web.service'] if matrix_riot_web_enabled else [])
|
||||||
|
}}
|
||||||
|
|
||||||
|
matrix_ssl_domains_to_obtain_certificates_for: |
|
||||||
|
{{
|
||||||
|
([matrix_server_fqn_matrix])
|
||||||
|
+
|
||||||
|
([matrix_server_fqn_riot] if matrix_riot_web_enabled else [])
|
||||||
|
}}
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# /matrix-nginx-proxy
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-postgres
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
matrix_postgres_enabled: true
|
||||||
|
|
||||||
|
matrix_postgres_connection_hostname: "matrix-postgres"
|
||||||
|
matrix_postgres_connection_username: "synapse"
|
||||||
|
matrix_postgres_connection_password: "synapse-password"
|
||||||
|
matrix_postgres_db_name: "homeserver"
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# /matrix-postgres
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-riot-web
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# By default, this playbook installs the Riot.IM web UI on the `matrix_server_fqn_riot` domain.
|
||||||
|
# If you wish to connect to your Matrix server by other means, you may wish to disable this.
|
||||||
|
matrix_riot_web_enabled: true
|
||||||
|
|
||||||
|
# Normally, matrix-nginx-proxy is enabled and nginx can reach riot-web over the container network.
|
||||||
|
# If matrix-nginx-proxy is not enabled, or you otherwise have a need for it, you can expose
|
||||||
|
# the riot-web HTTP port to the local host (`127.0.0.1:80`).
|
||||||
|
matrix_riot_web_container_expose_port: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
|
||||||
|
matrix_riot_web_default_hs_url: "{{ matrix_homeserver_url }}"
|
||||||
|
matrix_riot_web_default_is_url: "{{ matrix_identity_server_url }}"
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# /matrix-riot-web
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# matrix-synapse
|
||||||
|
#
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# When mxisd is enabled, we can use it instead of the default public Identity servers.
|
||||||
|
matrix_synapse_trusted_third_party_id_servers: "{{ [matrix_server_fqn_matrix] if matrix_mxisd_enabled else matrix_synapse_id_servers_public }}"
|
||||||
|
|
||||||
|
# Normally, matrix-nginx-proxy is enabled and nginx can reach Synapse over the container network.
|
||||||
|
# If matrix-nginx-proxy is not enabled, or you otherwise have a need for it, you can expose its ports
|
||||||
|
# to the local host.
|
||||||
|
#
|
||||||
|
# For exposing the Matrix Client API's port (plain HTTP) to the local host (`127.0.0.1:8008`).
|
||||||
|
matrix_synapse_container_expose_client_api_port: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
# For exposing the Matrix Federation API's port (plain HTTP) to the local host (`127.0.0.1:8048`).
|
||||||
|
matrix_synapse_container_expose_federation_api_port: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
|
||||||
|
matrix_synapse_container_expose_metrics_port: "{{ not matrix_nginx_proxy_enabled }}"
|
||||||
|
|
||||||
|
matrix_synapse_database_host: "{{ matrix_postgres_connection_hostname }}"
|
||||||
|
matrix_synapse_database_user: "{{ matrix_postgres_connection_username }}"
|
||||||
|
matrix_synapse_database_password: "{{ matrix_postgres_connection_password }}"
|
||||||
|
matrix_synapse_database_database: "{{ matrix_postgres_db_name }}"
|
||||||
|
|
||||||
|
# We do not enable TLS in Synapse by default.
|
||||||
|
# TLS is handled by the matrix-nginx-proxy, which proxies the requests to Synapse.
|
||||||
|
matrix_synapse_tls_federation_listener_enabled: false
|
||||||
|
matrix_synapse_tls_certificate_path: ~
|
||||||
|
matrix_synapse_tls_private_key_path: ~
|
||||||
|
|
||||||
|
matrix_synapse_email_enabled: "{{ matrix_mailer_enabled }}"
|
||||||
|
matrix_synapse_email_smtp_host: "matrix-mailer"
|
||||||
|
matrix_synapse_email_smtp_port: 8025
|
||||||
|
matrix_synapse_email_smtp_require_transport_security: false
|
||||||
|
matrix_synapse_email_notif_from: "Matrix <{{ matrix_mailer_sender_address }}>"
|
||||||
|
matrix_synapse_email_riot_base_url: "https://{{ matrix_server_fqn_riot }}"
|
||||||
|
|
||||||
|
matrix_synapse_turn_uris: |
|
||||||
|
{{
|
||||||
|
[
|
||||||
|
'turn:' + matrix_server_fqn_matrix + ':3478?transport=udp',
|
||||||
|
'turn:' + matrix_server_fqn_matrix + ':3478?transport=tcp',
|
||||||
|
]
|
||||||
|
if matrix_coturn_enabled
|
||||||
|
else []
|
||||||
|
}}
|
||||||
|
|
||||||
|
matrix_synapse_turn_shared_secret: "{{ matrix_coturn_turn_static_auth_secret if matrix_coturn_enabled else '' }}"
|
||||||
|
|
||||||
|
matrix_synapse_systemd_required_services_list: |
|
||||||
|
{{
|
||||||
|
(['docker.service'])
|
||||||
|
+
|
||||||
|
(['matrix-postgres.service'] if matrix_postgres_enabled else [])
|
||||||
|
+
|
||||||
|
(['matrix-goofys'] if matrix_s3_media_store_enabled else [])
|
||||||
|
}}
|
||||||
|
|
||||||
|
matrix_synapse_systemd_wanted_services_list: |
|
||||||
|
{{
|
||||||
|
(['matrix-coturn.service'] if matrix_coturn_enabled else [])
|
||||||
|
+
|
||||||
|
(['matrix-mailer.service'] if matrix_mailer_enabled else [])
|
||||||
|
}}
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
#
|
||||||
|
# /matrix-synapse
|
||||||
|
#
|
||||||
|
######################################################################
|
@ -1,4 +1,4 @@
|
|||||||
matrix_synapse_docker_image: "matrixdotorg/synapse:v0.99.2-py3"
|
matrix_synapse_docker_image: "matrixdotorg/synapse:v0.99.1.1-py3"
|
||||||
|
|
||||||
matrix_synapse_base_path: "{{ matrix_base_data_path }}/synapse"
|
matrix_synapse_base_path: "{{ matrix_base_data_path }}/synapse"
|
||||||
matrix_synapse_config_dir_path: "{{ matrix_synapse_base_path }}/config"
|
matrix_synapse_config_dir_path: "{{ matrix_synapse_base_path }}/config"
|
||||||
@ -18,6 +18,9 @@ matrix_synapse_container_expose_federation_api_port: false
|
|||||||
# Controls whether the Appservice IRC container exposes the Client/Server API port (tcp/9999).
|
# Controls whether the Appservice IRC container exposes the Client/Server API port (tcp/9999).
|
||||||
matrix_appservice_irc_container_expose_client_server_api_port: false
|
matrix_appservice_irc_container_expose_client_server_api_port: false
|
||||||
|
|
||||||
|
# Controls whether the Appservice Discord container exposes the Client/Server API port (tcp/9005).
|
||||||
|
matrix_appservice_discord_container_expose_client_server_api_port: false
|
||||||
|
|
||||||
# Controls whether the matrix-synapse container exposes the metrics port (tcp/9100).
|
# Controls whether the matrix-synapse container exposes the metrics port (tcp/9100).
|
||||||
matrix_synapse_container_expose_metrics_port: false
|
matrix_synapse_container_expose_metrics_port: false
|
||||||
|
|
||||||
@ -641,3 +644,124 @@ matrix_appservice_irc_configuration_extension_yaml: |
|
|||||||
matrix_appservice_irc_configuration_extension: "{{ matrix_appservice_irc_configuration_extension_yaml|from_yaml if matrix_appservice_irc_configuration_extension_yaml|from_yaml else {} }}"
|
matrix_appservice_irc_configuration_extension: "{{ matrix_appservice_irc_configuration_extension_yaml|from_yaml if matrix_appservice_irc_configuration_extension_yaml|from_yaml else {} }}"
|
||||||
|
|
||||||
matrix_appservice_irc_configuration: "{{ matrix_appservice_irc_configuration_yaml|from_yaml|combine(matrix_appservice_irc_configuration_extension, recursive=True) }}"
|
matrix_appservice_irc_configuration: "{{ matrix_appservice_irc_configuration_yaml|from_yaml|combine(matrix_appservice_irc_configuration_extension, recursive=True) }}"
|
||||||
|
|
||||||
|
|
||||||
|
# Matrix Appservice Discord is a Matrix <-> Discord bridge
|
||||||
|
# Enable Discord bridge
|
||||||
|
matrix_appservice_discord_enabled: false
|
||||||
|
|
||||||
|
matrix_appservice_discord_docker_image: "halfshot/matrix-appservice-discord:latest"
|
||||||
|
|
||||||
|
matrix_appservice_discord_base_path: "{{ matrix_base_data_path }}/appservice-discord"
|
||||||
|
|
||||||
|
matrix_appservice_discord_client_ID: "YOUR DISCORD APP CLIENT ID"
|
||||||
|
matrix_appservice_discord_bot_token: "YOUR DISCORD APP BOT TOKEN"
|
||||||
|
|
||||||
|
matrix_appservice_discord_configuration_yaml: |
|
||||||
|
bridge:
|
||||||
|
domain: "{{ matrix_domain }}"
|
||||||
|
homeserverUrl: "{{ matrix_homeserver_url }}"
|
||||||
|
auth:
|
||||||
|
clientID: "{{matrix_appservice_discord_client_ID}}"
|
||||||
|
botToken: "{{matrix_appservice_discord_bot_token}}"
|
||||||
|
database:
|
||||||
|
filename: "/data/discord.db"
|
||||||
|
userStorePath: "/data/user-store.db"
|
||||||
|
roomStorePath: "/data/room-store.db"
|
||||||
|
|
||||||
|
matrix_appservice_discord_configuration_extension_yaml: |
|
||||||
|
# This is a sample of the config file showing all avaliable options.
|
||||||
|
# Where possible we have documented what they do, and all values are the
|
||||||
|
# default values.
|
||||||
|
#
|
||||||
|
#bridge:
|
||||||
|
# # Domain part of the bridge, e.g. matrix.org
|
||||||
|
# domain: "localhost"
|
||||||
|
# # This should be your publically facing URL because Discord may use it to
|
||||||
|
# # fetch media from the media store.
|
||||||
|
# homeserverUrl: "http://localhost:8008"
|
||||||
|
# # Interval at which to process users in the 'presence queue'. If you have
|
||||||
|
# # 5 users, one user will be processed every 500 milliseconds according to the
|
||||||
|
# # value below. This has a minimum value of 250.
|
||||||
|
# # WARNING: This has a high chance of spamming the homeserver with presence
|
||||||
|
# # updates since it will send one each time somebody changes state or is online.
|
||||||
|
# presenceInterval: 500
|
||||||
|
# # Disable setting presence for 'ghost users' which means Discord users on Matrix
|
||||||
|
# # will not be shown as away or online.
|
||||||
|
# disablePresence: false
|
||||||
|
# # Disable sending typing notifications when somebody on Discord types.
|
||||||
|
# disableTypingNotifications: false
|
||||||
|
# # Disable deleting messages on Discord if a message is redacted on Matrix.
|
||||||
|
# disableDeletionForwarding: false
|
||||||
|
# # Enable users to bridge rooms using !discord commands. See
|
||||||
|
# # https://t2bot.io/discord for instructions.
|
||||||
|
# enableSelfServiceBridging: false
|
||||||
|
# # Disable sending of read receipts for Matrix events which have been
|
||||||
|
# # successfully bridged to Discord.
|
||||||
|
# disableReadReceipts: false
|
||||||
|
# Authentication configuration for the discord bot.
|
||||||
|
#auth:
|
||||||
|
# clientID: "12345"
|
||||||
|
# botToken: "foobar"
|
||||||
|
#logging:
|
||||||
|
# # What level should the logger output to the console at.
|
||||||
|
# console: "warn" #silly, verbose, info, http, warn, error, silent
|
||||||
|
# lineDateFormat: "MMM-D HH:mm:ss.SSS" # This is in moment.js format
|
||||||
|
# files:
|
||||||
|
# - file: "debug.log"
|
||||||
|
# disable:
|
||||||
|
# - "PresenceHandler" # Will not capture presence logging
|
||||||
|
# - file: "warn.log" # Will capture warnings
|
||||||
|
# level: "warn"
|
||||||
|
# - file: "botlogs.log" # Will capture logs from DiscordBot
|
||||||
|
# level: "info"
|
||||||
|
# enable:
|
||||||
|
# - "DiscordBot"
|
||||||
|
#database:
|
||||||
|
# userStorePath: "user-store.db"
|
||||||
|
# roomStorePath: "room-store.db"
|
||||||
|
# # You may either use SQLite or Postgresql for the bridge database, which contains
|
||||||
|
# # important mappings for events and user puppeting configurations.
|
||||||
|
# # Use the filename option for SQLite, or connString for Postgresql.
|
||||||
|
# # If you are migrating, see https://github.com/Half-Shot/matrix-appservice-discord/blob/master/docs/howto.md#migrate-to-postgres-from-sqlite
|
||||||
|
# # WARNING: You will almost certainly be fine with sqlite unless your bridge
|
||||||
|
# # is in heavy demand and you suffer from IO slowness.
|
||||||
|
# filename: "discord.db"
|
||||||
|
# # connString: "postgresql://user:password@localhost/database_name"
|
||||||
|
#room:
|
||||||
|
# # Set the default visibility of alias rooms, defaults to "public".
|
||||||
|
# # One of: "public", "private"
|
||||||
|
# defaultVisibility: "public"
|
||||||
|
#channel:
|
||||||
|
# # Pattern of the name given to bridged rooms.
|
||||||
|
# # Can use :guild for the guild name and :name for the channel name.
|
||||||
|
# namePattern: "[Discord] :guild :name"
|
||||||
|
# # Changes made to rooms when a channel is deleted.
|
||||||
|
# deleteOptions:
|
||||||
|
# # Prefix the room name with a string.
|
||||||
|
# #namePrefix: "[Deleted]"
|
||||||
|
# # Prefix the room topic with a string.
|
||||||
|
# #topicPrefix: "This room has been deleted"
|
||||||
|
# # Disable people from talking in the room by raising the event PL to 50
|
||||||
|
# disableMessaging: false
|
||||||
|
# # Remove the discord alias from the room.
|
||||||
|
# unsetRoomAlias: true
|
||||||
|
# # Remove the room from the directory.
|
||||||
|
# unlistFromDirectory: true
|
||||||
|
# # Set the room to be unavaliable for joining without an invite.
|
||||||
|
# setInviteOnly: true
|
||||||
|
# # Make all the discord users leave the room.
|
||||||
|
# ghostsLeave: true
|
||||||
|
#limits:
|
||||||
|
# # Delay in milliseconds between discord users joining a room.
|
||||||
|
# roomGhostJoinDelay: 6000
|
||||||
|
# # Delay in milliseconds before sending messages to discord to avoid echos.
|
||||||
|
# # (Copies of a sent message may arrive from discord before we've
|
||||||
|
# # fininished handling it, causing us to echo it back to the room)
|
||||||
|
# discordSendDelay: 750
|
||||||
|
|
||||||
|
matrix_appservice_discord_configuration_extension: "{{ matrix_appservice_irc_configuration_extension_yaml|from_yaml if matrix_appservice_irc_configuration_extension_yaml|from_yaml else {} }}"
|
||||||
|
|
||||||
|
matrix_appservice_discord_configuration: "{{ matrix_appservice_discord_configuration_yaml|from_yaml|combine(matrix_appservice_discord_configuration_extension, recursive=True) }}"
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
- set_fact:
|
||||||
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-appservice-discord'] }}"
|
||||||
|
when: matrix_appservice_discord_enabled
|
65
roles/matrix-synapse/tasks/ext/appservice-discord/setup.yml
Normal file
65
roles/matrix-synapse/tasks/ext/appservice-discord/setup.yml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure Appservice Discord image is pulled
|
||||||
|
docker_image:
|
||||||
|
name: "{{ matrix_appservice_discord_docker_image }}"
|
||||||
|
when: "matrix_appservice_discord_enabled"
|
||||||
|
|
||||||
|
- name: Ensure Appservice Discord configuration path exists
|
||||||
|
file:
|
||||||
|
path: "{{ matrix_appservice_discord_base_path }}"
|
||||||
|
state: directory
|
||||||
|
mode: 0750
|
||||||
|
owner: "{{ matrix_user_username }}"
|
||||||
|
group: "{{ matrix_user_username }}"
|
||||||
|
when: "matrix_appservice_discord_enabled"
|
||||||
|
|
||||||
|
- name: Ensure Matrix Appservice Discord config installed
|
||||||
|
copy:
|
||||||
|
content: "{{ matrix_appservice_discord_configuration|to_nice_yaml }}"
|
||||||
|
dest: "{{ matrix_appservice_discord_base_path }}/config.yaml"
|
||||||
|
mode: 0644
|
||||||
|
owner: "{{ matrix_user_username }}"
|
||||||
|
group: "{{ matrix_user_username }}"
|
||||||
|
when: "matrix_appservice_discord_enabled"
|
||||||
|
|
||||||
|
- name: Ensure matrix-appservice-discord.service installed
|
||||||
|
template:
|
||||||
|
src: "{{ role_path }}/templates/ext/appservice-discord/systemd/matrix-appservice-discord.service.j2"
|
||||||
|
dest: "/etc/systemd/system/matrix-appservice-discord.service"
|
||||||
|
mode: 0644
|
||||||
|
when: "matrix_appservice_discord_enabled"
|
||||||
|
|
||||||
|
- stat:
|
||||||
|
path: "{{ matrix_appservice_discord_base_path }}/discord-registration.yaml"
|
||||||
|
register: appservice_discord_registration_file
|
||||||
|
|
||||||
|
- name: Generate matrix-appservice-discord discord-registration.yaml if it doesn't exist
|
||||||
|
shell: /usr/bin/docker run --rm --name matrix-appservice-discord-gen -v {{ matrix_appservice_discord_base_path }}:/data:z {{ matrix_appservice_discord_docker_image }} node build/src/discordas.js -r -u "http://matrix-appservice-discord:9005" -c /data/config.yaml -f /data/discord-registration.yaml -l discord_bot
|
||||||
|
when: "matrix_appservice_discord_enabled and appservice_discord_registration_file.stat.exists == False"
|
||||||
|
|
||||||
|
- set_fact:
|
||||||
|
matrix_synapse_app_service_config_file_appservice_discord: '{{ matrix_appservice_discord_base_path }}/discord-registration.yml'
|
||||||
|
|
||||||
|
- set_fact:
|
||||||
|
matrix_synapse_container_additional_volumes: >
|
||||||
|
{{ matrix_synapse_container_additional_volumes }}
|
||||||
|
+
|
||||||
|
{{ [{'src': '{{ matrix_appservice_discord_base_path }}/discord-registration.yaml', 'dst': '{{ matrix_synapse_app_service_config_file_appservice_discord }}', 'options': 'ro'}] }}
|
||||||
|
when: "matrix_appservice_discord_enabled"
|
||||||
|
|
||||||
|
- set_fact:
|
||||||
|
matrix_synapse_app_service_config_files: >
|
||||||
|
{{ matrix_synapse_app_service_config_files }}
|
||||||
|
+
|
||||||
|
{{ ["{{ matrix_synapse_app_service_config_file_appservice_discord }}"] | to_nice_json }}
|
||||||
|
when: "matrix_appservice_discord_enabled"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Tasks related to getting rid of matrix-appservice-discord (if it was previously enabled)
|
||||||
|
#
|
||||||
|
|
||||||
|
- name: Ensure matrix-appservice-discord.service doesn't exist
|
||||||
|
file:
|
||||||
|
path: "/etc/systemd/system/matrix-appservice-discord.service"
|
||||||
|
state: absent
|
||||||
|
when: "not matrix_appservice_discord_enabled"
|
@ -5,3 +5,5 @@
|
|||||||
- import_tasks: "{{ role_path }}/tasks/ext/mautrix-whatsapp/init.yml"
|
- import_tasks: "{{ role_path }}/tasks/ext/mautrix-whatsapp/init.yml"
|
||||||
|
|
||||||
- import_tasks: "{{ role_path }}/tasks/ext/appservice-irc/init.yml"
|
- import_tasks: "{{ role_path }}/tasks/ext/appservice-irc/init.yml"
|
||||||
|
|
||||||
|
- import_tasks: "{{ role_path }}/tasks/ext/appservice-discord/init.yml"
|
||||||
|
@ -11,3 +11,5 @@
|
|||||||
- import_tasks: "{{ role_path }}/tasks/ext/mautrix-whatsapp/setup.yml"
|
- import_tasks: "{{ role_path }}/tasks/ext/mautrix-whatsapp/setup.yml"
|
||||||
|
|
||||||
- import_tasks: "{{ role_path }}/tasks/ext/appservice-irc/setup.yml"
|
- import_tasks: "{{ role_path }}/tasks/ext/appservice-irc/setup.yml"
|
||||||
|
|
||||||
|
- import_tasks: "{{ role_path }}/tasks/ext/appservice-discord/setup.yml"
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Matrix Appservice Discord server
|
||||||
|
After=docker.service
|
||||||
|
Requires=docker.service
|
||||||
|
Requires=matrix-synapse.service
|
||||||
|
After=matrix-synapse.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStartPre=-/usr/bin/docker kill matrix-appservice-discord
|
||||||
|
ExecStartPre=-/usr/bin/docker rm matrix-appservice-discord
|
||||||
|
ExecStart=/usr/bin/docker run --rm --name matrix-appservice-discord \
|
||||||
|
--log-driver=none \
|
||||||
|
-e "UID={{ matrix_user_uid }}" -e "GID={{ matrix_user_gid }}" \
|
||||||
|
--network={{ matrix_docker_network }} \
|
||||||
|
{% if matrix_appservice_discord_container_expose_client_server_api_port %}
|
||||||
|
-p 127.0.0.1:9005:9005 \
|
||||||
|
{% endif %}
|
||||||
|
-v {{ matrix_appservice_discord_base_path }}:/data \
|
||||||
|
{{ matrix_appservice_discord_docker_image }}
|
||||||
|
|
||||||
|
|
||||||
|
ExecStop=-/usr/bin/docker kill matrix-appservice-discord
|
||||||
|
ExecStop=-/usr/bin/docker rm matrix-appservice-discord
|
||||||
|
Restart=always
|
||||||
|
RestartSec=30
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user