Browse Source

Rename matrix_mautrix_telegram_* variables to matrix_bridge_mautrix_telegram_*

Part of adopting a uniform naming policy for bridge variables,
where the variable prefix matches the role directory name.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pull/5434/head
Slavi Pantaleev 14 hours ago
parent
commit
e751673b0d
12 changed files with 391 additions and 391 deletions
  1. +1
    -1
      docs/configuring-playbook-bridge-mautrix-bridges.md
  2. +4
    -4
      docs/configuring-playbook-bridge-mautrix-telegram.md
  3. +45
    -45
      group_vars/matrix_servers
  4. +129
    -129
      roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml
  5. +3
    -3
      roles/custom/matrix-bridge-mautrix-telegram/tasks/main.yml
  6. +54
    -54
      roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml
  7. +2
    -2
      roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_uninstall.yml
  8. +73
    -73
      roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config.yml
  9. +15
    -15
      roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config_sqlite_legacy_migration_bug.yml
  10. +32
    -32
      roles/custom/matrix-bridge-mautrix-telegram/templates/config.yaml.j2
  11. +23
    -23
      roles/custom/matrix-bridge-mautrix-telegram/templates/labels.j2
  12. +10
    -10
      roles/custom/matrix-bridge-mautrix-telegram/templates/systemd/matrix-mautrix-telegram.service.j2

+ 1
- 1
docs/configuring-playbook-bridge-mautrix-bridges.md View File

@@ -26,7 +26,7 @@ matrix_mautrix_SERVICENAME_enabled: true


**Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_bridge_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively. **Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_bridge_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively.


There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_mautrix_telegram_api_id` and `matrix_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges.
There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_bridge_mautrix_telegram_api_id` and `matrix_bridge_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges.


### Configure bridge permissions (optional) ### Configure bridge permissions (optional)




+ 4
- 4
docs/configuring-playbook-bridge-mautrix-telegram.md View File

@@ -36,9 +36,9 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `YOUR_TELEGRAM_APP_ID` and `YOUR_TELEGRAM_API_HASH`. To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `YOUR_TELEGRAM_APP_ID` and `YOUR_TELEGRAM_API_HASH`.


```yaml ```yaml
matrix_mautrix_telegram_enabled: true
matrix_mautrix_telegram_api_id: YOUR_TELEGRAM_APP_ID
matrix_mautrix_telegram_api_hash: YOUR_TELEGRAM_API_HASH
matrix_bridge_mautrix_telegram_enabled: true
matrix_bridge_mautrix_telegram_api_id: YOUR_TELEGRAM_APP_ID
matrix_bridge_mautrix_telegram_api_hash: YOUR_TELEGRAM_API_HASH
``` ```


### Relaying ### Relaying
@@ -86,5 +86,5 @@ The default logging level for this component is `warn`. If you want to increase


```yaml ```yaml
# Valid values: fatal, error, warn, info, debug, trace # Valid values: fatal, error, warn, info, debug, trace
matrix_mautrix_telegram_logging_level: debug
matrix_bridge_mautrix_telegram_logging_level: debug
``` ```

+ 45
- 45
group_vars/matrix_servers View File

@@ -126,7 +126,7 @@ matrix_homeserver_container_extra_arguments_auto: |
+ +
(['--mount type=bind,src=' + matrix_bridge_mautrix_meta_instagram_config_path + '/registration.yaml,dst=/matrix-mautrix-meta-instagram-registration.yaml,ro'] if matrix_bridge_mautrix_meta_instagram_enabled else []) (['--mount type=bind,src=' + matrix_bridge_mautrix_meta_instagram_config_path + '/registration.yaml,dst=/matrix-mautrix-meta-instagram-registration.yaml,ro'] if matrix_bridge_mautrix_meta_instagram_enabled else [])
+ +
(['--mount type=bind,src=' + matrix_mautrix_telegram_config_path + '/registration.yaml,dst=/matrix-mautrix-telegram-registration.yaml,ro'] if matrix_mautrix_telegram_enabled else [])
(['--mount type=bind,src=' + matrix_bridge_mautrix_telegram_config_path + '/registration.yaml,dst=/matrix-mautrix-telegram-registration.yaml,ro'] if matrix_bridge_mautrix_telegram_enabled else [])
+ +
(['--mount type=bind,src=' + matrix_mautrix_twitter_config_path + '/registration.yaml,dst=/matrix-mautrix-twitter-registration.yaml,ro'] if matrix_mautrix_twitter_enabled else []) (['--mount type=bind,src=' + matrix_mautrix_twitter_config_path + '/registration.yaml,dst=/matrix-mautrix-twitter-registration.yaml,ro'] if matrix_mautrix_twitter_enabled else [])
+ +
@@ -185,7 +185,7 @@ matrix_homeserver_app_service_config_files_auto: |
+ +
(['/matrix-mautrix-meta-instagram-registration.yaml'] if matrix_bridge_mautrix_meta_instagram_enabled else []) (['/matrix-mautrix-meta-instagram-registration.yaml'] if matrix_bridge_mautrix_meta_instagram_enabled else [])
+ +
(['/matrix-mautrix-telegram-registration.yaml'] if matrix_mautrix_telegram_enabled else [])
(['/matrix-mautrix-telegram-registration.yaml'] if matrix_bridge_mautrix_telegram_enabled else [])
+ +
(['/matrix-mautrix-twitter-registration.yaml'] if matrix_mautrix_twitter_enabled else []) (['/matrix-mautrix-twitter-registration.yaml'] if matrix_mautrix_twitter_enabled else [])
+ +
@@ -471,9 +471,9 @@ devture_systemd_service_manager_services_list_auto: |
([{ ([{
'name': 'matrix-mautrix-telegram.service', 'name': 'matrix-mautrix-telegram.service',
'priority': 2000, 'priority': 2000,
'restart_necessary': (matrix_mautrix_telegram_restart_necessary | bool),
'restart_necessary': (matrix_bridge_mautrix_telegram_restart_necessary | bool),
'groups': ['matrix', 'bridges', 'mautrix-telegram'], 'groups': ['matrix', 'bridges', 'mautrix-telegram'],
}] if matrix_mautrix_telegram_enabled else [])
}] if matrix_bridge_mautrix_telegram_enabled else [])
+ +
([{ ([{
'name': 'matrix-mautrix-twitter.service', 'name': 'matrix-mautrix-twitter.service',
@@ -1975,74 +1975,74 @@ matrix_bridge_mautrix_meta_instagram_database_password: "{{ ((matrix_homeserver_
###################################################################### ######################################################################


# We don't enable bridges by default. # We don't enable bridges by default.
matrix_mautrix_telegram_enabled: false
matrix_bridge_mautrix_telegram_enabled: false


matrix_mautrix_telegram_systemd_required_services_list_auto: |
matrix_bridge_mautrix_telegram_systemd_required_services_list_auto: |
{{ {{
matrix_addons_homeserver_systemd_services_list matrix_addons_homeserver_systemd_services_list
+ +
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_telegram_database_hostname == postgres_connection_hostname) else [])
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_bridge_mautrix_telegram_database_hostname == postgres_connection_hostname) else [])
}} }}


matrix_mautrix_telegram_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_telegram_container_image_registry_prefix_upstream_default }}"
matrix_bridge_mautrix_telegram_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bridge_mautrix_telegram_container_image_registry_prefix_upstream_default }}"


matrix_mautrix_telegram_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}"
matrix_bridge_mautrix_telegram_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}"


matrix_mautrix_telegram_container_network: "{{ matrix_addons_container_network }}"
matrix_bridge_mautrix_telegram_container_network: "{{ matrix_addons_container_network }}"


matrix_mautrix_telegram_container_additional_networks_auto: |-
matrix_bridge_mautrix_telegram_container_additional_networks_auto: |-
{{ {{
( (
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
+ +
([postgres_container_network] if (postgres_enabled and matrix_mautrix_telegram_database_hostname == postgres_connection_hostname and matrix_mautrix_telegram_container_network != postgres_container_network) else [])
([postgres_container_network] if (postgres_enabled and matrix_bridge_mautrix_telegram_database_hostname == postgres_connection_hostname and matrix_bridge_mautrix_telegram_container_network != postgres_container_network) else [])
+ +
([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_mautrix_telegram_container_labels_traefik_enabled) else [])
([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_bridge_mautrix_telegram_container_labels_traefik_enabled) else [])
) | unique ) | unique
}} }}


matrix_mautrix_telegram_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}"
matrix_mautrix_telegram_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
matrix_mautrix_telegram_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
matrix_mautrix_telegram_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}"
matrix_bridge_mautrix_telegram_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}"
matrix_bridge_mautrix_telegram_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
matrix_bridge_mautrix_telegram_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
matrix_bridge_mautrix_telegram_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}"


matrix_mautrix_telegram_container_labels_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}"
matrix_mautrix_telegram_container_labels_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}"
matrix_bridge_mautrix_telegram_container_labels_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}"
matrix_bridge_mautrix_telegram_container_labels_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}"


matrix_mautrix_telegram_appservice_token: "{{ (matrix_homeserver_generic_secret_key + ':telegr.as.token') | hash('sha512') | to_uuid }}"
matrix_bridge_mautrix_telegram_appservice_token: "{{ (matrix_homeserver_generic_secret_key + ':telegr.as.token') | hash('sha512') | to_uuid }}"


matrix_mautrix_telegram_homeserver_domain: "{{ matrix_domain }}"
matrix_mautrix_telegram_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
matrix_mautrix_telegram_homeserver_token: "{{ (matrix_homeserver_generic_secret_key + ':telegr.hs.token') | hash('sha512') | to_uuid }}"
matrix_bridge_mautrix_telegram_homeserver_domain: "{{ matrix_domain }}"
matrix_bridge_mautrix_telegram_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
matrix_bridge_mautrix_telegram_homeserver_token: "{{ (matrix_homeserver_generic_secret_key + ':telegr.hs.token') | hash('sha512') | to_uuid }}"


matrix_mautrix_telegram_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}"
matrix_bridge_mautrix_telegram_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}"


matrix_mautrix_telegram_provisioning_shared_secret: "{{ (matrix_homeserver_generic_secret_key + ':mau.telegram.prov') | hash('sha512') | to_uuid }}"
matrix_bridge_mautrix_telegram_provisioning_shared_secret: "{{ (matrix_homeserver_generic_secret_key + ':mau.telegram.prov') | hash('sha512') | to_uuid }}"


matrix_mautrix_telegram_double_puppet_secrets_auto: |-
matrix_bridge_mautrix_telegram_double_puppet_secrets_auto: |-
{{ {{
{ {
matrix_mautrix_telegram_homeserver_domain: ("as_token:" + matrix_appservice_double_puppet_registration_as_token)
matrix_bridge_mautrix_telegram_homeserver_domain: ("as_token:" + matrix_appservice_double_puppet_registration_as_token)
} }
if matrix_appservice_double_puppet_enabled if matrix_appservice_double_puppet_enabled
else {} else {}
}} }}


matrix_mautrix_telegram_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}"
matrix_bridge_mautrix_telegram_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}"


matrix_mautrix_telegram_metrics_proxying_enabled: "{{ matrix_mautrix_telegram_metrics_enabled and matrix_metrics_exposure_enabled }}"
matrix_mautrix_telegram_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}"
matrix_mautrix_telegram_metrics_proxying_path_prefix: "{{ matrix_metrics_exposure_path_prefix }}/mautrix-telegram"
matrix_bridge_mautrix_telegram_metrics_proxying_enabled: "{{ matrix_bridge_mautrix_telegram_metrics_enabled and matrix_metrics_exposure_enabled }}"
matrix_bridge_mautrix_telegram_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}"
matrix_bridge_mautrix_telegram_metrics_proxying_path_prefix: "{{ matrix_metrics_exposure_path_prefix }}/mautrix-telegram"


matrix_mautrix_telegram_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}"
matrix_mautrix_telegram_exposure_enabled: "{{ matrix_bridges_exposure_enabled }}"
matrix_mautrix_telegram_exposure_hostname: "{{ matrix_bridges_exposure_hostname }}"
matrix_mautrix_telegram_exposure_path_prefix: "{{ matrix_bridges_exposure_path_prefix }}/telegram"
matrix_bridge_mautrix_telegram_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}"
matrix_bridge_mautrix_telegram_exposure_enabled: "{{ matrix_bridges_exposure_enabled }}"
matrix_bridge_mautrix_telegram_exposure_hostname: "{{ matrix_bridges_exposure_hostname }}"
matrix_bridge_mautrix_telegram_exposure_path_prefix: "{{ matrix_bridges_exposure_path_prefix }}/telegram"


# Postgres is the default, except if not using internal Postgres server # Postgres is the default, except if not using internal Postgres server
matrix_mautrix_telegram_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}"
matrix_mautrix_telegram_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
matrix_mautrix_telegram_database_password: "{{ (matrix_homeserver_generic_secret_key + ':mau.telegram.db') | hash('sha512') | to_uuid }}"
matrix_bridge_mautrix_telegram_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}"
matrix_bridge_mautrix_telegram_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
matrix_bridge_mautrix_telegram_database_password: "{{ (matrix_homeserver_generic_secret_key + ':mau.telegram.db') | hash('sha512') | to_uuid }}"


