Remove Dimension (#4916)
* Remove roles/custom/matrix-dimension
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
* Remove mentions to Dimension
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
* Update configuring-playbook-dimension.md
Reuse 0f5015a33c/docs/configuring-playbook-bridge-mx-puppet-twitter.md
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
* Update validate_config.yml
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
* Update CHANGELOG.md
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
---------
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
Co-authored-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
This commit is contained in:
@@ -1,5 +1,11 @@
|
|||||||
# 2026-02-12
|
# 2026-02-12
|
||||||
|
|
||||||
|
## Dimension integration manager has been removed from the playbook
|
||||||
|
|
||||||
|
The [Dimension integration manager](./docs/configuring-playbook-dimension.md) has been removed from the playbook, as it has been unmaintained.
|
||||||
|
|
||||||
|
The playbook will let you know if you're using any `matrix_dimension_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the component manually](./docs/configuring-playbook-dimension.md#uninstalling-the-component-manually).
|
||||||
|
|
||||||
## (BC Break) Hydrogen role has been relocated and variable names need adjustments
|
## (BC Break) Hydrogen role has been relocated and variable names need adjustments
|
||||||
|
|
||||||
The role for Hydrogen has been relocated to the [mother-of-all-self-hosting](https://github.com/mother-of-all-self-hosting) organization.
|
The role for Hydrogen has been relocated to the [mother-of-all-self-hosting](https://github.com/mother-of-all-self-hosting) organization.
|
||||||
|
|||||||
@@ -1,144 +1,33 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev
|
|
||||||
SPDX-FileCopyrightText: 2019 - 2025 MDAD project contributors
|
|
||||||
SPDX-FileCopyrightText: 2019 Edgars Voroboks
|
SPDX-FileCopyrightText: 2019 Edgars Voroboks
|
||||||
|
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
|
||||||
|
SPDX-FileCopyrightText: 2019-2025 MDAD project contributors
|
||||||
|
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
|
||||||
SPDX-FileCopyrightText: 2020 Chris van Dijk
|
SPDX-FileCopyrightText: 2020 Chris van Dijk
|
||||||
|
SPDX-FileCopyrightText: 2020 Tulir Asokan
|
||||||
SPDX-FileCopyrightText: 2020 jens quade
|
SPDX-FileCopyrightText: 2020 jens quade
|
||||||
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||||
SPDX-FileCopyrightText: 2022 Kim Brose
|
SPDX-FileCopyrightText: 2022 Kim Brose
|
||||||
SPDX-FileCopyrightText: 2022 Travis Ralston
|
SPDX-FileCopyrightText: 2022 Travis Ralston
|
||||||
|
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
|
||||||
SPDX-FileCopyrightText: 2022 Yan Minagawa
|
SPDX-FileCopyrightText: 2022 Yan Minagawa
|
||||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Setting up Dimension integration manager (optional, unmaintained)
|
# Setting up Dimension integration manager (optional, removed)
|
||||||
|
|
||||||
**Notes**:
|
🪦 The playbook used to be able to install and configure [Dimension](https://dimension.t2bot.io) integration manager, but no longer includes this component, as it has been unmaintained.
|
||||||
- Dimension is **[officially unmaintained](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2806#issuecomment-1673559299)**. We recommend not bothering with installing it.
|
|
||||||
- This playbook now supports running Dimension in both a federated and [unfederated](https://github.com/turt2live/matrix-dimension/blob/master/docs/unfederated.md) environments. This is handled automatically based on the value of `matrix_homeserver_federation_enabled`.
|
|
||||||
|
|
||||||
The playbook can install and configure the [Dimension](https://dimension.t2bot.io) integration manager for you.
|
## Uninstalling the component manually
|
||||||
|
|
||||||
See the project's [documentation](https://github.com/turt2live/matrix-dimension/blob/master/README.md) to learn what it does and why it might be useful to you.
|
If you still have the Dimension integration manager installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
### Open Matrix Federation port
|
|
||||||
|
|
||||||
Enabling the Dimension service will automatically reconfigure your Synapse homeserver to expose the `openid` API endpoints on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. If you enable the component, make sure that the port is accessible.
|
|
||||||
|
|
||||||
### Install Matrix services
|
|
||||||
|
|
||||||
Dimension can only be installed after Matrix services are installed and running. If you're just installing Matrix services for the first time, please continue with the [Configuration](configuring-playbook.md) / [Installation](installing.md) and come back here later.
|
|
||||||
|
|
||||||
### Register a dedicated Matrix user (optional, recommended)
|
|
||||||
|
|
||||||
We recommend that you create a dedicated Matrix user for Dimension (`dimension` is a good username).
|
|
||||||
|
|
||||||
Generate a strong password for the user. You can create one with a command like `pwgen -s 64 1`.
|
|
||||||
|
|
||||||
You can use the playbook to [register a new user](registering-users.md):
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=dimension password=PASSWORD_FOR_THE_USER admin=no' --tags=register-user
|
systemctl disable --now matrix-dimension.service
|
||||||
|
|
||||||
|
rm -rf /matrix/dimension
|
||||||
|
|
||||||
|
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_dimension;'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Obtain an access token
|
|
||||||
|
|
||||||
Dimension requires an access token to be able to connect to your homeserver. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md).
|
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone.
|
|
||||||
|
|
||||||
## Adjusting DNS records
|
|
||||||
|
|
||||||
By default, this playbook installs Dimension on the `dimension.` subdomain (`dimension.example.com`) and requires you to create a CNAME record for `dimension`, which targets `matrix.example.com`.
|
|
||||||
|
|
||||||
When setting, replace `example.com` with your own.
|
|
||||||
|
|
||||||
## Adjusting the playbook configuration
|
|
||||||
|
|
||||||
To enable Dimension, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `ACCESS_TOKEN_HERE` with the one created [above](#obtain-an-access-token).
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_dimension_enabled: true
|
|
||||||
|
|
||||||
matrix_dimension_access_token: "ACCESS_TOKEN_HERE"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Define admin users
|
|
||||||
|
|
||||||
To define admin users who can modify the integrations this Dimension supports, add the following configuration to your `vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
matrix_dimension_admins:
|
|
||||||
- "@alice:{{ matrix_domain }}"
|
|
||||||
- "@bob:{{ matrix_domain }}"
|
|
||||||
```
|
|
||||||
|
|
||||||
The admin interface is accessible within Element Web by accessing it in any room and clicking the cog wheel/settings icon in the top right. Currently, Dimension can be opened in Element Web by the "Add widgets, bridges, & bots" link in the room information.
|
|
||||||
|
|
||||||
### Adjusting the Dimension URL (optional)
|
|
||||||
|
|
||||||
By tweaking the `matrix_dimension_hostname` and `matrix_dimension_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
|
|
||||||
|
|
||||||
Example additional configuration for your `vars.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# Switch to the domain used for Matrix services (`matrix.example.com`),
|
|
||||||
# so we won't need to add additional DNS records for Dimension.
|
|
||||||
matrix_dimension_hostname: "{{ matrix_server_fqn_matrix }}"
|
|
||||||
|
|
||||||
# Expose under the /dimension subpath
|
|
||||||
# matrix_dimension_path_prefix: /dimension
|
|
||||||
```
|
|
||||||
|
|
||||||
After changing the domain, **you may need to adjust your DNS** records to point the Dimension domain to the Matrix server.
|
|
||||||
|
|
||||||
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
|
|
||||||
|
|
||||||
**Note**: while there is a `matrix_dimension_path_prefix` variable for changing the path where Dimension is served, overriding it is not possible due to [this Dimension issue](https://github.com/turt2live/matrix-dimension/issues/510). You'd need to serve Dimension at a dedicated subdomain.
|
|
||||||
|
|
||||||
### Extending the configuration
|
|
||||||
|
|
||||||
There are some additional things you may wish to configure about the component.
|
|
||||||
|
|
||||||
Take a look at:
|
|
||||||
|
|
||||||
- `roles/custom/matrix-dimension/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
|
||||||
- `roles/custom/matrix-dimension/templates/config.yaml.j2` for the component's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_dimension_configuration_extension_yaml` variable
|
|
||||||
|
|
||||||
You can find all configuration options on [GitHub page of Dimension project](https://github.com/turt2live/matrix-dimension/blob/master/config/default.yaml).
|
|
||||||
|
|
||||||
## Installing
|
|
||||||
|
|
||||||
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
|
|
||||||
|
|
||||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
|
||||||
```sh
|
|
||||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
|
||||||
```
|
|
||||||
|
|
||||||
**Notes**:
|
|
||||||
|
|
||||||
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
|
|
||||||
|
|
||||||
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
After Dimension has been installed you may need to log out and log back in for it to pick up the new integration manager. Then you can access integrations in Element Web by opening a room, clicking the room info button (`i`) on the top right corner, and then clicking the "Add widgets, bridges, & bots" link.
|
|
||||||
|
|
||||||
### Set up a Jitsi widget
|
|
||||||
|
|
||||||
By default Dimension will use [jitsi.riot.im](https://jitsi.riot.im/) as the `conferenceDomain` of [Jitsi](https://jitsi.org/) audio/video conference widgets. For users running [a self-hosted Jitsi instance](configuring-playbook-jitsi.md), you will likely want the widget to use your own Jitsi instance.
|
|
||||||
|
|
||||||
To set up the widget, an admin user needs to configure the domain via the admin UI once Dimension is running. In Element Web, go to *Manage Integrations* → *Settings* → *Widgets* → *Jitsi Conference Settings* and set *Jitsi Domain* and *Jitsi Script URL* appropriately.
|
|
||||||
|
|
||||||
There is unfortunately no way to configure the widget via the playbook. See [this issue](https://github.com/turt2live/matrix-dimension/issues/345) for details.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-dimension`.
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ matrix_homeserver_federation_enabled: false
|
|||||||
|
|
||||||
With that, your server's users will only be able to talk among themselves, but not to anyone who is on another server.
|
With that, your server's users will only be able to talk among themselves, but not to anyone who is on another server.
|
||||||
|
|
||||||
**Disabling federation does not necessarily disable the federation port** (`8448`). Services like [Dimension](configuring-playbook-dimension.md) normally rely on `openid` APIs exposed on that port. Even if you disable federation and only if necessary, we may still be exposing the federation port and serving the `openid` APIs there. To override this and completely disable Synapse's federation port use:
|
**Disabling federation does not necessarily disable the federation port** (`8448`). Even if you disable federation and only if necessary, we may still be exposing the federation port and serving the `openid` APIs there. To override this and completely disable Synapse's federation port use:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
matrix_homeserver_federation_enabled: false
|
matrix_homeserver_federation_enabled: false
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ Possibly outdated list of roles where self-building the Docker image is currentl
|
|||||||
- `matrix-registration`
|
- `matrix-registration`
|
||||||
- `coturn`
|
- `coturn`
|
||||||
- `matrix-corporal`
|
- `matrix-corporal`
|
||||||
- `matrix-dimension`
|
|
||||||
- `exim-relay`
|
- `exim-relay`
|
||||||
- `matrix-bridge-hookshot`
|
- `matrix-bridge-hookshot`
|
||||||
- `matrix-bridge-appservice-irc`
|
- `matrix-bridge-appservice-irc`
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ To get started, first follow the [front the integrated reverse-proxy webserver w
|
|||||||
`matrix-domain.conf` contains configuration for the Matrix domain, which handles both the Client-Server API (port `443`) and the Matrix Federation API (port `8448`).
|
`matrix-domain.conf` contains configuration for the Matrix domain, which handles both the Client-Server API (port `443`) and the Matrix Federation API (port `8448`).
|
||||||
|
|
||||||
`matrix-client-element.conf` is an example for when you're hosting Element Web at `element.example.com`.
|
`matrix-client-element.conf` is an example for when you're hosting Element Web at `element.example.com`.
|
||||||
This configuration can also be used as an example for handling other domains, depending on the services you enable with the playbook (e.g. `dimension.example.com`, etc).
|
This configuration can also be used as an example for handling other domains, depending on the services you enable with the playbook (e.g. `etherpad.example.com`, etc).
|
||||||
|
|||||||
@@ -22,4 +22,4 @@ Copy the [matrix.conf](matrix.conf) file to your nginx server's filesystem, modi
|
|||||||
|
|
||||||
This configuration **disables SSL certificate retrieval**, so you will **need to obtain SSL certificates manually** (e.g. by using [certbot](https://certbot.eff.org/)) and set the appropriate path in `matrix.conf`. In the example nginx configuration, a single certificate is used for all subdomains (`matrix.example.com`, `element.example.com`, etc.). For your setup, may wish to change this and use separate `server` blocks and separate certificate files for each host.
|
This configuration **disables SSL certificate retrieval**, so you will **need to obtain SSL certificates manually** (e.g. by using [certbot](https://certbot.eff.org/)) and set the appropriate path in `matrix.conf`. In the example nginx configuration, a single certificate is used for all subdomains (`matrix.example.com`, `element.example.com`, etc.). For your setup, may wish to change this and use separate `server` blocks and separate certificate files for each host.
|
||||||
|
|
||||||
Also note that your copy of the `matrix.conf` file has to be adapted to whatever services you are using. For example, remove `element.example.com` from the `server_name` list if you don't use [Element Web](../../../docs/configuring-playbook-client-element-web.md) client or add `dimension.example.com` to it if you do use the [Dimension](../../../docs/configuring-playbook-dimension.md) integration manager.
|
Also note that your copy of the `matrix.conf` file has to be adapted to whatever services you are using. For example, remove `element.example.com` from the `server_name` list if you don't use [Element Web](../../../docs/configuring-playbook-client-element-web.md) client or add `etherpad.example.com` to it if you do use [Etherpad](../../../docs/configuring-playbook-etherpad.md).
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ server {
|
|||||||
# TODO: add/remove services and their subdomains if you use/don't use them
|
# TODO: add/remove services and their subdomains if you use/don't use them
|
||||||
# this example is using hosting something on the base domain and an Element Web client, so example.com and element.example.com are listed in addition to matrix.example.com
|
# this example is using hosting something on the base domain and an Element Web client, so example.com and element.example.com are listed in addition to matrix.example.com
|
||||||
# if you don't use those, you can remove them
|
# if you don't use those, you can remove them
|
||||||
# if you use e.g. Dimension on dimension.example.com, add dimension.example.com to the server_name list
|
# if you use e.g. Etherpad on etherpad.example.com, add etherpad.example.com to the server_name list
|
||||||
server_name example.com matrix.example.com element.example.com;
|
server_name example.com matrix.example.com element.example.com;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
|
|||||||
@@ -375,8 +375,6 @@ devture_systemd_service_manager_services_list_auto: |
|
|||||||
+
|
+
|
||||||
([{'name': (coturn_identifier + '-reload.timer'), 'priority': 5000, 'groups': ['matrix', 'coturn']}] if (coturn_enabled and coturn_tls_enabled) else [])
|
([{'name': (coturn_identifier + '-reload.timer'), 'priority': 5000, 'groups': ['matrix', 'coturn']}] if (coturn_enabled and coturn_tls_enabled) else [])
|
||||||
+
|
+
|
||||||
([{'name': 'matrix-dimension.service', 'priority': 4000, 'groups': ['matrix', 'integration-managers', 'dimension']}] if matrix_dimension_enabled else [])
|
|
||||||
+
|
|
||||||
([{'name': (ddclient_identifier + '.service'), 'priority': 5000, 'groups': ['matrix', 'ddclient', 'dynamic-dns']}] if ddclient_enabled else [])
|
([{'name': (ddclient_identifier + '.service'), 'priority': 5000, 'groups': ['matrix', 'ddclient', 'dynamic-dns']}] if ddclient_enabled else [])
|
||||||
+
|
+
|
||||||
([{'name': (etherpad_identifier + '.service'), 'priority': 4000, 'groups': ['matrix', 'etherpad']}] if etherpad_enabled else [])
|
([{'name': (etherpad_identifier + '.service'), 'priority': 4000, 'groups': ['matrix', 'etherpad']}] if etherpad_enabled else [])
|
||||||
@@ -546,8 +544,8 @@ matrix_homeserver_container_federation_api_endpoint: |-
|
|||||||
}[matrix_homeserver_implementation]
|
}[matrix_homeserver_implementation]
|
||||||
}}
|
}}
|
||||||
|
|
||||||
matrix_integration_manager_rest_url: "{{ matrix_dimension_integrations_rest_url if matrix_dimension_enabled else None }}"
|
matrix_integration_manager_rest_url: ""
|
||||||
matrix_integration_manager_ui_url: "{{ matrix_dimension_integrations_ui_url if matrix_dimension_enabled else None }}"
|
matrix_integration_manager_ui_url: ""
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
#
|
#
|
||||||
@@ -3186,75 +3184,6 @@ coturn_systemd_required_services_list_auto: |
|
|||||||
#
|
#
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
######################################################################
|
|
||||||
#
|
|
||||||
# matrix-dimension
|
|
||||||
#
|
|
||||||
######################################################################
|
|
||||||
|
|
||||||
matrix_dimension_enabled: false
|
|
||||||
|
|
||||||
matrix_dimension_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}"
|
|
||||||
matrix_dimension_hostname: "{{ matrix_server_fqn_dimension }}"
|
|
||||||
|
|
||||||
matrix_dimension_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_dimension_docker_image_registry_prefix_upstream_default }}"
|
|
||||||
|
|
||||||
matrix_dimension_container_image_self_build: "{{ matrix_architecture != 'amd64' }}"
|
|
||||||
|
|
||||||
matrix_dimension_container_network: "{{ matrix_addons_container_network }}"
|
|
||||||
|
|
||||||
# Dimension is connected both to `matrix_addons_homeserver_container_network` and `matrix_homeserver_container_network`,
|
|
||||||
# because `matrix_dimension_homeserver_clientServerUrl` and `matrix_dimension_homeserver_federationUrl` are potentially
|
|
||||||
# going to different places.
|
|
||||||
matrix_dimension_container_additional_networks: |
|
|
||||||
{{
|
|
||||||
(
|
|
||||||
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
|
|
||||||
+
|
|
||||||
([matrix_homeserver_container_network] if matrix_homeserver_container_network != matrix_dimension_container_network else [])
|
|
||||||
+
|
|
||||||
([postgres_container_network] if (postgres_enabled and matrix_dimension_database_hostname == postgres_connection_hostname and postgres_container_network != matrix_dimension_container_network) else [])
|
|
||||||
+
|
|
||||||
([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [])
|
|
||||||
) | unique
|
|
||||||
}}
|
|
||||||
|
|
||||||
matrix_dimension_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '8184') if matrix_playbook_service_host_bind_interface_prefix else '' }}"
|
|
||||||
|
|
||||||
matrix_dimension_container_labels_traefik_enabled: "{{ matrix_playbook_traefik_labels_enabled }}"
|
|
||||||
matrix_dimension_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
|
|
||||||
matrix_dimension_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
|
|
||||||
matrix_dimension_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}"
|
|
||||||
|
|
||||||
matrix_dimension_homeserver_clientServerUrl: "{{ matrix_addons_homeserver_client_api_url }}"
|
|
||||||
matrix_dimension_homeserver_federationUrl: "{{ matrix_homeserver_container_federation_url }}"
|
|
||||||
matrix_dimension_homeserver_mediaUrl: "{{ ('https' if matrix_playbook_ssl_enabled else 'http') }}://{{ matrix_server_fqn_matrix }}"
|
|
||||||
|
|
||||||
# Dimension depends both on `matrix_addons_homeserver_systemd_services_list` and on the homeserver service,
|
|
||||||
# because `matrix_dimension_homeserver_clientServerUrl` and `matrix_dimension_homeserver_federationUrl` are potentially
|
|
||||||
# going to different places.
|
|
||||||
matrix_dimension_systemd_required_services_list_auto: |
|
|
||||||
{{
|
|
||||||
(
|
|
||||||
matrix_addons_homeserver_systemd_services_list
|
|
||||||
+
|
|
||||||
['matrix-' + matrix_homeserver_implementation + '.service']
|
|
||||||
+
|
|
||||||
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_dimension_database_hostname == postgres_connection_hostname) else [])
|
|
||||||
) | unique
|
|
||||||
}}
|
|
||||||
|
|
||||||
# Postgres is the default, except if not using internal Postgres server
|
|
||||||
matrix_dimension_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}"
|
|
||||||
matrix_dimension_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
|
|
||||||
matrix_dimension_database_password: "{{ (matrix_homeserver_generic_secret_key + ':dimension.db') | hash('sha512') | to_uuid }}"
|
|
||||||
|
|
||||||
######################################################################
|
|
||||||
#
|
|
||||||
# /matrix-dimension
|
|
||||||
#
|
|
||||||
######################################################################
|
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
#
|
#
|
||||||
# etherpad
|
# etherpad
|
||||||
@@ -3269,7 +3198,7 @@ etherpad_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}"
|
|||||||
|
|
||||||
etherpad_base_path: "{{ matrix_base_data_path }}/etherpad"
|
etherpad_base_path: "{{ matrix_base_data_path }}/etherpad"
|
||||||
|
|
||||||
etherpad_framing_enabled: "{{ matrix_dimension_enabled or jitsi_enabled }}"
|
etherpad_framing_enabled: "{{ jitsi_enabled }}"
|
||||||
|
|
||||||
etherpad_hostname: "{{ matrix_server_fqn_etherpad }}"
|
etherpad_hostname: "{{ matrix_server_fqn_etherpad }}"
|
||||||
|
|
||||||
@@ -3877,12 +3806,6 @@ postgres_managed_databases_auto: |
|
|||||||
'password': matrix_steam_bridge_database_password,
|
'password': matrix_steam_bridge_database_password,
|
||||||
}] if (matrix_steam_bridge_enabled and matrix_steam_bridge_database_engine == 'postgres' and matrix_steam_bridge_database_hostname == postgres_connection_hostname) else [])
|
}] if (matrix_steam_bridge_enabled and matrix_steam_bridge_database_engine == 'postgres' and matrix_steam_bridge_database_hostname == postgres_connection_hostname) else [])
|
||||||
+
|
+
|
||||||
([{
|
|
||||||
'name': matrix_dimension_database_name,
|
|
||||||
'username': matrix_dimension_database_username,
|
|
||||||
'password': matrix_dimension_database_password,
|
|
||||||
}] if (matrix_dimension_enabled and matrix_dimension_database_engine == 'postgres' and matrix_dimension_database_hostname == postgres_connection_hostname) else [])
|
|
||||||
+
|
|
||||||
([{
|
([{
|
||||||
'name': etherpad_database_name,
|
'name': etherpad_database_name,
|
||||||
'username': etherpad_database_postgres_username,
|
'username': etherpad_database_postgres_username,
|
||||||
@@ -4089,11 +4012,11 @@ matrix_client_element_container_labels_traefik_compression_middleware_name: "{{
|
|||||||
matrix_client_element_default_hs_url: "{{ matrix_homeserver_url }}"
|
matrix_client_element_default_hs_url: "{{ matrix_homeserver_url }}"
|
||||||
matrix_client_element_default_is_url: "{{ matrix_identity_server_url }}"
|
matrix_client_element_default_is_url: "{{ matrix_identity_server_url }}"
|
||||||
|
|
||||||
# Use Dimension if enabled, otherwise fall back to Scalar
|
# Use Scalar by default
|
||||||
matrix_client_element_integrations_ui_url: "{{ matrix_dimension_integrations_ui_url if matrix_dimension_enabled else 'https://scalar.vector.im/' }}"
|
matrix_client_element_integrations_ui_url: "https://scalar.vector.im/"
|
||||||
matrix_client_element_integrations_rest_url: "{{ matrix_dimension_integrations_rest_url if matrix_dimension_enabled else 'https://scalar.vector.im/api' }}"
|
matrix_client_element_integrations_rest_url: "https://scalar.vector.im/api"
|
||||||
matrix_client_element_integrations_widgets_urls: "{{ matrix_dimension_integrations_widgets_urls if matrix_dimension_enabled else ['https://scalar.vector.im/api'] }}"
|
matrix_client_element_integrations_widgets_urls: "{{ ['https://scalar.vector.im/api'] }}"
|
||||||
matrix_client_element_integrations_jitsi_widget_url: "{{ matrix_dimension_integrations_jitsi_widget_url if matrix_dimension_enabled else 'https://scalar.vector.im/api/widgets/jitsi.html' }}"
|
matrix_client_element_integrations_jitsi_widget_url: "https://scalar.vector.im/api/widgets/jitsi.html"
|
||||||
|
|
||||||
matrix_client_element_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabled }}"
|
matrix_client_element_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabled }}"
|
||||||
|
|
||||||
@@ -4246,11 +4169,11 @@ matrix_client_schildichat_container_labels_traefik_tls_certResolver: "{{ traefik
|
|||||||
matrix_client_schildichat_default_hs_url: "{{ matrix_homeserver_url }}"
|
matrix_client_schildichat_default_hs_url: "{{ matrix_homeserver_url }}"
|
||||||
matrix_client_schildichat_default_is_url: "{{ matrix_identity_server_url }}"
|
matrix_client_schildichat_default_is_url: "{{ matrix_identity_server_url }}"
|
||||||
|
|
||||||
# Use Dimension if enabled, otherwise fall back to Scalar
|
# Use Scalar by default
|
||||||
matrix_client_schildichat_integrations_ui_url: "{{ matrix_dimension_integrations_ui_url if matrix_dimension_enabled else 'https://scalar.vector.im/' }}"
|
matrix_client_schildichat_integrations_ui_url: "https://scalar.vector.im/"
|
||||||
matrix_client_schildichat_integrations_rest_url: "{{ matrix_dimension_integrations_rest_url if matrix_dimension_enabled else 'https://scalar.vector.im/api' }}"
|
matrix_client_schildichat_integrations_rest_url: "https://scalar.vector.im/api"
|
||||||
matrix_client_schildichat_integrations_widgets_urls: "{{ matrix_dimension_integrations_widgets_urls if matrix_dimension_enabled else ['https://scalar.vector.im/api'] }}"
|
matrix_client_schildichat_integrations_widgets_urls: "{{ ['https://scalar.vector.im/api'] }}"
|
||||||
matrix_client_schildichat_integrations_jitsi_widget_url: "{{ matrix_dimension_integrations_jitsi_widget_url if matrix_dimension_enabled else 'https://scalar.vector.im/api/widgets/jitsi.html' }}"
|
matrix_client_schildichat_integrations_jitsi_widget_url: "https://scalar.vector.im/api/widgets/jitsi.html"
|
||||||
|
|
||||||
matrix_client_schildichat_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabled }}"
|
matrix_client_schildichat_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabled }}"
|
||||||
|
|
||||||
@@ -4394,7 +4317,7 @@ matrix_synapse_tls_federation_listener_enabled: false
|
|||||||
matrix_synapse_tls_certificate_path: ~
|
matrix_synapse_tls_certificate_path: ~
|
||||||
matrix_synapse_tls_private_key_path: ~
|
matrix_synapse_tls_private_key_path: ~
|
||||||
|
|
||||||
matrix_synapse_federation_port_openid_resource_required: "{{ not matrix_synapse_federation_enabled and (matrix_dimension_enabled or matrix_user_verification_service_enabled or matrix_livekit_jwt_service_enabled) }}"
|
matrix_synapse_federation_port_openid_resource_required: "{{ not matrix_synapse_federation_enabled and (matrix_user_verification_service_enabled or matrix_livekit_jwt_service_enabled) }}"
|
||||||
|
|
||||||
matrix_synapse_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}"
|
matrix_synapse_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}"
|
||||||
|
|
||||||
|
|||||||
@@ -121,9 +121,6 @@ matrix_server_fqn_fluffychat: "fluffychat.{{ matrix_domain }}"
|
|||||||
# This is where you access the Buscarron bot from (if enabled via matrix_bot_buscarron_enabled; disabled by default).
|
# This is where you access the Buscarron bot from (if enabled via matrix_bot_buscarron_enabled; disabled by default).
|
||||||
matrix_server_fqn_buscarron: "buscarron.{{ matrix_domain }}"
|
matrix_server_fqn_buscarron: "buscarron.{{ matrix_domain }}"
|
||||||
|
|
||||||
# This is where you access the Dimension.
|
|
||||||
matrix_server_fqn_dimension: "dimension.{{ matrix_domain }}"
|
|
||||||
|
|
||||||
# This is where you access the Etherpad (if enabled via etherpad_enabled; disabled by default).
|
# This is where you access the Etherpad (if enabled via etherpad_enabled; disabled by default).
|
||||||
matrix_server_fqn_etherpad: "etherpad.{{ matrix_domain }}"
|
matrix_server_fqn_etherpad: "etherpad.{{ matrix_domain }}"
|
||||||
|
|
||||||
|
|||||||
@@ -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 "<ip>:<port>" or "<port>" 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) }}"
|
|
||||||
@@ -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"
|
|
||||||
@@ -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"
|
|
||||||
@@ -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
|
|
||||||
@@ -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': '<superseded by matrix_dimension_container_http_host_bind_port>'}
|
|
||||||
- {'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] == '/'"
|
|
||||||
@@ -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 }}
|
|
||||||
@@ -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
|
|
||||||
@@ -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 }}
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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 {} }}"
|
|
||||||
@@ -561,7 +561,7 @@ matrix_synapse_http_listener_resource_names: ["client"]
|
|||||||
|
|
||||||
# Resources served on Synapse's federation port.
|
# Resources served on Synapse's federation port.
|
||||||
# When disabling federation, we may wish to serve the `openid` resource here,
|
# When disabling federation, we may wish to serve the `openid` resource here,
|
||||||
# so that services like Dimension can work.
|
# so that services like Matrix User Verification Service can work.
|
||||||
matrix_synapse_federation_listener_resource_names: "{{ ['federation'] if matrix_synapse_federation_enabled else (['openid'] if matrix_synapse_federation_port_openid_resource_required else []) }}"
|
matrix_synapse_federation_listener_resource_names: "{{ ['federation'] if matrix_synapse_federation_enabled else (['openid'] if matrix_synapse_federation_port_openid_resource_required else []) }}"
|
||||||
|
|
||||||
# Enable this to allow Synapse to report utilization statistics about your server to matrix.org
|
# Enable this to allow Synapse to report utilization statistics about your server to matrix.org
|
||||||
|
|||||||
@@ -741,6 +741,18 @@
|
|||||||
The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_mx_puppet_twitter_.+', wantlist=True) | join(', ') }}
|
The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_mx_puppet_twitter_.+', wantlist=True) | join(', ') }}
|
||||||
when: "lookup('ansible.builtin.varnames', '^matrix_mx_puppet_twitter_.+', wantlist=True) | length > 0"
|
when: "lookup('ansible.builtin.varnames', '^matrix_mx_puppet_twitter_.+', wantlist=True) | length > 0"
|
||||||
|
|
||||||
|
- name: (Deprecation) Catch and report the Dimension integration manager variables
|
||||||
|
ansible.builtin.fail:
|
||||||
|
msg: |-
|
||||||
|
The Dimension integration manager was completely removed from the playbook in February 2026.
|
||||||
|
|
||||||
|
Please remove all `matrix_dimension_*` variables from your configuration file (vars.yml).
|
||||||
|
|
||||||
|
You may also wish to uninstall the component manually. See `docs/configuring-playbook-dimension.md` for more information.
|
||||||
|
|
||||||
|
The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_dimension_.+', wantlist=True) | join(', ') }}
|
||||||
|
when: "lookup('ansible.builtin.varnames', '^matrix_dimension_.+', wantlist=True) | length > 0"
|
||||||
|
|
||||||
- name: (Deprecation) Catch and report Email2Matrix variables
|
- name: (Deprecation) Catch and report Email2Matrix variables
|
||||||
ansible.builtin.fail:
|
ansible.builtin.fail:
|
||||||
msg: |-
|
msg: |-
|
||||||
|
|||||||
@@ -115,7 +115,6 @@
|
|||||||
- galaxy/jitsi
|
- galaxy/jitsi
|
||||||
- custom/matrix-user-verification-service
|
- custom/matrix-user-verification-service
|
||||||
- custom/matrix-ldap-registration-proxy
|
- custom/matrix-ldap-registration-proxy
|
||||||
- custom/matrix-dimension
|
|
||||||
- galaxy/etherpad
|
- galaxy/etherpad
|
||||||
- custom/matrix-sygnal
|
- custom/matrix-sygnal
|
||||||
- galaxy/ntfy
|
- galaxy/ntfy
|
||||||
|
|||||||
Reference in New Issue
Block a user