From e019a8cd00253d2031b4723f0a1bc13ed7b9138b Mon Sep 17 00:00:00 2001 From: Suguru Hirahara Date: Thu, 12 Feb 2026 22:58:49 +0900 Subject: [PATCH] Remove roles/custom/matrix-dimension Signed-off-by: Suguru Hirahara --- .../custom/matrix-dimension/defaults/main.yml | 238 ------------------ roles/custom/matrix-dimension/tasks/main.yml | 27 -- .../matrix-dimension/tasks/setup_install.yml | 162 ------------ .../tasks/setup_uninstall.yml | 31 --- .../tasks/validate_config.yml | 62 ----- .../matrix-dimension/templates/config.yaml.j2 | 75 ------ .../templates/config.yaml.j2.license | 5 - .../matrix-dimension/templates/labels.j2 | 52 ---- .../systemd/matrix-dimension.service.j2 | 58 ----- .../matrix-dimension.service.j2.license | 7 - roles/custom/matrix-dimension/vars/main.yml | 11 - 11 files changed, 728 deletions(-) delete mode 100644 roles/custom/matrix-dimension/defaults/main.yml delete mode 100644 roles/custom/matrix-dimension/tasks/main.yml delete mode 100644 roles/custom/matrix-dimension/tasks/setup_install.yml delete mode 100644 roles/custom/matrix-dimension/tasks/setup_uninstall.yml delete mode 100644 roles/custom/matrix-dimension/tasks/validate_config.yml delete mode 100644 roles/custom/matrix-dimension/templates/config.yaml.j2 delete mode 100644 roles/custom/matrix-dimension/templates/config.yaml.j2.license delete mode 100644 roles/custom/matrix-dimension/templates/labels.j2 delete mode 100644 roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2 delete mode 100644 roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2.license delete mode 100644 roles/custom/matrix-dimension/vars/main.yml diff --git a/roles/custom/matrix-dimension/defaults/main.yml b/roles/custom/matrix-dimension/defaults/main.yml deleted file mode 100644 index 8d4a11c7e..000000000 --- a/roles/custom/matrix-dimension/defaults/main.yml +++ /dev/null @@ -1,238 +0,0 @@ -# SPDX-FileCopyrightText: 2019 - 2021 MDAD project contributors -# SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev -# SPDX-FileCopyrightText: 2019 Dan Arnfield -# SPDX-FileCopyrightText: 2019 Edgars Voroboks -# SPDX-FileCopyrightText: 2019 Sylvia van Os -# SPDX-FileCopyrightText: 2020 Chris van Dijk -# SPDX-FileCopyrightText: 2021 Aaron Raimist -# SPDX-FileCopyrightText: 2021 Ahmad Haghighi -# SPDX-FileCopyrightText: 2022 Marko Weltzer -# SPDX-FileCopyrightText: 2022 Nikita Chernyi -# SPDX-FileCopyrightText: 2023 Samuel Meenzen -# SPDX-FileCopyrightText: 2024 Suguru Hirahara -# -# SPDX-License-Identifier: AGPL-3.0-or-later - ---- -# Project source code URL: https://github.com/turt2live/matrix-dimension - -matrix_dimension_enabled: false - -matrix_dimension_scheme: https - -# The hostname at which Dimension is served. -matrix_dimension_hostname: '' - -# The path at which Dimension is exposed. -# This value must either be `/` or not end with a slash (e.g. `/dimension`). -matrix_dimension_path_prefix: / - -# You are required to specify an access token for Dimension to work. -# For information on how to acquire an access token, visit https://t2bot.io/docs/access_tokens -matrix_dimension_access_token: "" - -# Users in form: ['@alice:example.com', '@bob:example.com'] -matrix_dimension_admins: [] - -# Whether to allow Dimension widgets serve websites with invalid or self signed SSL certificates -matrix_dimension_widgets_allow_self_signed_ssl_certificates: false - -matrix_dimension_container_image_self_build: false -matrix_dimension_container_image_self_build_repo: "https://github.com/turt2live/matrix-dimension.git" -matrix_dimension_container_image_self_build_branch: master - -matrix_dimension_base_path: "{{ matrix_base_data_path }}/dimension" -matrix_dimension_docker_src_files_path: "{{ matrix_base_data_path }}/docker-src/dimension" - -# renovate: datasource=docker depName=turt2live/matrix-dimension -matrix_dimension_version: latest -matrix_dimension_docker_image: "{{ matrix_dimension_docker_image_registry_prefix }}turt2live/matrix-dimension:{{ matrix_dimension_version }}" -matrix_dimension_docker_image_registry_prefix: "{{ 'localhost/' if matrix_dimension_container_image_self_build else matrix_dimension_docker_image_registry_prefix_upstream }}" -matrix_dimension_docker_image_registry_prefix_upstream: "{{ matrix_dimension_docker_image_registry_prefix_upstream_default }}" -matrix_dimension_docker_image_registry_prefix_upstream_default: docker.io/ -matrix_dimension_docker_image_force_pull: "{{ matrix_dimension_docker_image.endswith(':latest') }}" - -# List of systemd services that matrix-dimension.service depends on. -matrix_dimension_systemd_required_services_list: "{{ matrix_dimension_systemd_required_services_list_default + matrix_dimension_systemd_required_services_list_auto + matrix_dimension_systemd_required_services_list_custom }}" -matrix_dimension_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_dimension_systemd_required_services_list_auto: [] -matrix_dimension_systemd_required_services_list_custom: [] - -# List of systemd services that matrix-dimension.service wants -matrix_dimension_systemd_wanted_services_list: [] - -# The user and group ID correspond to the node user in the `turt2live/matrix-dimension` image. -matrix_dimension_user_uid: '1000' -matrix_dimension_user_gid: '1000' - -# The base container network. It will be auto-created by this role if it doesn't exist already. -matrix_dimension_container_network: matrix-dimension - -# A list of additional container networks that the container would be connected to. -# The role does not create these networks, so make sure they already exist. -# Use this to expose this container to another reverse proxy, which runs in a different container network. -matrix_dimension_container_additional_networks: [] - -# Controls whether the matrix-dimension container exposes its HTTP port (tcp/8184 in the container). -# -# Takes an ":" or "" value (e.g. "127.0.0.1:8184"), or empty string to not expose. -matrix_dimension_container_http_host_bind_port: '' - - -# matrix_dimension_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. -# -# To inject your own other container labels, see `matrix_dimension_container_labels_additional_labels`. -matrix_dimension_container_labels_traefik_enabled: true -matrix_dimension_container_labels_traefik_docker_network: "{{ matrix_dimension_container_network }}" -matrix_dimension_container_labels_traefik_hostname: "{{ matrix_dimension_hostname }}" -# The path prefix must either be `/` or not end with a slash (e.g. `/dimension`). -matrix_dimension_container_labels_traefik_path_prefix: "{{ matrix_dimension_path_prefix }}" -matrix_dimension_container_labels_traefik_rule: "Host(`{{ matrix_dimension_container_labels_traefik_hostname }}`){% if matrix_dimension_container_labels_traefik_path_prefix != '/' %} && PathPrefix(`{{ matrix_dimension_container_labels_traefik_path_prefix }}`){% endif %}" -matrix_dimension_container_labels_traefik_priority: 0 -matrix_dimension_container_labels_traefik_entrypoints: web-secure -matrix_dimension_container_labels_traefik_tls: "{{ matrix_dimension_container_labels_traefik_entrypoints != 'web' }}" -matrix_dimension_container_labels_traefik_tls_certResolver: default # noqa var-naming - -# Controls which additional headers to attach to all HTTP responses. -# To add your own headers, use `matrix_dimension_container_labels_traefik_additional_response_headers_custom` -matrix_dimension_container_labels_traefik_additional_response_headers: "{{ matrix_dimension_container_labels_traefik_additional_response_headers_auto | combine(matrix_dimension_container_labels_traefik_additional_response_headers_custom) }}" -matrix_dimension_container_labels_traefik_additional_response_headers_auto: | - {{ - {} - | combine ({'X-XSS-Protection': matrix_dimension_http_header_xss_protection} if matrix_dimension_http_header_xss_protection else {}) - | combine ({'X-Frame-Options': matrix_dimension_http_header_frame_options} if matrix_dimension_http_header_frame_options else {}) - | combine ({'X-Content-Type-Options': matrix_dimension_http_header_content_type_options} if matrix_dimension_http_header_content_type_options else {}) - | combine ({'Content-Security-Policy': matrix_dimension_http_header_content_security_policy} if matrix_dimension_http_header_content_security_policy else {}) - | combine ({'Permission-Policy': matrix_dimension_http_header_content_permission_policy} if matrix_dimension_http_header_content_permission_policy else {}) - | combine ({'Strict-Transport-Security': matrix_dimension_http_header_strict_transport_security} if matrix_dimension_http_header_strict_transport_security and matrix_dimension_container_labels_traefik_tls else {}) - }} -matrix_dimension_container_labels_traefik_additional_response_headers_custom: {} - -# matrix_dimension_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file. -# See `../templates/labels.j2` for details. -# -# Example: -# matrix_dimension_container_labels_additional_labels: | -# my.label=1 -# another.label="here" -matrix_dimension_container_labels_additional_labels: '' - - -# A list of extra arguments to pass to the container -matrix_dimension_container_extra_arguments: [] - -# Public facing base URL of the Dimension service. -# It should not end with a slash. -matrix_dimension_base_url: "{{ matrix_dimension_scheme }}://{{ matrix_dimension_hostname }}{{ '' if matrix_dimension_path_prefix == '/' else matrix_dimension_path_prefix }}" - -matrix_dimension_integrations_ui_url: "{{ matrix_dimension_base_url }}/element" -matrix_dimension_integrations_rest_url: "{{ matrix_dimension_base_url }}/api/v1/scalar" -matrix_dimension_integrations_widgets_urls: ["{{ matrix_dimension_base_url }}/widgets"] -matrix_dimension_integrations_jitsi_widget_url: "{{ matrix_dimension_base_url }}/widgets/jitsi" - -matrix_dimension_homeserver_clientServerUrl: '' # noqa var-naming -matrix_dimension_homeserver_federationUrl: '' # noqa var-naming -matrix_dimension_homeserver_mediaUrl: '' # noqa var-naming - -# Controls the dimension.publicUrl configuration option -matrix_dimension_dimension_publicUrl: "{{ matrix_dimension_base_url }}" # noqa var-naming - -# Specifies the value of the `X-XSS-Protection` header -# Stops pages from loading when they detect reflected cross-site scripting (XSS) attacks. -# -# Learn more about it is here: -# - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection -# - https://portswigger.net/web-security/cross-site-scripting/reflected -matrix_dimension_http_header_xss_protection: "1; mode=block" - -# Specifies the value of the `X-Frame-Options` header which controls whether framing can happen. -# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options -matrix_dimension_http_header_frame_options: '' - -# Specifies the value of the `X-Content-Type-Options` header. -# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options -matrix_dimension_http_header_content_type_options: nosniff - -# Specifies the value of the `Content-Security-Policy` header. -# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy -matrix_dimension_http_header_content_security_policy: '' - -# Specifies the value of the `Permission-Policy` header. -# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permission-Policy -matrix_dimension_http_header_content_permission_policy: "{{ 'interest-cohort=()' if matrix_dimension_floc_optout_enabled else '' }}" - -# Specifies the value of the `Strict-Transport-Security` header. -# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security -matrix_dimension_http_header_strict_transport_security: "max-age=31536000; includeSubDomains{{ '; preload' if matrix_dimension_hsts_preload_enabled else '' }}" - -# Controls whether to send a "Permissions-Policy interest-cohort=();" header along with all responses -# -# Learn more about what it is here: -# - https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea -# - https://paramdeo.com/blog/opting-your-website-out-of-googles-floc-network -# - https://amifloced.org/ -# -# Of course, a better solution is to just stop using browsers (like Chrome), which participate in such tracking practices. -# See: `matrix_dimension_content_permission_policy` -matrix_dimension_floc_optout_enabled: true - -# Controls if HSTS preloading is enabled -# -# In its strongest and recommended form, the [HSTS policy](https://www.chromium.org/hsts) includes all subdomains, and -# indicates a willingness to be "preloaded" into browsers: -# `Strict-Transport-Security: max-age=31536000; includeSubDomains; preload` -# For more information visit: -# - https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security -# - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security -# - https://hstspreload.org/#opt-in -# See: `matrix_dimension_http_header_strict_transport_security` -matrix_dimension_hsts_preload_enabled: false - -# Database-related configuration fields. -# -# To use SQLite, stick to these defaults. -# -# To use Postgres: -# - change the engine (`matrix_dimension_database_engine: 'postgres'`) -# - adjust your database credentials via the `matrix_dimension_database_*` variables -matrix_dimension_database_engine: 'sqlite' - -matrix_dimension_sqlite_database_path_local: "{{ matrix_dimension_base_path }}/dimension.db" -matrix_dimension_sqlite_database_path_in_container: "dimension.db" - -matrix_dimension_database_username: 'matrix_dimension' -matrix_dimension_database_password: 'some-password' -matrix_dimension_database_hostname: '' -matrix_dimension_database_port: 5432 -matrix_dimension_database_name: 'matrix_dimension' - -matrix_dimension_database_connection_string: 'postgres://{{ matrix_dimension_database_username }}:{{ matrix_dimension_database_password }}@{{ matrix_dimension_database_hostname }}:{{ matrix_dimension_database_port }}/{{ matrix_dimension_database_name }}' - - -# Default Dimension configuration template which covers the generic use case. -# You can customize it by controlling the various variables inside it. -# -# For a more advanced customization, you can extend the default (see `matrix_dimension_configuration_extension_yaml`) -# or completely replace this variable with your own template. -matrix_dimension_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" - -matrix_dimension_configuration_extension_yaml: | - # Your custom YAML configuration for Dimension goes here. - # This configuration extends the default starting configuration (`matrix_dimension_configuration_yaml`). - # - # 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 - # completely redefining `matrix_dimension_configuration_yaml`. - # - # Example configuration extension follows: - # telegram: - # botToken: "YourTokenHere" - # - -matrix_dimension_configuration_extension: "{{ matrix_dimension_configuration_extension_yaml | from_yaml if matrix_dimension_configuration_extension_yaml | from_yaml is mapping else {} }}" - -# Holds the final Dimension configuration (a combination of the default and its extension). -# You most likely don't need to touch this variable. Instead, see `matrix_dimension_configuration_yaml`. -matrix_dimension_configuration: "{{ matrix_dimension_configuration_yaml | from_yaml | combine(matrix_dimension_configuration_extension, recursive=True) }}" diff --git a/roles/custom/matrix-dimension/tasks/main.yml b/roles/custom/matrix-dimension/tasks/main.yml deleted file mode 100644 index 19385f106..000000000 --- a/roles/custom/matrix-dimension/tasks/main.yml +++ /dev/null @@ -1,27 +0,0 @@ -# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev -# SPDX-FileCopyrightText: 2019 Dan Arnfield -# SPDX-FileCopyrightText: 2019 Edgars Voroboks -# SPDX-FileCopyrightText: 2022 Marko Weltzer -# -# SPDX-License-Identifier: AGPL-3.0-or-later - ---- - -- tags: - - setup-all - - setup-dimension - - install-all - - install-dimension - block: - - when: matrix_dimension_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_dimension_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-dimension - block: - - when: not matrix_dimension_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" diff --git a/roles/custom/matrix-dimension/tasks/setup_install.yml b/roles/custom/matrix-dimension/tasks/setup_install.yml deleted file mode 100644 index 84bbfc897..000000000 --- a/roles/custom/matrix-dimension/tasks/setup_install.yml +++ /dev/null @@ -1,162 +0,0 @@ -# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev -# SPDX-FileCopyrightText: 2020 Stuart Mumford -# SPDX-FileCopyrightText: 2021 MDAD project contributors -# SPDX-FileCopyrightText: 2021 Yannick Goossens -# SPDX-FileCopyrightText: 2022 Jim Myhrberg -# SPDX-FileCopyrightText: 2022 Marko Weltzer -# SPDX-FileCopyrightText: 2022 Nikita Chernyi -# SPDX-FileCopyrightText: 2022 Sebastian Gumprich -# SPDX-FileCopyrightText: 2024 David Mehren -# SPDX-FileCopyrightText: 2025 Suguru Hirahara -# -# SPDX-License-Identifier: AGPL-3.0-or-later - ---- - -- ansible.builtin.set_fact: - matrix_dimension_requires_restart: false - -- when: "matrix_dimension_database_engine == 'postgres'" - block: - - name: Check if an SQLite database already exists - ansible.builtin.stat: - path: "{{ matrix_dimension_sqlite_database_path_local }}" - register: matrix_dimension_sqlite_database_path_local_stat_result - - - when: "matrix_dimension_sqlite_database_path_local_stat_result.stat.exists | bool" - block: - # pgloader makes a few columns `smallint`, instead of `boolean`. - # We need to fix them up. - - ansible.builtin.set_fact: - matrix_dimension_pgloader_additional_psql_statements_list: [] - - - ansible.builtin.set_fact: - matrix_dimension_pgloader_additional_psql_statements_list: | - {{ - matrix_dimension_pgloader_additional_psql_statements_list - + - ([] if item.default == '' else ['ALTER TABLE ' + item.table + ' ALTER COLUMN "' + item.column + '" DROP default;']) - + - (['ALTER TABLE ' + item.table + ' ALTER COLUMN "' + item.column + '" TYPE BOOLEAN USING("' + item.column + '"::text::boolean);']) - + - ([] if item.default == '' else ['ALTER TABLE ' + item.table + ' ALTER COLUMN "' + item.column + '" SET default ' + item.default + ';']) - }} - with_items: - - {'table': 'dimension_widgets', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_widgets', 'column': 'isPublic', 'default': ''} - - {'table': 'dimension_webhook_bridges', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_user_sticker_packs', 'column': 'isSelected', 'default': ''} - - {'table': 'dimension_scalar_tokens', 'column': 'isDimensionToken', 'default': ''} - - {'table': 'dimension_users', 'column': 'isSelfBot', 'default': 'false'} - - {'table': 'dimension_telegram_bridges', 'column': 'allowTgPuppets', 'default': ''} - - {'table': 'dimension_telegram_bridges', 'column': 'allowMxPuppets', 'default': ''} - - {'table': 'dimension_telegram_bridges', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_sticker_packs', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_sticker_packs', 'column': 'isPublic', 'default': ''} - - {'table': 'dimension_slack_bridges', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_neb_integrations', 'column': 'isPublic', 'default': ''} - - {'table': 'dimension_neb_integrations', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_irc_bridges', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_irc_bridge_networks', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_gitter_bridges', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_custom_simple_bots', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_custom_simple_bots', 'column': 'isPublic', 'default': ''} - - {'table': 'dimension_bridges', 'column': 'isEnabled', 'default': ''} - - {'table': 'dimension_bridges', 'column': 'isPublic', 'default': ''} - - - ansible.builtin.include_role: - name: galaxy/postgres - tasks_from: migrate_db_to_postgres - vars: - postgres_db_migration_request: - src: "{{ matrix_dimension_sqlite_database_path_local }}" - dst: "{{ matrix_dimension_database_connection_string }}" - caller: "{{ role_path | basename }}" - engine_variable_name: 'matrix_dimension_database_engine' - engine_old: 'sqlite' - systemd_services_to_stop: ['matrix-dimension.service'] - pgloader_options: ['--with "quote identifiers"'] - additional_psql_statements_list: "{{ matrix_dimension_pgloader_additional_psql_statements_list }}" - additional_psql_statements_db_name: "{{ matrix_dimension_database_name }}" - - - ansible.builtin.set_fact: - matrix_dimension_requires_restart: true - -- name: Ensure Dimension base path exists - ansible.builtin.file: - path: "{{ matrix_dimension_base_path }}" - state: directory - mode: 0770 - owner: "{{ matrix_user_name }}" - group: "{{ matrix_dimension_user_gid }}" - -- name: Ensure Dimension config installed - ansible.builtin.copy: - content: "{{ matrix_dimension_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_dimension_base_path }}/config.yaml" - mode: 0640 - owner: "{{ matrix_user_name }}" - group: "{{ matrix_dimension_user_gid }}" - -- name: Ensure Dimension labels installed - ansible.builtin.template: - src: "{{ role_path }}/templates/labels.j2" - dest: "{{ matrix_dimension_base_path }}/labels" - mode: 0640 - owner: "{{ matrix_user_name }}" - group: "{{ matrix_group_name }}" - -- name: Ensure Dimension image is pulled - community.docker.docker_image: - name: "{{ matrix_dimension_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_dimension_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" - force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_dimension_docker_image_force_pull }}" - when: "not matrix_dimension_container_image_self_build | bool" - register: matrix_dimension_pull_results - retries: "{{ devture_playbook_help_container_retries_count }}" - delay: "{{ devture_playbook_help_container_retries_delay }}" - until: matrix_dimension_pull_results is not failed - -- name: Ensure Dimension repository is present on self-build - ansible.builtin.git: - repo: "{{ matrix_dimension_container_image_self_build_repo }}" - dest: "{{ matrix_dimension_docker_src_files_path }}" - version: "{{ matrix_dimension_container_image_self_build_branch }}" - force: "yes" - become: true - become_user: "{{ matrix_user_name }}" - when: "matrix_dimension_container_image_self_build | bool" - register: matrix_dimension_git_pull_results - -- name: Ensure Dimension Docker image is built - community.docker.docker_image: - name: "{{ matrix_dimension_docker_image }}" - source: build - force_source: "{{ matrix_dimension_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" - force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_dimension_git_pull_results.changed }}" - build: - dockerfile: Dockerfile - path: "{{ matrix_dimension_docker_src_files_path }}" - pull: true - when: "matrix_dimension_container_image_self_build | bool" - -- name: Ensure Dimension container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_dimension_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-dimension.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-dimension.service.j2" - dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-dimension.service" - mode: 0644 - -- name: Ensure matrix-dimension.service restarted, if necessary - ansible.builtin.service: - name: "matrix-dimension.service" - state: restarted - daemon_reload: true - when: "matrix_dimension_requires_restart | bool" diff --git a/roles/custom/matrix-dimension/tasks/setup_uninstall.yml b/roles/custom/matrix-dimension/tasks/setup_uninstall.yml deleted file mode 100644 index b52995681..000000000 --- a/roles/custom/matrix-dimension/tasks/setup_uninstall.yml +++ /dev/null @@ -1,31 +0,0 @@ -# SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev -# SPDX-FileCopyrightText: 2022 Marko Weltzer -# SPDX-FileCopyrightText: 2022 Sebastian Gumprich -# -# SPDX-License-Identifier: AGPL-3.0-or-later - ---- - -- name: Check existence of matrix-dimension service - ansible.builtin.stat: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-dimension.service" - register: matrix_dimension_service_stat - -- when: matrix_dimension_service_stat.stat.exists | bool - block: - - name: Ensure matrix-dimension is stopped - ansible.builtin.service: - name: matrix-dimension - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-dimension.service doesn't exist - ansible.builtin.file: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-dimension.service" - state: absent - - - name: Ensure Dimension base directory doesn't exist - ansible.builtin.file: - path: "{{ matrix_dimension_base_path }}" - state: absent diff --git a/roles/custom/matrix-dimension/tasks/validate_config.yml b/roles/custom/matrix-dimension/tasks/validate_config.yml deleted file mode 100644 index 3510b5c6f..000000000 --- a/roles/custom/matrix-dimension/tasks/validate_config.yml +++ /dev/null @@ -1,62 +0,0 @@ -# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev -# SPDX-FileCopyrightText: 2019 Dan Arnfield -# SPDX-FileCopyrightText: 2019 Edgars Voroboks -# SPDX-FileCopyrightText: 2020 Chris van Dijk -# SPDX-FileCopyrightText: 2022 Marko Weltzer -# SPDX-FileCopyrightText: 2025 Suguru Hirahara -# -# SPDX-License-Identifier: AGPL-3.0-or-later - ---- - -- name: Fail if required Dimension settings not defined - ansible.builtin.fail: - msg: > - You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" - with_items: - - {'name': 'matrix_dimension_hostname', when: true} - - {'name': 'matrix_dimension_container_network', when: true} - - {'name': 'matrix_dimension_access_token', when: true} - - {'name': 'matrix_dimension_homeserver_clientServerUrl', when: true} - - {'name': 'matrix_dimension_homeserver_federationUrl', when: true} - - {'name': 'matrix_dimension_homeserver_mediaUrl', when: true} - - {'name': 'matrix_dimension_database_hostname', when: "{{ matrix_dimension_database_engine == 'postgres' }}"} - -- name: (Deprecation) Catch and report renamed Dimension variables - ansible.builtin.fail: - msg: >- - Your configuration contains a variable, which now has a different name. - 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" - with_items: - - {'old': 'matrix_dimension_container_expose_port', 'new': ''} - - {'old': 'matrix_dimension_container_image_name_prefix', 'new': 'matrix_dimension_docker_image_registry_prefix'} - -- when: matrix_dimension_container_labels_traefik_enabled | bool - block: - - name: Fail if required Dimension Traefik settings not defined - ansible.builtin.fail: - msg: >- - You need to define a required configuration setting (`{{ item }}`). - when: "lookup('vars', item, default='') == ''" - with_items: - - matrix_dimension_container_labels_traefik_hostname - - matrix_dimension_container_labels_traefik_path_prefix - - # We ensure it doesn't end with a slash, because we handle both (slash and no-slash). - # Knowing that `matrix_dimension_container_labels_traefik_path_prefix` does not end with a slash - # ensures we know how to set these routes up without having to do "does it end with a slash" checks elsewhere. - - name: Fail if matrix_dimension_container_labels_traefik_path_prefix ends with a slash - ansible.builtin.fail: - msg: >- - matrix_dimension_container_labels_traefik_path_prefix (`{{ matrix_dimension_container_labels_traefik_path_prefix }}`) must either be `/` or not end with a slash (e.g. `/dimension`). - when: "matrix_dimension_container_labels_traefik_path_prefix != '/' and matrix_dimension_container_labels_traefik_path_prefix[-1] == '/'" - - - name: Fail if matrix_dimension_container_labels_traefik_path_prefix is not / - ansible.builtin.fail: - msg: >- - matrix_dimension_container_labels_traefik_path_prefix (`{{ matrix_dimension_container_labels_traefik_path_prefix }}`) must currently be set to `/`. - Other values are not supported. - See: https://github.com/turt2live/matrix-dimension/issues/510 - when: "matrix_dimension_container_labels_traefik_path_prefix != '/' and matrix_dimension_container_labels_traefik_path_prefix[-1] == '/'" diff --git a/roles/custom/matrix-dimension/templates/config.yaml.j2 b/roles/custom/matrix-dimension/templates/config.yaml.j2 deleted file mode 100644 index 7a426ad63..000000000 --- a/roles/custom/matrix-dimension/templates/config.yaml.j2 +++ /dev/null @@ -1,75 +0,0 @@ -#jinja2: lstrip_blocks: True -# The web settings for the service (API and UI). -# It is best to have this run on localhost and use a reverse proxy to access Dimension. -web: - port: 8184 - address: '0.0.0.0' - -# Homeserver configuration -homeserver: - # The domain name of the homeserver. This is used in many places, such as with go-neb - # setups, to identify the homeserver. - name: {{ matrix_domain | to_json }} - - # The URL that Dimension, go-neb, and other services provisioned by Dimension should - # use to access the homeserver with. - clientServerUrl: {{ matrix_dimension_homeserver_clientServerUrl | to_json }} - - # The URL that Dimension should use when trying to communicate with federated APIs on - # the homeserver. If not supplied or left empty Dimension will try to resolve the address - # through the normal federation process. - federationUrl: {{ matrix_dimension_homeserver_federationUrl | to_json }} - - # The URL that Dimension will redirect media requests to for downloading media such as - # stickers. If not supplied or left empty Dimension will use the clientServerUrl. - mediaUrl: {{ matrix_dimension_homeserver_mediaUrl | to_json }} - - # The access token Dimension should use for miscellaneous access to the homeserver. This - # should be for a user on the configured homeserver: any user will do, however it is - # recommended to use a dedicated user (such as @dimension:t2bot.io). For information on - # how to acquire an access token, visit https://t2bot.io/docs/access_tokens - accessToken: {{ matrix_dimension_access_token | to_json }} - -# These users can modify the integrations this Dimension supports. -# To access the admin interface, open Dimension in Element Web and click the settings icon. -admins: {{ matrix_dimension_admins | to_json }} - -# IPs and CIDR ranges listed here will be blocked from being widgets. -# Note: Widgets may still be embedded with restricted content, although not through Dimension directly. -widgetBlacklist: - - 10.0.0.0/8 - - 172.16.0.0/12 - - 192.168.0.0/16 - - 127.0.0.0/8 - -# Where the database for Dimension is -database: -{% if matrix_dimension_database_engine == 'sqlite' %} - file: {{ matrix_dimension_sqlite_database_path_in_container|to_json }} -{% elif matrix_dimension_database_engine == 'postgres' %} - uri: {{ matrix_dimension_database_connection_string|to_json }} -{% endif %} - -# Display settings that apply to self-hosted go-neb instances -goneb: - # The avatars to set for each bot. Usually these don't need to be changed, however if your homeserver - # is not able to reach t2bot.io then you should specify your own here. To not use an avatar for a bot, - # make the bot's avatar an empty string. - avatars: - giphy: "mxc://t2bot.io/c5eaab3ef0133c1a61d3c849026deb27" - imgur: "mxc://t2bot.io/6749eaf2b302bb2188ae931b2eeb1513" - github: "mxc://t2bot.io/905b64b3cd8e2347f91a60c5eb0832e1" - wikipedia: "mxc://t2bot.io/7edfb54e9ad9e13fec0df22636feedf1" - travisci: "mxc://t2bot.io/7f4703126906fab8bb27df34a17707a8" - rss: "mxc://t2bot.io/aace4fcbd045f30afc1b4e5f0928f2f3" - google: "mxc://t2bot.io/636ad10742b66c4729bf89881a505142" - guggy: "mxc://t2bot.io/e7ef0ed0ba651aaf907655704f9a7526" - echo: "mxc://t2bot.io/3407ff2db96b4e954fcbf2c6c0415a13" - circleci: "mxc://t2bot.io/cf7d875845a82a6b21f5f66de78f6bee" - jira: "mxc://t2bot.io/f4a38ebcc4280ba5b950163ca3e7c329" - -# Settings for how Dimension is represented to the public -dimension: - # This is where Dimension is accessible from clients. Be sure to set this - # to your own Dimension instance. - publicUrl: {{ matrix_dimension_dimension_publicUrl | to_json }} diff --git a/roles/custom/matrix-dimension/templates/config.yaml.j2.license b/roles/custom/matrix-dimension/templates/config.yaml.j2.license deleted file mode 100644 index 2c26fe3c7..000000000 --- a/roles/custom/matrix-dimension/templates/config.yaml.j2.license +++ /dev/null @@ -1,5 +0,0 @@ -SPDX-FileCopyrightText: 2020 - 2023 Slavi Pantaleev -SPDX-FileCopyrightText: 2020 MDAD project contributors -SPDX-FileCopyrightText: 2024 Suguru Hirahara - -SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-dimension/templates/labels.j2 b/roles/custom/matrix-dimension/templates/labels.j2 deleted file mode 100644 index d5d76aeaa..000000000 --- a/roles/custom/matrix-dimension/templates/labels.j2 +++ /dev/null @@ -1,52 +0,0 @@ -{# -SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev - -SPDX-License-Identifier: AGPL-3.0-or-later -#} - -{% if matrix_dimension_container_labels_traefik_enabled %} -traefik.enable=true - -{% if matrix_dimension_container_labels_traefik_docker_network %} -traefik.docker.network={{ matrix_dimension_container_labels_traefik_docker_network }} -{% endif %} - -traefik.http.services.matrix-dimension.loadbalancer.server.port=8184 - -{% set middlewares = [] %} - -{% if matrix_dimension_container_labels_traefik_path_prefix != '/' %} -traefik.http.middlewares.matrix-dimension-slashless-redirect.redirectregex.regex=({{ matrix_dimension_container_labels_traefik_path_prefix | quote }})$ -traefik.http.middlewares.matrix-dimension-slashless-redirect.redirectregex.replacement=${1}/ -{% set middlewares = middlewares + ['matrix-dimension-slashless-redirect'] %} -{% endif %} - -{% if matrix_dimension_container_labels_traefik_path_prefix != '/' %} -traefik.http.middlewares.matrix-dimension-strip-prefix.stripprefix.prefixes={{ matrix_dimension_container_labels_traefik_path_prefix }} -{% set middlewares = middlewares + ['matrix-dimension-strip-prefix'] %} -{% endif %} - -{% if matrix_dimension_container_labels_traefik_additional_response_headers.keys() | length > 0 %} -{% for name, value in matrix_dimension_container_labels_traefik_additional_response_headers.items() %} -traefik.http.middlewares.matrix-dimension-add-headers.headers.customresponseheaders.{{ name }}={{ value }} -{% endfor %} -{% set middlewares = middlewares + ['matrix-dimension-add-headers'] %} -{% endif %} - -traefik.http.routers.matrix-dimension.rule={{ matrix_dimension_container_labels_traefik_rule }} -{% if matrix_dimension_container_labels_traefik_priority | int > 0 %} -traefik.http.routers.matrix-dimension.priority={{ matrix_dimension_container_labels_traefik_priority }} -{% endif %} -traefik.http.routers.matrix-dimension.service=matrix-dimension -{% if middlewares | length > 0 %} -traefik.http.routers.matrix-dimension.middlewares={{ middlewares | join(',') }} -{% endif %} -traefik.http.routers.matrix-dimension.entrypoints={{ matrix_dimension_container_labels_traefik_entrypoints }} -traefik.http.routers.matrix-dimension.tls={{ matrix_dimension_container_labels_traefik_tls | to_json }} -{% if matrix_dimension_container_labels_traefik_tls %} -traefik.http.routers.matrix-dimension.tls.certResolver={{ matrix_dimension_container_labels_traefik_tls_certResolver }} -{% endif %} - -{% endif %} - -{{ matrix_dimension_container_labels_additional_labels }} diff --git a/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2 b/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2 deleted file mode 100644 index 92eec2c1e..000000000 --- a/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2 +++ /dev/null @@ -1,58 +0,0 @@ -#jinja2: lstrip_blocks: True -[Unit] -Description=Matrix Dimension -{% for service in matrix_dimension_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_dimension_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-dimension 2>/dev/null || true' -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-dimension 2>/dev/null || true' - -# Fixup database ownership if it got changed somehow (during a server migration, etc.) -{% if matrix_dimension_database_engine == 'sqlite' %} -ExecStartPre=-{{ matrix_host_command_chown }} {{ matrix_dimension_user_uid }}:{{ matrix_dimension_user_gid }} {{ matrix_dimension_sqlite_database_path_local }} -{% endif %} - -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ - --rm \ - --name=matrix-dimension \ - --log-driver=none \ - --user={{ matrix_dimension_user_uid }}:{{ matrix_dimension_user_gid }} \ - --cap-drop=ALL \ - --network={{ matrix_dimension_container_network }} \ - {% if matrix_dimension_widgets_allow_self_signed_ssl_certificates %} - -e NODE_TLS_REJECT_UNAUTHORIZED=0 \ - {% endif %} - {% if matrix_dimension_container_http_host_bind_port %} - -p {{ matrix_dimension_container_http_host_bind_port }}:8184 \ - {% endif %} - --label-file={{ matrix_dimension_base_path }}/labels \ - --mount type=bind,src={{ matrix_dimension_base_path }},dst=/data \ - {% for arg in matrix_dimension_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_dimension_docker_image }} - -{% for network in matrix_dimension_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-dimension -{% endfor %} - -ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-dimension - -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-dimension 2>/dev/null || true' -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-dimension 2>/dev/null || true' - -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-dimension - -[Install] -WantedBy=multi-user.target diff --git a/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2.license b/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2.license deleted file mode 100644 index 22f65f580..000000000 --- a/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2.license +++ /dev/null @@ -1,7 +0,0 @@ -SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev -SPDX-FileCopyrightText: 2019 Edgars Voroboks -SPDX-FileCopyrightText: 2019 Hugues De Keyzer -SPDX-FileCopyrightText: 2019 Sylvia van Os -SPDX-FileCopyrightText: 2020 Chris van Dijk - -SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-dimension/vars/main.yml b/roles/custom/matrix-dimension/vars/main.yml deleted file mode 100644 index 4a931a6aa..000000000 --- a/roles/custom/matrix-dimension/vars/main.yml +++ /dev/null @@ -1,11 +0,0 @@ -# SPDX-FileCopyrightText: 2019 - 2022 Slavi Pantaleev -# SPDX-FileCopyrightText: 2019 Edgars Voroboks -# SPDX-FileCopyrightText: 2022 Marko Weltzer -# -# SPDX-License-Identifier: AGPL-3.0-or-later - ---- - -# Doing `|from_yaml` when the extension contains nothing yields an empty string (""). -# We need to ensure it's a dictionary or `|combine` (when building `matrix_dimension_configuration`) will fail later. -matrix_dimension_configuration_extension: "{{ matrix_dimension_configuration_extension_yaml | from_yaml if matrix_dimension_configuration_extension_yaml | from_yaml else {} }}"