###################################################################### ######################################################################
# #
@@ -4213,10 +4213,10 @@ postgres_managed_databases_auto: |
}] if (matrix_bridge_mautrix_wsproxy_enabled and matrix_bridge_mautrix_wsproxy_syncproxy_database_engine == 'postgres' and matrix_bridge_mautrix_wsproxy_syncproxy_database_hostname == 'matrix-postgres') else []) }] if (matrix_bridge_mautrix_wsproxy_enabled and matrix_bridge_mautrix_wsproxy_syncproxy_database_engine == 'postgres' and matrix_bridge_mautrix_wsproxy_syncproxy_database_hostname == 'matrix-postgres') else [])
+ +
([{ ([{
'name': matrix_mautrix_telegram_database_name,
'username': matrix_mautrix_telegram_database_username,
'password': matrix_mautrix_telegram_database_password,
}] if (matrix_mautrix_telegram_enabled and matrix_mautrix_telegram_database_engine == 'postgres' and matrix_mautrix_telegram_database_hostname == postgres_connection_hostname) else [])
'name': matrix_bridge_mautrix_telegram_database_name,
'username': matrix_bridge_mautrix_telegram_database_username,
'password': matrix_bridge_mautrix_telegram_database_password,
}] if (matrix_bridge_mautrix_telegram_enabled and matrix_bridge_mautrix_telegram_database_engine == 'postgres' and matrix_bridge_mautrix_telegram_database_hostname == postgres_connection_hostname) else [])
+ +
([{ ([{
'name': matrix_mautrix_twitter_database_name, 'name': matrix_mautrix_twitter_database_name,
@@ -5171,9 +5171,9 @@ matrix_ketesa_config_asManagedUsers_auto: |
] if matrix_bridge_mautrix_slack_enabled else []) ] if matrix_bridge_mautrix_slack_enabled else [])
+ +
([ ([
'^@'+(matrix_mautrix_telegram_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$',
'^@'+(matrix_bridge_mautrix_telegram_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$',
'^@telegram_(channel-)?[0-9]+:'+(matrix_domain | regex_escape)+'$', '^@telegram_(channel-)?[0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_mautrix_telegram_enabled else [])
] if matrix_bridge_mautrix_telegram_enabled else [])
+ +
([ ([
'^@'+(matrix_mautrix_twitter_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', '^@'+(matrix_mautrix_twitter_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$',
@@ -6019,7 +6019,7 @@ matrix_static_files_file_matrix_mautrix_property_fi_mau_bridges_auto: |-
matrix_bridge_mautrix_meta_messenger_bridge_public_address if (matrix_bridge_mautrix_meta_messenger_enabled and matrix_bridge_mautrix_meta_messenger_container_labels_traefik_enabled and matrix_bridge_mautrix_meta_messenger_container_labels_exposure_enabled) else '', matrix_bridge_mautrix_meta_messenger_bridge_public_address if (matrix_bridge_mautrix_meta_messenger_enabled and matrix_bridge_mautrix_meta_messenger_container_labels_traefik_enabled and matrix_bridge_mautrix_meta_messenger_container_labels_exposure_enabled) else '',
matrix_bridge_mautrix_signal_bridge_public_address if (matrix_bridge_mautrix_signal_enabled and matrix_bridge_mautrix_signal_container_labels_traefik_enabled and matrix_bridge_mautrix_signal_container_labels_exposure_enabled) else '', matrix_bridge_mautrix_signal_bridge_public_address if (matrix_bridge_mautrix_signal_enabled and matrix_bridge_mautrix_signal_container_labels_traefik_enabled and matrix_bridge_mautrix_signal_container_labels_exposure_enabled) else '',
matrix_bridge_mautrix_slack_bridge_public_address if (matrix_bridge_mautrix_slack_enabled and matrix_bridge_mautrix_slack_container_labels_traefik_enabled and matrix_bridge_mautrix_slack_container_labels_exposure_enabled) else '', matrix_bridge_mautrix_slack_bridge_public_address if (matrix_bridge_mautrix_slack_enabled and matrix_bridge_mautrix_slack_container_labels_traefik_enabled and matrix_bridge_mautrix_slack_container_labels_exposure_enabled) else '',
matrix_mautrix_telegram_bridge_public_address if (matrix_mautrix_telegram_enabled and matrix_mautrix_telegram_container_labels_traefik_enabled and matrix_mautrix_telegram_container_labels_exposure_enabled) else '',
matrix_bridge_mautrix_telegram_bridge_public_address if (matrix_bridge_mautrix_telegram_enabled and matrix_bridge_mautrix_telegram_container_labels_traefik_enabled and matrix_bridge_mautrix_telegram_container_labels_exposure_enabled) else '',
matrix_mautrix_twitter_appservice_public_address if (matrix_mautrix_twitter_enabled and matrix_mautrix_twitter_container_labels_traefik_enabled and matrix_mautrix_twitter_container_labels_exposure_enabled) else '', matrix_mautrix_twitter_appservice_public_address if (matrix_mautrix_twitter_enabled and matrix_mautrix_twitter_container_labels_traefik_enabled and matrix_mautrix_twitter_container_labels_exposure_enabled) else '',
matrix_mautrix_whatsapp_bridge_public_address if (matrix_mautrix_whatsapp_enabled and matrix_mautrix_whatsapp_container_labels_traefik_enabled and matrix_mautrix_whatsapp_container_labels_exposure_enabled) else '', matrix_mautrix_whatsapp_bridge_public_address if (matrix_mautrix_whatsapp_enabled and matrix_mautrix_whatsapp_container_labels_traefik_enabled and matrix_mautrix_whatsapp_container_labels_exposure_enabled) else '',
] | select | list ] | select | list


+ 129
- 129
roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml View File

@@ -19,167 +19,167 @@
# mautrix-telegram is a Matrix <-> Telegram bridge # mautrix-telegram is a Matrix <-> Telegram bridge
# Project source code URL: https://github.com/mautrix/telegram # Project source code URL: https://github.com/mautrix/telegram


matrix_mautrix_telegram_enabled: true
matrix_bridge_mautrix_telegram_enabled: true


matrix_mautrix_telegram_container_image_self_build: false
matrix_mautrix_telegram_container_image_self_build_repo: "https://mau.dev/mautrix/telegram.git"
matrix_mautrix_telegram_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_telegram_version == 'latest' else matrix_mautrix_telegram_version }}"
matrix_bridge_mautrix_telegram_container_image_self_build: false
matrix_bridge_mautrix_telegram_container_image_self_build_repo: "https://mau.dev/mautrix/telegram.git"
matrix_bridge_mautrix_telegram_container_image_self_build_branch: "{{ 'main' if matrix_bridge_mautrix_telegram_version == 'latest' else matrix_bridge_mautrix_telegram_version }}"


# renovate: datasource=docker depName=dock.mau.dev/mautrix/telegram # renovate: datasource=docker depName=dock.mau.dev/mautrix/telegram
matrix_mautrix_telegram_version: v0.2606.0
matrix_bridge_mautrix_telegram_version: v0.2606.0


# See: https://mau.dev/mautrix/telegram/container_registry # See: https://mau.dev/mautrix/telegram/container_registry
matrix_mautrix_telegram_container_image: "{{ matrix_mautrix_telegram_container_image_registry_prefix }}mautrix/telegram:{{ matrix_mautrix_telegram_version }}"
matrix_mautrix_telegram_container_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_telegram_container_image_self_build else matrix_mautrix_telegram_container_image_registry_prefix_upstream }}"
matrix_mautrix_telegram_container_image_registry_prefix_upstream: "{{ matrix_mautrix_telegram_container_image_registry_prefix_upstream_default }}"
matrix_mautrix_telegram_container_image_registry_prefix_upstream_default: "dock.mau.dev/"
matrix_mautrix_telegram_base_path: "{{ matrix_base_data_path }}/mautrix-telegram"
matrix_mautrix_telegram_config_path: "{{ matrix_mautrix_telegram_base_path }}/config"
matrix_mautrix_telegram_data_path: "{{ matrix_mautrix_telegram_base_path }}/data"
matrix_mautrix_telegram_container_src_files_path: "{{ matrix_mautrix_telegram_base_path }}/docker-src"
matrix_mautrix_telegram_homeserver_address: ""
matrix_mautrix_telegram_homeserver_domain: '{{ matrix_domain }}'
matrix_bridge_mautrix_telegram_container_image: "{{ matrix_bridge_mautrix_telegram_container_image_registry_prefix }}mautrix/telegram:{{ matrix_bridge_mautrix_telegram_version }}"
matrix_bridge_mautrix_telegram_container_image_registry_prefix: "{{ 'localhost/' if matrix_bridge_mautrix_telegram_container_image_self_build else matrix_bridge_mautrix_telegram_container_image_registry_prefix_upstream }}"
matrix_bridge_mautrix_telegram_container_image_registry_prefix_upstream: "{{ matrix_bridge_mautrix_telegram_container_image_registry_prefix_upstream_default }}"
matrix_bridge_mautrix_telegram_container_image_registry_prefix_upstream_default: "dock.mau.dev/"
matrix_bridge_mautrix_telegram_base_path: "{{ matrix_base_data_path }}/mautrix-telegram"
matrix_bridge_mautrix_telegram_config_path: "{{ matrix_bridge_mautrix_telegram_base_path }}/config"
matrix_bridge_mautrix_telegram_data_path: "{{ matrix_bridge_mautrix_telegram_base_path }}/data"
matrix_bridge_mautrix_telegram_container_src_files_path: "{{ matrix_bridge_mautrix_telegram_base_path }}/docker-src"
matrix_bridge_mautrix_telegram_homeserver_address: ""
matrix_bridge_mautrix_telegram_homeserver_domain: '{{ matrix_domain }}'
# Whether asynchronous uploads via MSC2246 should be enabled for media. # Whether asynchronous uploads via MSC2246 should be enabled for media.
# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). # Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246).
matrix_mautrix_telegram_homeserver_async_media: false
matrix_mautrix_telegram_appservice_address: 'http://matrix-mautrix-telegram:8080'
matrix_bridge_mautrix_telegram_homeserver_async_media: false
matrix_bridge_mautrix_telegram_appservice_address: 'http://matrix-mautrix-telegram:8080'


# Scheme of the bridge's public address (see `matrix_mautrix_telegram_bridge_public_address`).
matrix_mautrix_telegram_scheme: https
# Scheme of the bridge's public address (see `matrix_bridge_mautrix_telegram_bridge_public_address`).
matrix_bridge_mautrix_telegram_scheme: https


# The public base URL at which this bridge's HTTP API is reachable from outside (when exposed). # The public base URL at which this bridge's HTTP API is reachable from outside (when exposed).
# Used for the provisioning API's external-server (OpenID) flow and for public media links. # Used for the provisioning API's external-server (OpenID) flow and for public media links.
matrix_mautrix_telegram_bridge_public_address: "{{ (matrix_mautrix_telegram_scheme + '://' + matrix_mautrix_telegram_exposure_hostname + matrix_mautrix_telegram_exposure_path_prefix) if matrix_mautrix_telegram_exposure_enabled else '' }}"
matrix_bridge_mautrix_telegram_bridge_public_address: "{{ (matrix_bridge_mautrix_telegram_scheme + '://' + matrix_bridge_mautrix_telegram_exposure_hostname + matrix_bridge_mautrix_telegram_exposure_path_prefix) if matrix_bridge_mautrix_telegram_exposure_enabled else '' }}"


matrix_mautrix_telegram_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}"
matrix_mautrix_telegram_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}"
matrix_bridge_mautrix_telegram_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}"
matrix_bridge_mautrix_telegram_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}"


matrix_mautrix_telegram_command_prefix: "!tg"
matrix_bridge_mautrix_telegram_command_prefix: "!tg"


# Get your own API keys at https://my.telegram.org/apps # Get your own API keys at https://my.telegram.org/apps
matrix_mautrix_telegram_api_id: ''
matrix_mautrix_telegram_api_hash: ''
matrix_bridge_mautrix_telegram_api_id: ''
matrix_bridge_mautrix_telegram_api_hash: ''


matrix_mautrix_telegram_container_network: ""
matrix_bridge_mautrix_telegram_container_network: ""


matrix_mautrix_telegram_container_additional_networks: "{{ matrix_mautrix_telegram_container_additional_networks_auto + matrix_mautrix_telegram_container_additional_networks_custom }}"
matrix_mautrix_telegram_container_additional_networks_auto: []
matrix_mautrix_telegram_container_additional_networks_custom: []
matrix_bridge_mautrix_telegram_container_additional_networks: "{{ matrix_bridge_mautrix_telegram_container_additional_networks_auto + matrix_bridge_mautrix_telegram_container_additional_networks_custom }}"
matrix_bridge_mautrix_telegram_container_additional_networks_auto: []
matrix_bridge_mautrix_telegram_container_additional_networks_custom: []


# matrix_mautrix_telegram_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
# matrix_bridge_mautrix_telegram_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
# See `../templates/labels.j2` for details. # See `../templates/labels.j2` for details.
# #
# To inject your own other container labels, see `matrix_mautrix_telegram_container_labels_additional_labels`.
matrix_mautrix_telegram_container_labels_traefik_enabled: true
matrix_mautrix_telegram_container_labels_traefik_docker_network: "{{ matrix_mautrix_telegram_container_network }}"
matrix_mautrix_telegram_container_labels_traefik_entrypoints: web-secure
matrix_mautrix_telegram_container_labels_traefik_tls_certResolver: default # noqa var-naming
# To inject your own other container labels, see `matrix_bridge_mautrix_telegram_container_labels_additional_labels`.
matrix_bridge_mautrix_telegram_container_labels_traefik_enabled: true
matrix_bridge_mautrix_telegram_container_labels_traefik_docker_network: "{{ matrix_bridge_mautrix_telegram_container_network }}"
matrix_bridge_mautrix_telegram_container_labels_traefik_entrypoints: web-secure
matrix_bridge_mautrix_telegram_container_labels_traefik_tls_certResolver: default # noqa var-naming


# Controls whether labels will be added that expose mautrix-telegram's metrics # Controls whether labels will be added that expose mautrix-telegram's metrics
matrix_mautrix_telegram_container_labels_metrics_enabled: "{{ matrix_mautrix_telegram_metrics_enabled and matrix_mautrix_telegram_metrics_proxying_enabled }}"
matrix_mautrix_telegram_container_labels_metrics_traefik_rule: "Host(`{{ matrix_mautrix_telegram_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_mautrix_telegram_metrics_proxying_path_prefix }}`)"
matrix_mautrix_telegram_container_labels_metrics_traefik_priority: 0
matrix_mautrix_telegram_container_labels_metrics_traefik_entrypoints: "{{ matrix_mautrix_telegram_container_labels_traefik_entrypoints }}"
matrix_mautrix_telegram_container_labels_metrics_traefik_tls: "{{ matrix_mautrix_telegram_container_labels_metrics_traefik_entrypoints != 'web' }}"
matrix_mautrix_telegram_container_labels_metrics_traefik_tls_certResolver: "{{ matrix_mautrix_telegram_container_labels_traefik_tls_certResolver }}" # noqa var-naming
matrix_mautrix_telegram_container_labels_metrics_middleware_basic_auth_enabled: false
matrix_bridge_mautrix_telegram_container_labels_metrics_enabled: "{{ matrix_bridge_mautrix_telegram_metrics_enabled and matrix_bridge_mautrix_telegram_metrics_proxying_enabled }}"
matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_rule: "Host(`{{ matrix_bridge_mautrix_telegram_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_bridge_mautrix_telegram_metrics_proxying_path_prefix }}`)"
matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_priority: 0
matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_entrypoints: "{{ matrix_bridge_mautrix_telegram_container_labels_traefik_entrypoints }}"
matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_tls: "{{ matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_entrypoints != 'web' }}"
matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_tls_certResolver: "{{ matrix_bridge_mautrix_telegram_container_labels_traefik_tls_certResolver }}" # noqa var-naming
matrix_bridge_mautrix_telegram_container_labels_metrics_middleware_basic_auth_enabled: false
# See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users # See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users
matrix_mautrix_telegram_container_labels_metrics_middleware_basic_auth_users: ''
matrix_bridge_mautrix_telegram_container_labels_metrics_middleware_basic_auth_users: ''


# Controls whether labels will be added that expose mautrix-telegram's HTTP API # Controls whether labels will be added that expose mautrix-telegram's HTTP API
# (used by tools like mautrix-manager for bridge login) at `https://<hostname><path_prefix>`. # (used by tools like mautrix-manager for bridge login) at `https://<hostname><path_prefix>`.
matrix_mautrix_telegram_container_labels_exposure_enabled: "{{ matrix_mautrix_telegram_exposure_enabled }}"
matrix_mautrix_telegram_container_labels_exposure_traefik_rule: "Host(`{{ matrix_mautrix_telegram_exposure_hostname }}`) && PathPrefix(`{{ matrix_mautrix_telegram_exposure_path_prefix }}`)"
matrix_mautrix_telegram_container_labels_exposure_traefik_priority: 0
matrix_mautrix_telegram_container_labels_exposure_traefik_entrypoints: "{{ matrix_mautrix_telegram_container_labels_traefik_entrypoints }}"
matrix_mautrix_telegram_container_labels_exposure_traefik_tls: "{{ matrix_mautrix_telegram_container_labels_exposure_traefik_entrypoints != 'web' }}"
matrix_mautrix_telegram_container_labels_exposure_traefik_tls_certResolver: "{{ matrix_mautrix_telegram_container_labels_traefik_tls_certResolver }}" # noqa var-naming
# matrix_mautrix_telegram_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file.
matrix_bridge_mautrix_telegram_container_labels_exposure_enabled: "{{ matrix_bridge_mautrix_telegram_exposure_enabled }}"
matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_rule: "Host(`{{ matrix_bridge_mautrix_telegram_exposure_hostname }}`) && PathPrefix(`{{ matrix_bridge_mautrix_telegram_exposure_path_prefix }}`)"
matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_priority: 0
matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_entrypoints: "{{ matrix_bridge_mautrix_telegram_container_labels_traefik_entrypoints }}"
matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_tls: "{{ matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_entrypoints != 'web' }}"
matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_tls_certResolver: "{{ matrix_bridge_mautrix_telegram_container_labels_traefik_tls_certResolver }}" # noqa var-naming
# matrix_bridge_mautrix_telegram_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file.
# See `../templates/labels.j2` for details. # See `../templates/labels.j2` for details.
# #
# Example: # Example:
# matrix_mautrix_telegram_container_labels_additional_labels: |
# matrix_bridge_mautrix_telegram_container_labels_additional_labels: |
# my.label=1 # my.label=1
# another.label="here" # another.label="here"
matrix_mautrix_telegram_container_labels_additional_labels: ''
matrix_bridge_mautrix_telegram_container_labels_additional_labels: ''


# A list of extra arguments to pass to the container # A list of extra arguments to pass to the container
matrix_mautrix_telegram_container_extra_arguments: []
matrix_bridge_mautrix_telegram_container_extra_arguments: []


# List of systemd services that matrix-mautrix-telegram.service depends on. # List of systemd services that matrix-mautrix-telegram.service depends on.
matrix_mautrix_telegram_systemd_required_services_list: "{{ matrix_mautrix_telegram_systemd_required_services_list_default + matrix_mautrix_telegram_systemd_required_services_list_auto + matrix_mautrix_telegram_systemd_required_services_list_custom }}"
matrix_mautrix_telegram_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_mautrix_telegram_systemd_required_services_list_auto: []
matrix_mautrix_telegram_systemd_required_services_list_custom: []
matrix_bridge_mautrix_telegram_systemd_required_services_list: "{{ matrix_bridge_mautrix_telegram_systemd_required_services_list_default + matrix_bridge_mautrix_telegram_systemd_required_services_list_auto + matrix_bridge_mautrix_telegram_systemd_required_services_list_custom }}"
matrix_bridge_mautrix_telegram_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_bridge_mautrix_telegram_systemd_required_services_list_auto: []
matrix_bridge_mautrix_telegram_systemd_required_services_list_custom: []


# List of systemd services that matrix-mautrix-telegram.service wants # List of systemd services that matrix-mautrix-telegram.service wants
matrix_mautrix_telegram_systemd_wanted_services_list: []
matrix_bridge_mautrix_telegram_systemd_wanted_services_list: []


matrix_mautrix_telegram_appservice_token: ''
matrix_mautrix_telegram_homeserver_token: ''
matrix_bridge_mautrix_telegram_appservice_token: ''
matrix_bridge_mautrix_telegram_homeserver_token: ''


matrix_mautrix_telegram_appservice_bot_username: telegrambot
matrix_bridge_mautrix_telegram_appservice_bot_username: telegrambot


# Minimum severity of journal log messages. # Minimum severity of journal log messages.
# Valid values: fatal, error, warn, info, debug, trace # Valid values: fatal, error, warn, info, debug, trace
matrix_mautrix_telegram_logging_level: 'warn'
matrix_bridge_mautrix_telegram_logging_level: 'warn'


# Whether or not created rooms should have federation enabled. # Whether or not created rooms should have federation enabled.
# If false, created portal rooms will never be federated. # If false, created portal rooms will never be federated.
matrix_mautrix_telegram_federate_rooms: true
matrix_bridge_mautrix_telegram_federate_rooms: true


# Whether or not metrics endpoint should be enabled. # Whether or not metrics endpoint should be enabled.
# Enabling them is usually enough for a local (in-container) Prometheus to consume them. # Enabling them is usually enough for a local (in-container) Prometheus to consume them.
# If metrics need to be consumed by another (external) Prometheus server, consider exposing them via `matrix_mautrix_telegram_metrics_proxying_enabled`.
matrix_mautrix_telegram_metrics_enabled: false
# If metrics need to be consumed by another (external) Prometheus server, consider exposing them via `matrix_bridge_mautrix_telegram_metrics_proxying_enabled`.
matrix_bridge_mautrix_telegram_metrics_enabled: false


# Controls whether metrics should be proxied (exposed) on a public URL # Controls whether metrics should be proxied (exposed) on a public URL
matrix_mautrix_telegram_metrics_proxying_enabled: false
matrix_mautrix_telegram_metrics_proxying_hostname: ''
matrix_mautrix_telegram_metrics_proxying_path_prefix: ''
matrix_bridge_mautrix_telegram_metrics_proxying_enabled: false
matrix_bridge_mautrix_telegram_metrics_proxying_hostname: ''
matrix_bridge_mautrix_telegram_metrics_proxying_path_prefix: ''


# Controls whether mautrix-telegram's HTTP API is exposed publicly (used by tools like mautrix-manager for bridge login). # Controls whether mautrix-telegram's HTTP API is exposed publicly (used by tools like mautrix-manager for bridge login).
matrix_mautrix_telegram_exposure_enabled: false
matrix_mautrix_telegram_exposure_hostname: ''
matrix_mautrix_telegram_exposure_path_prefix: ''
matrix_bridge_mautrix_telegram_exposure_enabled: false
matrix_bridge_mautrix_telegram_exposure_hostname: ''
matrix_bridge_mautrix_telegram_exposure_path_prefix: ''


# Database-related configuration fields. # Database-related configuration fields.
# #
# To use SQLite, stick to these defaults. # To use SQLite, stick to these defaults.
# #
# To use Postgres: # To use Postgres:
# - change the engine (`matrix_mautrix_telegram_database_engine: 'postgres'`)
# - adjust your database credentials via the `matrix_mautrix_telegram_database_*` variables
matrix_mautrix_telegram_database_engine: 'sqlite'
# - change the engine (`matrix_bridge_mautrix_telegram_database_engine: 'postgres'`)
# - adjust your database credentials via the `matrix_bridge_mautrix_telegram_database_*` variables
matrix_bridge_mautrix_telegram_database_engine: 'sqlite'


matrix_mautrix_telegram_sqlite_database_path_local: "{{ matrix_mautrix_telegram_data_path }}/mautrix-telegram.db"
matrix_mautrix_telegram_sqlite_database_path_in_container: "/data/mautrix-telegram.db"
matrix_bridge_mautrix_telegram_sqlite_database_path_local: "{{ matrix_bridge_mautrix_telegram_data_path }}/mautrix-telegram.db"
matrix_bridge_mautrix_telegram_sqlite_database_path_in_container: "/data/mautrix-telegram.db"


matrix_mautrix_telegram_database_username: 'matrix_mautrix_telegram'
matrix_mautrix_telegram_database_password: 'some-password'
matrix_mautrix_telegram_database_hostname: ''
matrix_mautrix_telegram_database_port: 5432
matrix_mautrix_telegram_database_name: 'matrix_mautrix_telegram'
matrix_mautrix_telegram_database_sslmode: disable
matrix_bridge_mautrix_telegram_database_username: 'matrix_mautrix_telegram'
matrix_bridge_mautrix_telegram_database_password: 'some-password'
matrix_bridge_mautrix_telegram_database_hostname: ''
matrix_bridge_mautrix_telegram_database_port: 5432
matrix_bridge_mautrix_telegram_database_name: 'matrix_mautrix_telegram'
matrix_bridge_mautrix_telegram_database_sslmode: disable


matrix_mautrix_telegram_database_connection_string: 'postgresql://{{ matrix_mautrix_telegram_database_username }}:{{ matrix_mautrix_telegram_database_password }}@{{ matrix_mautrix_telegram_database_hostname }}:{{ matrix_mautrix_telegram_database_port }}/{{ matrix_mautrix_telegram_database_name }}?sslmode={{ matrix_mautrix_telegram_database_sslmode }}'
matrix_bridge_mautrix_telegram_database_connection_string: 'postgresql://{{ matrix_bridge_mautrix_telegram_database_username }}:{{ matrix_bridge_mautrix_telegram_database_password }}@{{ matrix_bridge_mautrix_telegram_database_hostname }}:{{ matrix_bridge_mautrix_telegram_database_port }}/{{ matrix_bridge_mautrix_telegram_database_name }}?sslmode={{ matrix_bridge_mautrix_telegram_database_sslmode }}'


matrix_mautrix_telegram_appservice_database_type: "{{ {
matrix_bridge_mautrix_telegram_appservice_database_type: "{{ {
'sqlite': 'sqlite3-fk-wal', 'sqlite': 'sqlite3-fk-wal',
'postgres': 'postgres', 'postgres': 'postgres',
}[matrix_mautrix_telegram_database_engine] }}"
}[matrix_bridge_mautrix_telegram_database_engine] }}"


matrix_mautrix_telegram_appservice_database_uri: "{{ {
'sqlite': matrix_mautrix_telegram_sqlite_database_path_in_container,
'postgres': matrix_mautrix_telegram_database_connection_string,
}[matrix_mautrix_telegram_database_engine] }}"
matrix_bridge_mautrix_telegram_appservice_database_uri: "{{ {
'sqlite': matrix_bridge_mautrix_telegram_sqlite_database_path_in_container,
'postgres': matrix_bridge_mautrix_telegram_database_connection_string,
}[matrix_bridge_mautrix_telegram_database_engine] }}"


matrix_mautrix_telegram_double_puppet_secrets: "{{ matrix_mautrix_telegram_double_puppet_secrets_auto | combine(matrix_mautrix_telegram_double_puppet_secrets_custom) }}"
matrix_mautrix_telegram_double_puppet_secrets_auto: {}
matrix_mautrix_telegram_double_puppet_secrets_custom: {}
matrix_bridge_mautrix_telegram_double_puppet_secrets: "{{ matrix_bridge_mautrix_telegram_double_puppet_secrets_auto | combine(matrix_bridge_mautrix_telegram_double_puppet_secrets_custom) }}"
matrix_bridge_mautrix_telegram_double_puppet_secrets_auto: {}
matrix_bridge_mautrix_telegram_double_puppet_secrets_custom: {}


# Displayname template for Telegram users. # Displayname template for Telegram users.
# Available variables: # Available variables:
@@ -189,83 +189,83 @@ matrix_mautrix_telegram_double_puppet_secrets_custom: {}
# {{ .Username }} - the primary username of the Telegram user, if the user has one # {{ .Username }} - the primary username of the Telegram user, if the user has one
# {{ .UserID }} - the internal user ID of the Telegram user # {{ .UserID }} - the internal user ID of the Telegram user
# {{ .Deleted }} - true if the user has been deleted, false otherwise # {{ .Deleted }} - true if the user has been deleted, false otherwise
matrix_mautrix_telegram_network_displayname_template: '{% raw %}{{ if .Deleted }}Deleted account {{ .UserID }}{{ else }}{{ .FullName }}{{ end }}{% endraw %}'
matrix_bridge_mautrix_telegram_network_displayname_template: '{% raw %}{{ if .Deleted }}Deleted account {{ .UserID }}{{ else }}{{ .FullName }}{{ end }}{% endraw %}'


# Enable End-to-bridge encryption # Enable End-to-bridge encryption
matrix_mautrix_telegram_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}"
matrix_mautrix_telegram_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}"
matrix_mautrix_telegram_bridge_encryption_require: false
matrix_mautrix_telegram_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_telegram_bridge_encryption_allow }}"
matrix_bridge_mautrix_telegram_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}"
matrix_bridge_mautrix_telegram_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}"
matrix_bridge_mautrix_telegram_bridge_encryption_require: false
matrix_bridge_mautrix_telegram_bridge_encryption_key_sharing_allow: "{{ matrix_bridge_mautrix_telegram_bridge_encryption_allow }}"
# This pickle key value is backward-compatible with the legacy (Python) bridge. # This pickle key value is backward-compatible with the legacy (Python) bridge.
# See: https://mau.dev/mautrix/telegram/-/blob/v0.2604.0/cmd/mautrix-telegram/legacymigrate.go # See: https://mau.dev/mautrix/telegram/-/blob/v0.2604.0/cmd/mautrix-telegram/legacymigrate.go
matrix_mautrix_telegram_bridge_encryption_pickle_key: mautrix.bridge.e2ee
matrix_bridge_mautrix_telegram_bridge_encryption_pickle_key: mautrix.bridge.e2ee


matrix_mautrix_telegram_bridge_personal_filtering_spaces: true
matrix_bridge_mautrix_telegram_bridge_personal_filtering_spaces: true


matrix_mautrix_telegram_provisioning_shared_secret: ''
matrix_mautrix_telegram_public_media_signing_key: ''
matrix_bridge_mautrix_telegram_provisioning_shared_secret: ''
matrix_bridge_mautrix_telegram_public_media_signing_key: ''


matrix_mautrix_telegram_bridge_permissions: |
matrix_bridge_mautrix_telegram_bridge_permissions: |
{{ {{
{'*': 'relay', matrix_mautrix_telegram_homeserver_domain: 'user'}
{'*': 'relay', matrix_bridge_mautrix_telegram_homeserver_domain: 'user'}
| combine({matrix_admin: 'admin'} if matrix_admin else {}) | combine({matrix_admin: 'admin'} if matrix_admin else {})
}} }}


# Enable bridge relay functionality # Enable bridge relay functionality
matrix_mautrix_telegram_bridge_relay_enabled: "{{ matrix_bridges_relay_enabled }}"
matrix_bridge_mautrix_telegram_bridge_relay_enabled: "{{ matrix_bridges_relay_enabled }}"


# Only allow admins on this home server to set themselves as a relay user # Only allow admins on this home server to set themselves as a relay user
matrix_mautrix_telegram_bridge_relay_admin_only: true
matrix_bridge_mautrix_telegram_bridge_relay_admin_only: true


# List of user login IDs which anyone can set as a relay, as long as the relay user is in the room. # List of user login IDs which anyone can set as a relay, as long as the relay user is in the room.
matrix_mautrix_telegram_bridge_relay_default_relays: []
matrix_bridge_mautrix_telegram_bridge_relay_default_relays: []


# Controls whether to do backfilling at all. # Controls whether to do backfilling at all.
matrix_mautrix_telegram_backfill_enabled: true
matrix_bridge_mautrix_telegram_backfill_enabled: true


# Default mautrix-telegram configuration template which covers the generic use case. # Default mautrix-telegram configuration template which covers the generic use case.
# You can customize it by controlling the various variables inside it. # You can customize it by controlling the various variables inside it.
# #
# For a more advanced customization, you can extend the default (see `matrix_mautrix_telegram_configuration_extension_yaml`)
# For a more advanced customization, you can extend the default (see `matrix_bridge_mautrix_telegram_configuration_extension_yaml`)
# or completely replace this variable with your own template. # or completely replace this variable with your own template.
matrix_mautrix_telegram_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}"
matrix_bridge_mautrix_telegram_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}"


matrix_mautrix_telegram_configuration_extension_yaml: |
matrix_bridge_mautrix_telegram_configuration_extension_yaml: |
# Your custom YAML configuration goes here. # Your custom YAML configuration goes here.
# This configuration extends the default starting configuration (`matrix_mautrix_telegram_configuration_yaml`).
# This configuration extends the default starting configuration (`matrix_bridge_mautrix_telegram_configuration_yaml`).
# #
# You can override individual variables from the default configuration, or introduce new ones. # You can override individual variables from the default configuration, or introduce new ones.
# #
# If you need something more special, you can take full control by # If you need something more special, you can take full control by
# completely redefining `matrix_mautrix_telegram_configuration_yaml`.
# completely redefining `matrix_bridge_mautrix_telegram_configuration_yaml`.


matrix_mautrix_telegram_configuration_extension: "{{ matrix_mautrix_telegram_configuration_extension_yaml | from_yaml if matrix_mautrix_telegram_configuration_extension_yaml | from_yaml is mapping else {} }}"
matrix_bridge_mautrix_telegram_configuration_extension: "{{ matrix_bridge_mautrix_telegram_configuration_extension_yaml | from_yaml if matrix_bridge_mautrix_telegram_configuration_extension_yaml | from_yaml is mapping else {} }}"


# Holds the final configuration (a combination of the default and its extension). # Holds the final configuration (a combination of the default and its extension).
# You most likely don't need to touch this variable. Instead, see `matrix_mautrix_telegram_configuration_yaml`.
matrix_mautrix_telegram_configuration: "{{ matrix_mautrix_telegram_configuration_yaml | from_yaml | combine(matrix_mautrix_telegram_configuration_extension, recursive=True) }}"
# You most likely don't need to touch this variable. Instead, see `matrix_bridge_mautrix_telegram_configuration_yaml`.
matrix_bridge_mautrix_telegram_configuration: "{{ matrix_bridge_mautrix_telegram_configuration_yaml | from_yaml | combine(matrix_bridge_mautrix_telegram_configuration_extension, recursive=True) }}"


matrix_mautrix_telegram_registration_yaml: |
matrix_bridge_mautrix_telegram_registration_yaml: |
id: telegram id: telegram
url: {{ matrix_mautrix_telegram_appservice_address }}
as_token: "{{ matrix_mautrix_telegram_appservice_token }}"
hs_token: "{{ matrix_mautrix_telegram_homeserver_token }}"
url: {{ matrix_bridge_mautrix_telegram_appservice_address }}
as_token: "{{ matrix_bridge_mautrix_telegram_appservice_token }}"
hs_token: "{{ matrix_bridge_mautrix_telegram_homeserver_token }}"
# See https://github.com/mautrix/signal/issues/43 # See https://github.com/mautrix/signal/issues/43
sender_localpart: _bot_{{ matrix_mautrix_telegram_appservice_bot_username }}
sender_localpart: _bot_{{ matrix_bridge_mautrix_telegram_appservice_bot_username }}
rate_limited: false rate_limited: false
namespaces: namespaces:
users: users:
- exclusive: true - exclusive: true
regex: '^@telegram_.+:{{ matrix_mautrix_telegram_homeserver_domain | regex_escape }}$'
regex: '^@telegram_.+:{{ matrix_bridge_mautrix_telegram_homeserver_domain | regex_escape }}$'
- exclusive: true - exclusive: true
regex: '^@{{ matrix_mautrix_telegram_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_telegram_homeserver_domain | regex_escape }}$'
regex: '^@{{ matrix_bridge_mautrix_telegram_appservice_bot_username | regex_escape }}:{{ matrix_bridge_mautrix_telegram_homeserver_domain | regex_escape }}$'
de.sorunome.msc2409.push_ephemeral: true de.sorunome.msc2409.push_ephemeral: true
receive_ephemeral: true receive_ephemeral: true
io.element.msc4190: {{ matrix_mautrix_telegram_msc4190_enabled | to_json }}
io.element.msc4190: {{ matrix_bridge_mautrix_telegram_msc4190_enabled | to_json }}


matrix_mautrix_telegram_registration: "{{ matrix_mautrix_telegram_registration_yaml | from_yaml }}"
matrix_bridge_mautrix_telegram_registration: "{{ matrix_bridge_mautrix_telegram_registration_yaml | from_yaml }}"


# matrix_mautrix_telegram_restart_necessary controls whether the service
# matrix_bridge_mautrix_telegram_restart_necessary controls whether the service
# will be restarted (when true) or merely started (when false) by the # will be restarted (when true) or merely started (when false) by the
# systemd service manager role (when conditional restart is enabled). # systemd service manager role (when conditional restart is enabled).
# #
@@ -273,4 +273,4 @@ matrix_mautrix_telegram_registration: "{{ matrix_mautrix_telegram_registration_y
# any configuration files, the systemd service file, or the container image changed. # any configuration files, the systemd service file, or the container image changed.
# The default of `false` means "no restart needed" — appropriate when the role's # The default of `false` means "no restart needed" — appropriate when the role's
# installation tasks haven't run (e.g., due to --tags skipping them). # installation tasks haven't run (e.g., due to --tags skipping them).
matrix_mautrix_telegram_restart_necessary: false
matrix_bridge_mautrix_telegram_restart_necessary: false

+ 3
- 3
roles/custom/matrix-bridge-mautrix-telegram/tasks/main.yml View File

@@ -12,15 +12,15 @@
- install-all - install-all
- install-mautrix-telegram - install-mautrix-telegram
block: block:
- when: matrix_mautrix_telegram_enabled | bool
- when: matrix_bridge_mautrix_telegram_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"


- when: matrix_mautrix_telegram_enabled | bool
- when: matrix_bridge_mautrix_telegram_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml"


- tags: - tags:
- setup-all - setup-all
- setup-mautrix-telegram - setup-mautrix-telegram
block: block:
- when: not matrix_mautrix_telegram_enabled | bool
- when: not matrix_bridge_mautrix_telegram_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml"

+ 54
- 54
roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml View File

@@ -18,7 +18,7 @@
--- ---


- ansible.builtin.set_fact: - ansible.builtin.set_fact:
matrix_mautrix_telegram_migration_requires_restart: false
matrix_bridge_mautrix_telegram_migration_requires_restart: false


# The legacy Python bridge stored its SQLite DB at `{base_path}/mautrix-telegram.db` (the role's # The legacy Python bridge stored its SQLite DB at `{base_path}/mautrix-telegram.db` (the role's
# root). Later, we started relocating it to `{base_path}/data/mautrix-telegram.db`. The sqlite→ # root). Later, we started relocating it to `{base_path}/data/mautrix-telegram.db`. The sqlite→
@@ -27,10 +27,10 @@
# switch to Postgres wouldn't actually get their data imported before the service starts. # switch to Postgres wouldn't actually get their data imported before the service starts.
- name: Check if a legacy-location SQLite database exists - name: Check if a legacy-location SQLite database exists
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ matrix_mautrix_telegram_base_path }}/mautrix-telegram.db"
register: matrix_mautrix_telegram_stat_database_legacy_location
path: "{{ matrix_bridge_mautrix_telegram_base_path }}/mautrix-telegram.db"
register: matrix_bridge_mautrix_telegram_stat_database_legacy_location


- when: matrix_mautrix_telegram_stat_database_legacy_location.stat.exists | bool
- when: matrix_bridge_mautrix_telegram_stat_database_legacy_location.stat.exists | bool
block: block:
- name: Ensure matrix-mautrix-telegram.service is stopped before relocating legacy SQLite DB - name: Ensure matrix-mautrix-telegram.service is stopped before relocating legacy SQLite DB
ansible.builtin.service: ansible.builtin.service:
@@ -42,7 +42,7 @@


- name: Ensure data directory exists for legacy SQLite DB relocation - name: Ensure data directory exists for legacy SQLite DB relocation
ansible.builtin.file: ansible.builtin.file:
path: "{{ matrix_mautrix_telegram_data_path }}"
path: "{{ matrix_bridge_mautrix_telegram_data_path }}"
state: directory state: directory
mode: '0750' mode: '0750'
owner: "{{ matrix_user_name }}" owner: "{{ matrix_user_name }}"
@@ -50,34 +50,34 @@


- name: (Data relocation) Move mautrix-telegram SQLite DB from legacy location to data directory - name: (Data relocation) Move mautrix-telegram SQLite DB from legacy location to data directory
ansible.builtin.command: ansible.builtin.command:
cmd: "mv {{ matrix_mautrix_telegram_base_path }}/mautrix-telegram.db {{ matrix_mautrix_telegram_data_path }}/mautrix-telegram.db"
creates: "{{ matrix_mautrix_telegram_data_path }}/mautrix-telegram.db"
removes: "{{ matrix_mautrix_telegram_base_path }}/mautrix-telegram.db"
cmd: "mv {{ matrix_bridge_mautrix_telegram_base_path }}/mautrix-telegram.db {{ matrix_bridge_mautrix_telegram_data_path }}/mautrix-telegram.db"
creates: "{{ matrix_bridge_mautrix_telegram_data_path }}/mautrix-telegram.db"
removes: "{{ matrix_bridge_mautrix_telegram_base_path }}/mautrix-telegram.db"


- when: "matrix_mautrix_telegram_database_engine == 'postgres'"
- when: "matrix_bridge_mautrix_telegram_database_engine == 'postgres'"
block: block:
- name: Check if an SQLite database already exists - name: Check if an SQLite database already exists
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ matrix_mautrix_telegram_sqlite_database_path_local }}"
register: matrix_mautrix_telegram_sqlite_database_path_local_stat_result
path: "{{ matrix_bridge_mautrix_telegram_sqlite_database_path_local }}"
register: matrix_bridge_mautrix_telegram_sqlite_database_path_local_stat_result


- when: "matrix_mautrix_telegram_sqlite_database_path_local_stat_result.stat.exists | bool"
- when: "matrix_bridge_mautrix_telegram_sqlite_database_path_local_stat_result.stat.exists | bool"
block: block:
- ansible.builtin.include_role: - ansible.builtin.include_role:
name: galaxy/postgres name: galaxy/postgres
tasks_from: migrate_db_to_postgres tasks_from: migrate_db_to_postgres
vars: vars:
postgres_db_migration_request: postgres_db_migration_request:
src: "{{ matrix_mautrix_telegram_sqlite_database_path_local }}"
dst: "{{ matrix_mautrix_telegram_database_connection_string }}"
src: "{{ matrix_bridge_mautrix_telegram_sqlite_database_path_local }}"
dst: "{{ matrix_bridge_mautrix_telegram_database_connection_string }}"
caller: "{{ role_path | basename }}" caller: "{{ role_path | basename }}"
engine_variable_name: 'matrix_mautrix_telegram_database_engine'
engine_variable_name: 'matrix_bridge_mautrix_telegram_database_engine'
engine_old: 'sqlite' engine_old: 'sqlite'
systemd_services_to_stop: ['matrix-mautrix-telegram.service'] systemd_services_to_stop: ['matrix-mautrix-telegram.service']
pgloader_options: ['--with "quote identifiers"'] pgloader_options: ['--with "quote identifiers"']


- ansible.builtin.set_fact: - ansible.builtin.set_fact:
matrix_mautrix_telegram_migration_requires_restart: true
matrix_bridge_mautrix_telegram_migration_requires_restart: true


- name: Ensure Mautrix Telegram paths exist - name: Ensure Mautrix Telegram paths exist
ansible.builtin.file: ansible.builtin.file:
@@ -87,77 +87,77 @@
owner: "{{ matrix_user_name }}" owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}" group: "{{ matrix_group_name }}"
with_items: with_items:
- {path: "{{ matrix_mautrix_telegram_base_path }}", when: true}
- {path: "{{ matrix_mautrix_telegram_config_path }}", when: true}
- {path: "{{ matrix_mautrix_telegram_data_path }}", when: true}
- {path: "{{ matrix_mautrix_telegram_container_src_files_path }}", when: "{{ matrix_mautrix_telegram_container_image_self_build }}"}
- {path: "{{ matrix_bridge_mautrix_telegram_base_path }}", when: true}
- {path: "{{ matrix_bridge_mautrix_telegram_config_path }}", when: true}
- {path: "{{ matrix_bridge_mautrix_telegram_data_path }}", when: true}
- {path: "{{ matrix_bridge_mautrix_telegram_container_src_files_path }}", when: "{{ matrix_bridge_mautrix_telegram_container_image_self_build }}"}
when: item.when | bool when: item.when | bool


- name: Ensure Mautrix Telegram image is pulled - name: Ensure Mautrix Telegram image is pulled
community.docker.docker_image_pull: community.docker.docker_image_pull:
name: "{{ matrix_mautrix_telegram_container_image }}"
name: "{{ matrix_bridge_mautrix_telegram_container_image }}"
pull: always pull: always
when: "not matrix_mautrix_telegram_container_image_self_build | bool"
register: matrix_mautrix_telegram_container_image_pull_result
when: "not matrix_bridge_mautrix_telegram_container_image_self_build | bool"
register: matrix_bridge_mautrix_telegram_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}" retries: "{{ devture_playbook_help_container_retries_count }}"
delay: "{{ devture_playbook_help_container_retries_delay }}" delay: "{{ devture_playbook_help_container_retries_delay }}"
until: matrix_mautrix_telegram_container_image_pull_result is not failed
until: matrix_bridge_mautrix_telegram_container_image_pull_result is not failed


- name: Ensure Mautrix Telegram repository is present on self-build - name: Ensure Mautrix Telegram repository is present on self-build
ansible.builtin.git: ansible.builtin.git:
repo: "{{ matrix_mautrix_telegram_container_image_self_build_repo }}"
dest: "{{ matrix_mautrix_telegram_container_src_files_path }}"
version: "{{ matrix_mautrix_telegram_container_image_self_build_branch }}"
repo: "{{ matrix_bridge_mautrix_telegram_container_image_self_build_repo }}"
dest: "{{ matrix_bridge_mautrix_telegram_container_src_files_path }}"
version: "{{ matrix_bridge_mautrix_telegram_container_image_self_build_branch }}"
force: "yes" force: "yes"
become: true become: true
become_user: "{{ matrix_user_name }}" become_user: "{{ matrix_user_name }}"
register: matrix_mautrix_telegram_git_pull_results
when: "matrix_mautrix_telegram_container_image_self_build | bool"
register: matrix_bridge_mautrix_telegram_git_pull_results
when: "matrix_bridge_mautrix_telegram_container_image_self_build | bool"


- name: Ensure Mautrix Telegram Docker image is built - name: Ensure Mautrix Telegram Docker image is built
community.docker.docker_image_build: community.docker.docker_image_build:
name: "{{ matrix_mautrix_telegram_container_image }}"
name: "{{ matrix_bridge_mautrix_telegram_container_image }}"
dockerfile: Dockerfile dockerfile: Dockerfile
path: "{{ matrix_mautrix_telegram_container_src_files_path }}"
path: "{{ matrix_bridge_mautrix_telegram_container_src_files_path }}"
pull: true pull: true
rebuild: "{{ 'always' if matrix_mautrix_telegram_git_pull_results.changed | bool else 'never' }}"
when: "matrix_mautrix_telegram_container_image_self_build | bool"
register: matrix_mautrix_telegram_container_image_build_result
rebuild: "{{ 'always' if matrix_bridge_mautrix_telegram_git_pull_results.changed | bool else 'never' }}"
when: "matrix_bridge_mautrix_telegram_container_image_self_build | bool"
register: matrix_bridge_mautrix_telegram_container_image_build_result


- name: Ensure mautrix-telegram config.yaml installed - name: Ensure mautrix-telegram config.yaml installed
ansible.builtin.copy: ansible.builtin.copy:
content: "{{ matrix_mautrix_telegram_configuration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mautrix_telegram_config_path }}/config.yaml"
content: "{{ matrix_bridge_mautrix_telegram_configuration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_bridge_mautrix_telegram_config_path }}/config.yaml"
mode: '0644' mode: '0644'
owner: "{{ matrix_user_name }}" owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}" group: "{{ matrix_group_name }}"
register: matrix_mautrix_telegram_config_result
register: matrix_bridge_mautrix_telegram_config_result


- name: Ensure mautrix-telegram registration.yaml installed - name: Ensure mautrix-telegram registration.yaml installed
ansible.builtin.copy: ansible.builtin.copy:
content: "{{ matrix_mautrix_telegram_registration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mautrix_telegram_config_path }}/registration.yaml"
content: "{{ matrix_bridge_mautrix_telegram_registration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_bridge_mautrix_telegram_config_path }}/registration.yaml"
mode: '0644' mode: '0644'
owner: "{{ matrix_user_name }}" owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}" group: "{{ matrix_group_name }}"
register: matrix_mautrix_telegram_registration_result
register: matrix_bridge_mautrix_telegram_registration_result


- name: Ensure mautrix-telegram support files installed - name: Ensure mautrix-telegram support files installed
ansible.builtin.template: ansible.builtin.template:
src: "{{ role_path }}/templates/{{ item }}.j2" src: "{{ role_path }}/templates/{{ item }}.j2"
dest: "{{ matrix_mautrix_telegram_base_path }}/{{ item }}"
dest: "{{ matrix_bridge_mautrix_telegram_base_path }}/{{ item }}"
mode: '0640' mode: '0640'
owner: "{{ matrix_user_name }}" owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}" group: "{{ matrix_group_name }}"
with_items: with_items:
- labels - labels
register: matrix_mautrix_telegram_support_files_result
register: matrix_bridge_mautrix_telegram_support_files_result


- name: Ensure matrix-mautrix-telegram container network is created - name: Ensure matrix-mautrix-telegram container network is created
when: matrix_mautrix_telegram_container_network != 'host'
when: matrix_bridge_mautrix_telegram_container_network != 'host'
community.general.docker_network: community.general.docker_network:
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
name: "{{ matrix_mautrix_telegram_container_network }}"
name: "{{ matrix_bridge_mautrix_telegram_container_network }}"
driver: bridge driver: bridge
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"


@@ -166,19 +166,19 @@
src: "{{ role_path }}/templates/systemd/matrix-mautrix-telegram.service.j2" src: "{{ role_path }}/templates/systemd/matrix-mautrix-telegram.service.j2"
dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-telegram.service" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-telegram.service"
mode: '0644' mode: '0644'
register: matrix_mautrix_telegram_systemd_service_result
register: matrix_bridge_mautrix_telegram_systemd_service_result


- name: Determine whether matrix-mautrix-telegram needs a restart - name: Determine whether matrix-mautrix-telegram needs a restart
ansible.builtin.set_fact: ansible.builtin.set_fact:
matrix_mautrix_telegram_restart_necessary: >-
matrix_bridge_mautrix_telegram_restart_necessary: >-
{{ {{
matrix_mautrix_telegram_migration_requires_restart | default(false)
or matrix_mautrix_telegram_config_result.changed | default(false)
or matrix_mautrix_telegram_registration_result.changed | default(false)
or matrix_mautrix_telegram_support_files_result.changed | default(false)
or matrix_mautrix_telegram_systemd_service_result.changed | default(false)
or matrix_mautrix_telegram_container_image_pull_result.changed | default(false)
or matrix_mautrix_telegram_container_image_build_result.changed | default(false)
matrix_bridge_mautrix_telegram_migration_requires_restart | default(false)
or matrix_bridge_mautrix_telegram_config_result.changed | default(false)
or matrix_bridge_mautrix_telegram_registration_result.changed | default(false)
or matrix_bridge_mautrix_telegram_support_files_result.changed | default(false)
or matrix_bridge_mautrix_telegram_systemd_service_result.changed | default(false)
or matrix_bridge_mautrix_telegram_container_image_pull_result.changed | default(false)
or matrix_bridge_mautrix_telegram_container_image_build_result.changed | default(false)
}} }}


- name: Ensure matrix-mautrix-telegram.service restarted, if necessary - name: Ensure matrix-mautrix-telegram.service restarted, if necessary
@@ -186,4 +186,4 @@
name: "matrix-mautrix-telegram.service" name: "matrix-mautrix-telegram.service"
state: restarted state: restarted
daemon_reload: true daemon_reload: true
when: "matrix_mautrix_telegram_migration_requires_restart | bool"
when: "matrix_bridge_mautrix_telegram_migration_requires_restart | bool"

+ 2
- 2
roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_uninstall.yml View File

@@ -9,9 +9,9 @@
- name: Check existence of matrix-mautrix-telegram service - name: Check existence of matrix-mautrix-telegram service
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-telegram.service" path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-telegram.service"
register: matrix_mautrix_telegram_service_stat
register: matrix_bridge_mautrix_telegram_service_stat


- when: matrix_mautrix_telegram_service_stat.stat.exists | bool
- when: matrix_bridge_mautrix_telegram_service_stat.stat.exists | bool
block: block:
- name: Ensure matrix-mautrix-telegram is stopped - name: Ensure matrix-mautrix-telegram is stopped
ansible.builtin.service: ansible.builtin.service:


+ 73
- 73
roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config.yml View File

@@ -13,66 +13,66 @@
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items: with_items:
- {'old': 'matrix_mautrix_telegram_container_exposed_port_number', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_self_build', 'new': 'matrix_mautrix_telegram_container_image_self_build'}
- {'old': 'matrix_mautrix_telegram_login_shared_secret', 'new': '<removed>'}
- {'old': 'matrix_mautrix_telegram_docker_image_name_prefix', 'new': 'matrix_mautrix_telegram_container_image_registry_prefix'}
- {'old': 'matrix_mautrix_telegram_docker_repo', 'new': 'matrix_mautrix_telegram_container_image_self_build_repo'}
- {'old': 'matrix_mautrix_telegram_docker_repo_version', 'new': 'matrix_mautrix_telegram_container_image_self_build_branch'}
- {'old': 'matrix_mautrix_telegram_docker_src_files_path', 'new': 'matrix_mautrix_telegram_container_src_files_path'}
- {'old': 'matrix_mautrix_telegram_docker_image', 'new': 'matrix_mautrix_telegram_container_image'}
- {'old': 'matrix_mautrix_telegram_docker_image_force_pull', 'new': 'matrix_mautrix_telegram_container_image_force_pull'}
- {'old': 'matrix_mautrix_telegram_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'}
- {'old': 'matrix_mautrix_telegram_docker_image_registry_prefix', 'new': 'matrix_mautrix_telegram_container_image_registry_prefix'}
- {'old': 'matrix_mautrix_telegram_docker_image_registry_prefix_upstream', 'new': 'matrix_mautrix_telegram_container_image_registry_prefix_upstream'}
- {'old': 'matrix_mautrix_telegram_docker_image_registry_prefix_upstream_default', 'new': 'matrix_mautrix_telegram_container_image_registry_prefix_upstream_default'}
- {'old': 'matrix_mautrix_telegram_container_repo', 'new': 'matrix_mautrix_telegram_container_image_self_build_repo'}
- {'old': 'matrix_mautrix_telegram_container_repo_version', 'new': 'matrix_mautrix_telegram_container_image_self_build_branch'}
- {'old': 'matrix_bridge_mautrix_telegram_container_exposed_port_number', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_self_build', 'new': 'matrix_bridge_mautrix_telegram_container_image_self_build'}
- {'old': 'matrix_bridge_mautrix_telegram_login_shared_secret', 'new': '<removed>'}
- {'old': 'matrix_bridge_mautrix_telegram_docker_image_name_prefix', 'new': 'matrix_bridge_mautrix_telegram_container_image_registry_prefix'}
- {'old': 'matrix_bridge_mautrix_telegram_docker_repo', 'new': 'matrix_bridge_mautrix_telegram_container_image_self_build_repo'}
- {'old': 'matrix_bridge_mautrix_telegram_docker_repo_version', 'new': 'matrix_bridge_mautrix_telegram_container_image_self_build_branch'}
- {'old': 'matrix_bridge_mautrix_telegram_docker_src_files_path', 'new': 'matrix_bridge_mautrix_telegram_container_src_files_path'}
- {'old': 'matrix_bridge_mautrix_telegram_docker_image', 'new': 'matrix_bridge_mautrix_telegram_container_image'}
- {'old': 'matrix_bridge_mautrix_telegram_docker_image_force_pull', 'new': 'matrix_bridge_mautrix_telegram_container_image_force_pull'}
- {'old': 'matrix_bridge_mautrix_telegram_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'}
- {'old': 'matrix_bridge_mautrix_telegram_docker_image_registry_prefix', 'new': 'matrix_bridge_mautrix_telegram_container_image_registry_prefix'}
- {'old': 'matrix_bridge_mautrix_telegram_docker_image_registry_prefix_upstream', 'new': 'matrix_bridge_mautrix_telegram_container_image_registry_prefix_upstream'}
- {'old': 'matrix_bridge_mautrix_telegram_docker_image_registry_prefix_upstream_default', 'new': 'matrix_bridge_mautrix_telegram_container_image_registry_prefix_upstream_default'}
- {'old': 'matrix_bridge_mautrix_telegram_container_repo', 'new': 'matrix_bridge_mautrix_telegram_container_image_self_build_repo'}
- {'old': 'matrix_bridge_mautrix_telegram_container_repo_version', 'new': 'matrix_bridge_mautrix_telegram_container_image_self_build_branch'}
# Variables removed in the bridgev2 (Go) rewrite — mautrix-telegram no longer has a Python runtime, # Variables removed in the bridgev2 (Go) rewrite — mautrix-telegram no longer has a Python runtime,
# a separate lottieconverter container or a web-based login endpoint. # a separate lottieconverter container or a web-based login endpoint.
# (matrix_mautrix_telegram_scheme was part of this group too, but has since been reintroduced to configure the bridge's HTTP API exposure address, so it's intentionally not listed here.)
- {'old': 'matrix_mautrix_telegram_hostname', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_path_prefix', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_public_endpoint', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_appservice_public_enabled', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_appservice_public_external', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_labels_public_endpoint_enabled', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_labels_public_endpoint_hostname', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_labels_public_endpoint_path_prefix', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_labels_public_endpoint_traefik_rule', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_labels_public_endpoint_traefik_priority', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_labels_public_endpoint_traefik_entrypoints', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_labels_public_endpoint_traefik_tls', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_labels_public_endpoint_traefik_tls_certResolver', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_container_http_host_bind_port', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_mautrix_telegram_filter_mode', 'new': '<removed (not available in the bridgev2 rewrite of mautrix-telegram)>'}
- {'old': 'matrix_mautrix_telegram_bot_token', 'new': '<removed; the old-style relaybot is gone — use the common bridge relay mode (matrix_mautrix_telegram_bridge_relay_enabled) instead>'}
- {'old': 'matrix_mautrix_telegram_bridge_login_shared_secret_map', 'new': '<superseded by matrix_mautrix_telegram_double_puppet_secrets>'}
- {'old': 'matrix_mautrix_telegram_bridge_login_shared_secret_map_auto', 'new': '<superseded by matrix_mautrix_telegram_double_puppet_secrets_auto>'}
- {'old': 'matrix_mautrix_telegram_bridge_login_shared_secret_map_custom', 'new': '<superseded by matrix_mautrix_telegram_double_puppet_secrets_custom>'}
- {'old': 'matrix_mautrix_telegram_username_template', 'new': '<removed (no longer configurable via a single variable; use matrix_mautrix_telegram_configuration_extension_yaml if needed)>'}
- {'old': 'matrix_mautrix_telegram_alias_template', 'new': '<removed (room aliases are no longer created by the bridgev2 rewrite of mautrix-telegram)>'}
- {'old': 'matrix_mautrix_telegram_displayname_template', 'new': '<superseded by matrix_mautrix_telegram_network_displayname_template (note: the syntax has changed to Go templates)>'}
- {'old': 'matrix_mautrix_telegram_appservice_database', 'new': '<superseded by matrix_mautrix_telegram_appservice_database_uri>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_image_self_build', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_image_self_build_mask_arch', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_repo', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_repo_version', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_src_files_path', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_image', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_image_registry_prefix', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_image_registry_prefix_upstream', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_image_registry_prefix_upstream_default', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
# (matrix_bridge_mautrix_telegram_scheme was part of this group too, but has since been reintroduced to configure the bridge's HTTP API exposure address, so it's intentionally not listed here.)
- {'old': 'matrix_bridge_mautrix_telegram_hostname', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_path_prefix', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_public_endpoint', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_appservice_public_enabled', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_appservice_public_external', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_labels_public_endpoint_enabled', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_labels_public_endpoint_hostname', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_labels_public_endpoint_path_prefix', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_labels_public_endpoint_traefik_rule', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_labels_public_endpoint_traefik_priority', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_labels_public_endpoint_traefik_entrypoints', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_labels_public_endpoint_traefik_tls', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_labels_public_endpoint_traefik_tls_certResolver', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_container_http_host_bind_port', 'new': '<removed (the bridge no longer has a public web-based login endpoint)>'}
- {'old': 'matrix_bridge_mautrix_telegram_filter_mode', 'new': '<removed (not available in the bridgev2 rewrite of mautrix-telegram)>'}
- {'old': 'matrix_bridge_mautrix_telegram_bot_token', 'new': '<removed; the old-style relaybot is gone — use the common bridge relay mode (matrix_bridge_mautrix_telegram_bridge_relay_enabled) instead>'}
- {'old': 'matrix_bridge_mautrix_telegram_bridge_login_shared_secret_map', 'new': '<superseded by matrix_bridge_mautrix_telegram_double_puppet_secrets>'}
- {'old': 'matrix_bridge_mautrix_telegram_bridge_login_shared_secret_map_auto', 'new': '<superseded by matrix_bridge_mautrix_telegram_double_puppet_secrets_auto>'}
- {'old': 'matrix_bridge_mautrix_telegram_bridge_login_shared_secret_map_custom', 'new': '<superseded by matrix_bridge_mautrix_telegram_double_puppet_secrets_custom>'}
- {'old': 'matrix_bridge_mautrix_telegram_username_template', 'new': '<removed (no longer configurable via a single variable; use matrix_bridge_mautrix_telegram_configuration_extension_yaml if needed)>'}
- {'old': 'matrix_bridge_mautrix_telegram_alias_template', 'new': '<removed (room aliases are no longer created by the bridgev2 rewrite of mautrix-telegram)>'}
- {'old': 'matrix_bridge_mautrix_telegram_displayname_template', 'new': '<superseded by matrix_bridge_mautrix_telegram_network_displayname_template (note: the syntax has changed to Go templates)>'}
- {'old': 'matrix_bridge_mautrix_telegram_appservice_database', 'new': '<superseded by matrix_bridge_mautrix_telegram_appservice_database_uri>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_image_self_build', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_image_self_build_mask_arch', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_repo', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_repo_version', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_src_files_path', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_image', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_image_registry_prefix', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_image_registry_prefix_upstream', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_image_registry_prefix_upstream_default', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
# Historical lottieconverter aliases from before the _docker_ → _container_ rename: # Historical lottieconverter aliases from before the _docker_ → _container_ rename:
- {'old': 'matrix_mautrix_telegram_lottieconverter_container_self_build', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_docker_image_name_prefix', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_docker_image', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream_default', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_docker_repo', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_docker_repo_version', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_mautrix_telegram_lottieconverter_docker_src_files_path', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_container_self_build', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_docker_image_name_prefix', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_docker_image', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_docker_image_registry_prefix', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream_default', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_docker_repo', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_docker_repo_version', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_bridge_mautrix_telegram_lottieconverter_docker_src_files_path', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
# Even older aliases (no `_mautrix` infix): # Even older aliases (no `_mautrix` infix):
- {'old': 'matrix_telegram_lottieconverter_container_image_self_build', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'} - {'old': 'matrix_telegram_lottieconverter_container_image_self_build', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
- {'old': 'matrix_telegram_lottieconverter_container_image_self_build_mask_arch', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'} - {'old': 'matrix_telegram_lottieconverter_container_image_self_build_mask_arch', 'new': '<removed (lottieconverter is now bundled into the mautrix-telegram image)>'}
@@ -87,15 +87,15 @@
You need to define a required configuration setting (`{{ item.name }}`). You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items: with_items:
- {'name': 'matrix_mautrix_telegram_api_id', when: true}
- {'name': 'matrix_mautrix_telegram_api_hash', when: true}
- {'name': 'matrix_mautrix_telegram_appservice_token', when: true}
- {'name': 'matrix_mautrix_telegram_homeserver_address', when: true}
- {'name': 'matrix_mautrix_telegram_homeserver_token', when: true}
- {'name': 'matrix_mautrix_telegram_container_network', when: true}
- {'name': 'matrix_mautrix_telegram_database_hostname', when: "{{ matrix_mautrix_telegram_database_engine == 'postgres' }}"}
- {'name': 'matrix_mautrix_telegram_metrics_proxying_hostname', when: "{{ matrix_mautrix_telegram_metrics_proxying_enabled }}"}
- {'name': 'matrix_mautrix_telegram_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_telegram_metrics_proxying_enabled }}"}
- {'name': 'matrix_bridge_mautrix_telegram_api_id', when: true}
- {'name': 'matrix_bridge_mautrix_telegram_api_hash', when: true}
- {'name': 'matrix_bridge_mautrix_telegram_appservice_token', when: true}
- {'name': 'matrix_bridge_mautrix_telegram_homeserver_address', when: true}
- {'name': 'matrix_bridge_mautrix_telegram_homeserver_token', when: true}
- {'name': 'matrix_bridge_mautrix_telegram_container_network', when: true}
- {'name': 'matrix_bridge_mautrix_telegram_database_hostname', when: "{{ matrix_bridge_mautrix_telegram_database_engine == 'postgres' }}"}
- {'name': 'matrix_bridge_mautrix_telegram_metrics_proxying_hostname', when: "{{ matrix_bridge_mautrix_telegram_metrics_proxying_enabled }}"}
- {'name': 'matrix_bridge_mautrix_telegram_metrics_proxying_path_prefix', when: "{{ matrix_bridge_mautrix_telegram_metrics_proxying_enabled }}"}


# Temporary workaround for an upstream SQLite legacy-migration bug in mautrix-telegram v0.2604.0. # Temporary workaround for an upstream SQLite legacy-migration bug in mautrix-telegram v0.2604.0.
# See the separate task file for details; the whole file (and this include) can be deleted once # See the separate task file for details; the whole file (and this include) can be deleted once
@@ -103,8 +103,8 @@
- name: Guard against the upstream mautrix-telegram v0.2604.0 SQLite legacy-migration bug - name: Guard against the upstream mautrix-telegram v0.2604.0 SQLite legacy-migration bug
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config_sqlite_legacy_migration_bug.yml" ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config_sqlite_legacy_migration_bug.yml"
when: when:
- "matrix_mautrix_telegram_database_engine == 'sqlite'"
- "not (matrix_mautrix_telegram_bridgev2_sqlite_upgrade_confirmed | default(false) | bool)"
- "matrix_bridge_mautrix_telegram_database_engine == 'sqlite'"
- "not (matrix_bridge_mautrix_telegram_bridgev2_sqlite_upgrade_confirmed | default(false) | bool)"


# Bridgev2 permission values are: block, relay, commands, user, admin. # Bridgev2 permission values are: block, relay, commands, user, admin.
# The old Python bridge had different levels (relaybot, user, puppeting, full, admin). # The old Python bridge had different levels (relaybot, user, puppeting, full, admin).
@@ -112,8 +112,8 @@
# equivalent to the old `full`/`puppeting`). `relaybot`, `puppeting` and `full` don't exist # equivalent to the old `full`/`puppeting`). `relaybot`, `puppeting` and `full` don't exist
# in bridgev2 and will cause the bridge to reject its config at startup. # in bridgev2 and will cause the bridge to reject its config at startup.
# #
# We check the fully-merged configuration (not just `matrix_mautrix_telegram_bridge_permissions`)
# because users commonly override permissions via `matrix_mautrix_telegram_configuration_extension_yaml`,
# We check the fully-merged configuration (not just `matrix_bridge_mautrix_telegram_bridge_permissions`)
# because users commonly override permissions via `matrix_bridge_mautrix_telegram_configuration_extension_yaml`,
# and those overrides would otherwise slip through validation. # and those overrides would otherwise slip through validation.
- name: Fail if bridge permissions still reference legacy Python-bridge permission levels - name: Fail if bridge permissions still reference legacy Python-bridge permission levels
ansible.builtin.fail: ansible.builtin.fail:
@@ -134,9 +134,9 @@
admin -> admin admin -> admin


See https://docs.mau.fi/bridges/general/permissions.html and the bridge's example config See https://docs.mau.fi/bridges/general/permissions.html and the bridge's example config
for details. Update either `matrix_mautrix_telegram_bridge_permissions` or the `bridge.permissions`
section inside `matrix_mautrix_telegram_configuration_extension_yaml` — whichever you use.
for details. Update either `matrix_bridge_mautrix_telegram_bridge_permissions` or the `bridge.permissions`
section inside `matrix_bridge_mautrix_telegram_configuration_extension_yaml` — whichever you use.
when: "item.value in ['relaybot', 'puppeting', 'full']" when: "item.value in ['relaybot', 'puppeting', 'full']"
loop: "{{ (matrix_mautrix_telegram_configuration.bridge.permissions | default({})) | dict2items }}"
loop: "{{ (matrix_bridge_mautrix_telegram_configuration.bridge.permissions | default({})) | dict2items }}"
loop_control: loop_control:
label: "{{ item.key }}" label: "{{ item.key }}"

+ 15
- 15
roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config_sqlite_legacy_migration_bug.yml View File

@@ -24,18 +24,18 @@
# Telethon-session store, which upstream's legacymigrate.sql renames to # Telethon-session store, which upstream's legacymigrate.sql renames to
# `telethon_sessions_old` as part of the bridgev2 migration). # `telethon_sessions_old` as part of the bridgev2 migration).
# #
# Users can bypass this via `matrix_mautrix_telegram_bridgev2_sqlite_upgrade_confirmed: true`.
# Users can bypass this via `matrix_bridge_mautrix_telegram_bridgev2_sqlite_upgrade_confirmed: true`.
# ########################################################################### # ###########################################################################


- name: Check for an existing mautrix-telegram SQLite database (legacy location) - name: Check for an existing mautrix-telegram SQLite database (legacy location)
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ matrix_mautrix_telegram_base_path }}/mautrix-telegram.db"
register: matrix_mautrix_telegram_sqlite_legacy_path_stat
path: "{{ matrix_bridge_mautrix_telegram_base_path }}/mautrix-telegram.db"
register: matrix_bridge_mautrix_telegram_sqlite_legacy_path_stat


- name: Check for an existing mautrix-telegram SQLite database (data path) - name: Check for an existing mautrix-telegram SQLite database (data path)
ansible.builtin.stat: ansible.builtin.stat:
path: "{{ matrix_mautrix_telegram_sqlite_database_path_local }}"
register: matrix_mautrix_telegram_sqlite_data_path_stat
path: "{{ matrix_bridge_mautrix_telegram_sqlite_database_path_local }}"
register: matrix_bridge_mautrix_telegram_sqlite_data_path_stat


- name: Inspect SQLite database for the legacy Python-bridge schema signature - name: Inspect SQLite database for the legacy Python-bridge schema signature
ansible.builtin.command: ansible.builtin.command:
@@ -53,19 +53,19 @@
sys.exit(1 if cur.fetchone() else 0) sys.exit(1 if cur.fetchone() else 0)
except Exception: except Exception:
sys.exit(0) sys.exit(0)
- "{{ matrix_mautrix_telegram_sqlite_legacy_path_stat.stat.path if matrix_mautrix_telegram_sqlite_legacy_path_stat.stat.exists else matrix_mautrix_telegram_sqlite_data_path_stat.stat.path }}"
register: matrix_mautrix_telegram_sqlite_legacy_check
- "{{ matrix_bridge_mautrix_telegram_sqlite_legacy_path_stat.stat.path if matrix_bridge_mautrix_telegram_sqlite_legacy_path_stat.stat.exists else matrix_bridge_mautrix_telegram_sqlite_data_path_stat.stat.path }}"
register: matrix_bridge_mautrix_telegram_sqlite_legacy_check
changed_when: false changed_when: false
failed_when: false failed_when: false
when: >- when: >-
matrix_mautrix_telegram_sqlite_legacy_path_stat.stat.exists
or matrix_mautrix_telegram_sqlite_data_path_stat.stat.exists
matrix_bridge_mautrix_telegram_sqlite_legacy_path_stat.stat.exists
or matrix_bridge_mautrix_telegram_sqlite_data_path_stat.stat.exists


- name: Fail if upgrading a legacy SQLite install (upstream has a known migration bug) - name: Fail if upgrading a legacy SQLite install (upstream has a known migration bug)
ansible.builtin.fail: ansible.builtin.fail:
msg: |- msg: |-
A legacy Python mautrix-telegram SQLite database was detected at A legacy Python mautrix-telegram SQLite database was detected at
`{{ matrix_mautrix_telegram_sqlite_legacy_path_stat.stat.path if matrix_mautrix_telegram_sqlite_legacy_path_stat.stat.exists else matrix_mautrix_telegram_sqlite_data_path_stat.stat.path }}`
`{{ matrix_bridge_mautrix_telegram_sqlite_legacy_path_stat.stat.path if matrix_bridge_mautrix_telegram_sqlite_legacy_path_stat.stat.exists else matrix_bridge_mautrix_telegram_sqlite_data_path_stat.stat.path }}`
(it contains the `telethon_sessions` table from the Python bridge). (it contains the `telethon_sessions` table from the Python bridge).


Upstream mautrix-telegram v0.2604.0 has a **known bug** in the legacy SQLite Upstream mautrix-telegram v0.2604.0 has a **known bug** in the legacy SQLite
@@ -78,7 +78,7 @@
1. Switch to Postgres before upgrading. If you're using the playbook-managed Postgres 1. Switch to Postgres before upgrading. If you're using the playbook-managed Postgres
service (`postgres_enabled: true`), just set: service (`postgres_enabled: true`), just set:


matrix_mautrix_telegram_database_engine: postgres
matrix_bridge_mautrix_telegram_database_engine: postgres


and re-run the playbook. The playbook will migrate your SQLite data into Postgres and re-run the playbook. The playbook will migrate your SQLite data into Postgres
first (via pgloader), and upstream's bridgev2 migration path is known to work on first (via pgloader), and upstream's bridgev2 migration path is known to work on
@@ -90,10 +90,10 @@
If you're sure you want to proceed anyway (for example because you have a separate If you're sure you want to proceed anyway (for example because you have a separate
backup), you can bypass this check by setting: backup), you can bypass this check by setting:


matrix_mautrix_telegram_bridgev2_sqlite_upgrade_confirmed: true
matrix_bridge_mautrix_telegram_bridgev2_sqlite_upgrade_confirmed: true


in your vars.yml. Only use the override if you know what you're doing. in your vars.yml. Only use the override if you know what you're doing.
when: >- when: >-
(matrix_mautrix_telegram_sqlite_legacy_path_stat.stat.exists
or matrix_mautrix_telegram_sqlite_data_path_stat.stat.exists)
and (matrix_mautrix_telegram_sqlite_legacy_check.rc | default(0)) == 1
(matrix_bridge_mautrix_telegram_sqlite_legacy_path_stat.stat.exists
or matrix_bridge_mautrix_telegram_sqlite_data_path_stat.stat.exists)
and (matrix_bridge_mautrix_telegram_sqlite_legacy_check.rc | default(0)) == 1

+ 32
- 32
roles/custom/matrix-bridge-mautrix-telegram/templates/config.yaml.j2 View File

@@ -2,8 +2,8 @@
# Network-specific config options # Network-specific config options
network: network:
# Get your own API keys at https://my.telegram.org/apps # Get your own API keys at https://my.telegram.org/apps
api_id: {{ matrix_mautrix_telegram_api_id | int | to_json }}
api_hash: {{ matrix_mautrix_telegram_api_hash | to_json }}
api_id: {{ matrix_bridge_mautrix_telegram_api_id | int | to_json }}
api_hash: {{ matrix_bridge_mautrix_telegram_api_hash | to_json }}


# Device info shown in the Telegram device list. # Device info shown in the Telegram device list.
device_info: device_info:
@@ -118,14 +118,14 @@ network:
# Should view-once messages be disabled entirely? # Should view-once messages be disabled entirely?
disable_view_once: false disable_view_once: false
# Displayname template for Telegram users. # Displayname template for Telegram users.
displayname_template: {{ matrix_mautrix_telegram_network_displayname_template | to_json }}
displayname_template: {{ matrix_bridge_mautrix_telegram_network_displayname_template | to_json }}


# Config options that affect the central bridge module. # Config options that affect the central bridge module.
bridge: bridge:
# The prefix for commands. Only required in non-management rooms. # The prefix for commands. Only required in non-management rooms.
command_prefix: {{ matrix_mautrix_telegram_command_prefix | to_json }}
command_prefix: {{ matrix_bridge_mautrix_telegram_command_prefix | to_json }}
# Should the bridge create a space for each login containing the rooms that account is in? # Should the bridge create a space for each login containing the rooms that account is in?
personal_filtering_spaces: {{ matrix_mautrix_telegram_bridge_personal_filtering_spaces | to_json }}
personal_filtering_spaces: {{ matrix_bridge_mautrix_telegram_bridge_personal_filtering_spaces | to_json }}
# Whether the bridge should set names and avatars explicitly for DM portals. # Whether the bridge should set names and avatars explicitly for DM portals.
# This is only necessary when using clients that don't support MSC4171. # This is only necessary when using clients that don't support MSC4171.
private_chat_portal_meta: true private_chat_portal_meta: true
@@ -181,12 +181,12 @@ bridge:
relay: relay:
# Whether relay mode should be allowed. If allowed, the set-relay command can be used to turn any # Whether relay mode should be allowed. If allowed, the set-relay command can be used to turn any
# authenticated user into a relaybot for that chat. # authenticated user into a relaybot for that chat.
enabled: {{ matrix_mautrix_telegram_bridge_relay_enabled | to_json }}
enabled: {{ matrix_bridge_mautrix_telegram_bridge_relay_enabled | to_json }}
# Should only admins be allowed to set themselves as relay users? # Should only admins be allowed to set themselves as relay users?
# If true, non-admins can only set users listed in default_relays as relays in a room. # If true, non-admins can only set users listed in default_relays as relays in a room.
admin_only: {{ matrix_mautrix_telegram_bridge_relay_admin_only | to_json }}
admin_only: {{ matrix_bridge_mautrix_telegram_bridge_relay_admin_only | to_json }}
# List of user login IDs which anyone can set as a relay, as long as the relay user is in the room. # List of user login IDs which anyone can set as a relay, as long as the relay user is in the room.
default_relays: {{ matrix_mautrix_telegram_bridge_relay_default_relays | to_json }}
default_relays: {{ matrix_bridge_mautrix_telegram_bridge_relay_default_relays | to_json }}
# The formats to use when sending messages via the relaybot. # The formats to use when sending messages via the relaybot.
# Available variables: # Available variables:
# .Sender.UserID - The Matrix user ID of the sender. # .Sender.UserID - The Matrix user ID of the sender.
@@ -218,18 +218,18 @@ bridge:
# * - All Matrix users # * - All Matrix users
# domain - All users on that homeserver # domain - All users on that homeserver
# mxid - Specific user # mxid - Specific user
permissions: {{ matrix_mautrix_telegram_bridge_permissions|to_json }}
permissions: {{ matrix_bridge_mautrix_telegram_bridge_permissions|to_json }}


# Config for the bridge's database. # Config for the bridge's database.
database: database:
# The database type. "sqlite3-fk-wal" and "postgres" are supported. # The database type. "sqlite3-fk-wal" and "postgres" are supported.
type: {{ matrix_mautrix_telegram_appservice_database_type | to_json }}
type: {{ matrix_bridge_mautrix_telegram_appservice_database_type | to_json }}
# The database URI. # The database URI.
# SQLite: A raw file path is supported, but `file:<path>?_txlock=immediate` is recommended. # SQLite: A raw file path is supported, but `file:<path>?_txlock=immediate` is recommended.
# https://github.com/mattn/go-sqlite3#connection-string # https://github.com/mattn/go-sqlite3#connection-string
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable # Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
# To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql # To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql
uri: {{ matrix_mautrix_telegram_appservice_database_uri | to_json }}
uri: {{ matrix_bridge_mautrix_telegram_appservice_database_uri | to_json }}
# Maximum number of connections. # Maximum number of connections.
max_open_conns: 20 max_open_conns: 20
max_idle_conns: 2 max_idle_conns: 2
@@ -243,9 +243,9 @@ homeserver:
# The address that this appservice can use to connect to the homeserver. # The address that this appservice can use to connect to the homeserver.
# Local addresses without HTTPS are generally recommended when the bridge is running on the same machine, # Local addresses without HTTPS are generally recommended when the bridge is running on the same machine,
# but https also works if they run on different machines. # but https also works if they run on different machines.
address: {{ matrix_mautrix_telegram_homeserver_address | to_json }}
address: {{ matrix_bridge_mautrix_telegram_homeserver_address | to_json }}
# The domain of the homeserver (also known as server_name, used for MXIDs, etc). # The domain of the homeserver (also known as server_name, used for MXIDs, etc).
domain: {{ matrix_mautrix_telegram_homeserver_domain | to_json }}
domain: {{ matrix_bridge_mautrix_telegram_homeserver_domain | to_json }}


# What software is the homeserver running? # What software is the homeserver running?
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here. # Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
@@ -261,7 +261,7 @@ homeserver:
# The bridge will use the appservice as_token to authorize requests. # The bridge will use the appservice as_token to authorize requests.
message_send_checkpoint_endpoint: message_send_checkpoint_endpoint:
# Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246?
async_media: {{ matrix_mautrix_telegram_homeserver_async_media | to_json }}
async_media: {{ matrix_bridge_mautrix_telegram_homeserver_async_media | to_json }}


# Should the bridge use a websocket for connecting to the homeserver? # Should the bridge use a websocket for connecting to the homeserver?
# The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy,
@@ -277,11 +277,11 @@ appservice:
# Like the homeserver address, a local non-https address is recommended when the bridge is on the same machine. # Like the homeserver address, a local non-https address is recommended when the bridge is on the same machine.
# If the bridge is elsewhere, you must secure the connection yourself (e.g. with https or wireguard) # If the bridge is elsewhere, you must secure the connection yourself (e.g. with https or wireguard)
# If you want to use https, you need to use a reverse proxy. The bridge does not have TLS support built in. # If you want to use https, you need to use a reverse proxy. The bridge does not have TLS support built in.
address: {{ matrix_mautrix_telegram_appservice_address | to_json }}
address: {{ matrix_bridge_mautrix_telegram_appservice_address | to_json }}
# A public address that external services can use to reach this appservice. # A public address that external services can use to reach this appservice.
# This is only needed for things like public media. A reverse proxy is generally necessary when using this field. # This is only needed for things like public media. A reverse proxy is generally necessary when using this field.
# This value doesn't affect the registration file. # This value doesn't affect the registration file.
public_address: {{ matrix_mautrix_telegram_bridge_public_address | to_json }}
public_address: {{ matrix_bridge_mautrix_telegram_bridge_public_address | to_json }}


# The hostname and port where this appservice should listen. # The hostname and port where this appservice should listen.
# For Docker, you generally have to change the hostname to 0.0.0.0. # For Docker, you generally have to change the hostname to 0.0.0.0.
@@ -293,7 +293,7 @@ appservice:
# Appservice bot details. # Appservice bot details.
bot: bot:
# Username of the appservice bot. # Username of the appservice bot.
username: {{ matrix_mautrix_telegram_appservice_bot_username | to_json }}
username: {{ matrix_bridge_mautrix_telegram_appservice_bot_username | to_json }}
# Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty
# to leave display name/avatar as-is. # to leave display name/avatar as-is.
displayname: Telegram bridge bot displayname: Telegram bridge bot
@@ -308,8 +308,8 @@ appservice:
async_transactions: false async_transactions: false


# Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify.
as_token: {{ matrix_mautrix_telegram_appservice_token | to_json }}
hs_token: {{ matrix_mautrix_telegram_homeserver_token | to_json }}
as_token: {{ matrix_bridge_mautrix_telegram_appservice_token | to_json }}
hs_token: {{ matrix_bridge_mautrix_telegram_homeserver_token | to_json }}


# Localpart template of MXIDs for remote users. # Localpart template of MXIDs for remote users.
# {% raw %}{{.}}{% endraw %} is replaced with the internal ID of the user. # {% raw %}{{.}}{% endraw %} is replaced with the internal ID of the user.
@@ -327,7 +327,7 @@ matrix:
sync_direct_chat_list: true sync_direct_chat_list: true
# Whether created rooms should have federation enabled. If false, created portal rooms # Whether created rooms should have federation enabled. If false, created portal rooms
# will never be federated. Changing this option requires recreating rooms. # will never be federated. Changing this option requires recreating rooms.
federate_rooms: {{ matrix_mautrix_telegram_federate_rooms|to_json }}
federate_rooms: {{ matrix_bridge_mautrix_telegram_federate_rooms|to_json }}
# The threshold as bytes after which the bridge should roundtrip uploads via the disk # The threshold as bytes after which the bridge should roundtrip uploads via the disk
# rather than keeping the whole file in memory. # rather than keeping the whole file in memory.
upload_file_threshold: 5242880 upload_file_threshold: 5242880
@@ -347,7 +347,7 @@ provisioning:
prefix: /_matrix/provision prefix: /_matrix/provision
# Shared secret for authentication. If set to "generate" or null, a random secret will be generated, # Shared secret for authentication. If set to "generate" or null, a random secret will be generated,
# or if set to "disable", the provisioning API will be disabled. # or if set to "disable", the provisioning API will be disabled.
shared_secret: {{ matrix_mautrix_telegram_provisioning_shared_secret | to_json }}
shared_secret: {{ matrix_bridge_mautrix_telegram_provisioning_shared_secret | to_json }}
# Whether to allow provisioning API requests to be authed using Matrix access tokens. # Whether to allow provisioning API requests to be authed using Matrix access tokens.
# This follows the same rules as double puppeting to determine which server to contact to check the token, # This follows the same rules as double puppeting to determine which server to contact to check the token,
# which means that by default, it only works for users on the same server as the bridge. # which means that by default, it only works for users on the same server as the bridge.
@@ -363,7 +363,7 @@ public_media:
enabled: false enabled: false
# A key for signing public media URLs. # A key for signing public media URLs.
# If set to "generate", a random key will be generated. # If set to "generate", a random key will be generated.
signing_key: {{ matrix_mautrix_telegram_public_media_signing_key | to_json }}
signing_key: {{ matrix_bridge_mautrix_telegram_public_media_signing_key | to_json }}
# Number of seconds that public media URLs are valid for. # Number of seconds that public media URLs are valid for.
# If set to 0, URLs will never expire. # If set to 0, URLs will never expire.
expiry: 0 expiry: 0
@@ -397,7 +397,7 @@ direct_media:
# See https://docs.mau.fi/bridges/general/backfill.html for more details. # See https://docs.mau.fi/bridges/general/backfill.html for more details.
backfill: backfill:
# Whether to do backfilling at all. # Whether to do backfilling at all.
enabled: {{ matrix_mautrix_telegram_backfill_enabled | to_json }}
enabled: {{ matrix_bridge_mautrix_telegram_backfill_enabled | to_json }}
# Maximum number of messages to backfill in empty rooms. # Maximum number of messages to backfill in empty rooms.
max_initial_messages: 50 max_initial_messages: 50
# Maximum number of missed messages to backfill after bridge restarts. # Maximum number of missed messages to backfill after bridge restarts.
@@ -436,18 +436,18 @@ double_puppet:
allow_discovery: false allow_discovery: false
# Shared secrets for automatic double puppeting. # Shared secrets for automatic double puppeting.
# See https://docs.mau.fi/bridges/general/double-puppeting.html for instructions. # See https://docs.mau.fi/bridges/general/double-puppeting.html for instructions.
secrets: {{ matrix_mautrix_telegram_double_puppet_secrets | to_json }}
secrets: {{ matrix_bridge_mautrix_telegram_double_puppet_secrets | to_json }}


# End-to-bridge encryption support options. # End-to-bridge encryption support options.
# #
# See https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html for more info. # See https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html for more info.
encryption: encryption:
# Whether to enable encryption at all. If false, the bridge will not function in encrypted rooms. # Whether to enable encryption at all. If false, the bridge will not function in encrypted rooms.
allow: {{ matrix_mautrix_telegram_bridge_encryption_allow | to_json }}
allow: {{ matrix_bridge_mautrix_telegram_bridge_encryption_allow | to_json }}
# Whether to force-enable encryption in all bridged rooms. # Whether to force-enable encryption in all bridged rooms.
default: {{ matrix_mautrix_telegram_bridge_encryption_default | to_json }}
default: {{ matrix_bridge_mautrix_telegram_bridge_encryption_default | to_json }}
# Whether to require all messages to be encrypted and drop any unencrypted messages. # Whether to require all messages to be encrypted and drop any unencrypted messages.
require: {{ matrix_mautrix_telegram_bridge_encryption_require | to_json }}
require: {{ matrix_bridge_mautrix_telegram_bridge_encryption_require | to_json }}
# Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data.
# This option is not yet compatible with standard Matrix servers like Synapse and should not be used. # This option is not yet compatible with standard Matrix servers like Synapse and should not be used.
appservice: false appservice: false
@@ -455,16 +455,16 @@ encryption:
# Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202.
# Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861).
# Changing this option requires updating the appservice registration file. # Changing this option requires updating the appservice registration file.
msc4190: {{ matrix_mautrix_telegram_msc4190_enabled | to_json }}
msc4190: {{ matrix_bridge_mautrix_telegram_msc4190_enabled | to_json }}
# Whether to enable self-signing for bridges (Only the bridge bot uses this for now) # Whether to enable self-signing for bridges (Only the bridge bot uses this for now)
# Requires msc4190 to replace keys on reset # Requires msc4190 to replace keys on reset
self_sign: {{ matrix_mautrix_telegram_self_sign_enabled | to_json }}
self_sign: {{ matrix_bridge_mautrix_telegram_self_sign_enabled | to_json }}
# Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled.
# You must use a client that supports requesting keys from other users to use this feature. # You must use a client that supports requesting keys from other users to use this feature.
allow_key_sharing: {{ matrix_mautrix_telegram_bridge_encryption_key_sharing_allow | to_json }}
allow_key_sharing: {{ matrix_bridge_mautrix_telegram_bridge_encryption_key_sharing_allow | to_json }}
# Pickle key for encrypting encryption keys in the bridge database. # Pickle key for encrypting encryption keys in the bridge database.
# If set to generate, a random key will be generated. # If set to generate, a random key will be generated.
pickle_key: {{ matrix_mautrix_telegram_bridge_encryption_pickle_key | to_json }}
pickle_key: {{ matrix_bridge_mautrix_telegram_bridge_encryption_pickle_key | to_json }}
# Options for deleting megolm sessions from the bridge. # Options for deleting megolm sessions from the bridge.
delete_keys: delete_keys:
# Beeper-specific: delete outbound sessions when hungryserv confirms # Beeper-specific: delete outbound sessions when hungryserv confirms
@@ -523,7 +523,7 @@ encryption:


# Logging config. See https://github.com/tulir/zeroconfig for details. # Logging config. See https://github.com/tulir/zeroconfig for details.
logging: logging:
min_level: {{ matrix_mautrix_telegram_logging_level | to_json }}
min_level: {{ matrix_bridge_mautrix_telegram_logging_level | to_json }}
writers: writers:
- type: stdout - type: stdout
format: pretty-colored format: pretty-colored

+ 23
- 23
roles/custom/matrix-bridge-mautrix-telegram/templates/labels.j2 View File

@@ -4,39 +4,39 @@ SPDX-FileCopyrightText: 2024 - 2026 Slavi Pantaleev
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}


{% if matrix_mautrix_telegram_container_labels_traefik_enabled %}
{% if matrix_bridge_mautrix_telegram_container_labels_traefik_enabled %}
traefik.enable=true traefik.enable=true


{% if matrix_mautrix_telegram_container_labels_traefik_docker_network %}
traefik.docker.network={{ matrix_mautrix_telegram_container_labels_traefik_docker_network }}
{% if matrix_bridge_mautrix_telegram_container_labels_traefik_docker_network %}
traefik.docker.network={{ matrix_bridge_mautrix_telegram_container_labels_traefik_docker_network }}
{% endif %} {% endif %}


traefik.http.services.matrix-mautrix-telegram-metrics.loadbalancer.server.port=8001 traefik.http.services.matrix-mautrix-telegram-metrics.loadbalancer.server.port=8001


{% if matrix_mautrix_telegram_container_labels_metrics_enabled %}
{% if matrix_bridge_mautrix_telegram_container_labels_metrics_enabled %}
############################################################ ############################################################
# # # #
# Metrics # # Metrics #
# # # #
############################################################ ############################################################


{% if matrix_mautrix_telegram_container_labels_metrics_middleware_basic_auth_enabled %}
traefik.http.middlewares.matrix-mautrix-telegram-metrics-basic-auth.basicauth.users={{ matrix_mautrix_telegram_container_labels_metrics_middleware_basic_auth_users }}
{% if matrix_bridge_mautrix_telegram_container_labels_metrics_middleware_basic_auth_enabled %}
traefik.http.middlewares.matrix-mautrix-telegram-metrics-basic-auth.basicauth.users={{ matrix_bridge_mautrix_telegram_container_labels_metrics_middleware_basic_auth_users }}
traefik.http.routers.matrix-mautrix-telegram-metrics.middlewares=matrix-mautrix-telegram-metrics-basic-auth traefik.http.routers.matrix-mautrix-telegram-metrics.middlewares=matrix-mautrix-telegram-metrics-basic-auth
{% endif %} {% endif %}


traefik.http.routers.matrix-mautrix-telegram-metrics.rule={{ matrix_mautrix_telegram_container_labels_metrics_traefik_rule }}
traefik.http.routers.matrix-mautrix-telegram-metrics.rule={{ matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_rule }}


{% if matrix_mautrix_telegram_container_labels_metrics_traefik_priority | int > 0 %}
traefik.http.routers.matrix-mautrix-telegram-metrics.priority={{ matrix_mautrix_telegram_container_labels_metrics_traefik_priority }}
{% if matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_priority | int > 0 %}
traefik.http.routers.matrix-mautrix-telegram-metrics.priority={{ matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_priority }}
{% endif %} {% endif %}


traefik.http.routers.matrix-mautrix-telegram-metrics.service=matrix-mautrix-telegram-metrics traefik.http.routers.matrix-mautrix-telegram-metrics.service=matrix-mautrix-telegram-metrics
traefik.http.routers.matrix-mautrix-telegram-metrics.entrypoints={{ matrix_mautrix_telegram_container_labels_metrics_traefik_entrypoints }}
traefik.http.routers.matrix-mautrix-telegram-metrics.entrypoints={{ matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_entrypoints }}


traefik.http.routers.matrix-mautrix-telegram-metrics.tls={{ matrix_mautrix_telegram_container_labels_metrics_traefik_tls | to_json }}
{% if matrix_mautrix_telegram_container_labels_metrics_traefik_tls %}
traefik.http.routers.matrix-mautrix-telegram-metrics.tls.certResolver={{ matrix_mautrix_telegram_container_labels_metrics_traefik_tls_certResolver }}
traefik.http.routers.matrix-mautrix-telegram-metrics.tls={{ matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_tls | to_json }}
{% if matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_tls %}
traefik.http.routers.matrix-mautrix-telegram-metrics.tls.certResolver={{ matrix_bridge_mautrix_telegram_container_labels_metrics_traefik_tls_certResolver }}
{% endif %} {% endif %}


############################################################ ############################################################
@@ -46,7 +46,7 @@ traefik.http.routers.matrix-mautrix-telegram-metrics.tls.certResolver={{ matrix_
############################################################ ############################################################
{% endif %} {% endif %}


{% if matrix_mautrix_telegram_container_labels_exposure_enabled %}
{% if matrix_bridge_mautrix_telegram_container_labels_exposure_enabled %}
############################################################ ############################################################
# # # #
# Bridge API exposure # # Bridge API exposure #
@@ -55,21 +55,21 @@ traefik.http.routers.matrix-mautrix-telegram-metrics.tls.certResolver={{ matrix_


traefik.http.services.matrix-mautrix-telegram-exposure.loadbalancer.server.port=8080 traefik.http.services.matrix-mautrix-telegram-exposure.loadbalancer.server.port=8080


traefik.http.middlewares.matrix-mautrix-telegram-exposure-strip-prefix.stripprefix.prefixes={{ matrix_mautrix_telegram_exposure_path_prefix }}
traefik.http.middlewares.matrix-mautrix-telegram-exposure-strip-prefix.stripprefix.prefixes={{ matrix_bridge_mautrix_telegram_exposure_path_prefix }}
traefik.http.routers.matrix-mautrix-telegram-exposure.middlewares=matrix-mautrix-telegram-exposure-strip-prefix traefik.http.routers.matrix-mautrix-telegram-exposure.middlewares=matrix-mautrix-telegram-exposure-strip-prefix


traefik.http.routers.matrix-mautrix-telegram-exposure.rule={{ matrix_mautrix_telegram_container_labels_exposure_traefik_rule }}
traefik.http.routers.matrix-mautrix-telegram-exposure.rule={{ matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_rule }}


{% if matrix_mautrix_telegram_container_labels_exposure_traefik_priority | int > 0 %}
traefik.http.routers.matrix-mautrix-telegram-exposure.priority={{ matrix_mautrix_telegram_container_labels_exposure_traefik_priority }}
{% if matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_priority | int > 0 %}
traefik.http.routers.matrix-mautrix-telegram-exposure.priority={{ matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_priority }}
{% endif %} {% endif %}


traefik.http.routers.matrix-mautrix-telegram-exposure.service=matrix-mautrix-telegram-exposure traefik.http.routers.matrix-mautrix-telegram-exposure.service=matrix-mautrix-telegram-exposure
traefik.http.routers.matrix-mautrix-telegram-exposure.entrypoints={{ matrix_mautrix_telegram_container_labels_exposure_traefik_entrypoints }}
traefik.http.routers.matrix-mautrix-telegram-exposure.entrypoints={{ matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_entrypoints }}


traefik.http.routers.matrix-mautrix-telegram-exposure.tls={{ matrix_mautrix_telegram_container_labels_exposure_traefik_tls | to_json }}
{% if matrix_mautrix_telegram_container_labels_exposure_traefik_tls %}
traefik.http.routers.matrix-mautrix-telegram-exposure.tls.certResolver={{ matrix_mautrix_telegram_container_labels_exposure_traefik_tls_certResolver }}
traefik.http.routers.matrix-mautrix-telegram-exposure.tls={{ matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_tls | to_json }}
{% if matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_tls %}
traefik.http.routers.matrix-mautrix-telegram-exposure.tls.certResolver={{ matrix_bridge_mautrix_telegram_container_labels_exposure_traefik_tls_certResolver }}
{% endif %} {% endif %}


############################################################ ############################################################
@@ -82,4 +82,4 @@ traefik.http.routers.matrix-mautrix-telegram-exposure.tls.certResolver={{ matrix


{% endif %} {% endif %}


{{ matrix_mautrix_telegram_container_labels_additional_labels }}
{{ matrix_bridge_mautrix_telegram_container_labels_additional_labels }}

+ 10
- 10
roles/custom/matrix-bridge-mautrix-telegram/templates/systemd/matrix-mautrix-telegram.service.j2 View File

@@ -1,11 +1,11 @@
#jinja2: lstrip_blocks: True #jinja2: lstrip_blocks: True
[Unit] [Unit]
Description=Matrix Mautrix Telegram bridge Description=Matrix Mautrix Telegram bridge
{% for service in matrix_mautrix_telegram_systemd_required_services_list %}
{% for service in matrix_bridge_mautrix_telegram_systemd_required_services_list %}
Requires={{ service }} Requires={{ service }}
After={{ service }} After={{ service }}
{% endfor %} {% endfor %}
{% for service in matrix_mautrix_telegram_systemd_wanted_services_list %}
{% for service in matrix_bridge_mautrix_telegram_systemd_wanted_services_list %}
Wants={{ service }} Wants={{ service }}
{% endfor %} {% endfor %}
DefaultDependencies=no DefaultDependencies=no
@@ -22,19 +22,19 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--log-driver=none \ --log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \ --cap-drop=ALL \
--network={{ matrix_mautrix_telegram_container_network }} \
--mount type=bind,src={{ matrix_mautrix_telegram_config_path }},dst=/config \
--mount type=bind,src={{ matrix_mautrix_telegram_data_path }},dst=/data \
--label-file={{ matrix_mautrix_telegram_base_path }}/labels \
--network={{ matrix_bridge_mautrix_telegram_container_network }} \
--mount type=bind,src={{ matrix_bridge_mautrix_telegram_config_path }},dst=/config \
--mount type=bind,src={{ matrix_bridge_mautrix_telegram_data_path }},dst=/data \
--label-file={{ matrix_bridge_mautrix_telegram_base_path }}/labels \
--workdir=/data \ --workdir=/data \
{% for arg in matrix_mautrix_telegram_container_extra_arguments %}
{% for arg in matrix_bridge_mautrix_telegram_container_extra_arguments %}
{{ arg }} \ {{ arg }} \
{% endfor %} {% endfor %}
{{ matrix_mautrix_telegram_container_image }} \
{{ matrix_bridge_mautrix_telegram_container_image }} \
/usr/bin/mautrix-telegram -c /config/config.yaml -r /config/registration.yaml --no-update /usr/bin/mautrix-telegram -c /config/config.yaml -r /config/registration.yaml --no-update


{% if matrix_mautrix_telegram_container_network != 'host' %}
{% for network in matrix_mautrix_telegram_container_additional_networks %}
{% if matrix_bridge_mautrix_telegram_container_network != 'host' %}
{% for network in matrix_bridge_mautrix_telegram_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mautrix-telegram ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mautrix-telegram
{% endfor %} {% endfor %}
{% endif %} {% endif %}


Loading…
Cancel
Save