diff --git a/.config/ansible-lint.yml b/.config/ansible-lint.yml index 0ff5748cb..16d4cb0fa 100644 --- a/.config/ansible-lint.yml +++ b/.config/ansible-lint.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- use_default_rules: true diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 463b7cd47..d1e7546da 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 - 2021 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # These are supported funding model platforms diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index fff721410..985806d5b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -34,7 +34,7 @@ A clear and concise description of what you expected to happen. **Ansible:** If your problem appears to be with Ansible, tell us: -- where you run Ansible -- e.g. on the Matrix server itself; on another computer (which OS? distro? standard installation or containerized Ansible?) +- where you run Ansible — e.g. on the Matrix server itself; on another computer (which OS? distro? standard installation or containerized Ansible?) - what version of Ansible you're running (see `ansible --version`) + # 2023 2023 was a year filled with many changes for matrix-docker-ansible-deploy. In this post, we're looking backward at some of the major changes that happened this year, as well as taking a glimpse of what's ahead in 2024. @@ -69,7 +76,7 @@ When it comes to the `matrix-docker-ansible-deploy` Ansible playbook, 2022 was t Support for the following new **bridges** was added: -* [Postmoogle](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#postmoogle-email-bridge-support) for bi-directional email bridging, which supersedes my old and simplistic [email2matrix](https://github.com/devture/email2matrix) one-way bridge-bot +* [Postmoogle](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#postmoogle-email-bridge-support) for bi-directional email bridging, which supersedes my old and simplistic [Email2Matrix](https://github.com/devture/email2matrix) one-way bridge-bot * [mautrix-discord](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#mautrix-discord-support) * [go-skype-bridge](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#go-skype-bridge-bridging-support) * [matrix-appservice-kakaotalk](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#matrix-appservice-kakaotalk-support) diff --git a/ansible.cfg b/ansible.cfg index 360ce153c..fa9e73eb3 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,6 +1,6 @@ [defaults] retry_files_enabled = False -stdout_callback = yaml +result_format = yaml [connection] pipelining = True diff --git a/bin/ansible-all-hosts.sh b/bin/ansible-all-hosts.sh index c4b903162..7b4ba3248 100755 --- a/bin/ansible-all-hosts.sh +++ b/bin/ansible-all-hosts.sh @@ -1,4 +1,10 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2022 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + # # Run the playbook on multiple hosts with different credentials with this script # It defaults to ansible tags "setup-all,start". You can pass alternative tags diff --git a/bin/rebuild-mautrix-meta-instagram.sh b/bin/rebuild-mautrix-meta-instagram.sh index d637168bd..406f92463 100644 --- a/bin/rebuild-mautrix-meta-instagram.sh +++ b/bin/rebuild-mautrix-meta-instagram.sh @@ -1,4 +1,9 @@ #!/bin/bash + +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + set -euxo pipefail # This script rebuilds the mautrix-meta-instagram Ansible role, using the mautrix-meta-messenger role as a source. @@ -32,7 +37,17 @@ done sed --in-place 's/matrix_mautrix_meta_instagram_meta_mode: \(.*\)/matrix_mautrix_meta_instagram_meta_mode: instagram/g' $instagram_role_path/defaults/main.yml sed --in-place 's/matrix_mautrix_meta_instagram_identifier: \(.*\)/matrix_mautrix_meta_instagram_identifier: matrix-mautrix-meta-instagram/g' $instagram_role_path/defaults/main.yml -echo "# matrix-mautrix-meta-instagram" > $instagram_role_path/README.md +# Create the README.md file with the license header +cat > $instagram_role_path/README.md << 'EOF' + +EOF + +echo "" >> $instagram_role_path/README.md +echo "# matrix-mautrix-meta-instagram" >> $instagram_role_path/README.md echo "" >> $instagram_role_path/README.md echo "This bridge role is derived from the matrix-mautrix-meta-messenger Ansible role via automatic changes (see \`just rebuild-mautrix-meta-instagram\` or \`bin/rebuild-mautrix-meta-instagram.sh\`)." >> $instagram_role_path/README.md echo "" >> $instagram_role_path/README.md diff --git a/docs/README.md b/docs/README.md index 6a0cf1059..0473b77e5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,3 +1,12 @@ + + # Table of Contents ## ⬇️ Installaton guides @@ -10,7 +19,7 @@ There are two installation guides available for beginners and advanced users. - [Prerequisites](prerequisites.md) - - [Configuring your DNS settings](configuring-dns.md) + - [Configuring DNS settings](configuring-dns.md) - [Getting the playbook](getting-the-playbook.md) @@ -27,23 +36,23 @@ NOTE: You can check useful documentation for configuring components here: [Configuring the playbook](configuring-playbook.md) -- [Administration](configuring-playbook.md#administration) - services that help you in administrating and monitoring your Matrix installation +- [Administration](configuring-playbook.md#administration) — services that help you in administrating and monitoring your Matrix installation -- [Authentication and user-related](configuring-playbook.md#authentication-and-user-related) - extend and modify how users are authenticated on your homeserver +- [Authentication and user-related](configuring-playbook.md#authentication-and-user-related) — extend and modify how users are authenticated on your homeserver -- [Bots](configuring-playbook.md#bots) - bots provide various additional functionality to your installation +- [Bots](configuring-playbook.md#bots) — bots provide various additional functionality to your installation -- [Bridges](configuring-playbook.md#bridging-other-networks) - bridges can be used to connect your Matrix installation with third-party communication networks +- [Bridges](configuring-playbook.md#bridging-other-networks) — bridges can be used to connect your Matrix installation with third-party communication networks -- [Clients](configuring-playbook.md#clients) - web clients for Matrix that you can host on your own domains +- [Clients](configuring-playbook.md#clients) — web clients for Matrix that you can host on your own domains -- [Core service adjustments](configuring-playbook.md#core-service-adjustments) - backbone of your Matrix system +- [Core service adjustments](configuring-playbook.md#core-service-adjustments) — backbone of your Matrix system -- [File Storage](configuring-playbook.md#file-storage) - use alternative file storage to the default `media_store` folder +- [File Storage](configuring-playbook.md#file-storage) — use alternative file storage to the default `media_store` folder -- [Other specialized services](configuring-playbook.md#other-specialized-services) - various services that don't fit any other categories +- [Other specialized services](configuring-playbook.md#other-specialized-services) — various services that don't fit any other categories ## 👨‍🔧 Maintenance @@ -51,8 +60,6 @@ If your server and services experience issues, feel free to come to [our support -- [Checking if services work](maintenance-checking-services.md) - - [Maintenance and Troubleshooting](maintenance-and-troubleshooting.md) - [PostgreSQL maintenance](maintenance-postgres.md) @@ -63,7 +70,7 @@ If your server and services experience issues, feel free to come to [our support ## Other documentation pages -- ℹ️ **[FAQ](faq.md)** - various Frequently Asked Questions about Matrix, with a focus on this Ansible playbook +- ℹ️ **[FAQ](faq.md)** — various Frequently Asked Questions about Matrix, with a focus on this Ansible playbook @@ -84,3 +91,5 @@ If your server and services experience issues, feel free to come to [our support - [Uninstalling](uninstalling.md) - [Updating users passwords](updating-users-passwords.md) + +- [Using Ansible for the playbook](ansible.md) diff --git a/docs/alternative-architectures.md b/docs/alternative-architectures.md index fa05a4b46..63127b317 100644 --- a/docs/alternative-architectures.md +++ b/docs/alternative-architectures.md @@ -1,3 +1,11 @@ + + # Alternative architectures As stated in the [Prerequisites](prerequisites.md), currently only `amd64` (`x86_64`) is fully supported. diff --git a/docs/ansible.md b/docs/ansible.md index 87b4d86e8..ff0398374 100644 --- a/docs/ansible.md +++ b/docs/ansible.md @@ -1,5 +1,14 @@ + + +# Using Ansible for the playbook This playbook is meant to be run using [Ansible](https://www.ansible.com/). @@ -29,9 +38,12 @@ If using the `pip` method, do note that the `ansible-playbook` binary may not be ## Using Ansible via Docker -Alternatively, you can run Ansible inside a Docker container (powered by the [devture/ansible](https://hub.docker.com/r/devture/ansible/) Docker image). +Alternatively, you can run Ansible inside a Docker container (powered by the [ghcr.io/devture/ansible](https://github.com/devture/docker-ansible/pkgs/container/ansible) Docker image). + +This ensures that: -This ensures that you're using a very recent Ansible version, which is less likely to be incompatible with the playbook. +- you're using a very recent Ansible version, which is less likely to be incompatible with the playbook +- you also get access to the [agru](https://github.com/etkecc/agru) tool for quicker Ansible role installation (when running `just roles`) compared to `ansible-galaxy` You can either [run Ansible in a container on the Matrix server itself](#running-ansible-in-a-container-on-the-matrix-server-itself) or [run Ansible in a container on another computer (not the Matrix server)](#running-ansible-in-a-container-on-another-computer-not-the-matrix-server). @@ -46,50 +58,54 @@ Once you have a working Docker installation on the server, **clone the playbook* You would then need to add `ansible_connection=community.docker.nsenter` to the host line in `inventory/hosts`. This tells Ansible to connect to the "remote" machine by switching Linux namespaces with [nsenter](https://man7.org/linux/man-pages/man1/nsenter.1.html), instead of using SSH. -Alternatively, you can leave your `inventory/hosts` as is and specify the connection type in **each** `ansible-playbook` call you do later, like this: `ansible-playbook --connection=community.docker.nsenter …` +Alternatively, you can leave your `inventory/hosts` as is and specify the connection type in **each** `ansible-playbook` call you do later, like this: `just install-all --connection=community.docker.nsenter` (or `ansible-playbook --connection=community.docker.nsenter …`). Run this from the playbook's directory: ```sh -docker run -it --rm \ +docker run \ +-it \ +--rm \ --privileged \ --pid=host \ -w /work \ --v `pwd`:/work \ +--mount type=bind,src=`pwd`,dst=/work \ --entrypoint=/bin/sh \ -docker.io/devture/ansible:2.18.1-r0-0 +ghcr.io/devture/ansible:11.1.0-r0-0 ``` Once you execute the above command, you'll be dropped into a `/work` directory inside a Docker container. The `/work` directory contains the playbook's code. First, consider running `git config --global --add safe.directory /work` to [resolve directory ownership issues](#resolve-directory-ownership-issues). -Finally, you can execute `ansible-playbook …` (or `ansible-playbook --connection=community.docker.nsenter …`) commands as per normal now. +Finally, you can execute `just` or `ansible-playbook …` (e.g. `ansible-playbook --connection=community.docker.nsenter …`) commands as per normal now. ### Running Ansible in a container on another computer (not the Matrix server) Run this from the playbook's directory: ```sh -docker run -it --rm \ +docker run \ +-it \ +--rm \ -w /work \ --v `pwd`:/work \ --v $HOME/.ssh/id_rsa:/root/.ssh/id_rsa:ro \ +--mount type=bind,src=`pwd`,dst=/work \ +--mount type=bind,src$HOME/.ssh/id_ed25519,dst=/root/.ssh/id_ed25519,ro \ --entrypoint=/bin/sh \ -docker.io/devture/ansible:2.18.1-r0-0 +ghcr.io/devture/ansible:11.1.0-r0-0 ``` -The above command tries to mount an SSH key (`$HOME/.ssh/id_rsa`) into the container (at `/root/.ssh/id_rsa`). If your SSH key is at a different path (not in `$HOME/.ssh/id_rsa`), adjust that part. +The above command tries to mount an SSH key (`$HOME/.ssh/id_ed25519`) into the container (at `/root/.ssh/id_ed25519`). If your SSH key is at a different path (not in `$HOME/.ssh/id_ed25519`), adjust that part. Once you execute the above command, you'll be dropped into a `/work` directory inside a Docker container. The `/work` directory contains the playbook's code. First, consider running `git config --global --add safe.directory /work` to [resolve directory ownership issues](#resolve-directory-ownership-issues). -Finally, you execute `ansible-playbook …` commands as per normal now. +Finally, you execute `just` or `ansible-playbook …` commands as per normal now. #### If you don't use SSH keys for authentication -If you don't use SSH keys for authentication, simply remove that whole line (`-v $HOME/.ssh/id_rsa:/root/.ssh/id_rsa:ro`). +If you don't use SSH keys for authentication, simply remove that whole line (`--mount type=bind,src$HOME/.ssh/id_ed25519,dst=/root/.ssh/id_ed25519,ro`). To authenticate at your server using a password, you need to add a package. So, when you are in the shell of the ansible docker container (the previously used `docker run -it …` command), run: @@ -97,7 +113,7 @@ To authenticate at your server using a password, you need to add a package. So, apk add sshpass ``` -Then, to be asked for the password whenever running an `ansible-playbook` command add `--ask-pass` to the arguments of the command. +Then, to be asked for the password whenever running an `ansible-playbook` command add `--ask-pass` to the arguments of the command. #### Resolve directory ownership issues diff --git a/docs/assets/obtain_admin_access_token_element_web.png.license b/docs/assets/obtain_admin_access_token_element_web.png.license new file mode 100644 index 000000000..e254eb619 --- /dev/null +++ b/docs/assets/obtain_admin_access_token_element_web.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/docs/configuring-captcha.md b/docs/configuring-captcha.md index a4a16a1dc..a5ad1085d 100644 --- a/docs/configuring-captcha.md +++ b/docs/configuring-captcha.md @@ -1,3 +1,12 @@ + + (Adapted from the [upstream project](https://github.com/element-hq/synapse/blob/develop/docs/CAPTCHA_SETUP.md)) # Overview diff --git a/docs/configuring-dns.md b/docs/configuring-dns.md index 51e30d69e..398f5999b 100644 --- a/docs/configuring-dns.md +++ b/docs/configuring-dns.md @@ -1,6 +1,23 @@ -# Configuring your DNS settings - -[Prerequisites](prerequisites.md) > Configuring your DNS settings > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) + + +# Configuring DNS settings + +[Prerequisites](prerequisites.md) > Configuring DNS settings > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) To set up Matrix on your domain, you'd need to do some DNS configuration. @@ -8,12 +25,15 @@ To set up Matrix on your domain, you'd need to do some DNS configuration. To serve the base domain (`example.com`) and [Element Web](configuring-playbook-client-element-web.md) with the default subdomain, adjust DNS records as below. -| Type | Host | Priority | Weight | Port | Target | -| ----- | ---------------------------- | -------- | ------ | ---- | ---------------------| -| A | `matrix` | - | - | - | `matrix-server-IP` | -| CNAME | `element` | - | - | - | `matrix.example.com` | +| Type | Host | Priority | Weight | Port | Target | +| ----- | --------- | -------- | ------ | ---- | ---------------------| +| A | `matrix` | - | - | - | `matrix-server-IPv4` | +| AAAA | `matrix` | - | - | - | `matrix-server-IPv6` | +| CNAME | `element` | - | - | - | `matrix.example.com` | + +As the table illustrates, you need to create 2 subdomains (`matrix.example.com` and `element.example.com`) and point both of them to your server's IPv4/IPv6 address. -As the table illustrates, you need to create 2 subdomains (`matrix.example.com` and `element.example.com`) and point both of them to your server's IP address (DNS `A` record or `CNAME` record is fine). +If you don't have IPv6 connectivity yet, you can skip the `AAAA` record. For more details about IPv6, see the [Configuring IPv6](./configuring-ipv6.md) documentation page. The `element.example.com` subdomain is necessary, because this playbook installs the [Element Web](https://github.com/element-hq/element-web) client for you by default. If you'd rather instruct the playbook not to install Element Web (`matrix_client_element_enabled: false` when [Configuring the playbook](configuring-playbook.md) later), feel free to skip the `element.example.com` DNS record. diff --git a/docs/configuring-ipv6.md b/docs/configuring-ipv6.md new file mode 100644 index 000000000..80f425f8e --- /dev/null +++ b/docs/configuring-ipv6.md @@ -0,0 +1,191 @@ + +# Configuring IPv6 + +Since 2025-03-08, the [default example configuration](../examples/vars.yml) for the playbook recommends enabling [IPv6](https://en.wikipedia.org/wiki/IPv6) support for Docker's container networks. + +**If you have IPv6 support on your server/network** (see [How do I check if my server has IPv6 connectivity?](#how-do-i-check-if-my-server-has-ipv6-connectivity)), then [enabling IPv6 support for the playbook](#enabling-ipv6-support-for-the-playbook) would give you: + +- 📥 incoming IPv6 connectivity to the server via the server's IPv6 address/addresses (containers won't have their own individual publicly accessible IPs) +- 📤 outgoing IPv6 connectivity from the server via the server's IPv6 address/addresses (containers won't exit via their own individual IPv6 address) +- 🔄 IPv6 connectivity for cross-container communication + +**If you still don't have IPv6 support on your server/network**, then enabling IPv6 support for the playbook will only enable IPv6 connectivity for cross-container communication and shouldn't affect your server's incoming/outgoing communication. You may also be interested in reading if [there's a performance penalty to enabling IPv6 if the server/network doesn't support IPv6 connectivity?](#is-there-a-performance-penalty-to-enabling-ipv6-if-the-server-network-doesn-t-support-ipv6-connectivity) + +As such, **we recommend that you follow the default example configuration and leave IPv6 support for Docker enabled in all cases**. + +Enabling IPv6 consists of 2 steps: + +- [Enabling IPv6 support for the playbook](#enabling-ipv6-support-for-the-playbook) +- [Configuring DNS records for IPv6](#configuring-dns-records-for-ipv6) + +💡 If you've followed a recent version of our documentation, you would have already done these steps, so there's nothing else to do. + +## Enabling IPv6 support for the playbook + +You can enable IPv6 support for all components' Docker container networks by using the following `vars.yml` configuration: + +```yml +# Controls whether container networks will be created with IPv6 support. +# +# If you also have IPv6 support on your server/network and AAAA DNS records pointing to the server, +# enabling this will effectively give you full public IPv6 connectivity (powered by NAT66). +# +# We recommend leaving this enabled even if you don't currently have IPv6 connectivity on your server/network. +# This way, once you eventually get IPv6 connectivity, you won't have to change anything (besides DNS records). +# +# Flipping this setting later on requires manual work (stopping services, deleting and recreating all container networks). +# +# In the future, this setting will likely default to `true`, so if you really want IPv6 disabled, explicitly set this to `false`. +# +# People managing Docker themselves and running an older Docker version will need additional configuration. +# +# Learn more in `docs/configuring-ipv6.md`. +devture_systemd_docker_base_ipv6_enabled: true +``` + +Doing this: + +- all container networks will be IPv6-enabled + +- NAT66 will be used, so that: + - containers will get [Unique Local Addresses (ULA)](https://en.wikipedia.org/wiki/Unique_local_address) + - the outgoing IPv6 address for containers will be the same as the one on the server + - traffic destined for the IPv6 address of the server will be forwarded to the containers that handle (and publish) that specific port + +> [!WARNING] +> Without enabling this and assuming you have IPv6 `AAAA` DNS records pointing to the server (see [Configuring DNS records for IPv6](#configuring-dns-records-for-ipv6)), IPv6 traffic will still be handled, but NAT64 will be used instead of NAT66. +> As such, containers will only have an IPv4 address and all IPv6 traffic that reaches them will seem to originate from a local IP. Containers also won't be able to make outgoing (even cross-container) IPv6 requests. + +To confirm connectivity, see the following other resources: + +- [How do I check if my server has IPv6 connectivity?](#how-do-i-check-if-my-server-has-ipv6-connectivity) +- [How do I check outgoing IPv6 connectivity for containers?](#how-do-i-check-outgoing-ipv6-connectivity-for-containers) +- [How do I check incoming IPv6 connectivity for containers?](#how-do-i-check-incoming-ipv6-connectivity-for-containers) +- [How do I confirm if my container networks are IPv6-enabled?](#how-do-i-confirm-if-my-container-networks-are-ipv6-enabled) +- Ensure that the [Federation Tester](https://federationtester.matrix.org/) reports that your server is reachable over IPv6. + +## Configuring DNS records for IPv6 + +[Enabling IPv6 support for the playbook](#enabling-ipv6-support-for-the-playbook) tells you how to prepare for IPv6 on the container (Docker) side. + +For full public IPv6 connectivity (and not just IPv6 connectivity for containers inside the container networks) you also need to **ensure that your domain names** (e.g. `matrix.example.com` and others) have IPv6 (`AAAA`) DNS records pointing to the server's IPv6 address. + +Also see the [Configuring DNS settings](configuring-dns.md) documentation page for more details. + +### A note about old Docker + +With our [default example configuration](../examples/vars.yml), the playbook manages Docker for you and installs a modern-enough version. + +Docker versions newer than 27.0.1 enable IPv6 integration at the Docker daemon level out of the box. This still requires that networks are created with IPv6 support as described in the [Enabling IPv6 support for the playbook](#enabling-ipv6-support-for-the-playbook) section above. + +**If you're on an old Docker version** (Docker 27.0.0 or older) for some reason, it's likely that your Docker installation is not enabled for IPv6 at all. In such a case: + +- if Docker is managed by the playbook, you can tell it to force-enable IPv6 via `devture_systemd_docker_base_ipv6_daemon_options_changing_enabled: true` + +- if Docker is managed by you manually, you can add `{"experimental": true, "ip6tables": true}` to the Docker daemon options and restart the Docker service (`docker.service`). + +### Frequently Asked Questions + +#### How do I check if my server has IPv6 connectivity? + +##### With curl + +You can run `curl https://icanhazip.com` and see if it returns an [IPv6 address](https://en.wikipedia.org/wiki/IPv6_address) (an address with `:` characters in it, like `2001:db8:1234:5678::1`). If it does, then your server has IPv6 connectivity and prefers it over using IPv4. This is common. + +If you see an IPv4 address instead (e.g. `1.2.3.4`), it may be that your server prefers IPv4 over IPv6 or that your network does not support IPv6. You can try forcing `curl` to use IPv6 by running `curl -6 https://icanhazip.com` and see if it returns an IPv6 address. + +##### With other network utilities + +You can run `ip -6 addr` to see if you have any IPv6 addresses assigned to your server, besides the link-local (`fe80::*`) addresses that everyone has (unless they have force-disabled IPv6 support on their system). + +If you do have an IPv6 address, it's still worth [using curl](#with-curl) to confirm that your server can successfully make outgoing requests over IPv6. + +#### What does the `devture_systemd_docker_base_ipv6_enabled` setting actually do? + +The `devture_systemd_docker_base_ipv6_enabled` setting controls whether container networks will be created with IPv6 support. + +Changing this setting subsequently requires manual work (deleting all container networks). +See [I've changed the `devture_systemd_docker_base_ipv6_enabled` setting, but it doesn't seem to have any effect](#i-ve-changed-the-devture_systemd_docker_base_ipv6_enabled-setting-but-it-doesn-t-seem-to-have-any-effect). + +#### I've changed the `devture_systemd_docker_base_ipv6_enabled` setting, but it doesn't seem to have any effect. + +If you're using an older Docker version (Docker 27.0.0 or older), see [A note about old Docker](#a-note-about-old-docker). + +If you've previously installed with one `devture_systemd_docker_base_ipv6_enabled` value and then changed it to another, you need to: + +- stop all services (`just stop-all`) +- delete all container networks on the server: `docker network rm $(docker network ls -q)` +- re-run the playbook fully: `just install-all` + +#### How do I confirm if my container networks are IPv6-enabled? + +You can list container networks by running `docker network ls` on the server. + +For each container network (e.g. `matrix-homeserver`), you can check if it has IPv6 connectivity by running a command like this: `docker network inspect matrix-homeserver`. + +Ensure that there's an IPv6 subnet/gateway in the `IPAM.Config` section. If yes, you may wish to proceed with [How do I check outgoing IPv6 connectivity for containers?](#how-do-i-check-outgoing-ipv6-connectivity-for-containers) + +If there's no IPv6 subnet/gateway in the `IPAM.Config` section, this container network was not created with IPv6 support. +See [I've changed the `devture_systemd_docker_base_ipv6_enabled` setting, but it doesn't seem to have any effect](#i-ve-changed-the-devture_systemd_docker_base_ipv6_enabled-setting-but-it-doesn-t-seem-to-have-any-effect). + +#### How do I check outgoing IPv6 connectivity for containers? + +```sh +docker run --rm --network=matrix-homeserver quay.io/curl/curl:latest curl -6 https://icanhazip.com +``` + +💡 This one-off container is connected to the `matrix-homeserver` container network, not to the default Docker bridge network. The default Docker `bridge` network does not have IPv6 connectivity by default (yet) and is not influenced by the `devture_systemd_docker_base_ipv6_enabled` setting, so using that network (by omitting `--network=..` from the command above) will not show an IPv6 address + +✅ If this command returns an IPv6 address, you're all good. + +❌ If this command doesn't return an IPv6 address, it may be that: + +- your container network does not have IPv6 connectivity. See [How do I confirm if my container networks are IPv6-enabled?](#how-do-i-confirm-if-my-container-networks-are-ipv6-enabled) for more details. + +- your server does not have IPv6 connectivity. See [How do I check if my server has IPv6 connectivity?](#how-do-i-check-if-my-server-has-ipv6-connectivity) for more details. If you do have IPv6 connectivity, then the issue is with Docker's IPv6 configuration. Otherwise, you need to check your server's network configuration/firewall/routing and get back to configuring the playbook later on. + +#### How do I check incoming IPv6 connectivity for containers? + +Only containers that publish ports will be exposed (reachable) publicly on the server's own IPv6 address. Containers will not get their own individual public IPv6 address. + +For this playbook, a commonly exposed container is the Traefik reverse-proxy container (unless [you're using your own webserver](./configuring-playbook-own-webserver.md)). + +You can either do something like `curl -6 https://matrix.example.com` from an IPv6-enabled host (including the server itself) and see if it works. + +An alternative is to use the [IPv6 Port Checker](https://port.tools/port-checker-ipv6/) with a hostname of `matrix.example.com` and a port of `443`. + +💡 Trying to connect to `matrix.example.com` via IPv6 requires that you have already [configured the DNS records for IPv6](#configuring-dns-records-for-ipv6) as described above. If you wish to eliminate DNS as a potential issue, you can also try connecting to the server's own IPv6 address directly: `curl -6 -H 'Host: matrix.example.com' https://[2001:db8:1234:5678::1]` (we pass a `Host` header to tell Traefik which host we'd like it to serve). + +#### Why enable IPv6 if my network doesn't support it yet? + +Because when your network does get support for IPv6 later on (even if that's 5 years away), you won't have to change anything besides [configuring the DNS records for IPv6](#configuring-dns-records-for-ipv6). + +#### Can I use a custom subnet for IPv6? + +Not easily. + +The playbook and the various roles only support passing an `enable_ipv6` flag (`true` or `false` value depending on the `devture_systemd_docker_base_ipv6_enabled` Ansible variable) when creating the Docker container networks. + +There's no support for passing a custom subnet for IPv4 and IPv6. We let Docker auto-generate the subnets for us. + +You can either create a Pull Request that adds support for this to the various playbook roles, or you can manually recreate the networks from the command-line (e.g. `docker network rm matrix-homeserver && docker network create --ipv6 --subnet=2001:db8:1234:5678::/64 matrix-homeserver`). + +#### Can I use Global Unicast Addresses (GUA) for IPv6? + +No. You cannot have GUA addresses where each container is individually addressable over the public internet. + +The playbook only supports NAT66, which should be good enough for most use cases. + +Having containers get IPv6 addresses from your own GUA subnet requires complex configuration (ndp-proxy, etc.) and is not supported. + +You may find [this Reddit post](https://www.reddit.com/r/ipv6/comments/1alpzmb/comment/kphpw11/) interesting. + +#### Is there a performance penalty to enabling IPv6 if the server/network doesn't support IPv6 connectivity? + +Probably a tiny one, as services may try to make (unsuccessful) outgoing requests over IPv6. + +In practice, it's probably negligible. diff --git a/docs/configuring-playbook-alertmanager-receiver.md b/docs/configuring-playbook-alertmanager-receiver.md index 8a0b8776b..d9be937ff 100644 --- a/docs/configuring-playbook-alertmanager-receiver.md +++ b/docs/configuring-playbook-alertmanager-receiver.md @@ -1,3 +1,11 @@ + + # Setting up Prometheus Alertmanager integration via matrix-alertmanager-receiver (optional) The playbook can install and configure the [matrix-alertmanager-receiver](https://github.com/metio/matrix-alertmanager-receiver) service for you. It's a [client](https://prometheus.io/docs/alerting/latest/clients/) for Prometheus' [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/), allowing you to deliver alerts to Matrix rooms. @@ -26,7 +34,8 @@ ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.alertma The bot 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. +> [!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. ### Join to rooms as the bot manually @@ -65,8 +74,6 @@ matrix_alertmanager_receiver_config_matrix_room_mapping: some-room-name: "!qporfwt:{{ matrix_domain }}" ``` -See `roles/custom/matrix-alertmanager-receiver/defaults/main.yml` for additional configuration variables. - ### Adjusting the matrix-alertmanager-receiver URL (optional) By tweaking the `matrix_alertmanager_receiver_hostname` and `matrix_alertmanager_receiver_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one. @@ -83,22 +90,27 @@ If you've changed the default hostname, you may need to create a CNAME record fo When setting, replace `example.com` with your own. +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-alertmanager-receiver/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-alertmanager-receiver/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_alertmanager_receiver_configuration_extension_yaml` variable + ## 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: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -122,3 +134,16 @@ route: ``` where `URL_HERE` looks like `https://matrix.example.com/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/some-room-name` or `https://matrix.example.com/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/!qporfwt:example.com`. + +## 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-alertmanager-receiver`. + +### Increase logging verbosity + +The default logging level for this component is `info`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: error, warn, info, debug +matrix_alertmanager_receiver_container_process_argument_log_level: debug +``` diff --git a/docs/configuring-playbook-appservice-double-puppet.md b/docs/configuring-playbook-appservice-double-puppet.md index 41967f3fa..1c873296a 100644 --- a/docs/configuring-playbook-appservice-double-puppet.md +++ b/docs/configuring-playbook-appservice-double-puppet.md @@ -1,3 +1,10 @@ + + # Setting up Appservice Double Puppet (optional) The playbook can install and configure the Appservice Double Puppet service for you. It is a homeserver appservice through which bridges (and potentially other services) can impersonate any user on the homeserver. @@ -28,16 +35,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 diff --git a/docs/configuring-playbook-appservice-draupnir-for-all.md b/docs/configuring-playbook-appservice-draupnir-for-all.md index be7aacc30..0f2362f47 100644 --- a/docs/configuring-playbook-appservice-draupnir-for-all.md +++ b/docs/configuring-playbook-appservice-draupnir-for-all.md @@ -1,3 +1,10 @@ + + # Setting up Draupnir for All/D4A (optional) The playbook can install and configure the [Draupnir](https://github.com/the-draupnir-project/Draupnir) moderation tool for you in appservice mode. @@ -28,11 +35,8 @@ The management room has to be given an alias, and your bot has to be invited to This management room is used to control who has access to your D4A deployment. The room stores this data inside of the control room state so your bot must have sufficient powerlevel to send custom state events. This is default 50 or moderator as Element clients call this powerlevel. -As noted in the Draupnir install instructions the control room is sensitive. **Anyone in this room can control the bot so it is important that you only invite trusted users to this room.** - -### Set an alias to the management room - -Next, set an alias to the management room. +> [!WARNING] +> Anyone in this room can control the bot so it is important that you only invite trusted users to this room. ## Adjusting the playbook configuration @@ -41,24 +45,28 @@ Add the following configuration to your `inventory/host_vars/matrix.example.com/ ```yaml matrix_appservice_draupnir_for_all_enabled: true -matrix_appservice_draupnir_for_all_master_control_room_alias: "MANAGEMENT_ROOM_ALIAS_HERE" +matrix_appservice_draupnir_for_all_config_adminRoom: "MANAGEMENT_ROOM_ALIAS_HERE" ``` ### Extending the configuration -You can configure additional options by adding the `matrix_appservice_draupnir_for_all_extension_yaml` variable. +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-appservice-draupnir-for-all/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_draupnir_for_all_configuration_extension_yaml` variable For example, to change Draupnir's `protectAllJoinedRooms` option to `true`, add the following configuration to your `vars.yml` file: ```yaml -matrix_appservice_draupnir_for_all_extension_yaml: | +matrix_appservice_draupnir_for_all_configuration_extension_yaml: | # Your custom YAML configuration goes here. - # This configuration extends the default starting configuration (`matrix_appservice_draupnir_for_all_yaml`). + # This configuration extends the default starting configuration (`matrix_appservice_draupnir_for_all_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_appservice_draupnir_for_all_yaml`. + # completely redefining `matrix_appservice_draupnir_for_all_configuration_yaml`. protectAllJoinedRooms: true ``` diff --git a/docs/configuring-playbook-backup-borg.md b/docs/configuring-playbook-backup-borg.md index ed960f252..b21c66ad1 100644 --- a/docs/configuring-playbook-backup-borg.md +++ b/docs/configuring-playbook-backup-borg.md @@ -1,143 +1,19 @@ + + # Setting up BorgBackup (optional) The playbook can install and configure [BorgBackup](https://www.borgbackup.org/) (short: Borg) with [borgmatic](https://torsion.org/borgmatic/) for you. BorgBackup is a deduplicating backup program with optional compression and encryption. That means your daily incremental backups can be stored in a fraction of the space and is safe whether you store it at home or on a cloud service. -## Prerequisites - -### Set up a remote server for storing backups - -You will need a remote server where BorgBackup will store the backups. There are hosted, BorgBackup compatible solutions available, such as [BorgBase](https://www.borgbase.com). - -### Check the Postgres version - -By default, if you're using the integrated Postgres database server (as opposed to [an external Postgres server](configuring-playbook-external-postgres.md)), backups with BorgBackup will also include dumps of your Postgres database. - -Unless you disable the Postgres-backup support, make sure that the Postgres version of your homeserver's database is compatible with borgmatic. You can check the compatible versions [here](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg/blob/main/defaults/main.yml). - -An alternative solution for backing up the Postgres database is [postgres backup](configuring-playbook-postgres-backup.md). If you decide to go with another solution, you can disable Postgres-backup support for BorgBackup using the `backup_borg_postgresql_enabled` variable. - -### Create a new SSH key - -Run the command below on any machine to create a new SSH key: - -```sh -ssh-keygen -t ed25519 -N '' -f matrix-borg-backup -C matrix -``` - -You don't need to place the key in the `.ssh` folder. - -### Add the public key - -Next, add the **public** part of this SSH key (the `matrix-borg-backup.pub` file) to your BorgBackup provider/server. - -If you are using a hosted solution, follow their instructions. If you have your own server, copy the key to it with the command like below: - -```sh -# Example to append the new PUBKEY contents, where: -# - PUBKEY is path to the public key -# - USER is a ssh user on a provider / server -# - HOST is a ssh host of a provider / server -cat PUBKEY | ssh USER@HOST 'dd of=.ssh/authorized_keys oflag=append conv=notrunc' -``` - -The **private** key needs to be added to `backup_borg_ssh_key_private` on your `inventory/host_vars/matrix.example.com/vars.yml` file as below. - -## Adjusting the playbook configuration - -To enable BorgBackup, add the following configuration to your `vars.yml` file (adapt to your needs): - -```yaml -backup_borg_enabled: true - -# Set the repository location, where: -# - USER is a ssh user on a provider / server -# - HOST is a ssh host of a provider / server -# - REPO is a BorgBackup repository name -backup_borg_location_repositories: - - ssh://USER@HOST/./REPO - -# Generate a strong password used for encrypting backups. You can create one with a command like `pwgen -s 64 1`. -backup_borg_storage_encryption_passphrase: "PASSPHRASE" - -# Add the content of the **private** part of the SSH key you have created. -# Note: the whole key (all of its belonging lines) under the variable needs to be indented with 2 spaces. -backup_borg_ssh_key_private: | - -----BEGIN OPENSSH PRIVATE KEY----- - TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZW - xpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRv - bG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3 - RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXgg - ZWEgY29tbW9kbyBjb25zZXF1YXQuIA== - -----END OPENSSH PRIVATE KEY----- -``` - -**Note**: `REPO` will be initialized on backup start, for example: `matrix`. See [Remote repositories](https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls) for the syntax. - -### Set backup archive name (optional) - -You can specify the backup archive name format. To set it, add the following configuration to your `vars.yml` file (adapt to your needs): - -```yaml -backup_borg_storage_archive_name_format: matrix-{now:%Y-%m-%d-%H%M%S} -``` - -### Configure retention policy (optional) - -It is also possible to configure a retention strategy. To configure it, add the following configuration to your `vars.yml` file (adapt to your needs): - -```yaml -backup_borg_retention_keep_hourly: 0 -backup_borg_retention_keep_daily: 7 -backup_borg_retention_keep_weekly: 4 -backup_borg_retention_keep_monthly: 12 -backup_borg_retention_keep_yearly: 2 -``` - -### Edit the backup schedule (optional) - -By default the backup will run 4 a.m. every day based on the `backup_borg_schedule` variable. It is defined in the format of systemd timer calendar. - -To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs): - -```yaml -backup_borg_schedule: "*-*-* 04:00:00" -``` - -**Note**: the actual job may run with a delay. See `backup_borg_schedule_randomized_delay_sec` [here](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg/blob/f5d5b473d48c6504be10b3d946255ef5c186c2a6/defaults/main.yml#L50) for its default value. - -### Set include and/or exclude directories (optional) - -`backup_borg_location_source_directories` defines the list of directories to back up. It's set to `{{ matrix_base_data_path }}` by default, which is the base directory for every service's data, such as Synapse, Postgres and the bridges. - -You might also want to exclude certain directories or file patterns from the backup using the `backup_borg_location_exclude_patterns` variable. - -### Extending the configuration - -There are some additional things you may wish to configure about the component. - -Take a look at: - -- [backup_borg role](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg)'s [`defaults/main.yml`](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg/blob/main/defaults/main.yml) for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `backup_borg_configuration_extension_yaml` variable - -## Installing - -After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: - - -```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start -``` - -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. - -## Manually start a backup - -Sometimes it can be helpful to run the backup as you'd like, avoiding to wait until 4 a.m., like when you test your configuration. - -If you want to run the backup immediately, log in to the server with SSH and run `systemctl start matrix-backup-borg`. - -This will not return until the backup is done, so it can possibly take a long time. Consider using [tmux](https://en.wikipedia.org/wiki/Tmux) if your SSH connection is unstable. +The [Ansible role for BorgBackup](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring BorgBackup, you can check them via: +- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg/blob/main/docs/configuring-backup-borg.md) online +- 📁 `roles/galaxy/backup_borg/docs/configuring-backup-borg.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles) diff --git a/docs/configuring-playbook-base-domain-serving.md b/docs/configuring-playbook-base-domain-serving.md index 3a3335e70..b24ab3d38 100644 --- a/docs/configuring-playbook-base-domain-serving.md +++ b/docs/configuring-playbook-base-domain-serving.md @@ -1,3 +1,10 @@ + + # Serving the base domain (optional) By default, this playbook sets up services on your Matrix server (`matrix.example.com`), but has it configured so that it presents itself as the base domain (`example.com`). To have this server officially be responsible for Matrix services for the base domain (`example.com`), you need to set up server delegation / redirection. diff --git a/docs/configuring-playbook-bot-baibot.md b/docs/configuring-playbook-bot-baibot.md index 0874095d5..2e8a66961 100644 --- a/docs/configuring-playbook-bot-baibot.md +++ b/docs/configuring-playbook-bot-baibot.md @@ -1,3 +1,10 @@ + + # Setting up baibot (optional)

@@ -123,7 +130,7 @@ Configuring `matrix_bot_baibot_config_initial_global_config_user_patterns` is op You are **not required** to define agents [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration) via Ansible. **To get started quickly**, you can **skip this section and define agents at runtime via chat commands** (following the bot's guidance). -Privileged users (like the [👮‍♂️ Administrator](#️-administrator-configuration), but potentially others too - see the upstream [🔒 access](https://github.com/etkecc/baibot/blob/main/docs/access.md) documentation) can **define agents dynamically at any time** via chat commands. +Privileged users (like the [👮‍♂️ Administrator](#️-administrator-configuration), but potentially others too — see the upstream [🔒 access](https://github.com/etkecc/baibot/blob/main/docs/access.md) documentation) can **define agents dynamically at any time** via chat commands. The Ansible role includes preset variables for easily enabling some [🤖 agents](https://github.com/etkecc/baibot/blob/main/docs/agents.md) on various [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md) (e.g. OpenAI, etc). @@ -250,7 +257,7 @@ You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot This provider allows you to use OpenAI-compatible API services like [OpenRouter](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openrouter), [Together AI](https://github.com/etkecc/baibot/blob/main/docs/providers.md#together-ai), etc. -Some of these popular services already have **shortcut** providers (see [supported providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md#supported-providers) leading to this one behind the scenes - this make it easier to get started. +Some of these popular services already have **shortcut** providers (see [supported providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md#supported-providers) leading to this one behind the scenes — this make it easier to get started. As of this moment, the playbook does not include presets for any of these services, so you'll need to [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset). @@ -305,7 +312,7 @@ Because these are [statically](https://github.com/etkecc/baibot/blob/main/docs/c 💡 To figure out what to put in the `config` section, refer to the [☁️ provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md) page, which contains **sample configuration YAML for each provider**. -As with any [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md), defining them means they exist. To actually make use of them, they need to be configured as handlers globally or in a specific room - see [Mixing & matching models](https://github.com/etkecc/baibot/blob/main/docs/features.md#mixing--matching-models). +As with any [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md), defining them means they exist. To actually make use of them, they need to be configured as handlers globally or in a specific room — see [Mixing & matching models](https://github.com/etkecc/baibot/blob/main/docs/features.md#mixing--matching-models). 💡 You may also wish to use these new agents for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers). @@ -396,11 +403,13 @@ Send `!bai help` to the bot in the room to see the available commands. You can also refer to the upstream [baibot](https://github.com/etkecc/baibot) project's documentation. -## Debugging +## 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-bot-baibot`. -As with all other services, you can find service logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by running something like `journalctl -fu matrix-bot-baibot` +### Increase logging verbosity -The default logging level for this service is `info`, but you can increase it to `debug` (or even `trace`) with the following additional configuration: +The default logging level for this service is `info`. If you want to increase the verbosity to `debug` (or even `trace`), add the following configuration to your `vars.yml` file and re-run the playbook: ```yaml # Adjust the bot's own logging level. diff --git a/docs/configuring-playbook-bot-buscarron.md b/docs/configuring-playbook-bot-buscarron.md index c7ed4f69d..969c1c93d 100644 --- a/docs/configuring-playbook-bot-buscarron.md +++ b/docs/configuring-playbook-bot-buscarron.md @@ -1,9 +1,19 @@ + + # Setting up Buscarron (optional) The playbook can install and configure [Buscarron](https://github.com/etkecc/buscarron) for you. Buscarron is bot that receives HTTP POST submissions of web forms and forwards them to a Matrix room. +See the project's [documentation](https://github.com/etkecc/buscarron/blob/main/README.md) to learn what it does and why it might be useful to you. + ## Adjusting DNS records By default, this playbook installs Buscarron on the `buscarron.` subdomain (`buscarron.example.com`) and requires you to create a CNAME record for `buscarron`, which targets `matrix.example.com`. @@ -54,6 +64,14 @@ After changing the domain, **you may need to adjust your DNS** records to point If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration. +### Extending the configuration + +There are some additional things you may wish to configure about the bot. + +Take a look at: + +- `roles/custom/matrix-bot-buscarron/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## 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: @@ -95,4 +113,14 @@ Here is an example for the `contact` form: If you get banned, you'd need to restart the process by running the playbook with `--tags=start` or running `systemctl restart matrix-bot-buscarron` on the server. -You can also refer to the upstream [documentation](https://github.com/etkecc/buscarron). +## 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-bot-buscarron`. + +### Increase logging verbosity + +The default logging level for this component is `INFO`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_bot_buscarron_loglevel: DEBUG +``` diff --git a/docs/configuring-playbook-bot-chatgpt.md b/docs/configuring-playbook-bot-chatgpt.md index 3ed5ef729..903fa658f 100644 --- a/docs/configuring-playbook-bot-chatgpt.md +++ b/docs/configuring-playbook-bot-chatgpt.md @@ -1,11 +1,21 @@ + + # Setting up matrix-bot-chatgpt (optional, unmaintained) -**Note**: [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) is now an archived (**unmaintained**) project. Talking to ChatGPT (and many other LLM providers) can happen via the much more featureful [baibot](https://github.com/etkecc/baibot), which can be installed using [this playbook](configuring-playbook-bot-baibot.md). Consider using that bot instead of this one. +**Note**: [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) is now an archived (**unmaintained**) project. Talking to ChatGPT (and many other LLM providers) can happen via the much more featureful [baibot](https://github.com/etkecc/baibot), which can be [installed using this playbook](configuring-playbook-bot-baibot.md). Consider using that bot instead of this one. The playbook can install and configure [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) for you. Talk to [ChatGPT](https://openai.com/blog/chatgpt/) via your favourite Matrix client! +See the project's [documentation](https://github.com/matrixgpt/matrix-chatgpt-bot/blob/main/README.md) to learn what it does and why it might be useful to you. + ## Prerequisites ### Obtain an OpenAI API key @@ -28,7 +38,8 @@ ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.chatgpt The bot 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. +> [!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. To make sure the bot can read encrypted messages, it will need an encryption key, just like any other new user. While obtaining the access token, follow the prompts to setup a backup key. More information can be found in the [Element documentation](https://element.io/help#encryption6). @@ -51,6 +62,14 @@ matrix_bot_chatgpt_matrix_access_token: 'ACCESS_TOKEN_HERE' matrix_bot_chatgpt_matrix_bot_prompt_prefix: 'Instructions:\nYou are ChatGPT, a large language model trained by OpenAI.' ``` +### Extending the configuration + +There are some additional things you may wish to configure about the bot. + +Take a look at: + +- `roles/custom/matrix-bot-chatgpt/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: @@ -74,4 +93,6 @@ To use the bot, invite it to the room you specified on your `vars.yml` file (`/i After the bot joins the room, you can send a message to it. When you do so, use the prefix if you configured it or mention the bot. -You can also refer to the upstream [documentation](https://github.com/matrixgpt/matrix-chatgpt-bot). +## 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-bot-chatgpt`. diff --git a/docs/configuring-playbook-bot-draupnir.md b/docs/configuring-playbook-bot-draupnir.md index 58c15b1af..623cabe98 100644 --- a/docs/configuring-playbook-bot-draupnir.md +++ b/docs/configuring-playbook-bot-draupnir.md @@ -1,3 +1,12 @@ + + # Setting up Draupnir (optional) The playbook can install and configure the [Draupnir](https://github.com/the-draupnir-project/Draupnir) moderation bot for you. @@ -6,48 +15,55 @@ See the project's [documentation](https://the-draupnir-project.github.io/draupni This documentation page is about installing Draupnir in bot mode. As an alternative, you can run a multi-instance Draupnir deployment by installing [Draupnir in appservice mode](./configuring-playbook-appservice-draupnir-for-all.md) (called Draupnir-for-all) instead. -If your migrating from Mjolnir skip to [this section](#migrating-from-mjolnir-only-required-if-migrating). +If your migrating from [Mjolnir](configuring-playbook-bot-mjolnir.md), skip to [this section](#migrating-from-mjolnir-only-required-if-migrating). ## Prerequisites ### Create a management room -Using your own account, create a new invite only room that you will use to manage the bot. This is the room where you will see the status of the bot and where you will send commands to the bot, such as the command to ban a user from another room. Anyone in this room can control the bot so it is important that you only invite trusted users to this room. +Using your own account, create a new invite only room that you will use to manage the bot. This is the room where you will see the status of the bot and where you will send commands to the bot, such as the command to ban a user from another room. -If you make the management room encrypted (E2EE), then you need to enable the native E2EE support (see [below](#native-e2ee-support)). +> [!WARNING] +> Anyone in this room can control the bot so it is important that you only invite trusted users to this room. -Once you have created the room you need to copy the room ID so you can tell the bot to use that room. In Element Web you can do this by going to the room's settings, clicking Advanced, and then copying the internal room ID. The room ID will look something like `!qporfwt:example.com`. +It is possible to make the management room encrypted (E2EE). If doing so, then you need to enable the native E2EE support (see [below](#native-e2ee-support)). -Finally invite the `@bot.draupnir:example.com` account that the playbook will create for you to the management room. Please note that clients can issue a warning that your attempting to invite a user that doesnt have a profile and might not exist. This warning is expected as your inviting the bot before its user account exists. +Once you have created the room you need to copy the room ID so you can specify it on your `inventory/host_vars/matrix.example.com/vars.yml` file. In Element Web you can check the ID by going to the room's settings and clicking "Advanced". The room ID will look something like `!qporfwt:example.com`. ## End-to-End Encryption support -Decide whether you want to support having an Encrypted management room or not. Draupnir can still protect encrypted rooms without encryption support enabled. +Decide whether you want to support having an encrypted management room or not. Draupnir can still protect encrypted rooms without encryption support enabled. + +Refer to Draupnir's [documentation](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-protected-rooms#protecting-encrypted-rooms) for more details about why you might want to care about encryption support for protected rooms. + +### Disable Pantalaimon for Draupnir (since v2.0.0; optional) + +It is known that running Draupnir along with Pantalaimon breaks all workflows that involve answering prompts with reactions. -Refer to Draupnir's [Documentation](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-protected-rooms#protecting-encrypted-rooms) for more information on why you might or might not care about encryption support for protected rooms. +If you are updating Draupnir from v1.x.x and have enabled Pantalaimon for it, you can disable Pantalaimon in favor of the native E2EE support. To disable Pantalaimon, remove the configuration `matrix_bot_draupnir_pantalaimon_use: true` from your `vars.yml` file. -**Note**: Draupnir does not support running with Pantalaimon as it would break all workflows that involve answering prompts with reactions. +**Note**: because the management room is still encrypted, disabling it without enabling the native E2EE support will break the management room. ### Native E2EE support -To enable the native E2EE support, you need to obtain an access token for Draupnir. +To enable the native E2EE support, you need to obtain an access token for Draupnir and set it on your `vars.yml` file. Note that native E2EE requires a clean access token that has not touched E2EE so curl is recommended as a method to obtain it. **The access token obtained via Element Web does not work with it**. Refer to the documentation on [how to obtain an access token via curl](obtaining-access-tokens.md#obtain-an-access-token-via-curl). -To enable the native E2EE support, add the following configuration to your `vars.yml` file: +To enable the native E2EE support, add the following configuration to your `vars.yml` file. Make sure to replace `CLEAN_ACCESS_TOKEN_HERE` with the access token you obtained just now. ```yaml -# Enables the native E2EE Support -matrix_bot_draupnir_enable_experimental_rust_crypto: true +# Enables the native E2EE support +matrix_bot_draupnir_config_experimentalRustCrypto: true -# Access Token the bot uses to login. +# Access token which the bot will use for logging in. # Comment out `matrix_bot_draupnir_login_native` when using this option. -matrix_bot_draupnir_access_token: "ACCESS_TOKEN_HERE" +matrix_bot_draupnir_config_accessToken: "CLEAN_ACCESS_TOKEN_HERE" ``` ## Adjusting the playbook configuration -To enable the bot, add the following configuration to your `vars.yml` file. Make sure to replace `MANAGEMENT_ROOM_ID_HERE`. +To enable the bot, add the following configuration to your `vars.yml` file. Make sure to replace `MANAGEMENT_ROOM_ID_HERE` with the one of the room which you have created earlier. ```yaml # Enable Draupnir @@ -57,47 +73,67 @@ matrix_bot_draupnir_enabled: true # matrix_bot_draupnir_login: bot.draupnir # Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`. -# If creating the user on your own and using `matrix_bot_draupnir_access_token` to login you can comment out this line. +# If creating the user on your own and using `matrix_bot_draupnir_config_accessToken` to login you can comment out this line. matrix_bot_draupnir_password: PASSWORD_FOR_THE_BOT -# Comment out if using `matrix_bot_draupnir_enable_experimental_rust_crypto: true` or `matrix_bot_draupnir_access_token` to login. +# Comment out if using `matrix_bot_draupnir_config_experimentalRustCrypto: true` or `matrix_bot_draupnir_config_accessToken` to login. matrix_bot_draupnir_login_native: true -matrix_bot_draupnir_management_room: "MANAGEMENT_ROOM_ID_HERE" +matrix_bot_draupnir_config_managementRoom: "MANAGEMENT_ROOM_ID_HERE" ``` -Before Proceeding run the playbook with the following command to make sure the Draupnir user has been created. +### Create and invite the bot to the management room + +Before proceeding to the next step, run the playbook with the following command to create the bot user. + ```sh ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created ``` -### Make sure the account is free from rate limiting +**Note**: the `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. + +Then, invite the bot (`@bot.draupnir:example.com`) to its management room which you have created earlier. + +### Make sure the account is free from rate limiting (optional, recommended) -If your homeserver's implementation is Synapse, you will need to prevent it from rate limiting the bot's account. **This is a heavily recomended step. If you do not configure it, Draupnir performance will be degraded.** +If your homeserver's implementation is Synapse, you will need to prevent it from rate limiting the bot's account. **This is a highly recommended step. If you do not configure it, Draupnir performance will be degraded.** This can be done using Synapse's [Admin APIs](https://element-hq.github.io/synapse/latest/admin_api/user_admin_api.html#override-ratelimiting-for-users). They can be accessed both externally and internally. +**Note**: access to the APIs is restricted with a valid access token, so exposing them publicly should not be a real security concern. Still, doing so is not recommended for additional security. See [official Synapse reverse-proxying recommendations](https://element-hq.github.io/synapse/latest/reverse_proxy.html#synapse-administration-endpoints). + +The APIs can also be accessed via [Synapse Admin](https://github.com/etkecc/synapse-admin), a web UI tool you can use to administrate users, rooms, media, etc. on your Matrix server. The playbook can install and configure Synapse Admin for you. For details about it, see [this page](configuring-playbook-synapse-admin.md). + +#### Add the configuration + To expose the APIs publicly, add the following configuration to your `vars.yml` file: ```yaml matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true ``` -The APIs can also be accessed via [Synapse Admin](https://github.com/etkecc/synapse-admin), a web UI tool you can use to administrate users, rooms, media, etc. on your Matrix server. The playbook can install and configure Synapse Admin for you. For details about it, see [this page](configuring-playbook-synapse-admin.md). +#### Obtain an access token for admin account -**Note**: access to the APIs is restricted with a valid access token, so exposing them publicly should not be a real security concern. Still, doing so is not recommended for additional security. See [official Synapse reverse-proxying recommendations](https://element-hq.github.io/synapse/latest/reverse_proxy.html#synapse-administration-endpoints). +Manual access to Synapse's Admin APIs requires an access token for a homeserver admin account. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md). -To discharge rate limiting, run the following command on systems that ship curl (note that it does not work on outdated Windows 10). Even if the APIs are not exposed to the internet, you should still be able to run the command on the homeserver locally. Before running it, make sure to replace `@bot.draupnir:example.com` with the MXID of your Draupnir: +> [!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. -```sh -curl --header "Authorization: Bearer " -X POST https://matrix.example.com/_synapse/admin/v1/users/@bot.draupnir:example.com/override_ratelimit -``` +#### Run the `curl` command -### Obtain an access token +To disable rate limiting, run the following command on systems that ship curl. Before running it, make sure to replace: -Manual access to Synapse's Admin API requires an access token. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md). +- `ADMIN_ACCESS_TOKEN_HERE` with the access token of the admin account +- `example.com` with your base domain +- `@bot.draupnir:example.com` with the MXID of your Draupnir bot user -⚠️ **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. +```sh +curl --header "Authorization: Bearer ADMIN_ACCESS_TOKEN_HERE" -X POST https://matrix.example.com/_synapse/admin/v1/users/@bot.draupnir:example.com/override_ratelimit +``` + +**Notes**: +- This does not work on outdated Windows 10 as curl is not available there. +- Even if the APIs are not exposed to the internet, you should still be able to run the command on the homeserver locally. ### Abuse Reports @@ -106,18 +142,22 @@ Draupnir can receive reports in the management room. The bot can intercept the report API endpoint of the client-server API, which requires integration with the reverse proxy in front of the homeserver. If you are using Traefik, this playbook can set this up for you: ```yaml -matrix_bot_draupnir_abuse_reporting_enabled: true +matrix_bot_draupnir_config_web_abuseReporting: true ``` ### Extending the configuration -You can configure additional options by adding the `matrix_bot_draupnir_configuration_extension_yaml` variable. +There are some additional things you may wish to configure about the bot. + +Take a look at: + +- `roles/custom/matrix-bot-draupnir/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bot_draupnir_configuration_extension_yaml` variable For example, to change Draupnir's `acceptInvitesFromSpace` option to `!qporfwt:example.com`, add the following configuration to your `vars.yml` file: @@ -137,7 +177,7 @@ matrix_bot_draupnir_configuration_extension_yaml: | Replace your `matrix_bot_mjolnir` config with `matrix_bot_draupnir` config. Also disable Mjolnir if you're doing migration. -Note that Pantalaimon is unsupported by Draupnir so it is recommended to consult the instructions to enable [the native E2EE support](#native-e2ee-support). +Note that Draupnir supports E2EE natively, so you can enable it instead of Pantalaimon. It is recommended to consult the instruction [here](#native-e2ee-support). That is all you need to do due to that Draupnir can complete migration on its own. @@ -158,6 +198,8 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-use `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. +- If you change the bot password (`matrix_bot_draupnir_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_draupnir_password` to let the bot know its new password. + ## Usage You can refer to the upstream [documentation](https://the-draupnir-project.github.io/draupnir-documentation/) for additional ways to use and configure Draupnir and for a more detailed usage guide. diff --git a/docs/configuring-playbook-bot-go-neb.md b/docs/configuring-playbook-bot-go-neb.md index cd6e875cd..9762176c6 100644 --- a/docs/configuring-playbook-bot-go-neb.md +++ b/docs/configuring-playbook-bot-go-neb.md @@ -1,6 +1,16 @@ + + # Setting up Go-NEB (optional, unmaintained) -**Note**: [Go-NEB](https://github.com/matrix-org/go-neb) is now an archived (**unmaintained**) project. We recommend not bothering with installing it. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be installed using [this playbook](configuring-playbook-bridge-hookshot.md). Consider using that bot instead of this one. +**Note**: [Go-NEB](https://github.com/matrix-org/go-neb) is now an archived (**unmaintained**) project. We recommend not bothering with installing it. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md). Consider using that bot instead of this one. The playbook can install and configure [Go-NEB](https://github.com/matrix-org/go-neb) for you. @@ -26,7 +36,8 @@ ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.go-neb The bot 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. +> [!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 @@ -219,22 +230,27 @@ After changing the domain, **you may need to adjust your DNS** records to point If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration. +### Extending the configuration + +There are some additional things you may wish to configure about the bot. + +Take a look at: + +- `roles/custom/matrix-bot-go-neb/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bot-go-neb/templates/config.yaml.j2` for the bot's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bot_go_neb_configuration_extension_yaml` variable + ## 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: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 @@ -245,3 +261,7 @@ Basic usage is like this: `!echo hi` or `!imgur puppies` or `!giphy matrix` If you enabled the github_cmd service, send `!github help` to the bot in the room to see the available commands. You can also refer to the upstream [Documentation](https://github.com/matrix-org/go-neb). + +## 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-bot-go-neb`. diff --git a/docs/configuring-playbook-bot-honoroit.md b/docs/configuring-playbook-bot-honoroit.md index d89aa7152..967ea0050 100644 --- a/docs/configuring-playbook-bot-honoroit.md +++ b/docs/configuring-playbook-bot-honoroit.md @@ -1,3 +1,11 @@ + + # Setting up Honoroit (optional) The playbook can install and configure [Honoroit](https://github.com/etkecc/honoroit) for you. @@ -45,6 +53,14 @@ If you've changed the default hostname, you may need to create a CNAME record fo When setting, replace `example.com` with your own. +### Extending the configuration + +There are some additional things you may wish to configure about the bot. + +Take a look at: + +- `roles/custom/matrix-bot-honoroit/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## 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: @@ -73,3 +89,15 @@ After the bot joins the room, any Matrix user can send a message to it to start Send `!ho help` to the bot in the room to see the available commands. You can also refer to the upstream [documentation](https://github.com/etkecc/honoroit#features). + +## 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-bot-honoroit`. + +### Increase logging verbosity + +If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_bot_honoroit_loglevel: 'DEBUG' +``` diff --git a/docs/configuring-playbook-bot-matrix-registration-bot.md b/docs/configuring-playbook-bot-matrix-registration-bot.md index 95b86163f..c171b733a 100644 --- a/docs/configuring-playbook-bot-matrix-registration-bot.md +++ b/docs/configuring-playbook-bot-matrix-registration-bot.md @@ -1,3 +1,15 @@ + + # Setting up matrix-registration-bot (optional) The playbook can install and configure [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) for you. @@ -29,6 +41,15 @@ matrix_synapse_registration_requires_token: true The bot account will be created automatically. +### Extending the configuration + +There are some additional things you may wish to configure about the bot. + +Take a look at: + +- `roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bot-matrix-registration-bot/templates/config.yaml.j2` for the bridge's default configuration + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: @@ -63,3 +84,16 @@ To clean the cache (session & encryption data) after you changed the bot's usern ```sh just run-tags bot-matrix-registration-bot-clean-cache ``` + +## 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-bot-matrix-registration-bot`. + +### Increase logging verbosity + +The default logging level for this component is `INFO`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: ERROR, INFO, DEBUG +matrix_bot_matrix_registration_bot_logging_level: DEBUG +``` diff --git a/docs/configuring-playbook-bot-matrix-reminder-bot.md b/docs/configuring-playbook-bot-matrix-reminder-bot.md index d82c3eae1..9661ed6fa 100644 --- a/docs/configuring-playbook-bot-matrix-reminder-bot.md +++ b/docs/configuring-playbook-bot-matrix-reminder-bot.md @@ -1,3 +1,11 @@ + + # Setting up matrix-reminder-bot (optional) The playbook can install and configure [matrix-reminder-bot](https://github.com/anoadragon453/matrix-reminder-bot) for you. @@ -23,6 +31,15 @@ matrix_bot_matrix_reminder_bot_matrix_user_password: PASSWORD_FOR_THE_BOT matrix_bot_matrix_reminder_bot_reminders_timezone: Europe/London ``` +### Extending the configuration + +There are some additional things you may wish to configure about the bot. + +Take a look at: + +- `roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bot-matrix-reminder-bot/templates/config.yaml.j2` for the bot's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bot_matrix_reminder_bot_configuration_extension_yaml` variable + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: @@ -53,3 +70,18 @@ Basic usage is like this: `!remindme in 2 minutes; This is a test` Send `!help reminders` to the room to see the bot's help menu for additional commands. You can also refer to the upstream [Usage documentation](https://github.com/anoadragon453/matrix-reminder-bot#usage). + +## 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-bot-matrix-reminder-bot`. + +### Increase logging verbosity + +The default logging level for this component is `INFO`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_bot_matrix_reminder_bot_configuration_extension_yaml: | + logging: + # Valid values: ERROR, WARNING, INFO, DEBUG + level: DEBUG +``` diff --git a/docs/configuring-playbook-bot-maubot.md b/docs/configuring-playbook-bot-maubot.md index 0436de588..367a3aaac 100644 --- a/docs/configuring-playbook-bot-maubot.md +++ b/docs/configuring-playbook-bot-maubot.md @@ -1,3 +1,14 @@ + + # Setting up maubot (optional) The playbook can install and configure [maubot](https://github.com/maubot/maubot) for you. @@ -47,6 +58,15 @@ If you've changed the default hostname, you may need to create a CNAME record fo When setting, replace `example.com` with your own. +### Extending the configuration + +There are some additional things you may wish to configure about the bot. + +Take a look at: + +- `roles/custom/matrix-bot-maubot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bot-maubot/templates/config.yaml.j2` for the bot's default configuration + ## Customizing the maubot container image Certain [maubot plugins](https://plugins.mau.bot/) require additional dependencies to be installed. @@ -100,4 +120,18 @@ This can be done via `mbc login` then `mbc auth` (see the [maubot documentation] Alternatively, you can refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md). Be aware that you'd better use the **Obtain an access token via curl** method (not **Obtain an access token via Element Web**) as the latter will causes issues to your bot in encrypted rooms. Read [more](https://docs.mau.fi/maubot/usage/basic.html#creating-clients). -⚠️ **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. +> [!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. + +## 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-bot-maubot`. + +### Increase logging verbosity + +The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: CRITICAL, ERROR, WARNING, INFO, DEBUG +matrix_bot_maubot_logging_level: DEBUG +``` diff --git a/docs/configuring-playbook-bot-mjolnir.md b/docs/configuring-playbook-bot-mjolnir.md index c7a211491..5455ffe47 100644 --- a/docs/configuring-playbook-bot-mjolnir.md +++ b/docs/configuring-playbook-bot-mjolnir.md @@ -1,3 +1,14 @@ + + # Setting up Mjolnir (optional) The playbook can install and configure the [Mjolnir](https://github.com/matrix-org/mjolnir) moderation bot for you. @@ -24,7 +35,8 @@ If you would like Mjolnir to be able to deactivate users, move aliases, shutdown The bot 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. +> [!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. ### Make sure the account is free from rate limiting @@ -32,37 +44,57 @@ If your homeserver's implementation is Synapse, you will need to prevent it from This can be done using Synapse's [Admin APIs](https://element-hq.github.io/synapse/latest/admin_api/user_admin_api.html#override-ratelimiting-for-users). They can be accessed both externally and internally. +**Note**: access to the APIs is restricted with a valid access token, so exposing them publicly should not be a real security concern. Still, doing so is not recommended for additional security. See [official Synapse reverse-proxying recommendations](https://element-hq.github.io/synapse/latest/reverse_proxy.html#synapse-administration-endpoints). + +The APIs can also be accessed via [Synapse Admin](https://github.com/etkecc/synapse-admin), a web UI tool you can use to administrate users, rooms, media, etc. on your Matrix server. The playbook can install and configure Synapse Admin for you. For details about it, see [this page](configuring-playbook-synapse-admin.md). + +#### Add the configuration + To expose the APIs publicly, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true ``` -The APIs can also be accessed via [Synapse Admin](https://github.com/etkecc/synapse-admin), a web UI tool you can use to administrate users, rooms, media, etc. on your Matrix server. The playbook can install and configure Synapse Admin for you. For details about it, see [this page](configuring-playbook-synapse-admin.md). +#### Obtain an access token for admin account -**Note**: access to the APIs is restricted with a valid access token, so exposing them publicly should not be a real security concern. Still, doing so is not recommended for additional security. See [official Synapse reverse-proxying recommendations](https://element-hq.github.io/synapse/latest/reverse_proxy.html#synapse-administration-endpoints). +Manual access to Synapse's Admin APIs requires an access token for a homeserver admin account. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md). If you have made Mjolnir an admin, you can just use the Mjolnir token. + +> [!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. -To discharge rate limiting, run the following command on systems that ship curl (note that it does not work on outdated Windows 10). Even if the APIs are not exposed to the internet, you should still be able to run the command on the homeserver locally. Before running it, make sure to replace `@bot.mjolnir:example.com` with the MXID of your Mjolnir: +#### Run the `curl` command + +To disable rate limiting, run the following command on systems that ship curl. Before running it, make sure to replace: + +- `ADMIN_ACCESS_TOKEN_HERE` with the access token of the admin account +- `example.com` with your base domain +- `@bot.mjolnir:example.com` with the MXID of your Mjolnir bot user ```sh -curl --header "Authorization: Bearer " -X POST https://matrix.example.com/_synapse/admin/v1/users/@bot.mjolnir:example.com/override_ratelimit +curl --header "Authorization: Bearer ADMIN_ACCESS_TOKEN_HERE" -X POST https://matrix.example.com/_synapse/admin/v1/users/@bot.mjolnir:example.com/override_ratelimit ``` -You can obtain an access token for a homeserver admin account in the same way as you can do so for Mjolnir itself. If you have made Mjolnir an admin, you can just use the Mjolnir token. +**Notes**: +- This does not work on outdated Windows 10 as curl is not available there. +- Even if the APIs are not exposed to the internet, you should still be able to run the command on the homeserver locally. ### Create a management room -Using your own account, create a new invite only room that you will use to manage the bot. This is the room where you will see the status of the bot and where you will send commands to the bot, such as the command to ban a user from another room. Anyone in this room can control the bot so it is important that you only invite trusted users to this room. +Using your own account, create a new invite only room that you will use to manage the bot. This is the room where you will see the status of the bot and where you will send commands to the bot, such as the command to ban a user from another room. -If you make the management room encrypted (E2EE), then you MUST enable and use Pantalaimon (see [below](#configuration-with-e2ee-support)). +> [!WARNING] +> Anyone in this room can control the bot so it is important that you only invite trusted users to this room. -Once you have created the room you need to copy the room ID so you can tell the bot to use that room. In Element Web you can do this by going to the room's settings, clicking Advanced, and then copying the internal room ID. The room ID will look something like `!qporfwt:example.com`. +It is possible to make the management room encrypted (E2EE). If doing so, then you MUST enable and use Pantalaimon (see [below](#configuration-with-e2ee-support)). + +Once you have created the room you need to copy the room ID so you can specify it on your `vars.yml` file. In Element Web you can check the ID by going to the room's settings and clicking "Advanced". The room ID will look something like `!qporfwt:example.com`. Finally invite the `@bot.mjolnir:example.com` account you created earlier into the room. ## Adjusting the playbook configuration -To enable the bot, add the following configuration to your `vars.yml` file. Make sure to replace `MANAGEMENT_ROOM_ID_HERE`. +To enable the bot, add the following configuration to your `vars.yml` file. Make sure to replace `MANAGEMENT_ROOM_ID_HERE` with the one of the room which you have created just now. ```yaml # Enable Mjolnir @@ -131,7 +163,11 @@ matrix_synapse_ext_spam_checker_mjolnir_antispam_config_ban_lists: [] ### Extending the configuration -You can configure additional options by adding the `matrix_bot_mjolnir_configuration_extension_yaml` variable to your `inventory/host_vars/matrix.example.com/vars.yml` file. +There are some additional things you may wish to configure about the bot. + +Take a look at: + +- `roles/custom/matrix-bot-mjolnir/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bot_mjolnir_configuration_extension_yaml` variable For example, to change Mjolnir's `recordIgnoredInvites` option to `true`, add the following configuration to your `vars.yml` file: @@ -153,13 +189,11 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` **Notes**: -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - - 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. @@ -169,3 +203,17 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-use ## Usage You can refer to the upstream [documentation](https://github.com/matrix-org/mjolnir) for additional ways to use and configure Mjolnir. Check out their [quickstart guide](https://github.com/matrix-org/mjolnir#quickstart-guide) for some basic commands you can give to the bot. + +## 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-bot-mjolnir`. + +### Increase logging verbosity + +The default logging level for this component is `INFO`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: ERROR, WARN, INFO, DEBUG +matrix_bot_mjolnir_configuration_extension_yaml: | + logLevel: "DEBUG" +``` diff --git a/docs/configuring-playbook-bridge-appservice-discord.md b/docs/configuring-playbook-bridge-appservice-discord.md index 5368db974..8aeb188b4 100644 --- a/docs/configuring-playbook-bridge-appservice-discord.md +++ b/docs/configuring-playbook-bridge-appservice-discord.md @@ -1,3 +1,12 @@ + + # Setting up Appservice Discord bridging (optional) **Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) and [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridges supported by the playbook. @@ -28,22 +37,28 @@ matrix_appservice_discord_bot_token: "YOUR DISCORD APP BOT TOKEN" # use_appservice_legacy_authorization: true ``` +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + +Take a look at: + +- `roles/custom/matrix-bridge-appservice-discord/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_discord_configuration_extension_yaml` variable + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. - `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. ## Self-Service Bridging (Manual) @@ -99,3 +114,18 @@ There's the Discord bridge's guide for [setting privileges on bridge managed roo docker exec -it matrix-appservice-discord \ /bin/sh -c 'cp /cfg/registration.yaml /tmp/discord-registration.yaml && cd /tmp && node /build/tools/adminme.js -c /cfg/config.yaml -m "!qporfwt:example.com" -u "@alice:example.com" -p 100' ``` + +## 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-appservice-discord`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file (adapt to your needs) and re-run the playbook: + +```yaml +matrix_appservice_discord_configuration_extension_yaml: | + logging: + # What level should the logger output to the console at. + console: "info" # Valid values: silent, error, warn, http, info, verbose, silly +``` diff --git a/docs/configuring-playbook-bridge-appservice-irc.md b/docs/configuring-playbook-bridge-appservice-irc.md index af4003f6d..f4eb9eb47 100644 --- a/docs/configuring-playbook-bridge-appservice-irc.md +++ b/docs/configuring-playbook-bridge-appservice-irc.md @@ -1,3 +1,12 @@ + + # Setting up Appservice IRC bridging (optional) **Note**: bridging to [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) can also happen via the [Heisenbridge](configuring-playbook-bridge-heisenbridge.md) bridge supported by the playbook. @@ -60,23 +69,48 @@ matrix_appservice_irc_ircService_servers: lineLimit: 3 ``` +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + +Take a look at: + +- `roles/custom/matrix-bridge-appservice-irc/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bridge-appservice-irc/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_irc_configuration_extension_yaml` variable + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 To use the bridge, you need to start a chat with `@irc_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). + +## 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-appservice-irc`. + +### Configuring for logging + +The default logging level for this component is `debug`, and the log is output to the console only. If you want to change the verbosity or enable logging to a file, add the following configuration to your `vars.yml` file (adapt to your needs) and re-run the playbook: + +```yaml +matrix_appservice_irc_configuration_extension_yaml: | + logging: + # Level to log on console/logfile. + # Valid values: error, warn, info, debug + level: "debug" + # The file location to log to. This is relative to the project directory. + logfile: "debug.log" + # The file location to log errors to. This is relative to the project directory. + errfile: "errors.log" +``` diff --git a/docs/configuring-playbook-bridge-appservice-kakaotalk.md b/docs/configuring-playbook-bridge-appservice-kakaotalk.md index af0955273..99ebc1ef0 100644 --- a/docs/configuring-playbook-bridge-appservice-kakaotalk.md +++ b/docs/configuring-playbook-bridge-appservice-kakaotalk.md @@ -1,10 +1,20 @@ + + # Setting up Appservice Kakaotalk bridging (optional) The playbook can install and configure [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) for you, for bridging to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG). This bridge is based on [node-kakao](https://github.com/storycraft/node-kakao) (now unmaintained) and some [mautrix-facebook](https://github.com/mautrix/facebook) code. See the project's [documentation](https://src.miscworks.net/fair/matrix-appservice-kakaotalk/src/branch/master/README.md) to learn what it does and why it might be useful to you. -⚠️ **Warning**: there have been recent reports (~2022-09-16) that **using this bridge may get your account banned**. +> [!WARNING] +> There have been recent reports (~2022-09-16) that **using this bridge may get your account banned**. ## Prerequisite (optional) @@ -39,19 +49,27 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 To use the bridge, you need to start a chat with `@kakaotalkbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). You then need to send `login --save EMAIL_OR_PHONE_NUMBER` to the bridge bot to enable bridging for your Kakaotalk account. The `--save` flag may be omitted, if you'd rather not save your password. + +## 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-appservice-kakaotalk`. + +### Increase logging verbosity + +The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_appservice_kakaotalk_logging_level: DEBUG +``` diff --git a/docs/configuring-playbook-bridge-appservice-slack.md b/docs/configuring-playbook-bridge-appservice-slack.md index b33f565cf..2ffb0527e 100644 --- a/docs/configuring-playbook-bridge-appservice-slack.md +++ b/docs/configuring-playbook-bridge-appservice-slack.md @@ -1,3 +1,14 @@ + + # Setting up Appservice Slack bridging (optional) **Notes**: @@ -61,7 +72,21 @@ matrix_appservice_slack_control_room_id: "Your Matrix admin room ID" # matrix_appservice_slack_team_sync_enabled: true ``` -Other configuration options are available via the `matrix_appservice_slack_configuration_extension_yaml` variable. +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + +Take a look at: + +- `roles/custom/matrix-bridge-appservice-slack/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bridge-appservice-slack/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_slack_configuration_extension_yaml` variable + +For example, to change the bot's username from `slackbot`, add the following configuration to your `vars.yml` file. Replace `examplebot` with your own. + +```yaml +matrix_appservice_slack_configuration_extension_yaml: | + bot_username: "examplebot" +``` ## Installing @@ -69,16 +94,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 @@ -86,7 +107,7 @@ To use the bridge, you need to send `/invite @slackbot:example.com` to invite th If Team Sync is not enabled, for each channel you would like to bridge, perform the following steps: -- Create a Matrix room in the usual manner for your client. Take a note of its Matrix room ID - it will look something like `!qporfwt:example.com`. +- Create a Matrix room in the usual manner for your client. Take a note of its Matrix room ID — it will look something like `!qporfwt:example.com`. - Invite the bot user to both the Slack and Matrix channels you would like to bridge using `/invite @matrixbot` for Slack and `/invite @slackbot:example.com` for Matrix. - Determine the "channel ID" that Slack uses to identify the channel. You can see it when you open a given Slack channel in a browser. The URL reads like this: `https://app.slack.com/client/XXX//details/`. - Issue a link command in the administration control room with these collected values as arguments: @@ -121,7 +142,7 @@ Unlinking doesn't only disconnect the bridge, but also makes the slackbot leave ## Troubleshooting -As always, check the logs: `journalctl -fu matrix-appservice-slack` +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-appservice-slack`. ### Linking: "Room is now pending-name" @@ -129,8 +150,8 @@ This typically means that you haven't used the correct Slack channel ID. Unlink ### Messages work from Matrix to Slack, but not the other way around -Check you logs, if they say something like +Check the logs, and if you find the message like below, unlink your room, reinvite the bot and re-link it again. `WARN SlackEventHandler Ignoring message from unrecognised Slack channel ID : %s (%s) ` -then unlink your room, reinvite the bot and re-link it again. This may particularly hit you, if you tried to unsuccessfully link your room multiple times without unlinking it after each failed attempt. +This may particularly hit you, if you tried to unsuccessfully link your room multiple times without unlinking it after each failed attempt. diff --git a/docs/configuring-playbook-bridge-appservice-webhooks.md b/docs/configuring-playbook-bridge-appservice-webhooks.md index e4d212f46..9c43811f7 100644 --- a/docs/configuring-playbook-bridge-appservice-webhooks.md +++ b/docs/configuring-playbook-bridge-appservice-webhooks.md @@ -1,6 +1,17 @@ + + # Setting up Appservice Webhooks bridging (optional, deprecated) -**Note**: This bridge has been deprecated. We recommend not bothering with installing it. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be installed using [this playbook](configuring-playbook-bridge-hookshot.md). Consider using that bridge instead of this one. +**Note**: This bridge has been deprecated. We recommend not bothering with installing it. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md). Consider using that bridge instead of this one. The playbook can install and configure [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks) for you. This bridge provides support for Slack-compatible webhooks. @@ -14,9 +25,6 @@ To enable the bridge, add the following configuration to your `inventory/host_va matrix_appservice_webhooks_enabled: true matrix_appservice_webhooks_api_secret: '' -# Uncomment to increase the verbosity of logging via `journalctl -fu matrix-appservice-webhooks.service` -# matrix_appservice_webhooks_log_level: 'verbose' - # As of Synapse 1.90.0, uncomment to enable the backwards compatibility (https://matrix-org.github.io/synapse/latest/upgrade#upgrading-to-v1900) that this bridge needs. # Note: This deprecated method is considered insecure. # @@ -24,22 +32,27 @@ matrix_appservice_webhooks_api_secret: '' # use_appservice_legacy_authorization: true ``` +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + +Take a look at: + +- `roles/custom/matrix-bridge-appservice-webhooks/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bridge-appservice-webhooks/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_webhooks_configuration_extension_yaml` variable + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -85,3 +98,16 @@ If you're using the [Dimension integration manager](configuring-playbook-dimensi To configure it, open the Dimension integration manager, and go to "Settings" and "Bridges", then select edit action for "Webhook Bridge". On the UI, press "Add self-hosted Bridge" button and populate "Provisioning URL" and "Shared Secret" values from `/matrix/appservice-webhooks/config/config.yaml` file's homeserver URL value and provisioning secret value, respectively. + +## 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-appservice-webhooks`. + +### Increase logging verbosity + +The default logging level for this component is `info`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: info, verbose +matrix_appservice_webhooks_log_level: 'verbose' +``` diff --git a/docs/configuring-playbook-bridge-beeper-linkedin.md b/docs/configuring-playbook-bridge-beeper-linkedin.md index 73059ce64..4016b0b37 100644 --- a/docs/configuring-playbook-bridge-beeper-linkedin.md +++ b/docs/configuring-playbook-bridge-beeper-linkedin.md @@ -1,3 +1,13 @@ + + # Setting up Beeper Linkedin bridging (optional) The playbook can install and configure [beeper-linkedin](https://github.com/beeper/linkedin) for you, for bridging to [LinkedIn](https://www.linkedin.com/) Messaging. This bridge is based on the mautrix-python framework and can be configured in a similar way to the mautrix bridges. @@ -36,16 +46,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -55,6 +61,16 @@ You then need to send `login YOUR_LINKEDIN_EMAIL_ADDRESS` to the bridge bot to e ## 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-beeper-linkedin`. + +### Increase logging verbosity + +The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_beeper_linkedin_logging_level: DEBUG +``` + ### Bridge asking for 2FA even if you don't have 2FA enabled If you don't have 2FA enabled and are logging in from a strange IP for the first time, LinkedIn will send an email with a one-time code. You can use this code to authorize the bridge session. In my experience, once the IP is authorized, you will not be asked again. diff --git a/docs/configuring-playbook-bridge-go-skype-bridge.md b/docs/configuring-playbook-bridge-go-skype-bridge.md index 62d1eb77b..9ec4e1fe4 100644 --- a/docs/configuring-playbook-bridge-go-skype-bridge.md +++ b/docs/configuring-playbook-bridge-go-skype-bridge.md @@ -1,3 +1,10 @@ + + # Setting up Go Skype Bridge bridging (optional) The playbook can install and configure [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) for you, for bridging to [Skype](https://www.skype.com/). This bridge was created based on [mautrix-whatsapp](https://github.com/mautrix/whatsapp) and can be configured in a similar way to it. @@ -36,17 +43,26 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 To use the bridge, you need to start a chat with `@skypebridgebot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). + +## 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-go-skype-bridge`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: fatal, error, warn, info, debug +matrix_go_skype_bridge_log_level: 'info' +``` diff --git a/docs/configuring-playbook-bridge-heisenbridge.md b/docs/configuring-playbook-bridge-heisenbridge.md index a464a60f3..552a90635 100644 --- a/docs/configuring-playbook-bridge-heisenbridge.md +++ b/docs/configuring-playbook-bridge-heisenbridge.md @@ -1,8 +1,16 @@ + + # Setting up Heisenbridge bouncer-style IRC bridging (optional) **Note**: bridging to [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) can also happen via the [matrix-appservice-irc](configuring-playbook-bridge-appservice-irc.md) bridge supported by the playbook. -The playbook can install and configure [Heisenbridge](https://github.com/hifi/heisenbridge) - the bouncer-style [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) bridge for you. +The playbook can install and configure [Heisenbridge](https://github.com/hifi/heisenbridge) — the bouncer-style [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) bridge for you. See the project's [documentation](https://github.com/hifi/heisenbridge/blob/master/README.md) to learn what it does and why it might be useful to you. You can also take a look at [this demonstration video](https://www.youtube.com/watch?v=nQk1Bp4tk4I). @@ -43,22 +51,26 @@ If you've changed the default hostname, you may need to create a CNAME record fo When setting, replace `example.com` with your own. +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + +Take a look at: + +- `roles/custom/matrix-bridge-heisenbridge/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## 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: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 @@ -69,3 +81,7 @@ Help is available for all commands with the `-h` switch. You can also learn the basics by watching [this demonstration video](https://www.youtube.com/watch?v=nQk1Bp4tk4I). If you encounter issues or feel lost you can join the project room at [#heisenbridge:vi.fi](https://matrix.to/#/#heisenbridge:vi.fi) for help. + +## 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-heisenbridge`. diff --git a/docs/configuring-playbook-bridge-hookshot.md b/docs/configuring-playbook-bridge-hookshot.md index e0f852f1c..fc637d853 100644 --- a/docs/configuring-playbook-bridge-hookshot.md +++ b/docs/configuring-playbook-bridge-hookshot.md @@ -1,3 +1,13 @@ + + # Setting up matrix-hookshot (optional) The playbook can install and configure [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) for you. @@ -38,7 +48,12 @@ Take special note of the `matrix_hookshot_*_enabled` variables. Services that ne ### Extending the configuration -You can configure additional options by adding the `matrix_hookshot_configuration_extension_yaml` and `matrix_hookshot_registration_extension_yaml` variables. +There are some additional things you may wish to configure about the bridge. + +Take a look at: + +- `roles/custom/matrix-bridge-hookshot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_hookshot_configuration_extension_yaml` and `matrix_hookshot_registration_extension_yaml` variables Refer the [official instructions](https://matrix-org.github.io/matrix-hookshot/latest/setup.html) and the comments in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml) to learn what the individual options do. @@ -91,9 +106,8 @@ Unless indicated otherwise, the following endpoints are reachable on your `matri | provisioning | `/hookshot/v1/` | `matrix_hookshot_provisioning_endpoint` | Dimension [provisioning](#provisioning-api) | | appservice | `/hookshot/_matrix/app/` | `matrix_hookshot_appservice_endpoint` | Matrix server | | widgets | `/hookshot/widgetapi/` | `matrix_hookshot_widgets_endpoint` | Widgets | -| metrics | `/metrics/hookshot` | `matrix_hookshot_metrics_enabled` and exposure enabled via `matrix_hookshot_metrics_proxying_enabled` or `matrix_metrics_exposure_enabled`. Read more in the [Metrics section](#metrics) below. | Prometheus | -Also see the various `matrix_hookshot_container_labels_*` variables in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml), which expose URLs publicly +Also see the various `matrix_hookshot_container_labels_*` variables in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml), which expose URLs publicly. The different listeners are also reachable *internally* in the docker-network via the container's name (configured by `matrix_hookshot_container_url`) and on different ports (e.g. `matrix_hookshot_appservice_port`). Read [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml) in detail for more info. @@ -120,21 +134,57 @@ For more information, see the documentation in the [default configuration of the ### Provisioning API -The provisioning API will be enabled automatically if you set `matrix_dimension_enabled: true` and provided a `matrix_hookshot_provisioning_secret`, unless you override it either way. To use hookshot with dimension, you will need to enter as "Provisioning URL": `http://matrix-hookshot:9002`, which is made up of the variables `matrix_hookshot_container_url` and `matrix_hookshot_provisioning_port`. +The provisioning API will be enabled automatically if you set `matrix_dimension_enabled: true` and provided a `matrix_hookshot_provisioning_secret`, unless you override it either way. To use hookshot with Dimension, you will need to enter as "Provisioning URL": `http://matrix-hookshot:9002`, which is made up of the variables `matrix_hookshot_container_url` and `matrix_hookshot_provisioning_port`. + +### Collision with matrix-appservice-webhooks + +If you are also running [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md), it reserves its namespace by the default setting `matrix_appservice_webhooks_user_prefix: '_webhook_'`. You should take care if you modify its or hookshot's prefix that they do not collide with each other's namespace (default `matrix_hookshot_generic_userIdPrefix: '_webhooks_'`). -### Metrics +### Enable metrics + +The playbook can enable and configure the metrics of the service for you. Metrics are **only enabled by default** if the builtin [Prometheus](configuring-playbook-prometheus-grafana.md) is enabled (by default, Prometheus isn't enabled). If so, metrics will automatically be collected by Prometheus and made available in Grafana. You will, however, need to set up your own Dashboard for displaying them. -To explicitly enable metrics, use `matrix_hookshot_metrics_enabled: true`. This only exposes metrics over the container network, however. +To enable the metrics, add the following configuration to your `vars.yml` file: -**To collect metrics from an external Prometheus server**, besides enabling metrics as described above, you will also need to enable metrics exposure on `https://matrix.example.com/metrics/hookshot` by: +```yaml +# Expose metrics (locally, on the container network). +matrix_hookshot_metrics_enabled: true +``` -- either enabling metrics exposure for Hookshot via `matrix_hookshot_metrics_proxying_enabled: true` -- or enabling metrics exposure for all services via `matrix_metrics_exposure_enabled: true` +**To collect metrics from an external Prometheus server**, besides enabling metrics as described above, you will also need to enable metrics exposure on `https://matrix.example.com/metrics/hookshot` by adding the following configuration to your `vars.yml` file: -Whichever one you go with, by default metrics are exposed publicly **without** password-protection. See [the Prometheus and Grafana docs](configuring-playbook-prometheus-grafana.md) for details about password-protection for metrics. +```yaml +matrix_hookshot_metrics_proxying_enabled: true +``` -### Collision with matrix-appservice-webhooks +By default metrics are exposed publicly **without** password-protection. To password-protect the metrics with dedicated credentials, add the following configuration to your `vars.yml` file: -If you are also running [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md), it reserves its namespace by the default setting `matrix_appservice_webhooks_user_prefix: '_webhook_'`. You should take care if you modify its or hookshot's prefix that they do not collide with each other's namespace (default `matrix_hookshot_generic_userIdPrefix: '_webhooks_'`). +```yaml +matrix_hookshot_container_labels_metrics_middleware_basic_auth_enabled: true +matrix_hookshot_container_labels_metrics_middleware_basic_auth_users: '' +``` + +To `matrix_hookshot_container_labels_metrics_middleware_basic_auth_users`, set the Basic Authentication credentials (raw `htpasswd` file content) used to protect the endpoint. See https://doc.traefik.io/traefik/middlewares/http/basicauth/#users for details about it. + +**Note**: alternatively, you can use `matrix_metrics_exposure_enabled` to expose all services on this `/metrics/*` feature, and you can use `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users` to password-protect the metrics of them. See [this section](configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server) for more information. + +#### Enable Grafana (optional) + +Probably you wish to enable Grafana along with Prometheus for generating graphs of the metics. + +To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions. + +## 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-hookshot`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: error, warn, info, debug +matrix_hookshot_logging_level: debug +``` diff --git a/docs/configuring-playbook-bridge-matrix-bridge-sms.md b/docs/configuring-playbook-bridge-matrix-bridge-sms.md index 7f58a74cd..f6c5482dc 100644 --- a/docs/configuring-playbook-bridge-matrix-bridge-sms.md +++ b/docs/configuring-playbook-bridge-matrix-bridge-sms.md @@ -1,3 +1,11 @@ + + # Setting up Matrix SMS bridging (optional) The playbook can install and configure [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) for you. @@ -30,26 +38,33 @@ matrix_sms_bridge_provider_android_password: supeSecretPassword # (optional) if your android-sms-gateway-server uses a self signed vertificate, the bridge needs a "truststore". This can be the certificate itself. matrix_sms_bridge_provider_android_truststore_local_path: android-sms-gateway-server.p12 matrix_sms_bridge_provider_android_truststore_password: 123 - ``` +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + +Take a look at: + +- `roles/custom/matrix-bridge-sms/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_sms_bridge_configuration_extension_yaml` variable + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 Read the [user guide](https://github.com/benkuly/matrix-sms-bridge/blob/master/README.md#user-guide) to see how this bridge works. + +## 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-sms-bridge`. diff --git a/docs/configuring-playbook-bridge-mautrix-bluesky.md b/docs/configuring-playbook-bridge-mautrix-bluesky.md new file mode 100644 index 000000000..3a9c07303 --- /dev/null +++ b/docs/configuring-playbook-bridge-mautrix-bluesky.md @@ -0,0 +1,74 @@ + + +# Setting up Mautrix Bluesky bridging (optional) + +Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) + +The playbook can install and configure [mautrix-bluesky](https://github.com/mautrix/bluesky) for you, which provides a bridge to [Bluesky](https://bsky.social/about). + +See the project's [documentation](https://github.com/mautrix/bluesky/blob/master/README.md) to learn what it does and why it might be useful to you. + +## Prerequisite (optional) + +### Enable Appservice Double Puppet + +If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook. + +See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-puppeting-optional) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about setting up Double Puppeting. + +## Adjusting the playbook configuration + +To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_mautrix_bluesky_enabled: true +``` + +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + + +See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc. + +## Installing + +After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: + + +```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. + +## Usage + +To use the bridge, you need to start a chat with `@blueskybot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). + +You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/bluesky/authentication.html). + +After logging in, the bridge will create portal rooms for recent chats. Portal rooms for other chats will be created as you receive messages. + +## 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-mautrix-bluesky`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: fatal, error, warn, info, debug, trace +matrix_mautrix_bluesky_logging_level: 'debug' +``` diff --git a/docs/configuring-playbook-bridge-mautrix-bridges.md b/docs/configuring-playbook-bridge-mautrix-bridges.md index 12f70a66e..7c2e15e80 100644 --- a/docs/configuring-playbook-bridge-mautrix-bridges.md +++ b/docs/configuring-playbook-bridge-mautrix-bridges.md @@ -1,3 +1,12 @@ + + # Setting up a Generic Mautrix Bridge (optional) The playbook can install and configure various [mautrix](https://github.com/mautrix) bridges (twitter, discord, signal, googlechat, etc.), as well as many other (non-mautrix) bridges. This is a common guide for configuring mautrix bridges. @@ -15,7 +24,7 @@ To enable the bridge, add the following configuration to your `inventory/host_va matrix_mautrix_SERVICENAME_enabled: true ``` -**Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively. **`matrix_mautrix_facebook_*` and `matrix_mautrix_instagram_*` variables belong to the deprecated components and do not control the new bridge** ([mautrix-meta](https://github.com/mautrix/meta)), which can be installed using [this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md). +**Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively. **`matrix_mautrix_facebook_*` and `matrix_mautrix_instagram_*` variables belong to the deprecated components and do not control the new bridge** ([mautrix-meta](https://github.com/mautrix/meta)), which can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md). There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_mautrix_telegram_api_id` and `matrix_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges. @@ -144,16 +153,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 diff --git a/docs/configuring-playbook-bridge-mautrix-discord.md b/docs/configuring-playbook-bridge-mautrix-discord.md index d5e6b4834..884b17afa 100644 --- a/docs/configuring-playbook-bridge-mautrix-discord.md +++ b/docs/configuring-playbook-bridge-mautrix-discord.md @@ -1,3 +1,15 @@ + + # Setting up Mautrix Discord bridging (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -45,16 +57,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 @@ -71,3 +79,16 @@ If you'd like to bridge guilds, send `guilds status` to see the list of guilds, After bridging, spaces will be created automatically, and rooms will be created if necessary when messages are received. You can also pass `--entire` to the bridge command to immediately create all rooms. If you want to manually bridge channels, invite the bot to the room you want to bridge, and run `!discord bridge CHANNEL_ID_HERE` to bridge the room. Make sure to replace `CHANNEL_ID_HERE` with the channel's ID. + +## 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-mautrix-discord`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: fatal, error, warn, info, debug, trace +matrix_mautrix_discord_logging_level: 'debug' +``` diff --git a/docs/configuring-playbook-bridge-mautrix-facebook.md b/docs/configuring-playbook-bridge-mautrix-facebook.md index 51a162caf..d79977a7c 100644 --- a/docs/configuring-playbook-bridge-mautrix-facebook.md +++ b/docs/configuring-playbook-bridge-mautrix-facebook.md @@ -1,8 +1,20 @@ + + # Setting up Mautrix Facebook bridging (optional, deprecated) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) -**Note**: This bridge has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, which can be installed using [this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md). Consider using that bridge instead of this one. +**Note**: This bridge has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, which can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md). Consider using that bridge instead of this one. The playbook can install and configure [mautrix-facebook](https://github.com/mautrix/facebook) for you. @@ -38,16 +50,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 @@ -59,6 +67,16 @@ If you run into trouble, check the [Troubleshooting](#troubleshooting) section b ## 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-mautrix-facebook`. + +### Increase logging verbosity + +The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_mautrix_facebook_logging_level: DEBUG +``` + ### Facebook rejecting login attempts and forcing you to change password If your Matrix server is in a wildly different location than where you usually use your Facebook account from, the bridge's login attempts may be outright rejected by Facebook. Along with that, Facebook may even force you to change the account's password. diff --git a/docs/configuring-playbook-bridge-mautrix-gmessages.md b/docs/configuring-playbook-bridge-mautrix-gmessages.md index eae32a1f7..98cf5a53c 100644 --- a/docs/configuring-playbook-bridge-mautrix-gmessages.md +++ b/docs/configuring-playbook-bridge-mautrix-gmessages.md @@ -1,3 +1,11 @@ + + # Setting up Mautrix Google Messages bridging (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -35,16 +43,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -53,3 +57,16 @@ To use the bridge, you need to start a chat with `@gmessagesbot:example.com` (wh You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/gmessages/authentication.html). After logging in, the bridge will create portal rooms for recent chats. + +## 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-mautrix-gmessages`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: fatal, error, warn, info, debug, trace +matrix_mautrix_gmessages_logging_level: 'debug' +``` diff --git a/docs/configuring-playbook-bridge-mautrix-googlechat.md b/docs/configuring-playbook-bridge-mautrix-googlechat.md index 4dbde4dd8..cc0f58e22 100644 --- a/docs/configuring-playbook-bridge-mautrix-googlechat.md +++ b/docs/configuring-playbook-bridge-mautrix-googlechat.md @@ -1,3 +1,12 @@ + + # Setting up Mautrix Google Chat bridging (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -37,16 +46,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -54,4 +59,16 @@ To use the bridge, you need to start a chat with `@googlechatbot:example.com` (w You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/googlechat/authentication.html). -After logging in, the bridge will create portal rooms for some recent chats. Portal rooms for other chats will be created as you receive messages. +After logging in, the bridge will create portal rooms for recent chats. Portal rooms for other chats will be created as you receive messages. + +## 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-mautrix-googlechat`. + +### Increase logging verbosity + +The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_mautrix_googlechat_logging_level: DEBUG +``` diff --git a/docs/configuring-playbook-bridge-mautrix-hangouts.md b/docs/configuring-playbook-bridge-mautrix-hangouts.md index 307605be4..ce655cf58 100644 --- a/docs/configuring-playbook-bridge-mautrix-hangouts.md +++ b/docs/configuring-playbook-bridge-mautrix-hangouts.md @@ -1,58 +1,27 @@ -# Setting up Mautrix Hangouts bridging (optional, deprecated) + -💡 **Note**: This bridge has been deprecated in favor of [Google Chat bridge](https://github.com/mautrix/googlechat), which can be installed using [this playbook](configuring-playbook-bridge-mautrix-googlechat.md). Installing the mautrix-hangouts bridge is **no longer possible**. For now, this documentation page remains here for historical purposes. +# Setting up Mautrix Hangouts bridging (optional, removed) -The playbook can install and configure [mautrix-hangouts](https://github.com/mautrix/hangouts) for you. +🪦 The playbook used to be able to install and configure [mautrix-hangouts](https://github.com/mautrix/hangouts), but no longer includes this component, because Google Hangouts has been discontinued since the 1st of November 2022. -## Prerequisite (optional) +You may wish to use the [Google Chat bridge](https://github.com/mautrix/googlechat) instead. -### Enable Shared Secret Auth +## Uninstalling the bridge manually -If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook. +If you still have the Hangouts bridge 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: -See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-puppeting-optional) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about setting up Double Puppeting. - -**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future. - -## Adjusting the playbook configuration - -To enable the [Google Hangouts](https://hangouts.google.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: - -```yaml -matrix_mautrix_hangouts_enabled: true -``` - -### Extending the configuration - -There are some additional things you may wish to configure about the bridge. - -See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [relay mode](configuring-playbook-bridge-mautrix-bridges.md#enable-relay-mode-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc. - -## Installing - -After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: - - ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start -``` - -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +systemctl disable --now matrix-mautrix-hangouts.service - `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. +rm -rf /matrix/mautrix-hangouts -## Usage - -To use the bridge, you need to start a chat with `@hangoutsbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). - -You then need to send `login` to the bridge bot to receive a link to the portal from which you can enable the bridging. Open the link sent by the bot and follow the instructions. - -Automatic login may not work. If it does not, reload the page and select the "Manual login" checkbox before starting. Manual login involves logging into your Google account normally and then manually getting the OAuth token from browser cookies with developer tools. - -Once logged in, recent chats should show up as new conversations automatically. Other chats will get portals as you receive messages. +/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mautrix_hangouts;' +``` diff --git a/docs/configuring-playbook-bridge-mautrix-instagram.md b/docs/configuring-playbook-bridge-mautrix-instagram.md index 99988df41..c5fdd50fe 100644 --- a/docs/configuring-playbook-bridge-mautrix-instagram.md +++ b/docs/configuring-playbook-bridge-mautrix-instagram.md @@ -1,8 +1,17 @@ + + # Setting up Mautrix Instagram bridging (optional, deprecated) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) -**Note**: This bridge has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, which can be installed using [this playbook](configuring-playbook-bridge-mautrix-meta-instagram.md). Consider using that bridge instead of this one. +**Note**: This bridge has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, which can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-instagram.md). Consider using that bridge instead of this one. The playbook can install and configure [mautrix-instagram](https://github.com/mautrix/instagram) for you. @@ -28,19 +37,27 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 To use the bridge, you need to start a chat with `@instagrambot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). You then need to send `login YOUR_INSTAGRAM_EMAIL_ADDRESS YOUR_INSTAGRAM_PASSWORD` to the bridge bot to enable bridging for your instagram/Messenger account. + +## 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-mautrix-instagram`. + +### Increase logging verbosity + +The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_mautrix_instagram_logging_level: DEBUG +``` diff --git a/docs/configuring-playbook-bridge-mautrix-meta-instagram.md b/docs/configuring-playbook-bridge-mautrix-meta-instagram.md index d89c1d50c..a9a77fa44 100644 --- a/docs/configuring-playbook-bridge-mautrix-meta-instagram.md +++ b/docs/configuring-playbook-bridge-mautrix-meta-instagram.md @@ -1,3 +1,10 @@ + + # Setting up Instagram bridging via Mautrix Meta (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -51,16 +58,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -69,3 +72,16 @@ To use the bridge, you need to start a chat with `@instagrambot:example.com` (wh You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/meta/authentication.html). After logging in, the bridge will sync recent chats. + +## 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-mautrix-meta-instagram`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# This bridge uses zerolog, so valid levels are: panic, fatal, error, warn, info, debug, trace +matrix_mautrix_meta_instagram_logging_min_level: debug +``` diff --git a/docs/configuring-playbook-bridge-mautrix-meta-messenger.md b/docs/configuring-playbook-bridge-mautrix-meta-messenger.md index de3421147..9c0064cd1 100644 --- a/docs/configuring-playbook-bridge-mautrix-meta-messenger.md +++ b/docs/configuring-playbook-bridge-mautrix-meta-messenger.md @@ -1,3 +1,11 @@ + + # Setting up Messenger bridging via Mautrix Meta (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -45,8 +53,8 @@ As mentioned above, the [mautrix-meta](https://github.com/mautrix/meta) bridge s The bridge can pull your Messenger messages via 3 different methods: - (`facebook`) Facebook via `facebook.com` -- (`facebook-tor`) Facebook via `facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion` ([Tor](https://www.torproject.org/)) - does not currently proxy media downloads -- (default) (`messenger`) Messenger via `messenger.com` - usable even without a Facebook account +- (`facebook-tor`) Facebook via `facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion` ([Tor](https://www.torproject.org/)) — does not currently proxy media downloads +- (default) (`messenger`) Messenger via `messenger.com` — usable even without a Facebook account You may switch the mode via the `matrix_mautrix_meta_messenger_meta_mode` variable. The playbook defaults to the `messenger` mode, because it's most universal (every Facebook user has a Messenger account, but the opposite is not true). @@ -64,16 +72,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -84,3 +88,16 @@ You can then follow instructions on the bridge's [official documentation on Auth After logging in, the bridge will sync recent chats. **Note**: given that the bot is configured in `messenger` [bridge mode](#bridge-mode) by default, you will need to log in to [messenger.com](https://messenger.com/) (not `facebook.com`!) and obtain the cookies from there. + +## 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-mautrix-meta-messenger`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# This bridge uses zerolog, so valid levels are: panic, fatal, error, warn, info, debug, trace +matrix_mautrix_meta_messenger_logging_min_level: debug +``` diff --git a/docs/configuring-playbook-bridge-mautrix-signal.md b/docs/configuring-playbook-bridge-mautrix-signal.md index f0f1ccf74..1fb0e2c6d 100644 --- a/docs/configuring-playbook-bridge-mautrix-signal.md +++ b/docs/configuring-playbook-bridge-mautrix-signal.md @@ -1,3 +1,19 @@ + + # Setting up Mautrix Signal bridging (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -40,16 +56,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 @@ -60,3 +72,16 @@ You can then follow instructions on the bridge's [official documentation on Auth After logging in, the bridge will bridge chats as you receive messages. **Note**: Signal does not support any kind of message history (even on official apps), so the bridge won't backfill any messages. + +## 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-mautrix-signal`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: fatal, error, warn, info, debug, trace +matrix_mautrix_signal_logging_level: 'debug' +``` diff --git a/docs/configuring-playbook-bridge-mautrix-slack.md b/docs/configuring-playbook-bridge-mautrix-slack.md index b113f52f0..6969510e7 100644 --- a/docs/configuring-playbook-bridge-mautrix-slack.md +++ b/docs/configuring-playbook-bridge-mautrix-slack.md @@ -1,3 +1,12 @@ + + # Setting up Mautrix Slack bridging (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -45,16 +54,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -63,3 +68,16 @@ To use the bridge, you need to start a chat with `@slackbot:example.com` (where You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/slack/authentication.html). If you authenticated using a token, the recent chats will be bridged automatically (depending on the `conversation_count` setting). Otherwise (i.e. logging with the Discord application), the chats the bot is in will be bridged automatically. + +## 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-mautrix-slack`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: fatal, error, warn, info, debug, trace +matrix_mautrix_slack_logging_level: 'debug' +``` diff --git a/docs/configuring-playbook-bridge-mautrix-telegram.md b/docs/configuring-playbook-bridge-mautrix-telegram.md index f3deabc77..5f089d3a4 100644 --- a/docs/configuring-playbook-bridge-mautrix-telegram.md +++ b/docs/configuring-playbook-bridge-mautrix-telegram.md @@ -1,3 +1,16 @@ + + # Setting up Mautrix Telegram bridging (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -75,16 +88,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -93,3 +102,15 @@ To use the bridge, you need to start a chat with `@telegrambot:example.com` (whe You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/telegram/authentication.html). After logging in, the bridge will create portal rooms for all of your Telegram groups and invite you to them. Note that the bridge won't automatically create rooms for private chats. + +## 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-mautrix-telegram`. + +### Increase logging verbosity + +The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_mautrix_telegram_logging_level: DEBUG +``` diff --git a/docs/configuring-playbook-bridge-mautrix-twitter.md b/docs/configuring-playbook-bridge-mautrix-twitter.md index bb25019fe..0698135df 100644 --- a/docs/configuring-playbook-bridge-mautrix-twitter.md +++ b/docs/configuring-playbook-bridge-mautrix-twitter.md @@ -1,3 +1,12 @@ + + # Setting up Mautrix Twitter bridging (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -37,16 +46,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 @@ -54,4 +59,17 @@ To use the bridge, you need to start a chat with `@twitterbot:example.com` (wher You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/twitter/authentication.html). -After logging in, the bridge will create portal rooms for some recent chats. Portal rooms for other chats will be created as you receive messages. +After logging in, the bridge will create portal rooms for recent chats. Portal rooms for other chats will be created as you receive messages. + +## 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-mautrix-twitter`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: fatal, error, warn, info, debug, trace +matrix_mautrix_twitter_logging_level: 'debug' +``` diff --git a/docs/configuring-playbook-bridge-mautrix-whatsapp.md b/docs/configuring-playbook-bridge-mautrix-whatsapp.md index 8201be513..6e42c1d96 100644 --- a/docs/configuring-playbook-bridge-mautrix-whatsapp.md +++ b/docs/configuring-playbook-bridge-mautrix-whatsapp.md @@ -1,3 +1,16 @@ + + # Setting up Mautrix Whatsapp bridging (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -36,16 +49,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 @@ -56,3 +65,16 @@ You can then follow instructions on the bridge's [official documentation on Auth Approximately in a minute after logging in, the bridge will create portal rooms for recent chats. **Note**: your linked devices will be logged out if you don’t use your phone for over 14 days (see the official FAQ entry [here](https://faq.whatsapp.com/general/download-and-installation/about-linked-devices)). The bridge will warn you if it doesn't receive any data from the phone over 12 days. + +## 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-mautrix-whatsapp`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: fatal, error, warn, info, debug, trace +matrix_mautrix_whatsapp_logging_level: 'debug' +``` diff --git a/docs/configuring-playbook-bridge-mautrix-wsproxy.md b/docs/configuring-playbook-bridge-mautrix-wsproxy.md index bdc1f3bb2..a9159f2d2 100644 --- a/docs/configuring-playbook-bridge-mautrix-wsproxy.md +++ b/docs/configuring-playbook-bridge-mautrix-wsproxy.md @@ -1,3 +1,11 @@ + + # Setting up Mautrix wsproxy for bridging Android SMS or Apple iMessage (optional) Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) @@ -28,12 +36,6 @@ matrix_mautrix_wsproxy_syncproxy_shared_secret: 'secret token from bridge' Note that the tokens must match what is compiled into the [mautrix-imessage](https://github.com/mautrix/imessage) bridge running on your Mac or Android device. -### Extending the configuration - -There are some additional things you may wish to configure about the bridge. - -See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [relay mode](configuring-playbook-bridge-mautrix-bridges.md#enable-relay-mode-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc. - ### Adjusting the wsproxy URL (optional) By tweaking the `matrix_mautrix_wsproxy_hostname` variable, you can easily make the service available at a **different hostname** than the default one. @@ -47,23 +49,29 @@ matrix_mautrix_wsproxy_hostname: ws.example.com After changing the domain, **you may need to adjust your DNS** records to point the wsproxy domain to the Matrix server. +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + +See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [relay mode](configuring-playbook-bridge-mautrix-bridges.md#enable-relay-mode-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc. + ## 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: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +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` -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- 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. +`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 Follow the [mautrix-imessage documenation](https://docs.mau.fi/bridges/go/imessage/index.html) for running `android-sms` and/or `matrix-imessage` on your device(s). + +## 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-mautrix-wsproxy`. diff --git a/docs/configuring-playbook-bridge-mx-puppet-discord.md b/docs/configuring-playbook-bridge-mx-puppet-discord.md index cbc61c068..0e0957aed 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-discord.md +++ b/docs/configuring-playbook-bridge-mx-puppet-discord.md @@ -1,6 +1,15 @@ + + # Setting up MX Puppet Discord bridging (optional) -**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md)and [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridges supported by the playbook. +**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md)and [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridges supported by the playbook. - For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing. - For personal use with a discord account we recommend the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge, because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook. @@ -22,16 +31,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 diff --git a/docs/configuring-playbook-bridge-mx-puppet-groupme.md b/docs/configuring-playbook-bridge-mx-puppet-groupme.md index 6a7f8bb97..50b0f4437 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-groupme.md +++ b/docs/configuring-playbook-bridge-mx-puppet-groupme.md @@ -1,3 +1,12 @@ + + # Setting up MX Puppet GroupMe bridging (optional) The playbook can install and configure [mx-puppet-groupme](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme) for you. @@ -18,16 +27,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 diff --git a/docs/configuring-playbook-bridge-mx-puppet-instagram.md b/docs/configuring-playbook-bridge-mx-puppet-instagram.md index 53375a029..ede7e4600 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-instagram.md +++ b/docs/configuring-playbook-bridge-mx-puppet-instagram.md @@ -1,3 +1,10 @@ + + # Setting up MX Puppet Instagram bridging (optional) The playbook can install and configure [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) for you. @@ -18,16 +25,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 diff --git a/docs/configuring-playbook-bridge-mx-puppet-skype.md b/docs/configuring-playbook-bridge-mx-puppet-skype.md index bc9d6d534..ffca067d6 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-skype.md +++ b/docs/configuring-playbook-bridge-mx-puppet-skype.md @@ -1,5 +1,13 @@ + + # Setting up MX Puppet Skype bridging (optional, removed) -The playbook used to be able to install and configure [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype), but no longer includes this component, because it has been broken and unmaintained for a long time. +🪦 The playbook used to be able to install and configure [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype), but no longer includes this component, because it has been broken and unmaintained for a long time. Bridging to [Skype](https://www.skype.com/) can also happen via the [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) bridge supported by the playbook. diff --git a/docs/configuring-playbook-bridge-mx-puppet-slack.md b/docs/configuring-playbook-bridge-mx-puppet-slack.md index b8e8971b6..60a7d3467 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-slack.md +++ b/docs/configuring-playbook-bridge-mx-puppet-slack.md @@ -1,3 +1,14 @@ + + # Setting up MX Puppet Slack bridging (optional) **Note**: bridging to [Slack](https://slack.com) can also happen via the [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) and [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridges supported by the playbook. Note that `matrix-appservice-slack` is not available for new installation unless you have already created a classic Slack application, because the creation of classic Slack applications, which this bridge makes use of, has been discontinued. @@ -27,16 +38,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 diff --git a/docs/configuring-playbook-bridge-mx-puppet-steam.md b/docs/configuring-playbook-bridge-mx-puppet-steam.md index 18ea7ad22..442bf56c7 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-steam.md +++ b/docs/configuring-playbook-bridge-mx-puppet-steam.md @@ -1,3 +1,12 @@ + + # Setting up MX Puppet Steam bridging (optional) The playbook can install and configure [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) for you. @@ -18,16 +27,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 diff --git a/docs/configuring-playbook-bridge-mx-puppet-twitter.md b/docs/configuring-playbook-bridge-mx-puppet-twitter.md index be0df2305..b2ecb54c8 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-twitter.md +++ b/docs/configuring-playbook-bridge-mx-puppet-twitter.md @@ -1,3 +1,11 @@ + + # Setting up MX Puppet Twitter bridging (optional) **Note**: bridging to [Twitter](https://twitter.com/) can also happen via the [mautrix-twitter](configuring-playbook-bridge-mautrix-twitter.md) bridge supported by the playbook. @@ -29,16 +37,12 @@ After configuring the playbook, run it with [playbook tags](playbook-tags.md) as ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +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. +`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 diff --git a/docs/configuring-playbook-bridge-postmoogle.md b/docs/configuring-playbook-bridge-postmoogle.md index af52e6acc..6a21043a7 100644 --- a/docs/configuring-playbook-bridge-postmoogle.md +++ b/docs/configuring-playbook-bridge-postmoogle.md @@ -1,6 +1,13 @@ -# Setting up Postmoogle email bridging (optional) + -**Note**: email bridging can also happen via the [email2matrix](configuring-playbook-email2matrix.md) bridge supported by the playbook. +# Setting up Postmoogle email bridging (optional) The playbook can install and configure [Postmoogle](https://github.com/etkecc/postmoogle) for you. @@ -55,6 +62,14 @@ matrix_postmoogle_password: PASSWORD_FOR_THE_BOT # matrix_admin: '@yourAdminAccount:{{ matrix_domain }}' ``` +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + +Take a look at: + +- `roles/custom/matrix-bridge-postmoogle/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: @@ -84,11 +99,13 @@ Send `!pm help` to the bot in the room to see the available commands. You can also refer to the upstream [documentation](https://github.com/etkecc/postmoogle). -### Debug/Logs +## 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-postmoogle`. -As with all other services, you can find their logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by running something like `journalctl -fu matrix-postmoogle` +### Increase logging verbosity -The default logging level for this bridge is `INFO`, but you can increase it to `DEBUG` with the following additional configuration: +The default logging level for this component is `INFO`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: ```yaml matrix_postmoogle_loglevel: 'DEBUG' diff --git a/docs/configuring-playbook-bridge-wechat.md b/docs/configuring-playbook-bridge-wechat.md index 0016cbdd9..2c7590b40 100644 --- a/docs/configuring-playbook-bridge-wechat.md +++ b/docs/configuring-playbook-bridge-wechat.md @@ -1,9 +1,19 @@ + + # Setting up WeChat bridging (optional) The playbook can install and configure [matrix-wechat](https://github.com/duo/matrix-wechat) for you, for bridging to [WeChat](https://www.wechat.com/). See the project's [documentation](https://github.com/duo/matrix-wechat/blob/master/README.md) to learn what it does and why it might be useful to you. +> [!WARNING] +> This bridge does not work against newer versions of Synapse anymore. See [this issue](https://github.com/duo/matrix-wechat/issues/33). Don't even bother installing it. Unless bridge maintenance is resumed and fixes this issue, we have no choice but to remove it from the playbook. + ## Adjusting the playbook configuration To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: @@ -12,19 +22,26 @@ To enable the bridge, add the following configuration to your `inventory/host_va matrix_wechat_enabled: true ``` +### Extending the configuration + +There are some additional things you may wish to configure about the bridge. + +Take a look at: + +- `roles/custom/matrix-bridge-wechat/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-bridge-wechat/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_wechat_configuration_extension_yaml` variable + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` **Notes**: -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. - - 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. @@ -34,3 +51,16 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-use To use the bridge, you need to start a chat with `@wechatbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). Send `help` to the bot to see the available commands. + +## 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-wechat`. + +### Increase logging verbosity + +The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: fatal, error, warn, info, debug +matrix_wechat_log_level: 'debug' +``` diff --git a/docs/configuring-playbook-cactus-comments.md b/docs/configuring-playbook-cactus-comments.md index ee5213be9..8df93633c 100644 --- a/docs/configuring-playbook-cactus-comments.md +++ b/docs/configuring-playbook-cactus-comments.md @@ -1,3 +1,12 @@ + + # Setting up Cactus Comments (optional) The playbook can install and configure the [Cactus Comments](https://cactus.chat) system for you. @@ -8,9 +17,9 @@ See the project's [documentation](https://cactus.chat/docs/getting-started/intro The playbook contains 2 roles for configuring different pieces of the Cactus Comments system: -- `matrix-cactus-comments` - the backend appservice integrating with the Matrix homeserver +- `matrix-cactus-comments` — the backend appservice integrating with the Matrix homeserver -- `matrix-cactus-comments-client` - a static website server serving the [cactus-client](https://cactus.chat/docs/client/introduction/) static assets (`cactus.js` and `styles.css`) +- `matrix-cactus-comments-client` — a static website server serving the [cactus-client](https://cactus.chat/docs/client/introduction/) static assets (`cactus.js` and `styles.css`) You can enable whichever component you need (typically both). @@ -25,23 +34,21 @@ If you wish to adjust it, see the section [below](#adjusting-the-cactus-comments To enable Cactus Comments, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml -################# -## Cactus Comments ## -################# - # This enables the backend (appservice) matrix_cactus_comments_enabled: true +# This enables client assets static files serving on `https://matrix.example.com/cactus-comments`. +# When the backend (appservice) is enabled, this is also enabled automatically, but we explicitly enable it here. +matrix_cactus_comments_client_enabled: true + +# Uncomment and adjust this part if you'd like to use a username different than the default +# matrix_cactus_comments_user_id: "bot.cactusbot" + # To allow guest comments without users needing to log in, you need to have guest registration enabled. # To do this you need to uncomment one of the following lines (depending if you are using Synapse or Dendrite as a homeserver) # If you don't know which one you use: The default is Synapse ;) # matrix_synapse_allow_guest_access: true # matrix_dendrite_allow_guest_access: true - -# This enables client assets static files serving on `https://matrix.example.com/cactus-comments`. -# When the backend (appservice) is enabled, this is also enabled automatically, -# but we explicitly enable it here. -matrix_cactus_comments_client_enabled: true ``` ### Adjusting the Cactus Comments' client URL (optional) @@ -61,30 +68,36 @@ If you've changed the default hostname, you may need to create a CNAME record fo When setting, replace `example.com` with your own. +### Extending the configuration + +There are some additional things you may wish to configure about the components. + +For `matrix-cactus-comments`, take a look at: + +- `roles/custom/matrix-cactus-comments/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + +For `matrix-cactus-comments-client`, take a look at: + +- `roles/custom/matrix-cactus-comments-client/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## 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: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. +`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 -Upon starting Cactus Comments, a `bot.cactusbot` user account is created automatically. - -To get started, send `help` to the `@bot.cactusbot:example.com` bot to confirm it's working. +To use the component, you need to start a chat with `@bot.cactusbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). -Then, register a site by sending `register ` (where `` is a unique identifier you choose. It does not have to match your domain). You will then be invited into a moderation room. +Then, register a site by sending `register YOUR_SITE_NAME_HERE` (where `YOUR_SITE_NAME_HERE` is a unique identifier you choose. It does not have to match your domain). You will then be invited into a moderation room. Now you are good to go and can embed the comment section on your website! @@ -98,7 +111,7 @@ After including the JavaScript and CSS asset files, insert a `

` where you'd
```` -Then, you need to initialize the comment section. Make sure to replace `example.com` with your base domain and `` with the one that has been registered above: +Then, you need to initialize the comment section. Make sure to replace `example.com` with your base domain and `YOUR_SITE_NAME_HERE` with the one that has been registered above: ```html @@ -124,3 +137,18 @@ Make sure to replace `example.com` with your base domain before you include the ``` **Note**: if the `matrix_cactus_comments_client_hostname` and `matrix_cactus_comments_client_path_prefix` variables are tweaked, you would need to adjust the URLs of the assets accordingly. + +## 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-cactus-comments` for the backend appservice or `journalctl -fu matrix-cactus-comments-client` for the server serving the client assets, respectively. + +### Increase logging verbosity + +It is possible to increase logging verbosity for `matrix-cactus-comments-client`. The default logging level for this component is `error`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Controls the SERVER_LOG_LEVEL environment variable. +# See: https://static-web-server.net/configuration/environment-variables/ +# Valid values: error, warn, info, debug, trace +matrix_cactus_comments_client_environment_variable_server_log_level: debug +``` diff --git a/docs/configuring-playbook-client-cinny.md b/docs/configuring-playbook-client-cinny.md index 4e9decb4f..1cc2e88c7 100644 --- a/docs/configuring-playbook-client-cinny.md +++ b/docs/configuring-playbook-client-cinny.md @@ -1,3 +1,11 @@ + + # Setting up Cinny (optional) The playbook can install and configure the [Cinny](https://github.com/ajbura/cinny) Matrix web client for you. @@ -40,6 +48,15 @@ After changing the domain, **you may need to adjust your DNS** records to point **Note**: while there is a `matrix_client_cinny_path_prefix` variable for changing the path where Cinny is served, overriding it is [not possible](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3701), because Cinny requires an application rebuild (with a tweaked build config) to be functional under a custom path. You'd need to serve Cinny 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-client-cinny/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-client-cinny/templates/config.json.j2` for the component's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_client_cinny_configuration_extension_json` variable + ## Installing After configuring the playbook and [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below: @@ -52,3 +69,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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. + +## 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-client-cinny`. diff --git a/docs/configuring-playbook-client-element-web.md b/docs/configuring-playbook-client-element-web.md index 4d832752c..2f2420965 100644 --- a/docs/configuring-playbook-client-element-web.md +++ b/docs/configuring-playbook-client-element-web.md @@ -1,3 +1,13 @@ + + # Configuring Element Web (optional) By default, this playbook installs the [Element Web](https://github.com/element-hq/element-web) Matrix client for you. If that's okay, you can skip this document. @@ -17,13 +27,30 @@ When setting, replace `example.com` with your own. ## Adjusting the playbook configuration +### Set the country code for phone number inputs + +You can change the country code (default: `GB`) to use when showing phone number inputs. To change it to `FR` for example, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_client_element_default_country_code: "FR" +``` + ### Themes -You can change the look of Element Web by pulling themes provided by the [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes) project or defining your own themes manually. +#### Change the default theme + +You can change the default theme from `light` to `dark`. To do so, add the following configuration to your `vars.yml` file: + +```yaml +# Controls the default theme +matrix_client_element_default_theme: 'dark' +``` #### Use themes by `element-themes` -To pull the themes from the `element-themes` project and use them for your Element Web instance, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +You can change the look of Element Web by pulling themes provided by the [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes) project or defining your own themes manually. + +To pull the themes and use them for your Element Web instance, add the following configuration to your `vars.yml` file: ```yaml matrix_client_element_themes_enabled: true @@ -112,3 +139,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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. + +## 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-client-element`. diff --git a/docs/configuring-playbook-client-fluffychat-web.md b/docs/configuring-playbook-client-fluffychat-web.md new file mode 100644 index 000000000..a438c585d --- /dev/null +++ b/docs/configuring-playbook-client-fluffychat-web.md @@ -0,0 +1,66 @@ + + +# Setting up FluffyChat Web (optional) + +The playbook can install and configure the [FluffyChat Web](https://github.com/krille-chan/fluffychat) Matrix client for you. + +FluffyChat Web is a cute cross-platform (web, iOS, Android) messenger for Matrix written in [Flutter](https://flutter.dev/). + +💡 **Note**: the latest version of FluffyChat Web is also available on the web, hosted by 3rd parties. If you trust giving your credentials to the following 3rd party Single Page Application, you can consider using it from there: + +- [fluffychat.im](https://fluffychat.im/web), hosted by the [FluffyChat](https://fluffychat.im/) developers + +## Adjusting DNS records + +By default, this playbook installs FluffyChat Web on the `fluffychat.` subdomain (`fluffychat.example.com`) and requires you to create a CNAME record for `fluffychat`, which targets `matrix.example.com`. + +When setting, replace `example.com` with your own. + +## Adjusting the playbook configuration + +To enable FluffyChat Web, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_client_fluffychat_enabled: true +``` + +### Adjusting the FluffyChat Web URL (optional) + +By tweaking the `matrix_client_fluffychat_hostname` and `matrix_client_fluffychat_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 FluffyChat Web. +matrix_client_fluffychat_hostname: "{{ matrix_server_fqn_matrix }}" + +# Expose under the /fluffychat subpath +matrix_client_fluffychat_path_prefix: /fluffychat +``` + +After changing the domain, **you may need to adjust your DNS** records to point the FluffyChat Web domain to the Matrix server. + +If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration. + +## 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: + + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start +``` + +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. + +## 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-client-fluffychat`. diff --git a/docs/configuring-playbook-client-hydrogen.md b/docs/configuring-playbook-client-hydrogen.md index db44e6a62..0f7c8bb85 100644 --- a/docs/configuring-playbook-client-hydrogen.md +++ b/docs/configuring-playbook-client-hydrogen.md @@ -1,3 +1,12 @@ + + # Setting up Hydrogen (optional) The playbook can install and configure the [Hydrogen](https://github.com/element-hq/hydrogen-web) Matrix web client for you. @@ -37,6 +46,15 @@ After changing the domain, **you may need to adjust your DNS** records to point If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration. +### Extending the configuration + +There are some additional things you may wish to configure about the client. + +Take a look at: + +- `roles/custom/matrix-client-hydrogen/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-client-hydrogen/templates/config.json.j2` for the client's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_client_hydrogen_configuration_extension_json` variable + ## 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: @@ -49,3 +67,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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. + +## 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-client-hydrogen`. diff --git a/docs/configuring-playbook-client-schildichat-web.md b/docs/configuring-playbook-client-schildichat-web.md index e9781255a..e26a6837f 100644 --- a/docs/configuring-playbook-client-schildichat-web.md +++ b/docs/configuring-playbook-client-schildichat-web.md @@ -1,3 +1,11 @@ + + # Setting up SchildiChat Web (optional) The playbook can install and configure the [SchildiChat Web](https://github.com/SchildiChat/schildichat-desktop) Matrix client for you. @@ -22,13 +30,30 @@ To enable SchildiChat Web, add the following configuration to your `inventory/ho matrix_client_schildichat_enabled: true ``` +### Set the country code for phone number inputs + +You can change the country code (default: `GB`) to use when showing phone number inputs. To change it to `FR` for example, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_client_schildichat_default_country_code: "FR" +``` + ### Themes -You can change the look of SchildiChat Web by pulling themes provided by the [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes) project or defining your own themes manually. +#### Change the default theme + +You can change the default theme from `light` to `dark`. To do so, add the following configuration to your `vars.yml` file: + +```yaml +# Controls the default theme +matrix_client_schildichat_default_theme: 'dark' +``` #### Use themes by `element-themes` -To pull the themes from the `element-themes` project and use them for your SchildiChat Web instance, add the following configuration to your `vars.yml` file: +You can change the look of SchildiChat Web by pulling themes provided by the [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes) project or defining your own themes manually. + +To pull the themes and use them for your SchildiChat Web instance, add the following configuration to your `vars.yml` file: ```yaml matrix_client_schildichat_themes_enabled: true @@ -109,3 +134,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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. + +## 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-client-schildichat`. diff --git a/docs/configuring-playbook-conduit.md b/docs/configuring-playbook-conduit.md index 81ac48ee5..76a3c9666 100644 --- a/docs/configuring-playbook-conduit.md +++ b/docs/configuring-playbook-conduit.md @@ -1,3 +1,10 @@ + + # Configuring Conduit (optional) The playbook can install and configure the [Conduit](https://conduit.rs) Matrix server for you. @@ -6,13 +13,11 @@ See the project's [documentation](https://docs.conduit.rs/) to learn what it doe By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document. -💡 **Note**: The playbook also supports installing a (currently) faster-moving Conduit fork called [Conduwuit](./configuring-playbook-conduwuit.md). - -⚠️ **Warnings**: +💡 **Note**: The playbook also supports installing a (currently) faster-moving Conduit fork called [conduwuit](./configuring-playbook-conduwuit.md). -- **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Conduit). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet. - -- **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding +> [!WARNING] +> - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Conduit). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet. +> - **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding ## Adjusting the playbook configuration @@ -42,7 +47,7 @@ matrix_conduit_template_conduit_config: "{{ playbook_dir }}/inventory/host_vars/ Since it is difficult to create the first user account on Conduit (see [famedly/conduit#276](https://gitlab.com/famedly/conduit/-/issues/276) and [famedly/conduit#354](https://gitlab.com/famedly/conduit/-/merge_requests/354)) and it does not support [registering users](registering-users.md) (via the command line or via the playbook) like Synapse and Dendrite do, we recommend the following procedure: 1. Add `matrix_conduit_allow_registration: true` to your `vars.yml` the first time around, temporarily -2. Run the playbook (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start` - see [Installing](installing.md)) +2. Run the playbook (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start` — see [Installing](installing.md)) 3. Create your first user via Element Web or any other client which supports creating users 4. Get rid of `matrix_conduit_allow_registration: true` from your `vars.yml` 5. Run the playbook again (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-conduit,start` would be enough this time) @@ -75,3 +80,7 @@ Find the `registration.yaml` in the `/matrix` directory, for example `/matrix/ma sender_localpart: _bot_signalbot url: http://matrix-mautrix-signal:29328 ``` + +## 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-conduit`. diff --git a/docs/configuring-playbook-conduwuit.md b/docs/configuring-playbook-conduwuit.md index 512f4530b..f31d57ab4 100644 --- a/docs/configuring-playbook-conduwuit.md +++ b/docs/configuring-playbook-conduwuit.md @@ -1,22 +1,27 @@ -# Configuring Conduwuit (optional) + -See the project's [documentation](https://conduwuit.puppyirl.gay/) to learn what it does and why it might be useful to you. +# Configuring conduwuit (optional) -By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document. +The playbook can install and configure the [conduwuit](https://conduwuit.puppyirl.gay/) Matrix server for you. -💡 **Note**: Conduwuit is a fork of [Conduit](./configuring-playbook-conduit.md), which the playbook also supports. See [Differences from upstream Conduit](https://conduwuit.puppyirl.gay/differences.html). +See the project's [documentation](https://conduwuit.puppyirl.gay/) to learn what it does and why it might be useful to you. -⚠️ **Warnings**: +By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document. -- **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Conduwuit). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet. +💡 **Note**: conduwuit is a fork of [Conduit](./configuring-playbook-conduit.md), which the playbook also supports. See [Differences from upstream Conduit](https://conduwuit.puppyirl.gay/differences.html). -- **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding +> [!WARNING] +> - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> conduwuit). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet. +> - **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding ## Adjusting the playbook configuration -To use Conduwuit, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below: +To use conduwuit, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below: ```yaml matrix_homeserver_implementation: conduwuit @@ -51,7 +56,7 @@ matrix_conduwuit_environment_variables_extension: | ## Creating the first user account -Unlike other homeserver implementations (like Synapse and Dendrite), Conduwuit does not support creating users via the command line or via the playbook. +Unlike other homeserver implementations (like Synapse and Dendrite), conduwuit does not support creating users via the command line or via the playbook. If you followed the instructions above (see [Adjusting the playbook configuration](#adjusting-the-playbook-configuration)), you should have registration enabled and protected by a registration token. @@ -64,9 +69,9 @@ The **first user account that you create will be marked as an admin** and **will For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver. -For Conduwuit, you will have to manually register appservices using the [`!admin appservices register` command](https://conduwuit.puppyirl.gay/appservices.html#set-up-the-appservice---general-instructions) sent to the server bot account. +For conduwuit, you will have to manually register appservices using the [`!admin appservices register` command](https://conduwuit.puppyirl.gay/appservices.html#set-up-the-appservice---general-instructions) sent to the server bot account. -The server's bot account has a Matrix ID of `@conduit:example.com` (not `@conduwuit:example.com`!) due to Conduwuit's historical legacy. +The server's bot account has a Matrix ID of `@conduit:example.com` (not `@conduwuit:example.com`!) due to conduwuit's historical legacy. Your first user account would already have been invited to an admin room with this bot. Find the appservice file you'd like to register. This can be any `registration.yaml` file found in the `/matrix` directory, for example `/matrix/mautrix-signal/bridge/registration.yaml`. @@ -93,3 +98,7 @@ Then, send its content to the existing admin room: sender_localpart: _bot_signalbot url: http://matrix-mautrix-signal:29328 ``` + +## 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-conduwuit`. diff --git a/docs/configuring-playbook-dendrite.md b/docs/configuring-playbook-dendrite.md index 83510e7af..944b3f02e 100644 --- a/docs/configuring-playbook-dendrite.md +++ b/docs/configuring-playbook-dendrite.md @@ -1,3 +1,11 @@ + + # Configuring Dendrite (optional) The playbook can install and configure the [Dendrite](https://github.com/element-hq/dendrite) Matrix server for you. @@ -6,11 +14,9 @@ See the project's [documentation](https://element-hq.github.io/dendrite/) to lea By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document. -⚠️ **Warnings**: - -- **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Dendrite). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet. - -- **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding +> [!WARNING] +> - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Dendrite). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet. +> - **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding ## Adjusting the playbook configuration @@ -62,3 +68,18 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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. + +## 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-dendrite`. + +### Increase logging verbosity + +The default logging level for this component is `warning`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_dendrite_configuration_extension_yaml: | + logging: + - type: std + level: debug +``` diff --git a/docs/configuring-playbook-dimension.md b/docs/configuring-playbook-dimension.md index 7d1c0ce3f..a1d17b4c1 100644 --- a/docs/configuring-playbook-dimension.md +++ b/docs/configuring-playbook-dimension.md @@ -1,3 +1,18 @@ + + # Setting up Dimension integration manager (optional, unmaintained) **Notes**: @@ -34,7 +49,8 @@ ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=dimension p 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. +> [!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 @@ -85,6 +101,17 @@ If you've decided to reuse the `matrix.` domain, you won't need to do any extra **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: @@ -100,16 +127,18 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start `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. -- 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`) button in the top right corner of the screen, and then clicking Add widgets, bridges & bots. +## Usage -## Jitsi domain +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. -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. Currently there is no way to configure this via the playbook, see [this issue](https://github.com/turt2live/matrix-dimension/issues/345) for details. +### Set up a Jitsi widget -In the interim until the above limitation is resolved, 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. +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. -## Additional features +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. -To use a more custom configuration, you can define a `matrix_dimension_configuration_extension_yaml` string variable and put your configuration in it. To learn more about how to do this, refer to the information about `matrix_dimension_configuration_extension_yaml` in the [default variables file](../roles/custom/matrix-dimension/defaults/main.yml) of the Dimension component. +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. -You can find all configuration options on [GitHub page of Dimension project](https://github.com/turt2live/matrix-dimension/blob/master/config/default.yaml). +## 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`. diff --git a/docs/configuring-playbook-dynamic-dns.md b/docs/configuring-playbook-dynamic-dns.md index 7108e8b65..967f2c916 100644 --- a/docs/configuring-playbook-dynamic-dns.md +++ b/docs/configuring-playbook-dynamic-dns.md @@ -1,3 +1,11 @@ + + # Setting up Dynamic DNS (optional) The playbook can configure Dynamic DNS with [ddclient⁠](https://github.com/ddclient/ddclient) for you. It is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. @@ -6,7 +14,7 @@ Most cloud providers / ISPs will charge you extra for a static IP address. If yo ## Prerequisite -You'll need to get a username and password from your DNS provider. Please consult with the provider about how to retrieve them. +You'll need to authenticate with your DNS provider somehow, in most cases this is simply a username and password but can differ from provider to provider. Please consult with your providers documentation and the upstream [ddclient documentation](https://github.com/ddclient/ddclient/blob/main/ddclient.conf.in) to determine what you'll need to provide to authenticate. ## Adjusting the playbook configuration @@ -23,6 +31,16 @@ matrix_dynamic_dns_domain_configurations: domain: "{{ matrix_domain }}" ``` +Keep in mind that certain providers may require a different configuration of the `matrix_dynamic_dns_domain_configurations` variable, for provider specific examples see the [upstream documentation](https://github.com/ddclient/ddclient/blob/main/ddclient.conf.in). + +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-dynamic-dns/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: @@ -41,3 +59,8 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju Additional resources: - https://matrix.org/docs/guides/free-small-matrix-server +- https://github.com/linuxserver/docker-ddclient + +## 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-dynamic-dns`. However, due to an [upstream issue](https://github.com/linuxserver/docker-ddclient/issues/54#issuecomment-1153143132) the logging output is not always complete. For advanced debugging purposes running the `ddclient` tool outside of the container is useful via the following: `ddclient -file ./ddclient.conf -daemon=0 -debug -verbose -noquiet`. diff --git a/docs/configuring-playbook-element-call.md b/docs/configuring-playbook-element-call.md new file mode 100644 index 000000000..cc88bec70 --- /dev/null +++ b/docs/configuring-playbook-element-call.md @@ -0,0 +1,122 @@ + + +# Setting up Element Call (optional) + +The playbook can install and configure [Element Call](https://github.com/element-hq/element-call) and its supporting components that are part of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md). + +Element Call is a native Matrix video conferencing application developed by [Element](https://element.io), designed for secure, scalable, privacy-respecting, and decentralized video and voice calls over the Matrix protocol. Built on MatrixRTC ([MSC4143](https://github.com/matrix-org/matrix-spec-proposals/pull/4143)), it utilizes [MSC4195](https://github.com/hughns/matrix-spec-proposals/blob/hughns/matrixrtc-livekit/proposals/4195-matrixrtc-livekit.md) with [LiveKit Server](configuring-playbook-livekit-server.md) as its backend. + +See the project's [documentation](https://github.com/element-hq/element-call) to learn more. + +## Prerequisites + +- A [Synapse](configuring-playbook-synapse.md) homeserver (see the warning below) +- The [Matrix RTC (Real-Time Communication) stack](configuring-playbook-matrix-rtc.md) (automatically done when Element Call is enabled) +- A client compatible with Element Call. As of 2025-03-15, that's just [Element Web](configuring-playbook-client-element-web.md) and the Element X mobile clients (iOS and Android). +- (Optional) Guest accounts being enabled for your Matrix server, if you'd like guests to be able to use Element Call. See [Allowing guests to use Element Call](#allowing-guests-to-use-element-call-optional) + +> [!WARNING] +> Because Element Call [requires](https://github.com/element-hq/element-call/blob/93ae2aed9841e0b066d515c56bd4c122d2b591b2/docs/self-hosting.md#a-matrix-homeserver) a few experimental features in the Matrix protocol, it's **very likely that it only works with the Synapse homeserver**. + +## Decide between Element Call vs just the Matrix RTC stack + +All clients that can currently use Element Call (Element Web and Element X on mobile) already embed the Element Call frontend within them. +These **clients will use their own embedded Element Call frontend**, so **self-hosting the Element Call frontend by the playbook is largely unnecessary**. + +💡 A reason you may wish to continue installing the Element Call frontend (despite Matrix clients not making use of it), is if you need to use it standalone - directly via a browser (without a Matrix client). Note that unless you [allow guest accounts to use Element Call](#allowing-guests-to-use-element-call-optional), you will still need a Matrix user account **on the same homeserver** to be able to use Element Call. + +The playbook makes a distiction between enabling Element Call (`matrix_element_call_enabled`) and enabling the Matrix RTC Stack (`matrix_rtc_enabled`). Enabling Element Call automatically enables the Matrix RTC stack. Because installing the Element Call frontend is now unnecessary, **we recommend only installing the Matrix RTC stack, without the Element Call frontend**. + +| Description / Variable | Element Call frontend | [LiveKit Server](configuring-playbook-livekit-server.md) | [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) | +|------------------------|-----------------------|----------------|---------------------| +| Description | Static website that provides the Element Call UI (but often embedded by clients) | Scalable, multi-user conferencing solution based on WebRTC | A helper component that allows Element Call to integrate with LiveKit Server | +| Required for Element Call to function | No | Yes | Yes | +| `matrix_element_call_enabled` | ✅ Installed | ✅ Installed | ✅ Installed | +| `matrix_rtc_enabled` | ❌ Not Installed, but usually unnecessary | ✅ Installed | ✅ Installed | + +All documentation below assumes that you've decided to install Element Call and not just the Matrix RTC stack. + +## Decide on a domain and path + +By default, the Element Call frontend is configured to be served on the `call.element.example.com` domain. + +If you'd like to run Element Call on another hostname, see the [Adjusting the Element Call URL](#adjusting-the-element-call-url-optional) section below. + +## Adjusting DNS records + +By default, this playbook installs Element Call on the `call.element.` subdomain (`call.element.example.com`) and requires you to create a `CNAME` record for `call.element`, which targets `matrix.example.com`. + +When setting these values, replace `example.com` with your own. + +All dependency services for Element Call ([LiveKit Server](configuring-playbook-livekit-server.md) and [Livekit JWT Service](configuring-playbook-livekit-jwt-service.md)) are installed and configured automatically by the playbook. By default, these services are installed on subpaths on the `matrix.` domain (e.g. `/livekit-server`, `/livekit-jwt-service`), so no DNS record adjustments are required for them. + +## Adjusting firewall rules + +In addition to the HTTP/HTTPS ports (which you've already exposed as per the [prerequisites](prerequisites.md) document), you'll also need to open ports required by [LiveKit Server](configuring-playbook-livekit-server.md) as described in its own [Adjusting firewall rules](configuring-playbook-livekit-server.md#adjusting-firewall-rules) section. + +## Adjusting the playbook configuration + +Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +# Enable the Element Call frontend UI to allow standalone use of Element Call. +# Enabling this also auto-enables the Matrix RTC stack. +matrix_element_call_enabled: true +``` + +### Adjusting the Element Call URL (optional) + +By tweaking the `matrix_element_call_hostname` variable, you can easily make the service available at a **different hostname** than the default one. + +Example additional configuration for your `vars.yml` file: + +```yaml +matrix_element_call_hostname: element-call.example.com +``` + +> [!WARNING] +> A `matrix_element_call_path_prefix` variable is also available and mean to let you configure a path prefix for the Element Call service, but [Element Call does not support running under a sub-path yet](https://github.com/element-hq/element-call/issues/3084). + +### Allowing guests to use Element Call (optional) + +By default, Element Call can only be used by people having accounts on your Matrix server. + +If you'd like guests to be able to use Element Call as well, you need to enable guest accounts support for your homeserver. + +> [!WARNING] +> Enabling guest accounts means that your homeserver's user database may get polluted with guest account signups (potentially made by bots). +> Guest accounts should be limited in what (damage) they can do to your server and the rest of the Matrix ecosystem, but it's better to not enable them unless necessary. + +For [Synapse](configuring-playbook-synapse.md) (the default homeserver implementation), the configuration is like this: + +```yml +matrix_synapse_allow_guest_access: true +``` + +For [Dendrite](configuring-playbook-dendrite.md), the configuration is like this: + +```yml +matrix_dendrite_guests_disabled: false +``` + +## Installing + +After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records) and [adjusting firewall rules](#adjusting-firewall-rules), run the playbook with [playbook tags](playbook-tags.md) as below: + + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start +``` + +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 + +Once installed, Element Call integrates seamlessly with Matrix clients like [Element Web](configuring-playbook-client-element-web.md) and Element X on mobile (iOS and Android). diff --git a/docs/configuring-playbook-email.md b/docs/configuring-playbook-email.md index b10dd8224..5fcc4d820 100644 --- a/docs/configuring-playbook-email.md +++ b/docs/configuring-playbook-email.md @@ -1,53 +1,71 @@ -# Adjusting email-sending settings (optional) + -The email server would attempt to deliver emails directly to their final destination. This may or may not work, depending on your domain configuration (SPF settings, etc.) +# Adjusting email-sending settings (optional) -By default, emails are sent from `matrix@matrix.example.com`, as specified by the `exim_relay_sender_address` playbook variable. +By default, this playbook sets up an [Exim](https://www.exim.org/) relay SMTP mailer service (powered by [exim-relay](https://github.com/devture/exim-relay) and the [ansible-role-exim-relay](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay) Ansible role), through which all Matrix services send emails. -⚠️ **Warning**: On some cloud providers (Google Cloud, etc.), [port 25 is always blocked](https://cloud.google.com/compute/docs/tutorials/sending-mail/), so sending email directly from your server is not possible. You will need to [relay email through another SMTP server](#relaying-email-through-another-smtp-server). +**With the default setting, exim-relay attempts to deliver emails directly with the address `matrix@matrix.example.com`**, as specified by the `exim_relay_sender_address` playbook variable. See below if you want to configure the playbook to relay email through another SMTP server. -💡 To improve deliverability, we recommend [relaying email through another SMTP server](#relaying-email-through-another-smtp-server) anyway. +The [Ansible role for exim-relay](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring exim-relay, you can check them via: +- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md) online +- 📁 `roles/galaxy/exim_relay/docs/configuring-exim-relay.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles) ## Firewall settings -No matter whether you send email directly (the default) or you relay email through another host (see how below), you'll probably need to allow outgoing traffic for TCP ports 25/587 (depending on configuration). +No matter whether you send email directly (the default) or you relay email through another host, you'll probably need to allow outgoing traffic for TCP ports 25/587 (depending on configuration). -## Relaying email through another SMTP server +Docker automatically opens these ports in the server's firewall, so you likely don't need to do anything. If you use another firewall in front of the server, you may need to adjust it. -If you'd like to relay email through another SMTP server, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs): +## Adjusting the playbook configuration -```yaml -exim_relay_sender_address: "another.sender@example.com" -exim_relay_relay_use: true -exim_relay_relay_host_name: "mail.example.com" -exim_relay_relay_host_port: 587 -exim_relay_relay_auth: true -exim_relay_relay_auth_username: "another.sender@example.com" -exim_relay_relay_auth_password: "some-password" -``` +### Enable DKIM authentication to improve deliverability (optional) + +By default, exim-relay attempts to deliver emails directly. This may or may not work, depending on your domain configuration. + +To improve email deliverability, you can configure authentication methods such as DKIM (DomainKeys Identified Mail), SPF, and DMARC for your domain. Without setting any of these authentication methods, your outgoing email is most likely to be quarantined as spam at recipient's mail servers. + +For details about configuring DKIM, refer [this section](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md#enable-dkim-support-optional) on the role's documentation. + +💡 If you cannot enable DKIM, SPF, or DMARC on your domain for some reason, we recommend relaying email through another SMTP server. -**Note**: only the secure submission protocol (using `STARTTLS`, usually on port `587`) is supported. **SMTPS** (encrypted SMTP, usually on port `465`) **is not supported**. +### Relaying email through another SMTP server (optional) -### Configuations for sending emails using Sendgrid +**On some cloud providers such as Google Cloud, [port 25 is always blocked](https://cloud.google.com/compute/docs/tutorials/sending-mail/), so sending email directly from your server is not possible.** In this case, you will need to relay email through another SMTP server. -An easy and free SMTP service to set up is [Sendgrid](https://sendgrid.com/), the free tier allows for up to 100 emails per day to be sent. In the settings below you can provide any email for `exim_relay_sender_address`. +For details about configuration, refer [this section](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md#relaying-email-through-another-smtp-server) on the role's document. -The only other thing you need to change is the `exim_relay_relay_auth_password`, which you can generate at https://app.sendgrid.com/settings/api_keys. The API key password looks something like `SG.955oW1mLSfwds7i9Yd6IA5Q.q8GTaB8q9kGDzasegdG6u95fQ-6zkdwrPP8bOeuI`. +### Disable mail service (optional) -Note that the `exim_relay_relay_auth_username` is literally the string `apikey`, it's always the same for Sendgrid. +For a low-power server you might probably want to disable exim-relay. To do so, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml -exim_relay_sender_address: "arbitrary@email.com" -exim_relay_relay_use: true -exim_relay_relay_host_name: "smtp.sendgrid.net" -exim_relay_relay_host_port: 587 -exim_relay_relay_auth: true -exim_relay_relay_auth_username: "apikey" -exim_relay_relay_auth_password: "" +exim_relay_enabled: false ``` +Note that disabling exim-relay will stop email-notifications and other similar functions from working. + +See [this entry on the FAQ](faq.md#how-do-i-optimize-this-setup-for-a-low-power-server) for other possible optimizations for a low-power server. + +## Installing + +After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: + + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start +``` + +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. + ## Troubleshooting -If you're having trouble with email not being delivered, it may be useful to inspect the mailer logs: `journalctl -f -u matrix-exim-relay`. +See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md#troubleshooting) on the role's documentation for details. diff --git a/docs/configuring-playbook-email2matrix.md b/docs/configuring-playbook-email2matrix.md index d703d5417..20d807b85 100644 --- a/docs/configuring-playbook-email2matrix.md +++ b/docs/configuring-playbook-email2matrix.md @@ -1,117 +1,26 @@ -# Setting up Email2Matrix (optional) + -The playbook can install and configure [email2matrix](https://github.com/devture/email2matrix) for you. +# Setting up Email2Matrix (optional, removed) -See the project's [documentation](https://github.com/devture/email2matrix/blob/master/docs/README.md) to learn what it does and why it might be useful to you. +🪦 The playbook used to be able to install and configure [Email2Matrix](https://github.com/devture/email2matrix), but no longer includes this component. -## Preparation +For a long time now, it been replaced by the much better and more maintained [Postmoogle](https://github.com/etkecc/postmoogle) bridge, which can also be [installed using this playbook](configuring-playbook-bridge-postmoogle.md). -### Port availability -Ensure that port 25 is available on your Matrix server and open in your firewall. +## Uninstalling Email2Matrix manually -If you have `postfix` or some other email server software installed, you may need to manually remove it first (unless you need it, of course). - -If you really need to run an email server on the Matrix machine for other purposes, it may be possible to run Email2Matrix on another port (with a configuration like `matrix_email2matrix_smtp_host_bind_port: "127.0.0.01:2525"`) and have your other email server relay messages there. - -For details about using Email2Matrix alongside [Postfix](http://www.postfix.org/), see [here](https://github.com/devture/email2matrix/blob/master/docs/setup_with_postfix.md). - -### Register a dedicated Matrix user (optional, recommended) - -We recommend that you create a dedicated Matrix user for Email2Matrix. - -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): +If you still have the Email2Matrix component 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: ```sh -ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=email2matrix password=PASSWORD_FOR_THE_USER admin=no' --tags=register-user -``` - -Take note of the user's ID as it needs to be specified as `MatrixUserId` on your `inventory/host_vars/matrix.example.com/vars.yml` file later. - -### Obtain an access token - -Email2Matrix requires an access token for the sender user to be able to send messages to the room. 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. - -### Join to rooms as the sender user manually - -ℹ️ **Email2Matrix does not accept room invitations automatically**. To deliver messages to rooms, the sender user must be joined to all rooms manually. - -For each new room you would like the user to deliver messages to, invite the user to the room. - -Then, log in as the sender user using any Matrix client of your choosing, accept the room invitation from the user's account. - -Make sure that you and the sender user are part of the same room and that the sender user has enough privileges in the room to be able to send messages there, then log out. - -Take note of each room's room ID (different clients show the room ID in a different place). You'll need the room ID when [configuring the playbook](#adjusting-the-playbook-configuration) below. - -## Adjusting DNS records +systemctl disable --now matrix-email2matrix.service -To increase the chances that incoming emails reach your server, you can set up a `MX` record for `matrix.example.com` that looks like this: - -| Type | Host | Priority | Weight | Port | Target | -|------|----------|----------|--------|------|------------------------------------| -| MX | `matrix` | 10 | 0 | - | `matrix.example.com` | - -## Adjusting the playbook configuration - -To enable Email2Matrix, add the following configuration to your `vars.yml` file. Make sure to replace `ACCESS_TOKEN_FOR_EMAIL2MATRIX1_HERE` and `ACCESS_TOKEN_FOR_EMAIL2MATRIX2_HERE` with the ones created [above](#obtain-an-access-token). - -```yaml -matrix_email2matrix_enabled: true - -# You need at least 1 mailbox. -matrix_email2matrix_matrix_mappings: - - MailboxName: "mailbox1" - MatrixRoomId: "!qporfwt:{{ matrix_domain }}" - MatrixHomeserverUrl: "{{ matrix_homeserver_url }}" - MatrixUserId: "@email2matrix1:{{ matrix_domain }}" - MatrixAccessToken: "ACCESS_TOKEN_FOR_EMAIL2MATRIX1_HERE" - IgnoreSubject: false - IgnoreBody: false - SkipMarkdown: false - - - MailboxName: "mailbox2" - MatrixRoomId: "!aaabaa:{{ matrix_domain }}" - MatrixHomeserverUrl: "{{ matrix_homeserver_url }}" - MatrixUserId: "@email2matrix2:{{ matrix_domain }}" - MatrixAccessToken: "ACCESS_TOKEN_FOR_EMAIL2MATRIX2_HERE" - IgnoreSubject: true - IgnoreBody: false - SkipMarkdown: true -``` - -where: - -* MailboxName - local-part of the email address, through which emails are bridged to the room whose ID is defined with MatrixRoomId -* MatrixRoomId - internal ID of the room, to which received emails are sent as Matrix message -* MatrixHomeserverUrl - URL of your Matrix homeserver, through which to send Matrix messages. You can also set `MatrixHomeserverUrl` to the container URL where your homeserver's Client-Server API lives by using the `{{ matrix_addons_homeserver_client_api_url }}` variable -* MatrixUserId - the full ID of the sender user which sends bridged messages to the room. On this configuration it is `@email2matrix1:example.com` and `@email2matrix2:example.com` (where `example.com` is your base domain, not the `matrix.` domain) -* MatrixAccessToken - sender user's access token -* IgnoreSubject - if set to "true", the subject is not bridged to Matrix -* IgnoreBody - if set to "true", the message body is not bridged to Matrix -* SkipMarkdown - if set to "true", emails are bridged as plain text Matrix message instead of Markdown (actually HTML) - -Refer to the official documentation [here](https://github.com/devture/email2matrix/blob/master/docs/configuration.md). - -## Installing - -After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: - - -```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start +rm -rf /matrix/email2matrix ``` - -**Notes**: - -- The shortcut commands with the [`just` program](just.md) are also available: `just install-service email2matrix` or `just setup-all` - - `just install-service email2matrix` is useful for maintaining your setup quickly 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 `just setup-all` runs the `ensure-matrix-users-created` tag too. - -- After installation, you may wish to send a test email to the email address assigned to `mailbox1` (default: `mailbox1@matrix.example.com`) to make sure that Email2Matrix works as expected. diff --git a/docs/configuring-playbook-etherpad.md b/docs/configuring-playbook-etherpad.md index 65f11b9b4..bc6783b81 100644 --- a/docs/configuring-playbook-etherpad.md +++ b/docs/configuring-playbook-etherpad.md @@ -1,10 +1,27 @@ + + # Setting up Etherpad (optional) The playbook can install and configure [Etherpad](https://etherpad.org) for you. Etherpad is an open source collaborative text editor. It can not only be integrated with Element clients ([Element Web](configuring-playbook-client-element-web.md)/Desktop, Android and iOS) as a widget, but also be used as standalone web app. -When enabled together with the Jitsi audio/video conferencing system (see [our docs on Jitsi](configuring-playbook-jitsi.md)), it will be made available as an option during the conferences. +When enabled together with the Jitsi video-conferencing platform (see [our docs on Jitsi](configuring-playbook-jitsi.md)), it will be made available as an option during the conferences. + +The [Ansible role for Etherpad](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring Etherpad, you can check them via: + +- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad/blob/main/docs/configuring-etherpad.md) online +- 📁 `roles/galaxy/etherpad/docs/configuring-etherpad.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles) ## Adjusting DNS records @@ -17,13 +34,33 @@ When setting, replace `example.com` with your own. To enable Etherpad, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml +######################################################################## +# # +# etherpad # +# # +######################################################################## + etherpad_enabled: true -# Uncomment and adjust this part if you'd like to enable the admin web UI -# etherpad_admin_username: YOUR_USERNAME_HERE -# etherpad_admin_password: YOUR_PASSWORD_HERE +######################################################################## +# # +# /etherpad # +# # +######################################################################## ``` +As the most of the necessary settings for the role have been taken care of by the playbook, you can enable Etherpad on your Matrix server with this minimum configuration. + +See the role's documentation for details about configuring Etherpad per your preference (such as [the name of the instance](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad/blob/main/docs/configuring-etherpad.md#set-the-name-of-the-instance-optional) and [the default pad text](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad/blob/main/docs/configuring-etherpad.md#set-the-default-text-optional)). + +### Create admin user (optional) + +You probably might want to enable authentication to disallow anonymous access to your Etherpad. + +It is possible to enable HTTP basic authentication by **creating an admin user** with `etherpad_admin_username` and `etherpad_admin_password` variables. The admin user account is also used by plugins for authentication and authorization. + +See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad/blob/main/docs/configuring-etherpad.md#create-admin-user-optional) on the role's documentation for details about how to create the admin user. + ### Adjusting the Etherpad URL (optional) By tweaking the `etherpad_hostname` and `etherpad_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one. @@ -43,65 +80,33 @@ After changing the domain, **you may need to adjust your DNS** records to point If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration. -### Configure the default text (optional) - -You can also edit the default text on a new pad with the variable `etherpad_default_pad_text`. - -To do so, add the following configuration to your `vars.yml` file (adapt to your needs): - -```yaml -# Note: the whole text (all of its belonging lines) under the variable needs to be indented with 2 spaces. -etherpad_default_pad_text: | - Welcome to Etherpad! - - This pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents! - - Get involved with Etherpad at https://etherpad.org -``` - -### Extending the configuration - -There are some additional things you may wish to configure about the component. - -Take a look at: - -- [etherpad role](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad)'s [`defaults/main.yml`](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad/blob/main/defaults/main.yml) for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `etherpad_configuration_extension_json` variable - ## 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: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -**Notes**: - -- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the Etherpad admin user (`etherpad_admin_username`). +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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. - -- If you change the Etherpad admin user's password (`etherpad_admin_password` in your `vars.yml` file) subsequently, the admin user's credentials on the homeserver won't be updated automatically. If you'd like to change the admin user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `etherpad_admin_password` to let the admin user know its new password. +`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 -The Etherpad UI should be available at `https://etherpad.example.com`, while the admin UI (if enabled) should then be available at `https://etherpad.example.com/admin`. +By default, the Etherpad UI should be available at `https://etherpad.example.com`, while the admin UI (if enabled) should then be available at `https://etherpad.example.com/admin`. If you've [decided on another hostname or path-prefix](#adjusting-the-etherpad-url-optional) (e.g. `https://matrix.example.com/etherpad`), adjust these URLs accordingly before using it. -### Managing / Deleting old pads - -If you want to manage and remove old unused pads from Etherpad, you will first need to create the Etherpad admin user as described above. - -After logging in to the admin web UI, go to the plugin manager page, and install the `adminpads2` plugin. - -Once the plugin is installed, you should have a "Manage pads" section in the UI. +💡 For more information about usage, take a look at [this section](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad/blob/main/docs/configuring-etherpad.md#usage) on the role's documentation. ### Integrating a Etherpad widget in a room **Note**: this is how it works in Element Web. It might work quite similar with other clients: To integrate a standalone Etherpad in a room, create your pad by visiting `https://etherpad.example.com`. When the pad opens, copy the URL and send a command like this to the room: `/addwidget URL`. You will then find your integrated Etherpad within the right sidebar in the `Widgets` section. + +## Troubleshooting + +See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad/blob/main/docs/configuring-etherpad.md#troubleshooting) on the role's documentation for details. diff --git a/docs/configuring-playbook-external-postgres.md b/docs/configuring-playbook-external-postgres.md index e922c8299..f860f4413 100644 --- a/docs/configuring-playbook-external-postgres.md +++ b/docs/configuring-playbook-external-postgres.md @@ -1,8 +1,15 @@ + + # Using an external PostgreSQL server (optional) By default, this playbook would set up a PostgreSQL database server on your machine, running in a Docker container. If that's okay, you can skip this document. -**Note**: using **an external Postgres server is currently [not very seamless](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1682#issuecomment-1061461683) when it comes to enabling various other playbook services** - you will need to create a new database/credentials for each service and to point each service to its corresponding database using custom `vars.yml` configuration. **For the best experience with the playbook, stick to using the integrated Postgres server**. +**Note**: using **an external Postgres server is currently [not very seamless](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1682#issuecomment-1061461683) when it comes to enabling various other playbook services** — you will need to create a new database/credentials for each service and to point each service to its corresponding database using custom `vars.yml` configuration. **For the best experience with the playbook, stick to using the integrated Postgres server**. If you'd like to use an external Postgres server that you manage, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs): diff --git a/docs/configuring-playbook-federation.md b/docs/configuring-playbook-federation.md index 87e573830..c06928748 100644 --- a/docs/configuring-playbook-federation.md +++ b/docs/configuring-playbook-federation.md @@ -1,8 +1,16 @@ + + # Controlling Matrix federation (optional) By default, your server federates with the whole Matrix network. That is, people on your server can communicate with people on any other Matrix server. -**Note**: in the sample `vars.yml` ([`examples/vars.yml`](../examples/vars.yml)), we recommend to use a short user ID like `@alice:example.com` instead of `@alice:matrix.example.com` and set up [server delegation](howto-server-delegation.md) / redirection. Without a proper configuration, your server will effectively not be part of the Matrix network. If you find your server is not federated, make sure to [check whether services work](maintenance-checking-services.md) and your server is properly delegated. +**Note**: in the sample `vars.yml` ([`examples/vars.yml`](../examples/vars.yml)), we recommend to use a short user ID like `@alice:example.com` instead of `@alice:matrix.example.com` and set up [server delegation](howto-server-delegation.md) / redirection. Without a proper configuration, your server will effectively not be part of the Matrix network. If you find your server is not federated, make sure to [check whether services work](maintenance-and-troubleshooting.md#how-to-check-if-services-work) and your server is properly delegated. ## Federating only with select servers diff --git a/docs/configuring-playbook-jitsi.md b/docs/configuring-playbook-jitsi.md index a6b3cc28f..3a494d083 100644 --- a/docs/configuring-playbook-jitsi.md +++ b/docs/configuring-playbook-jitsi.md @@ -1,19 +1,36 @@ + + # Setting up the Jitsi video-conferencing platform (optional) The playbook can install and configure the [Jitsi](https://jitsi.org/) video-conferencing platform for you. -Jitsi can not only be integrated with Element clients ([Element Web](configuring-playbook-client-element-web.md)/Desktop, Android and iOS) as a widget, but also be used as standalone web app. +Jitsi is an open source video-conferencing platform. It can not only be integrated with Element clients ([Element Web](configuring-playbook-client-element-web.md)/Desktop, Android and iOS) as a widget, but also be used as standalone web app. -See the project's [documentation](https://jitsi.github.io/handbook/) to learn what it does and why it might be useful to you. +💡 If you're into experimental technology, you may also be interested in trying out [Element Call](configuring-playbook-element-call.md) - a native Matrix video conferencing application. -**Note**: the configuration by the playbook is similar to the one by [docker-jitsi-meet](https://github.com/jitsi/docker-jitsi-meet). You can refer to the official documentation for Docker deployment [here](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker/). +The [Ansible role for Jitsi](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring Jitsi, you can check them via: +- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md) online +- 📁 `roles/galaxy/jitsi/docs/configuring-jitsi.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles) ## Prerequisites -You may need to open the following ports to your server: +Before proceeding, make sure to check server's requirements recommended by [the official deployment guide](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-requirements). -- `4443/tcp` - RTP media fallback over TCP -- `10000/udp` - RTP media over UDP. Depending on your firewall/NAT configuration, incoming RTP packets on port `10000` may have the external IP of your firewall as destination address, due to the usage of STUN in JVB (see [`jitsi_jvb_stun_servers`](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/defaults/main.yml)). +You may need to open some ports to your server, if you use another firewall in front of the server. Refer [the role's documentation](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#prerequisites) to check which ones to be configured. ## Adjusting DNS records @@ -26,180 +43,49 @@ When setting, replace `example.com` with your own. To enable Jitsi, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml -jitsi_enabled: true -``` - -### Adjusting the Jitsi URL (optional) - -By tweaking the `jitsi_hostname` variable, you can easily make the service available at a **different hostname** than the default one. - -Example additional configuration for your `vars.yml` file: - -```yaml -# Change the default hostname -jitsi_hostname: call.example.com -``` - -After changing the domain, **you may need to adjust your DNS** records to point the Jitsi domain to the Matrix server. - -### Configure Jitsi authentication and guests mode (optional) - -By default the Jitsi instance does not require for anyone to log in, and is open to use without an account. To control who is allowed to start meetings on your Jitsi instance, you'd need to enable Jitsi's authentication and optionally guests mode. - -Authentication type must be one of them: `internal` (default), `jwt`, `matrix` or `ldap`. Currently, only `internal`, `matrix` and `ldap` mechanisms are supported by the [Jitsi role](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi). - -With authentication enabled, all meetings have to be started by a registered user. After the meeting is started by that user, then guests are free to join. If the registered user is not yet present, the guests are put on hold in individual waiting rooms. - -**Note**: authentication is not tested by the playbook's self-checks. We therefore recommend that you would make sure by yourself that authentication is configured properly. To test it, start a meeting at `jitsi.example.com` on your browser. - -#### Authenticate using Jitsi accounts: Auth-Type `internal` (recommended) - -The default authentication mechanism is `internal` auth, which requires a Jitsi account to have been configured. This is a recommended method, as it also works in federated rooms. +######################################################################## +# # +# jitsi # +# # +######################################################################## -To enable authentication with a Jitsi account, add the following configuration to your `vars.yml` file. Make sure to replace `USERNAME_…` and `PASSWORD_…` with your own values. - -```yaml -jitsi_enable_auth: true -jitsi_enable_guests: true -jitsi_prosody_auth_internal_accounts: - - username: "USERNAME_FOR_THE_FIRST_USER_HERE" - password: "PASSWORD_FOR_THE_FIRST_USER_HERE" - - username: "USERNAME_FOR_THE_SECOND_USER_HERE" - password: "PASSWORD_FOR_THE_SECOND_USER_HERE" -``` - -**Note**: as Jitsi account removal function is not integrated into the playbook, these accounts will not be able to be removed from the Prosody server automatically, even if they are removed from your `vars.yml` file subsequently. - -#### Authenticate using Matrix OpenID: Auth-Type `matrix` - -⚠️ **Warning**: this breaks the Jitsi instance on federated rooms probably and does not allow sharing conference links with guests. - -This authentication method requires [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service), which can be installed using this [playbook](configuring-playbook-user-verification-service.md). It verifies against Matrix openID, and requires a user-verification-service to run. - -To enable authentication with Matrix OpenID, add the following configuration to your `vars.yml` file: +jitsi_enabled: true -```yaml -jitsi_enable_auth: true -jitsi_auth_type: matrix -matrix_user_verification_service_enabled: true +######################################################################## +# # +# /jitsi # +# # +######################################################################## ``` -For more information see also [https://github.com/matrix-org/prosody-mod-auth-matrix-user-verification](https://github.com/matrix-org/prosody-mod-auth-matrix-user-verification). - -#### Authenticate using LDAP: Auth-Type `ldap` - -To enable authentication with LDAP, add the following configuration to your `vars.yml` file (adapt to your needs): +As the most of the necessary settings for the role have been taken care of by the playbook, you can enable Jitsi on your Matrix server with this minimum configuration. -```yaml -jitsi_enable_auth: true -jitsi_auth_type: ldap -jitsi_ldap_url: "ldap://ldap.example.com" -jitsi_ldap_base: "OU=People,DC=example.com" -#jitsi_ldap_binddn: "" -#jitsi_ldap_bindpw: "" -jitsi_ldap_filter: "uid=%u" -jitsi_ldap_auth_method: "bind" -jitsi_ldap_version: "3" -jitsi_ldap_use_tls: true -jitsi_ldap_tls_ciphers: "" -jitsi_ldap_tls_check_peer: true -jitsi_ldap_tls_cacert_file: "/etc/ssl/certs/ca-certificates.crt" -jitsi_ldap_tls_cacert_dir: "/etc/ssl/certs" -jitsi_ldap_start_tls: false -``` +However, **since Jitsi's performance heavily depends on server resource (bandwidth, RAM, and CPU), it is recommended to review settings and optimize them as necessary before deployment.** You can check [here](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#example-configurations) for an example set of configurations to set up a Jitsi instance, focusing on performance. If you will host a large conference, you probably might also want to consider to provision additional JVBs ([Jitsi VideoBridge](https://github.com/jitsi/jitsi-videobridge)). See [here](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#set-up-additional-jvbs-for-more-video-conferences-optional) for details about setting them up with the playbook. -For more information refer to the [docker-jitsi-meet](https://github.com/jitsi/docker-jitsi-meet#authentication-using-ldap) and the [saslauthd `LDAP_SASLAUTHD`](https://github.com/winlibs/cyrus-sasl/blob/master/saslauthd/LDAP_SASLAUTHD) documentation. +See the role's documentation for details about configuring Jitsi per your preference (such as setting [a custom hostname](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#set-the-hostname) and [the environment variable for running Jitsi in a LAN](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#configure-jvb_advertise_ips-for-running-behind-nat-or-on-a-lan-environment-optional)). -### Configure `JVB_ADVERTISE_IPS` for running behind NAT or on a LAN environment (optional) +### Enable authentication and guests mode (optional) -When running Jitsi in a LAN environment, or on the public Internet via NAT, the `JVB_ADVERTISE_IPS` enviornment variable should be set. +By default the Jitsi Meet instance **does not require for anyone to log in, and is open to use without an account**. -This variable allows to control which IP addresses the JVB will advertise for WebRTC media traffic. It is necessary to set it regardless of the use of a reverse proxy, since it's the IP address that will receive the media (audio / video) and not HTTP traffic, hence it's oblivious to the reverse proxy. +If you would like to control who is allowed to start meetings on your instance, you'd need to enable Jitsi's authentication and optionally guests mode. -If your users are coming in over the Internet (and not over LAN), this will likely be your public IP address. If this is not set up correctly, calls will crash when more than two users join a meeting. - -To set the variable, add the following configuration to your `vars.yml` file. Make sure to replace `LOCAL_IP_ADDRESS_OF_THE_HOST_HERE` with a proper value. - -```yaml -jitsi_jvb_container_extra_arguments: - - '--env "JVB_ADVERTISE_IPS=LOCAL_IP_ADDRESS_OF_THE_HOST_HERE"' -``` - -Check [the official documentation](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker/#running-behind-nat-or-on-a-lan-environment) for more details about it. - -### Set a maximum number of participants on a Jitsi conference (optional) - -You can set a maximum number of participants allowed to join a Jitsi conference. By default the number is not specified. - -To set it, add the following configuration to your `vars.yml` file (adapt to your needs): - -```yaml -jitsi_prosody_max_participants: 4 # example value -``` +See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#configure-jitsi-authentication-and-guests-mode-optional) on the role's documentation for details about how to configure the authentication and guests mode. The recommended authentication method is `internal` as it also works in federated rooms. If you want to enable authentication with Matrix OpenID making use of [Matrix User Verification Service (UVS)](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-user-verification-service.md), see [here](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#authenticate-using-matrix-openid-auth-type-matrix) for details about how to set it up. ### Enable Gravatar (optional) In the default Jisti Meet configuration, `gravatar.com` is enabled as an avatar service. -Since the Element clients send the URL of configured Matrix avatars to the Jitsi instance, our default configuration has disabled the Gravatar service. +Since the Element clients send the URL of configured Matrix avatars to the Jitsi instance, our configuration has disabled the Gravatar service. -To enable the Gravatar service, add the following configuration to your `vars.yml` file: +To enable the Gravatar service nevertheless, add the following configuration to your `vars.yml` file: ```yaml jitsi_disable_gravatar: false ``` -⚠️ **Warning**: this will result in third party request leaking data to the Gravatar Service (`gravatar.com`, unless configured otherwise). Besides metadata, the Matrix user_id and possibly the room ID (via `referrer` header) will be also sent to the third party. - -### Fine tune Jitsi (optional) - -If you'd like to have Jitsi save up resources, add the following configuration to your `vars.yml` file (adapt to your needs): - -```yaml -jitsi_web_config_resolution_width_ideal_and_max: 480 -jitsi_web_config_resolution_height_ideal_and_max: 240 -jitsi_web_custom_config_extension: | - config.enableLayerSuspension = true; - - config.disableAudioLevels = true; - - config.channelLastN = 4; -``` - -These configurations: - -- **limit the maximum video resolution**, to save up resources on both server and clients -- **suspend unused video layers** until they are requested again, to save up resources on both server and clients. Read more on this feature [here](https://jitsi.org/blog/new-off-stage-layer-suppression-feature/). -- **disable audio levels** to avoid excessive refresh of the client-side page and decrease the CPU consumption involved -- **limit the number of video feeds forwarded to each client**, to save up resources on both server and clients. As clients’ bandwidth and CPU may not bear the load, use this setting to avoid lag and crashes. This feature is available by default on other webconference applications such as Office 365 Teams (the number is limited to 4). Read how it works [here](https://github.com/jitsi/jitsi-videobridge/blob/5ff195985edf46c9399dcf263cb07167f0a2c724/doc/allocation.md). - -### Example configurations - -Here is an example set of configurations for running a Jitsi instance with: - -- authentication using a Jitsi account (username: `US3RNAME`, password: `passw0rd`) -- guests: allowed -- maximum participants: 6 people -- fine tuning with the configurations presented above -- other miscellaneous options (see the official Jitsi documentation [here](https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-configuration) and [here](https://jitsi.github.io/handbook/docs/user-guide/user-guide-advanced)) - -```yaml -jitsi_enabled: true -jitsi_enable_auth: true -jitsi_enable_guests: true -jitsi_prosody_auth_internal_accounts: - - username: "US3RNAME" - password: "passw0rd" -jitsi_prosody_max_participants: 6 -jitsi_web_config_resolution_width_ideal_and_max: 480 -jitsi_web_config_resolution_height_ideal_and_max: 240 -jitsi_web_custom_config_extension: | - config.enableLayerSuspension = true; - config.disableAudioLevels = true; - config.channelLastN = 4; - config.requireDisplayName = true; // force users to set a display name - config.startAudioOnly = true; // start the conference in audio only mode (no video is being received nor sent) -``` +> [!WARNING] +> This will result in third party request leaking data to the Gravatar Service (`gravatar.com`, unless configured otherwise). Besides metadata, the Matrix user_id and possibly the room ID (via `referrer` header) will be also sent to the third party. ## Installing @@ -220,170 +106,12 @@ You can use the self-hosted Jitsi server in multiple ways: - **by adding a widget to a room via Element Web** (the one configured by the playbook at `https://element.example.com`). Just start a voice or a video call in a room containing more than 2 members and that would create a Jitsi widget which utilizes your self-hosted Jitsi server. -- **directly (without any Matrix integration)**. Just go to `https://jitsi.example.com` - -### Set up additional JVBs for more video-conferences (optional) - -By default, a single JVB ([Jitsi VideoBridge](https://github.com/jitsi/jitsi-videobridge)) is deployed on the same host as the Matrix server. To allow more video-conferences to happen at the same time, you'd need to provision additional JVB services on other hosts. - -These settings below will allow you to provision those extra JVB instances. The instances will register themselves with the Prosody service, and be available for Jicofo to route conferences too. - -#### Add the `jitsi_jvb_servers` section on `hosts` file - -For additional JVBs, you'd need to add the section titled `jitsi_jvb_servers` on the ansible `hosts` file with the details of the JVB hosts as below: - -```INI -[jitsi_jvb_servers] -jvb-2.example.com ansible_host=192.168.0.2 -``` - -Make sure to replace `jvb-2.example.com` with your hostname for the JVB and `192.168.0.2` with your JVB's external IP address, respectively. - -You could add JVB hosts as many as you would like. When doing so, add lines with the details of them. - -#### Prepare `vars.yml` files for additional JVBs - -If the main server is `matrix.example.com` and the additional JVB instance is going to be deployed at `jvb-2.example.com`, the variables for the latter need to be specified on `vars.yml` in its directory (`inventory/host_vars/jvb-2.example.com`). - -Note that most (if not all) variables are common for both servers. - -If you are setting up multiple JVB instances, you'd need to create `vars.yml` files for each of them too (`inventory/host_vars/jvb-3.example.com/vars.yml`, for example). - -#### Set the server ID to each JVB - -Each JVB requires a server ID to be set, so that it will be uniquely identified. The server ID allows Jitsi to keep track of which conferences are on which JVB. - -The server ID can be set with the variable `jitsi_jvb_server_id`. It will end up as the `JVB_WS_SERVER_ID` environment variables in the JVB docker container. - -To set the server ID to `jvb-2`, add the following configuration to either `hosts` or `vars.yml` files (adapt to your needs). - -- On `hosts`: - - Add `jitsi_jvb_server_id=jvb-2` after your JVB's external IP addresses as below: - - ```INI - [jitsi_jvb_servers] - jvb-2.example.com ansible_host=192.168.0.2 jitsi_jvb_server_id=jvb-2 - jvb-3.example.com ansible_host=192.168.0.3 jitsi_jvb_server_id=jvb-2 - ``` - -- On `vars.yml` files: - - ```yaml - jitsi_jvb_server_id: 'jvb-2' - ``` - -Alternatively, you can specify the variable as a parameter to [the ansible command](#run-the-playbook). - -**Note**: the server ID `jvb-1` is reserved for the JVB instance running on the Matrix host, therefore should not be used as the ID of an additional JVB host. +- **directly (without any Matrix integration)**. Just go to `https://jitsi.example.com`, and you can start a videoconference. -#### Set colibri WebSocket port +Note that you'll need to log in to your Jitsi's account to start a conference if you have configured authentication with `internal` auth. -The additional JVBs will need to expose the colibri WebSocket port. - -To expose the port, add the following configuration to your `vars.yml` files: - -```yaml -jitsi_jvb_container_colibri_ws_host_bind_port: 9090 -``` - -#### Set Prosody XMPP server - -The JVB will also need to know the location of the Prosody XMPP server. - -Similar to the server ID (`jitsi_jvb_server_id`), this can be set with the variable for the JVB by using the variable `jitsi_xmpp_server`. - -##### Set the Matrix domain - -The Jitsi Prosody container is deployed on the Matrix server by default, so the value can be set to the Matrix domain. To set the value, add the following configuration to your `vars.yml` files: - -```yaml -jitsi_xmpp_server: "{{ matrix_domain }}" -``` - -##### Set an IP address of the Matrix server - -Alternatively, the IP address of the Matrix server can be set. This can be useful if you would like to use a private IP address. - -To set the IP address of the Matrix server, add the following configuration to your `vars.yml` files: - -```yaml -jitsi_xmpp_server: "192.168.0.1" -``` - -##### Expose XMPP port - -By default, the Matrix server does not expose the XMPP port (`5222`); only the XMPP container exposes it internally inside the host. This means that the first JVB (which runs on the Matrix server) can reach it but the additional JVBs cannot. Therefore, the XMPP server needs to expose the port, so that the additional JVBs can connect to it. - -To expose the port and have Docker forward the port, add the following configuration to your `vars.yml` files: - -```yaml -jitsi_prosody_container_jvb_host_bind_port: 5222 -``` - -#### Reverse-proxy with Traefik - -To make Traefik reverse-proxy to these additional JVBs, add the following configuration to your main `vars.yml` file (`inventory/host_vars/matrix.example.com/vars.yml`): - -```yaml -# Traefik proxying for additional JVBs. These can't be configured using Docker -# labels, like the first JVB is, because they run on different hosts, so we add -# the necessary configuration to the file provider. -traefik_provider_configuration_extension_yaml: | - http: - routers: - {% for host in groups['jitsi_jvb_servers'] %} - - additional-{{ hostvars[host]['jitsi_jvb_server_id'] }}-router: - entryPoints: - - "{{ traefik_entrypoint_primary }}" - rule: "Host(`{{ jitsi_hostname }}`) && PathPrefix(`/colibri-ws/{{ hostvars[host]['jitsi_jvb_server_id'] }}/`)" - service: additional-{{ hostvars[host]['jitsi_jvb_server_id'] }}-service - {% if traefik_entrypoint_primary != 'web' %} - - tls: - certResolver: "{{ traefik_certResolver_primary }}" - - {% endif %} - - {% endfor %} - - services: - {% for host in groups['jitsi_jvb_servers'] %} - - additional-{{ hostvars[host]['jitsi_jvb_server_id'] }}-service: - loadBalancer: - servers: - - url: "http://{{ host }}:9090/" - - {% endfor %} -``` - -#### Run the playbook - -After configuring `hosts` and `vars.yml` files, run the playbook with [playbook tags](playbook-tags.md) as below: - -```sh -ansible-playbook -i inventory/hosts --limit jitsi_jvb_servers jitsi_jvb.yml --tags=common,setup-additional-jitsi-jvb,start -``` +Check [the official user guide](https://jitsi.github.io/handbook/docs/category/user-guide) for details about how to use Jitsi. ## Troubleshooting -### `Error: Account creation/modification not supported` - -If you get an error like `Error: Account creation/modification not supported` with authentication enabled, it's likely that you had previously installed Jitsi without auth/guest support. - -In this case, you should consider to rebuild your Jitsi installation. - -### Rebuilding your Jitsi installation - -If you ever run into any trouble or if you have changed configuration (`jitsi_*` variables) too much, you can rebuild your Jitsi installation. - -We normally don't recommend manual intervention, but Jitsi services tend to generate a lot of configuration files, and it is often wise to start afresh setting the services up, rather than messing with the existing configuration files. Since not all of those files are managed by Ansible (at least not yet), you may sometimes need to delete them by yourself manually. - -To rebuild your Jitsi configuration, follow the procedure below: - -- run this command locally to stop all Jitsi services: `just run-tags stop-group --extra-vars=group=jitsi` -- log in the server with SSH -- run this command remotely to remove all Jitsi configuration & data: `rm -rf /matrix/jitsi` -- run this command locally to set up Jitsi anew and restart services: `just install-service jitsi` +See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#troubleshooting) on the role's documentation for details. diff --git a/docs/configuring-playbook-jwt-service.md b/docs/configuring-playbook-jwt-service.md new file mode 100644 index 000000000..22fe30e8f --- /dev/null +++ b/docs/configuring-playbook-jwt-service.md @@ -0,0 +1,47 @@ + + +# Setting up JWT Service (optional) + +The playbook can install and configure [LiveKit JWT Service](https://github.com/element-hq/lk-jwt-service) for you. + +LK-JWT-Service is currently used for a single reason: generate JWT tokens with a given identity for a given room, so that users can use them to authenticate against LiveKit SFU. + +See the project's [documentation](https://github.com/element-hq/lk-jwt-service/) to learn more. + +## Decide on a domain and path + +By default, JWT Service is configured to be served: + +- on the Matrix domain (`matrix.example.com`), configurable via `matrix_livekit_jwt_service_hostname` +- under a `/livekit-jwt-service` path prefix, configurable via `matrix_livekit_jwt_service_path_prefix` + +This makes it easy to set it up, **without** having to adjust your DNS records manually. + +## Adjusting DNS records + +If you've changed the default hostname, **you may need to adjust your DNS** records accordingly to point to the correct server. + +## Adjusting the playbook configuration + +Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_livekit_jwt_service_enabled: true +``` + +## Installing + +After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the [installation](installing.md) command: `just install-all` or `just setup-all` + +## Usage + +Once installed, a new `org.matrix.msc4143.rtc_foci` section is added to the Element Web client to point to your JWT service URL (e.g., `https://matrix.example.com/livekit-jwt-service`). + +## Additional Information + +Refer to the LiveKit JWT-Service documentation for more details on configuring and using JWT Service. diff --git a/docs/configuring-playbook-ldap-auth.md b/docs/configuring-playbook-ldap-auth.md index d3a95d138..f6736a735 100644 --- a/docs/configuring-playbook-ldap-auth.md +++ b/docs/configuring-playbook-ldap-auth.md @@ -1,10 +1,21 @@ + + # Setting up the LDAP authentication password provider module (optional, advanced) The playbook can install and configure the [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3) LDAP Auth password provider for you. See the project's [documentation](https://github.com/matrix-org/matrix-synapse-ldap3/blob/main/README.rst) to learn what it does and why it might be useful to you. -If you decide that you'd like to let this playbook install it for you, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs): +## Adjusting the playbook configuration + +Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs): ```yaml matrix_synapse_ext_password_provider_ldap_enabled: true @@ -21,20 +32,29 @@ matrix_synapse_ext_password_provider_ldap_bind_password: "" matrix_synapse_ext_password_provider_ldap_filter: "" ``` -## Authenticating only using a password provider +### Authenticating only using a password provider -If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, feel free to disable it: +If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, you can disable it by adding the following configuration to your `vars.yml` file: ```yaml matrix_synapse_password_config_localdb_enabled: false ``` -## Using ma1sd Identity Server for authentication (not recommended) +## Installing + +After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: + + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start +``` + +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -The playbook can instead configure [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server for LDAP authentication. However, **we recommend not bothering with installing it** as ma1sd has been unmaintained for years. +`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. -If you wish to install it anyway, consult the [ma1sd Identity Server configuration](configuring-playbook-ma1sd.md#authentication). +## Usage -## Handling user registration +### Handling user registration If you wish for users to also be able to make new registrations against LDAP, you may **also** wish to [set up the ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md). diff --git a/docs/configuring-playbook-livekit-jwt-service.md b/docs/configuring-playbook-livekit-jwt-service.md new file mode 100644 index 000000000..f206c329a --- /dev/null +++ b/docs/configuring-playbook-livekit-jwt-service.md @@ -0,0 +1,18 @@ + + +# Setting up LiveKit JWT Service (optional) + +The playbook can install and configure [LiveKit JWT Service](https://github.com/element-hq/lk-jwt-service/) for you. + +This is a helper component which is part of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) that allows [Element Call](configuring-playbook-element-call.md) to integrate with [LiveKit Server](configuring-playbook-livekit-server.md). + +💡 LiveKit JWT Service is automatically installed and configured when either [Element Call](configuring-playbook-element-call.md) or the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) is enabled, so you don't need to do anything extra. + +Take a look at: + +- `roles/custom/matrix-livekit-jwt-service/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-livekit-jwt-service/templates/env.j2` for the component's default configuration. \ No newline at end of file diff --git a/docs/configuring-playbook-livekit-server.md b/docs/configuring-playbook-livekit-server.md new file mode 100644 index 000000000..afc514fc7 --- /dev/null +++ b/docs/configuring-playbook-livekit-server.md @@ -0,0 +1,38 @@ + + +# Setting up LiveKit Server (optional) + +The playbook can install and configure [LiveKit Server](https://github.com/livekit/livekit) for you. + +LiveKit Server is an open source project that provides scalable, multi-user conferencing based on WebRTC. It's designed to provide everything you need to build real-time video audio data capabilities in your applications. + +💡 LiveKit Server is automatically installed and configured when either [Element Call](configuring-playbook-element-call.md) or the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) is enabled, so you don't need to do anything extra. + +The [Ansible role for LiveKit Server](https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring LiveKit Server, you can check them via: +- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server/blob/main/docs/configuring-livekit-server.md) online +- 📁 `roles/galaxy/livekit-server/docs/configuring-livekit-server.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles) + +## Adjusting firewall rules + +To ensure LiveKit Server functions correctly, the following firewall rules and port forwarding settings are required: + +- `7881/tcp`: ICE/TCP + +- `7882/udp`: ICE/UDP Mux + +- `3479/udp`: TURN/UDP. Also see the [Limitations](#limitations) section below. + +- `5350/tcp`: TURN/TCP. Also see the [Limitations](#limitations) section below. + +💡 The suggestions above are inspired by the upstream [Ports and Firewall](https://docs.livekit.io/home/self-hosting/ports-firewall/) documentation based on how LiveKit is configured in the playbook. If you've using custom configuration for the LiveKit Server role, you may need to adjust the firewall rules accordingly. + +## Limitations + +For some reason, LiveKit Server's TURN ports (`3479/udp` and `5350/tcp`) are not reachable over IPv6 regardless of whether you've [enabled IPv6](./configuring-ipv6.md) for your server. + +It seems like LiveKit Server intentionally only listens on `udp4` and `tcp4` as seen [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L128) and [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L92). \ No newline at end of file diff --git a/docs/configuring-playbook-ma1sd.md b/docs/configuring-playbook-ma1sd.md index c2f9d3132..d520c1432 100644 --- a/docs/configuring-playbook-ma1sd.md +++ b/docs/configuring-playbook-ma1sd.md @@ -1,6 +1,20 @@ + + # Setting up ma1sd Identity Server (optional) -**⚠️Note**: ma1sd itself has also been unmaintained for years (the latest commit and release being from 2021). The role of identity servers in the Matrix specification also has an uncertain future. **We recommend not bothering with installing it unless it's the only way you can do what you need to do**. For example, certain things like LDAP integration can also be implemented via [the LDAP provider module for Synapse](./configuring-playbook-ldap-auth.md). +> [!WARNING] +> Since ma1sd has been unmaintained for years (the latest commit and release being from 2021) and the future of identity server's role in the Matrix specification is uncertain, **we recommend not bothering with installing it unless it's the only way you can do what you need to do**. +> +> Please note that certain things can be achieved with other components. For example, if you wish to implement LDAP integration, you might as well check out [the LDAP provider module for Synapse](./configuring-playbook-ldap-auth.md) instead. The playbook can configure the [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server for you. It is a fork of [mxisd](https://github.com/kamax-io/mxisd) which was pronounced end of life 2019-06-21. @@ -47,15 +61,15 @@ To enable matrix.org forwarding, add the following configuration to your `vars.y matrix_ma1sd_matrixorg_forwarding_enabled: true ``` -### Additional features +### Extending the configuration -What this playbook configures for your is some bare minimum Identity Server functionality, so that you won't need to rely on external 3rd party services. +There are some additional things you may wish to configure about the component. -A few variables can be toggled in this playbook to alter the ma1sd configuration that gets generated. +Take a look at: -Still, ma1sd can do much more. You can refer to the [ma1sd website](https://github.com/ma1uta/ma1sd) for more details and configuration options. +- `roles/custom/matrix-ma1sd/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_ma1sd_configuration_extension_yaml` variable -To use a more custom configuration, you can define a `matrix_ma1sd_configuration_extension_yaml` string variable and put your configuration in it. To learn more about how to do this, refer to the information about `matrix_ma1sd_configuration_extension_yaml` in the [default variables file](../roles/custom/matrix-ma1sd/defaults/main.yml) of the ma1sd component. +You can refer to the [ma1sd website](https://github.com/ma1uta/ma1sd) for more details and configuration options. #### Customizing email templates @@ -65,15 +79,15 @@ If you'd like to change the default email templates used by ma1sd, take a look a To use the [Registration](https://github.com/ma1uta/ma1sd/blob/master/docs/features/registration.md) feature of ma1sd, you can make use of the following variables: -- `matrix_synapse_enable_registration` - to enable user-initiated registration in Synapse +- `matrix_synapse_enable_registration` — to enable user-initiated registration in Synapse -- `matrix_synapse_enable_registration_captcha` - to validate registering users using reCAPTCHA, as described in the [enabling reCAPTCHA](configuring-captcha.md) documentation. +- `matrix_synapse_enable_registration_captcha` — to validate registering users using reCAPTCHA, as described in the [enabling reCAPTCHA](configuring-captcha.md) documentation. -- `matrix_synapse_registrations_require_3pid` - a list of 3pid types (among `'email'`, `'msisdn'`) required by the Synapse server for registering +- `matrix_synapse_registrations_require_3pid` — a list of 3pid types (among `'email'`, `'msisdn'`) required by the Synapse server for registering -- variables prefixed with `matrix_ma1sd_container_labels_` (e.g. `matrix_ma1sd_container_labels_matrix_client_3pid_registration_enabled`) - to configure the Traefik reverse-proxy to capture and send registration requests to ma1sd (instead of Synapse), so it can apply its additional functionality +- variables prefixed with `matrix_ma1sd_container_labels_` (e.g. `matrix_ma1sd_container_labels_matrix_client_3pid_registration_enabled`) — to configure the Traefik reverse-proxy to capture and send registration requests to ma1sd (instead of Synapse), so it can apply its additional functionality -- `matrix_ma1sd_configuration_extension_yaml` - to configure ma1sd as required. See the [Registration feature's docs](https://github.com/ma1uta/ma1sd/blob/master/docs/features/registration.md) for inspiration. Also see the [Additional features](#additional-features) section below to learn more about how to use `matrix_ma1sd_configuration_extension_yaml`. +- `matrix_ma1sd_configuration_extension_yaml` — to configure ma1sd as required. See the [Registration feature's docs](https://github.com/ma1uta/ma1sd/blob/master/docs/features/registration.md) for inspiration. Also see the [Additional features](#additional-features) section below to learn more about how to use `matrix_ma1sd_configuration_extension_yaml`. **Note**: For this to work, either the homeserver needs to [federate](configuring-playbook-federation.md) or the `openid` APIs need to exposed on the federation port. When federation is disabled and ma1sd is enabled, we automatically expose the `openid` APIs (only!) on the federation port. Make sure the federation port (usually `https://matrix.example.com:8448`) is whitelisted in your firewall (even if you don't actually use/need federation). @@ -150,10 +164,13 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju If email address validation emails sent by ma1sd are not reaching you, you should look into [Adjusting email-sending settings](configuring-playbook-email.md). -If you'd like additional logging information, temporarily enable verbose logging for ma1sd. +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-ma1sd`. + +### Increase logging verbosity -To enable it, add the following configuration to your `vars.yml` file: +If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: ```yaml +# See: https://github.com/ma1uta/ma1sd/blob/master/docs/troubleshooting.md#increase-verbosity matrix_ma1sd_verbose_logging: true ``` diff --git a/docs/configuring-playbook-matrix-authentication-service.md b/docs/configuring-playbook-matrix-authentication-service.md index 616ab54cc..eda09cc4b 100644 --- a/docs/configuring-playbook-matrix-authentication-service.md +++ b/docs/configuring-playbook-matrix-authentication-service.md @@ -1,6 +1,13 @@ + + # Setting up Matrix Authentication Service (optional) -The playbook can install and configure [Matrix Authentication Service](https://github.com/element-hq/matrix-authentication-service/) (MAS) - a service operating alongside your existing [Synapse](./configuring-playbook-synapse.md) homeserver and providing [better authentication, session management and permissions in Matrix](https://matrix.org/blog/2023/09/better-auth/). +The playbook can install and configure [Matrix Authentication Service](https://github.com/element-hq/matrix-authentication-service/) (MAS) — a service operating alongside your existing [Synapse](./configuring-playbook-synapse.md) homeserver and providing [better authentication, session management and permissions in Matrix](https://matrix.org/blog/2023/09/better-auth/). Matrix Authentication Service is an implementation of [MSC3861: Next-generation auth for Matrix, based on OAuth 2.0/OIDC](https://github.com/matrix-org/matrix-spec-proposals/pull/3861) and still work in progress, tracked at the [areweoidcyet.com](https://areweoidcyet.com/) website. @@ -36,8 +43,6 @@ Below, we'll try to **highlight some potential reasons for switching** to Matrix - ⚠️ the [Synapse](configuring-playbook-synapse.md) homeserver implementation (which is the default for this playbook). Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating wtih Matrix Authentication Service yet. -- ⚠️ **email sending** configured (see [Adjusting email-sending settings](./configuring-playbook-email.md)), because **Matrix Authentication Service [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user** going through the new SSO-based login flow. It's also possible to [work around email deliverability issues](#working-around-email-deliverability-issues) if your email configuration is not working. - - ❌ **disabling all password providers** for Synapse (things like [shared-secret-auth](./configuring-playbook-shared-secret-auth.md), [rest-auth](./configuring-playbook-rest-auth.md), [LDAP auth](./configuring-playbook-ldap-auth.md), etc.) More details about this are available in the [Expectations](#expectations) section below. ## Expectations @@ -54,28 +59,21 @@ This section details what you can expect when switching to the Matrix Authentica > cannot initialize matrix bot error="olm account is marked as shared, keys seem to have disappeared from the server" - - [matrix-reminder-bot](./configuring-playbook-bot-matrix-reminder-bot.md) fails to start (see [element-hq/matrix-authentication-service#3439](https://github.com/element-hq/matrix-authentication-service/issues/3439)) - - Other services may be similarly affected. This list is not exhaustive. - - ❌ **Encrypted appservices** do not work yet (related to [MSC4190](https://github.com/matrix-org/matrix-spec-proposals/pull/4190) and [PR 17705 for Synapse](https://github.com/element-hq/synapse/pull/17705)), so all bridges/bots that rely on encryption will fail to start (see [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3658) for Hookshot). You can use these bridges/bots only if you **keep end-to-bridge encryption disabled** (which is the default setting). -- ⚠️ **You will need to have email sending configured** (see [Adjusting email-sending settings](./configuring-playbook-email.md)), because **Matrix Authentication Service [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user** going through the new SSO-based login flow. It's also possible to [work around email deliverability issues](#working-around-email-deliverability-issues) if your email configuration is not working. - - ⚠️ [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) is **possible**, but requires **some playbook-assisted manual work**. Migration is **reversible with no or minor issues if done quickly enough**, but as users start logging in (creating new login sessions) via the new MAS setup, disabling MAS and reverting back to the Synapse user database will cause these new sessions to break. -- ⚠️ [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) does not currently seem to preserve the "admin" flag for users (as found in the Synapse database). All users are imported as non-admin - see [element-hq/matrix-authentication-service#3440](https://github.com/element-hq/matrix-authentication-service/issues/3440). You may need update the Matrix Authentication Service's database manually and adjust the `can_request_admin` column in the `users` table to `true` for users that need to be administrators (e.g. `UPDATE users SET can_request_admin = true WHERE username = 'someone';`) - - ⚠️ Delegating user authentication to MAS causes **your Synapse server to be completely dependant on one more service** for its operations. MAS is quick & lightweight and should be stable enough already, but this is something to keep in mind when making the switch. - ⚠️ If you've got [OIDC configured in Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on), you will need to migrate your OIDC configuration to MAS by adding an [Upstream OAuth2 configuration](#upstream-oauth2-configuration). -- ⚠️ A [compatibility layer](https://element-hq.github.io/matrix-authentication-service/setup/homeserver.html#set-up-the-compatibility-layer) is installed - all `/_matrix/client/*/login` (etc.) requests will be routed to MAS instead of going to the homeserver. This is done both publicly (e.g. `https://matrix.example.com/_matrix/client/*/login`) and on the internal Traefik entrypoint (e.g. `https://matrix-traefik:8008/_matrix/client/*/login`) which helps addon services reach the homeserver's Client-Server API. You typically don't need to do anything to make this work, but it's good to be aware of it, especially if you have a [custom webserver setup](./configuring-playbook-own-webserver.md). +- ⚠️ A [compatibility layer](https://element-hq.github.io/matrix-authentication-service/setup/homeserver.html#set-up-the-compatibility-layer) is installed — all `/_matrix/client/*/login` (etc.) requests will be routed to MAS instead of going to the homeserver. This is done both publicly (e.g. `https://matrix.example.com/_matrix/client/*/login`) and on the internal Traefik entrypoint (e.g. `https://matrix-traefik:8008/_matrix/client/*/login`) which helps addon services reach the homeserver's Client-Server API. You typically don't need to do anything to make this work, but it's good to be aware of it, especially if you have a [custom webserver setup](./configuring-playbook-own-webserver.md). - ✅ Your **existing login sessions will continue to work** (you won't get logged out). Migration will require a bit of manual work and minutes of downtime, but it's not too bad. - ✅ Various clients ([Cinny](./configuring-playbook-client-cinny.md), [Element Web](./configuring-playbook-client-element-web.md), Element X, FluffyChat) will be able to use the **new SSO-based login flow** provided by Matrix Authentication Service -- ✅ The **old login flow** (called `m.login.password`) **will still continue to work**, so clients (old Element Web, etc.) and bridges/bots that don't support the new OIDC-based login flow will still work. Going through the old login flow does not require users to have a verified email address, as [is the case](https://github.com/element-hq/matrix-authentication-service/issues/1505) for the new SSO-based login flow. +- ✅ The **old login flow** (called `m.login.password`) **will still continue to work**, so clients (old Element Web, etc.) and bridges/bots that don't support the new OIDC-based login flow will still work - ✅ [Registering users](./registering-users.md) via **the playbook's `register-user` tag remains unchanged**. The playbook automatically does the right thing regardless of homeserver implementation (Synapse, Dendrite, etc.) and whether MAS is enabled or not. When MAS is enabled, the playbook will forward user-registration requests to MAS. Registering users via the command-line is no longer done via the `/matrix/synapse/bin/register` script, but via `/matrix/matrix-authentication-service/bin/register-user`. @@ -248,7 +246,7 @@ matrix_authentication_service_config_upstream_oauth2_providers: #action: force #template: "{% raw %}{{ user.preferred_username }}{% endraw %}" # The display name is the user's display name. - displayname: + #displayname: #action: suggest #template: "{% raw %}{{ user.name }}{% endraw %}" # An email address to import. @@ -276,6 +274,15 @@ matrix_authentication_service_config_upstream_oauth2_providers: - go through the [migrating an existing homeserver](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) process - remove all Synapse OIDC-related configuration (`matrix_synapse_oidc_*`) to prevent it being in conflict with the MAS OIDC configuration +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-authentication-service/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-authentication-service/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_authentication_service_configuration_extension_yaml` variable + ## Installing Now that you've [adjusted the playbook configuration](#adjusting-the-playbook-configuration) and [your DNS records](#adjusting-dns-records), you can run the playbook with [playbook tags](playbook-tags.md) as below: @@ -428,7 +435,9 @@ If successful, you should see some output that looks like this: ✅ The legacy login API at "https://matrix.example.com/_matrix/client/v3/login" is reachable and is handled by MAS. ``` -## Management +## Usage + +### Management You can use the [`mas-cli` command-line tool](https://element-hq.github.io/matrix-authentication-service/reference/cli/index.html) (exposed via the `/matrix/matrix-authentication-service/bin/mas-cli` script) to perform administrative tasks against MAS. @@ -440,18 +449,26 @@ This documentation page already mentions: There are other sub-commands available. Run `/matrix/matrix-authentication-service/bin/mas-cli` to get an overview. -## User registration +### User registration After Matrix Authentication Service is [installed](#installing), users need to be managed there (unless you're managing them in an [upstream OAuth2 provider](#upstream-oauth2-configuration)). You can register users new users as described in the [Registering users](./registering-users.md) documentation (via `mas-cli manage register-user` or the Ansible playbook's `register-user` tag). -## Working around email deliverability issues +### Working around email deliverability issues + +Matrix Authentication Service only sends emails when: -Because Matrix Authentication Service [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user, you may need to work around email deliverability issues if [your email-sending configuration](./configuring-playbook-email.md) is not working. +- it verifies email addresses for users who are self-registering with a password -Matrix Authentication Service attempts to verify email addresses by sending a verification email to the address specified by the user whenever they log in to an account without a verified email address. +- a user tries to add an email to their account -If email delivery is not working, **you can retrieve the email configuration code from the Matrix Authentication Service's logs** (`journalctl -fu matrix-authentication-service`). +If Matrix Authentication Service tries to send an email and it fails because [your email-sending configuration](./configuring-playbook-email.md) is not working, you may need to work around email deliverability. + +If email delivery is not working, **you can retrieve the email verification code from the Matrix Authentication Service's logs** (`journalctl -fu matrix-authentication-service`). Alternatively, you can use the [`mas-cli` management tool](#management) to manually verify email addresses for users. Example: `/matrix/matrix-authentication-service/bin/mas-cli manage verify-email some.username email@example.com` + +## 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-authentication-service`. diff --git a/docs/configuring-playbook-matrix-corporal.md b/docs/configuring-playbook-matrix-corporal.md index 6c4df4985..34c80fe6b 100644 --- a/docs/configuring-playbook-matrix-corporal.md +++ b/docs/configuring-playbook-matrix-corporal.md @@ -1,10 +1,15 @@ -# Setting up Matrix Corporal (optional, advanced) + -⚠️ **Warning**: This is an advanced feature! It requires prior experience with Matrix and a specific need for using [Matrix Corporal](https://github.com/devture/matrix-corporal). If you're unsure whether you have such a need, you most likely don't. +# Setting up Matrix Corporal (optional, advanced) -
+> [!WARNING] +> This is an advanced feature! It requires prior experience with Matrix and a specific need for using [Matrix Corporal](https://github.com/devture/matrix-corporal). If you're unsure whether you have such a need, you most likely don't. The playbook can install and configure [matrix-corporal](https://github.com/devture/matrix-corporal) for you. @@ -115,6 +120,15 @@ aux_file_definitions: To learn more about what the policy configuration, see the matrix-corporal documentation on [policy](https://github.com/devture/matrix-corporal/blob/master/docs/policy.md). +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-corporal/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-corporal/templates/config.json.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_corporal_configuration_extension_json` variable + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: @@ -138,4 +152,16 @@ The following local filesystem paths are mounted in the `matrix-corporal` contai - `/matrix/corporal/cache` is mounted at `/var/cache/matrix-corporal` (read and write) -As an example: you can create your own configuration files in `/matrix/corporal/config` and they will appear in `/etc/matrix-corporal` in the Docker container. Your configuration (stuff in `matrix_corporal_policy_provider_config`) needs to refer to these files via the local container paths - `/etc/matrix-corporal` (read-only), `/var/matrix-corporal` (read and write), `/var/cache/matrix-corporal` (read and write). +As an example: you can create your own configuration files in `/matrix/corporal/config` and they will appear in `/etc/matrix-corporal` in the Docker container. Your configuration (stuff in `matrix_corporal_policy_provider_config`) needs to refer to these files via the local container paths — `/etc/matrix-corporal` (read-only), `/var/matrix-corporal` (read and write), `/var/cache/matrix-corporal` (read and write). + +## 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-corporal`. + +### Increase logging verbosity + +If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_corporal_debug: true +``` diff --git a/docs/configuring-playbook-matrix-ldap-registration-proxy.md b/docs/configuring-playbook-matrix-ldap-registration-proxy.md index 5f58ead69..489bb6d74 100644 --- a/docs/configuring-playbook-matrix-ldap-registration-proxy.md +++ b/docs/configuring-playbook-matrix-ldap-registration-proxy.md @@ -1,22 +1,33 @@ + + # Setting up matrix-ldap-registration-proxy (optional) The playbook can install and configure [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) for you. This proxy handles Matrix registration requests and forwards them to LDAP. +See the project's [documentation](https://gitlab.com/activism.international/matrix_ldap_registration_proxy/-/blob/main/README.md) to learn what it does and why it might be useful to you. + **Note**: This does support the full Matrix specification for registrations. It only provide a very coarse implementation of a basic password registration. -## Quickstart +## Adjusting the playbook configuration -Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +To enable the component, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs): ```yaml matrix_ldap_registration_proxy_enabled: true + # LDAP credentials -matrix_ldap_registration_proxy_ldap_uri: -matrix_ldap_registration_proxy_ldap_base_dn: -matrix_ldap_registration_proxy_ldap_user: -matrix_ldap_registration_proxy_ldap_password: +matrix_ldap_registration_proxy_ldap_uri: YOUR_URI_HERE +matrix_ldap_registration_proxy_ldap_base_dn: YOUR_DN_HERE +matrix_ldap_registration_proxy_ldap_user: YOUR_USER_HERE +matrix_ldap_registration_proxy_ldap_password: YOUR_PASSWORD_HERE ``` If you already use the [synapse external password provider via LDAP](configuring-playbook-ldap-auth.md) (that is, you have `matrix_synapse_ext_password_provider_ldap_enabled: true` and other options in your configuration) you can use the following values as configuration: @@ -32,6 +43,14 @@ matrix_ldap_registration_proxy_systemd_wanted_services_list_custom: - matrix-synapse.service ``` +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-ldap-registration-proxy/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: @@ -44,3 +63,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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. + +## 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-ldap-registration-proxy`. diff --git a/docs/configuring-playbook-matrix-media-repo.md b/docs/configuring-playbook-matrix-media-repo.md index 4a9c31372..e660d434d 100644 --- a/docs/configuring-playbook-matrix-media-repo.md +++ b/docs/configuring-playbook-matrix-media-repo.md @@ -1,39 +1,81 @@ -# Storing Matrix media files using matrix-media-repo (optional) + -[matrix-media-repo](https://docs.t2bot.io/matrix-media-repo/) (often abbreviated "MMR") is a highly customizable multi-domain media repository for Matrix. Intended for medium to large environments consisting of several homeservers, this media repo de-duplicates media (including remote media) while being fully compliant with the specification. +# Storing Matrix media files using matrix-media-repo (optional) -Smaller/individual homeservers can still make use of this project's features, though it may be difficult to set up or have higher than expected resource consumption. Please do your research before deploying this as this project may not be useful for your environment. +The playbook can install and configure [matrix-media-repo](https://docs.t2bot.io/matrix-media-repo/) (often abbreviated "MMR") for you. -For a simpler alternative (which allows you to offload your media repository storage to S3, etc.), you can [configure S3 storage](configuring-playbook-s3.md) instead of setting up matrix-media-repo. +MMR is a highly customizable multi-domain media repository for Matrix. Intended for medium to large environments consisting of several homeservers, this media repo de-duplicates media (including remote media) while being fully compliant with the specification. -| **Table of Contents** | -| :------------------------------------------------------------------------------------------ | -| [Quickstart](#quickstart) | -| [Additional configuration options](#configuring-the-media-repo) | -| [Importing data from an existing media store](#importing-data-from-an-existing-media-store) | +**Notes**: +- If MMR is enabled, other media store roles should be disabled (if using Synapse with other media store roles). +- Smaller/individual homeservers can still make use of this project's features, though it may be difficult to set up or have higher than expected resource consumption. Please do your research before deploying this as this project may not be useful for your environment. +- For a simpler alternative (which allows you to offload your media repository storage to S3, etc.), you can [configure S3 storage](configuring-playbook-s3.md) instead of setting up matrix-media-repo. -## Quickstart +## Adjusting the playbook configuration -Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file and [re-run the installation process](./installing.md) for the playbook: +To enable matrix-media-repo, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml matrix_media_repo_enabled: true - -# (optional) Turned off by default -# matrix_media_repo_metrics_enabled: true ``` -The repo is pre-configured for integrating with the Postgres database, Traefik proxy and [Prometheus/Grafana](configuring-playbook-prometheus-grafana.md) (if metrics enabled) from this playbook for all the available homeserver roles. When the media repo is enabled, other media store roles should be disabled (if using Synapse with other media store roles). - By default, the media-repo will use the local filesystem for data storage. You can alternatively use a `s3` cloud backend as well. Access token caching is also enabled by default since the logout endpoints are proxied through the media repo. -## Configuring the media-repo +### Enable metrics + +The playbook can enable and configure the metrics of the service for you. + +Metrics are **only enabled by default** if the builtin [Prometheus](configuring-playbook-prometheus-grafana.md) is enabled (by default, Prometheus isn't enabled). If so, metrics will automatically be collected by Prometheus and made available in Grafana. You will, however, need to set up your own Dashboard for displaying them. + +To enable the metrics, add the following configuration to your `vars.yml` file: + +```yaml +# Expose metrics (locally, on the container network). +matrix_media_repo_metrics_enabled: true +``` -Additional common configuration options: +**To collect metrics from an external Prometheus server**, besides enabling metrics as described above, you will also need to enable metrics exposure on `https://matrix.example.com/metrics/matrix-media-repo` by adding the following configuration to your `vars.yml` file: ```yaml +matrix_media_repo_metrics_proxying_enabled: true +``` + +By default metrics are exposed publicly **without** password-protection. To password-protect the metrics with dedicated credentials, add the following configuration to your `vars.yml` file: + +```yaml +matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_enabled: true +matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_users: '' +``` + +To `matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_users`, set the Basic Authentication credentials (raw `htpasswd` file content) used to protect the endpoint. See https://doc.traefik.io/traefik/middlewares/http/basicauth/#users for details about it. + +**Note**: alternatively, you can use `matrix_metrics_exposure_enabled` to expose all services on this `/metrics/*` feature, and you can use `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users` to password-protect the metrics of them. See [this section](configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server) for more information. -# The postgres database pooling options +#### Enable Grafana (optional) + +Probably you wish to enable Grafana along with Prometheus for generating graphs of the metics. + +To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions. + +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-media-repo/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + +Here is a list of additional common configuration options: + +```yaml +# The Postgres database pooling options # The maximum number of connects to hold open. More of these allow for more concurrent # processes to happen. @@ -60,10 +102,10 @@ matrix_media_repo_admins: [] # To disable this datastore, making it readonly, specify `forKinds: []`. # # The kinds available are: -# thumbnails - Used to store thumbnails of media (local and remote). -# remote_media - Original copies of remote media (servers not configured by this repo). -# local_media - Original uploads for local media. -# archives - Archives of content (GDPR and similar requests). +# thumbnails — Used to store thumbnails of media (local and remote). +# remote_media — Original copies of remote media (servers not configured by this repo). +# local_media — Original uploads for local media. +# archives — Archives of content (GDPR and similar requests). matrix_media_repo_datastore_file_for_kinds: ["thumbnails", "remote_media", "local_media", "archives"] matrix_media_repo_datastore_s3_for_kinds: [] @@ -85,11 +127,8 @@ matrix_media_repo_datastore_s3_opts_bucket_name: "your-media-bucket" # An optional storage class for tuning how the media is stored at s3. # See https://aws.amazon.com/s3/storage-classes/ for details; uncomment to use. # matrix_media_repo_datastore_s3_opts_storage_class: "STANDARD" - ``` -Full list of configuration options with documentation can be found in [`roles/custom/matrix-media-repo/defaults/main.yml`](../roles/custom/matrix-media-repo/defaults/main.yml) - ## Signing Keys Authenticated media endpoints ([MSC3916](https://github.com/matrix-org/matrix-spec-proposals/pull/3916)) requires MMR to have a configured signing key to authorize outbound federation requests. Additionally, the signing key must be merged with your homeserver's signing key file. @@ -161,3 +200,15 @@ docker exec -it matrix-media-repo \ Enter `1` for the Machine ID when prompted (you are not doing any horizontal scaling) unless you know what you're doing. This should output a `msg="Import completed"` when finished successfully! + +## 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-media-repo`. + +### Increase logging verbosity + +If you want to turn on sentry's built-in debugging, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_media_repo_sentry_debug: true +``` diff --git a/docs/configuring-playbook-matrix-registration.md b/docs/configuring-playbook-matrix-registration.md index fb5e04b31..441c85973 100644 --- a/docs/configuring-playbook-matrix-registration.md +++ b/docs/configuring-playbook-matrix-registration.md @@ -1,8 +1,16 @@ + + # Setting up matrix-registration (optional) -⚠️ **Warnings**: -- This is a poorly maintained and buggy project. It's better to avoid using it. -- This is not related to [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) +> [!WARNING] +> - This is a poorly maintained and buggy project. It's better to avoid using it. +> - This is not related to [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) The playbook can install and configure [matrix-registration](https://github.com/ZerataX/matrix-registration) for you. It is a simple python application to have a token based Matrix registration. @@ -47,6 +55,15 @@ If you've changed the default hostname, you may need to create a CNAME record fo When setting, replace `example.com` with your own. +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-registration/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-registration/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_registration_configuration_extension_yaml` variable + ## 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: @@ -64,7 +81,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju **matrix-registration** gets exposed at `https://matrix.example.com/matrix-registration` -It provides various [APIs](https://github.com/ZerataX/matrix-registration/wiki/api) - for creating registration tokens, listing tokens, disabling tokens, etc. To make use of all of its capabilities, consider using `curl`. +It provides various [APIs](https://github.com/ZerataX/matrix-registration/wiki/api) — for creating registration tokens, listing tokens, disabling tokens, etc. To make use of all of its capabilities, consider using `curl`. We make the most common APIs easy to use via the playbook (see below). @@ -92,3 +109,7 @@ ansible-playbook -i inventory/hosts setup.yml \ ``` The shortcut command with `just` program is also available: `just run-tags list-matrix-registration-tokens` + +## 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-registration`. diff --git a/docs/configuring-playbook-matrix-rtc.md b/docs/configuring-playbook-matrix-rtc.md new file mode 100644 index 000000000..fae94f497 --- /dev/null +++ b/docs/configuring-playbook-matrix-rtc.md @@ -0,0 +1,59 @@ + + +# Setting up the Matrix RTC stack (optional) + +The playbook can install and configure the Matrix RTC (Real-Time Communication) stack. + +The Matrix RTC stack is a set of supporting components ([LiveKit Server](configuring-playbook-livekit-server.md) and [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md)) that allow the new [Element Call](configuring-playbook-element-call.md) audio/video calls to function. + +💡 If you only plan on doing audio/video calls via Matrix client (which typically embed the Element Call frontend UI within them), you only need to install the Matrix RTC stack and don't necessarily need to install [Element Call](configuring-playbook-element-call.md). See the [Decide between Element Call vs just the Matrix RTC stack](configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack) section of the [Element Call documentation](configuring-playbook-element-call.md) for more details. + +## Prerequisites + +- A [Synapse](configuring-playbook-synapse.md) homeserver (see the warning below) +- [Federation](configuring-playbook-federation.md) being enabled for your Matrix homeserver (federation is enabled by default, unless you've explicitly disabled it), because [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) currently [requires it](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3562#issuecomment-2725250554) ([relevant source code](https://github.com/element-hq/lk-jwt-service/blob/f5f5374c4bdcc00a4fb13d27c0b28e20e4c62334/main.go#L135-L146)) +- Various experimental features for the Synapse homeserver which Element Call [requires](https://github.com/element-hq/element-call/blob/93ae2aed9841e0b066d515c56bd4c122d2b591b2/docs/self-hosting.md#a-matrix-homeserver) (automatically done when Element Call is enabled) +- A [LiveKit Server](configuring-playbook-livekit-server.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](#decide-between-element-call-vs-just-the-matrix-rtc-stack)) +- The [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](#decide-between-element-call-vs-just-the-matrix-rtc-stack)) +- A client compatible with Element Call. As of 2025-03-15, that's just [Element Web](configuring-playbook-client-element-web.md) and the Element X mobile clients (iOS and Android). + +> [!WARNING] +> Because Element Call [requires](https://github.com/element-hq/element-call/blob/93ae2aed9841e0b066d515c56bd4c122d2b591b2/docs/self-hosting.md#a-matrix-homeserver) a few experimental features in the Matrix protocol, it's **very likely that it only works with the Synapse homeserver**. + +## Adjusting the playbook configuration + +Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +# Enable the Matrix RTC stack. +# This provides all supporting services for Element Call, without the Element Call frontend. +matrix_rtc_enabled: true +``` + +## Adjusting firewall rules + +In addition to the HTTP/HTTPS ports (which you've already exposed as per the [prerequisites](prerequisites.md) document), you'll also need to open ports required by [LiveKit Server](configuring-playbook-livekit-server.md) as described in its own [Adjusting firewall rules](configuring-playbook-livekit-server.md#adjusting-firewall-rules) section. + +## Installing + +After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records) and [adjusting firewall rules](#adjusting-firewall-rules), run the playbook with [playbook tags](playbook-tags.md) as below: + + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start +``` + +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 + +Once installed, Matrix clients which support Element Call (like [Element Web](configuring-playbook-client-element-web.md) and Element X on mobile (iOS and Android)) will automatically use the Matrix RTC stack. + +These clients typically embed the Element Call frontend UI within them, so installing [Element Call](configuring-playbook-element-call.md) is only necessary if you'd like to use it standalone - directly via a browser. \ No newline at end of file diff --git a/docs/configuring-playbook-nginx.md b/docs/configuring-playbook-nginx.md index 2d3353081..c15ad7f14 100644 --- a/docs/configuring-playbook-nginx.md +++ b/docs/configuring-playbook-nginx.md @@ -1,3 +1,14 @@ + + # Configure Nginx (optional, advanced) Since 2024-01, this playbook no longer uses nginx as its reverse-proxy. diff --git a/docs/configuring-playbook-ntfy.md b/docs/configuring-playbook-ntfy.md index 12bc7fc61..866f4bc96 100644 --- a/docs/configuring-playbook-ntfy.md +++ b/docs/configuring-playbook-ntfy.md @@ -1,12 +1,47 @@ + + # Setting up the ntfy push notifications server (optional) -The playbook can install and configure the [ntfy](https://ntfy.sh/) push notifications server for you. +The playbook can install and configure the [ntfy](https://ntfy.sh/) (pronounced "notify") push notifications server for you. + +ntfy lets you send push notifications to your phone or desktop via scripts from any computer, using simple HTTP PUT or POST requests. It makes it possible to send/receive notifications, without relying on servers owned and controlled by third parties. + +With the [UnifiedPush](https://unifiedpush.org) standard, ntfy also enables self-hosted push notifications from Matrix (and other) servers to UnifiedPush-compatible Matrix client apps running on Android devices. + +See the project's [documentation](https://docs.ntfy.sh/) to learn what ntfy does and why it might be useful to you. + +The [Ansible role for ntfy](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring ntfy, you can check them via: +- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy/blob/main/docs/configuring-ntfy.md) online +- 📁 `roles/galaxy/ntfy/docs/configuring-ntfy.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles) + +**Note**: this playbook focuses on setting up a ntfy server for getting it send push notifications with UnifiedPush to Matrix-related services that this playbook installs, while the installed server will be available for other non-Matrix apps like [Tusky](https://tusky.app/) and [DAVx⁵](https://www.davx5.com/) as well. This playbook does not intend to support all of ntfy's features. If you want to use them as well, refer the role's documentation for details to configure them by yourself. + +### Improve push notification's privacy with ntfy + +By default, push notifications received on Matrix apps on Android/iOS act merely as "wake-up calls" for the application, which contain only event IDs, and do not transmit actual message payload such as text message data. -Using the [UnifiedPush](https://unifiedpush.org) standard, ntfy enables self-hosted (Google-free) push notifications from Matrix (and other) servers to UnifiedPush-compatible Matrix compatible client apps running on Android and other devices. +While your messages remain private even without ntfy, it makes it possible to improve privacy and sovereignty of your Matrix installation, offering greater control over your data, by avoiding routing these "application wake-up calls" through Google or Apple servers and having them pass through the self-hosted ntfy instance on your Matrix server. -This role is intended to support UnifiedPush notifications for use with the Matrix and Matrix-related services that this playbook installs. This role is not intended to support all of ntfy's other features. +### How ntfy works with UnifiedPush -**Note**: In contrast to push notifications using Google's FCM or Apple's APNs, the use of UnifiedPush allows each end-user to choose the push notification server that they prefer. As a consequence, deploying this ntfy server does not by itself ensure any particular user or device or client app will use it. +⚠️ [UnifiedPush does not work on iOS.](https://unifiedpush.org/users/faq/#will-unifiedpush-ever-work-on-ios) + +ntfy implements UnifiedPush, the standard which makes it possible to send and receive push notifications without using Google's Firebase Cloud Messaging (FCM) service. + +Working as a **Push Server**, a ntfy server can forward messages via [the ntfy Android app](https://docs.ntfy.sh/subscribe/phone/) as a **Distributor** to a UnifiedPush-compatible Matrix client such as Element Android and FluffyChat Android (see [here](https://unifiedpush.org/users/distributors/#definitions) for the definition of the Push Server and the Distributor). + +Note that UnifiedPush-compatible applications must be able to communicate with the ntfy Android app which works as the Distributor on the same device, in order to receive push notifications from the Push Server. + +As the ntfy Android app functions as the Distributor, you do not have to install something else on your device, besides a UnifiedPush-compatible Matrix client. ## Adjusting DNS records @@ -16,23 +51,27 @@ When setting, replace `example.com` with your own. ## Adjusting the playbook configuration -To enable ntfy, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +To enable a ntfy server, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml -# Enabling it is the only required setting -ntfy_enabled: true +######################################################################## +# # +# ntfy # +# # +######################################################################## -# Uncomment to enable the ntfy web app (disabled by default) -# ntfy_web_root: app # defaults to "disable" +ntfy_enabled: true -# Uncomment and change to inject additional configuration options. -# ntfy_configuration_extension_yaml: | -# log_level: DEBUG +######################################################################## +# # +# /ntfy # +# # +######################################################################## ``` -For a more complete list of variables that you could override, see the [`defaults/main.yml` file](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy/blob/main/defaults/main.yml) of the ntfy Ansible role. +As the most of the necessary settings for the role have been taken care of by the playbook, you can enable the ntfy server on your Matrix server with this minimum configuration. -For a complete list of ntfy config options that you could put in `ntfy_configuration_extension_yaml`, see the [ntfy config documentation](https://ntfy.sh/docs/config/#config-options). +See the role's documentation for details about configuring ntfy per your preference (such as [setting access control with authentication](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy/blob/main/docs/configuring-ntfy.md#enable-access-control-with-authentication-optional)). ### Adjusting the ntfy URL (optional) @@ -47,6 +86,20 @@ ntfy_hostname: push.example.com After changing the domain, **you may need to adjust your DNS** records to point the ntfy domain to the Matrix server. +### Enable web app (optional) + +The ntfy server can be accessed via its web app where you can subscribe to and push to "topics" from the browser. The web app may be helpful to troubleshoot notification issues or to use ntfy for other purposes than getting ntfy send UnifiedPush notifications to your Matrix-related services. + +**Note**: subscribing to a topic is not necessary for using the nfty server as the Push Server for UnifiedPush. + +To enable the web app, add the following configuration to your `vars.yml` file: + +```yaml +ntfy_web_root: app +``` + +See [the official documentation](https://docs.ntfy.sh/subscribe/web/) for details about how to use it. + ## 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: @@ -62,59 +115,47 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju ## Usage -To make use of your ntfy installation, on Android for example, you need two things: - -* the `ntfy` app -* a UnifiedPush-compatible Matrix app - -You need to install the `ntfy` app on each device on which you want to receive push notifications through your ntfy server. The `ntfy` app will provide UnifiedPush notifications to any number of UnifiedPush-compatible messaging apps installed on the same device. +To receive push notifications with UnifiedPush from the ntfy server, you need to **install [the ntfy Android app](https://docs.ntfy.sh/subscribe/phone/)** which works as the Distrubutor, **log in to the account on the ntfy app** if you have enabled the access control, and then **configure a UnifiedPush-compatible Matrix client**. After setting up the ntfy Android app, the Matrix client listens to it, and push notitications are "distributed" from it. -### Setting up the `ntfy` Android app +For details about installing and configuring the ntfy Android app, take a look at [this section](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy/blob/main/docs/configuring-ntfy.md#install-the-ntfy-androidios-app) on the role's documentation. -1. Install the [ntfy Android app](https://ntfy.sh/docs/subscribe/phone/) from F-droid or Google Play. -2. In its Settings -> `General: Default server`, enter your ntfy server URL, such as `https://ntfy.example.com`. -3. In its Settings -> `Advanced: Connection protocol`, choose `WebSockets`. +⚠️ Though the ntfy app is available for iOS ([App Store](https://apps.apple.com/us/app/ntfy/id1625396347); the app's source code can be retrieved from [here](https://github.com/binwiederhier/ntfy-ios)), **any Matrix clients for iOS currently do not support ntfy** due to [technical limitations of the iOS platform](https://github.com/binwiederhier/ntfy-ios/blob/main/docs/TECHNICAL_LIMITATIONS.md). If you develop your own Matrix client app for iOS, you may need to use the [Sygnal](configuring-playbook-sygnal.md) push gateway service to deliver push notifications to it. -That is all you need to do in the ntfy app. It has many other features, but for our purposes you can ignore them. In particular you do not need to follow any instructions about subscribing to a notification topic as UnifiedPush will do that automatically. +### Setting up a UnifiedPush-compatible Matrix client -### Setting up a UnifiedPush-compatible Matrix app +Having configured the ntfy Android app, you can configure a UnifiedPush-compatible Matrix client on the same device. -Install any UnifiedPush-enabled Matrix app on that same device. The Matrix app will learn from the `ntfy` app that you have configured UnifiedPush on this device, and then it will tell your Matrix server to use it. +Steps needed for specific Matrix clients: -Steps needed for specific Matrix apps: +* FluffyChat-Android: this should auto-detect and use the app. No manual settings required. -* FluffyChat-android: - - Should auto-detect and use it. No manual settings. - -* SchildiChat-android: +* SchildiChat-Android: 1. enable `Settings` -> `Notifications` -> `UnifiedPush: Force custom push gateway`. - 2. choose `Settings` -> `Notifications` -> `UnifiedPush: Re-register push distributor`. *(For info, a more complex alternative to achieve the same is: delete the relevant unifiedpush registration in `ntfy` app, force-close SchildiChat, re-open it.)* + 2. choose `Settings` -> `Notifications` -> `UnifiedPush: Re-register push distributor`. *(For info, a more complex alternative to achieve the same is: delete the relevant unifiedpush registration in the ntfy Android app, force-close SchildiChat, re-open it.)* 3. verify `Settings` -> `Notifications` -> `UnifiedPush: Notification targets` as described below in the "Troubleshooting" section. -* Element-android v1.4.26+: +* Element-Android v1.4.26+: 1. choose `Settings` -> `Notifications` -> `Notification method` -> `ntfy` 2. verify `Settings` -> `Troubleshoot` -> `Troubleshoot notification settings` -If the Matrix app asks, "Choose a distributor: FCM Fallback or ntfy", then choose "ntfy". - -If the Matrix app doesn't seem to pick it up, try restarting it and try the Troubleshooting section below. - -### Web App - -ntfy also has a web app to subscribe to and push to topics from the browser. This may be helpful to further troubleshoot UnifiedPush problems or to use ntfy for other purposes. The web app only runs in the browser locally (after downloading the JavaScript). +If the Matrix client asks, "Choose a distributor: FCM Fallback or ntfy", then choose "ntfy". -The web app is disabled in this playbook by default as the expectation is that most users won't use it. You can either use the [official hosted one](https://ntfy.sh/app) (it supports using other public reachable ntfy instances) or host it yourself by setting `ntfy_web_root: "app"` and re-running Ansible. +If the Matrix client doesn't seem to pick it up, try restarting it and try the Troubleshooting section below. ## Troubleshooting -First check that the Matrix client app you are using supports UnifiedPush. There may well be different variants of the app. +The simple [UnifiedPush troubleshooting](https://unifiedpush.org/users/troubleshooting/) app [UP-Example](https://f-droid.org/en/packages/org.unifiedpush.example/) can be used to manually test UnifiedPush registration and operation on an Android device. + +### Check the Matrix client -Set the ntfy server's log level to 'DEBUG', as shown in the example settings above, and watch the server's logs with `sudo journalctl -fu matrix-ntfy`. +Make sure that the Matrix client you are using supports UnifiedPush. There may well be different variants of the app. -To check if UnifiedPush is correctly configured on the client device, look at "Settings -> Notifications -> Notification Targets" in Element Android or SchildiChat Android, or "Settings -> Notifications -> Devices" in FluffyChat. There should be one entry for each Matrix client app that has enabled push notifications, and when that client is using UnifiedPush you should see a URL that begins with your ntfy server's URL. +To check if UnifiedPush is correctly configured on the client device, look at "Settings -> Notifications -> Notification Targets" in Element Android or SchildiChat Android, or "Settings -> Notifications -> Devices" in FluffyChat. There should be one entry for each Matrix client that has enabled push notifications, and when that client is using UnifiedPush you should see a URL that begins with your ntfy server's URL. In the "Notification Targets" screen in Element Android or SchildiChat Android, two relevant URLs are shown, "push\_key" and "Url", and both should begin with your ntfy server's URL. If "push\_key" shows your server but "Url" shows an external server such as `up.schildi.chat` then push notifications will still work but are being routed through that external server before they reach your ntfy server. To rectify that, in SchildiChat (at least around version 1.4.20.sc55) you must enable the `Force custom push gateway` setting as described in the "Usage" section above. If it is not working, useful tools are "Settings -> Notifications -> Re-register push distributor" and "Settings -> Notifications -> Troubleshoot Notifications" in SchildiChat Android (possibly also Element Android). In particular the "Endpoint/FCM" step of that troubleshooter should display your ntfy server's URL that it has discovered from the ntfy client app. -The simple [UnifiedPush troubleshooting](https://unifiedpush.org/users/troubleshooting/) app [UP-Example](https://f-droid.org/en/packages/org.unifiedpush.example/) can be used to manually test UnifiedPush registration and operation on an Android device. +### Check the service's logs + +See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy/blob/main/docs/configuring-ntfy.md#check-the-services-logs) on the role's documentation for details. diff --git a/docs/configuring-playbook-own-webserver.md b/docs/configuring-playbook-own-webserver.md index 8f8f8682d..56a1b8e90 100644 --- a/docs/configuring-playbook-own-webserver.md +++ b/docs/configuring-playbook-own-webserver.md @@ -1,3 +1,21 @@ + + # Using your own webserver, instead of this playbook's Traefik reverse-proxy (optional, advanced) By default, this playbook installs its own [Traefik](https://traefik.io/) reverse-proxy server (in a Docker container) which listens on ports 80 and 443. If that's okay, you can skip this document. @@ -8,7 +26,7 @@ By default, this playbook installs its own [Traefik](https://traefik.io/) revers - serving public traffic and providing SSL-termination with certificates obtained from [Let's Encrypt](https://letsencrypt.org/). See [Adjusting SSL certificate retrieval](./configuring-playbook-ssl-certificates.md). -- assists internal communication between addon services (briges, bots, etc.) and the homeserver via an internal entrypoint (`matrix-internal-matrix-client-api`). +- assists internal communication between addon services (bridges, bots, etc.) and the homeserver via an internal entrypoint (`matrix-internal-matrix-client-api`). There are 2 ways to use Traefik with this playbook, as described below. @@ -18,8 +36,6 @@ To have the playbook install and use Traefik, add the following configuration to ```yaml matrix_playbook_reverse_proxy_type: playbook-managed-traefik - -traefik_config_certificatesResolvers_acme_email: YOUR_EMAIL_ADDRESS ``` Traefik will manage SSL certificates for all services seamlessly. @@ -56,10 +72,10 @@ By default, the playbook configured a `default` certificate resolver and multipl You need to configure 4 entrypoints for your Traefik server: -- `web` (TCP port `80`) - used for redirecting to HTTPS (`web-secure`) -- `web-secure` (TCP port `443`) - used for exposing the Matrix Client-Server API and all other services -- `matrix-federation` (TCP port `8448`) - used for exposing the Matrix Federation API -- `matrix-internal-matrix-client-api` (TCP port `8008`) - used internally for addon services (bridges, bots) to communicate with the homserver +- `web` (TCP port `80`) — used for redirecting to HTTPS (`web-secure`) +- `web-secure` (TCP port `443`) — used for exposing the Matrix Client-Server API and all other services +- `matrix-federation` (TCP port `8448`) — used for exposing the Matrix Federation API +- `matrix-internal-matrix-client-api` (TCP port `8008`) — used internally for addon services (bridges, bots) to communicate with the homserver Below is some configuration for running Traefik yourself, although we recommend using [Traefik managed by the playbook](#traefik-managed-by-the-playbook). @@ -127,7 +143,7 @@ Doing this is possible, but requires manual work. There are 2 ways to go about it: -- (recommended) [Fronting the integrated reverse-proxy webserver with another reverse-proxy](#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) - using the playbook-managed reverse-proxy (Traefik), but disabling SSL termination for it, exposing this reverse-proxy on a few local ports (e.g. `127.0.0.1:81`, etc.) and forwarding traffic from your own webserver to those few ports +- (recommended) [Fronting the integrated reverse-proxy webserver with another reverse-proxy](#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) — using the playbook-managed reverse-proxy (Traefik), but disabling SSL termination for it, exposing this reverse-proxy on a few local ports (e.g. `127.0.0.1:81`, etc.) and forwarding traffic from your own webserver to those few ports - (difficult) [Using no reverse-proxy on the Matrix side at all](#using-no-reverse-proxy-on-the-matrix-side-at-all) disabling the playbook-managed reverse-proxy (Traefik), exposing services one by one using `_host_bind_port` variables and forwarding traffic from your own webserver to those ports @@ -201,7 +217,7 @@ To put it another way: ### Using no reverse-proxy on the Matrix side at all -Instead of [Fronting the integrated reverse-proxy webserver with another reverse-proxy](#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy), you can also go another way -- completely disabling the playbook-managed Traefik reverse-proxy. You would then need to reverse-proxy from your own webserver directly to each individual Matrix service. +Instead of [Fronting the integrated reverse-proxy webserver with another reverse-proxy](#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy), you can also go another way — completely disabling the playbook-managed Traefik reverse-proxy. You would then need to reverse-proxy from your own webserver directly to each individual Matrix service. This is more difficult, as you would need to handle the configuration for each service manually. Enabling additional services would come with extra manual work you need to do. diff --git a/docs/configuring-playbook-pantalaimon.md b/docs/configuring-playbook-pantalaimon.md index db40fe018..92ab32344 100644 --- a/docs/configuring-playbook-pantalaimon.md +++ b/docs/configuring-playbook-pantalaimon.md @@ -1,3 +1,10 @@ + + # Setting up Pantalaimon (E2EE aware proxy daemon) (optional) The playbook can install and configure the [pantalaimon](https://github.com/matrix-org/pantalaimon) E2EE aware proxy daemon for you. @@ -14,7 +21,13 @@ Add the following configuration to your `inventory/host_vars/matrix.example.com/ matrix_pantalaimon_enabled: true ``` -The default configuration should suffice. For advanced configuration, you can override the variables documented in the role's [defaults](../roles/custom/matrix-pantalaimon/defaults/main.yml). +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-pantalaimon/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_pantalaimon_configuration` variable ## Installing @@ -28,3 +41,14 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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. + +## 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-pantalaimon`. + +The default logging level for this component is `Warning`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# Valid values: Error, Warning, Info, Debug +matrix_pantalaimon_log_level: Debug +``` diff --git a/docs/configuring-playbook-postgres-backup.md b/docs/configuring-playbook-postgres-backup.md index 165609d0c..d5bd0fc87 100644 --- a/docs/configuring-playbook-postgres-backup.md +++ b/docs/configuring-playbook-postgres-backup.md @@ -1,38 +1,17 @@ -# Setting up postgres backup (optional) + -For a more complete backup solution (one that includes not only Postgres, but also other configuration/data files), you may wish to look into [BorgBackup](configuring-playbook-backup-borg.md) instead. +# Setting up Postgres backup (optional) -## Adjusting the playbook configuration +The playbook can install and configure [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local) for you. -To enable Postgres backup, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +The [Ansible role for docker-postgres-backup-local](https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring docker-postgres-backup-local, you can check them via: +- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup/blob/main/docs/configuring-postgres-backup.md) online +- 📁 `roles/galaxy/postgres_backup/docs/configuring-postgres-backup.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles) -```yaml -postgres_backup_enabled: true -``` - -Refer to the table below for additional configuration variables and their default values. - -| Name | Default value | Description | -| :-------------------------------- | :--------------------------- | :--------------------------------------------------------------- | -|`postgres_backup_enabled`|`false`|Set to true to use [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local) to create automatic database backups| -|`postgres_backup_schedule`| `'@daily'` |Cron-schedule specifying the interval between postgres backups.| -|`postgres_backup_keep_days`|`7`|Number of daily backups to keep| -|`postgres_backup_keep_weeks`|`4`|Number of weekly backups to keep| -|`postgres_backup_keep_months`|`12`|Number of monthly backups to keep| -|`postgres_backup_base_path` | `"{{ matrix_base_data_path }}/postgres-backup"` | Base path for postgres-backup. Also see `postgres_backup_data_path` | -|`postgres_backup_data_path` | `"{{ postgres_backup_base_path }}/data"` | Storage path for postgres-backup database backups | - -## Installing - -After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: - - -```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start -``` - -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. +**Note**: for a more complete backup solution (one that includes not only Postgres, but also other configuration/data files), you may wish to look into [BorgBackup](configuring-playbook-backup-borg.md) instead. diff --git a/docs/configuring-playbook-prometheus-grafana.md b/docs/configuring-playbook-prometheus-grafana.md index 851fa1635..c426af8ff 100644 --- a/docs/configuring-playbook-prometheus-grafana.md +++ b/docs/configuring-playbook-prometheus-grafana.md @@ -1,6 +1,24 @@ + + # Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server (optional) -The playbook can install [Grafana](https://grafana.com/) with [Prometheus](https://prometheus.io/) and configure performance metrics of your homeserver with graphs for you. +The playbook can install [Prometheus](https://prometheus.io/) with [Grafana](https://grafana.com/) and configure performance metrics of your homeserver with graphs for you. + +> [!WARNING] +> Metrics and graphs contain a lot of information, and anyone who has access to them can make an educated guess about your server usage patterns. This especially applies to small personal/family scale homeservers, where the number of samples is fairly limited. Analyzing the metrics over time, one might be able to figure out your life cycle, such as when you wake up, go to bed, etc. Before enabling (anonymous) access, you should carefully evaluate the risk, and if you do enable it, it is highly recommended to change your Grafana password from the default one. +> +> Most of our Docker containers run with limited system access, but the `prometheus-node-exporter` can access the host network stack and (readonly) root filesystem. If it is fine, you can enable it and have it capture metrics about them (see [below](#enable-metrics-and-graphs-for-generic-system-information-optional) for the instruction). Even if `prometheus-node-exporter` is not enabled, you will still get Synapse homeserver metrics. Note that both of these dashboards are always be enabled, so you can still see historical data even after disabling either source. ## Adjusting DNS records @@ -8,35 +26,111 @@ By default, this playbook installs Grafana web user-interface on the `stats.` su When setting, replace `example.com` with your own. -## Adjusting the playbook configuration +**Note**: It is possible to install Prometheus without installing Grafana. In this case it is not required to create the CNAME record. + +## Adjusting the playbook configuration — Prometheus -To enable Grafana and/or Prometheus, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +Prometheus is an open-source systems monitoring and alerting toolkit. It is a time series database, which holds all the data we're going to talk about. + +To enable it, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml prometheus_enabled: true +``` + +**Note**: the retention policy of Prometheus metrics is [15 days by default](https://prometheus.io/docs/prometheus/latest/storage/#operational-aspects). Older data gets deleted automatically. + +### Enable metrics and graphs for generic system information (optional) + +You can enable the [Node Exporter](https://prometheus.io/docs/guides/node-exporter/), an addon of sorts to Prometheus that collects generic system information such as CPU, memory, filesystem, and even system temperatures. + +To enable it, add the following configuration to your `vars.yml` file: -# You can remove this, if unnecessary. +```yaml prometheus_node_exporter_enabled: true +``` + +### Enable metrics and graphs for Postgres (optional) + +Expanding on the metrics exposed by the Synapse exporter and the Node exporter, the playbook can also install and configure the [PostgreSQL Server Exporter](https://github.com/prometheus-community/postgres_exporter) that exposes more detailed information about what's happening on your Postgres database. + +Enabling the exporter sets up the docker container, connects it to the database and adds a 'job' to the Prometheus config which tells Prometheus about this new exporter. -# You can remove this, if unnecessary. +To enable it, add the following configuration to your `vars.yml` file: + +**Note**: `prometheus_postgres_exporter_database_username` has nothing to do with your Matrix user ID. It can be any string you'd like. + +```yaml prometheus_postgres_exporter_enabled: true -# You can remove this, if unnecessary. +# The username for the user that the exporter uses to connect to the database. +# Uncomment and adjust this part if you'd like to use a username different than the default. +# prometheus_postgres_exporter_database_username: "matrix_prometheus_postgres_exporter" + +# The password for the user that the exporter uses to connect to the database. By default, this is auto-generated by the playbook. +# Uncomment and adjust this part if you'd like to set the password by yourself. +# prometheus_postgres_exporter_database_password: "PASSWORD_HERE" +``` + +### Enable metrics and graphs for nginx logs (optional) + +The playbook can also install and configure the [prometheus-nginxlog-exporter](https://github.com/martin-helmich/prometheus-nginxlog-exporter/) service for you. + +It is an addon of sorts to expose nginx logs to Prometheus. The exporter will collect access logs from various nginx reverse-proxies which may be used internally (e.g. `matrix-synapse-reverse-proxy-companion`, if Synapse workers are enabled) and will make them available at a Prometheus-compatible `/metrics` endpoint. + +See the project's [documentation](https://github.com/martin-helmich/prometheus-nginxlog-exporter/blob/master/README.adoc) to learn what it does and why it might be useful to you. + +To enable it, add the following configuration to your `vars.yml` file: + +```yaml matrix_prometheus_nginxlog_exporter_enabled: true +``` -grafana_enabled: true +If you enable Grafana, a dedicated `NGINX PROXY` Grafana dashboard will be created. + +**Note**: nginx is only used internally by this Ansible playbook. With Traefik being our default reverse-proxy, collecting nginx metrics is less relevant. -grafana_anonymous_access: false +#### Docker image compatibility (optional) -# This has no relation to your Matrix user ID. It can be any username you'd like. -# Changing the username subsequently won't work. -grafana_default_admin_user: "some_username_chosen_by_you" +At the moment of writing only images for `amd64` and `arm64` architectures are available. The playbook currently does not support [self-building](./self-building.md) a container image on other architectures. You can however use a custom-build image by setting: -# Changing the password subsequently won't work. -grafana_default_admin_password: "some_strong_password_chosen_by_you" +```yaml +matrix_prometheus_nginxlog_exporter_docker_image_arch_check_enabled: false +matrix_prometheus_nginxlog_exporter_docker_image: path/to/docker/image:tag ``` -The retention policy of Prometheus metrics is [15 days by default](https://prometheus.io/docs/prometheus/latest/storage/#operational-aspects). Older data gets deleted automatically. +### Extending the configuration + +There are some additional things you may wish to configure about Prometheus and its add-on. + +Take a look at: + +- [Prometheus role](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus)'s [`defaults/main.yml`](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus/blob/main/defaults/main.yml) for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `prometheus_configuration_extension_yaml` variable +- `roles/custom/matrix-prometheus-nginxlog-exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + +## Adjusting the playbook configuration — Grafana + +Grafana is an open source visualization and analytics software. To enable it, add the following configuration to your `vars.yml` file. Make sure to replace `USERNAME_HERE` and `PASSWORD_HERE`. + +**Notes**: +- `grafana_default_admin_user` has nothing to do with your Matrix user ID. It can be any string you'd like. +- Changing the username/password subsequently won't work. + +```yaml +grafana_enabled: true + +grafana_default_admin_user: "USERNAME_HERE" +grafana_default_admin_password: "PASSWORD_HERE" + +# Uncomment to allow viewing Grafana without logging in. +# grafana_anonymous_access: true +``` + +Name | Description +-----|---------- +`grafana_enabled`|[Grafana](https://grafana.com/) is the visual component. It shows (on the `stats.example.com` subdomain) the dashboards with the graphs that we're interested in. +`grafana_default_admin_user`
`grafana_default_admin_password`|By default Grafana creates a user with `admin` as the username and password. You are asked to change the credentials on first login. If you feel this is insecure and you want to change them beforehand, you can do that here. +`grafana_anonymous_access`|By default you need to log in to see graphs. If you want to publicly share your graphs (e.g. when asking for help in [`#synapse:matrix.org`](https://matrix.to/#/#synapse:matrix.org?via=matrix.org&via=privacytools.io&via=mozilla.org)) you'll want to enable this option. ### Adjusting the Grafana URL (optional) @@ -51,8 +145,6 @@ grafana_hostname: grafana.example.com After changing the domain, **you may need to adjust your DNS** records to point the Grafana domain to the Matrix server. -**Note**: It is possible to install Prometheus without installing Grafana. This case it is not required to create the CNAME record. - ## 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: @@ -66,54 +158,57 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju `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. -## What does it do? - -Name | Description ------|---------- -`prometheus_enabled`|[Prometheus](https://prometheus.io) is a time series database. It holds all the data we're going to talk about. -`prometheus_node_exporter_enabled`|[Node Exporter](https://prometheus.io/docs/guides/node-exporter/) is an addon of sorts to Prometheus that collects generic system information such as CPU, memory, filesystem, and even system temperatures -`prometheus_postgres_exporter_enabled`|[Postgres Exporter](configuring-playbook-prometheus-postgres.md) is an addon of sorts to expose Postgres database metrics to Prometheus. -`matrix_prometheus_nginxlog_exporter_enabled`|[NGINX Log Exporter](configuring-playbook-prometheus-nginxlog.md) is an addon of sorts to expose NGINX logs to Prometheus. -`grafana_enabled`|[Grafana](https://grafana.com/) is the visual component. It shows (on the `stats.example.com` subdomain) the dashboards with the graphs that we're interested in -`grafana_anonymous_access`|By default you need to log in to see graphs. If you want to publicly share your graphs (e.g. when asking for help in [`#synapse:matrix.org`](https://matrix.to/#/#synapse:matrix.org?via=matrix.org&via=privacytools.io&via=mozilla.org)) you'll want to enable this option. -`grafana_default_admin_user`
`grafana_default_admin_password`|By default Grafana creates a user with `admin` as the username and password. If you feel this is insecure and you want to change it beforehand, you can do that here - -## Security and privacy - -Metrics and resulting graphs can contain a lot of information. This includes system specs but also usage patterns. This applies especially to small personal/family scale homeservers. Someone might be able to figure out when you wake up and go to sleep by looking at the graphs over time. Think about this before enabling anonymous access. And you should really not forget to change your Grafana password. - -Most of our docker containers run with limited system access, but the `prometheus-node-exporter` has access to the host network stack and (readonly) root filesystem. This is required to report on them. If you don't like that, you can set `prometheus_node_exporter_enabled: false` (which is actually the default). You will still get Synapse metrics with this container disabled. Both of the dashboards will always be enabled, so you can still look at historical data after disabling either source. - ## Collecting metrics to an external Prometheus server **If the integrated Prometheus server is enabled** (`prometheus_enabled: true`), metrics are collected by it from each service via communication that happens over the container network. Each service does not need to expose its metrics "publicly". When you'd like **to collect metrics from an external Prometheus server**, you need to expose service metrics outside of the container network. -The playbook provides a single endpoint (`https://matrix.example.com/metrics/*`), under which various services may expose their metrics (e.g. `/metrics/node-exporter`, `/metrics/postgres-exporter`, `/metrics/hookshot`, etc). To expose all services on this `/metrics/*` feature, use `matrix_metrics_exposure_enabled`. To protect access using [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication), see `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users` below. +The playbook provides a single endpoint (`https://matrix.example.com/metrics/*`), under which various services may expose their metrics (e.g. `/metrics/node-exporter`, `/metrics/postgres-exporter`, `/metrics/nginxlog`, `/metrics/hookshot`, etc). -When using `matrix_metrics_exposure_enabled`, you don't need to expose metrics for individual services one by one. +To expose all services on this `/metrics/*` feature, you can use `matrix_metrics_exposure_enabled`. When using it, you don't need to expose metrics for individual services one by one. If you think this is too much, refer [this section](#expose-metrics-of-other-services-roles) for details about exposing metrics on a per-service basis. + +To protect access using [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication), you can use `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users`. When enabled, all endpoints beneath `/metrics` will be protected with the same credentials. Alternatively, you can protect each endpoint with dedicated credentials. Refer [the section](#expose-metrics-of-other-services-roles) below for details about it. The following variables may be of interest: Name | Description -----|---------- -`matrix_metrics_exposure_enabled`|Set this to `true` to **enable metrics exposure for all services** on `https://matrix.example.com/metrics/*`. If you think this is too much, refer to the helpful (but nonexhaustive) list of individual `matrix_SERVICE_metrics_proxying_enabled` (or similar) variables below for exposing metrics on a per-service basis. -`matrix_metrics_exposure_http_basic_auth_enabled`|Set this to `true` to protect all `https://matrix.example.com/metrics/*` endpoints with [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) (see the other variables below for supplying the actual credentials). When enabled, all endpoints beneath `/metrics` will be protected with the same credentials +`matrix_metrics_exposure_enabled`|Set this to `true` to **enable metrics exposure for all services** on `https://matrix.example.com/metrics/*`. +`matrix_metrics_exposure_http_basic_auth_enabled`|Set this to `true` to protect all `https://matrix.example.com/metrics/*` endpoints with [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) (see the other variables below for supplying the actual credentials). `matrix_metrics_exposure_http_basic_auth_users`|Set this to the Basic Authentication credentials (raw `htpasswd` file content) used to protect `/metrics/*`. This htpasswd-file needs to be generated with the `htpasswd` tool and can include multiple username/password pairs. -`matrix_synapse_metrics_enabled`|Set this to `true` to make Synapse expose metrics (locally, on the container network) -`matrix_synapse_metrics_proxying_enabled`|Set this to `true` to expose Synapse's metrics on `https://matrix.example.com/metrics/synapse/main-process` and `https://matrix.example.com/metrics/synapse/worker/TYPE-ID`. Read [below](#collecting-synapse-worker-metrics-to-an-external-prometheus-server) if you're running a Synapse worker setup (`matrix_synapse_workers_enabled: true`). To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. -`prometheus_node_exporter_enabled`|Set this to `true` to enable the node (general system stats) exporter (locally, on the container network) -`prometheus_node_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the node (general system stats) metrics on `https://matrix.example.com/metrics/node-exporter`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. -`prometheus_postgres_exporter_enabled`|Set this to `true` to enable the [Postgres exporter](configuring-playbook-prometheus-postgres.md) (locally, on the container network) -`prometheus_postgres_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the [Postgres exporter](configuring-playbook-prometheus-postgres.md) metrics on `https://matrix.example.com/metrics/postgres-exporter`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. -`matrix_prometheus_nginxlog_exporter_enabled`|Set this to `true` to enable the [NGINX Log exporter](configuring-playbook-prometheus-nginxlog.md) (locally, on the container network) -`matrix_sliding_sync_metrics_enabled`|Set this to `true` to make [Sliding Sync](configuring-playbook-sliding-sync-proxy.md) expose metrics (locally, on the container network) -`matrix_sliding_sync_metrics_proxying_enabled`|Set this to `true` to expose the [Sliding Sync](configuring-playbook-sliding-sync-proxy.md) metrics on `https://matrix.example.com/metrics/sliding-sync`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. -`matrix_bridge_hookshot_metrics_enabled`|Set this to `true` to make [Hookshot](configuring-playbook-bridge-hookshot.md) expose metrics (locally, on the container network) -`matrix_bridge_hookshot_metrics_proxying_enabled`|Set this to `true` to expose the [Hookshot](configuring-playbook-bridge-hookshot.md) metrics on `https://matrix.example.com/metrics/hookshot`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. -`matrix_SERVICE_metrics_proxying_enabled`|Various other services/roles may provide similar `_metrics_enabled` and `_metrics_proxying_enabled` variables for exposing their metrics. Refer to each role for details. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above or `matrix_SERVICE_container_labels_metrics_middleware_basic_auth_enabled`/`matrix_SERVICE_container_labels_metrics_middleware_basic_auth_users` variables provided by each role. -`matrix_media_repo_metrics_enabled`|Set this to `true` to make media-repo expose metrics (locally, on the container network) +`prometheus_node_exporter_enabled`|Set this to `true` to enable the node (general system stats) exporter (locally, on the container network). +`prometheus_node_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the node (general system stats) metrics on `https://matrix.example.com/metrics/node-exporter`. +`prometheus_postgres_exporter_enabled`|Set this to `true` to enable the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) (locally, on the container network). +`prometheus_postgres_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) metrics on `https://matrix.example.com/metrics/postgres-exporter`. +`matrix_prometheus_nginxlog_exporter_enabled`|Set this to `true` to enable the [nginx Log exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) (locally, on the container network). +`matrix_prometheus_nginxlog_exporter_metrics_proxying_enabled`|Set this to `true` to expose the [nginx Log exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) metrics on `https://matrix.example.com/metrics/nginxlog`. + +### Expose metrics of other services/roles + +Various other services/roles may provide similar `_metrics_enabled` and `_metrics_proxying_enabled` variables for exposing their metrics. Refer to each role for details. + +To password-protect the metrics of a specific role, you can use `matrix_SERVICE_container_labels_metrics_middleware_basic_auth_enabled` and `matrix_SERVICE_container_labels_metrics_middleware_basic_auth_users` variables provided by the role. + +**Note**: alternatively you can use `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users` in order to password-protect the metrics of all services. + +For example, you can enable and expose metrics for Synapse protecting them with dedicated credentials by adding the following configuration to your `vars.yml` file: + +```yaml +# Expose metrics (locally, on the container network). +matrix_synapse_metrics_enabled: true + +# Uncomment to expose metrics on https://matrix.example.com/metrics/synapse/main-process and https://matrix.example.com/metrics/synapse/worker/TYPE-ID. +# Read the section below ("Collecting Synapse worker metrics to an external Prometheus server") if you're running a Synapse worker setup by setting `matrix_synapse_workers_enabled` to true. +# matrix_synapse_metrics_proxying_enabled: true + +# Uncomment to password-protect the metrics for Synapse. +# matrix_synapse_container_labels_public_metrics_middleware_basic_auth_enabled: true + +# Uncomment and set this part to the Basic Authentication credentials (raw `htpasswd` file content) used to protect the endpoints. +# See https://doc.traefik.io/traefik/middlewares/http/basicauth/#users +# matrix_synapse_container_labels_public_metrics_middleware_basic_auth_users: '' +``` ### Collecting Synapse worker metrics to an external Prometheus server @@ -147,6 +242,15 @@ scrape_configs: index: 18111 ``` +## 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 the commands below: +- `journalctl -fu matrix-prometheus` for Prometheus +- `journalctl -fu matrix-prometheus-node-exporter` for Node Exporter +- `journalctl -fu matrix-prometheus-postgres-exporter` for PostgreSQL Server Exporter +- `journalctl -fu matrix-prometheus-nginxlog-exporter` for prometheus-nginxlog-exporter +- `journalctl -fu matrix-grafana` for Grafana + ## More information - [Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md) @@ -154,3 +258,4 @@ scrape_configs: - [The Prometheus scraping rules](https://github.com/element-hq/synapse/tree/master/contrib/prometheus) (we use v2) - [The Synapse Grafana dashboard](https://github.com/element-hq/synapse/tree/master/contrib/grafana) - [The Node Exporter dashboard](https://github.com/rfrail3/grafana-dashboards) (for generic non-synapse performance graphs) +- [The PostgresSQL dashboard](https://grafana.com/grafana/dashboards/9628) (generic Postgres dashboard) diff --git a/docs/configuring-playbook-prometheus-nginxlog.md b/docs/configuring-playbook-prometheus-nginxlog.md deleted file mode 100644 index 1683210c3..000000000 --- a/docs/configuring-playbook-prometheus-nginxlog.md +++ /dev/null @@ -1,59 +0,0 @@ -# Enabling metrics and graphs for NginX logs (optional) - -It can be useful to have some (visual) insight into [nginx](https://nginx.org/) logs. - -This adds [prometheus-nginxlog-exporter](https://github.com/martin-helmich/prometheus-nginxlog-exporter/) to your Matrix deployment. - -It will collect access logs from various nginx reverse-proxies which may be used internally (e.g. `matrix-synapse-reverse-proxy-companion`, if Synapse workers are enabled) and will make them available at a Prometheus-compatible `/metrics` endpoint. - -**Note**: nginx is only used internally by this Ansible playbook. With Traefik being our default reverse-proxy, collecting nginx metrics is less relevant. - -To make use of this, you need to install [Prometheus](./configuring-playbook-prometheus-grafana.md) either via the playbook or externally. When using an external Prometheus, configuration adjustments are necessary - see [Save metrics on an external Prometheus server](#save-metrics-on-an-external-prometheus-server). - -If your setup includes [Grafana](./configuring-playbook-prometheus-grafana.md), a dedicated `NGINX PROXY` Grafana dashboard will be created. - -## Adjusting the playbook configuration - -Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: - -```yaml -matrix_prometheus_nginxlog_exporter_enabled: true -``` - -## Installing - -After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: - - -```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start -``` - -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. - -## Docker Image Compatibility - -At the moment of writing only images for `amd64` and `arm64` architectures are available. The playbook currently does not support [self-building](./self-building.md) a container image on other architectures. You can however use a custom-build image by setting: - -```yaml -matrix_prometheus_nginxlog_exporter_docker_image_arch_check_enabled: false -matrix_prometheus_nginxlog_exporter_docker_image: path/to/docker/image:tag -``` - -## Security and privacy - -Metrics and resulting graphs can contain a lot of information. NginX logs contain information like IP address, URLs, UserAgents and more. This information can reveal usage patterns and could be considered Personally Identifiable Information (PII). Think about this before enabling (anonymous) access. Please make sure you change the default Grafana password. - -## Save metrics on an external Prometheus server - -The playbook will automatically integrate the metrics into the [Prometheus](./configuring-playbook-prometheus-grafana.md) server provided with this playbook (if enabled). In such cases, the metrics endpoint is not exposed publicly - it's only available on the container network. - -When using an external Prometheus server, you'll need to expose metrics publicly. See [Collecting metrics to an external Prometheus server](./configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server). - -You can either use `matrix_prometheus_nginxlog_exporter_metrics_proxying_enabled: true` to expose just this one service, or `matrix_metrics_exposure_enabled: true` to expose all services. - -Whichever way you go with, this service will expose its metrics endpoint **without password-protection** at `https://matrix.example.com/metrics/nginxlog` by default. - -For password-protection, use (`matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users`) or (`matrix_prometheus_nginxlog_exporter_container_labels_metrics_middleware_basic_auth_enabled` and `matrix_prometheus_nginxlog_exporter_container_labels_metrics_middleware_basic_auth_users`). diff --git a/docs/configuring-playbook-prometheus-postgres.md b/docs/configuring-playbook-prometheus-postgres.md deleted file mode 100644 index 74d3eda4f..000000000 --- a/docs/configuring-playbook-prometheus-postgres.md +++ /dev/null @@ -1,37 +0,0 @@ -# Enabling metrics and graphs for Postgres (optional) - -Expanding on the metrics exposed by the [synapse exporter and the node exporter](configuring-playbook-prometheus-grafana.md), the playbook enables the [postgres exporter](https://github.com/prometheus-community/postgres_exporter) that exposes more detailed information about what's happening on your postgres database. - -## Adjusting the playbook configuration - -To enable the postgres exporter, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: - -```yaml -prometheus_postgres_exporter_enabled: true -``` - -## Installing - -After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: - - -```sh -ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start -``` - -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. - -## What does it do? - -Name | Description ------|---------- -`prometheus_postgres_exporter_enabled`|Enable the postgres prometheus exporter. This sets up the docker container, connects it to the database and adds a 'job' to the prometheus config which tells prometheus about this new exporter. The default is 'false' -`prometheus_postgres_exporter_database_username`| The 'username' for the user that the exporter uses to connect to the database. The default is 'matrix_prometheus_postgres_exporter' -`prometheus_postgres_exporter_database_password`| The 'password' for the user that the exporter uses to connect to the database. By default, this is auto-generated by the playbook -`prometheus_postgres_exporter_container_labels_traefik_enabled`|If set to `true`, exposes the Postgres exporter metrics on `https://matrix.example.com/metrics/postgres-exporter` for usage with an [external Prometheus server](configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server). To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` on that other documentation page. - -## More information - -- [The PostgresSQL dashboard](https://grafana.com/grafana/dashboards/9628) (generic postgres dashboard) diff --git a/docs/configuring-playbook-rageshake.md b/docs/configuring-playbook-rageshake.md index 6db32e43a..14343f525 100644 --- a/docs/configuring-playbook-rageshake.md +++ b/docs/configuring-playbook-rageshake.md @@ -1,3 +1,10 @@ + + # Setting up the rageshake bug report server (optional) The playbook can install and configure the [rageshake](https://github.com/matrix-org/rageshake) bug report server for you. @@ -20,18 +27,6 @@ To enable rageshake, add the following configuration to your `inventory/host_var matrix_rageshake_enabled: true ``` -rageshake has various options which don't have dedicated Ansible variables. You can see the full list of options in the [`rageshake.sample.yaml` file](https://github.com/matrix-org/rageshake/blob/master/rageshake.sample.yaml). - -To set these, you can make use of the `matrix_rageshake_configuration_extension_yaml` variable like this: - -```yaml -matrix_rageshake_configuration_extension_yaml: | - github_token: secrettoken - - github_project_mappings: - my-app: octocat/HelloWorld -``` - ### Adjusting the rageshake URL (optional) By tweaking the `matrix_rageshake_hostname` and `matrix_rageshake_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one. @@ -51,6 +46,31 @@ After changing the domain, **you may need to adjust your DNS** records to point If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration. +### Extending the configuration + +There are some additional things you may wish to configure about the server. + +Take a look at: + +- `roles/custom/matrix-rageshake/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-rageshake/templates/config.yaml.j2` for the server's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_rageshake_configuration_extension_yaml` variable + +```yaml +matrix_rageshake_configuration_extension_yaml: | + # Your custom YAML configuration goes here. + # This configuration extends the default starting configuration (`matrix_rageshake_configuration_extension_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_rageshake_configuration_extension_yaml`. + + github_token: secrettoken + + github_project_mappings: + my-app: octocat/HelloWorld +``` + ## 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: @@ -67,3 +87,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju ## Usage Refer to the project's [documentation](https://github.com/matrix-org/rageshake/blob/main/README.md) for available APIs, etc. + +## 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-rageshake`. diff --git a/docs/configuring-playbook-rest-auth.md b/docs/configuring-playbook-rest-auth.md index d15ba586b..216b71e37 100644 --- a/docs/configuring-playbook-rest-auth.md +++ b/docs/configuring-playbook-rest-auth.md @@ -1,3 +1,11 @@ + + # Setting up the REST authentication password provider module (optional, advanced) The playbook can install and configure [matrix-synapse-rest-auth](https://github.com/ma1uta/matrix-synapse-rest-password-provider) for you. @@ -16,9 +24,9 @@ matrix_synapse_ext_password_provider_rest_auth_registration_profile_name_autofil matrix_synapse_ext_password_provider_rest_auth_login_profile_name_autofill: false ``` -## Authenticating only using a password provider +### Authenticating only using a password provider -If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, feel free to disable it: +If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, you can disable it by adding the following configuration to your `vars.yml` file: ```yaml matrix_synapse_password_config_localdb_enabled: false @@ -36,3 +44,12 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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 + +### Use ma1sd Identity Server for the backend (not recommended) + +This module does not provide direct integration with any backend. For the backend you can use [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server, which can be configured with the playbook. + +> [!WARNING] +> We recommend not bothering with installing ma1sd as it has been unmaintained for years. If you wish to install it anyway, consult the [ma1sd Identity Server configuration](configuring-playbook-ma1sd.md). diff --git a/docs/configuring-playbook-riot-web.md b/docs/configuring-playbook-riot-web.md index e008a3f89..1652f5eb9 100644 --- a/docs/configuring-playbook-riot-web.md +++ b/docs/configuring-playbook-riot-web.md @@ -1,3 +1,11 @@ + + # Configuring Riot-web (optional) By default, this playbook **used to install** the [Riot-web](https://github.com/element-hq/riot-web) Matrix client web application. @@ -21,9 +29,9 @@ We used to set up Riot at the `riot.example.com` domain. The playbook now sets u There are a few options for handling this: -- (**avoiding changes** - using the old `riot.example.com` domain and avoiding DNS changes) -- to keep using `riot.example.com` instead of `element.example.com`, override the domain at which the playbook serves Element Web: `matrix_server_fqn_element: "riot.{{ matrix_domain }}"` +- (**avoiding changes** — using the old `riot.example.com` domain and avoiding DNS changes) — to keep using `riot.example.com` instead of `element.example.com`, override the domain at which the playbook serves Element Web: `matrix_server_fqn_element: "riot.{{ matrix_domain }}"` -- (**embracing changes** - using only `element.example.com`) - set up the `element.example.com` DNS record (see [Configuring DNS](configuring-dns.md)). You can drop the `riot.example.com` in this case. +- (**embracing changes** — using only `element.example.com`) — set up the `element.example.com` DNS record (see [Configuring DNS](configuring-dns.md)). You can drop the `riot.example.com` in this case. ### Re-running the playbook diff --git a/docs/configuring-playbook-s3-goofys.md b/docs/configuring-playbook-s3-goofys.md index 720c7d8b2..8fcf145a0 100644 --- a/docs/configuring-playbook-s3-goofys.md +++ b/docs/configuring-playbook-s3-goofys.md @@ -1,12 +1,21 @@ -# Storing Matrix media files on Amazon S3 with Goofys (optional) + -Another (and better performing) way to use S3 storage with Synapse is [synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md). +# Storing Synapse media files on Amazon S3 with Goofys (optional) -Using a Goofys-backed media store works, but performance may not be ideal. If possible, try to use a region which is close to your Matrix server. +The playbook can install and configure [Goofys](https://github.com/kahing/goofys) for you. -If you'd like to move your locally-stored media store data to Amazon S3 (or another S3-compatible object store), we also provide some migration instructions below. +Goofys makes it possible to store Synapse's content repository (`media_store`) files on Amazon S3 (or other S3-compatible service) object storage. + +See the project's [documentation](https://github.com/kahing/goofys/blob/master/README.md) to learn what it does and why it might be useful to you. + +**Note**: as performance of a Goofys-backed media store may not be ideal, you may wish to use [synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md) instead, another (and better performing) way to mount a S3 bucket for Synapse. + +If you'd like to move your locally-stored media store data to Amazon S3 (or another S3-compatible object store), you can refer our migration instructions below. ## Adjusting the playbook configuration @@ -124,3 +133,7 @@ After making the backup, follow one of the guides below for a migration path fro 7. You're done! Verify that loading existing (old) media files works and that you can upload new ones. 8. When confident that it all works, get rid of the local media store directory: `rm -rf /matrix/synapse/storage/media-store-local-backup` + +## 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-goofys`. diff --git a/docs/configuring-playbook-s3.md b/docs/configuring-playbook-s3.md index cb43c62fb..bb7a51e7f 100644 --- a/docs/configuring-playbook-s3.md +++ b/docs/configuring-playbook-s3.md @@ -1,3 +1,11 @@ + + # Storing Synapse media files on Amazon S3 or another compatible Object Storage (optional) By default, this playbook configures your server to store Synapse's content repository (`media_store`) files on the local filesystem. If that's okay, you can skip this document. @@ -18,7 +26,7 @@ You can create [Amazon S3](https://aws.amazon.com/s3/) or another S3-compatible Amazon S3, Backblaze B2, and Storj are pay-as-you with no minimum charges for storing too little data. -All these providers have different prices, with Storj appearing to be the cheapest (as of 2024-10, storage fee is $0.004 per GB/month, and egress fee is $0.007 per GB). Backblaze egress is free, but for only certain users for up to 3x the amount of data stored. Beyond that you will pay $0.01/GB of egress. +All these providers have different prices, with Storj appearing to be the cheapest (as of 2024-10, storage fee is $0.004 per GB/month, and egress fee is $0.007 per GB; check actual pricing [here](https://storj.dev/dcs/pricing)). Backblaze egress is free, but for only certain users for up to 3x the amount of data stored. Beyond that you will pay $0.01/GB of egress. Wasabi has a minimum charge of 1TB if you're storing less than 1TB, which becomes expensive if you need to store less data than that. Likewise, Digital Ocean Spaces has also a minimum charge of 250GB ($5/month as of 2022-10). @@ -29,7 +37,7 @@ Here are some of the important aspects of choosing the right provider: - if a provider has a data region close to your Matrix server (if it's farther away, high latency may cause slowdowns) - if a provider's infrastructure such as data center is centralized or distributed - if a provider's price model is transparent (whether it includes hidden costs like minimum charge, minimum storage term, etc.) -- if a provider has free or cheap egress fee (in case you need to get the data out often, for some reason) - likely not too important for the common use-case +- if a provider has free or cheap egress fee (in case you need to get the data out often, for some reason) — likely not too important for the common use-case ## Bucket creation and Security Configuration @@ -83,17 +91,15 @@ The `keyID` value is your **Access Key** and `applicationKey` is your **Secret K For configuring [Goofys](configuring-playbook-s3-goofys.md) or [s3-synapse-storage-provider](configuring-playbook-synapse-s3-storage-provider.md) you will need: -- **Endpoint URL** - this is the **Endpoint** value you saw above, but prefixed with `https://` - -- **Region** - use the value you see in the Endpoint (e.g. `us-west-002`) - -- **Storage Class** - use `STANDARD`. Backblaze B2 does not have different storage classes, so it doesn't make sense to use any other value. +- **Endpoint URL** — this is the **Endpoint** value you saw above, but prefixed with `https://` +- **Region** — use the value you see in the Endpoint (e.g. `us-west-002`) +- **Storage Class** — use `STANDARD`. Backblaze B2 does not have different storage classes, so it doesn't make sense to use any other value. ## Other providers -For other S3-compatible providers, you may not need to configure security policies, etc. (just like for [Backblaze B2](#backblaze-b2)). +For other S3-compatible providers, you most likely just need to create an S3 bucket and get some credentials (access key and secret key) for accessing the bucket in a read/write manner. You may not need to configure security policies, etc. -You most likely just need to create an S3 bucket and get some credentials (access key and secret key) for accessing the bucket in a read/write manner. +For details about setting up a bucket at Storj, please see the instruction [here](https://storj.dev/dcs/getting-started) to get started. ## Setting up diff --git a/docs/configuring-playbook-shared-secret-auth.md b/docs/configuring-playbook-shared-secret-auth.md index c7dced046..07d42d762 100644 --- a/docs/configuring-playbook-shared-secret-auth.md +++ b/docs/configuring-playbook-shared-secret-auth.md @@ -1,3 +1,11 @@ + + # Setting up the Shared Secret Auth password provider module (optional, advanced) The playbook can install and configure [matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) for you. @@ -15,9 +23,9 @@ matrix_synapse_ext_password_provider_shared_secret_auth_enabled: true matrix_synapse_ext_password_provider_shared_secret_auth_shared_secret: YOUR_SHARED_SECRET_GOES_HERE ``` -## Authenticating only using a password provider +### Authenticating only using a password provider -If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, feel free to disable it: +If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, you can disable it by adding the following configuration to your `vars.yml` file: ```yaml matrix_synapse_password_config_localdb_enabled: false diff --git a/docs/configuring-playbook-sliding-sync-proxy.md b/docs/configuring-playbook-sliding-sync-proxy.md index 406dc6196..38b1e815e 100644 --- a/docs/configuring-playbook-sliding-sync-proxy.md +++ b/docs/configuring-playbook-sliding-sync-proxy.md @@ -1,3 +1,16 @@ + + # Setting up the Sliding Sync proxy (optional) **Note**: The sliding-sync proxy is **not required** anymore as it's been replaced with a different method (called Simplified Sliding Sync) which is integrated into newer homeservers by default (**Conduit** homeserver from version `0.6.0` or **Synapse** from version `1.114`). This component and documentation remain here for historical purposes, but **installing this old sliding-sync proxy is generally not recommended anymore**. @@ -36,6 +49,14 @@ If you've changed the default hostname, you may need to create a CNAME record fo When setting, replace `example.com` with your own. +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-sliding-sync/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## 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: @@ -68,3 +89,7 @@ You **don't need to do anything special** to make use of the Sliding Sync proxy. When the Sliding Sync proxy is [installed](#installing), your `/.well-known/matrix/client` file is also updated. A new `org.matrix.msc3575.proxy` section and `url` property are added there and made to point to your Sliding Sync proxy's base URL (e.g. `https://matrix.example.com/sliding-sync`). This allows clients which support Sliding Sync to detect the Sliding Sync proxy's URL and make use of it. + +## 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-sliding-sync`. diff --git a/docs/configuring-playbook-ssl-certificates.md b/docs/configuring-playbook-ssl-certificates.md index 94c4d58c5..f6889f803 100644 --- a/docs/configuring-playbook-ssl-certificates.md +++ b/docs/configuring-playbook-ssl-certificates.md @@ -1,56 +1,70 @@ + + # Adjusting SSL certificate retrieval (optional, advanced) -By default, this playbook retrieves and auto-renews free SSL certificates from [Let's Encrypt](https://letsencrypt.org/) for the domains it needs (e.g. `matrix.example.com` and others) +By default, the playbook retrieves and automatically renews free SSL certificates from [Let's Encrypt](https://letsencrypt.org/) via [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) for the domains of the services it installs (e.g. `matrix.example.com` and others). Refer this guide if you want to modify settings about how it manages SSL certificates or have the Traefik server use yours. -This guide is about using the integrated Traefik server and doesn't apply if you're using [your own webserver](configuring-playbook-own-webserver.md). +**Notes**: +- This guide is intended to be referred for configuring the integrated Traefik server with regard to SSL certificates retrieval. If you're using [your own webserver](configuring-playbook-own-webserver.md), consult its documentation about how to configure it. +- Let's Encrypt ends the expiration notification email service on June 4, 2025 (see: [the official announcement](https://letsencrypt.org/2025/01/22/ending-expiration-emails/)), and it recommends using a third party service for those who want to receive expiriation notifications. If you are looking for a self-hosting service, you may be interested in a monitoring tool such as [Update Kuma](https://github.com/louislam/uptime-kuma/). -## Using staging Let's Encrypt certificates instead of real ones + The [Mother-of-All-Self-Hosting (MASH)](https://github.com/mother-of-all-self-hosting/mash-playbook) Ansible playbook can be used to install and manage an Uptime Kuma instance. See [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/uptime-kuma.md) for the instruction to install it with the MASH playbook. If you are wondering how to use the MASH playbook for your Matrix server, refer [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/setting-up-services-on-mdad-server.md). -For testing purposes, you may wish to use staging certificates provide by Let's Encrypt. +## Use staging Let's Encrypt certificates -Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +For testing purposes, you may wish to use staging certificates provided by Let's Encrypt to avoid hitting [its rate limits](https://letsencrypt.org/docs/rate-limits/). + +To use ones, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml traefik_config_certificatesResolvers_acme_use_staging: true ``` -## Disabling SSL termination +## Disable SSL termination For testing or other purposes, you may wish to install services without SSL termination and have services exposed to `http://` instead of `https://`. -Add the following configuration to your `vars.yml` file: +To do so, add the following configuration to your `vars.yml` file: ```yaml traefik_config_entrypoint_web_secure_enabled: false ``` -## Using self-signed SSL certificates +## Use self-signed SSL certificates -If you'd like to use your own SSL certificates, instead of the default (SSL certificates obtained automatically via [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) from [Let's Encrypt](https://letsencrypt.org/)): +To use self-signed certificates, generate them and follow the documentation below about using your own certificates. -- generate your self-signed certificate files -- follow the [Using your own SSL certificates](#using-your-own-ssl-certificates) documentation below +## Use your own SSL certificates -## Using your own SSL certificates +To use your own certificates, prepare them and follow the steps below: -To use your own SSL certificates with Traefik, you need to: +- Disable [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) / [Let's Encrypt](https://letsencrypt.org/) support +- Put a custom Traefik configuration file on the server, with the help of this Ansible playbook (via the [`aux` role](https://github.com/mother-of-all-self-hosting/ansible-role-aux)) or manually +- Register your custom configuration file with Traefik, by adding an extra provider of type [file](https://doc.traefik.io/traefik/providers/file/) +- Put the SSL files on the server, with the help of this Ansible playbook (via the [`aux` role](https://github.com/mother-of-all-self-hosting/ansible-role-aux)) or manually -- disable [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) / [Let's Encrypt](https://letsencrypt.org/) support -- put a custom Traefik configuration file on the server, with the help of this Ansible playbook (via the [`aux` role](https://github.com/mother-of-all-self-hosting/ansible-role-aux)) or manually -- register your custom configuration file with Traefik, by adding an extra provider of type [file](https://doc.traefik.io/traefik/providers/file/) -- put the SSL files on the server, with the help of this Ansible playbook (via the [`aux` role](https://github.com/mother-of-all-self-hosting/ansible-role-aux)) or manually +For those steps, you can add the following configuration to your `vars.yml` file (adapt to your needs). If you will put the custom configuration files manually, make sure to remove the `aux_file_definitions` variable. ```yaml # Disable ACME / Let's Encrypt support. traefik_config_certificatesResolvers_acme_enabled: false -# Disabling ACME support (above) automatically disables the creation of the SSL directory. -# Force-enable it here, because we'll add our certificate files there. +# Disabling ACME support (above) automatically disables the SSL directory to be created. +# Force-enable it to be created with this configuration, because we'll add our certificate files there. traefik_ssl_dir_enabled: true -# Tell Traefik to load our custom ssl key pair by extending provider configuration. +# Tell Traefik to load our custom SSL key pair by extending provider configuration. # The key pair files are created below, in `aux_file_definitions`. -# The `/ssl/…` path is an in-container path, not a path on the host (like `/matrix/traefik/ssl`). Do not change it! +# Note that the `/ssl/…` path is an **in-container path**, not a path on the host (like `/matrix/traefik/ssl`). Do not change it! traefik_provider_configuration_extension_yaml: tls: certificates: @@ -63,14 +77,14 @@ traefik_provider_configuration_extension_yaml: keyFile: /ssl/privkey.pem # Use the aux role to create our custom files on the server. -# If you'd like to do this manually, you remove this `aux_file_definitions` variable. +# If you'd like to do this manually, remove this `aux_file_definitions` variable. aux_file_definitions: # Create the privkey.pem file on the server by # uploading a file from the computer where Ansible is running. - dest: "{{ traefik_ssl_dir_path }}/privkey.pem" src: /path/on/your/Ansible/computer/to/privkey.pem # Alternatively, comment out `src` above and uncomment the lines below to provide the certificate content inline. - # Note the indentation level. + # Mind the indentation level (indented with two white space characters). # content: | # FILE CONTENT # HERE @@ -80,20 +94,22 @@ aux_file_definitions: - dest: "{{ traefik_ssl_dir_path }}/cert.pem" src: /path/on/your/Ansible/computer/to/cert.pem # Alternatively, comment out `src` above and uncomment the lines below to provide the certificate content inline. - # Note the indentation level. + # Mind the indentation level (indented with two white space characters). # content: | # FILE CONTENT # HERE ``` -## Using a DNS-01 ACME challenge type, instead of HTTP-01 +## Use a DNS-01 ACME challenge type, instead of HTTP-01 -You can configure Traefik to use the [DNS-01 challenge type](https://letsencrypt.org/docs/challenge-types/#dns-01-challenge) for Let's Encrypt. This is less commonly used than the default [HTTP-01 challenge type](https://letsencrypt.org/docs/challenge-types/#http-01-challenge), but it can be helpful to: +You can configure Traefik to use the [DNS-01 challenge type](https://letsencrypt.org/docs/challenge-types/#dns-01-challenge) for Let's Encrypt. This is less commonly used than the default [HTTP-01 challenge type](https://letsencrypt.org/docs/challenge-types/#http-01-challenge), but can be helpful to: - hide your public IP from Let's Encrypt logs - allow you to obtain SSL certificates for servers which are not accessible (via HTTP) from the public internet (and for which the HTTP-01 challenge would fail) -This is an example for how to edit the `vars.yml` file if you're using Cloudflare: +### Example: Cloudflare + +Here is an example for configurations on the `vars.yml` file for Cloudflare. Please adjust it as necessary before applying it. ```yaml traefik_config_certificatesResolvers_acme_dnsChallenge_enabled: true @@ -101,7 +117,7 @@ traefik_config_certificatesResolvers_acme_dnsChallenge_provider: "cloudflare" traefik_config_certificatesResolvers_acme_dnsChallenge_delayBeforeCheck: 60 traefik_config_certificatesResolvers_acme_dnsChallenge_resolvers: - "1.1.1.1:53" -traefik_environment_variables_additional_variables: | +traefik_environment_variables: | CF_API_EMAIL=redacted CF_ZONE_API_TOKEN=redacted CF_DNS_API_TOKEN=redacted diff --git a/docs/configuring-playbook-sygnal.md b/docs/configuring-playbook-sygnal.md index 7ce58714e..2bd800cdd 100644 --- a/docs/configuring-playbook-sygnal.md +++ b/docs/configuring-playbook-sygnal.md @@ -1,3 +1,10 @@ + + # Setting up the Sygnal push gateway (optional) The playbook can install and configure the [Sygnal](https://github.com/matrix-org/sygnal) push gateway for you. @@ -100,3 +107,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju To make use of your Sygnal installation, you'd need to build your own Matrix client application, which uses the same API keys (for [GCM/FCM](https://firebase.google.com/docs/cloud-messaging/)) and certificates (for [APNS](https://developer.apple.com/notifications/)) and is to your Sygnal URL endpoint (e.g. `https://sygnal.example.com`). Refer to Sygnal's [Notes for application developers](https://github.com/matrix-org/sygnal/blob/master/docs/applications.md) document. + +## 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-sygnal`. diff --git a/docs/configuring-playbook-synapse-admin.md b/docs/configuring-playbook-synapse-admin.md index 22635d012..4c992e09b 100644 --- a/docs/configuring-playbook-synapse-admin.md +++ b/docs/configuring-playbook-synapse-admin.md @@ -1,3 +1,15 @@ + + # Setting up Synapse Admin (optional) The playbook can install and configure [etkecc/synapse-admin](https://github.com/etkecc/synapse-admin) (a [feature-rich](https://github.com/etkecc/synapse-admin#fork-differences) fork of [Awesome-Technologies/synapse-admin](https://github.com/Awesome-Technologies/synapse-admin), community room: [#synapse-admin:etke.cc](https://matrix.to/#/#synapse-admin:etke.cc)) for you. @@ -25,9 +37,10 @@ matrix_synapse_admin_enabled: true - for [Synapse](./configuring-playbook-synapse.md) (our default homeserver implementation): `matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true` - for [Dendrite](./configuring-playbook-dendrite.md): `matrix_dendrite_container_labels_public_client_synapse_admin_api_enabled: true` -By default, synapse-admin installation will be [restricted to only work with one homeserver](https://github.com/etkecc/synapse-admin/blob/e21e44362c879ac41f47c580b04210842b6ff3d7/README.md#restricting-available-homeserver) - the one managed by the playbook. To adjust these restrictions, tweak the `matrix_synapse_admin_config_restrictBaseUrl` variable. +By default, synapse-admin installation will be [restricted to only work with one homeserver](https://github.com/etkecc/synapse-admin/blob/e21e44362c879ac41f47c580b04210842b6ff3d7/README.md#restricting-available-homeserver) — the one managed by the playbook. To adjust these restrictions, tweak the `matrix_synapse_admin_config_restrictBaseUrl` variable. -⚠️ **Warning**: If you're using [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) (MAS) for authentication, you will be able to [log into synapse-admin with an access token](https://github.com/etkecc/synapse-admin/pull/58), but certain synapse-admin features (especially those around user management) will be limited or not work at all. +> [!WARNING] +> If you're using [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) (MAS) for authentication, you will be able to [log into synapse-admin with an access token](https://github.com/etkecc/synapse-admin/pull/58), but certain synapse-admin features (especially those around user management) will be limited or not work at all. ### Adjusting the Synapse Admin URL (optional) @@ -45,6 +58,14 @@ If you've changed the default hostname, you may need to create a CNAME record fo When setting, replace `example.com` with your own. +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-synapse-admin/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_synapse_admin_configuration_extension_json` variable + ## 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: @@ -63,3 +84,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju After installation, Synapse Admin will be accessible at: `https://matrix.example.com/synapse-admin/` To use Synapse Admin, you need to have [registered at least one administrator account](registering-users.md) on your server. + +## 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-synapse-admin`. diff --git a/docs/configuring-playbook-synapse-auto-accept-invite.md b/docs/configuring-playbook-synapse-auto-accept-invite.md index 52c1c46ae..f6f80120a 100644 --- a/docs/configuring-playbook-synapse-auto-accept-invite.md +++ b/docs/configuring-playbook-synapse-auto-accept-invite.md @@ -1,3 +1,11 @@ + + # Setting up Synapse Auto Invite Accept (optional) The playbook can install and configure [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) for you. diff --git a/docs/configuring-playbook-synapse-auto-compressor.md b/docs/configuring-playbook-synapse-auto-compressor.md index 50e981cb4..88ea56604 100644 --- a/docs/configuring-playbook-synapse-auto-compressor.md +++ b/docs/configuring-playbook-synapse-auto-compressor.md @@ -1,3 +1,11 @@ + + # Setting up synapse-auto-compressor (optional) The playbook can install and configure [synapse_auto_compressor](https://github.com/matrix-org/rust-synapse-compress-state/#automated-tool-synapse_auto_compressor) for you. @@ -14,6 +22,27 @@ Add the following configuration to your `inventory/host_vars/matrix.example.com/ matrix_synapse_auto_compressor_enabled: true ``` +### Edit the schedule (optional) + +By default the task will around 0 a.m. every day based on the `matrix_synapse_auto_compressor_schedule` variable with a randomized delay of 6 hours (controlled by the `matrix_synapse_auto_compressor_schedule_randomized_delay_sec` variable). It is defined in the format of systemd timer calendar. + +To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs): + +```yaml +matrix_synapse_auto_compressor_schedule: "*-*-* 00:00:00" + +# Consider adjusting the randomized delay or setting it to 0 to disable randomized delays. +# matrix_synapse_auto_compressor_schedule_randomized_delay_sec: 6h +``` + +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-synapse-auto-compressor/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## Installing After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: @@ -29,8 +58,16 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju ## Usage -After installation, `synapse_auto_compressor` will run automatically every day at `00:00:00` (as defined in `matrix_synapse_auto_compressor_calendar` by default). +After installation, `synapse_auto_compressor` will run automatically every day at `00:00:00` (as defined in `matrix_synapse_auto_compressor_schedule` by default). + +### Manually start the task + +Sometimes it can be helpful to execute compression as you'd like, avoiding to wait until 00:00, like when you test your configuration. + +If you want to execute it immediately, log in to the server with SSH and run `systemctl start matrix-synapse-auto-compressor`. + +This will not return until the compression is done, so it can possibly take a long time. Consider using [tmux](https://en.wikipedia.org/wiki/Tmux) if your SSH connection is unstable. -## Manually start the tool +## Troubleshooting -For testing your setup it can be helpful to not wait until 00:00. If you want to run the tool immediately, log onto the server and run `systemctl start matrix-synapse-auto-compressor`. Running this command will not return control to your terminal until the compression run is done, which may take a long time. Consider using [tmux](https://en.wikipedia.org/wiki/Tmux) if your SSH connection is unstable. +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-synapse-auto-compressor`. diff --git a/docs/configuring-playbook-synapse-s3-storage-provider.md b/docs/configuring-playbook-synapse-s3-storage-provider.md index 02b79c240..0d7c312ce 100644 --- a/docs/configuring-playbook-synapse-s3-storage-provider.md +++ b/docs/configuring-playbook-synapse-s3-storage-provider.md @@ -1,8 +1,21 @@ + + # Storing Synapse media files on Amazon S3 with synapse-s3-storage-provider (optional) -If you'd like to store Synapse's content repository (`media_store`) files on Amazon S3 (or other S3-compatible service), you can use the [synapse-s3-storage-provider](https://github.com/matrix-org/synapse-s3-storage-provider) media provider module for Synapse. +The playbook can install and configure the [synapse-s3-storage-provider](https://github.com/matrix-org/synapse-s3-storage-provider) for you. + +It is a media provider module for Synapse to store Synapse's content repository (`media_store`) files on Amazon S3 (or other S3-compatible service) object storage. + +See the project's [documentation](https://github.com/matrix-org/synapse-s3-storage-provider/blob/main/README.md) to learn what it does and why it might be useful to you. -An alternative (which has worse performance) is to use [Goofys to mount the S3 store to the local filesystem](configuring-playbook-s3-goofys.md). +**Note**: alternatively you can use [Goofys to mount the S3 store to the local filesystem](configuring-playbook-s3-goofys.md) despite worse performance. ## How it works? @@ -17,7 +30,7 @@ The way media storage providers in Synapse work has some caveats: You may be thinking **if all files are stored locally as well, what's the point**? -You can run some scripts to delete the local files once in a while (which we do automatically by default - see [Periodically cleaning up the local filesystem](#periodically-cleaning-up-the-local-filesystem)), thus freeing up local disk space. If these files are needed in the future (for serving them to users, etc.), Synapse will pull them from the media storage provider on demand. +You can run some scripts to delete the local files once in a while (which we do automatically by default — see [Periodically cleaning up the local filesystem](#periodically-cleaning-up-the-local-filesystem)), thus freeing up local disk space. If these files are needed in the future (for serving them to users, etc.), Synapse will pull them from the media storage provider on demand. While you will need some local disk space around, it's only to accommodate usage, etc., and won't grow as large as your S3 store. @@ -33,13 +46,13 @@ matrix_synapse_ext_synapse_s3_storage_provider_config_region_name: some-region-n matrix_synapse_ext_synapse_s3_storage_provider_config_endpoint_url: https://s3.REGION_NAME.amazonaws.com # adjust this matrix_synapse_ext_synapse_s3_storage_provider_config_storage_class: STANDARD # or STANDARD_IA, etc. -# Authentication Method 1 - (access key ID + secret) +# Authentication Method 1 — (access key ID + secret) # This works on all providers (AWS and other compatible systems). # Uncomment the variables below to use it. # matrix_synapse_ext_synapse_s3_storage_provider_config_access_key_id: access-key-goes-here # matrix_synapse_ext_synapse_s3_storage_provider_config_secret_access_key: secret-key-goes-here -# Authentication Method 2 - EC2 instance profile which grants permission to access S3 +# Authentication Method 2 — EC2 instance profile which grants permission to access S3 # This only works on AWS when your server is hosted on an EC2 instance with the correct instance profile set. # Uncomment the variable below to use it. # matrix_synapse_ext_synapse_s3_storage_provider_config_ec2_instance_profile: true @@ -53,6 +66,19 @@ Take a look at: - `roles/custom/matrix-synapse/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +## Installing + +After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: + + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start +``` + +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 If you have existing files in Synapse's media repository (`/matrix/synapse/storage/media-store/…`): @@ -78,13 +104,13 @@ To copy your existing files, SSH into the server and run `/matrix/synapse/ext/s3 This launches a Synapse container, which has access to the local media store, Postgres database, S3 store and has some convenient environment variables configured for you to use (`MEDIA_PATH`, `BUCKET`, `ENDPOINT`, `UPDATE_DB_DAYS`, etc). -Then use the following commands (`$` values come from environment variables - they're **not placeholders** that you need to substitute): +Then use the following commands (`$` values come from environment variables — they're **not placeholders** that you need to substitute): -1. `s3_media_upload update-db $UPDATE_DB_DURATION` - create a local SQLite database (`cache.db`) with a list of media repository files (from the `synapse` Postgres database) eligible for operating on +1. `s3_media_upload update-db $UPDATE_DB_DURATION` — create a local SQLite database (`cache.db`) with a list of media repository files (from the `synapse` Postgres database) eligible for operating on - `$UPDATE_DB_DURATION` is influenced by the `matrix_synapse_ext_synapse_s3_storage_provider_update_db_day_count` variable (defaults to `0`) - `$UPDATE_DB_DURATION` defaults to `0d` (0 days), which means **include files which haven't been accessed for more than 0 days** (that is, **all files will be included**). -2. `s3_media_upload check-deleted $MEDIA_PATH` - check whether files in the local cache still exist in the local media repository directory -3. `s3_media_upload upload $MEDIA_PATH $BUCKET --delete --storage-class $STORAGE_CLASS --endpoint-url $ENDPOINT` - uploads locally-stored files to S3 and deletes them from the local media repository directory +2. `s3_media_upload check-deleted $MEDIA_PATH` — check whether files in the local cache still exist in the local media repository directory +3. `s3_media_upload upload $MEDIA_PATH $BUCKET --delete --storage-class $STORAGE_CLASS --endpoint-url $ENDPOINT` — uploads locally-stored files to S3 and deletes them from the local media repository directory The `s3_media_upload upload` command may take a lot of time to complete. @@ -152,3 +178,9 @@ By default, we periodically ensure that all local files are uploaded to S3 and a - … triggered by the `matrix-synapse-s3-storage-provider-migrate.timer` timer, every day at 05:00 So… you don't need to perform any maintenance yourself. + +The schedule is defined in the format of systemd timer calendar. To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs): + +```yaml +matrix_synapse_ext_synapse_s3_storage_provider_periodic_migration_schedule: "*-*-* 05:00:00" +``` diff --git a/docs/configuring-playbook-synapse-simple-antispam.md b/docs/configuring-playbook-synapse-simple-antispam.md index 069b26d2f..b5d99844c 100644 --- a/docs/configuring-playbook-synapse-simple-antispam.md +++ b/docs/configuring-playbook-synapse-simple-antispam.md @@ -1,3 +1,10 @@ + + # Setting up Synapse Simple Antispam (optional, advanced) The playbook can install and configure [synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispam) for you. @@ -17,3 +24,16 @@ matrix_synapse_ext_spam_checker_synapse_simple_antispam_config_blocked_homeserve - example.com - example.net ``` + +## Installing + +After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: + + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start +``` + +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. diff --git a/docs/configuring-playbook-synapse-usage-exporter.md b/docs/configuring-playbook-synapse-usage-exporter.md index e07fc6d0d..cb66cdffe 100644 --- a/docs/configuring-playbook-synapse-usage-exporter.md +++ b/docs/configuring-playbook-synapse-usage-exporter.md @@ -1,9 +1,23 @@ + + # Enabling synapse-usage-exporter for Synapse usage statistics (optional) -[synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) allows you to export the usage statistics of a Synapse homeserver to this container service and for the collected metrics to later be scraped by Prometheus. +The playbook can install and configure [synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) for you. + +It allows you to export the usage statistics of a Synapse homeserver to this container service and for the collected metrics to later be scraped by Prometheus. Synapse does not include usage statistics in its Prometheus metrics. They can be reported to an HTTP `PUT` endpoint 5 minutes after startup and from then on at a fixed interval of once every three hours. This role integrates a simple [Flask](https://flask.palletsprojects.com) project that offers an HTTP `PUT` endpoint and holds the most recent received record available to be scraped by Prometheus. +See the project's [documentation](https://github.com/loelkes/synapse-usage-exporter/blob/main/README.md) to learn what it does and why it might be useful to you. + +## What does it do? + Enabling this service will automatically: - install the synapse-usage-exporter service @@ -48,6 +62,14 @@ If you've changed the default hostname, you may need to create a CNAME record fo When setting, replace `example.com` with your own. +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: + +- `roles/custom/matrix-synapse-usage-exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file + ## 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: @@ -60,3 +82,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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. + +## 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-synapse-usage-exporter`. diff --git a/docs/configuring-playbook-synapse.md b/docs/configuring-playbook-synapse.md index 6b1ec9f3e..4a15ef701 100644 --- a/docs/configuring-playbook-synapse.md +++ b/docs/configuring-playbook-synapse.md @@ -1,7 +1,20 @@ + + # Configuring Synapse (optional) By default, this playbook configures the [Synapse](https://github.com/element-hq/synapse) Matrix server, so that it works for the general case. If that's okay, you can skip this document. +💡 See this page for details about maintaining Synapse: [Synapse maintenance](maintenance-synapse.md) + ## Adjusting the playbook configuration ### Load balancing with workers @@ -22,9 +35,9 @@ By default, this enables the `one-of-each` [worker preset](#worker-presets), but We support a few configuration presets (`matrix_synapse_workers_preset: one-of-each` being the default configuration right now): -- (federation-only) `little-federation-helper` - a very minimal worker configuration to improve federation performance -- (generic) `one-of-each` - defaults to one worker of each supported type - no smart routing, just generic workers -- (specialized) `specialized-workers` - defaults to one worker of each supported type, but disables generic workers and uses [specialized workers](#specialized-workers) instead +- (federation-only) `little-federation-helper` — a very minimal worker configuration to improve federation performance +- (generic) `one-of-each` — defaults to one worker of each supported type — no smart routing, just generic workers +- (specialized) `specialized-workers` — defaults to one worker of each supported type, but disables generic workers and uses [specialized workers](#specialized-workers) instead These presets represent a few common configurations. There are many worker types which can be mixed and matched based on your needs. @@ -34,20 +47,20 @@ Previously, the playbook only supported the most basic type of load-balancing. W This is **still the default load-balancing method (preset) used by the playbook**. -To use generic load-balancing, do not specify `matrix_synapse_workers_preset` to make it use the default value (`one-of-each`), or better yet - explicitly set it as `one-of-each`. +To use generic load-balancing, do not specify `matrix_synapse_workers_preset` to make it use the default value (`one-of-each`), or better yet — explicitly set it as `one-of-each`. You may also consider [tweaking the number of workers of each type](#controlling-the-number-of-worker-instances) from the default (one of each). ##### Specialized workers -The playbook now supports a smarter **specialized load-balancing** inspired by [Tom Foster](https://github.com/tcpipuk)'s [Synapse homeserver guide](https://tcpipuk.github.io/synapse/index.html). Instead of routing requests to one or more [generic workers](#generic-workers) based only on the requestor's IP adddress, specialized load-balancing routes to **4 different types of specialized workers** based on **smarter criteria** - the access token (username) of the requestor and/or on the resource (room, etc.) being requested. +The playbook now supports a smarter **specialized load-balancing** inspired by [Tom Foster](https://github.com/tcpipuk)'s [Synapse homeserver guide](https://tcpipuk.github.io/synapse/index.html). Instead of routing requests to one or more [generic workers](#generic-workers) based only on the requestor's IP adddress, specialized load-balancing routes to **4 different types of specialized workers** based on **smarter criteria** — the access token (username) of the requestor and/or on the resource (room, etc.) being requested. The playbook supports these **4 types** of specialized workers: -- Room workers - handles various [Client-Server](https://spec.matrix.org/v1.9/client-server-api/) & [Federation](https://spec.matrix.org/v1.9/server-server-api) APIs dedicated to handling specific rooms -- Sync workers - handles various [Client-Server](https://spec.matrix.org/v1.9/client-server-api/) APIs related to synchronization (most notably [the `/sync` endpoint](https://spec.matrix.org/v1.9/client-server-api/#get_matrixclientv3sync)) -- Client readers - handles various [Client-Server](https://spec.matrix.org/v1.9/client-server-api/) APIs which are not for specific rooms (handled by **room workers**) or for synchronization (handled by **sync workers**) -- Federation readers - handles various [Federation](https://spec.matrix.org/v1.9/server-server-api) APIs which are not for specific rooms (handled by **room workers**) +- Room workers — handles various [Client-Server](https://spec.matrix.org/v1.9/client-server-api/) & [Federation](https://spec.matrix.org/v1.9/server-server-api) APIs dedicated to handling specific rooms +- Sync workers — handles various [Client-Server](https://spec.matrix.org/v1.9/client-server-api/) APIs related to synchronization (most notably [the `/sync` endpoint](https://spec.matrix.org/v1.9/client-server-api/#get_matrixclientv3sync)) +- Client readers — handles various [Client-Server](https://spec.matrix.org/v1.9/client-server-api/) APIs which are not for specific rooms (handled by **room workers**) or for synchronization (handled by **sync workers**) +- Federation readers — handles various [Federation](https://spec.matrix.org/v1.9/server-server-api) APIs which are not for specific rooms (handled by **room workers**) To use specialized load-balancing, consider enabling the `specialized-workers` [worker preset](#worker-presets) and potentially [tweaking the number of workers of each type](#controlling-the-number-of-worker-instances) from the default (one of each). @@ -170,6 +183,21 @@ The playbook can install and configure Synapse Admin for you. For details about This playbook allows you to enable Synapse metrics, which can provide insight into the performance and activity of Synapse. -To enable Synapse runtime metrics see: [Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server](configuring-playbook-prometheus-grafana.md) +To enable Synapse runtime metrics, see: [Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server](configuring-playbook-prometheus-grafana.md) and [its subsection](configuring-playbook-prometheus-grafana.md#expose-metrics-of-other-services-roles) To enable Synapse usage metrics, see: [Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md) + +## 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-synapse`. + +### Increase logging verbosity + +Because Synapse is originally very chatty when it comes to logging, we intentionally reduce its [logging level](https://docs.python.org/3/library/logging.html#logging-levels) from `INFO` to `WARNING`. + +If you'd like to debug an issue or [report a Synapse bug](https://github.com/element-hq/synapse/issues/new/choose) to the developers, it'd be better if you temporarily increase the logging verbosity to `INFO`. To do so, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +matrix_synapse_log_level: "INFO" +matrix_synapse_storage_sql_log_level: "INFO" +matrix_synapse_root_log_level: "INFO" diff --git a/docs/configuring-playbook-telemetry.md b/docs/configuring-playbook-telemetry.md index aa26fb734..58e67543a 100644 --- a/docs/configuring-playbook-telemetry.md +++ b/docs/configuring-playbook-telemetry.md @@ -1,3 +1,13 @@ + + # Enabling Telemetry for your Matrix server (optional) By default, this playbook configures your Matrix homeserver to not send any telemetry data anywhere. diff --git a/docs/configuring-playbook-traefik.md b/docs/configuring-playbook-traefik.md index 66d6b1aee..46b236580 100644 --- a/docs/configuring-playbook-traefik.md +++ b/docs/configuring-playbook-traefik.md @@ -1,30 +1,31 @@ -# Configuring the Traefik reverse-proxy (optional, advanced) - -By default, this playbook installs and manages a [Traefik](https://doc.traefik.io/traefik/) reverse-proxy server, powered by the [ansible-role-traefik](https://github.com/mother-of-all-self-hosting/ansible-role-traefik) Ansible role. + -## Adjusting SSL certificate retrieval +# Configuring the Traefik reverse-proxy (optional, advanced) -See the dedicated [Adjusting SSL certificate retrieval](configuring-playbook-ssl-certificates.md) documentation page. +By default, this playbook installs and manages a [Traefik](https://doc.traefik.io/traefik/) reverse-proxy server, powered by the [ansible-role-traefik](https://github.com/mother-of-all-self-hosting/ansible-role-traefik) Ansible role for you. If that's okay, you can skip this document. -## Increase logging verbosity +## Adjusting the playbook configuration -```yaml -traefik_config_log_level: DEBUG -``` +This Ansible role support various configuration options. Feel free to consult its `default/main.yml` variables file. -## Disable access logs +### Disable access logs -This will disable access logging. +To disable access logging, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: ```yaml traefik_config_accessLog_enabled: false ``` -## Enable Traefik Dashboard +### Enable Traefik Dashboard -This will enable a Traefik [Dashboard](https://doc.traefik.io/traefik/operations/dashboard/) UI at `https://matrix.example.com/dashboard/` (note the trailing `/`). +To enable a Traefik [Dashboard](https://doc.traefik.io/traefik/operations/dashboard/) UI at `https://matrix.example.com/dashboard/` (note the trailing `/`), add the following configuration to your `vars.yml` file: ```yaml traefik_dashboard_enabled: true @@ -34,31 +35,48 @@ traefik_dashboard_basicauth_user: YOUR_USERNAME_HERE traefik_dashboard_basicauth_password: YOUR_PASSWORD_HERE ``` -⚠️ **Warning**: Enabling the dashboard on a hostname you use for something else (like `matrix_server_fqn_matrix` in the configuration above) may cause conflicts. Enabling the Traefik Dashboard makes Traefik capture all `/dashboard` and `/api` requests and forward them to itself. If any of the services hosted on the same hostname requires any of these 2 URL prefixes, you will experience problems. So far, we're not aware of any playbook services which occupy these endpoints and are likely to cause conflicts. +> [!WARNING] +> Enabling the dashboard on a hostname you use for something else (like `matrix_server_fqn_matrix` in the configuration above) may cause conflicts. Enabling the Traefik Dashboard makes Traefik capture all `/dashboard` and `/api` requests and forward them to itself. If any of the services hosted on the same hostname requires any of these 2 URL prefixes, you will experience problems. So far, we're not aware of any playbook services which occupy these endpoints and are likely to cause conflicts. + +### Extending the configuration + +There are some additional things you may wish to configure about the component. + +Take a look at: -## Additional configuration +- [Traefik role](https://github.com/mother-of-all-self-hosting/ansible-role-traefik)'s [`defaults/main.yml`](https://github.com/mother-of-all-self-hosting/ansible-role-traefik/blob/main/defaults/main.yml) for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `traefik_configuration_extension_yaml` variable -Use the `traefik_configuration_extension_yaml` variable provided by the Traefik Ansible role to override or inject additional settings, even when no dedicated variable exists. +For example, to enable and secure the Dashboard, you can add the following configuration to your `vars.yml` file: + +**Note**: this is a contrived example as you can enable and secure the Dashboard using the dedicated variables. See above for details. ```yaml -# This is a contrived example. -# You can enable and secure the Dashboard using dedicated variables. See above. traefik_configuration_extension_yaml: | + # Your custom YAML configuration for Traefik goes here. + # This configuration extends the default starting configuration (`traefik_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 `traefik_configuration_yaml`. + # + # Example configuration extension follows: + # api: dashboard: true ``` -## Reverse-proxying another service behind Traefik +### Reverse-proxying another service behind Traefik The preferred way to reverse-proxy additional services behind Traefik would be to start the service as another container, configure the container with the corresponding Traefik [container labels](https://docs.docker.com/config/labels-custom-metadata/) (see [Traefik & Docker](https://doc.traefik.io/traefik/routing/providers/docker/)), and connect the service to the `traefik` network. Some services are also already available via the compatible [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook), but take a look at the minor [interoperability adjustments](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/interoperability.md). However, if your service does not run on a container or runs on another machine, the following configuration might be what you are looking for. -## Reverse-proxying a remote HTTP/HTTPS service behind Traefik +#### Reverse-proxying a remote HTTP/HTTPS service behind Traefik If you want to host another webserver would be reachable via `my-fancy-website.example.net` from the internet and via `https://:` from inside your network, you can make the playbook's integrated Traefik instance reverse-proxy the traffic to the correct host. -Prerequisites: DNS and routing for the domain `my-fancy-website.example.net` need to be set up correctly. In this case, you'd be pointing the domain name to your Matrix server - `my-fancy-website.example.net` would be a CNAME going to `matrix.example.com`. +Prerequisites: DNS and routing for the domain `my-fancy-website.example.net` need to be set up correctly. In this case, you'd be pointing the domain name to your Matrix server — `my-fancy-website.example.net` would be a CNAME going to `matrix.example.com`. First, we have to adjust the static configuration of Traefik, so that we can add additional configuration files: @@ -109,7 +127,7 @@ aux_file_definitions: ``` Changing the `url` to one with an `http://` prefix would allow to connect to the server via HTTP. -## Reverse-proxying another service behind Traefik without terminating SSL +#### Reverse-proxying another service behind Traefik without terminating SSL If you do not want to terminate SSL at the Traefik instance (for example, because you're already terminating SSL at other webserver), you need to adjust the static configuration in the same way as in the previous chapter in order to be able to add our own dynamic configuration files. Afterwards, you can add the following configuration to your `vars.yml` configuration file: @@ -134,11 +152,12 @@ Changing the `url` to one with an `http://` prefix would allow to connect to the With these changes, all TCP traffic will be reverse-proxied to the target system. -⚠️ **Warning**: This configuration might lead to problems or need additional steps when a [certbot](https://certbot.eff.org/) behind Traefik also tries to manage [Let's Encrypt](https://letsencrypt.org/) certificates, as Traefik captures all traffic to ```PathPrefix(`/.well-known/acme-challenge/`)```. +> [!WARNING] +> This configuration might lead to problems or need additional steps when a [certbot](https://certbot.eff.org/) behind Traefik also tries to manage [Let's Encrypt](https://letsencrypt.org/) certificates, as Traefik captures all traffic to ```PathPrefix(`/.well-known/acme-challenge/`)```. -## Traefik behind a `proxy_protocol` reverse-proxy +#### Traefik behind a `proxy_protocol` reverse-proxy -If you run a reverse-proxy which speaks `proxy_protocol`, add the following to your configuration file: +If you run a reverse-proxy which speaks `proxy_protocol`, add the following configuration to your `vars.yml` file: ```yaml traefik_configuration_extension_yaml: | @@ -156,3 +175,34 @@ traefik_configuration_extension_yaml: | - "/32" - "/128" ``` + +## Other configurations + +### Adjusting SSL certificate retrieval + +See the dedicated [Adjusting SSL certificate retrieval](configuring-playbook-ssl-certificates.md) documentation page. + +## Installing + +After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: + + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start +``` + +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. + +## 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-traefik`. + +### Increase logging verbosity + +The default logging level for this component is `INFO`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +traefik_config_log_level: DEBUG +``` diff --git a/docs/configuring-playbook-turn.md b/docs/configuring-playbook-turn.md index a0915312d..9c9b31271 100644 --- a/docs/configuring-playbook-turn.md +++ b/docs/configuring-playbook-turn.md @@ -1,3 +1,13 @@ + + # Configuring a TURN server (optional, advanced) By default, this playbook installs and configures the [coturn](https://github.com/coturn/coturn) as a TURN server, through which clients can make audio/video calls even from [NAT](https://en.wikipedia.org/wiki/Network_address_translation)-ed networks. It also configures the Synapse chat server by default, so that it points to the coturn TURN server installed by the playbook. If that's okay, you can skip this document. @@ -64,6 +74,18 @@ jitsi_web_stun_servers: You can put multiple host/port combinations if you'd like to. +### Edit the reloading schedule (optional) + +By default the service is reloaded on 6:30 a.m. every day based on the `matrix_coturn_reload_schedule` variable so that new SSL certificates can kick in. It is defined in the format of systemd timer calendar. + +To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs): + +```yaml +matrix_coturn_reload_schedule: "*-*-* 06:30:00" +``` + +**Note**: the actual job may run with a delay. See `matrix_coturn_reload_schedule_randomized_delay_sec` for its default value. + ### Extending the configuration There are some additional things you may wish to configure about the TURN server. @@ -94,3 +116,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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. + +## 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-coturn`. diff --git a/docs/configuring-playbook-user-verification-service.md b/docs/configuring-playbook-user-verification-service.md index 4b62c378b..662f8408e 100644 --- a/docs/configuring-playbook-user-verification-service.md +++ b/docs/configuring-playbook-user-verification-service.md @@ -1,3 +1,10 @@ + + # Setting up Matrix User Verification Service (optional) The playbook can install and configure [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) (hereafter: UVS) for you. @@ -43,7 +50,8 @@ ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=uvs passwor UVS requires an access token as an admin user to verify RoomMembership and PowerLevel against `matrix_user_verification_service_uvs_homeserver_url`. 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. +> [!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 the playbook configuration @@ -55,25 +63,23 @@ matrix_user_verification_service_enabled: true matrix_user_verification_service_uvs_access_token: "ACCESS_TOKEN_HERE" ``` -Check the role's [defaults/main.yml](../roles/custom/matrix-user-verification-service/defaults/main.yml) for the full list of variables that you could override. Note that all the plugging happening in `group_vars/matrix_servers`. - In the default configuration, the UVS Server is only reachable via the docker network, which is fine if e.g. Jitsi is also running in a container on the host. However, it is possible to expose UVS via setting `matrix_user_verification_service_container_http_host_bind_port`. ### Custom Auth Token (optional) -It is possible to set an API Auth Token to restrict access to the UVS. If this is enabled, anyone making a request to UVS must provide it via the header "Authorization: Bearer TOKEN" +It is possible to set an API Auth Token to restrict access to the UVS. If this is enabled, anyone making a request to UVS must provide it via the header `Authorization: Bearer YOUR_TOKEN_HERE`. -By default, the token will be derived from `matrix_homeserver_generic_secret_key` in `group_vars/matrix_servers`. +By default, the token (`YOUR_TOKEN_HERE`) will be derived from `matrix_homeserver_generic_secret_key` in `group_vars/matrix_servers`. -To set your own Token, add the following configuration to your `vars.yml` file: +To set your own token, add the following configuration to your `vars.yml` file. Make sure to replace `YOUR_TOKEN_HERE` with your own. ```yaml -matrix_user_verification_service_uvs_auth_token: "TOKEN" +matrix_user_verification_service_uvs_auth_token: "YOUR_TOKEN_HERE" ``` If a Jitsi instance is also managed by this playbook and [`matrix` authentication](configuring-playbook-jitsi.md#authenticate-using-matrix-openid-auth-type-matrix) is enabled there, this collection will automatically configure Jitsi to use the configured auth token. -### Disable Auth (optional) +### Disable Authorization (optional) Authorization is enabled by default. To disable it, add the following configuration to your `vars.yml` file: @@ -89,19 +95,15 @@ In theory (however currently untested), UVS can handle federation. To enable it, matrix_user_verification_service_uvs_pin_openid_verify_server_name: false ``` -This will instruct UVS to verify the OpenID token against any domain given in a request. Homeserver discovery is done via '.well-known/matrix/server' of the given domain. +This will instruct UVS to verify the OpenID token against any domain given in a request. Homeserver discovery is done via `.well-known/matrix/server` of the given domain. -### Controlling the logging level (optional) +### Extending the configuration -To specify the logging level, add the following configuration to your `vars.yml` file: - -```yaml -UVS_LOG_LEVEL: info -``` +There are some additional things you may wish to configure about the component. -Replace `info` with one of the choices (they can be checked [here](https://github.com/winstonjs/winston#logging-levels)) to control the verbosity of the logs generated. +Take a look at: -If you have issues with a service, and are requesting support, the higher levels of logging will generally be more helpful. +- `roles/custom/matrix-user-verification-service/defaults/main.yml` for some variables that you can customize via your `vars.yml` file ## Installing @@ -118,13 +120,24 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju ## 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-user-verification-service`. + +### Increase logging verbosity + +The default logging level for this component is `info`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: + +```yaml +# See choices here: https://github.com/winstonjs/winston#logging-levels +matrix_user_verification_service_uvs_log_level: debug +``` + ### TLS Certificate Checking If the Matrix Homeserver does not provide a valid TLS certificate, UVS will fail with the following error message: > message: 'No response received: [object Object]', -This also applies to self-signed and let's encrypt staging certificates. +This also applies to self-signed and Let's Encrypt staging certificates. To disable certificate validation altogether (INSECURE! Not suitable for production use!) set: `NODE_TLS_REJECT_UNAUTHORIZED=0` diff --git a/docs/configuring-playbook.md b/docs/configuring-playbook.md index 98d182122..58cea52b9 100644 --- a/docs/configuring-playbook.md +++ b/docs/configuring-playbook.md @@ -1,6 +1,22 @@ + + # Configuring the playbook -[Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > Configuring the playbook > [Installing](installing.md) +[Prerequisites](prerequisites.md) > [Configuring DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > Configuring the playbook > [Installing](installing.md) If you've configured your DNS records and retrieved the playbook's source code to your computer, you can start configuring the playbook. To do so, follow these steps inside the playbook directory: @@ -8,13 +24,13 @@ If you've configured your DNS records and retrieved the playbook's source code t 2. copy the sample configuration file (`cp examples/vars.yml inventory/host_vars/matrix.example.com/vars.yml`) -3. edit the configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) to your liking. You may also take a look at the various `roles/*/ROLE_NAME_HERE/defaults/main.yml` files and see if there's something you'd like to copy over and override in your `vars.yml` configuration file. +3. edit the configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) to your liking. You may also take a look at the various `roles/*/ROLE_NAME_HERE/defaults/main.yml` files (after importing external roles with `just update` into `roles/galaxy`) and see if there's something you'd like to copy over and override in your `vars.yml` configuration file. 4. copy the sample inventory hosts file (`cp examples/hosts inventory/hosts`) 5. edit the inventory hosts file (`inventory/hosts`) to your liking -6. (optional, advanced) you may wish to keep your `inventory` directory under version control with [git](https://git-scm.com/) or any other version-control system. +6. (optional, advanced) you may wish to keep your `inventory` directory under version control with [git](https://git-scm.com/) or any other version-control system. The `inventory` directory path is ignored via `.gitignore`, so it won't be part of the playbook repository. You can safely create a new git repository inside that directory with `git init`, etc. 7. (optional, advanced) to run Ansible against multiple servers with different `sudo` credentials, you can copy the sample inventory hosts yaml file for each of your hosts: (`cp examples/host.yml inventory/my_host1.yml` …) and use the [`ansible-all-hosts.sh`](../bin/ansible-all-hosts.sh) script [in the installation step](installing.md). @@ -35,7 +51,7 @@ For a more custom setup, see the [Other configuration options](#other-configurat - [Configuring Conduit](configuring-playbook-conduit.md), if you've switched to the [Conduit](https://conduit.rs) homeserver implementation - - [Configuring Conduwuit](configuring-playbook-conduwuit.md), if you've switched to the [Conduwuit](https://conduwuit.puppyirl.gay/) homeserver implementation + - [Configuring conduwuit](configuring-playbook-conduwuit.md), if you've switched to the [conduwuit](https://conduwuit.puppyirl.gay/) homeserver implementation - [Configuring Dendrite](configuring-playbook-dendrite.md), if you've switched to the [Dendrite](https://matrix-org.github.io/dendrite) homeserver implementation @@ -61,6 +77,8 @@ For a more custom setup, see the [Other configuration options](#other-configurat - [Controlling Matrix federation](configuring-playbook-federation.md) + - [Configuring IPv6](./configuring-ipv6.md) + ### Clients Web clients for Matrix that you can host on your own domains. @@ -73,6 +91,9 @@ Web clients for Matrix that you can host on your own domains. - [Setting up SchildiChat Web](configuring-playbook-client-schildichat-web.md), if you've enabled [SchildiChat Web](https://schildi.chat/), a web client based on [Element Web](https://element.io/) with some extras and tweaks +- [Setting up FluffyChat Web](configuring-playbook-client-fluffychat-web.md), if you've enabled [FluffyChat Web](https://github.com/krille-chan/fluffychat), a cute cross-platform messenger (web, iOS, Android) for Matrix written in [Flutter](https://flutter.dev/) + + ### Authentication and user-related Extend and modify how users are authenticated on your homeserver. @@ -101,17 +122,21 @@ Extend and modify how users are authenticated on your homeserver. Use alternative file storage to the default `media_store` folder. -- [Storing Matrix media files on Amazon S3 with Goofys](configuring-playbook-s3-goofys.md) +- [Storing Matrix media files using matrix-media-repo](configuring-playbook-matrix-media-repo.md) - [Storing Synapse media files on Amazon S3 or another compatible Object Storage](configuring-playbook-s3.md) -- [Storing Matrix media files using matrix-media-repo](configuring-playbook-matrix-media-repo.md) +- [Storing Synapse media files on Amazon S3 with Goofys](configuring-playbook-s3-goofys.md) + +- [Storing Synapse media files on Amazon S3 with synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md) ### Bridging other networks Bridges can be used to connect your Matrix installation with third-party communication networks. -- [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) - a common guide for configuring mautrix bridges +- [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) — a common guide for configuring mautrix bridges + +- [Setting up Mautrix Bluesky bridging](configuring-playbook-bridge-mautrix-bluesky.md) - [Setting up Mautrix Discord bridging](configuring-playbook-bridge-mautrix-discord.md) @@ -145,7 +170,7 @@ Bridges can be used to connect your Matrix installation with third-party communi - [Setting up Beeper LinkedIn bridging](configuring-playbook-bridge-beeper-linkedin.md) -- [Setting up matrix-hookshot](configuring-playbook-bridge-hookshot.md) - a bridge between Matrix and multiple project management services, such as [GitHub](https://github.com), [GitLab](https://about.gitlab.com) and [JIRA](https://www.atlassian.com/software/jira). +- [Setting up matrix-hookshot](configuring-playbook-bridge-hookshot.md) — a bridge between Matrix and multiple project management services, such as [GitHub](https://github.com), [GitLab](https://about.gitlab.com) and [JIRA](https://www.atlassian.com/software/jira). - [Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md) @@ -161,8 +186,6 @@ Bridges can be used to connect your Matrix installation with third-party communi - [Setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md) -- [Setting up Email2Matrix](configuring-playbook-email2matrix.md) - - [Setting up Postmoogle email bridging](configuring-playbook-bridge-postmoogle.md) - [Setting up Matrix SMS bridging](configuring-playbook-bridge-matrix-bridge-sms.md) @@ -175,23 +198,23 @@ Bridges can be used to connect your Matrix installation with third-party communi Bots provide various additional functionality to your installation. -- [Setting up baibot](configuring-playbook-bot-baibot.md) - a bot through which you can talk to various [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) services ([OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) and [others](https://github.com/etkecc/baibot/blob/main/docs/providers.md)) +- [Setting up baibot](configuring-playbook-bot-baibot.md) — a bot through which you can talk to various [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) services ([OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) and [others](https://github.com/etkecc/baibot/blob/main/docs/providers.md)) -- [Setting up matrix-reminder-bot](configuring-playbook-bot-matrix-reminder-bot.md) - a bot to remind you about stuff +- [Setting up matrix-reminder-bot](configuring-playbook-bot-matrix-reminder-bot.md) — a bot to remind you about stuff -- [Setting up matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) - a bot to create and manage registration tokens to invite users +- [Setting up matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) — a bot to create and manage registration tokens to invite users -- [Setting up maubot](configuring-playbook-bot-maubot.md) - a plugin-based Matrix bot system +- [Setting up maubot](configuring-playbook-bot-maubot.md) — a plugin-based Matrix bot system -- [Setting up Honoroit](configuring-playbook-bot-honoroit.md) - a helpdesk bot +- [Setting up Honoroit](configuring-playbook-bot-honoroit.md) — a helpdesk bot -- [Setting up Mjolnir](configuring-playbook-bot-mjolnir.md) - a moderation tool/bot +- [Setting up Mjolnir](configuring-playbook-bot-mjolnir.md) — a moderation tool/bot -- [Setting up Draupnir](configuring-playbook-bot-draupnir.md) - a moderation tool/bot, forked from Mjolnir and maintained by its former leader developer +- [Setting up Draupnir](configuring-playbook-bot-draupnir.md) — a moderation tool/bot, forked from Mjolnir and maintained by its former leader developer -- [Setting up Draupnir for all/D4A](configuring-playbook-appservice-draupnir-for-all.md) - like the [Draupnir bot](configuring-playbook-bot-draupnir.md) mentioned above, but running in appservice mode and supporting multiple instances +- [Setting up Draupnir for all/D4A](configuring-playbook-appservice-draupnir-for-all.md) — like the [Draupnir bot](configuring-playbook-bot-draupnir.md) mentioned above, but running in appservice mode and supporting multiple instances -- [Setting up Buscarron](configuring-playbook-bot-buscarron.md) - a bot you can use to send any form (HTTP POST, HTML) to a (encrypted) Matrix room +- [Setting up Buscarron](configuring-playbook-bot-buscarron.md) — a bot you can use to send any form (HTTP POST, HTML) to a (encrypted) Matrix room ### Administration @@ -201,21 +224,27 @@ Services that help you in administrating and monitoring your Matrix installation - [Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server](configuring-playbook-prometheus-grafana.md) -- [Enabling metrics and graphs for NginX logs](configuring-playbook-prometheus-nginxlog.md) - - [Setting up the rageshake bug report server](configuring-playbook-rageshake.md) - [Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md) - Backups: - - [Setting up BorgBackup](configuring-playbook-backup-borg.md) - a full Matrix server backup solution, including the Postgres database + - [Setting up BorgBackup](configuring-playbook-backup-borg.md) — a full Matrix server backup solution, including the Postgres database - - [Setting up postgres backup](configuring-playbook-postgres-backup.md) - a Postgres-database backup solution (note: does not include other files) + - [Setting up Postgres backup](configuring-playbook-postgres-backup.md) — a Postgres-database backup solution (note: does not include other files) ### Other specialized services Various services that don't fit any other categories. +- [Setting up Element Call](configuring-playbook-element-call.md) — a native Matrix video conferencing application, built on top of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) (optional) + +- [Setting up LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) - a component of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) (optional) + +- [Setting up LiveKit Server](configuring-playbook-livekit-server.md) - a component of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) (optional) + +- [Setting up Matrix RTC](configuring-playbook-matrix-rtc.md) (optional) + - [Setting up Synapse Auto Invite Accept](configuring-playbook-synapse-auto-accept-invite.md) - [Setting up synapse-auto-compressor](configuring-playbook-synapse-auto-compressor.md) for compressing the database on Synapse homeservers @@ -226,7 +255,7 @@ Various services that don't fit any other categories. - [Setting up the Jitsi video-conferencing platform](configuring-playbook-jitsi.md) -- [Setting up Cactus Comments](configuring-playbook-cactus-comments.md) - a federated comment system built on Matrix +- [Setting up Cactus Comments](configuring-playbook-cactus-comments.md) — a federated comment system built on Matrix - [Setting up Pantalaimon (E2EE aware proxy daemon)](configuring-playbook-pantalaimon.md) (advanced) @@ -240,17 +269,17 @@ Various services that don't fit any other categories. - [Setting up the Sliding Sync proxy](configuring-playbook-sliding-sync-proxy.md) for clients which require Sliding Sync support (like old Element X versions, before it got switched to Simplified Sliding Sync) -- [Setting up Appservice Webhooks bridging](configuring-playbook-bridge-appservice-webhooks.md) (deprecated; the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be installed using [this playbook](configuring-playbook-bridge-hookshot.md)) +- [Setting up Appservice Webhooks bridging](configuring-playbook-bridge-appservice-webhooks.md) (deprecated; the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md)) - [Setting up the Dimension integration manager](configuring-playbook-dimension.md) ([unmaintained](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2806#issuecomment-1673559299); after [installing](installing.md)) -- [Setting up Go-NEB](configuring-playbook-bot-go-neb.md) (unmaintained; the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be installed using [this playbook](configuring-playbook-bridge-hookshot.md)) +- [Setting up Email2Matrix](configuring-playbook-email2matrix.md) (removed; the author suggests taking a look at [Postmoogle](https://github.com/etkecc/postmoogle) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-postmoogle.md)) -- [Setting up matrix-bot-chatgpt](configuring-playbook-bot-chatgpt.md) (unmaintained; the bridge's author suggests taking a look at [baibot](https://github.com/etkecc/baibot) as a replacement, which can also be installed using [this playbook](configuring-playbook-bot-baibot.md)) +- [Setting up Go-NEB](configuring-playbook-bot-go-neb.md) (unmaintained; the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md)) -- [Setting up Mautrix Facebook bridging](configuring-playbook-bridge-mautrix-facebook.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-messenger](configuring-playbook-bridge-mautrix-meta-messenger.md)) +- [Setting up matrix-bot-chatgpt](configuring-playbook-bot-chatgpt.md) (unmaintained; the bridge's author suggests taking a look at [baibot](https://github.com/etkecc/baibot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bot-baibot.md)) -- [Setting up Mautrix Hangouts bridging](configuring-playbook-bridge-mautrix-hangouts.md) (deprecated in favor of the Google Chat bridge with [mautrix-googlechat](configuring-playbook-bridge-mautrix-googlechat.md)) +- [Setting up Mautrix Facebook bridging](configuring-playbook-bridge-mautrix-facebook.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-messenger](configuring-playbook-bridge-mautrix-meta-messenger.md)) - [Setting up Mautrix Instagram bridging](configuring-playbook-bridge-mautrix-instagram.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-instagram](configuring-playbook-bridge-mautrix-meta-instagram.md)) diff --git a/docs/configuring-well-known.md b/docs/configuring-well-known.md index 9c8e9bef8..ec5ad90ce 100644 --- a/docs/configuring-well-known.md +++ b/docs/configuring-well-known.md @@ -1,3 +1,16 @@ + + # Configuring Service Discovery via .well-known This documentation page explains how to configure Service discovery via `/.well-known/` files. Service discovery is a way for the Matrix network to discover where a Matrix server is. @@ -6,11 +19,11 @@ This documentation page explains how to configure Service discovery via `/.well- There are 3 types of well-known service discovery mechanism that Matrix makes use of: -- (important) **Federation Server discovery** (`/.well-known/matrix/server`) -- assists other servers in the Matrix network with finding your server. With the default playbook configuration specified on the sample `vars.yml` ([`examples/vars.yml`](../examples/vars.yml)), this is necessary for federation to work. Without a proper configuration, your server will effectively not be part of the Matrix network. +- (important) **Federation Server discovery** (`/.well-known/matrix/server`) — assists other servers in the Matrix network with finding your server. With the default playbook configuration specified on the sample `vars.yml` ([`examples/vars.yml`](../examples/vars.yml)), this is necessary for federation to work. Without a proper configuration, your server will effectively not be part of the Matrix network. -- (less important) **Client Server discovery** (`/.well-known/matrix/client`) -- assists programs that you use to connect to your server (e.g. Element Web), so that they can make it more convenient for you by automatically configuring the "Homeserver URL" and "Identity Server URL" addresses. +- (less important) **Client Server discovery** (`/.well-known/matrix/client`) — assists programs that you use to connect to your server (e.g. Element Web), so that they can make it more convenient for you by automatically configuring the "Homeserver URL" and "Identity Server URL" addresses. -- (optional) **Support service discovery** (`/.well-known/matrix/support`) -- returns server admin contact and support page of the domain. +- (optional) **Support service discovery** (`/.well-known/matrix/support`) — returns server admin contact and support page of the domain. ### Federation Server Discovery @@ -67,7 +80,7 @@ To implement the service discovery mechanisms, your base domain's server (e.g. ` If you don't have a server for your base domain at all, you can use the Matrix server for this. If you don't need the base domain (e.g. `example.com`) for anything else (hosting a website, etc.), you can point it to the Matrix server's IP address and tell the playbook to configure it. -**This is the easiest way to set up well-known serving** -- letting the playbook handle the whole base domain for you (including SSL certificates, etc.) and take care to serve the appropriate well-known files automatically. +**This is the easiest way to set up well-known serving** — letting the playbook handle the whole base domain for you (including SSL certificates, etc.) and take care to serve the appropriate well-known files automatically. If you decide to go this route, you don't need to read ahead in this document. Instead, go to [Serving the base domain](configuring-playbook-base-domain-serving.md) to learn how the playbook can help you set it up. @@ -97,7 +110,7 @@ This is relatively easy to do and possibly your only choice if you can only host This option is less fragile and generally better. -On the base domain's server (e.g. `example.com`), you can set up reverse-proxying, so that any access for the `/.well-known/matrix` location prefix is forwarded to the Matrix domain's server (e.g. `matrix.example.com`). +On the base domain's server (e.g. `example.com`), you can set up reverse-proxying (or simply a 302 redirect), so that any access for the `/.well-known/matrix` location prefix is forwarded to the Matrix domain's server (e.g. `matrix.example.com`). With this method, you **don't need** to add special HTTP headers for [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) reasons (like `Access-Control-Allow-Origin`), because your Matrix server (where requests ultimately go) will be configured by this playbook correctly. @@ -185,4 +198,4 @@ No matter which method you've used to set up the well-known files, if you've don - `https://example.com/.well-known/matrix/client` - `https://example.com/.well-known/matrix/support` -You can also check if everything is configured correctly, by [checking if services work](maintenance-checking-services.md). +You can also check if everything is configured correctly, by [checking if services work](maintenance-and-troubleshooting.md#how-to-check-if-services-work). diff --git a/docs/container-images.md b/docs/container-images.md index 2a38b2bd4..b445cc001 100644 --- a/docs/container-images.md +++ b/docs/container-images.md @@ -1,3 +1,20 @@ + + # Container images used by the playbook This page summarizes the container ([Docker](https://www.docker.com/)) images used by the playbook when setting up your server. @@ -10,7 +27,7 @@ We try to stick to official images (provided by their respective projects) as mu | ------- | --------------- | -------- | ----------- | | [Synapse](configuring-playbook-synapse.md) | [element-hq/synapse](https://ghcr.io/element-hq/synapse) | ✅ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network | | [Conduit](configuring-playbook-conduit.md) | [matrixconduit/matrix-conduit](https://hub.docker.com/r/matrixconduit/matrix-conduit) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Conduit is a lightweight open-source server implementation of the Matrix Specification with a focus on easy setup and low system requirements | -| [Conduwuit](configuring-playbook-conduwuit.md) | [girlbossceo/conduwuit](https://ghcr.io/girlbossceo/conduwuit) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Conduwuit is a fork of Conduit. | +| [conduwuit](configuring-playbook-conduwuit.md) | [girlbossceo/conduwuit](https://ghcr.io/girlbossceo/conduwuit) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit is a fork of Conduit. | | [Dendrite](configuring-playbook-dendrite.md) | [matrixdotorg/dendrite-monolith](https://hub.docker.com/r/matrixdotorg/dendrite-monolith/) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Dendrite is a second-generation Matrix homeserver written in Go, an alternative to Synapse. | ## Clients @@ -32,11 +49,13 @@ Services that run on the server to make the various parts of your installation w | ------- | --------------- | -------- | ----------- | | [PostgreSQL](configuring-playbook-external-postgres.md) | [postgres](https://hub.docker.com/_/postgres/) | ✅ | Database for Synapse. [Using an external PostgreSQL server](configuring-playbook-external-postgres.md) is also possible. | | [coturn](configuring-playbook-turn.md) | [coturn/coturn](https://hub.docker.com/r/coturn/coturn/) | ✅ | STUN/TURN server for WebRTC audio/video calls | -| [Traefik](configuring-playbook-traefik.md) | [Traefik](https://hub.docker.com/_/traefik/) | ✅ | Web server, listening on ports 80, 443 and 8448 - standing in front of all the other services. Using your own webserver [is possible](configuring-playbook-own-webserver.md) | -| [Let's Encrypt](configuring-playbook-ssl-certificates.md) | [certbot/certbot](https://hub.docker.com/r/certbot/certbot/) | ✅ | The [certbot](https://certbot.eff.org/) tool for obtaining SSL certificates from [Let's Encrypt](https://letsencrypt.org/) | +| [Traefik](configuring-playbook-traefik.md) | [Traefik](https://hub.docker.com/_/traefik/) | ✅ | Web server, listening on ports 80, 443 and 8448 — standing in front of all the other services. [Using your own webserver](configuring-playbook-own-webserver.md) is also possible. | +| [Let's Encrypt](configuring-playbook-ssl-certificates.md) | [certbot/certbot](https://hub.docker.com/r/certbot/certbot/) | ✅ | [Certbot](https://certbot.eff.org/) tool for obtaining SSL certificates from [Let's Encrypt](https://letsencrypt.org/) | | [Exim](configuring-playbook-email.md) | [devture/exim-relay](https://hub.docker.com/r/devture/exim-relay/) | ✅ | Mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server) | | [ma1sd](configuring-playbook-ma1sd.md) | [ma1uta/ma1sd](https://hub.docker.com/r/ma1uta/ma1sd/) | ❌ | Matrix Identity Server | | [ddclient](configuring-playbook-dynamic-dns.md) | [linuxserver/ddclient](https://hub.docker.com/r/linuxserver/ddclient) | ❌ | Update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider | +| [LiveKit Server](configuring-playbook-livekit-server.md) | [livekit/livekit-server](https://hub.docker.com/r/livekit/livekit-server/) | ❌ | WebRTC server for audio/video calls | +| [Livekit JWT Service](configuring-playbook-livekit-jwt-service.md) | [element-hq/lk-jwt-service](https://ghcr.io/element-hq/lk-jwt-service) | ❌ | JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md) | ## Authentication @@ -47,10 +66,10 @@ Extend and modify how users are authenticated on your homeserver. | [matrix-synapse-rest-auth](configuring-playbook-rest-auth.md) | (N/A) | ❌ | REST authentication password provider module | | [matrix-synapse-shared-secret-auth](configuring-playbook-shared-secret-auth.md) | (N/A) | ❌ | Password provider module | | [matrix-synapse-ldap3](configuring-playbook-ldap-auth.md) (advanced) | (N/A) | ❌ | LDAP Auth password provider module | -| [matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) | [activism.international/matrix_ldap_registration_proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy/container_registry) | ❌ | A proxy that handles Matrix registration requests and forwards them to LDAP. | -| [matrix-registration](configuring-playbook-matrix-registration.md) | [zeratax/matrix-registration](https://hub.docker.com/r/devture/zeratax-matrix-registration/) | ❌ | A simple python application to have a token based Matrix registration | -| [Matrix User Verification Service](configuring-playbook-user-verification-service.md) (UVS) | [matrixdotorg/matrix-user-verification-service](https://hub.docker.com/r/atrixdotorg/matrix-user-verification-service) | ❌ | Service to verify details of a user based on an Open ID token | -| [synapse-simple-antispam](configuring-playbook-synapse-simple-antispam.md) (advanced) | (N/A) | ❌ | A spam checker module | +| [matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) | [activism.international/matrix_ldap_registration_proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy/container_registry) | ❌ | Proxy that handles Matrix registration requests and forwards them to LDAP | +| [matrix-registration](configuring-playbook-matrix-registration.md) | [zeratax/matrix-registration](https://hub.docker.com/r/devture/zeratax-matrix-registration/) | ❌ | Simple python application to have a token based Matrix registration | +| [Matrix User Verification Service](configuring-playbook-user-verification-service.md) | [matrixdotorg/matrix-user-verification-service](https://hub.docker.com/r/atrixdotorg/matrix-user-verification-service) | ❌ | Service to verify details of a user based on an Open ID token | +| [synapse-simple-antispam](configuring-playbook-synapse-simple-antispam.md) (advanced) | (N/A) | ❌ | Spam checker module | ## File Storage @@ -60,7 +79,7 @@ Use alternative file storage to the default `media_store` folder. | ------- | --------------- | -------- | ----------- | | [Goofys](configuring-playbook-s3-goofys.md) | [ewoutp/goofys](https://hub.docker.com/r/ewoutp/goofys/) | ❌ | [Amazon S3](https://aws.amazon.com/s3/) (or other S3-compatible object store) storage for Synapse's content repository (`media_store`) files | | [synapse-s3-storage-provider](configuring-playbook-s3.md) | (N/A) | ❌ | [Amazon S3](https://aws.amazon.com/s3/) (or other S3-compatible object store) storage for Synapse's content repository (`media_store`) files | -| [matrix-media-repo](configuring-playbook-matrix-media-repo.md) | [t2bot/matrix-media-repo](https://ghcr.io/t2bot/matrix-media-repo) | ❌ | matrix-media-repo is a highly customizable multi-domain media repository for Matrix. Intended for medium to large deployments, this media repo de-duplicates media while being fully compliant with the specification. | +| [matrix-media-repo](configuring-playbook-matrix-media-repo.md) | [t2bot/matrix-media-repo](https://ghcr.io/t2bot/matrix-media-repo) | ❌ | Highly customizable multi-domain media repository for Matrix. Intended for medium to large deployments, this media repo de-duplicates media while being fully compliant with the specification. | # Bridges @@ -68,6 +87,7 @@ Bridges can be used to connect your Matrix installation with third-party communi | Service | Container image | Default? | Description | | ------- | --------------- | -------- | ----------- | +| [mautrix-bluesky](configuring-playbook-bridge-mautrix-bluesky.md) | [mautrix/bluesky](https://mau.dev/mautrix/bluesky/container_registry) | ❌ | Bridge to [Bluesky](https://bsky.social/about) | | [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) | [mautrix/discord](https://mau.dev/mautrix/discord/container_registry) | ❌ | Bridge to [Discord](https://discord.com/) | | [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) | [mautrix/slack](https://mau.dev/mautrix/slack/container_registry) | ❌ | Bridge to [Slack](https://slack.com/) | | [mautrix-telegram](configuring-playbook-bridge-mautrix-telegram.md) | [mautrix/telegram](https://mau.dev/mautrix/telegram/container_registry) | ❌ | Bridge to [Telegram](https://telegram.org/) | @@ -94,7 +114,6 @@ Bridges can be used to connect your Matrix installation with third-party communi | [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) | [mx-puppet/discord/mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/container_registry) | ❌ | Bridge to [Discord](https://discordapp.com/) | | [mx-puppet-groupme](configuring-playbook-bridge-mx-puppet-groupme.md) | [xangelix/mx-puppet-groupme](https://hub.docker.com/r/xangelix/mx-puppet-groupme) | ❌ | Bridge to [GroupMe](https://groupme.com/) | | [mx-puppet-steam](configuring-playbook-bridge-mx-puppet-steam.md) | [icewind1991/mx-puppet-steam](https://hub.docker.com/r/icewind1991/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) | -| [Email2Matrix](configuring-playbook-email2matrix.md) | [devture/email2matrix](https://hub.docker.com/r/devture/email2matrix/) | ❌ | Bridge for relaying emails to Matrix rooms | | [Postmoogle](configuring-playbook-bridge-postmoogle.md) | [etke.cc/postmoogle](https://github.com/etkecc/postmoogle/container_registry) | ❌ | Email to Matrix bridge | ## Bots @@ -103,13 +122,13 @@ Bots provide various additional functionality to your installation. | Service | Container image | Default? | Description | | ------- | --------------- | -------- | ----------- | -| [baibot](configuring-playbook-bot-baibot.md) | [etke.cc/baibot](https://ghcr.io/etkecc/baibot) | ❌ | A bot that exposes the power of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) to you | +| [baibot](configuring-playbook-bot-baibot.md) | [etke.cc/baibot](https://ghcr.io/etkecc/baibot) | ❌ | Bot that exposes the power of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) to you | | [matrix-reminder-bot](configuring-playbook-bot-matrix-reminder-bot.md) | [anoa/matrix-reminder-bot](https://hub.docker.com/r/anoa/matrix-reminder-bot) | ❌ | Bot for scheduling one-off & recurring reminders and alarms | | [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) | [moanos/matrix-registration-bot](https://hub.docker.com/r/moanos/matrix-registration-bot/) | ❌ | Bot for invitations by creating and managing registration tokens | -| [maubot](configuring-playbook-bot-maubot.md) | [dock.mau.dev/maubot/maubot](https://mau.dev/maubot/maubot/container_registry) | ❌ | A plugin-based Matrix bot system | -| [Honoroit](configuring-playbook-bot-honoroit.md) | [etke.cc/honoroit](https://github.com/etkecc/honoroit/container_registry) | ❌ | A helpdesk bot | -| [Mjolnir](configuring-playbook-bot-mjolnir.md) | [matrixdotorg/mjolnir](https://hub.docker.com/r/matrixdotorg/mjolnir) | ❌ | A moderation tool for Matrix | -| [Draupnir](configuring-playbook-bot-draupnir.md) | [gnuxie/draupnir](https://hub.docker.com/r/gnuxie/draupnir) | ❌ | A moderation tool for Matrix (Fork of Mjolnir) | +| [maubot](configuring-playbook-bot-maubot.md) | [dock.mau.dev/maubot/maubot](https://mau.dev/maubot/maubot/container_registry) | ❌ | Plugin-based Matrix bot system | +| [Honoroit](configuring-playbook-bot-honoroit.md) | [etke.cc/honoroit](https://github.com/etkecc/honoroit/container_registry) | ❌ | Helpdesk bot | +| [Mjolnir](configuring-playbook-bot-mjolnir.md) | [matrixdotorg/mjolnir](https://hub.docker.com/r/matrixdotorg/mjolnir) | ❌ | Moderation tool for Matrix | +| [Draupnir](configuring-playbook-bot-draupnir.md) | [gnuxie/draupnir](https://hub.docker.com/r/gnuxie/draupnir) | ❌ | Moderation tool for Matrix (Fork of Mjolnir) | | [Buscarron](configuring-playbook-bot-buscarron.md) | [etke.cc/buscarron](https://ghcr.io/etkecc/buscarron) | ❌ | Web forms (HTTP POST) to Matrix | ## Administration @@ -120,12 +139,13 @@ Services that help you in administrating and monitoring your Matrix installation | ------- | --------------- | -------- | ----------- | | [matrix-alertmanager-receiver](configuring-playbook-alertmanager-receiver.md) | [metio/matrix-alertmanager-receiver](https://hub.docker.com/r/metio/matrix-alertmanager-receiver) | ❌ | Prometheus' [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) client | | [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) | [element-hq/matrix-authentication-service](https://ghcr.io/element-hq/matrix-authentication-service) | ❌ | OAuth 2.0 and OpenID Provider server | -| [synapse-admin](configuring-playbook-synapse-admin.md) | [etke.cc/synapse-admin](https://ghcr.io/etkecc/synapse-admin) | ❌ | A web UI tool for administrating users and rooms on your Matrix server | +| [synapse-admin](configuring-playbook-synapse-admin.md) | [etke.cc/synapse-admin](https://ghcr.io/etkecc/synapse-admin) | ❌ | Web UI tool for administrating users and rooms on your Matrix server | | [Metrics and Graphs](configuring-playbook-prometheus-grafana.md) | [prom/prometheus](https://hub.docker.com/r/prom/prometheus/) | ❌ | [Prometheus](https://prometheus.io) time-series database server | | [Metrics and Graphs](configuring-playbook-prometheus-grafana.md) | [prom/node-exporter](https://hub.docker.com/r/prom/node-exporter/) | ❌ | Prometheus [node-exporter](https://prometheus.io/docs/guides/node-exporter/) host metrics exporter | | [Metrics and Graphs](configuring-playbook-prometheus-grafana.md) | [grafana/grafana](https://hub.docker.com/r/grafana/grafana/) | ❌ | Graphing tool that works well with the above two images. Our playbook also adds two dashboards for [Synapse](https://github.com/element-hq/synapse/tree/master/contrib/grafana) and [Node Exporter](https://github.com/rfrail3/grafana-dashboards) | -| [Metrics and Graphs](configuring-playbook-prometheus-nginxlog.md) | [martin-helmich/prometheus-nginxlog-exporter/exporter](https://ghcr.io/martin-helmich/prometheus-nginxlog-exporter/exporter) | ❌ | Addon for Prometheus that gathers access logs from various nginx reverse-proxies | +| [Metrics and Graphs](configuring-playbook-prometheus-grafana.md#enable-metrics-and-graphs-for-nginx-logs-optional) | [martin-helmich/prometheus-nginxlog-exporter/exporter](https://ghcr.io/martin-helmich/prometheus-nginxlog-exporter/exporter) | ❌ | Addon for Prometheus that gathers access logs from various nginx reverse-proxies | | [Borg](configuring-playbook-backup-borg.md) | (N/A) | ❌ | Backups | +| [postgres-backup-local](configuring-playbook-postgres-backup.md) | [prodrigestivill/postgres-backup-local](https://hub.docker.com/r/prodrigestivill/postgres-backup-local) | ❌ | Create automatic database backups | | [rageshake](configuring-playbook-rageshake.md) | [matrix-org/rageshake](https://ghcr.io/matrix-org/rageshake) | ❌ | Bug report server | | [synapse-usage-exporter](configuring-playbook-synapse-usage-exporter.md) | Self-building | ❌ | Export the usage statistics of a Synapse homeserver to be scraped by Prometheus. | @@ -136,19 +156,20 @@ Various services that don't fit any other categories. | Service | Container image | Default? | Description | | ------- | --------------- | -------- | ----------- | | [sliding-sync](configuring-playbook-sliding-sync-proxy.md) | [matrix-org/sliding-sync](https://ghcr.io/matrix-org/sliding-sync) | ❌ | Sliding Sync support for clients which require it (like old Element X versions, before it got switched to Simplified Sliding Sync) | -| [synapse_auto_accept_invite](configuring-playbook-synapse-auto-accept-invite.md) | (N/A) | ❌ | A Synapse module to automatically accept invites. | -| [synapse_auto_compressor](configuring-playbook-synapse-auto-compressor.md) | [etke.cc/rust-synapse-compress-state](https://gitlab.com/etke.cc/rust-synapse-compress-state/container_registry) | ❌ | A cli tool that automatically compresses `state_groups` database table in background. | +| [synapse_auto_accept_invite](configuring-playbook-synapse-auto-accept-invite.md) | (N/A) | ❌ | Synapse module to automatically accept invites | +| [synapse_auto_compressor](configuring-playbook-synapse-auto-compressor.md) | [etke.cc/rust-synapse-compress-state](https://gitlab.com/etke.cc/rust-synapse-compress-state/container_registry) | ❌ | Cli tool that automatically compresses `state_groups` database table in background | | [Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced) | [devture/matrix-corporal](https://hub.docker.com/r/devture/matrix-corporal/) | ❌ | Reconciliator and gateway for a managed Matrix server | -| [Etherpad](configuring-playbook-etherpad.md) | [etherpad/etherpad](https://hub.docker.com/r/etherpad/etherpad/) | ❌ | An open source collaborative text editor | -| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/web](https://hub.docker.com/r/jitsi/web) | ❌ | the [Jitsi](https://jitsi.org/) web UI | -| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/jicofo](https://hub.docker.com/r/jitsi/jicofo) | ❌ | the [Jitsi](https://jitsi.org/) Focus component | -| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/prosody](https://hub.docker.com/r/jitsi/prosody) | ❌ | the [Jitsi](https://jitsi.org/) Prosody XMPP server component | -| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/jvb](https://hub.docker.com/r/jitsi/jvb) | ❌ | the [Jitsi](https://jitsi.org/) Video Bridge component | -| [Cactus Comments](configuring-playbook-cactus-comments.md) | [cactuscomments/cactus-appservice](https://hub.docker.com/r/cactuscomments/cactus-appservice/) | ❌ | A federated comment system built on Matrix | -| [Cactus Comments](configuring-playbook-cactus-comments.md) | [joseluisq/static-web-server](https://hub.docker.com/r/joseluisq/static-web-server) | ❌ | A federated comment system built on Matrix | -| [Pantalaimon](configuring-playbook-pantalaimon.md) | [matrixdotorg/pantalaimon](https://hub.docker.com/r/matrixdotorg/pantalaimon) | ❌ | An E2EE aware proxy daemon | +| [Etherpad](configuring-playbook-etherpad.md) | [etherpad/etherpad](https://hub.docker.com/r/etherpad/etherpad/) | ❌ | Open source collaborative text editor | +| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/web](https://hub.docker.com/r/jitsi/web) | ❌ | [Jitsi](https://jitsi.org/) web UI | +| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/jicofo](https://hub.docker.com/r/jitsi/jicofo) | ❌ | [Jitsi](https://jitsi.org/) Focus component | +| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/prosody](https://hub.docker.com/r/jitsi/prosody) | ❌ | [Jitsi](https://jitsi.org/) Prosody XMPP server component | +| [Jitsi](configuring-playbook-jitsi.md) | [jitsi/jvb](https://hub.docker.com/r/jitsi/jvb) | ❌ | [Jitsi](https://jitsi.org/) Video Bridge component | +| [Cactus Comments](configuring-playbook-cactus-comments.md) | [cactuscomments/cactus-appservice](https://hub.docker.com/r/cactuscomments/cactus-appservice/) | ❌ | Federated comment system built on Matrix | +| [Cactus Comments](configuring-playbook-cactus-comments.md) | [joseluisq/static-web-server](https://hub.docker.com/r/joseluisq/static-web-server) | ❌ | Federated comment system built on Matrix | +| [Pantalaimon](configuring-playbook-pantalaimon.md) | [matrixdotorg/pantalaimon](https://hub.docker.com/r/matrixdotorg/pantalaimon) | ❌ | E2EE aware proxy daemon | | [Sygnal](configuring-playbook-sygnal.md) | [matrixdotorg/sygnal](https://hub.docker.com/r/matrixdotorg/sygnal/) | ❌ | Reference Push Gateway for Matrix | | [ntfy](configuring-playbook-ntfy.md) | [binwiederhier/ntfy](https://hub.docker.com/r/binwiederhier/ntfy/) | ❌ | Self-hosted, UnifiedPush-compatible push notifications server | +| [Element Call](configuring-playbook-element-call.md) | [element-hq/element-call](https://ghcr.io/element-hq/element-call) | ❌ | A native Matrix video conferencing application | ## Container images of deprecated / unmaintained services @@ -157,9 +178,9 @@ The list of the deprecated or unmaintained services is available [here](configur | Service | Container image | Default? | Description | | ------- | --------------- | -------- | ----------- | | [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md) | [turt2live/matrix-appservice-webhooks](https://hub.docker.com/r/turt2live/matrix-appservice-webhooks) | ❌ | Bridge for slack compatible webhooks ([ConcourseCI](https://concourse-ci.org/), [Slack](https://slack.com/) etc. pp.) | -| [Dimension](configuring-playbook-dimension.md) | [turt2live/matrix-dimension](https://hub.docker.com/r/turt2live/matrix-dimension) | ❌ | An open source integration manager for Matrix clients | -| [Go-NEB](configuring-playbook-bot-go-neb.md) | [matrixdotorg/go-neb](https://hub.docker.com/r/matrixdotorg/go-neb) | ❌ | A multi functional bot written in Go | +| [Dimension](configuring-playbook-dimension.md) | [turt2live/matrix-dimension](https://hub.docker.com/r/turt2live/matrix-dimension) | ❌ | Open source integration manager for Matrix clients | +| [Email2Matrix](configuring-playbook-email2matrix.md) | [devture/email2matrix](https://hub.docker.com/r/devture/email2matrix/) | ❌ | Bridge for relaying emails to Matrix rooms | +| [Go-NEB](configuring-playbook-bot-go-neb.md) | [matrixdotorg/go-neb](https://hub.docker.com/r/matrixdotorg/go-neb) | ❌ | Multi functional bot written in Go | | [matrix-chatgpt-bot](configuring-playbook-bot-chatgpt.md) | [matrixgpt/matrix-chatgpt-bot](https://ghcr.io/matrixgpt/matrix-chatgpt-bot) | ❌ | Accessing ChatGPT via your favourite Matrix client | | [mautrix-facebook](configuring-playbook-bridge-mautrix-facebook.md) | [mautrix/facebook](https://mau.dev/mautrix/facebook/container_registry) | ❌ | Bridge to [Facebook](https://facebook.com/) | -| [mautrix-hangouts](configuring-playbook-bridge-mautrix-hangouts.md) | [mautrix/hangouts](https://mau.dev/mautrix/hangouts/container_registry) | ❌ | Bridge to [Google Hangouts](https://en.wikipedia.org/wiki/Google_Hangouts) | | [mautrix-instagram](configuring-playbook-bridge-mautrix-instagram.md) | [mautrix/instagram](https://mau.dev/mautrix/instagram/container_registry) | ❌ | Bridge to [Instagram](https://instagram.com/) | diff --git a/docs/faq.md b/docs/faq.md index 51e093fc7..9f1ddc6e3 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,3 +1,15 @@ + + # Frequently Asked Questions This documentation page tries to answer various Frequently Asked Questions about all things [Matrix](https://matrix.org/), with a focus on this [Ansible](https://www.ansible.com/) playbook ([What is Ansible? How does it work?](#what-is-ansible-how-does-it-work)). @@ -32,7 +44,7 @@ If you'd like to host your own server (you being `@alice:example.com`), you'd ne In short: -- Matrix is the protocol - a set of rules about how the chat network operates +- Matrix is the protocol — a set of rules about how the chat network operates - Element is a client program you can use to participate on the Matrix chat network via some server (yours or someone else's). There are also [many other client programs](https://matrix.org/clients/). - Synapse is a server program you can use to host your very own Matrix server. @@ -48,15 +60,15 @@ Besides setting up your own bridges (preferable), you can also use some [public ### How do I get started with Matrix? -One of [Matrix](https://matrix.org/)'s distinguishing strengths (compared to other chat networks) is its decentralized nature. There's not just one entity (company, organization) controlling the servers. Rather there's thousands of servers operated by different people - one server being insecure, slow or disrespective toward its users does not affect the rest of the network. To participate in that decentralization in its fullest, consider hosting your own server or using some public server other than the largest/default one (`matrix.org`). +One of [Matrix](https://matrix.org/)'s distinguishing strengths (compared to other chat networks) is its decentralized nature. There's not just one entity (company, organization) controlling the servers. Rather there's thousands of servers operated by different people — one server being insecure, slow or disrespective toward its users does not affect the rest of the network. To participate in that decentralization in its fullest, consider hosting your own server or using some public server other than the largest/default one (`matrix.org`). There are 3 ways to get into Matrix, depending on your technical ability and needs: -- **using the existing default server** - the easiest way is to use an existing server. The largest public Matrix server is `matrix.org` and it's configured as a default server in clients such as [Element Web](https://app.element.io) and many others. Just use Element Web on the browser via that link (or [download client apps for your Desktop or smartphone](https://element.io/app-for-productivity)), create an account and start chatting. +- **using the existing default server** — the easiest way is to use an existing server. The largest public Matrix server is `matrix.org` and it's configured as a default server in clients such as [Element Web](https://app.element.io) and many others. Just use Element Web on the browser via that link (or [download client apps for your Desktop or smartphone](https://element.io/app-for-productivity)), create an account and start chatting. -- **using some other server** - instead of using the largest public server (`matrix.org`), you can use another public one. Here's a [list of public Matrix servers](https://joinmatrix.org/servers/) to choose from. Go to [Element Web](https://app.element.io) or download [some other client](https://matrix.org/clients/) of your choosing and adjust the homeserver URL during login. +- **using some other server** — instead of using the largest public server (`matrix.org`), you can use another public one. Here's a [list of public Matrix servers](https://joinmatrix.org/servers/) to choose from. Go to [Element Web](https://app.element.io) or download [some other client](https://matrix.org/clients/) of your choosing and adjust the homeserver URL during login. -- **using your own server** - running your own server puts you in ultimate control of your data. It also lets you have your own user IDs (e.g. `@bob:example.com`). See [How do I set up my own Matrix server](#how-do-i-set-up-my-own-matrix-server). +- **using your own server** — running your own server puts you in ultimate control of your data. It also lets you have your own user IDs (e.g. `@bob:example.com`). See [How do I set up my own Matrix server](#how-do-i-set-up-my-own-matrix-server). ### How do I set up my own Matrix server? @@ -117,7 +129,7 @@ All services run in Docker containers (most being officially provided by each co Reasons are similar to the reasons for not installing manually. -Besides Synapse, you'd need other things - a Postgres database, likely the [Element](https://element.io) client, etc., etc. +Besides Synapse, you'd need other things — a Postgres database, likely the [Element](https://element.io) client, etc., etc. Using the playbook, you get all these components in a way that works well together out of the box. @@ -129,7 +141,7 @@ It is the acronym of us: **m**atrix-**d**ocker-**a**nsible-**d**eploy. This is similar to the [EMnify/matrix-synapse-auto-deploy](https://github.com/EMnify/matrix-synapse-auto-deploy) Ansible deployment, but: -- this one is a complete Ansible playbook (instead of just a role), so it's **easier to run** - especially for folks not familiar with Ansible +- this one is a complete Ansible playbook (instead of just a role), so it's **easier to run** — especially for folks not familiar with Ansible - this one installs and hooks together **a lot more Matrix-related services** for you (see above) @@ -285,7 +297,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ### I don't use the base domain for anything. How am I supposed to set up Server Delegation for Matrix services? -If you don't use your base domain for anything, then it's hard for you to "serve files over HTTPS" on it -- something we ask you to do for the [.well-known](configuring-well-known.md) setup (needed for [Server Delegation](howto-server-delegation.md)). +If you don't use your base domain for anything, then it's hard for you to "serve files over HTTPS" on it — something we ask you to do for the [.well-known](configuring-well-known.md) setup (needed for [Server Delegation](howto-server-delegation.md)). Luckily, the playbook can set up your Matrix server (at `matrix.example.com`) to also handle traffic for the base domain (`example.com`). @@ -296,9 +308,6 @@ See [Serving the base domain](configuring-playbook-base-domain-serving.md). You can disable some not-so-important services to save on memory. ```yaml -# An identity server is not a must. -matrix_ma1sd_enabled: false - # Disabling this will prevent email-notifications and other such things from working. exim_relay_enabled: false @@ -391,7 +400,7 @@ Yes, you can. You generally need to do a playbook installation. It's recommended to follow the full installation guide (starting at the [Prerequisites](prerequisites.md) page), not the [Quick start](quick-start.md) guide. The full installation guide will tell you when it's time to import your existing data into the newly-prepared server. -This Ansible playbook guides you into installing a server for `example.com` (user IDs are like this: `@alice:example.com`), while the server is at `matrix.example.com`. If your existing setup has a server name (`server_name` configuration setting in Synapse's `homeserver.yaml` file) other than the base `example.com`, you may need to tweak some additional variables. This FAQ entry may be of use if you're dealing with a more complicated setup - [How do I install on matrix.example.com without involving the base domain?](#how-do-i-install-on-matrixexamplecom-without-involving-the-base-domain) +This Ansible playbook guides you into installing a server for `example.com` (user IDs are like this: `@alice:example.com`), while the server is at `matrix.example.com`. If your existing setup has a server name (`server_name` configuration setting in Synapse's `homeserver.yaml` file) other than the base `example.com`, you may need to tweak some additional variables. This FAQ entry may be of use if you're dealing with a more complicated setup — [How do I install on matrix.example.com without involving the base domain?](#how-do-i-install-on-matrixexamplecom-without-involving-the-base-domain) After configuring the playbook and installing and **before starting** services (done with `ansible-playbook … --tags=start`) you'd import [your SQLite](importing-synapse-sqlite.md) (or [Postgres](importing-postgres.md)) database and also [import your media store](importing-synapse-media-store.md). @@ -403,46 +412,9 @@ It can perform a local connection instead. Just set `ansible_connection=local` a If you're running Ansible from within a container (one of the possibilities we list on our [dedicated Ansible documentation page](ansible.md)), then using `ansible_connection=local` is not possible. -## Troubleshooting - -### I get "Error response from daemon: configured logging driver does not support reading" when I do `docker logs matrix-synapse`. - -See [How can I see the logs?](#how-can-i-see-the-logs). - -### How can I see the logs? - -We utilize [systemd/journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html#Description) for logging. - -To see logs for Synapse, run `journalctl -fu matrix-synapse.service`. You may wish to see the [manual page for journalctl](https://www.commandlinux.com/man-page/man1/journalctl.1.html). - -Available service names can be seen by doing `ls /etc/systemd/system/matrix*.service` on the server. - -Some services also log to files in `/matrix/*/data/..`, but we're slowly moving away from that. - -We also disable Docker logging, so you can't use `docker logs matrix-*` either. We do this to prevent useless double (or even triple) logging and to avoid having to rotate log files. - -We just simply delegate logging to journald and it takes care of persistence and expiring old data. - -Also see: [How long do systemd/journald logs persist for?](#how-long-do-systemdjournald-logs-persist-for) - -### How long do systemd/journald logs persist for? +## Maintenance and Troubleshooting -On some distros, the journald logs are just in-memory and not persisted to disk. - -Consult (and feel free to adjust) your distro's journald logging configuration in `/etc/systemd/journald.conf`. - -To enable persistence and put some limits on how large the journal log files can become, adjust your configuration like this: - -```ini -[Journal] -RuntimeMaxUse=200M -SystemMaxUse=1G -RateLimitInterval=0 -RateLimitBurst=0 -Storage=persistent -``` - -## Maintenance +💡 Also see this page for generic information about maintaining the services and troubleshooting: [Maintenance and Troubleshooting](maintenance-and-troubleshooting.md) ### Do I need to do anything to keep my Matrix server updated? @@ -452,43 +424,26 @@ See our [documentation page about upgrading services](maintenance-upgrading-serv ### How do I move my existing installation to another (VM) server? -If you have an existing installation done using this Ansible playbook, you can easily migrate that to another server using [our dedicated server migration guide](maintenance-migrating.md). +If you have an existing installation done using this Ansible playbook, you can easily migrate that to another server following [our dedicated server migration guide](maintenance-migrating.md). If your previous installation is done in some other way (not using this Ansible playbook), see [I installed Synapse some other way. Can I migrate such a setup to the playbook?](#i-installed-synapse-some-other-way-can-i-migrate-such-a-setup-to-the-playbook). -### How do I back up the data on my server? - -We haven't documented this properly yet, but the general advice is to: - -- back up Postgres by making a database dump. See [Backing up PostgreSQL](maintenance-postgres.md#backing-up-postgresql) - -- back up all `/matrix` files, except for `/matrix/postgres/data` (you already have a dump) and `/matrix/postgres/data-auto-upgrade-backup` (this directory may exist and contain your old data if you've [performed a major Postgres upgrade](maintenance-postgres.md#upgrading-postgresql)). - -You can later restore these by: - -- Restoring the `/matrix` directory and files on the new server manually -- Following the instruction described on [Installing a server into which you'll import old data](installing.md#installing-a-server-into-which-youll-import-old-data) - -If your server's IP address has changed, you may need to [set up DNS](configuring-dns.md) again. - ### What is this `/matrix/postgres/data-auto-upgrade-backup` directory that is taking up so much space? When you [perform a major Postgres upgrade](maintenance-postgres.md#upgrading-postgresql), we save the the old data files in `/matrix/postgres/data-auto-upgrade-backup`, just so you could easily restore them should something have gone wrong. After verifying that everything still works after the Postgres upgrade, you can safely delete `/matrix/postgres/data-auto-upgrade-backup` -### How do I debug or force SSL certificate renewal? - -SSL certificates are managed automatically by the [Traefik](https://doc.traefik.io/traefik/) reverse-proxy server. +### I get "Error response from daemon: configured logging driver does not support reading" when I run `docker logs matrix-synapse`. Why? -If you're having trouble with SSL certificate renewal, check the Traefik logs (`journalctl -fu matrix-traefik`). +To prevent double-logging, Docker logging is disabled by explicitly passing `--log-driver=none` to all containers. Due to this, you cannot view logs using `docker logs matrix-*`. -If you're [using your own webserver](configuring-playbook-own-webserver.md) instead of the integrated one (Traefik), you should investigate in another way. +See [this section](maintenance-and-troubleshooting.md#how-to-see-the-logs) on the page for maintenance and troubleshooting for more details to see the logs. ## Miscellaneous ### I would like to see this favorite service of mine integrated and become available on my Matrix server. How can I request it? -You can freely create an issue for feature request on the repository at GitHub [here](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/new). Note this is a community project with no financial backing, and there is not assurance that your request would be eventually picked up by others and the requested feature would become available. The easiest way to get a feature into this project is to just develop it yourself. +You can freely create an issue for feature request on the repository at GitHub [here](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/new/choose). Note this is a community project with no financial backing, and there is not assurance that your request would be eventually picked up by others and the requested feature would become available. The easiest way to get a feature into this project is to just develop it yourself. Also, please note that this playbook intends to focus solely on Matrix and Matrix-related services. If your request is not specific to Matrix, you may as well to consider to submit it to the [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook), maintained by the members behind this matrix-docker-ansible-deploy project. [This document on the interoperability](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/interoperability.md) describes how to deploy services along with the Matrix services easily. diff --git a/docs/getting-the-playbook.md b/docs/getting-the-playbook.md index 4db76c5c6..7f725038b 100644 --- a/docs/getting-the-playbook.md +++ b/docs/getting-the-playbook.md @@ -1,15 +1,20 @@ + + # Getting the playbook -[Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > Getting the playbook > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) +[Prerequisites](prerequisites.md) > [Configuring DNS settings](configuring-dns.md) > Getting the playbook > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) This Ansible playbook is meant to be executed on your own computer (not the Matrix server). In special cases (if your computer cannot run Ansible, etc.) you may put the playbook on the server as well. You can retrieve the playbook's source code by: - - [Using git to get the playbook](#using-git-to-get-the-playbook) (recommended) - - [Downloading the playbook as a ZIP archive](#downloading-the-playbook-as-a-zip-archive) (not recommended) ## Using git to get the playbook diff --git a/docs/howto-server-delegation.md b/docs/howto-server-delegation.md index 429e06982..fb6a26f79 100644 --- a/docs/howto-server-delegation.md +++ b/docs/howto-server-delegation.md @@ -1,3 +1,15 @@ + + # Server Delegation By default, this playbook sets up services on your Matrix server (`matrix.example.com`). To have this server officially be responsible for Matrix services for the base domain (`example.com`), you need to set up server delegation / redirection. @@ -11,7 +23,7 @@ Both methods have their place and will continue to do so. You only need to use j For simplicity reasons, this playbook recommends you to set up server delegation via a `/.well-known/matrix/server` file. However, that method may have some downsides that are not to your liking. Hence this guide about alternative ways to set up Server Delegation. -**Note**: as an alternative, it is possible to install the server such that it uses only the `matrix.example.com` domain (instead of identifying as the shorter base domain - `example.com`). This should be helpful if you are not in control of anything on the base domain (`example.com`). In this case, you would not need to configure server delegation, but you would need to add other configuration. For more information, see [How do I install on matrix.example.com without involving the base domain?](faq.md#how-do-i-install-on-matrix-example-com-without-involving-the-base-domain) on our FAQ. +**Note**: as an alternative, it is possible to install the server such that it uses only the `matrix.example.com` domain (instead of identifying as the shorter base domain — `example.com`). This should be helpful if you are not in control of anything on the base domain (`example.com`). In this case, you would not need to configure server delegation, but you would need to add other configuration. For more information, see [How do I install on matrix.example.com without involving the base domain?](faq.md#how-do-i-install-on-matrix-example-com-without-involving-the-base-domain) on our FAQ. ## Server Delegation via a well-known file diff --git a/docs/howto-srv-server-delegation.md b/docs/howto-srv-server-delegation.md index 7cf484712..d1013f598 100644 --- a/docs/howto-srv-server-delegation.md +++ b/docs/howto-srv-server-delegation.md @@ -1,3 +1,11 @@ + + # Server Delegation via a DNS SRV record (advanced) **Reminder** : unless you are affected by the [Downsides of well-known-based Server Delegation](howto-server-delegation.md#downsides-of-well-known-based-server-delegation), we suggest you **stay on the simple/default path**: [Server Delegation](howto-server-delegation.md) by [configuring well-known files](configuring-well-known.md) at the base domain. @@ -18,7 +26,7 @@ The up-to-date list can be accessed on [traefik's documentation](https://doc.tra **Note**: the changes below instruct you how to do this for a basic Synapse installation. You will need to adapt the variable name and the content of the labels: -- if you're using another homeserver implementation (e.g. [Conduit](./configuring-playbook-conduit.md), [Conduwuit](./configuring-playbook-conduwuit.md) or [Dendrite](./configuring-playbook-dendrite.md)) +- if you're using another homeserver implementation (e.g. [Conduit](./configuring-playbook-conduit.md), [conduwuit](./configuring-playbook-conduwuit.md) or [Dendrite](./configuring-playbook-dendrite.md)) - if you're using [Synapse with workers enabled](./configuring-playbook-synapse.md#load-balancing-with-workers) (`matrix_synapse_workers_enabled: true`). In that case, it's actually the `matrix-synapse-reverse-proxy-companion` service which has Traefik labels attached Also, all instructions below are from an older version of the playbook and may not work anymore. @@ -64,7 +72,6 @@ traefik_configuration_extension_yaml: | acme: # To use a staging endpoint for testing purposes, uncomment the line below. # caServer: https://acme-staging-v02.api.letsencrypt.org/directory - email: {{ traefik_config_certificatesResolvers_acme_email | to_json }} dnsChallenge: provider: cloudflare resolvers: @@ -73,7 +80,7 @@ traefik_configuration_extension_yaml: | storage: {{ traefik_config_certificatesResolvers_acme_storage | to_json }} # 2. Configure the environment variables needed by Rraefik to automate the ACME DNS Challenge (example for Cloudflare) -traefik_environment_variables_additional_variables: | +traefik_environment_variables: | CF_API_EMAIL=redacted CF_ZONE_API_TOKEN=redacted CF_DNS_API_TOKEN=redacted @@ -124,7 +131,6 @@ matrix_coturn_container_additional_volumes: | ```yaml # Choosing the reverse proxy implementation matrix_playbook_reverse_proxy_type: playbook-managed-traefik -traefik_config_certificatesResolvers_acme_email: redacted@example.com # To serve the federation from any domain, as long as the path matches matrix_synapse_container_labels_public_federation_api_traefik_rule: PathPrefix(`/_matrix/federation`) @@ -141,7 +147,6 @@ traefik_configuration_extension_yaml: | acme: # To use a staging endpoint for testing purposes, uncomment the line below. # caServer: https://acme-staging-v02.api.letsencrypt.org/directory - email: {{ traefik_config_certificatesResolvers_acme_email | to_json }} dnsChallenge: provider: cloudflare resolvers: @@ -153,7 +158,7 @@ traefik_configuration_extension_yaml: | traefik_certResolver_primary: "dns" # Configure the environment variables needed by Traefik to automate the ACME DNS Challenge (example for Cloudflare) -traefik_environment_variables_additional_variables: | +traefik_environment_variables: | CF_API_EMAIL=redacted CF_ZONE_API_TOKEN=redacted CF_DNS_API_TOKEN=redacted diff --git a/docs/importing-postgres.md b/docs/importing-postgres.md index 44c49c7c6..a27c7d6d5 100644 --- a/docs/importing-postgres.md +++ b/docs/importing-postgres.md @@ -1,7 +1,19 @@ + + # Importing an existing Postgres database from another installation (optional) -Run this if you'd like to import your database from a previous installation. -(don't forget to import your Synapse `media_store` files as well - see [the importing-synape-media-store guide](importing-synapse-media-store.md)). +You can manually import your database from a previous default installation of Synapse. + +**Notes**: +- Don't forget to import your Synapse `media_store` files as well — see [the importing-synapse-media-store guide](importing-synapse-media-store.md) for more details. +- If you have an existing installation done using this Ansible playbook, you can easily migrate that to another server following [our dedicated server migration guide](maintenance-migrating.md). ## Prerequisites @@ -64,7 +76,7 @@ It can be worked around by changing the username to `synapse`, for example by us $ sed -i "s/OWNER TO synapse_user;/OWNER TO synapse;/g" homeserver.sql ``` -This uses sed to perform an 'in-place' (`-i`) replacement globally (`/g`), searching for `synapse_user` and replacing with `synapse` (`s/synapse_user/synapse`). If your database username was different, change `synapse_user` to that username instead. Expand search/replace statement as shown in example above, in case of old user name like `matrix` - replacing `matrix` only would… well - you can imagine. +This uses sed to perform an 'in-place' (`-i`) replacement globally (`/g`), searching for `synapse_user` and replacing with `synapse` (`s/synapse_user/synapse`). If your database username was different, change `synapse_user` to that username instead. Expand search/replace statement as shown in example above, in case of old user name like `matrix` — replacing `matrix` only would… well — you can imagine. Note that if the previous import failed with an error it may have made changes which are incompatible with re-running the import task right away; if you do so it may fail with an error such as: diff --git a/docs/importing-synapse-media-store.md b/docs/importing-synapse-media-store.md index dd1fe9671..08993f952 100644 --- a/docs/importing-synapse-media-store.md +++ b/docs/importing-synapse-media-store.md @@ -1,6 +1,13 @@ + + # Importing `media_store` data files from an existing Synapse installation (optional) -Run this if you'd like to import your `media_store` files from a previous installation of Synapse. +You can manually import your `media_store` files from a previous installation of Synapse. ## Prerequisites diff --git a/docs/importing-synapse-sqlite.md b/docs/importing-synapse-sqlite.md index 2453e8cfc..f3ce1d2f4 100644 --- a/docs/importing-synapse-sqlite.md +++ b/docs/importing-synapse-sqlite.md @@ -1,11 +1,21 @@ + + # Importing an existing SQLite database from another Synapse installation (optional) -Run this if you'd like to import your database from a previous default installation of Synapse (don't forget to import your `media_store` files as well - see [the importing-synapse-media-store guide](importing-synapse-media-store.md)). +You can manually import your database from a previous default installation of Synapse. While this playbook only supports running Synapse in combination with PostgreSQL, a Synapse instance installed manually usually defaults to using an SQLite database. If you have such a Synapse setup and wish to migrate it to one managed by the playbook (and over to PostgreSQL), this documentation page is for you. +**Note**: don't forget to import your Synapse `media_store` files as well — see [the importing-synapse-media-store guide](importing-synapse-media-store.md) for more details. + ## Prerequisites Before doing the actual import: diff --git a/docs/installing.md b/docs/installing.md index c4eda3b9f..f63f0fdcb 100644 --- a/docs/installing.md +++ b/docs/installing.md @@ -1,6 +1,20 @@ + + # Installing -[Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > Installing +[Prerequisites](prerequisites.md) > [Configuring DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > Installing If you've configured your DNS records and the playbook, you can start the installation procedure. @@ -27,7 +41,7 @@ If you **don't** use SSH keys for authentication, but rather a regular password, If you **do** use SSH keys for authentication, **and** use a non-root user to *become* root (sudo), you may need to add `-K` (`--ask-become-pass`) to all Ansible commands. -There 2 ways to start the installation process - depending on whether you're [Installing a brand new server (without importing data)](#installing-a-brand-new-server-without-importing-data) or [Installing a server into which you'll import old data](#installing-a-server-into-which-youll-import-old-data). +There 2 ways to start the installation process — depending on whether you're [Installing a brand new server (without importing data)](#installing-a-brand-new-server-without-importing-data) or [Installing a server into which you'll import old data](#installing-a-server-into-which-youll-import-old-data). **Note**: if you are migrating from an old server to a new one, take a look at [this guide](maintenance-migrating.md) instead. This is an easier and more straightforward way than installing a server and importing old data into it. @@ -53,7 +67,8 @@ To do the installation **without** starting services, run `ansible-playbook` wit ansible-playbook -i inventory/hosts setup.yml --tags=install-all ``` -⚠️ **Warning**: do not run the just "recipe" `just install-all` instead, because it automatically starts services at the end of execution. See: [Difference between playbook tags and shortcuts](just.md#difference-between-playbook-tags-and-shortcuts) +> [!WARNING] +> Do not run the just "recipe" `just install-all` instead, because it automatically starts services at the end of execution. See: [Difference between playbook tags and shortcuts](just.md#difference-between-playbook-tags-and-shortcuts) When this command completes, services won't be running yet. @@ -119,20 +134,22 @@ After configuring the playbook, run the command below: ansible-playbook -i inventory/hosts setup.yml --tags=install-matrix-static-files,start ``` +**If an error is not returned, the installation has completed and the services have been started successfully**🎉 + ## Things to do next -After finilizing the installation, you can: +After completing the installation, you can: -- [check if services work](maintenance-checking-services.md) +- [check if services work](maintenance-and-troubleshooting.md#how-to-check-if-services-work) - or [set up additional services](configuring-playbook.md#other-configuration-options) (bridges to other chat networks, bots, etc.) - or learn how to [upgrade services when new versions are released](maintenance-upgrading-services.md) - or learn how to [maintain your server](faq.md#maintenance) - or join some Matrix rooms: * via the *Explore rooms* feature in Element Web or some other clients, or by discovering them using this [matrix-static list](https://view.matrix.org). **Note**: joining large rooms may overload small servers. - * or come say Hi in our support room - [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com). You might learn something or get to help someone else new to Matrix hosting. + * or come say Hi in our support room — [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com). You might learn something or get to help someone else new to Matrix hosting. - or help make this playbook better by contributing (code, documentation, or [coffee/beer](https://liberapay.com/s.pantaleev/donate)) -### Maintaining your setup in the future +### ⚠️ Keep the playbook and services up-to-date While this playbook helps you to set up Matrix services and maintain them, it will **not** automatically run the maintenance task for you. You will need to update the playbook and re-run it **manually**. @@ -140,7 +157,7 @@ The upstream projects, which this playbook makes use of, occasionally if not oft Since it is unsafe to keep outdated services running on the server connected to the internet, please consider to update the playbook and re-run it periodically, in order to keep the services up-to-date. -For more information about upgrading or maintaining services with the playbook, take at look at this page: [Upgrading the Matrix services](maintenance-upgrading-services.md) +For more information about upgrading or maintaining services with the playbook, take a look at this page: [Upgrading the Matrix services](maintenance-upgrading-services.md) Feel free to **re-run the setup command any time** you think something is wrong with the server configuration. Ansible will take your configuration and update your server to match. diff --git a/docs/just.md b/docs/just.md index ecc09e495..c12743b74 100644 --- a/docs/just.md +++ b/docs/just.md @@ -1,12 +1,19 @@ + + # Running `just` commands We have previously used [make](https://www.gnu.org/software/make/) for easily running some playbook commands (e.g. `make roles` which triggers [`ansible-galaxy`](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html)). Our [`Makefile`](../Makefile) is still around, and you can still run these commands. -In addition, we have added support for running commands via [`just`](https://github.com/casey/just) - a more modern command-runner alternative to `make`. It can be used to invoke `ansible-playbook` commands with less typing. +In addition, we have added support for running commands via [`just`](https://github.com/casey/just) — a more modern command-runner alternative to `make`. It can be used to invoke `ansible-playbook` commands with less typing. The `just` utility executes shortcut commands (called as "recipes"), which invoke `ansible-playbook`, `ansible-galaxy` or [`agru`](https://github.com/etkecc/agru) (depending on what is available in your system). The targets of the recipes are defined in [`justfile`](../justfile). Most of the just recipes have no corresponding `Makefile` targets. -For some recipes such as `just update`, our `justfile` recommends installing [`agru`](https://github.com/etkecc/agru) (a faster alternative to `ansible-galaxy`) to speed up the process. +For some recipes such as `just update`, our `justfile` recommends installing `agru` (a faster alternative to `ansible-galaxy`) to speed up the process. Here are some examples of shortcuts: @@ -35,4 +42,4 @@ For example, these two commands are different: The just recipe runs `ensure-matrix-users-created` and `start` tags after `install-all`, while the latter runs only `install-all` tag. The correct shortcut of the latter is `just run-tags install-all`. -Such kind of difference sometimes matters. For example, when you install a Matrix server into which you will import old data (see [here](installing.md#installing-a-server-into-which-youll-import-old-data)), you are not supposed to run `just install-all` or `just setup-all`, because these commands start services immediately after installing components which may prevent your from importing old data. +Such kind of difference sometimes matters. For example, when you install a Matrix server into which you will import old data (see [here](installing.md#installing-a-server-into-which-youll-import-old-data)), you are not supposed to run `just install-all` or `just setup-all`, because these commands start services immediately after installing components, which may prevent you from importing the data. diff --git a/docs/maintenance-and-troubleshooting.md b/docs/maintenance-and-troubleshooting.md index 0ab46f900..bd3e4b84c 100644 --- a/docs/maintenance-and-troubleshooting.md +++ b/docs/maintenance-and-troubleshooting.md @@ -1,6 +1,54 @@ + + # Maintenance and Troubleshooting -## How to see the current status of your services +## Maintenance + +### How to back up the data on your server + +We haven't documented this properly yet, but the general advice is to: + +- back up Postgres by making a database dump. See [Backing up PostgreSQL](maintenance-postgres.md#backing-up-postgresql) + +- back up all `/matrix` files, except for `/matrix/postgres/data` (you already have a dump) and `/matrix/postgres/data-auto-upgrade-backup` (this directory may exist and contain your old data if you've [performed a major Postgres upgrade](maintenance-postgres.md#upgrading-postgresql)). + +You can later restore these by: + +- Restoring the `/matrix` directory and files on the new server manually +- Following the instruction described on [Installing a server into which you'll import old data](installing.md#installing-a-server-into-which-youll-import-old-data) + +If your server's IP address has changed, you may need to [set up DNS](configuring-dns.md) again. + +### Remove unused Docker data + +You can free some disk space from Docker by removing its unused data. See [docker system prune](https://docs.docker.com/engine/reference/commandline/system_prune/) for more information. + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=run-docker-prune +``` + +The shortcut command with `just` program is also available: `just run-tags run-docker-prune` + +### Postgres + +See the dedicated [PostgreSQL maintenance](maintenance-postgres.md) documentation page. + +### Synapse + +See the dedicated [Synapse maintenance](maintenance-synapse.md) documentation page. + +## Troubleshooting + +### How to see the current status of your services You can check the status of your services by using `systemctl status`. Example: @@ -12,42 +60,57 @@ sudo systemctl status matrix-synapse Active: active (running) since Sun 2024-01-14 09:13:06 UTC; 1h 31min ago ``` -Docker containers that the playbook configures are supervised by [systemd](https://wiki.archlinux.org/title/Systemd) and their logs are configured to go to [systemd-journald](https://wiki.archlinux.org/title/Systemd/Journal). +### How to see the logs -To prevent double-logging, Docker logging is disabled by explicitly passing `--log-driver=none` to all containers. Due to this, you **cannot** view logs using `docker logs`. +Docker containers that the playbook configures are supervised by [systemd](https://wiki.archlinux.org/title/Systemd) and their logs are configured to go to [systemd-journald](https://wiki.archlinux.org/title/Systemd/Journal). -To view systemd-journald logs using [journalctl](https://man.archlinux.org/man/journalctl.1), run a command like this: +For example, you can find the logs of `matrix-synapse` in `systemd-journald` by logging in to the server with SSH and running the command as below: ```sh sudo journalctl -fu matrix-synapse ``` -## Increase logging verbosity +Available service names can be seen by doing `ls /etc/systemd/system/matrix*.service` on the server. Some services also log to files in `/matrix/*/data/..`, but we're slowly moving away from that. -Because the [Synapse](https://github.com/element-hq/synapse) Matrix server is originally very chatty when it comes to logging, we intentionally reduce its [logging level](https://docs.python.org/3/library/logging.html#logging-levels) from `INFO` to `WARNING`. +We just simply delegate logging to journald and it takes care of persistence and expiring old data. -If you'd like to debug an issue or [report a Synapse bug](https://github.com/element-hq/synapse/issues/new/choose) to the developers, it'd be better if you temporarily increasing the logging level to `INFO`. +#### Enable systemd/journald logs persistence -Example configuration (`inventory/host_vars/matrix.example.com/vars.yml`): +On some distros, the journald logs are just in-memory and not persisted to disk. -```yaml -matrix_synapse_log_level: "INFO" -matrix_synapse_storage_sql_log_level: "INFO" -matrix_synapse_root_log_level: "INFO" +Consult (and feel free to adjust) your distro's journald logging configuration in `/etc/systemd/journald.conf`. + +To enable persistence and put some limits on how large the journal log files can become, adjust your configuration like this: + +```ini +[Journal] +RuntimeMaxUse=200M +SystemMaxUse=1G +RateLimitInterval=0 +RateLimitBurst=0 +Storage=persistent ``` -Re-run the playbook after making these configuration changes. +### How to check if services work -## Remove unused Docker data +The playbook can perform a check to ensure that you've configured things correctly and that services are running. -You can free some disk space from Docker, see [docker system prune](https://docs.docker.com/engine/reference/commandline/system_prune/) for more information. +To perform the check, run: ```sh -ansible-playbook -i inventory/hosts setup.yml --tags=run-docker-prune +ansible-playbook -i inventory/hosts setup.yml --tags=self-check ``` -The shortcut command with `just` program is also available: `just run-tags run-docker-prune` +The shortcut command with `just` program is also available: `just run-tags self-check` + +If it's all green, everything is probably running correctly. + +Besides this self-check, you can also check whether your server federates with the Matrix network by using the [Federation Tester](https://federationtester.matrix.org/) against your base domain (`example.com`), not the `matrix.example.com` subdomain. + +### How to debug or force SSL certificate renewal + +SSL certificates are managed automatically by the [Traefik](https://doc.traefik.io/traefik/) reverse-proxy server. -## Postgres +If you're having trouble with SSL certificate renewal, check the Traefik logs (`journalctl -fu matrix-traefik`). -See the dedicated [PostgreSQL Maintenance](maintenance-postgres.md) documentation page. +If you're [using your own webserver](configuring-playbook-own-webserver.md) instead of the integrated one (Traefik), you should investigate in another way. diff --git a/docs/maintenance-checking-services.md b/docs/maintenance-checking-services.md deleted file mode 100644 index b2d90554c..000000000 --- a/docs/maintenance-checking-services.md +++ /dev/null @@ -1,15 +0,0 @@ -# Checking if services work - -The playbook can perform a check to ensure that you've configured things correctly and that services are running. - -To perform the check, run: - -```sh -ansible-playbook -i inventory/hosts setup.yml --tags=self-check -``` - -The shortcut command with `just` program is also available: `just run-tags self-check` - -If it's all green, everything is probably running correctly. - -Besides this self-check, you can also check whether your server federates with the Matrix network by using the [Federation Tester](https://federationtester.matrix.org/) against your base domain (`example.com`), not the `matrix.example.com` subdomain. diff --git a/docs/maintenance-migrating.md b/docs/maintenance-migrating.md index e2c0a7efa..2b07201c4 100644 --- a/docs/maintenance-migrating.md +++ b/docs/maintenance-migrating.md @@ -1,3 +1,12 @@ + + # Migrating to new server This documentation explains how to migrate your Matrix services (server, client, bridges, etc.) and data **from an old server to a new server**. @@ -66,6 +75,6 @@ The shortcut command with `just` program is also available: `just run-tags insta ### Check if services work -After starting the services, you probably might want to ensure that you've migrated things correctly and that services are running. For instructions, see: [check if services work](maintenance-checking-services.md) +After starting the services, you probably might want to ensure that you've migrated things correctly and that services are running. For instructions, see: [check if services work](maintenance-and-troubleshooting.md#how-to-check-if-services-work) Having make sure that both services and federation work as expected, you can safely shutdown the old server. diff --git a/docs/maintenance-postgres.md b/docs/maintenance-postgres.md index 82c4757c6..ae91232b7 100644 --- a/docs/maintenance-postgres.md +++ b/docs/maintenance-postgres.md @@ -1,22 +1,29 @@ + + # PostgreSQL maintenance This document shows you how to perform various maintenance tasks related to the Postgres database server used by Matrix. Table of contents: - - [Getting a database terminal](#getting-a-database-terminal), for when you wish to execute SQL queries - - [Vacuuming PostgreSQL](#vacuuming-postgresql), for when you wish to run a Postgres [VACUUM](https://www.postgresql.org/docs/current/sql-vacuum.html) (optimizing disk space) - - [Backing up PostgreSQL](#backing-up-postgresql), for when you wish to make a backup - - [Upgrading PostgreSQL](#upgrading-postgresql), for upgrading to new major versions of PostgreSQL. Such **manual upgrades are sometimes required**. - - [Tuning PostgreSQL](#tuning-postgresql) to make it run faster ## Getting a database terminal -You can use the `/matrix/postgres/bin/cli` tool to get interactive terminal access ([psql](https://www.postgresql.org/docs/11/app-psql.html)) to the PostgreSQL server. +You can use the `/matrix/postgres/bin/cli` tool to get interactive terminal access ([psql](https://www.postgresql.org/docs/current/app-psql.html)) to the PostgreSQL server. If you are using an [external Postgres server](configuring-playbook-external-postgres.md), the above tool will not be available. @@ -28,7 +35,8 @@ To change to another database (for example `synapse`), run `\connect synapse` (o You can then proceed to write queries. Example: `SELECT COUNT(*) FROM users;` -**Be careful**. Modifying the database directly (especially as services are running) is dangerous and may lead to irreversible database corruption. When in doubt, consider [making a backup](#backing-up-postgresql). +> [!WARNING] +> **Modifying the database directly (especially as services are running) is dangerous and may lead to irreversible database corruption.** When in doubt, consider [making a backup](#backing-up-postgresql). ## Vacuuming PostgreSQL @@ -51,9 +59,9 @@ Example playbook invocations: ## Backing up PostgreSQL -To automatically make Postgres database backups on a fixed schedule, see [Setting up postgres backup](configuring-playbook-postgres-backup.md). +To automatically make Postgres database backups on a fixed schedule, consider enabling the [Postgres Backup](configuring-playbook-postgres-backup.md) service. -To make a one off back up of the current PostgreSQL database, make sure it's running and then execute a command like this on the server: +To make a one-off back up of the current PostgreSQL database, make sure it's running and then execute a command like this on the server: ```sh /usr/bin/docker exec \ @@ -90,7 +98,7 @@ As part of the upgrade, the database is dumped to `/tmp`, an upgraded and empty To save disk space in `/tmp`, the dump file is gzipped on the fly at the expense of CPU usage. If you have plenty of space in `/tmp` and would rather avoid gzipping, you can explicitly pass a dump filename which doesn't end in `.gz`. Example: `--extra-vars="postgres_dump_name=matrix-postgres-dump.sql"` -**All databases, roles, etc. on the Postgres server are migrated**. +**All databases, roles, etc. on the Postgres server are migrated**. However, other components that depend on specific Postgres versions (like the [Postgres Backup](configuring-playbook-postgres-backup.md) service) may need to be updated after the upgrade by using `just install-all` ## Tuning PostgreSQL diff --git a/docs/maintenance-synapse.md b/docs/maintenance-synapse.md index 0c2eded9b..15b6eb62b 100644 --- a/docs/maintenance-synapse.md +++ b/docs/maintenance-synapse.md @@ -1,24 +1,34 @@ + + # Synapse maintenance This document shows you how to perform various maintenance tasks related to the Synapse chat server. Table of contents: - - [Purging old data with the Purge History API](#purging-old-data-with-the-purge-history-api), for when you wish to delete in-use (but old) data from the Synapse database - - [Compressing state with rust-synapse-compress-state](#compressing-state-with-rust-synapse-compress-state) - - [Browse and manipulate the database](#browse-and-manipulate-the-database), for when you really need to take matters into your own hands - - [Make Synapse faster](#make-synapse-faster) +💡 See this page for details about configuring Synapse: [Configuring Synapse](configuring-playbook-synapse.md) + ## Purging old data with the Purge History API You can use the **[Purge History API](https://github.com/element-hq/synapse/blob/master/docs/admin_api/purge_history_api.md)** to delete old messages on a per-room basis. **This is destructive** (especially for non-federated rooms), because it means **people will no longer have access to history past a certain point**. To make use of this Synapse Admin API, **you'll need an admin access token** first. 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. +> [!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. Synapse's Admin API is not exposed to the internet by default, following [official Synapse reverse-proxying recommendations](https://github.com/element-hq/synapse/blob/master/docs/reverse_proxy.md#synapse-administration-endpoints). To expose it you will need to add `matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true` to your `vars.yml` file. @@ -87,9 +97,9 @@ Tuning the cache factor is useful only to a limited degree (as its crude to do i Cache autotuning is **enabled by default** and controlled via the following variables: -- `matrix_synapse_cache_autotuning_max_cache_memory_usage` - defaults to 1/8 of total RAM with a cap of 2GB; values are specified in bytes -- `matrix_synapse_cache_autotuning_target_cache_memory_usage` - defaults to 1/16 of total RAM with a cap of 1GB; values are specified in bytes -- `matrix_synapse_cache_autotuning_min_cache_ttl` - defaults to `30s` +- `matrix_synapse_cache_autotuning_max_cache_memory_usage` — defaults to 1/8 of total RAM with a cap of 2GB; values are specified in bytes +- `matrix_synapse_cache_autotuning_target_cache_memory_usage` — defaults to 1/16 of total RAM with a cap of 1GB; values are specified in bytes +- `matrix_synapse_cache_autotuning_min_cache_ttl` — defaults to `30s` You can **learn more about cache-autotuning and the global cache factor settings** in the [Synapse's documentation on caches and associated values](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#caches-and-associated-values). diff --git a/docs/maintenance-upgrading-services.md b/docs/maintenance-upgrading-services.md index ca1ea78f1..7f0f1bc17 100644 --- a/docs/maintenance-upgrading-services.md +++ b/docs/maintenance-upgrading-services.md @@ -1,3 +1,14 @@ + + # Upgrading the Matrix services This playbook not only installs the various Matrix services for you, but can also upgrade them as new versions are made available. diff --git a/docs/obtaining-access-tokens.md b/docs/obtaining-access-tokens.md index e1f69b226..c72f5840c 100644 --- a/docs/obtaining-access-tokens.md +++ b/docs/obtaining-access-tokens.md @@ -1,14 +1,24 @@ + + # Obtaining an Access Token When setting up some optional features like bots and bridges you will need to provide an access token for some user. This document provides documentation on how to obtain such an access token. -⚠️ **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. +> [!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. ## Prerequisites The user for whom you want to obtain an access token needs to already exist. You can use this playbook to [register a new user](registering-users.md), if you have not already. -Below, we describe 2 ways to generate an access token for a user - using [Element Web](#obtain-an-access-token-via-element-web) or [curl](#obtain-an-access-token-via-curl). For both ways you need the user's password. +Below, we describe 2 ways to generate an access token for a user — using [Element Web](#obtain-an-access-token-via-element-web) or [curl](#obtain-an-access-token-via-curl). For both ways you need the user's password. ## Obtain an access token via Element Web diff --git a/docs/playbook-tags.md b/docs/playbook-tags.md index 8e2a064ce..e7b9682c0 100644 --- a/docs/playbook-tags.md +++ b/docs/playbook-tags.md @@ -1,24 +1,33 @@ + + # Playbook tags The Ansible playbook's tasks are tagged, so that certain parts of the Ansible playbook can be run without running all other tasks. -The general command syntax is: `ansible-playbook -i inventory/hosts setup.yml --tags=COMMA_SEPARATED_TAGS_GO_HERE` +The general command syntax is: +- (**recommended**) when using `just`: `just run-tags COMMA_SEPARATED_TAGS_GO_HERE` +- when not using `just`: `ansible-playbook -i inventory/hosts setup.yml --tags=COMMA_SEPARATED_TAGS_GO_HERE` Here are some playbook tags that you should be familiar with: -- `setup-all` - runs all setup tasks (installation and uninstallation) for all components, but does not start/restart services +- `setup-all` — runs all setup tasks (installation and uninstallation) for all components, but does not start/restart services -- `install-all` - like `setup-all`, but skips uninstallation tasks. Useful for maintaining your setup quickly when its components remain unchanged. If you adjust your `vars.yml` to remove components, you'd need to run `setup-all` though, or these components will still remain installed +- `install-all` — like `setup-all`, but skips uninstallation tasks. Useful for maintaining your setup quickly when its components remain unchanged. If you adjust your `vars.yml` to remove components, you'd need to run `setup-all` though, or these components will still remain installed -- `setup-SERVICE` (e.g. `setup-postmoogle`) - runs the setup tasks only for a given role, but does not start/restart services. You can discover these additional tags in each role (`roles/**/tasks/main.yml`). Running per-component setup tasks is **not recommended**, as components sometimes depend on each other and running just the setup tasks for a given component may not be enough. For example, setting up the [mautrix-telegram bridge](configuring-playbook-bridge-mautrix-telegram.md), in addition to the `setup-mautrix-telegram` tag, requires database changes (the `setup-postgres` tag) as well as reverse-proxy changes (the `setup-nginx-proxy` tag). +- `setup-SERVICE` (e.g. `setup-postmoogle`) — runs the setup tasks only for a given role, but does not start/restart services. You can discover these additional tags in each role (`roles/**/tasks/main.yml`). Running per-component setup tasks is **not recommended**, as components sometimes depend on each other and running just the setup tasks for a given component may not be enough. For example, setting up the [mautrix-telegram bridge](configuring-playbook-bridge-mautrix-telegram.md), in addition to the `setup-mautrix-telegram` tag, requires database changes (the `setup-postgres` tag) as well as reverse-proxy changes (the `setup-nginx-proxy` tag). -- `install-SERVICE` (e.g. `install-postmoogle`) - like `setup-SERVICE`, but skips uninstallation tasks. See `install-all` above for additional information. +- `install-SERVICE` (e.g. `install-postmoogle`) — like `setup-SERVICE`, but skips uninstallation tasks. See `install-all` above for additional information. -- `start` - starts all systemd services and makes them start automatically in the future +- `start` — starts all systemd services and makes them start automatically in the future -- `stop` - stops all systemd services +- `stop` — stops all systemd services -- `ensure-matrix-users-created` - a special tag which ensures that all special users needed by the playbook (for bots, etc.) are created +- `ensure-matrix-users-created` or its alias `ensure-users-created` — a special tag which ensures that all special users needed by the playbook (for bots, etc.) are created. See the variable `matrix_user_creator_users_auto` on [`group_vars/matrix_servers`](../group_vars/matrix_servers) for actual values of users which running this tag can create by default. **Notes**: - `setup-*` tags and `install-*` tags **do not start services** automatically, because you may wish to do things before starting services, such as importing a database dump, restoring data from another server, etc. diff --git a/docs/prerequisites.md b/docs/prerequisites.md index 3bd3da975..6ee8239e5 100644 --- a/docs/prerequisites.md +++ b/docs/prerequisites.md @@ -1,6 +1,17 @@ + + # Prerequisites -Prerequisites > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) +Prerequisites > [Configuring DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md) To install Matrix services using this Ansible playbook, you need to prepare several requirements both on your local computer (where you will run the playbook to configure the server) and the server (where the playbook will install the Matrix services for you). **These requirements need to be set up manually** before proceeding to the next step. @@ -16,7 +27,7 @@ We will be using `example.com` as the domain in the following instruction. Pleas - [`git`](https://git-scm.com/) as the recommended way to download the playbook. `git` may also be required on the server if you will be [self-building](self-building.md) components. -- [`just`](https://github.com/casey/just) for running `just roles`, `just update`, etc. (see [`justfile`](../justfile)), although you can also run these commands manually. Take at look at this documentation for more information: [Running `just` commands](just.md). +- [`just`](https://github.com/casey/just) for running `just roles`, `just update`, etc. (see [`justfile`](../justfile)), although you can also run these commands manually. Take a look at this documentation for more information: [Running `just` commands](just.md). - Strong password (random strings) generator. The playbook often requires you to create a strong password and use it for settings on `vars.yml`, components, etc. As any tools should be fine, this playbook has adopted [`pwgen`](https://linux.die.net/man/1/pwgen) (running `pwgen -s 64 1`). [Password Tech](https://pwgen-win.sourceforge.io/), formerly known as "PWGen for Windows", is available as free and open source password generator for Windows. Generally, using a random generator available on the internet is not recommended. @@ -48,10 +59,10 @@ We will be using `example.com` as the domain in the following instruction. Pleas - `80/tcp`: HTTP webserver - `443/tcp` and `443/udp`: HTTPS webserver - - `3478/tcp`: TURN over TCP (used by coturn) - - `3478/udp`: TURN over UDP (used by coturn) - - `5349/tcp`: TURN over TCP (used by coturn) - - `5349/udp`: TURN over UDP (used by coturn) + - `3478/tcp`: STUN/TURN over TCP (used by [coturn](./configuring-playbook-turn.md)) + - `3478/udp`: STUN/TURN over TCP (used by [coturn](./configuring-playbook-turn.md)) + - `5349/tcp`: TURN over TCP (used by [coturn](./configuring-playbook-turn.md)) + - `5349/udp`: TURN over UDP (used by [coturn](./configuring-playbook-turn.md)) - `8448/tcp` and `8448/udp`: Matrix Federation API HTTPS webserver. Some components like [Matrix User Verification Service](configuring-playbook-user-verification-service.md#open-matrix-federation-port) require this port to be opened **even with federation disabled**. - the range `49152-49172/udp`: TURN over UDP - potentially some other ports, depending on the additional (non-default) services that you enable in the **configuring the playbook** step (later on). Consult each service's documentation page in `docs/` for that. diff --git a/docs/quick-start.md b/docs/quick-start.md index 9f75b61f7..ae9328f0a 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -1,3 +1,9 @@ + + # Quick start + # Registering users This documentation page tells you how to create user accounts on your Matrix server. Table of contents: - - [Registering users](#registering-users) - [Registering users manually](#registering-users-manually) - [Managing users via a Web UI](#managing-users-via-a-web-ui) @@ -42,7 +51,8 @@ ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=USERNAME_HE Feel free to register as many users (for friends, family, etc.) as you want. Still, perhaps you should grant full administrative access to your user account only (with `admin=yes`), and others should be created with `admin=no`. -⚠️ **Warning**: If you're registering users against Matrix Authentication Service, do note that it [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user. Upon a user's first login, they will be asked to confirm their email address. This requires that email sending is [configured](./configuring-playbook-email.md). You can also consult the [Working around email deliverability issues](./configuring-playbook-matrix-authentication-service.md#working-around-email-deliverability-issues) section for more information. +> [!WARNING] +> If you're registering users against Matrix Authentication Service, do note that it [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user. Upon a user's first login, they will be asked to confirm their email address. This requires that email sending is [configured](./configuring-playbook-email.md). You can also consult the [Working around email deliverability issues](./configuring-playbook-matrix-authentication-service.md#working-around-email-deliverability-issues) section for more information. ### Registering users manually for Synapse @@ -80,13 +90,15 @@ This `register-user` script actually invokes the `mas-cli manage register-user` /matrix/matrix-authentication-service/bin/mas-cli manage register-user --help ``` -⚠️ **Warning**: Matrix Authentication Service [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user. Upon a user's first login, they will be asked to confirm their email address. This requires that email sending is [configured](./configuring-playbook-email.md). You can also consult the [Working around email deliverability issues](./configuring-playbook-matrix-authentication-service.md#working-around-email-deliverability-issues) section for more information. +> [!WARNING] +> Matrix Authentication Service [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user. Upon a user's first login, they will be asked to confirm their email address. This requires that email sending is [configured](./configuring-playbook-email.md). You can also consult the [Working around email deliverability issues](./configuring-playbook-matrix-authentication-service.md#working-around-email-deliverability-issues) section for more information. ## Managing users via a Web UI To manage users more easily (via a web user-interace), you can install [Synapse Admin](configuring-playbook-synapse-admin.md). -⚠️ **Warning**: If you're using [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md), note that user management via synapse-admin is not fully working yet. See the [Expectations](configuring-playbook-matrix-authentication-service.md#expectations) section for more information. +> [!WARNING] +> If you're using [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md), note that user management via synapse-admin is not fully working yet. See the [Expectations](configuring-playbook-matrix-authentication-service.md#expectations) section for more information. ## Letting certain users register on your private server @@ -140,8 +152,8 @@ where: If you're using the integrated Postgres server and not an [external Postgres server](configuring-playbook-external-postgres.md), you can launch a Postgres into the `synapse` database by: -- running `/matrix/postgres/bin/cli` - to launch [`psql`](https://www.postgresql.org/docs/current/app-psql.html) -- running `\c synapse` - to change to the `synapse` database +- running `/matrix/postgres/bin/cli` — to launch [`psql`](https://www.postgresql.org/docs/current/app-psql.html) +- running `\c synapse` — to change to the `synapse` database You can then proceed to run the query above. diff --git a/docs/self-building.md b/docs/self-building.md index 4304f4ded..d1aa855b7 100644 --- a/docs/self-building.md +++ b/docs/self-building.md @@ -1,3 +1,17 @@ + + # Self-building **Caution: self-building does not have to be used on its own. See the [Alternative Architectures](alternative-architectures.md) page.** @@ -28,7 +42,6 @@ Possibly outdated list of roles where self-building the Docker image is currentl - `matrix-bridge-appservice-webhooks` - `matrix-bridge-beeper-linkedin` - `matrix-bridge-mautrix-facebook` -- `matrix-bridge-mautrix-hangouts` - `matrix-bridge-mautrix-googlechat` - `matrix-bridge-mautrix-telegram` - `matrix-bridge-mautrix-signal` @@ -39,7 +52,6 @@ Possibly outdated list of roles where self-building the Docker image is currentl - `matrix-bot-honoroit` - `matrix-bot-matrix-reminder-bot` - `matrix-bot-maubot` -- `matrix-email2matrix` - `matrix-pantalaimon` Adding self-building support to other roles is welcome. Feel free to contribute! diff --git a/docs/uninstalling.md b/docs/uninstalling.md index 14c8c211f..1a0f3f6ef 100644 --- a/docs/uninstalling.md +++ b/docs/uninstalling.md @@ -1,10 +1,16 @@ -# Uninstalling + -⚠️ **Warnings**: -- If your server federates with others, make sure to **leave any federated rooms before nuking your Matrix server's data**. Otherwise, the next time you set up a Matrix server for this domain (regardless of the installation method you use), you'll encounter trouble federating. -- If you have some trouble with your installation, you can just [re-run the playbook](installing.md) and it will try to set things up again. **Uninstalling and then installing anew rarely solves anything**. +# Uninstalling ------------------ +> [!WARNING] +> - If your server federates with others, make sure to **leave any federated rooms before nuking your Matrix server's data**. Otherwise, the next time you set up a Matrix server for this domain (regardless of the installation method you use), you'll encounter trouble federating. +> - If you have some trouble with your installation, you can just [re-run the playbook](installing.md) and it will try to set things up again. **Uninstalling and then installing anew rarely solves anything**. ## Uninstalling using a script diff --git a/docs/updating-users-passwords.md b/docs/updating-users-passwords.md index aecd038ef..7a9eade91 100644 --- a/docs/updating-users-passwords.md +++ b/docs/updating-users-passwords.md @@ -1,3 +1,15 @@ + + # Updating users passwords ## Option 1 (if you are using the integrated Postgres database): @@ -22,7 +34,7 @@ You can manually generate the password hash by using the command-line after **SS docker exec -it matrix-synapse /usr/local/bin/hash_password -c /data/homeserver.yaml ``` -and then connecting to the postgres server and executing: +and then connecting to the Postgres server and executing: ```sql UPDATE users SET password_hash = '' WHERE name = '@alice:example.com'; diff --git a/examples/host.yml b/examples/host.yml index 85d2f3170..cd43db4da 100644 --- a/examples/host.yml +++ b/examples/host.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # This is a host file for usage with the `../bin/ansible-all-hosts.sh` script, diff --git a/examples/hosts b/examples/hosts index e4500455d..5a29fbfc5 100644 --- a/examples/hosts +++ b/examples/hosts @@ -2,8 +2,8 @@ # If you'd rather use a local IP here, make sure to set up `matrix_coturn_turn_external_ip_address`. # # To connect using a non-root user (and elevate to root with sudo later), -# replace `ansible_ssh_user=root` with something like this: `ansible_ssh_user=username become=true become_user=root`. -# If sudo requires a password, either add `become_password=PASSWORD_HERE` to the host line +# replace `ansible_ssh_user=root` with something like this: `ansible_ssh_user=username ansible_become=true ansible_become_user=root`. +# If sudo requires a password, either add `ansible_become_password=PASSWORD_HERE` to the host line # or tell Ansible to ask you for the password interactively by adding a `--ask-become-pass` (`-K`) flag to all `ansible-playbook` (or `just`) commands. # # For improved Ansible performance, SSH pipelining is enabled by default in `ansible.cfg`. diff --git a/examples/hosts.license b/examples/hosts.license new file mode 100644 index 000000000..b73f5ade5 --- /dev/null +++ b/examples/hosts.license @@ -0,0 +1,8 @@ +SPDX-FileCopyrightText: 2017 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Dan Arnfield +SPDX-FileCopyrightText: 2019 MDAD project contributors +SPDX-FileCopyrightText: 2021 Aaron Raimist +SPDX-FileCopyrightText: 2023 David Holdeman +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/examples/reverse-proxies/README.md b/examples/reverse-proxies/README.md index 91e10d5f6..3f8f12868 100644 --- a/examples/reverse-proxies/README.md +++ b/examples/reverse-proxies/README.md @@ -1,3 +1,9 @@ + + ## Using other reverse-proxies for fronting the integrated Traefik reverse-proxy This directory contains sample configuration for various webservers, showing you how to put these reverse-proxies in front of the integrated Traefik reverse-proxy used by the playbook. diff --git a/examples/reverse-proxies/apache/README.md b/examples/reverse-proxies/apache/README.md index b4608c87c..89b6fde58 100644 --- a/examples/reverse-proxies/apache/README.md +++ b/examples/reverse-proxies/apache/README.md @@ -1,3 +1,11 @@ + + # Apache reverse-proxy This directory contains sample files that show you how to front the integrated [Traefik](https://traefik.io/) reverse-proxy webserver with your Apache reverse-proxy. diff --git a/examples/reverse-proxies/apache/matrix-client-element.conf b/examples/reverse-proxies/apache/matrix-client-element.conf index d4321c2bd..d3f281856 100644 --- a/examples/reverse-proxies/apache/matrix-client-element.conf +++ b/examples/reverse-proxies/apache/matrix-client-element.conf @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + # This is a sample file demonstrating how to set up reverse-proxy for element.example.com. # If you're not using Element Web (`matrix_client_element_enabled: false`), you won't need this. diff --git a/examples/reverse-proxies/apache/matrix-domain.conf b/examples/reverse-proxies/apache/matrix-domain.conf index 18aaabd25..cce7723b0 100644 --- a/examples/reverse-proxies/apache/matrix-domain.conf +++ b/examples/reverse-proxies/apache/matrix-domain.conf @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + # This is a sample file demonstrating how to set up reverse-proxy for matrix.example.com diff --git a/examples/reverse-proxies/caddy2-in-container/Caddyfile b/examples/reverse-proxies/caddy2-in-container/Caddyfile index 0a3d1df07..958205477 100644 --- a/examples/reverse-proxies/caddy2-in-container/Caddyfile +++ b/examples/reverse-proxies/caddy2-in-container/Caddyfile @@ -1,10 +1,16 @@ +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + matrix.example.com { handle { encode zstd gzip # Use the docker service name instead of localhost or 127.0.0.1 here - matrix-traefik:8080 { + reverse_proxy matrix-traefik:8080 { header_up X-Forwarded-Port {http.request.port} header_up X-Forwarded-TlsProto {tls_protocol} header_up X-Forwarded-TlsCipher {tls_cipher} diff --git a/examples/reverse-proxies/caddy2-in-container/README.md b/examples/reverse-proxies/caddy2-in-container/README.md index 3a87bf234..cef786aed 100644 --- a/examples/reverse-proxies/caddy2-in-container/README.md +++ b/examples/reverse-proxies/caddy2-in-container/README.md @@ -1,3 +1,10 @@ + + # Caddy reverse-proxy fronting the playbook's integrated Traefik reverse-proxy This directory contains a sample config that shows you how to front the integrated [Traefik](https://traefik.io/) reverse-proxy webserver with your own **containerized** [Caddy](https://caddyserver.com/) reverse-proxy. If you have a server with a Caddy container already serving several applications and you want to install Matrix on it (with no changes to existing traffic routing), then this guide is for you. diff --git a/examples/reverse-proxies/caddy2-in-container/docker-compose.yaml b/examples/reverse-proxies/caddy2-in-container/docker-compose.yaml index 49671e7ac..d497660f9 100644 --- a/examples/reverse-proxies/caddy2-in-container/docker-compose.yaml +++ b/examples/reverse-proxies/caddy2-in-container/docker-compose.yaml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- version: "3.9" @@ -14,7 +19,7 @@ services: volumes: - ./Caddyfile:/etc/caddy/Caddyfile # - ./site:/var/www - # Other configurations … + # Other configurations … networks: # add this as well diff --git a/examples/reverse-proxies/caddy2/Caddyfile b/examples/reverse-proxies/caddy2/Caddyfile index c63b794ca..bf0a2b425 100644 --- a/examples/reverse-proxies/caddy2/Caddyfile +++ b/examples/reverse-proxies/caddy2/Caddyfile @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2020 - 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2020 Olaf Schoenwald +# SPDX-FileCopyrightText: 2020 Panagiotis Vasilopoulos +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 François Darveau +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + matrix.example.com { handle { diff --git a/examples/reverse-proxies/caddy2/README.md b/examples/reverse-proxies/caddy2/README.md index dcc1538af..0da1fe3e4 100644 --- a/examples/reverse-proxies/caddy2/README.md +++ b/examples/reverse-proxies/caddy2/README.md @@ -1,3 +1,13 @@ + + # Caddy reverse-proxy fronting the playbook's integrated Traefik reverse-proxy This directory contains a sample config that shows you how to front the integrated [Traefik](https://traefik.io/) reverse-proxy webserver with your own [Caddy](https://caddyserver.com/) reverse-proxy. diff --git a/examples/reverse-proxies/haproxy/README.md b/examples/reverse-proxies/haproxy/README.md index 086e49aa5..b2b389536 100644 --- a/examples/reverse-proxies/haproxy/README.md +++ b/examples/reverse-proxies/haproxy/README.md @@ -1,3 +1,11 @@ + + # HAproxy reverse-proxy This directory contains sample files that show you how to do reverse-proxying using HAproxy. diff --git a/examples/reverse-proxies/haproxy/haproxy.cfg b/examples/reverse-proxies/haproxy/haproxy.cfg index 57c562bdd..633922065 100644 --- a/examples/reverse-proxies/haproxy/haproxy.cfg +++ b/examples/reverse-proxies/haproxy/haproxy.cfg @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2019 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + global log /dev/log local0 log /dev/log local1 notice diff --git a/examples/reverse-proxies/nginx-proxy-manager/README.md b/examples/reverse-proxies/nginx-proxy-manager/README.md index e90289e9c..dad498435 100644 --- a/examples/reverse-proxies/nginx-proxy-manager/README.md +++ b/examples/reverse-proxies/nginx-proxy-manager/README.md @@ -1,3 +1,12 @@ + + # Nginx Proxy Manager fronting the playbook's integrated Traefik reverse-proxy Similar to standard nginx, [Nginx Proxy Manager](https://nginxproxymanager.com/) provides nginx capabilities but inside a pre-built Docker container. With the ability for managing proxy hosts and automatic SSL certificates via a simple web interface. diff --git a/examples/reverse-proxies/nginx/README.md b/examples/reverse-proxies/nginx/README.md index 1fe76340d..9ca86c86a 100644 --- a/examples/reverse-proxies/nginx/README.md +++ b/examples/reverse-proxies/nginx/README.md @@ -1,3 +1,13 @@ + + # Nginx reverse-proxy fronting the playbook's integrated Traefik reverse-proxy This directory contains a sample config that shows you how to use the [nginx](https://nginx.org/) webserver to front the integrated [Traefik](https://traefik.io/) reverse-proxy webserver with another reverse-proxy. diff --git a/examples/reverse-proxies/nginx/matrix.conf b/examples/reverse-proxies/nginx/matrix.conf index 0919011ef..8e6c89711 100644 --- a/examples/reverse-proxies/nginx/matrix.conf +++ b/examples/reverse-proxies/nginx/matrix.conf @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Jost Alemann +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + server { # TODO: once per IP and port you should add `reuseport`, if you don't have that in any other nginx config file, add it here by uncommenting the lines below and commenting the one after with `quic` but without `reuseport` #listen 443 quic reuseport; @@ -11,9 +17,9 @@ server { http3 on; # 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 use e.g. dimension on dimension.example.com, add dimension.example.com to the server_name list + # if you use e.g. Dimension on dimension.example.com, add dimension.example.com to the server_name list server_name example.com matrix.example.com element.example.com; location / { diff --git a/examples/vars.yml b/examples/vars.yml index d4d8066f8..b5e0b0a35 100644 --- a/examples/vars.yml +++ b/examples/vars.yml @@ -28,20 +28,29 @@ matrix_homeserver_generic_secret_key: '' # For alternatives, see `docs/configuring-playbook-own-webserver.md`. matrix_playbook_reverse_proxy_type: playbook-managed-traefik -# This is something which is provided to Let's Encrypt when retrieving SSL certificates for domains. +# Controls whether container networks will be created with IPv6 support. # -# In case SSL renewal fails at some point, you'll also get an email notification there. +# If you also have IPv6 support on your server/network and AAAA DNS records pointing to the server, +# enabling this will effectively give you full public IPv6 connectivity (powered by NAT66). # -# If you decide to use another method for managing SSL certificates (different than the default Let's Encrypt), -# you won't be required to define this variable (see `docs/configuring-playbook-ssl-certificates.md`). +# We recommend leaving this enabled even if you don't currently have IPv6 connectivity on your server/network. +# This way, once you eventually get IPv6 connectivity, you won't have to change anything (besides DNS records). # -# Example value: someone@example.com -traefik_config_certificatesResolvers_acme_email: '' +# Flipping this setting later on requires manual work (stopping services, deleting and recreating all container networks). +# +# In the future, this setting will likely default to `true`, so if you really want IPv6 disabled, explicitly set this to `false`. +# +# People managing Docker themselves and running an older Docker version will need additional configuration. +# +# Learn more in `docs/configuring-ipv6.md`. +devture_systemd_docker_base_ipv6_enabled: true # A Postgres password to use for the superuser Postgres user (called `matrix` by default). # -# The playbook creates additional Postgres users and databases (one for each enabled service) -# using this superuser account. +# The playbook creates additional Postgres users and databases (one for each enabled service) using this superuser account. +# +# Changing this value subsequently requires manual work. +# The value used here must be shorter than 100 characters. postgres_connection_password: '' # By default, we configure coturn's external IP address using the value specified for `ansible_host` in your `inventory/hosts` file. diff --git a/examples/vars.yml.license b/examples/vars.yml.license new file mode 100644 index 000000000..a0845f66a --- /dev/null +++ b/examples/vars.yml.license @@ -0,0 +1,9 @@ +SPDX-FileCopyrightText: 2017 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2018 Hugues Morisset +SPDX-FileCopyrightText: 2018 MDAD project contributors +SPDX-FileCopyrightText: 2020 Olaf Schoenwald +SPDX-FileCopyrightText: 2021 Kim Brose +SPDX-FileCopyrightText: 2022 Marko Weltzer +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/group_vars/jitsi_jvb_servers b/group_vars/jitsi_jvb_servers index af927c9f1..91d33fead 100644 --- a/group_vars/jitsi_jvb_servers +++ b/group_vars/jitsi_jvb_servers @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Antonis Christofides +# +# SPDX-License-Identifier: AGPL-3.0-or-later + jitsi_architecture: "{{ matrix_architecture }}" jitsi_hostname: "{{ matrix_server_fqn_jitsi }}" jitsi_uid: "{{ matrix_user_uid }}" diff --git a/group_vars/matrix_servers b/group_vars/matrix_servers index 4e5f0c9b2..5dd0d9f5a 100755 --- a/group_vars/matrix_servers +++ b/group_vars/matrix_servers @@ -21,12 +21,23 @@ matrix_playbook_docker_installation_enabled: true matrix_playbook_docker_installation_daemon_options: "{{ matrix_playbook_docker_installation_daemon_options_auto | combine(matrix_playbook_docker_installation_daemon_options_custom, recursive=True) }}" -matrix_playbook_docker_installation_daemon_options_auto: - experimental: "{{ devture_systemd_docker_base_ipv6_enabled }}" - ip6tables: "{{ devture_systemd_docker_base_ipv6_enabled }}" +# Since Docker 27.0.1, Docker daemon options do not need to be changed to enable IPv6 support on the daemon side. +# See: https://docs.docker.com/engine/release-notes/27/#ipv6 +# We only enable `ip6tables` and `experimental` for people who explicitly request it (perhaps due to running an old Docker version). +# +# Despite IPv6-enablement at the Docker level being a thing, for IPv6 to work for containers +# networks need to be created with IPv6 explicitly enabled. +# This is controlled by the `devture_systemd_docker_base_ipv6_enabled` variable and it's up to the various roles to +# respect this variable when creating their networks. +matrix_playbook_docker_installation_daemon_options_auto: | + {{ + ({'experimental': true, 'ip6tables': true} if devture_systemd_docker_base_ipv6_daemon_options_changing_enabled else {}) + }} matrix_playbook_docker_installation_daemon_options_custom: {} +matrix_playbook_docker_installation_daemon_options_file_path: /etc/docker/daemon.json + # Controls whether to attach Traefik labels to services. # This is separate from `traefik_enabled`, because you may wish to disable Traefik installation by the playbook, # yet still use Traefik installed in another way. @@ -107,6 +118,8 @@ matrix_homeserver_container_extra_arguments_auto: | + (['--mount type=bind,src=' + matrix_hookshot_base_path + '/registration.yml,dst=/hookshot-registration.yml,ro'] if matrix_hookshot_enabled else []) + + (['--mount type=bind,src=' + matrix_mautrix_bluesky_config_path + '/registration.yaml,dst=/matrix-mautrix-bluesky-registration.yaml,ro'] if matrix_mautrix_bluesky_enabled else []) + + (['--mount type=bind,src=' + matrix_mautrix_discord_config_path + '/registration.yaml,dst=/matrix-mautrix-discord-registration.yaml,ro'] if matrix_mautrix_discord_enabled else []) + (['--mount type=bind,src=' + matrix_mautrix_slack_config_path + '/registration.yaml,dst=/matrix-mautrix-slack-registration.yaml,ro'] if matrix_mautrix_slack_enabled else []) @@ -115,8 +128,6 @@ matrix_homeserver_container_extra_arguments_auto: | + (['--mount type=bind,src=' + matrix_mautrix_googlechat_config_path + '/registration.yaml,dst=/matrix-mautrix-googlechat-registration.yaml,ro'] if matrix_mautrix_googlechat_enabled else []) + - (['--mount type=bind,src=' + matrix_mautrix_hangouts_config_path + '/registration.yaml,dst=/matrix-mautrix-hangouts-registration.yaml,ro'] if matrix_mautrix_hangouts_enabled else []) - + (['--mount type=bind,src=' + matrix_mautrix_instagram_config_path + '/registration.yaml,dst=/matrix-mautrix-instagram-registration.yaml,ro'] if matrix_mautrix_instagram_enabled else []) + (['--mount type=bind,src=' + matrix_mautrix_signal_config_path + '/registration.yaml,dst=/matrix-mautrix-signal-registration.yaml,ro'] if matrix_mautrix_signal_enabled else []) @@ -180,6 +191,8 @@ matrix_homeserver_app_service_config_files_auto: | + (['/hookshot-registration.yml'] if matrix_hookshot_enabled else []) + + (['/matrix-mautrix-bluesky-registration.yaml'] if matrix_mautrix_bluesky_enabled else []) + + (['/matrix-mautrix-discord-registration.yaml'] if matrix_mautrix_discord_enabled else []) + (['/matrix-mautrix-slack-registration.yaml'] if matrix_mautrix_slack_enabled else []) @@ -188,8 +201,6 @@ matrix_homeserver_app_service_config_files_auto: | + (['/matrix-mautrix-googlechat-registration.yaml'] if matrix_mautrix_googlechat_enabled else []) + - (['/matrix-mautrix-hangouts-registration.yaml'] if matrix_mautrix_hangouts_enabled else []) - + (['/matrix-mautrix-instagram-registration.yaml'] if matrix_mautrix_instagram_enabled else []) + (['/matrix-mautrix-signal-registration.yaml'] if matrix_mautrix_signal_enabled else []) @@ -249,7 +260,7 @@ matrix_homeserver_sliding_sync_url: "{{ matrix_sliding_sync_base_url if matrix_s # This list is not exhaustive and final. # Synapse workers are still injected into the list at runtime. -# Additional JVB workers (jitsi_jvb.yml -- roles/galaxy/jitsi/tasks/init_additional_jvb.yml) override this variable at runtime as well. +# Additional JVB workers (jitsi_jvb.yml — roles/galaxy/jitsi/tasks/init_additional_jvb.yml) override this variable at runtime as well. # # Priority levels are like this: # - Traefik starts first with a level of 250, so that: @@ -257,7 +268,7 @@ matrix_homeserver_sliding_sync_url: "{{ matrix_sliding_sync_base_url if matrix_s # - so that addon services (starting later) can communicte with the homeserver via Traefik's internal entrypoint # (see `matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled`) # - core services (the homeserver) get a level of ~1000 -# - services that the homeserver depends on (database, Redis, ntfy, coturn, etc.) get a lower level - between 500 and 1000 +# - services that the homeserver depends on (database, Redis, ntfy, coturn, etc.) get a lower level — between 500 and 1000 # - coturn gets a higher level if `devture_systemd_service_manager_service_restart_mode == 'one-by-one'` to intentionally delay it, because: # - starting services one by one means that the service manager role waits for each service to fully start before proceeding to the next one # - if coturn has a lower priority than the homeserver, it would be started before it @@ -268,8 +279,8 @@ matrix_homeserver_sliding_sync_url: "{{ matrix_sliding_sync_base_url if matrix_s # - Matrix utility services (bridges, bots) get a level of 2000/2200, so that: # - they can start before the reverse-proxy # - so that, when the reverse-proxy is up (Matrix is up), all bots and bridges can be interacted with -# - monitoring services (Prometheus, Grafana, …) get a level of 4000 - they can start later than all-of-Matrix -# - services which aren't time-sensitive (various crons and timers) get a level of 5000 - they can start later than all-of-Matrix +# - monitoring services (Prometheus, Grafana, …) get a level of 4000 — they can start later than all-of-Matrix +# - services which aren't time-sensitive (various crons and timers) get a level of 5000 — they can start later than all-of-Matrix devture_systemd_service_manager_services_list_auto: | {{ ([{'name': (backup_borg_identifier + '.timer'), 'priority': 5000, 'groups': ['matrix', 'backup', 'borg']}] if backup_borg_enabled else []) @@ -324,6 +335,8 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-hookshot.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'hookshot', 'bridge-hookshot']}] if matrix_hookshot_enabled else []) + + ([{'name': 'matrix-mautrix-bluesky.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-bluesky']}] if matrix_mautrix_bluesky_enabled else []) + + ([{'name': 'matrix-mautrix-discord.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-discord']}] if matrix_mautrix_discord_enabled else []) + ([{'name': 'matrix-mautrix-slack.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-slack']}] if matrix_mautrix_slack_enabled else []) @@ -332,8 +345,6 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-mautrix-googlechat.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-googlechat']}] if matrix_mautrix_googlechat_enabled else []) + - ([{'name': 'matrix-mautrix-hangouts.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-hangouts']}] if matrix_mautrix_hangouts_enabled else []) - + ([{'name': 'matrix-mautrix-instagram.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-instagram']}] if matrix_mautrix_instagram_enabled else []) + ([{'name': 'matrix-mautrix-signal.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-signal', 'mautrix-signal']}] if matrix_mautrix_signal_enabled else []) @@ -382,6 +393,8 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-client-schildichat.service', 'priority': 2000, 'groups': ['matrix', 'clients', 'schildichat', 'client-schildichat']}] if matrix_client_schildichat_enabled else []) + + ([{'name': 'matrix-client-fluffychat.service', 'priority': 2000, 'groups': ['matrix', 'clients', 'fluffychat', 'client-fluffychat']}] if matrix_client_fluffychat_enabled else []) + + ([{'name': ('matrix-' + matrix_homeserver_implementation + '.service'), 'priority': 1000, 'groups': ['matrix', 'homeservers', matrix_homeserver_implementation]}] if matrix_homeserver_enabled else []) + ([{'name': 'matrix-corporal.service', 'priority': 1500, 'groups': ['matrix', 'corporal']}] if matrix_corporal_enabled else []) @@ -396,8 +409,6 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-dynamic-dns.service', 'priority': 5000, 'groups': ['matrix', 'dynamic-dns']}] if matrix_dynamic_dns_enabled else []) + - ([{'name': 'matrix-email2matrix.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'email2matrix']}] if matrix_email2matrix_enabled else []) - + ([{'name': (etherpad_identifier + '.service'), 'priority': 4000, 'groups': ['matrix', 'etherpad']}] if etherpad_enabled else []) + ([{'name': (grafana_identifier + '.service'), 'priority': 4000, 'groups': ['matrix', 'monitoring', 'grafana']}] if grafana_enabled else []) @@ -432,14 +443,16 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-prometheus-nginxlog-exporter.service', 'priority': 3900, 'groups': ['matrix', 'monitoring', 'prometheus-exporters', 'prometheus-nginxlog-exporter']}] if matrix_prometheus_nginxlog_exporter_enabled else []) + - ([{'name': (redis_identifier + '.service'), 'priority': 750, 'groups': ['matrix', 'redis']}] if redis_enabled else []) - + - ([{'name': (keydb_identifier + '.service'), 'priority': 750, 'groups': ['matrix', 'keydb']}] if keydb_enabled else []) - + ([{'name': (valkey_identifier + '.service'), 'priority': 750, 'groups': ['matrix', 'valkey']}] if valkey_enabled else []) + ([{'name': 'matrix-pantalaimon.service', 'priority': 4000, 'groups': ['matrix', 'pantalaimon']}] if matrix_pantalaimon_enabled else []) + + ([{'name': 'matrix-element-call.service', 'priority': 4000, 'groups': ['matrix', 'element-call']}] if matrix_element_call_enabled else []) + + + ([{'name': 'matrix-livekit-jwt-service.service', 'priority': 3500, 'groups': ['matrix', 'livekit-jwt-service']}] if matrix_livekit_jwt_service_enabled else []) + + + ([{'name': (livekit_server_identifier + '.service'), 'priority': 3000, 'groups': ['matrix', 'livekit-server']}] if livekit_server_enabled else []) + + ([{'name': 'matrix-registration.service', 'priority': 4000, 'groups': ['matrix', 'registration', 'matrix-registration']}] if matrix_registration_enabled else []) + ([{'name': 'matrix-sliding-sync.service', 'priority': 1500, 'groups': ['matrix', 'sliding-sync']}] if matrix_sliding_sync_enabled else []) @@ -462,7 +475,7 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': (matrix_static_files_identifier + '.service'), 'priority': 4000, 'groups': ['matrix', 'matrix-static-files']}] if matrix_static_files_enabled else []) + - ([{'name': (devture_container_socket_proxy_identifier + '.service'), 'priority': 200, 'groups': ['matrix', 'reverse-proxies', 'container-socket-proxy']}] if devture_container_socket_proxy_enabled else []) + ([{'name': (container_socket_proxy_identifier + '.service'), 'priority': 200, 'groups': ['matrix', 'reverse-proxies', 'container-socket-proxy']}] if container_socket_proxy_enabled else []) + ([{'name': (traefik_identifier + '.service'), 'priority': 250, 'groups': ['matrix', 'traefik', 'reverse-proxies']}] if traefik_enabled else []) + @@ -586,6 +599,8 @@ matrix_integration_manager_ui_url: "{{ matrix_dimension_integrations_ui_url if m # We don't enable this by default. matrix_alertmanager_receiver_enabled: false +matrix_alertmanager_receiver_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_alertmanager_receiver_container_image_registry_prefix_upstream_default }}" + matrix_alertmanager_receiver_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_alertmanager_receiver_container_network: "{{ matrix_addons_container_network }}" @@ -669,6 +684,10 @@ matrix_authentication_service_config_email_port: "{{ 8025 if exim_relay_enabled matrix_authentication_service_config_email_mode: "{{ 'plain' if exim_relay_enabled else 'starttls' }}" matrix_authentication_service_config_email_from_address: "{{ exim_relay_sender_address }}" +matrix_authentication_service_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_authentication_service_container_image_registry_prefix_upstream_default }}" + +matrix_authentication_service_syn2mas_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_authentication_service_syn2mas_container_image_registry_prefix_upstream_default }}" + matrix_authentication_service_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_authentication_service_container_network: "{{ matrix_homeserver_container_network }}" @@ -741,6 +760,8 @@ matrix_appservice_discord_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_appservice_discord_database_hostname == postgres_connection_hostname) else []) }} +matrix_appservice_discord_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_appservice_discord_docker_image_registry_prefix_upstream_default }}" + matrix_appservice_discord_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '9005') if matrix_playbook_service_host_bind_interface_prefix else '' }}" matrix_appservice_discord_container_network: "{{ matrix_addons_container_network }}" @@ -790,6 +811,8 @@ matrix_appservice_webhooks_systemd_required_services_list_auto: | matrix_addons_homeserver_systemd_services_list }} +matrix_appservice_webhooks_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_appservice_webhooks_docker_image_registry_prefix_upstream_default }}" + matrix_appservice_webhooks_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_appservice_webhooks_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ matrix_appservice_webhooks_matrix_port) if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -842,6 +865,8 @@ matrix_appservice_slack_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_appservice_slack_database_hostname == postgres_connection_hostname) else []) }} +matrix_appservice_slack_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_appservice_slack_docker_image_registry_prefix_upstream_default }}" + matrix_appservice_slack_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_appservice_slack_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ matrix_appservice_slack_slack_port) if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -899,6 +924,8 @@ matrix_appservice_irc_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_appservice_irc_database_hostname == postgres_connection_hostname) else []) }} +matrix_appservice_irc_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_appservice_irc_docker_image_registry_prefix_upstream_default }}" + matrix_appservice_irc_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_appservice_irc_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '9999') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -950,6 +977,10 @@ matrix_appservice_kakaotalk_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_appservice_kakaotalk_database_hostname == postgres_connection_hostname) else []) }} +matrix_appservice_kakaotalk_node_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_appservice_kakaotalk_node_docker_image_registry_prefix_upstream_default }}" + +matrix_appservice_kakaotalk_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_appservice_kakaotalk_docker_image_registry_prefix_upstream_default }}" + matrix_appservice_kakaotalk_container_network: "{{ matrix_addons_container_network }}" matrix_appservice_kakaotalk_container_additional_networks_auto: |- @@ -995,6 +1026,8 @@ matrix_beeper_linkedin_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_beeper_linkedin_database_hostname == postgres_connection_hostname) else []) }} +matrix_beeper_linkedin_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_beeper_linkedin_docker_image_registry_prefix_upstream_default }}" + matrix_beeper_linkedin_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}" matrix_beeper_linkedin_container_network: "{{ matrix_addons_container_network }}" @@ -1054,6 +1087,8 @@ matrix_go_skype_bridge_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_go_skype_bridge_database_hostname == postgres_connection_hostname) else []) }} +matrix_go_skype_bridge_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_go_skype_bridge_docker_image_registry_prefix_upstream_default }}" + matrix_go_skype_bridge_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_go_skype_bridge_container_network: "{{ matrix_addons_container_network }}" @@ -1085,6 +1120,77 @@ matrix_go_skype_bridge_database_password: "{{ '%s' | format(matrix_homeserver_ge # ###################################################################### +###################################################################### +# +# matrix-bridge-mautrix-bluesky +# +###################################################################### + +# We don't enable bridges by default. +matrix_mautrix_bluesky_enabled: false + +matrix_mautrix_bluesky_systemd_required_services_list_auto: | + {{ + matrix_addons_homeserver_systemd_services_list + + + ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_bluesky_database_hostname == postgres_connection_hostname) else []) + }} + +matrix_mautrix_bluesky_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_bluesky_docker_image_registry_prefix_upstream_default }}" + +matrix_mautrix_bluesky_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" + +matrix_mautrix_bluesky_container_network: "{{ matrix_addons_container_network }}" + +matrix_mautrix_bluesky_container_additional_networks_auto: |- + {{ + ( + ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) + + + ([postgres_container_network] if (postgres_enabled and matrix_mautrix_bluesky_database_hostname == postgres_connection_hostname and matrix_mautrix_bluesky_container_network != postgres_container_network) else []) + + + ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network and matrix_mautrix_bluesky_container_labels_traefik_enabled else []) + ) | unique + }} + +matrix_mautrix_bluesky_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +matrix_mautrix_bluesky_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_mautrix_bluesky_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_mautrix_bluesky_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +matrix_mautrix_bluesky_container_labels_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}" +matrix_mautrix_bluesky_container_labels_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}" + +matrix_mautrix_bluesky_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'bsky.as.token', rounds=655555) | to_uuid }}" + +matrix_mautrix_bluesky_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" +matrix_mautrix_bluesky_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'bsky.hs.token', rounds=655555) | to_uuid }}" + +matrix_mautrix_bluesky_provisioning_shared_secret: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mau.bsky.prov', rounds=655555) | to_uuid }}" + +matrix_mautrix_bluesky_double_puppet_secrets_auto: |- + {{ + ({ + matrix_mautrix_bluesky_homeserver_domain: ("as_token:" + matrix_appservice_double_puppet_registration_as_token) + }) + if matrix_appservice_double_puppet_enabled + else {} + }} + +matrix_mautrix_bluesky_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}" + +matrix_mautrix_bluesky_metrics_proxying_enabled: "{{ matrix_mautrix_bluesky_metrics_enabled and matrix_metrics_exposure_enabled }}" +matrix_mautrix_bluesky_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}" +matrix_mautrix_bluesky_metrics_proxying_path_prefix: "{{ matrix_metrics_exposure_path_prefix }}/mautrix-bluesky" + +matrix_mautrix_bluesky_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" +matrix_mautrix_bluesky_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mau.twt.db', rounds=655555) | to_uuid if postgres_enabled else '' }}" + +###################################################################### +# +# /matrix-bridge-mautrix-bluesky +# +###################################################################### ###################################################################### # @@ -1095,6 +1201,8 @@ matrix_go_skype_bridge_database_password: "{{ '%s' | format(matrix_homeserver_ge # We don't enable bridges by default. matrix_mautrix_discord_enabled: false +matrix_mautrix_discord_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_discord_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_discord_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_mautrix_discord_container_network: "{{ matrix_addons_container_network }}" @@ -1173,6 +1281,8 @@ matrix_mautrix_slack_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_slack_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_slack_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_slack_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_slack_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_mautrix_slack_container_network: "{{ matrix_addons_container_network }}" @@ -1231,6 +1341,8 @@ matrix_mautrix_facebook_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_facebook_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_facebook_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_facebook_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_facebook_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_mautrix_facebook_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '9008') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -1305,6 +1417,8 @@ matrix_mautrix_googlechat_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_googlechat_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_googlechat_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_googlechat_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_googlechat_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_mautrix_googlechat_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '9007') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -1366,73 +1480,6 @@ matrix_mautrix_googlechat_database_password: "{{ '%s' | format(matrix_homeserver ###################################################################### -###################################################################### -# -# matrix-bridge-mautrix-hangouts -# -###################################################################### - -# We don't enable bridges by default. -matrix_mautrix_hangouts_enabled: false - -matrix_mautrix_hangouts_systemd_required_services_list_auto: | - {{ - matrix_addons_homeserver_systemd_services_list - + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_hangouts_database_hostname == postgres_connection_hostname) else []) - }} - -matrix_mautrix_hangouts_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" - -matrix_mautrix_hangouts_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '9007') if matrix_playbook_service_host_bind_interface_prefix else '' }}" - -matrix_mautrix_hangouts_container_network: "{{ matrix_addons_container_network }}" - -matrix_mautrix_hangouts_container_additional_networks_auto: |- - {{ - ( - ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) - + - ([postgres_container_network] if (postgres_enabled and matrix_mautrix_hangouts_database_hostname == postgres_connection_hostname and matrix_mautrix_hangouts_container_network != postgres_container_network) else []) - + - ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_mautrix_gmessages_container_labels_traefik_enabled) else []) - ) | unique - }} - -matrix_mautrix_hangouts_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" -matrix_mautrix_hangouts_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" -matrix_mautrix_hangouts_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" -matrix_mautrix_hangouts_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" - -matrix_mautrix_hangouts_container_labels_public_endpoint_hostname: "{{ matrix_server_fqn_matrix }}" - -matrix_mautrix_hangouts_container_labels_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}" -matrix_mautrix_hangouts_container_labels_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}" - -matrix_mautrix_hangouts_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'ho.as.token', rounds=655555) | to_uuid }}" - -matrix_mautrix_hangouts_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" -matrix_mautrix_hangouts_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'ho.hs.token', rounds=655555) | to_uuid }}" - -matrix_mautrix_hangouts_login_shared_secret: "{{ matrix_synapse_ext_password_provider_shared_secret_auth_shared_secret if matrix_synapse_ext_password_provider_shared_secret_auth_enabled else '' }}" - -matrix_mautrix_hangouts_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}" - -matrix_mautrix_hangouts_metrics_proxying_enabled: "{{ matrix_mautrix_hangouts_metrics_enabled and matrix_metrics_exposure_enabled }}" -matrix_mautrix_hangouts_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}" -matrix_mautrix_hangouts_metrics_proxying_path_prefix: "{{ matrix_metrics_exposure_path_prefix }}/mautrix-hangouts" - -# Postgres is the default, except if not using internal Postgres server -matrix_mautrix_hangouts_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" -matrix_mautrix_hangouts_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" -matrix_mautrix_hangouts_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mau.hangouts.db', rounds=655555) | to_uuid }}" - -###################################################################### -# -# /matrix-bridge-mautrix-hangouts -# -###################################################################### - ###################################################################### # @@ -1450,6 +1497,8 @@ matrix_mautrix_instagram_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_instagram_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_instagram_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_instagram_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_instagram_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_mautrix_instagram_container_network: "{{ matrix_addons_container_network }}" @@ -1516,6 +1565,8 @@ matrix_mautrix_signal_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_signal_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_signal_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_signal_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_signal_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_mautrix_signal_container_network: "{{ matrix_addons_container_network }}" @@ -1590,6 +1641,8 @@ matrix_mautrix_meta_messenger_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_meta_messenger_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_meta_messenger_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_meta_messenger_container_image_registry_prefix_upstream_default }}" + matrix_mautrix_meta_messenger_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_mautrix_meta_messenger_container_network: "{{ matrix_addons_container_network }}" @@ -1664,6 +1717,8 @@ matrix_mautrix_meta_instagram_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_meta_instagram_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_meta_instagram_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_meta_instagram_container_image_registry_prefix_upstream_default }}" + matrix_mautrix_meta_instagram_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_mautrix_meta_instagram_container_network: "{{ matrix_addons_container_network }}" @@ -1740,10 +1795,14 @@ matrix_mautrix_telegram_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_telegram_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream_default }}" + +matrix_mautrix_telegram_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_telegram_docker_image_registry_prefix_upstream_default }}" + # Images are multi-arch (amd64 and arm64, but not arm32). matrix_mautrix_telegram_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" -matrix_telegram_lottieconverter_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" -matrix_telegram_lottieconverter_container_image_self_build_mask_arch: "{{ matrix_architecture != 'amd64' }}" +matrix_mautrix_telegram_lottieconverter_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" +matrix_mautrix_telegram_lottieconverter_container_image_self_build_mask_arch: "{{ matrix_architecture != 'amd64' }}" matrix_mautrix_telegram_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '9006') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -1820,6 +1879,8 @@ matrix_mautrix_twitter_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_twitter_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_twitter_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_twitter_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_twitter_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_mautrix_twitter_container_network: "{{ matrix_addons_container_network }}" @@ -1890,6 +1951,8 @@ matrix_mautrix_gmessages_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_facebook_database_hostname == postgres_connection_hostname) else []) }} +matrix_mautrix_gmessages_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_gmessages_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_gmessages_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_mautrix_gmessages_container_network: "{{ matrix_addons_container_network }}" @@ -1967,6 +2030,8 @@ matrix_mautrix_wsproxy_hostname: "wsproxy.{{ matrix_mautrix_wsproxy_homeserver_d matrix_mautrix_wsproxy_syncproxy_homeserver_url: "{{ matrix_addons_homeserver_client_api_url }}" +matrix_mautrix_wsproxy_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_wsproxy_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_wsproxy_container_network: "{{ matrix_addons_container_network }}" matrix_mautrix_wsproxy_container_additional_networks: | @@ -2010,6 +2075,10 @@ matrix_wechat_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_wechat_database_hostname == postgres_connection_hostname) else []) }} +matrix_wechat_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_wechat_container_image_registry_prefix_upstream_default }}" + +matrix_wechat_agent_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_wechat_agent_container_image_registry_prefix_upstream_default }}" + matrix_wechat_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_wechat_agent_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}" @@ -2054,6 +2123,8 @@ matrix_wechat_database_password: "{{ '%s' | format(matrix_homeserver_generic_sec # We don't enable bridges by default. matrix_mautrix_whatsapp_enabled: false +matrix_mautrix_whatsapp_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_whatsapp_docker_image_registry_prefix_upstream_default }}" + matrix_mautrix_whatsapp_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_mautrix_whatsapp_container_network: "{{ matrix_addons_container_network }}" @@ -2131,6 +2202,8 @@ matrix_sms_bridge_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_facebook_database_hostname == postgres_connection_hostname) else []) }} +matrix_sms_bridge_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_sms_bridge_docker_image_registry_prefix_upstream_default }}" + matrix_sms_bridge_container_network: "{{ matrix_addons_container_network }}" matrix_sms_bridge_container_additional_networks_auto: |- @@ -2166,6 +2239,8 @@ matrix_heisenbridge_systemd_required_services_list_auto: | matrix_addons_homeserver_systemd_services_list }} +matrix_heisenbridge_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_heisenbridge_docker_image_registry_prefix_upstream_default }}" + matrix_heisenbridge_container_network: "{{ matrix_addons_container_network }}" matrix_heisenbridge_container_additional_networks_auto: |- @@ -2203,6 +2278,8 @@ matrix_heisenbridge_homeserver_url: "{{ matrix_addons_homeserver_client_api_url # We don't enable bridges by default. matrix_hookshot_enabled: false +matrix_hookshot_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_hookshot_docker_image_registry_prefix_upstream_default }}" + matrix_hookshot_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_hookshot_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'hookshot.as.tok', rounds=655555) | to_uuid }}" @@ -2215,17 +2292,13 @@ matrix_hookshot_systemd_wanted_services_list: | {{ matrix_addons_homeserver_systemd_services_list + - ([(redis_identifier + '.service')] if redis_enabled and matrix_hookshot_cache_redis_host == redis_identifier else []) - + - ([(keydb_identifier + '.service')] if keydb_enabled and matrix_hookshot_cache_redis_host == keydb_identifier else []) - + ([(valkey_identifier + '.service')] if valkey_enabled and matrix_hookshot_cache_redis_host == valkey_identifier else []) }} # Hookshot's experimental encryption feature (and possibly others) may benefit from Redis, if available. # We only connect to Redis if encryption is enabled (not for everyone who has Redis enabled), # because connectivity is still potentially troublesome and is to be investigated. -matrix_hookshot_cache_redis_host: "{{ valkey_identifier if valkey_enabled else (redis_identifier if redis_enabled else (keydb_identifier if keydb_enabled else '')) }}" +matrix_hookshot_cache_redis_host: "{{ valkey_identifier if valkey_enabled else '' }}" matrix_hookshot_container_network: "{{ matrix_addons_container_network }}" @@ -2234,10 +2307,6 @@ matrix_hookshot_container_additional_networks_auto: | ( ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) + - ([redis_container_network] if redis_enabled and matrix_hookshot_cache_redis_host == redis_identifier else []) - + - ([keydb_container_network] if keydb_enabled and matrix_hookshot_cache_redis_host == keydb_identifier else []) - + ([valkey_container_network] if valkey_enabled and matrix_hookshot_cache_redis_host == valkey_identifier else []) + ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network and matrix_hookshot_container_labels_traefik_enabled else []) @@ -2295,6 +2364,8 @@ matrix_mx_puppet_slack_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_slack_database_hostname == postgres_connection_hostname) else []) }} +matrix_mx_puppet_slack_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_slack_docker_image_registry_prefix_upstream_default }}" + matrix_mx_puppet_slack_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_mx_puppet_slack_container_network: "{{ matrix_addons_container_network }}" @@ -2353,6 +2424,8 @@ matrix_mx_puppet_twitter_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_twitter_database_hostname == postgres_connection_hostname) else []) }} +matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream_default }}" + matrix_mx_puppet_twitter_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_mx_puppet_twitter_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '' ~ matrix_mx_puppet_twitter_appservice_port) if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -2412,6 +2485,8 @@ matrix_mx_puppet_instagram_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_instagram_database_hostname == postgres_connection_hostname) else []) }} +matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream_default }}" + matrix_mx_puppet_instagram_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_mx_puppet_instagram_container_network: "{{ matrix_addons_container_network }}" @@ -2461,6 +2536,8 @@ matrix_mx_puppet_discord_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_discord_database_hostname == postgres_connection_hostname) else []) }} +matrix_mx_puppet_discord_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_discord_docker_image_registry_prefix_upstream_default }}" + matrix_mx_puppet_discord_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_mx_puppet_discord_container_network: "{{ matrix_addons_container_network }}" @@ -2510,6 +2587,8 @@ matrix_mx_puppet_steam_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_steam_database_hostname == postgres_connection_hostname) else []) }} +matrix_mx_puppet_steam_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_steam_docker_image_registry_prefix_upstream_default }}" + matrix_mx_puppet_steam_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_mx_puppet_steam_container_network: "{{ matrix_addons_container_network }}" @@ -2560,6 +2639,8 @@ matrix_mx_puppet_groupme_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_groupme_database_hostname == postgres_connection_hostname) else []) }} +matrix_mx_puppet_groupme_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_groupme_docker_image_registry_prefix_upstream_default }}" + matrix_mx_puppet_groupme_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_mx_puppet_groupme_container_network: "{{ matrix_addons_container_network }}" @@ -2602,6 +2683,8 @@ matrix_mx_puppet_groupme_database_password: "{{ '%s' | format(matrix_homeserver_ # We don't enable bridges by default. matrix_postmoogle_enabled: false +matrix_postmoogle_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_postmoogle_docker_image_registry_prefix_upstream_default }}" + matrix_postmoogle_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_postmoogle_ssl_path: |- @@ -2685,6 +2768,8 @@ matrix_bot_matrix_reminder_bot_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if postgres_enabled and matrix_bot_matrix_reminder_bot_database_hostname == postgres_connection_hostname else []) }} +matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream_default }}" + matrix_bot_matrix_reminder_bot_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_bot_matrix_reminder_bot_container_network: "{{ matrix_addons_container_network }}" @@ -2730,6 +2815,8 @@ matrix_bot_matrix_registration_bot_systemd_required_services_list_auto: | matrix_addons_homeserver_systemd_services_list }} +matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream_default }}" + matrix_bot_matrix_registration_bot_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}" matrix_bot_matrix_registration_bot_container_network: "{{ matrix_addons_container_network }}" @@ -2777,6 +2864,8 @@ matrix_bot_maubot_homeserver_secret: |- }[matrix_homeserver_implementation] | default('') }} +matrix_bot_maubot_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_maubot_docker_image_registry_prefix_upstream_default }}" + matrix_bot_maubot_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}" matrix_bot_maubot_container_management_interface_http_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '' ~ matrix_bot_maubot_server_port | string) if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -2833,6 +2922,8 @@ matrix_bot_honoroit_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if postgres_enabled and matrix_bot_honoroit_database_hostname == postgres_connection_hostname else []) }} +matrix_bot_honoroit_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_honoroit_docker_image_registry_prefix_upstream_default }}" + matrix_bot_honoroit_container_network: "{{ matrix_addons_container_network }}" matrix_bot_honoroit_container_additional_networks: | @@ -2887,6 +2978,8 @@ matrix_bot_buscarron_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_bot_buscarron_database_hostname == postgres_connection_hostname) else []) }} +matrix_bot_buscarron_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_buscarron_docker_image_registry_prefix_upstream_default }}" + matrix_bot_buscarron_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_bot_buscarron_container_network: "{{ matrix_addons_container_network }}" @@ -2930,6 +3023,8 @@ matrix_bot_buscarron_database_password: "{{ '%s' | format(matrix_homeserver_gene # We don't enable bots by default. matrix_bot_baibot_enabled: false +matrix_bot_baibot_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_baibot_container_image_registry_prefix_upstream_default }}" + matrix_bot_baibot_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_bot_baibot_systemd_required_services_list_auto: | @@ -2963,6 +3058,8 @@ matrix_bot_baibot_container_additional_networks_auto: |- # We don't enable bots by default. matrix_bot_chatgpt_enabled: false +matrix_bot_chatgpt_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_chatgpt_container_image_registry_prefix_upstream_default }}" + matrix_bot_chatgpt_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_bot_chatgpt_container_network: "{{ matrix_addons_container_network }}" @@ -2997,6 +3094,8 @@ matrix_bot_go_neb_systemd_required_services_list_auto: | matrix_addons_homeserver_systemd_services_list }} +matrix_bot_go_neb_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_go_neb_container_image_registry_prefix_upstream_default }}" + matrix_bot_go_neb_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '4050') if matrix_playbook_service_host_bind_interface_prefix else '' }}" matrix_bot_go_neb_container_network: "{{ matrix_addons_container_network }}" @@ -3038,6 +3137,8 @@ matrix_bot_mjolnir_systemd_required_services_list_auto: | (['matrix-pantalaimon.service'] if matrix_bot_mjolnir_pantalaimon_use else []) }} +matrix_bot_mjolnir_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_mjolnir_docker_image_registry_prefix_upstream_default }}" + matrix_bot_mjolnir_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_bot_mjolnir_container_network: "{{ matrix_addons_container_network }}" @@ -3074,6 +3175,8 @@ matrix_bot_draupnir_systemd_required_services_list_auto: | (['matrix-pantalaimon.service'] if matrix_bot_draupnir_pantalaimon_use else []) }} +matrix_bot_draupnir_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_bot_draupnir_docker_image_registry_prefix_upstream_default }}" + matrix_bot_draupnir_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_bot_draupnir_container_network: "{{ matrix_addons_container_network }}" @@ -3091,10 +3194,10 @@ matrix_bot_draupnir_container_additional_networks_auto: |- ) | unique }} -matrix_bot_draupnir_homeserver_url: "{{ 'http://matrix-pantalaimon:8009' if matrix_bot_draupnir_pantalaimon_use else matrix_addons_homeserver_client_api_url }}" -matrix_bot_draupnir_raw_homeserver_url: "{{ matrix_addons_homeserver_client_api_url }}" +matrix_bot_draupnir_config_homeserverUrl: "{{ 'http://matrix-pantalaimon:8009' if matrix_bot_draupnir_pantalaimon_use else matrix_addons_homeserver_client_api_url }}" # noqa var-naming +matrix_bot_draupnir_config_rawHomeserverUrl: "{{ matrix_addons_homeserver_client_api_url }}" # noqa var-naming -matrix_bot_draupnir_container_labels_traefik_enabled: "{{ matrix_bot_draupnir_web_enabled and matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +matrix_bot_draupnir_container_labels_traefik_enabled: "{{ matrix_bot_draupnir_config_web_enabled and matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" matrix_bot_draupnir_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" matrix_bot_draupnir_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" matrix_bot_draupnir_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" @@ -3122,6 +3225,8 @@ matrix_appservice_draupnir_for_all_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_appservice_draupnir_for_all_database_hostname == postgres_connection_hostname) else []) }} +matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream_default }}" + matrix_appservice_draupnir_for_all_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_appservice_draupnir_for_all_container_network: "{{ matrix_addons_container_network }}" @@ -3179,6 +3284,8 @@ matrix_pantalaimon_systemd_required_services_list_auto: | matrix_addons_homeserver_systemd_services_list }} +matrix_pantalaimon_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_pantalaimon_docker_image_registry_prefix_upstream_default }}" + matrix_pantalaimon_container_network: "{{ matrix_homeserver_container_network }}" matrix_pantalaimon_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}" @@ -3209,6 +3316,8 @@ backup_borg_username: "{{ matrix_user_username }}" backup_borg_uid: "{{ matrix_user_uid }}" backup_borg_gid: "{{ matrix_user_gid }}" +backup_borg_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else backup_borg_docker_image_registry_prefix_upstream_default }}" + backup_borg_container_network: "{{ postgres_container_network if postgres_enabled else backup_borg_identifier }}" backup_borg_postgresql_version_detection_postgres_role_name: "{{ 'galaxy/postgres' if postgres_enabled else '' }}" @@ -3220,14 +3329,14 @@ backup_borg_postgresql_databases_hostname: "{{ postgres_connection_hostname if p backup_borg_postgresql_databases_username: "{{ postgres_connection_username if postgres_enabled else '' }}" backup_borg_postgresql_databases_password: "{{ postgres_connection_password if postgres_enabled else '' }}" backup_borg_postgresql_databases_port: "{{ postgres_connection_port if postgres_enabled else 5432 }}" -backup_borg_postgresql_databases: "{{ postgres_managed_databases | map(attribute='name') if postgres_enabled else [] }}" +backup_borg_postgresql_databases_auto: "{{ postgres_managed_databases | map(attribute='name') if postgres_enabled else [] }}" backup_borg_location_source_directories: - "{{ matrix_base_data_path }}" backup_borg_location_exclude_patterns: | {{ - ([matrix_synapse_media_store_path + '/local_thumbnails', matrix_synapse_media_store_path + '/remote_thumbnail', matrix_synapse_media_store_path + '/url_cache', matrix_synapse_media_store_path + '/url_cache_thumbnails'] if matrix_homeserver_implementation == 'synapse' else []) + ([matrix_synapse_media_store_path + '/remote_content', matrix_synapse_media_store_path + '/local_thumbnails', matrix_synapse_media_store_path + '/remote_thumbnail', matrix_synapse_media_store_path + '/url_cache', matrix_synapse_media_store_path + '/url_cache_thumbnails'] if matrix_homeserver_implementation == 'synapse' else []) + ([postgres_data_path] if postgres_enabled else []) }} @@ -3259,6 +3368,8 @@ matrix_cactus_comments_systemd_required_services_list_auto: | matrix_addons_homeserver_systemd_services_list }} +matrix_cactus_comments_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_cactus_comments_docker_image_registry_prefix_upstream_default }}" + matrix_cactus_comments_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}" matrix_cactus_comments_container_network: "{{ matrix_addons_container_network }}" @@ -3289,6 +3400,8 @@ matrix_cactus_comments_client_enabled: "{{ matrix_cactus_comments_enabled }}" matrix_cactus_comments_client_hostname: "{{ matrix_server_fqn_matrix }}" +matrix_cactus_comments_client_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_cactus_comments_client_container_image_registry_prefix_upstream_default }}" + matrix_cactus_comments_client_container_network: "{{ matrix_addons_container_network }}" matrix_cactus_comments_client_container_additional_networks_auto: |- @@ -3322,7 +3435,9 @@ matrix_corporal_systemd_required_services_list_auto: | (['matrix-' + matrix_homeserver_implementation + '.service']) }} -matrix_corporal_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm32', 'arm64'] }}" +matrix_corporal_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_corporal_docker_image_registry_prefix_upstream_default }}" + +matrix_corporal_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_corporal_container_http_gateway_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '41080') if matrix_playbook_service_host_bind_interface_prefix else '' }}" matrix_corporal_container_http_api_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '41081') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -3374,6 +3489,8 @@ matrix_rageshake_container_image_self_build: "{{ matrix_architecture not in ['am matrix_rageshake_hostname: "{{ matrix_server_fqn_rageshake }}" +matrix_rageshake_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_rageshake_container_image_registry_prefix_upstream_default }}" + matrix_rageshake_container_network: matrix-rageshake matrix_rageshake_container_additional_networks: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [] }}" @@ -3399,6 +3516,8 @@ matrix_rageshake_container_labels_traefik_tls_certResolver: "{{ traefik_certReso matrix_coturn_enabled: true +matrix_coturn_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_coturn_docker_image_registry_prefix_upstream_default }}" + matrix_coturn_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm32', 'arm64'] }}" # We make the assumption that `ansible_host` points to an external IP address, which may not always be the case. @@ -3449,10 +3568,8 @@ matrix_coturn_container_additional_volumes: | ) }} -matrix_coturn_systemd_required_services_list: | +matrix_coturn_systemd_required_services_list_auto: | {{ - [devture_systemd_docker_base_docker_service_name] - + ([traefik_certs_dumper_identifier + '-wait-for-domain@' + matrix_server_fqn_matrix + '.service'] if matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and matrix_coturn_tls_enabled else []) }} @@ -3470,11 +3587,13 @@ matrix_coturn_systemd_required_services_list: | matrix_dimension_enabled: false -matrix_dimension_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" - 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`, @@ -3531,7 +3650,7 @@ matrix_dimension_database_password: "{{ '%s' | format(matrix_homeserver_generic_ ###################################################################### # -# etke/etherpad +# etherpad # ###################################################################### @@ -3547,13 +3666,15 @@ etherpad_framing_enabled: "{{ matrix_dimension_enabled or jitsi_enabled }}" etherpad_hostname: "{{ matrix_server_fqn_etherpad }}" +etherpad_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else etherpad_container_image_registry_prefix_upstream_default }}" + etherpad_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}" etherpad_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '9001') if matrix_playbook_service_host_bind_interface_prefix else '' }}" etherpad_container_network: "{{ matrix_addons_container_network }}" -etherpad_container_additional_networks: | +etherpad_container_additional_networks_auto: | {{ ( ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else []) @@ -3567,10 +3688,8 @@ etherpad_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_pr etherpad_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" etherpad_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" -etherpad_systemd_required_services_list: | +etherpad_systemd_required_services_list_auto: | {{ - [devture_systemd_docker_base_docker_service_name] - + ([postgres_identifier ~ '.service'] if postgres_enabled else []) }} @@ -3581,7 +3700,7 @@ etherpad_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_k ###################################################################### # -# /etke/etherpad +# /etherpad # ###################################################################### @@ -3593,6 +3712,8 @@ etherpad_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_k matrix_dynamic_dns_enabled: false +matrix_dynamic_dns_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_dynamic_dns_docker_image_registry_prefix_upstream_default }}" + matrix_dynamic_dns_container_network: matrix-dynamic-dns ###################################################################### @@ -3601,34 +3722,6 @@ matrix_dynamic_dns_container_network: matrix-dynamic-dns # ###################################################################### -###################################################################### -# -# matrix-email2matrix -# -###################################################################### - -matrix_email2matrix_enabled: false - -matrix_email2matrix_systemd_required_services_list_auto: | - {{ - matrix_addons_homeserver_systemd_services_list - }} - -matrix_email2matrix_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm32', 'arm64'] }}" - -matrix_email2matrix_container_network: "{{ matrix_addons_container_network }}" - -matrix_email2matrix_container_additional_networks_auto: |- - {{ - ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) - }} - -###################################################################### -# -# /matrix-email2matrix -# -###################################################################### - ###################################################################### # # jitsi @@ -3650,6 +3743,8 @@ jitsi_gid: "{{ matrix_user_gid }}" jitsi_user_username: "{{ matrix_user_username }}" +jitsi_web_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else jitsi_web_container_image_registry_prefix_upstream_default }}" + jitsi_web_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '13080') if matrix_playbook_service_host_bind_interface_prefix else '' }}" jitsi_web_container_additional_networks_auto: | @@ -3657,6 +3752,8 @@ jitsi_web_container_additional_networks_auto: | ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else []) }} +jitsi_jvb_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else jitsi_jvb_container_image_registry_prefix_upstream_default }}" + jitsi_jvb_container_colibri_ws_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '13090') if matrix_playbook_service_host_bind_interface_prefix else '' }}" jitsi_jvb_container_additional_networks_auto: | @@ -3664,6 +3761,8 @@ jitsi_jvb_container_additional_networks_auto: | ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else []) }} +jitsi_prosody_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else jitsi_prosody_container_image_registry_prefix_upstream_default }}" + jitsi_prosody_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '5280') if matrix_playbook_service_host_bind_interface_prefix else '' }}" jitsi_prosody_container_additional_networks_auto: | @@ -3671,6 +3770,8 @@ jitsi_prosody_container_additional_networks_auto: | ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else []) }} +jitsi_jicofo_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else jitsi_jicofo_container_image_registry_prefix_upstream_default }}" + jitsi_container_labels_traefik_enabled: "{{ matrix_playbook_traefik_labels_enabled }}" jitsi_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" jitsi_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" @@ -3698,8 +3799,8 @@ jitsi_web_framing_enabled: true jitsi_turn_credentials: "{{ matrix_coturn_turn_static_auth_secret if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'auth-secret') else '' }}" jitsi_turn_host: "{{ ('turn.' + matrix_server_fqn_matrix) if matrix_coturn_enabled else '' }}" jitsi_turns_host: "{{ ('turn.' + matrix_server_fqn_matrix) if matrix_coturn_enabled else '' }}" -jitsi_turn_port: "{{ matrix_coturn_container_stun_plain_host_bind_port.split(':')[-1] if matrix_coturn_enabled else '' }}" -jitsi_turns_port: "{{ matrix_coturn_container_stun_tls_host_bind_port.split(':')[-1] if matrix_coturn_enabled else '' }}" +jitsi_turn_port: "{{ matrix_coturn_container_stun_plain_host_bind_port_tcp.split(':')[-1] if matrix_coturn_enabled else '' }}" +jitsi_turns_port: "{{ matrix_coturn_container_stun_tls_host_bind_port_tcp.split(':')[-1] if matrix_coturn_enabled else '' }}" # If the self-hosted Etherpad instance is available, it will also show up in Jitsi conferences, # unless explicitly disabled by setting `jitsi_etherpad_enabled` to false. @@ -3744,6 +3845,8 @@ matrix_ldap_registration_proxy_systemd_required_services_list_auto: | matrix_addons_homeserver_systemd_services_list }} +matrix_ldap_registration_proxy_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_ldap_registration_proxy_docker_image_registry_prefix_upstream_default }}" + matrix_ldap_registration_proxy_container_network: "{{ matrix_addons_container_network }}" matrix_ldap_registration_proxy_container_additional_networks_auto: |- @@ -3784,12 +3887,14 @@ exim_relay_base_path: "{{ matrix_base_data_path }}/exim-relay" exim_relay_uid: "{{ matrix_user_uid }}" exim_relay_gid: "{{ matrix_user_gid }}" -exim_relay_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm32', 'arm64'] }}" - exim_relay_hostname: "{{ matrix_server_fqn_matrix }}" exim_relay_sender_address: "matrix@{{ exim_relay_hostname }}" +exim_relay_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else exim_relay_container_image_registry_prefix_upstream_default }}" + +exim_relay_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm32', 'arm64'] }}" + ######################################################################## # # # /exim-relay # @@ -3817,6 +3922,8 @@ matrix_ma1sd_enabled: false matrix_ma1sd_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" matrix_ma1sd_hostname: "{{ matrix_server_fqn_matrix }}" +matrix_ma1sd_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_ma1sd_docker_image_registry_prefix_upstream_default }}" + matrix_ma1sd_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_ma1sd_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '' ~ matrix_ma1sd_container_port | string) if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -3891,6 +3998,8 @@ matrix_ma1sd_database_password: "{{ '%s' | format(matrix_homeserver_generic_secr matrix_media_repo_enabled: false +matrix_media_repo_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_media_repo_docker_image_registry_prefix_upstream_default }}" + matrix_media_repo_container_network: "{{ matrix_homeserver_container_network }}" matrix_media_repo_container_additional_networks: | @@ -3997,6 +4106,10 @@ postgres_systemd_services_to_stop_for_maintenance_list_auto: "{{ devture_systemd postgres_max_connections: "{{ 500 if matrix_synapse_workers_enabled else 200 }}" +postgres_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else postgres_container_image_registry_prefix_upstream_default }}" + +postgres_pgloader_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else postgres_pgloader_container_image_registry_prefix_upstream_default }}" + postgres_managed_databases_auto: | {{ ([{ @@ -4145,18 +4258,18 @@ postgres_managed_databases_auto: | 'password': matrix_wechat_database_password, }] if (matrix_wechat_enabled and matrix_wechat_database_engine == 'postgres' and matrix_wechat_database_hostname == postgres_connection_hostname) else []) + + ([{ + 'name': matrix_mautrix_bluesky_database_name, + 'username': matrix_mautrix_bluesky_database_username, + 'password': matrix_mautrix_bluesky_database_password, + }] if (matrix_mautrix_bluesky_enabled and matrix_mautrix_bluesky_database_engine == 'postgres' and matrix_mautrix_bluesky_database_hostname == postgres_connection_hostname) else []) + + ([{ 'name': matrix_mautrix_facebook_database_name, 'username': matrix_mautrix_facebook_database_username, 'password': matrix_mautrix_facebook_database_password, }] if (matrix_mautrix_facebook_enabled and matrix_mautrix_facebook_database_engine == 'postgres' and matrix_mautrix_facebook_database_hostname == postgres_connection_hostname) else []) + - ([{ - 'name': matrix_mautrix_hangouts_database_name, - 'username': matrix_mautrix_hangouts_database_username, - 'password': matrix_mautrix_hangouts_database_password, - }] if (matrix_mautrix_hangouts_enabled and matrix_mautrix_hangouts_database_engine == 'postgres' and matrix_mautrix_hangouts_database_hostname == postgres_connection_hostname) else []) - + ([{ 'name': matrix_mautrix_googlechat_database_name, 'username': matrix_mautrix_googlechat_database_username, @@ -4317,6 +4430,8 @@ postgres_backup_systemd_required_services_list_auto: | ([(postgres_identifier + '.service')] if (postgres_enabled and postgres_backup_connection_hostname == postgres_connection_hostname) else []) }} +postgres_backup_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else postgres_backup_container_image_registry_prefix_upstream_default }}" + postgres_backup_container_network: "{{ (postgres_container_network if (postgres_enabled and postgres_backup_connection_hostname == postgres_connection_hostname) else postgres_backup_identifier) }}" postgres_backup_container_additional_networks_auto: |- @@ -4335,7 +4450,7 @@ postgres_backup_connection_password: "{{ postgres_connection_password if postgre postgres_backup_postgres_data_path: "{{ postgres_data_path if postgres_enabled else '' }}" postgres_backup_postgres_role_include_name: galaxy/postgres -postgres_backup_databases: "{{ postgres_managed_databases | map(attribute='name') if postgres_enabled else [] }}" +postgres_backup_databases_auto: "{{ postgres_managed_databases | map(attribute='name') if postgres_enabled else [] }}" ######################################################################## # # @@ -4357,6 +4472,8 @@ matrix_sygnal_metrics_prometheus_enabled: "{{ prometheus_enabled or matrix_metri matrix_sygnal_hostname: "{{ matrix_server_fqn_sygnal }}" +matrix_sygnal_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_sygnal_docker_image_registry_prefix_upstream_default }}" + matrix_sygnal_container_network: "{{ matrix_homeserver_container_network }}" matrix_sygnal_container_additional_networks: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [] }}" @@ -4376,7 +4493,7 @@ matrix_sygnal_container_labels_traefik_tls_certResolver: "{{ traefik_certResolve ###################################################################### # -# etke/ntfy +# ntfy # ###################################################################### @@ -4391,7 +4508,9 @@ ntfy_gid: "{{ matrix_user_gid }}" ntfy_hostname: "{{ matrix_server_fqn_ntfy }}" -ntfy_container_additional_networks: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [] }}" +ntfy_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else ntfy_container_image_registry_prefix_upstream_default }}" + +ntfy_container_additional_networks_auto: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [] }}" ntfy_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '2586') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -4407,58 +4526,7 @@ ntfy_visitor_request_limit_exempt_hosts_hostnames_auto: | ###################################################################### # -# /etky/ntfy -# -###################################################################### - -###################################################################### -# -# redis -# -###################################################################### - -redis_enabled: "{{ not (keydb_enabled or valkey_enabled) and (matrix_synapse_workers_enabled or (matrix_hookshot_enabled and matrix_hookshot_encryption_enabled)) }}" - -redis_identifier: matrix-redis - -redis_uid: "{{ matrix_user_uid }}" -redis_gid: "{{ matrix_user_gid }}" - -redis_base_path: "{{ matrix_base_data_path }}/redis" - -###################################################################### -# -# /redis -# -###################################################################### - -###################################################################### -# -# keydb -# -###################################################################### - -keydb_enabled: false - -keydb_identifier: matrix-keydb - -keydb_uid: "{{ matrix_user_uid }}" -keydb_gid: "{{ matrix_user_gid }}" - -keydb_base_path: "{{ matrix_base_data_path }}/keydb" - -keydb_arch: |- - {{ - ({ - 'amd64': 'x86_64', - 'arm32': 'arm32', - 'arm64': 'arm64', - })[matrix_architecture] - }} - -###################################################################### -# -# keydb +# /ntfy # ###################################################################### @@ -4480,6 +4548,8 @@ valkey_base_path: "{{ matrix_base_data_path }}/valkey" valkey_arch: "{{ matrix_architecture }}" +valkey_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else valkey_container_image_registry_prefix_upstream_default }}" + ###################################################################### # # valkey @@ -4499,6 +4569,8 @@ matrix_client_element_enabled: true matrix_client_element_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" +matrix_client_element_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_client_element_docker_image_registry_prefix_upstream_default }}" + matrix_client_element_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_client_element_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '8765') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -4537,6 +4609,14 @@ matrix_client_element_enable_presence_by_hs_url: |- matrix_client_element_jitsi_preferred_domain: "{{ matrix_server_fqn_jitsi if jitsi_enabled else '' }}" +matrix_client_element_features_feature_video_rooms: "{{ matrix_rtc_enabled }}" +matrix_client_element_features_feature_group_calls: "{{ matrix_rtc_enabled }}" +matrix_client_element_features_feature_element_call_video_rooms: "{{ matrix_rtc_enabled }}" +matrix_client_element_features_feature_oidc_native_flow: "{{ matrix_authentication_service_enabled }}" + +matrix_client_element_element_call_enabled: "{{ matrix_element_call_enabled }}" +matrix_client_element_element_call_url: "{{ matrix_element_call_public_url if matrix_element_call_enabled else '' }}" + ###################################################################### # # /matrix-client-element @@ -4551,6 +4631,8 @@ matrix_client_element_jitsi_preferred_domain: "{{ matrix_server_fqn_jitsi if jit matrix_client_hydrogen_enabled: false +matrix_client_hydrogen_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_client_hydrogen_docker_image_registry_prefix_upstream_default }}" + matrix_client_hydrogen_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_client_hydrogen_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '8768') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -4587,6 +4669,8 @@ matrix_client_hydrogen_self_check_validate_certificates: "{{ matrix_playbook_ssl matrix_client_cinny_enabled: false +matrix_client_cinny_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_client_cinny_docker_image_registry_prefix_upstream_default }}" + matrix_client_cinny_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_client_cinny_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '8080') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -4625,6 +4709,8 @@ matrix_client_schildichat_enabled: false matrix_client_schildichat_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" +matrix_client_schildichat_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_client_schildichat_docker_image_registry_prefix_upstream_default }}" + matrix_client_schildichat_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_client_schildichat_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '8765') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -4666,6 +4752,39 @@ matrix_client_schildichat_jitsi_preferred_domain: "{{ matrix_server_fqn_jitsi if # ###################################################################### +###################################################################### +# +# matrix-client-fluffychat +# +###################################################################### + +matrix_client_fluffychat_enabled: false + +matrix_client_fluffychat_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" + +matrix_client_fluffychat_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_client_fluffychat_docker_image_registry_prefix_upstream_default }}" + +matrix_client_fluffychat_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" + +matrix_client_fluffychat_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '8770') if matrix_playbook_service_host_bind_interface_prefix else '' }}" + +matrix_client_fluffychat_container_network: "{{ matrix_addons_container_network }}" + +matrix_client_fluffychat_container_additional_networks_auto: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_client_fluffychat_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else [] }}" + +matrix_client_fluffychat_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +matrix_client_fluffychat_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_client_fluffychat_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_client_fluffychat_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +matrix_client_fluffychat_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabled }}" + +###################################################################### +# +# /matrix-client-fluffychat +# +###################################################################### + ###################################################################### # # matrix-synapse @@ -4680,6 +4799,12 @@ matrix_synapse_gid: "{{ matrix_user_gid }}" matrix_synapse_federation_enabled: "{{ matrix_homeserver_federation_enabled }}" +matrix_synapse_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_synapse_docker_image_registry_prefix_upstream_default }}" + +matrix_s3_goofys_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_s3_goofys_docker_image_registry_prefix_upstream_default }}" + +matrix_synapse_rust_synapse_compress_state_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_synapse_rust_synapse_compress_state_docker_image_registry_prefix_upstream_default }}" + matrix_synapse_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" matrix_synapse_account_threepid_delegates_msisdn_mas1sd_url: "{{ ('http://matrix-ma1sd:' + matrix_ma1sd_container_port| string) }}" @@ -4705,10 +4830,6 @@ matrix_synapse_container_additional_networks_auto: | + ([postgres_container_network] if (postgres_enabled and postgres_container_network != matrix_synapse_container_network and matrix_synapse_database_host == postgres_connection_hostname) else []) + - ([redis_container_network] if matrix_synapse_redis_enabled and matrix_synapse_redis_host == redis_identifier else []) - + - ([keydb_container_network] if matrix_synapse_redis_enabled and matrix_synapse_redis_host == keydb_identifier else []) - + ([valkey_container_network] if matrix_synapse_redis_enabled and matrix_synapse_redis_host == valkey_identifier else []) + ([exim_relay_container_network] if (exim_relay_enabled and matrix_synapse_email_enabled and matrix_synapse_email_smtp_host == exim_relay_identifier and matrix_synapse_container_network != exim_relay_container_network) else []) @@ -4732,6 +4853,8 @@ matrix_synapse_container_labels_public_client_root_redirection_enabled: "{{ matr matrix_synapse_container_labels_public_client_root_redirection_url: "{{ (('https://' if matrix_playbook_ssl_enabled else 'http://') + matrix_server_fqn_element) if matrix_client_element_enabled else '' }}" matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: "{{ matrix_synapse_admin_enabled }}" +matrix_synapse_container_labels_internal_client_synapse_admin_api_enabled: "{{ (matrix_bot_draupnir_enabled and matrix_bot_draupnir_admin_api_enabled) }}" +matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_entrypoints: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name }}" matrix_synapse_container_labels_public_federation_api_traefik_hostname: "{{ matrix_server_fqn_matrix_federation }}" matrix_synapse_container_labels_public_federation_api_traefik_entrypoints: "{{ matrix_federation_traefik_entrypoint_name }}" @@ -4771,19 +4894,7 @@ matrix_synapse_email_smtp_port: 8025 matrix_synapse_email_smtp_require_transport_security: false matrix_synapse_email_notif_from: "Matrix <{{ exim_relay_sender_address }}>" -matrix_synapse_turn_uris: | - {{ - ([ - 'turns:' + matrix_server_fqn_matrix + '?transport=udp', - 'turns:' + matrix_server_fqn_matrix + '?transport=tcp', - ] if matrix_coturn_enabled and matrix_coturn_tls_enabled else []) - + - ([ - 'turn:' + matrix_server_fqn_matrix + '?transport=udp', - 'turn:' + matrix_server_fqn_matrix + '?transport=tcp', - ] if matrix_coturn_enabled else []) - }} - +matrix_synapse_turn_uris: "{{ matrix_coturn_turn_uris if matrix_coturn_enabled else [] }}" matrix_synapse_turn_shared_secret: "{{ matrix_coturn_turn_static_auth_secret if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'auth-secret') else '' }}" matrix_synapse_turn_username: "{{ matrix_coturn_lt_cred_mech_username if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" matrix_synapse_turn_password: "{{ matrix_coturn_lt_cred_mech_password if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" @@ -4794,10 +4905,6 @@ matrix_synapse_systemd_required_services_list_auto: | {{ ([postgres_identifier ~ '.service'] if (postgres_enabled and postgres_container_network != matrix_synapse_container_network and matrix_synapse_database_host == postgres_connection_hostname) else []) + - ([redis_identifier ~ '.service'] if matrix_synapse_redis_enabled and matrix_synapse_redis_host == redis_identifier else []) - + - ([keydb_identifier ~ '.service'] if matrix_synapse_redis_enabled and matrix_synapse_redis_host == keydb_identifier else []) - + ([valkey_identifier ~ '.service'] if matrix_synapse_redis_enabled and matrix_synapse_redis_host == valkey_identifier else []) + (['matrix-goofys.service'] if matrix_s3_media_store_enabled else []) @@ -4813,9 +4920,9 @@ matrix_synapse_systemd_wanted_services_list_auto: | }} # Synapse workers (used for parallel load-scaling) need Redis for IPC. -matrix_synapse_redis_enabled: "{{ redis_enabled or keydb_enabled or valkey_enabled }}" -matrix_synapse_redis_host: "{{ valkey_identifier if valkey_enabled else (redis_identifier if redis_enabled else (keydb_identifier if keydb_enabled else '')) }}" -matrix_synapse_redis_password: "{{ valkey_connection_password if valkey_enabled else (redis_connection_password if redis_enabled else (keydb_connection_password if keydb_enabled else '')) }}" +matrix_synapse_redis_enabled: "{{ valkey_enabled }}" +matrix_synapse_redis_host: "{{ valkey_identifier if valkey_enabled else '' }}" +matrix_synapse_redis_password: "{{ valkey_connection_password if valkey_enabled else '' }}" matrix_synapse_container_extra_arguments_auto: "{{ matrix_homeserver_container_extra_arguments_auto }}" matrix_synapse_app_service_config_files_auto: "{{ matrix_homeserver_app_service_config_files_auto }}" @@ -4825,7 +4932,9 @@ matrix_synapse_ext_media_repo_enabled: "{{ matrix_media_repo_enabled }}" # Enable Synapse statistics reporting when using synapse-usage-exporter matrix_synapse_report_stats: "{{ matrix_synapse_usage_exporter_enabled }}" -matrix_synapse_report_stats_endpoint: "http://{{ matrix_synapse_usage_exporter_identifier }}:{{ matrix_synapse_usage_exporter_container_port | string }}/report-usage-stats/push" +matrix_synapse_report_stats_endpoint: "{{ (('http://' + matrix_synapse_usage_exporter_identifier + ':' + matrix_synapse_usage_exporter_container_port | string + '/report-usage-stats/push') if matrix_synapse_usage_exporter_enabled else '') }}" + +matrix_synapse_experimental_features_msc3266_enabled: "{{ matrix_rtc_enabled }}" matrix_synapse_experimental_features_msc3861_enabled: "{{ matrix_authentication_service_enabled and not matrix_authentication_service_migration_in_progress }}" matrix_synapse_experimental_features_msc3861_issuer: "{{ matrix_authentication_service_http_base_container_url if matrix_authentication_service_enabled else '' }}" @@ -4835,6 +4944,10 @@ matrix_synapse_experimental_features_msc3861_account_management_url: "{{ matrix_ matrix_synapse_experimental_features_msc4108_enabled: "{{ matrix_authentication_service_enabled and not matrix_authentication_service_migration_in_progress }}" +matrix_synapse_experimental_features_msc4140_enabled: "{{ matrix_rtc_enabled }}" + +matrix_synapse_experimental_features_msc4222_enabled: "{{ matrix_rtc_enabled }}" + # Disable password authentication when delegating authentication to Matrix Authentication Service. # Unless this is done, Synapse fails on startup with: # > Error in configuration at 'password_config.enabled': @@ -4864,6 +4977,8 @@ matrix_synapse_auto_compressor_gid: "{{ matrix_user_gid }}" matrix_synapse_auto_compressor_postgres_image: "{{ postgres_container_image_to_use }}" +matrix_synapse_auto_compressor_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_synapse_auto_compressor_container_image_registry_prefix_upstream_default }}" + matrix_synapse_auto_compressor_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}" matrix_synapse_auto_compressor_container_network: "{{ (postgres_container_network if (postgres_enabled and matrix_synapse_auto_compressor_database_hostname == matrix_synapse_database_host and matrix_synapse_database_host == postgres_connection_hostname) else 'matrix-synapse-auto-compressor') }}" @@ -4894,6 +5009,8 @@ matrix_synapse_auto_compressor_systemd_required_services_list_auto: | matrix_synapse_reverse_proxy_companion_enabled: "{{ matrix_synapse_enabled and matrix_synapse_workers_enabled }}" +matrix_synapse_reverse_proxy_companion_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_synapse_reverse_proxy_companion_container_image_registry_prefix_upstream_default }}" + matrix_synapse_reverse_proxy_companion_container_network: "{{ matrix_synapse_container_network }}" matrix_synapse_reverse_proxy_companion_container_additional_networks_auto: | @@ -4924,6 +5041,9 @@ matrix_synapse_reverse_proxy_companion_container_labels_traefik_compression_midd matrix_synapse_reverse_proxy_companion_container_labels_public_client_synapse_client_api_enabled: "{{ matrix_synapse_container_labels_public_client_synapse_client_api_enabled }}" matrix_synapse_reverse_proxy_companion_container_labels_public_client_synapse_admin_api_enabled: "{{ matrix_synapse_container_labels_public_client_synapse_admin_api_enabled }}" +matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_enabled: "{{ matrix_synapse_container_labels_internal_client_synapse_admin_api_enabled }}" +matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_entrypoints: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name }}" + matrix_synapse_reverse_proxy_companion_container_labels_public_federation_api_traefik_entrypoints: "{{ matrix_synapse_container_labels_public_federation_api_traefik_entrypoints }}" matrix_synapse_reverse_proxy_companion_container_labels_public_federation_api_traefik_tls: "{{ matrix_synapse_container_labels_public_federation_api_traefik_tls }}" @@ -4964,6 +5084,8 @@ matrix_synapse_reverse_proxy_companion_access_log_syslog_integration_server_port matrix_synapse_admin_enabled: false +matrix_synapse_admin_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_synapse_admin_docker_image_registry_prefix_upstream_default }}" + matrix_synapse_admin_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '8766') if matrix_playbook_service_host_bind_interface_prefix else '' }}" matrix_synapse_admin_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" @@ -5060,6 +5182,11 @@ matrix_synapse_admin_config_asManagedUsers_auto: | '^@'+(matrix_hookshot_generic_userIdPrefix | default('') | regex_escape)+'[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_hookshot_enabled else []) + + ([ + '^@'+(matrix_mautrix_bluesky_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', + '^@bluesky_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', + ] if matrix_mautrix_bluesky_enabled else []) + + ([ '^@'+(matrix_mautrix_discord_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', '^@discord_[0-9]+:'+(matrix_domain | regex_escape)+'$', @@ -5080,11 +5207,6 @@ matrix_synapse_admin_config_asManagedUsers_auto: | '^@googlechat_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_mautrix_googlechat_enabled else []) + - ([ - '^@'+(matrix_mautrix_hangouts_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', - '^@hangouts_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', - ] if matrix_mautrix_hangouts_enabled else []) - + ([ '^@'+(matrix_mautrix_instagram_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', '^@instagram_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', @@ -5180,6 +5302,8 @@ matrix_synapse_admin_config_asManagedUsers_auto: | matrix_synapse_usage_exporter_enabled: false +matrix_synapse_usage_exporter_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_synapse_usage_exporter_container_image_registry_prefix_upstream_default }}" + matrix_synapse_usage_exporter_container_network: "{{ matrix_monitoring_container_network }}" matrix_synapse_usage_exporter_container_additional_networks: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [] }}" @@ -5197,7 +5321,7 @@ matrix_synapse_usage_exporter_container_labels_traefik_tls_certResolver: "{{ tra ###################################################################### # -# etke/prometheus_node_exporter +# prometheus_node_exporter # ###################################################################### @@ -5212,9 +5336,11 @@ prometheus_node_exporter_gid: "{{ matrix_user_gid }}" prometheus_node_exporter_hostname: "{{ matrix_server_fqn_matrix }}" +prometheus_node_exporter_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else prometheus_node_exporter_docker_image_registry_prefix_upstream_default }}" + prometheus_node_exporter_container_network: "{{ matrix_monitoring_container_network }}" -prometheus_node_exporter_container_additional_networks: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [] }}" +prometheus_node_exporter_container_additional_networks_auto: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [] }}" prometheus_node_exporter_container_labels_traefik_enabled: "{{ matrix_metrics_exposure_enabled }}" prometheus_node_exporter_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" @@ -5226,14 +5352,14 @@ prometheus_node_exporter_container_labels_metrics_middleware_basic_auth_users: " ###################################################################### # -# /etke/prometheus_node_exporter +# /prometheus_node_exporter # ###################################################################### ###################################################################### # -# etke/prometheus_postgres_exporter +# prometheus_postgres_exporter # ###################################################################### @@ -5248,6 +5374,8 @@ prometheus_postgres_exporter_gid: "{{ matrix_user_gid }}" prometheus_postgres_exporter_hostname: "{{ matrix_server_fqn_matrix }}" +prometheus_postgres_exporter_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else prometheus_postgres_exporter_docker_image_registry_prefix_upstream_default }}" + prometheus_postgres_exporter_container_network: "{{ matrix_monitoring_container_network }}" prometheus_postgres_exporter_container_additional_networks: | @@ -5277,7 +5405,7 @@ prometheus_postgres_exporter_systemd_required_services_list_auto: | ###################################################################### # -# /etke/prometheus_postgres_exporter +# /prometheus_postgres_exporter # ###################################################################### @@ -5294,6 +5422,8 @@ matrix_prometheus_nginxlog_exporter_identifier: matrix-prometheus-nginxlog-expor matrix_prometheus_nginxlog_exporter_hostname: "{{ matrix_server_fqn_matrix }}" +matrix_prometheus_nginxlog_exporter_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_prometheus_nginxlog_exporter_docker_image_registry_prefix_upstream_default }}" + matrix_prometheus_nginxlog_exporter_container_network: "{{ matrix_monitoring_container_network }}" matrix_prometheus_nginxlog_exporter_container_additional_networks_auto: |- @@ -5336,6 +5466,8 @@ prometheus_base_path: "{{ matrix_base_data_path }}/prometheus" prometheus_uid: "{{ matrix_user_uid }}" prometheus_gid: "{{ matrix_user_gid }}" +prometheus_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else prometheus_container_image_registry_prefix_upstream_default }}" + prometheus_container_network: "{{ matrix_monitoring_container_network }}" prometheus_container_additional_networks_auto: | @@ -5430,7 +5562,7 @@ matrix_prometheus_services_connect_scraper_synapse_usage_exporter_static_configs ###################################################################### # -# etke/grafana +# grafana # ###################################################################### @@ -5445,6 +5577,8 @@ grafana_hostname: "{{ matrix_server_fqn_grafana }}" grafana_base_path: "{{ matrix_base_data_path }}/grafana" +grafana_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else grafana_container_image_registry_prefix_upstream_default }}" + grafana_container_network: "{{ matrix_monitoring_container_network }}" grafana_container_additional_networks_auto: | @@ -5463,7 +5597,7 @@ grafana_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_prim grafana_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '3000') if matrix_playbook_service_host_bind_interface_prefix else '' }}" -grafana_provisioning_datasources: | +grafana_provisioning_datasources_datasources: | {{ ([{ 'name': (matrix_server_fqn_matrix + ' - Prometheus'), @@ -5511,7 +5645,7 @@ grafana_default_home_dashboard_path: |- ###################################################################### # -# /etke/grafana +# /grafana # ###################################################################### @@ -5533,6 +5667,8 @@ matrix_registration_systemd_required_services_list_auto: | ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_registration_database_hostname == postgres_connection_hostname) else []) }} +matrix_registration_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_registration_docker_image_registry_prefix_upstream_default }}" + matrix_registration_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_registration_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '8767') if matrix_playbook_service_host_bind_interface_prefix else '' }}" @@ -5598,6 +5734,8 @@ matrix_sliding_sync_hostname: "{{ matrix_server_fqn_matrix }}" matrix_sliding_sync_path_prefix: /sliding-sync +matrix_sliding_sync_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_sliding_sync_container_image_registry_prefix_upstream_default }}" + matrix_sliding_sync_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_sliding_sync_container_network: "{{ matrix_homeserver_container_network }}" @@ -5659,6 +5797,8 @@ matrix_dendrite_hostname: "{{ matrix_server_fqn_matrix }}" matrix_dendrite_federation_enabled: "{{ matrix_homeserver_federation_enabled }}" +matrix_dendrite_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_dendrite_docker_image_registry_prefix_upstream_default }}" + matrix_dendrite_container_network: "{{ matrix_homeserver_container_network }}" matrix_dendrite_container_additional_networks_auto: | @@ -5702,20 +5842,7 @@ matrix_dendrite_database_hostname: "{{ postgres_connection_hostname if postgres_ matrix_dendrite_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'dendrite.db', rounds=655555) | to_uuid }}" -# Even if TURN doesn't support TLS (it does by default), -# it doesn't hurt to try a secure connection anyway. -matrix_dendrite_client_api_turn_uris: | - {{ - [ - 'turns:' + matrix_server_fqn_matrix + '?transport=udp', - 'turns:' + matrix_server_fqn_matrix + '?transport=tcp', - 'turn:' + matrix_server_fqn_matrix + '?transport=udp', - 'turn:' + matrix_server_fqn_matrix + '?transport=tcp', - ] - if matrix_coturn_enabled - else [] - }} - +matrix_dendrite_client_api_turn_uris: "{{ matrix_coturn_turn_uris if matrix_coturn_enabled else [] }}" matrix_dendrite_client_api_turn_shared_secret: "{{ matrix_coturn_turn_static_auth_secret if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'auth-secret') else '' }}" matrix_dendrite_client_api_turn_username: "{{ matrix_coturn_lt_cred_mech_username if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" matrix_dendrite_client_api_turn_password: "{{ matrix_coturn_lt_cred_mech_password if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" @@ -5760,6 +5887,8 @@ matrix_conduit_hostname: "{{ matrix_server_fqn_matrix }}" matrix_conduit_allow_federation: "{{ matrix_homeserver_federation_enabled }}" +matrix_conduit_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_conduit_docker_image_registry_prefix_upstream_default }}" + matrix_conduit_container_network: "{{ matrix_homeserver_container_network }}" matrix_conduit_container_additional_networks_auto: | @@ -5784,19 +5913,7 @@ matrix_conduit_container_labels_public_federation_api_traefik_tls: "{{ matrix_fe matrix_conduit_container_labels_internal_client_api_enabled: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled }}" matrix_conduit_container_labels_internal_client_api_traefik_entrypoints: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name }}" -matrix_conduit_turn_uris: | - {{ - ([ - 'turns:' + matrix_server_fqn_matrix + '?transport=udp', - 'turns:' + matrix_server_fqn_matrix + '?transport=tcp', - ] if matrix_coturn_enabled and matrix_coturn_tls_enabled else []) - + - ([ - 'turn:' + matrix_server_fqn_matrix + '?transport=udp', - 'turn:' + matrix_server_fqn_matrix + '?transport=tcp', - ] if matrix_coturn_enabled else []) - }} - +matrix_conduit_turn_uris: "{{ matrix_coturn_turn_uris if matrix_coturn_enabled else [] }}" matrix_conduit_turn_secret: "{{ matrix_coturn_turn_static_auth_secret if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'auth-secret') else '' }}" matrix_conduit_turn_username: "{{ matrix_coturn_lt_cred_mech_username if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" matrix_conduit_turn_password: "{{ matrix_coturn_lt_cred_mech_password if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" @@ -5820,6 +5937,8 @@ matrix_conduwuit_hostname: "{{ matrix_server_fqn_matrix }}" matrix_conduwuit_config_allow_federation: "{{ matrix_homeserver_federation_enabled }}" +matrix_conduwuit_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_conduwuit_docker_image_registry_prefix_upstream_default }}" + matrix_conduwuit_container_network: "{{ matrix_homeserver_container_network }}" matrix_conduwuit_container_additional_networks_auto: | @@ -5844,19 +5963,7 @@ matrix_conduwuit_container_labels_public_federation_api_traefik_tls: "{{ matrix_ matrix_conduwuit_container_labels_internal_client_api_enabled: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled }}" matrix_conduwuit_container_labels_internal_client_api_traefik_entrypoints: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name }}" -matrix_conduwuit_config_turn_uris: | - {{ - ([ - 'turns:' + matrix_server_fqn_matrix + '?transport=udp', - 'turns:' + matrix_server_fqn_matrix + '?transport=tcp', - ] if matrix_coturn_enabled and matrix_coturn_tls_enabled else []) - + - ([ - 'turn:' + matrix_server_fqn_matrix + '?transport=udp', - 'turn:' + matrix_server_fqn_matrix + '?transport=tcp', - ] if matrix_coturn_enabled else []) - }} - +matrix_conduwuit_config_turn_uris: "{{ matrix_coturn_turn_uris if matrix_coturn_enabled else [] }}" matrix_conduwuit_config_turn_secret: "{{ matrix_coturn_turn_static_auth_secret if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'auth-secret') else '' }}" matrix_conduwuit_config_turn_username: "{{ matrix_coturn_lt_cred_mech_username if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" matrix_conduwuit_config_turn_password: "{{ matrix_coturn_lt_cred_mech_password if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" @@ -5955,6 +6062,8 @@ matrix_user_verification_service_systemd_required_services_list: | (['matrix-' + matrix_homeserver_implementation + '.service']) }} +matrix_user_verification_service_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_user_verification_service_docker_image_registry_prefix_upstream_default }}" + matrix_user_verification_service_container_network: "{{ matrix_addons_container_network }}" matrix_user_verification_service_container_additional_networks: | @@ -5966,7 +6075,7 @@ matrix_user_verification_service_container_additional_networks: | ) | unique }} -# If Jitsi is managed by this playbook we can use the docker network - no need to expose a port. +# If Jitsi is managed by this playbook we can use the docker network — no need to expose a port. # If Jitsi is not managed by this playbook, or you otherwise have a need for it, you can expose # matrix-user-verfification-services's client-server port to port 3003. # By default Matrix-User-Verification-Service binds to port 3000, which collides with grafana, therefore this uses port 3003. @@ -5978,7 +6087,7 @@ matrix_user_verification_service_container_url: "http://{{ matrix_user_verifica matrix_user_verification_service_uvs_homeserver_url: "{{ matrix_addons_homeserver_client_api_url }}" # We connect via the container network (private IPs), so we need to disable IP checks -matrix_user_verification_service_uvs_disable_ip_blacklist: "{{'true' if matrix_synapse_enabled else 'false'}}" +matrix_user_verification_service_uvs_disable_ip_blacklist: "{{ matrix_synapse_enabled }}" matrix_user_verification_service_uvs_auth_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'uvs.auth.token', rounds=655555) | to_uuid }}" @@ -5997,6 +6106,8 @@ matrix_user_verification_service_uvs_auth_token: "{{ '%s' | format(matrix_homese matrix_static_files_enabled: true +matrix_static_files_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_static_files_container_image_registry_prefix_upstream_default }}" + matrix_static_files_container_network: "{{ (matrix_static_files_identifier if matrix_playbook_reverse_proxy_type == 'none' else matrix_playbook_reverse_proxy_container_network) }}" matrix_static_files_container_labels_traefik_enabled: "{{ matrix_playbook_traefik_labels_enabled }}" @@ -6012,7 +6123,7 @@ matrix_static_files_container_labels_base_domain_traefik_hostname: "{{ matrix_do # If we're not serving a static webpage, serve a redirect instead of a 404. matrix_static_files_container_labels_base_domain_root_path_redirection_enabled: "{{ not matrix_static_files_file_index_html_enabled }}" -matrix_static_files_container_labels_base_domain_root_path_redirection_url: "{{ ('https://' if matrix_playbook_ssl_enabled else 'http://') + matrix_server_fqn_matrix }}" +matrix_static_files_container_labels_base_domain_root_path_redirection_url: "{{ ('https://' if matrix_playbook_ssl_enabled else 'http://') + matrix_server_fqn_matrix }}/${1}" matrix_static_files_file_matrix_client_property_io_element_jitsi_preferred_domain: "{{ matrix_server_fqn_jitsi if jitsi_enabled else '' }}" @@ -6029,6 +6140,14 @@ matrix_static_files_file_matrix_client_property_m_tile_server_map_style_url: "{{ # See: https://github.com/etkecc/synapse-admin/pull/126 matrix_static_files_file_matrix_client_property_cc_etke_synapse_admin_auto: "{{ matrix_synapse_admin_configuration if matrix_homeserver_implementation == 'synapse' else {} }}" +matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_enabled: "{{ matrix_livekit_jwt_service_enabled }}" +matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_auto: |- + {{ + ( + [{'type': 'livekit', 'livekit_service_url': matrix_livekit_jwt_service_public_url}] if matrix_livekit_jwt_service_enabled else [] + ) + }} + matrix_static_files_file_matrix_server_property_m_server: "{{ matrix_server_fqn_matrix_federation }}:{{ matrix_federation_public_port }}" matrix_static_files_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" @@ -6045,25 +6164,27 @@ matrix_static_files_self_check_hostname_identity: "{{ matrix_domain }}" ######################################################################## # # -# com.devture.ansible.role.container_socket_proxy # +# container-socket-proxy # # # ######################################################################## -devture_container_socket_proxy_enabled: "{{ matrix_playbook_reverse_proxy_type == 'playbook-managed-traefik' }}" +container_socket_proxy_enabled: "{{ matrix_playbook_reverse_proxy_type == 'playbook-managed-traefik' }}" -devture_container_socket_proxy_identifier: matrix-container-socket-proxy +container_socket_proxy_identifier: matrix-container-socket-proxy -devture_container_socket_proxy_base_path: "{{ matrix_base_data_path }}/container-socket-proxy" +container_socket_proxy_base_path: "{{ matrix_base_data_path }}/container-socket-proxy" -devture_container_socket_proxy_uid: "{{ matrix_user_uid }}" -devture_container_socket_proxy_gid: "{{ matrix_user_gid }}" +container_socket_proxy_uid: "{{ matrix_user_uid }}" +container_socket_proxy_gid: "{{ matrix_user_gid }}" # Traefik requires read access to the containers APIs to do its job -devture_container_socket_proxy_api_containers_enabled: true +container_socket_proxy_api_containers_enabled: true + +container_socket_proxy_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else container_socket_proxy_container_image_registry_prefix_upstream_default }}" ######################################################################## # # -# /com.devture.ansible.role.container_socket_proxy # +# /container-socket-proxy # # # ######################################################################## @@ -6094,18 +6215,20 @@ traefik_additional_entrypoints_auto: | ([matrix_playbook_internal_matrix_client_api_traefik_entrypoint_definition] if matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled else []) }} -traefik_config_providers_docker_endpoint: "{{ devture_container_socket_proxy_endpoint if devture_container_socket_proxy_enabled else 'unix:///var/run/docker.sock' }}" +traefik_config_providers_docker_endpoint: "{{ container_socket_proxy_endpoint if container_socket_proxy_enabled else 'unix:///var/run/docker.sock' }}" + +traefik_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else traefik_container_image_registry_prefix_upstream_default }}" traefik_container_additional_networks_auto: | {{ - ([devture_container_socket_proxy_container_network] if devture_container_socket_proxy_enabled else []) + ([container_socket_proxy_container_network] if container_socket_proxy_enabled else []) }} traefik_systemd_required_services_list: | {{ ([devture_systemd_docker_base_docker_service_name]) + - ([devture_container_socket_proxy_identifier + '.service'] if devture_container_socket_proxy_enabled else []) + ([container_socket_proxy_identifier + '.service'] if container_socket_proxy_enabled else []) }} ######################################################################## @@ -6132,8 +6255,185 @@ traefik_certs_dumper_gid: "{{ matrix_user_gid }}" traefik_certs_dumper_ssl_dir_path: "{{ traefik_ssl_dir_path if traefik_enabled else '' }}" +traefik_certs_dumper_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else traefik_certs_dumper_container_image_registry_prefix_upstream_default }}" + ######################################################################## # # # /traefik_certs_dumper # # # ######################################################################## + + +######################################################################## +# # +# matrix-element-call # +# # +######################################################################## + +matrix_element_call_enabled: false + +matrix_element_call_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" + +matrix_element_call_container_network: "{{ matrix_addons_container_network }}" + +matrix_element_call_container_additional_networks_auto: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_element_call_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else [] }}" + +matrix_element_call_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +matrix_element_call_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_element_call_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_element_call_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +matrix_element_call_config_livekit_livekit_service_url: "{{ matrix_livekit_jwt_service_public_url if matrix_livekit_jwt_service_enabled else '' }}" + +######################################################################## +# # +# /matrix-element-call # +# # +######################################################################## + +######################################################################## +# # +# livekit-server # +# # +######################################################################## + +livekit_server_enabled: "{{ matrix_rtc_enabled }}" + +livekit_server_identifier: matrix-livekit-server + +livekit_server_uid: "{{ matrix_user_uid }}" +livekit_server_gid: "{{ matrix_user_gid }}" + +livekit_server_base_path: "{{ matrix_base_data_path }}/livekit-server" + +livekit_server_hostname: "{{ matrix_server_fqn_matrix }}" +livekit_server_path_prefix: "/livekit-server" + +livekit_server_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" + +livekit_server_container_network: "{{ matrix_addons_container_network }}" +livekit_server_container_additional_networks_auto: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if (livekit_server_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else [] }}" + +livekit_server_container_additional_volumes_auto: | + {{ + ( + [ + { + 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + livekit_server_config_turn_domain + '/certificate.crt'), + 'dst': livekit_server_config_turn_cert_file, + 'options': 'ro', + }, + { + 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + livekit_server_config_turn_domain + '/privatekey.key'), + 'dst': livekit_server_config_turn_key_file, + 'options': 'ro', + }, + ] if (matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and livekit_server_config_turn_enabled and (livekit_server_config_turn_cert_file and livekit_server_config_turn_key_file)) else [] + ) + }} + +livekit_server_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +livekit_server_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +livekit_server_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +livekit_server_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +livekit_server_container_labels_public_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}" +livekit_server_container_labels_public_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}" + +livekit_server_metrics_proxying_enabled: "{{ livekit_server_config_prometheus_enabled and matrix_metrics_exposure_enabled }}" +livekit_server_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}" +livekit_server_metrics_proxying_path_prefix: "{{ matrix_metrics_exposure_path_prefix }}/livekit-server" + +livekit_server_config_prometheus_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}" + +livekit_server_config_keys_auto: |- + {{ + {} + | combine( + {matrix_livekit_jwt_service_environment_variable_livekit_key: matrix_livekit_jwt_service_environment_variable_livekit_secret} + if matrix_livekit_jwt_service_enabled else {} + ) + }} + +# The playbook intentionally uses a non-standard port than the default used by the role (5349), +# because Coturn is already using that port. +# Note that TURN is not enabled by default. See `livekit_server_config_turn_enabled`. +livekit_server_config_turn_tls_port: 5350 + +# The playbook intentionally uses a non-standard port than the default used by the role (3478), +# because Coturn is already using that port. +# Note that TURN is not enabled by default. See `livekit_server_config_turn_enabled`. +livekit_server_config_turn_udp_port: 3479 + +# LiveKit's TURN implementation requires SSL certificates. +# We only enable it if we can provide them automatically via Traefik + Traefik Certs Dumper. +livekit_server_config_turn_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled }}" + +livekit_server_config_turn_cert_file: |- + {{ + { + 'playbook-managed-traefik': ('/certificate.crt' if traefik_certs_dumper_enabled else ''), + 'other-traefik-container': ('/certificate.crt' if traefik_certs_dumper_enabled else ''), + 'none': '', + }[matrix_playbook_reverse_proxy_type] + }} + +livekit_server_config_turn_key_file: |- + {{ + { + 'playbook-managed-traefik': ('/privatekey.key' if traefik_certs_dumper_enabled else ''), + 'other-traefik-container': ('/privatekey.key' if traefik_certs_dumper_enabled else ''), + 'none': '', + }[matrix_playbook_reverse_proxy_type] + }} + +livekit_server_systemd_required_services_list_auto: | + {{ + ([traefik_certs_dumper_identifier + '-wait-for-domain@' + livekit_server_config_turn_domain + '.service'] if matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and livekit_server_config_turn_enabled else []) + }} + +######################################################################## +# # +# /livekit-server # +# # +######################################################################## + + +######################################################################## +# # +# matrix-livekit-jwt-service # +# # +######################################################################## + +matrix_livekit_jwt_service_enabled: "{{ matrix_rtc_enabled and livekit_server_enabled }}" + +matrix_livekit_jwt_service_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" + +matrix_livekit_jwt_service_hostname: "{{ matrix_server_fqn_matrix }}" +matrix_livekit_jwt_service_path_prefix: "/livekit-jwt-service" + +matrix_livekit_jwt_service_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" + +matrix_livekit_jwt_service_container_network: "{{ matrix_addons_container_network }}" + +matrix_livekit_jwt_service_container_additional_networks_auto: | + {{ + ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_livekit_jwt_service_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else []) + }} + +matrix_livekit_jwt_service_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +matrix_livekit_jwt_service_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_livekit_jwt_service_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_livekit_jwt_service_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +matrix_livekit_jwt_service_environment_variable_livekit_url: "{{ livekit_server_websocket_public_url }}" + +matrix_livekit_jwt_service_environment_variable_livekit_key: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'lk.key', rounds=655555) | to_uuid }}" + +matrix_livekit_jwt_service_environment_variable_livekit_secret: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'lk.secret', rounds=655555) | to_uuid }}" + +######################################################################## +# # +# /matrix-livekit-jwt-service # +# # +######################################################################## diff --git a/group_vars/matrix_servers.license b/group_vars/matrix_servers.license new file mode 100644 index 000000000..1cffee2cc --- /dev/null +++ b/group_vars/matrix_servers.license @@ -0,0 +1,65 @@ +SPDX-FileCopyrightText: 2019 - 2021 Aaron Raimist +SPDX-FileCopyrightText: 2019 - 2021 Stuart Mumford +SPDX-FileCopyrightText: 2019 - 2025 MDAD project contributors +SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Dan Arnfield +SPDX-FileCopyrightText: 2019 Daniel Hoffend +SPDX-FileCopyrightText: 2019 Edgars Voroboks +SPDX-FileCopyrightText: 2019 Thomas Kuehne +SPDX-FileCopyrightText: 2020 - 2021 Sabine Laszakovits +SPDX-FileCopyrightText: 2020 Björn Marten +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2020 David Gnedt +SPDX-FileCopyrightText: 2020 Horvath Gergely +SPDX-FileCopyrightText: 2020 Hugues Morisset +SPDX-FileCopyrightText: 2020 Marcel Partap +SPDX-FileCopyrightText: 2020 Max Klenk +SPDX-FileCopyrightText: 2020 Rodrigo Belem +SPDX-FileCopyrightText: 2020 Scott Crossen +SPDX-FileCopyrightText: 2020 Tulir Asokan +SPDX-FileCopyrightText: 2020 Zach Mertes +SPDX-FileCopyrightText: 2021 - 2022 Matthew Cengia +SPDX-FileCopyrightText: 2021 - 2023 Shreyas Ajjarapu +SPDX-FileCopyrightText: 2021 Ahmad Haghighi +SPDX-FileCopyrightText: 2021 Alexandar Mechev +SPDX-FileCopyrightText: 2021 Béla Becker +SPDX-FileCopyrightText: 2021 Christos Karamolegkos +SPDX-FileCopyrightText: 2021 Cody Neiman +SPDX-FileCopyrightText: 2021 Marc Leuser +SPDX-FileCopyrightText: 2021 Marcus Proest +SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis +SPDX-FileCopyrightText: 2021 Raymond Coetzee +SPDX-FileCopyrightText: 2021 Stuart Thomson +SPDX-FileCopyrightText: 2021 Toni Spets +SPDX-FileCopyrightText: 2021 Yannick Goossens +SPDX-FileCopyrightText: 2021 boris runakov +SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 - 2023 Samuel Meenzen +SPDX-FileCopyrightText: 2022 - 2024 Charles Wright +SPDX-FileCopyrightText: 2022 - 2024 László Várady +SPDX-FileCopyrightText: 2022 - 2025 Nikita Chernyi +SPDX-FileCopyrightText: 2022 Arthur Brugière +SPDX-FileCopyrightText: 2022 Devin Dooley +SPDX-FileCopyrightText: 2022 Hefty Zauk +SPDX-FileCopyrightText: 2022 Jim Myhrberg +SPDX-FileCopyrightText: 2022 Jip J. Dekker +SPDX-FileCopyrightText: 2022 Julian Foad +SPDX-FileCopyrightText: 2022 Kim Brose +SPDX-FileCopyrightText: 2022 Marko Weltzer +SPDX-FileCopyrightText: 2022 Shaleen Jain +SPDX-FileCopyrightText: 2022 Vladimir Panteleev +SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +SPDX-FileCopyrightText: 2023 - 2024 Pierre 'McFly' Marty +SPDX-FileCopyrightText: 2023 Antonis Christofides +SPDX-FileCopyrightText: 2023 Benjamin Kampmann +SPDX-FileCopyrightText: 2023 - 2025 Catalan Lover +SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +SPDX-FileCopyrightText: 2023 Johan Swetzén +SPDX-FileCopyrightText: 2023 Kabir Kwatra +SPDX-FileCopyrightText: 2023 Thomas Baer +SPDX-FileCopyrightText: 2024 Chasethechicken +SPDX-FileCopyrightText: 2024 Fabio Bonelli +SPDX-FileCopyrightText: 2024 Igor Goldenberg +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/i18n/bin/extract-translation-templates.sh b/i18n/bin/extract-translation-templates.sh index 3cbaeec8f..f023ea28c 100755 --- a/i18n/bin/extract-translation-templates.sh +++ b/i18n/bin/extract-translation-templates.sh @@ -1,6 +1,8 @@ #!/bin/bash # SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later # This script extracts translation templates (original English strings) into the `translation-templates/` directory. # These templates are later used to generate locale files for each language in the `locales/` directory. diff --git a/i18n/locales/bg/LC_MESSAGES/CHANGELOG.po b/i18n/locales/bg/LC_MESSAGES/CHANGELOG.po index a6080952c..23a80c042 100644 --- a/i18n/locales/bg/LC_MESSAGES/CHANGELOG.po +++ b/i18n/locales/bg/LC_MESSAGES/CHANGELOG.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-22 17:53+0900\n" +"POT-Creation-Date: 2025-01-27 09:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: bg\n" @@ -22,6941 +22,7049 @@ msgstr "" "Generated-By: Babel 2.16.0\n" #: ../../../CHANGELOG.md:1 -msgid "2024-11-26" +msgid "2025-01-27" msgstr "" #: ../../../CHANGELOG.md:3 -msgid "(Backward Compatibility Break) Synapse now defaults to enabling authenticated media" +msgid "Redis and KeyDB are no longer part of the playbook" msgstr "" #: ../../../CHANGELOG.md:5 -msgid "**TLDR**: with this update, your Synapse homeserver will start requiring authentication for newly-uploaded media files. While the majority of the ecosystem (clients, bots, etc.) should support this, certain software may lack support for it (and you may wish to turn it off, if it's causing issues)." +msgid "**TLDR**: The playbook now exclusively uses Valkey as its Redis-compatible memorystore implementation, removing support for Redis and KeyDB. Most users are unaffected by this change unless they explicitly configured Redis or KeyDB variables. Only users that were explicitly definining `redis_*` or `keydb_*` variables will need to update their configuration to use `valkey_*` variables instead." msgstr "" #: ../../../CHANGELOG.md:7 -msgid "The default configuration for the Synapse homeserver now [enforces Authenticated media by default](https://element-hq.github.io/synapse/v1.120/upgrade.html#authenticated-media-is-now-enforced-by-default)." +msgid "The playbook has gone through several iterations of memorystore implementations:" msgstr "" #: ../../../CHANGELOG.md:9 -msgid "Servers like `matrix.org` have already [sunset unauthenticated media](https://matrix.org/blog/2024/06/26/sunsetting-unauthenticated-media/) months ago." +msgid "It initially used Redis, auto-installing it when needed by features/services" +msgstr "" + +#: ../../../CHANGELOG.md:10 +msgid "[Switched to KeyDB](#backward-compatibility-break-the-playbook-now-defaults-to-keydb-instead-of-redis) as the default, while keeping Redis support for those who wished to remain on Redis" msgstr "" #: ../../../CHANGELOG.md:11 -msgid "Now that **various clients, bots, bridges and extra services have caught up with authenticated media support**, Synapse developers seem confident that it's time to enable authenticated media by default." +msgid "[Switched to Valkey](#backward-compatibility-break-the-playbook-now-defaults-to-valkey-instead-of-keydb) due to [KeyDB issues](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3544), while keeping Redis and KeyDB support, for those who wished to remain on them" msgstr "" #: ../../../CHANGELOG.md:13 -msgid "We're changing the playbook configuration for authenticated media to keep up with upstream defaults changing." +msgid "To reduce configuration complexity and maintenance overhead, we are now:" msgstr "" #: ../../../CHANGELOG.md:15 -msgid "Old and unmaintained bridges (like all mx-puppet bridges, etc.) do not support authenticated media. Other software may be similarly affected. If you experience issues with some Matrix-related software, you may wish to disable authenticated media and contact the software maintainers to let them know." +msgid "removing Redis and KeyDB support entirely" msgstr "" -#: ../../../CHANGELOG.md:17 -msgid "You can disable authenticated media at any time by setting `matrix_synapse_enable_authenticated_media: false` in your `vars.yml` configuration file and re-running the playbook." +#: ../../../CHANGELOG.md:16 +msgid "using Valkey as the sole Redis-compatible memorystore implementation" +msgstr "" + +#: ../../../CHANGELOG.md:18 +msgid "To update your configuration:" msgstr "" #: ../../../CHANGELOG.md:20 -msgid "2024-11-23" +msgid "**Most users** don't need to do anything" msgstr "" -#: ../../../CHANGELOG.md:22 -msgid "(Backward Compatibility Break) The playbook now defaults to Valkey, instead of KeyDB" +#: ../../../CHANGELOG.md:21 +msgid "**Users that were explicitly sticking to Redis/KeyDB** need to update their `vars.yml` to use `valkey_*` variables instead" msgstr "" #: ../../../CHANGELOG.md:24 -msgid "**TLDR**: if the playbook installed KeyDB (or Redis) as a dependency for you before, it will now replace it with [Valkey](https://valkey.io/) (a drop-in alternative). We [previously switched from Redis to KeyDB](#backward-compatibility-break-the-playbook-now-defaults-to-keydb-instead-of-redis), but Valkey is a better alternative, so we're switching again." +msgid "2025-01-19" msgstr "" #: ../../../CHANGELOG.md:26 -msgid "The playbook used to install Redis or KeyDB if services have a need for a Redis-compatible implementation ([enabling worker support for Synapse](docs/configuring-playbook-synapse.md#load-balancing-with-workers), [enabling Hookshot encryption](docs/configuring-playbook-bridge-hookshot.md#end-to-bridge-encryption), etc.)." +msgid "conduwuit support" msgstr "" #: ../../../CHANGELOG.md:28 -msgid "Earlier this year, we switched from Redis to KeyDB - see [(Backward Compatibility Break) The playbook now defaults to KeyDB, instead of Redis](#backward-compatibility-break-the-playbook-now-defaults-to-keydb-instead-of-redis)." +msgid "Thanks to [Virkkunen](https://github.com/Virkkunen), we now have optional experimental [conduwuit](https://conduwuit.puppyirl.gay/) homeserver support for new installations." msgstr "" #: ../../../CHANGELOG.md:30 -msgid "Because Valkey seems to be a better successor to Redis (than KeyDB) and likely doesn't suffer from [issues like this one](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3544), we now replace KeyDB with Valkey." +msgid "conduwuit is a fork of [Conduit](./docs/configuring-playbook-conduit.md), which the playbook also supports. See [Differences from upstream Conduit](https://conduwuit.puppyirl.gay/differences.html)." msgstr "" #: ../../../CHANGELOG.md:32 -msgid "Valkey (like KeyDB and Redis in the past) is an implicitly enabled dependency - you don't need custom configuration in `vars.yml` to enable it." +msgid "Existing installations do **not** need to be updated. **Synapse is still the default homeserver implementation** installed by the playbook." msgstr "" #: ../../../CHANGELOG.md:34 -msgid "Next time your run the playbook (via the `setup-all` tag), **KeyDB will be automatically uninstalled and replaced with Valkey**. Some Synapse downtime may occur while the switch happens." +msgid "To try out conduwuit, we recommend that you **use a new server**. Refer to our [Configuring conduwuit](./docs/configuring-playbook-conduwuit.md) guide for details." msgstr "" #: ../../../CHANGELOG.md:36 +msgid "**The homeserver implementation of an existing server cannot be changed** (e.g. from Synapse/Conduit/Dendrite to conduwuit) without data loss." +msgstr "" + +#: ../../../CHANGELOG.md:39 +msgid "2025-01-14" +msgstr "" + +#: ../../../CHANGELOG.md:41 +msgid "(Backward Compatibility Break) Synapse v1.122.0 requires Postgres v13" +msgstr "" + +#: ../../../CHANGELOG.md:43 +msgid "The Synapse homeserver [requires Postgres v13 or newer](https://github.com/element-hq/synapse/issues/18034)." +msgstr "" + +#: ../../../CHANGELOG.md:45 +msgid "If you've been maintaining your setup for a while and you haven't been doing [Postgres upgrades](docs/maintenance-postgres.md#upgrading-postgresql), you may be on an old version of Postgres. The easiest way to check is to see the contents of the `/matrix/postgres/data/PG_VERSION` file." +msgstr "" + +#: ../../../CHANGELOG.md:47 +msgid "If you're on a Postgres version older than v13, you need to [upgrade your Postgres setup](docs/maintenance-postgres.md#upgrading-postgresql) or Synapse will produce an error on startup." +msgstr "" + +#: ../../../CHANGELOG.md:49 +msgid "If you're using an external Postgres server (not installed by this playbook), you'll need to figure out how to upgrade it yourself." +msgstr "" + +#: ../../../CHANGELOG.md:51 +msgid "If you're not ready to upgrade your Postgres setup yet, you can temporarily remain on an old Synapse version by adding the following configuration to your `vars.yml` file:" +msgstr "" + +#: ../../../CHANGELOG.md:59 +msgid "2024-11-26" +msgstr "" + +#: ../../../CHANGELOG.md:61 +msgid "(Backward Compatibility Break) Synapse now defaults to enabling authenticated media" +msgstr "" + +#: ../../../CHANGELOG.md:63 +msgid "**TLDR**: with this update, your Synapse homeserver will start requiring authentication for newly-uploaded media files. While the majority of the ecosystem (clients, bots, etc.) should support this, certain software may lack support for it (and you may wish to turn it off, if it's causing issues)." +msgstr "" + +#: ../../../CHANGELOG.md:65 +msgid "The default configuration for the Synapse homeserver now [enforces Authenticated media by default](https://element-hq.github.io/synapse/v1.120/upgrade.html#authenticated-media-is-now-enforced-by-default)." +msgstr "" + +#: ../../../CHANGELOG.md:67 +msgid "Servers like `matrix.org` have already [sunset unauthenticated media](https://matrix.org/blog/2024/06/26/sunsetting-unauthenticated-media/) months ago." +msgstr "" + +#: ../../../CHANGELOG.md:69 +msgid "Now that **various clients, bots, bridges and extra services have caught up with authenticated media support**, Synapse developers seem confident that it's time to enable authenticated media by default." +msgstr "" + +#: ../../../CHANGELOG.md:71 +msgid "We're changing the playbook configuration for authenticated media to keep up with upstream defaults changing." +msgstr "" + +#: ../../../CHANGELOG.md:73 +msgid "Old and unmaintained bridges (like all mx-puppet bridges, etc.) do not support authenticated media. Other software may be similarly affected. If you experience issues with some Matrix-related software, you may wish to disable authenticated media and contact the software maintainers to let them know." +msgstr "" + +#: ../../../CHANGELOG.md:75 +msgid "You can disable authenticated media at any time by setting `matrix_synapse_enable_authenticated_media: false` in your `vars.yml` configuration file and re-running the playbook." +msgstr "" + +#: ../../../CHANGELOG.md:78 +msgid "2024-11-23" +msgstr "" + +#: ../../../CHANGELOG.md:80 +msgid "(Backward Compatibility Break) The playbook now defaults to Valkey, instead of KeyDB" +msgstr "" + +#: ../../../CHANGELOG.md:82 +msgid "**TLDR**: if the playbook installed KeyDB (or Redis) as a dependency for you before, it will now replace it with [Valkey](https://valkey.io/) (a drop-in alternative). We [previously switched from Redis to KeyDB](#backward-compatibility-break-the-playbook-now-defaults-to-keydb-instead-of-redis), but Valkey is a better alternative, so we're switching again." +msgstr "" + +#: ../../../CHANGELOG.md:84 +msgid "The playbook used to install Redis or KeyDB if services have a need for a Redis-compatible implementation ([enabling worker support for Synapse](docs/configuring-playbook-synapse.md#load-balancing-with-workers), [enabling Hookshot encryption](docs/configuring-playbook-bridge-hookshot.md#end-to-bridge-encryption), etc.)." +msgstr "" + +#: ../../../CHANGELOG.md:86 +msgid "Earlier this year, we switched from Redis to KeyDB — see [(Backward Compatibility Break) The playbook now defaults to KeyDB, instead of Redis](#backward-compatibility-break-the-playbook-now-defaults-to-keydb-instead-of-redis)." +msgstr "" + +#: ../../../CHANGELOG.md:88 +msgid "Because Valkey seems to be a better successor to Redis (than KeyDB) and likely doesn't suffer from [issues like this one](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3544), we now replace KeyDB with Valkey." +msgstr "" + +#: ../../../CHANGELOG.md:90 +msgid "Valkey (like KeyDB and Redis in the past) is an implicitly enabled dependency — you don't need custom configuration in `vars.yml` to enable it." +msgstr "" + +#: ../../../CHANGELOG.md:92 +msgid "Next time your run the playbook (via the `setup-all` tag), **KeyDB will be automatically uninstalled and replaced with Valkey**. Some Synapse downtime may occur while the switch happens." +msgstr "" + +#: ../../../CHANGELOG.md:94 msgid "Users on `arm32` should be aware that there's **neither a prebuilt `arm32` container image for Valkey**, nor the Valkey role supports self-building yet. Users on this architecture likely don't run Synapse with workers, etc., so they're likely in no need of Valkey (or Redis/KeyDB). If Redis is necessary in an `arm32` deployment, disabling Valkey and making the playbook fall back to Redis is possible (see below)." msgstr "" -#: ../../../CHANGELOG.md:38 ../../../CHANGELOG.md:378 +#: ../../../CHANGELOG.md:96 ../../../CHANGELOG.md:436 msgid "**The playbook still supports Redis** and you can keep using Redis (for now) if you'd like, by adding this additional configuration to your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:49 +#: ../../../CHANGELOG.md:107 msgid "**The playbook still supports KeyDB** and you can keep using KeyDB (for now) if you'd like, by adding this additional configuration to your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:59 +#: ../../../CHANGELOG.md:117 msgid "At some point in time in the future, we'll remove both KeyDB and Redis from the playbook, so we recommend that you migrate to Valkey earlier anyway." msgstr "" -#: ../../../CHANGELOG.md:62 +#: ../../../CHANGELOG.md:120 msgid "2024-11-14" msgstr "" -#: ../../../CHANGELOG.md:64 +#: ../../../CHANGELOG.md:122 msgid "HTTP-compression support for Traefik-based setups" msgstr "" -#: ../../../CHANGELOG.md:66 +#: ../../../CHANGELOG.md:124 msgid "The playbook now **automatically enables HTTP-compression support** for major services powered by the playbook, like [Cinny](./docs/configuring-playbook-client-cinny.md), [Element Web](./docs/configuring-playbook-client-element-web.md), [Hydrogen](./docs/configuring-playbook-client-hydrogen.md), as well as for Matrix Client-Server and Federation APIs (`matrix.example.com`)." msgstr "" -#: ../../../CHANGELOG.md:68 +#: ../../../CHANGELOG.md:126 msgid "Other services installed by the playbook are currently not compression-enabled, but may become so over time. This change is rolled out on a per-service basis (as opposed to doing it globally, at the Traefik entrypoint level) to allow certain services or route endpoints which do not behave well when compressed (e.g. [issue 3749](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3749)) to be excluded from compression." msgstr "" -#: ../../../CHANGELOG.md:70 +#: ../../../CHANGELOG.md:128 msgid "A long time ago, various services were operating with `gzip`-compression enabled at the nginx level. Since the switch to Traefik (see [Goodbye, `matrix-nginx-proxy` 🪦](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/57c5271d9d6265a34a9d9cceb93365f685074f96/CHANGELOG.md#goodbye-matrix-nginx-proxy-)), all services (with the exception of Matrix APIs for Synapse worker-enabled setups which are powered by `nginx` via `synapse-reverse-proxy-companion`) have been operating without HTTP-compression support." msgstr "" -#: ../../../CHANGELOG.md:72 +#: ../../../CHANGELOG.md:130 msgid "HTTP-compression is now done via Traefik's [compress](https://doc.traefik.io/traefik/middlewares/http/compress/) middleware. We use the default configuration for this middleware, which enables `zstd`, `br` and `gzip` support (in this order). This middleware's configuration can be configured via variables in the Traefik role (see `traefik_config_http_middlewares_compression_middleware_options`)." msgstr "" -#: ../../../CHANGELOG.md:74 +#: ../../../CHANGELOG.md:132 msgid "If you're using your own Traefik reverse-proxy server ([Traefik managed by you](./docs/configuring-playbook-own-webserver.md#traefik-managed-by-you)) instead of the playbook's integrated Traefik service, you can benefit from the same by:" msgstr "" -#: ../../../CHANGELOG.md:76 +#: ../../../CHANGELOG.md:134 msgid "defining a [compress](https://doc.traefik.io/traefik/middlewares/http/compress/) middleware (via the [file](https://doc.traefik.io/traefik/providers/file/) or [Docker](https://doc.traefik.io/traefik/providers/docker/) providers)" msgstr "" -#: ../../../CHANGELOG.md:77 +#: ../../../CHANGELOG.md:135 msgid "setting `matrix_playbook_reverse_proxy_traefik_middleware_compression_enabled` to `true`" msgstr "" -#: ../../../CHANGELOG.md:78 +#: ../../../CHANGELOG.md:136 msgid "specifying the middleware's name in `matrix_playbook_reverse_proxy_traefik_middleware_compression_name` (e.g. `matrix_playbook_reverse_proxy_traefik_middleware_compression_name: my-compression-middleware@file`)" msgstr "" -#: ../../../CHANGELOG.md:80 +#: ../../../CHANGELOG.md:138 msgid "Timeout adjustments for Traefik-based setups" msgstr "" -#: ../../../CHANGELOG.md:82 +#: ../../../CHANGELOG.md:140 msgid "The playbook now supports configuring various [transport.respondingTimeouts](https://doc.traefik.io/traefik/routing/entrypoints/#respondingtimeouts) timeout values (`readTimeout`, `writeTimeout`, `idleTimeout`) for the `web`, `web-secure` and `matrix-federation` entrypoints." msgstr "" -#: ../../../CHANGELOG.md:84 +#: ../../../CHANGELOG.md:142 msgid "If you're using your own Traefik reverse-proxy server ([Traefik managed by you](./docs/configuring-playbook-own-webserver.md#traefik-managed-by-you)) instead of the playbook's integrated Traefik service, you may wish to do similar configuration changes to your setup manually." msgstr "" -#: ../../../CHANGELOG.md:86 +#: ../../../CHANGELOG.md:144 msgid "The most interesting of these is the `readTimeout` configuration value (the maximum duration for reading the entire request, including the body), which used to default to `60s`. For large and slowly progressing file uploads, `60s` would often not be enough for the transfer to finish and uploads would end up being interrupted. The playbook now raises the `readTimeout` value to 5 minutes (`300s`) to improve this use-case." msgstr "" -#: ../../../CHANGELOG.md:88 +#: ../../../CHANGELOG.md:146 msgid "The `traefik_config_entrypoint_web_transport_respondingTimeouts_*` variables (for the `web` entrypoint) cascade to affecting the timeout values for the `web-secure` and `matrix-federation` entrypoints, so you can easily adjust all timeout values using them." msgstr "" -#: ../../../CHANGELOG.md:90 +#: ../../../CHANGELOG.md:148 msgid "Example of the default timeout values used by the playbook:" msgstr "" -#: ../../../CHANGELOG.md:101 +#: ../../../CHANGELOG.md:159 msgid "Alternatively, you may adjust the timeout values for specific entrypoints (like `web-secure` and `matrix-federation`) using dedicated variables (like `traefik_config_entrypoint_web_secure_transport_respondingTimeouts_readTimeout` and `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_transport_respondingTimeouts_readTimeout`)." msgstr "" -#: ../../../CHANGELOG.md:104 +#: ../../../CHANGELOG.md:162 msgid "2024-11-08" msgstr "" -#: ../../../CHANGELOG.md:106 +#: ../../../CHANGELOG.md:164 msgid "Support for synapse-admin auto-configuration via /.well-known/matrix/client" msgstr "" -#: ../../../CHANGELOG.md:108 +#: ../../../CHANGELOG.md:166 msgid "You can administrate your Synapse-powered homeserver using synapse-admin hosted externally (e.g. [admin.etke.cc](https://admin.etke.cc/)) and the synapse-admin instance would still auto-configure itself correctly for your server by [reading its `/.well-known/matrix/client` file](https://github.com/etkecc/synapse-admin/pull/126)." msgstr "" -#: ../../../CHANGELOG.md:110 +#: ../../../CHANGELOG.md:168 msgid "The playbook now configures the `/.well-known/matrix/client` file for this by default, injecting into it a `cc.etke.synapse-admin` section that contains the full synapse-admin configuration. This is done even if you don't enable the synapse-admin service in your configuration. The reason for always doing it is to allow users to skip the (small) overhead of self-hosting the non-core synapse-admin service, yet still be able to use it from elsewhere when needed." msgstr "" -#: ../../../CHANGELOG.md:112 +#: ../../../CHANGELOG.md:170 msgid "If you don't ever plan on using synapse-admin from other servers (besides your own due to [self-hosting synapse-admin](./docs/configuring-playbook-synapse-admin.md)), you **can disable this** `/.well-known/matrix/client` configuration via `matrix_static_files_file_matrix_client_property_cc_etke_synapse_admin_enabled: false`" msgstr "" -#: ../../../CHANGELOG.md:115 +#: ../../../CHANGELOG.md:173 msgid "2024-10-28" msgstr "" -#: ../../../CHANGELOG.md:117 +#: ../../../CHANGELOG.md:175 msgid "(BC Break) Postmoogle's variable names need adjustments" msgstr "" -#: ../../../CHANGELOG.md:119 +#: ../../../CHANGELOG.md:177 msgid "Due to the recategorization of [Postmoogle](./docs/configuring-playbook-bridge-postmoogle.md) from the bot to the bridge, its variables were renamed (`matrix_bot_postmoogle_` -> `matrix_postmoogle_`). You need to adjust your `vars.yml` configuration accordingly." msgstr "" -#: ../../../CHANGELOG.md:121 +#: ../../../CHANGELOG.md:179 msgid "2024-10-19" msgstr "" -#: ../../../CHANGELOG.md:123 +#: ../../../CHANGELOG.md:181 msgid "Support for Matrix Authentication Service" msgstr "" -#: ../../../CHANGELOG.md:125 +#: ../../../CHANGELOG.md:183 msgid "The playbook now supports installing and configuring [Matrix Authentication Service](./docs/configuring-playbook-matrix-authentication-service.md) (MAS)." msgstr "" -#: ../../../CHANGELOG.md:127 +#: ../../../CHANGELOG.md:185 msgid "Huge thanks to [Quentin Gliech](https://github.com/sandhose) from the [Element](https://element.io/) / [Matrix Authentication Service](https://github.com/element-hq/matrix-authentication-service) team for answering our numerous questions about MAS." msgstr "" -#: ../../../CHANGELOG.md:129 +#: ../../../CHANGELOG.md:187 msgid "This is an **experimental service** and there are **still certain issues with it** (see [Expectations](./docs/configuring-playbook-matrix-authentication-service.md#expectations)). Matrix server administrators should only consider switching if they identify with one or more [reasons to use Matrix Authentication Service](./docs/configuring-playbook-matrix-authentication-service.md#reasons-to-use-matrix-authentication-service). As MAS adoption improves and more services are adjusted to support it, we expect that using MAS will become the norm." msgstr "" -#: ../../../CHANGELOG.md:131 +#: ../../../CHANGELOG.md:189 msgid "Our [Setting up Matrix Authentication Service](./docs/configuring-playbook-matrix-authentication-service.md) documentation page has more details about this new service, what you might expect from the switch and how you can migrate your existing (Synapse) homeserver setup to MAS." msgstr "" -#: ../../../CHANGELOG.md:134 +#: ../../../CHANGELOG.md:192 msgid "2024-09-27" msgstr "" -#: ../../../CHANGELOG.md:136 +#: ../../../CHANGELOG.md:194 msgid "(BC Break) Postgres & Traefik roles have been relocated and variable names need adjustments" msgstr "" -#: ../../../CHANGELOG.md:138 +#: ../../../CHANGELOG.md:196 msgid "Various roles have been relocated from the [devture](https://github.com/devture) organization to the [mother-of-all-self-hosting](https://github.com/mother-of-all-self-hosting) organization." msgstr "" -#: ../../../CHANGELOG.md:140 +#: ../../../CHANGELOG.md:198 msgid "Along with the relocation, the `devture_` prefix was dropped from their variable names, so you need to adjust your `vars.yml` configuration." msgstr "" -#: ../../../CHANGELOG.md:142 +#: ../../../CHANGELOG.md:200 msgid "You need to do the following replacements:" msgstr "" -#: ../../../CHANGELOG.md:144 +#: ../../../CHANGELOG.md:202 msgid "`devture_postgres_` -> `postgres_`" msgstr "" -#: ../../../CHANGELOG.md:145 +#: ../../../CHANGELOG.md:203 msgid "`devture_traefik_` -> `traefik_`" msgstr "" -#: ../../../CHANGELOG.md:147 +#: ../../../CHANGELOG.md:205 msgid "As always, the playbook would let you know about this and point out any variables you may have missed." msgstr "" -#: ../../../CHANGELOG.md:150 +#: ../../../CHANGELOG.md:208 msgid "2024-09-12" msgstr "" -#: ../../../CHANGELOG.md:152 +#: ../../../CHANGELOG.md:210 msgid "Support for baibot" msgstr "" -#: ../../../CHANGELOG.md:154 -msgid "The playbook now supports installing [baibot](./docs/configuring-playbook-bot-baibot.md) (pronounced bye-bot) - a [Matrix](https://matrix.org/) bot developed by [etke.cc](https://etke.cc/) that exposes the power of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) to you. 🤖" +#: ../../../CHANGELOG.md:212 +msgid "The playbook now supports installing [baibot](./docs/configuring-playbook-bot-baibot.md) (pronounced bye-bot) — a [Matrix](https://matrix.org/) bot developed by [etke.cc](https://etke.cc/) that exposes the power of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) to you. 🤖" msgstr "" -#: ../../../CHANGELOG.md:156 +#: ../../../CHANGELOG.md:214 msgid "It supports [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) models, as well as many other [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md)." msgstr "" -#: ../../../CHANGELOG.md:158 +#: ../../../CHANGELOG.md:216 msgid "It's designed as a more private and [✨ featureful](https://github.com/etkecc/baibot/?tab=readme-ov-file#-features) alternative to the now-unmaintained [matrix-chatgpt-bot](./docs/configuring-playbook-bot-chatgpt.md)." msgstr "" -#: ../../../CHANGELOG.md:160 +#: ../../../CHANGELOG.md:218 msgid "To get started, see the [Setting up baibot](./docs/configuring-playbook-bot-baibot.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:162 +#: ../../../CHANGELOG.md:220 msgid "Switching synapse-admin to etke.cc's fork" msgstr "" -#: ../../../CHANGELOG.md:164 +#: ../../../CHANGELOG.md:222 msgid "The playbook now installs [etke.cc](https://etke.cc/)'s [fork](https://github.com/etkecc/synapse-admin) of [synapse-admin](https://github.com/Awesome-Technologies/synapse-admin) (originally developed by [Awesome-Technologies](https://github.com/Awesome-Technologies)). This fork is a drop-in replacement for the original software." msgstr "" -#: ../../../CHANGELOG.md:166 -msgid "The creation of the fork has been provoked by users frequently encountering issues with the original synapse-admin software, such as unintentionally deleting their one-and-only admin user account (fixed [here](https://github.com/etkecc/synapse-admin/pull/1) and also contributed upstream [here](https://github.com/Awesome-Technologies/synapse-admin/pull/608) - to no avail for now). Since its inception, [a bunch of other quality-of-life improvements](https://github.com/etkecc/synapse-admin?tab=readme-ov-file#changes) have been made to the fork." +#: ../../../CHANGELOG.md:224 +msgid "The creation of the fork has been provoked by users frequently encountering issues with the original synapse-admin software, such as unintentionally deleting their one-and-only admin user account (fixed [here](https://github.com/etkecc/synapse-admin/pull/1) and also contributed upstream [here](https://github.com/Awesome-Technologies/synapse-admin/pull/608) — to no avail for now). Since its inception, [a bunch of other quality-of-life improvements](https://github.com/etkecc/synapse-admin?tab=readme-ov-file#changes) have been made to the fork." msgstr "" -#: ../../../CHANGELOG.md:168 +#: ../../../CHANGELOG.md:226 msgid "If upstream synapse-admin picks up the pace and improves, the etke.cc fork may disappear and the playbook may switch to the original software again. Until that time comes, we believe that etke.cc's fork is the better software to use right now." msgstr "" -#: ../../../CHANGELOG.md:170 +#: ../../../CHANGELOG.md:228 msgid "If you'd like to switch back to the original synapse-admin software, you can do so by adding the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:183 +#: ../../../CHANGELOG.md:241 msgid "2024-08-17" msgstr "" -#: ../../../CHANGELOG.md:185 +#: ../../../CHANGELOG.md:243 msgid "New appservice-double-puppet service for better double-puppeting" msgstr "" -#: ../../../CHANGELOG.md:187 +#: ../../../CHANGELOG.md:245 msgid "Mautrix bridges are undergoing large changes as announced in the [August 2024 releases & progress](https://mau.fi/blog/2024-08-mautrix-release/) blog post." msgstr "" -#: ../../../CHANGELOG.md:189 +#: ../../../CHANGELOG.md:247 msgid "The playbook has already upgraded to the rewritten mautrix-slack ([v0.1.0](https://github.com/mautrix/slack/releases/tag/v0.1.0)) and mautrix-signal ([v0.7.0](https://github.com/mautrix/signal/releases/tag/v0.7.0)) bridges." msgstr "" -#: ../../../CHANGELOG.md:191 +#: ../../../CHANGELOG.md:249 msgid "The newly rewritten bridges do not support double-puppeting via [Shared Secret Auth](./docs/configuring-playbook-shared-secret-auth.md) anymore, which has prompted us to switch to the new & better [appservice method](https://docs.mau.fi/bridges/general/double-puppeting.html#appservice-method-new) for double-puppeting. The playbook automates this double-puppeting setup for you if you enable the new [Appservice Double Puppet](./docs/configuring-playbook-appservice-double-puppet.md) service." msgstr "" -#: ../../../CHANGELOG.md:193 +#: ../../../CHANGELOG.md:251 msgid "All non-deprecated mautrix bridges in the playbook have been reworked to support double-puppeting via an Appservice. Most bridges still support double-puppeting via [Shared Secret Auth](./docs/configuring-playbook-shared-secret-auth.md), so the playbook supports it too. If only Shared Secret Auth is enabled, double-puppeting will be configured using that method (for the bridges that support it). That said, **Shared Secret Auth double-puppeting is being phased out and we recommend replacing it with the new Appservice method**." msgstr "" -#: ../../../CHANGELOG.md:195 +#: ../../../CHANGELOG.md:253 msgid "We recommend **enabling double-puppeting via the new Appservice method** by adding the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:201 +#: ../../../CHANGELOG.md:259 msgid "You can still **keep** [Shared Secret Auth](./docs/configuring-playbook-shared-secret-auth.md) enabled. Non-mautrix bridges and other services (e.g. [matrix-corporal](./docs/configuring-playbook-matrix-corporal.md)) may still require it." msgstr "" -#: ../../../CHANGELOG.md:203 +#: ../../../CHANGELOG.md:261 msgid "When both double-puppeting methods are enabled, the playbook will automatically choose the new and better Appservice method for bridges that support it." msgstr "" -#: ../../../CHANGELOG.md:206 +#: ../../../CHANGELOG.md:264 msgid "2024-08-15" msgstr "" -#: ../../../CHANGELOG.md:208 +#: ../../../CHANGELOG.md:266 msgid "matrix-media-repo now configured for Authenticated Media" msgstr "" -#: ../../../CHANGELOG.md:210 +#: ../../../CHANGELOG.md:268 msgid "Thanks to [Michael Hollister](https://github.com/Michael-Hollister) from [FUTO](https://www.futo.org/), our matrix-media-repo implementation now automatically [sets up signing keys](https://docs.t2bot.io/matrix-media-repo/v1.3.5/installation/signing-key/) for Authenticated Media (as per [MSC3916](https://github.com/matrix-org/matrix-spec-proposals/pull/3916))." msgstr "" -#: ../../../CHANGELOG.md:212 +#: ../../../CHANGELOG.md:270 msgid "If you had never heard of Authenticated Media before, the [Sunsetting unauthenticated media](https://matrix.org/blog/2024/06/26/sunsetting-unauthenticated-media/) article on [matrix.org](https://matrix.org/) is a good introduction." msgstr "" -#: ../../../CHANGELOG.md:214 +#: ../../../CHANGELOG.md:272 msgid "This feature is enabled for matrix-media-repo installations by default and will append an additional (matrix-media-repo-generated signing key) to your homeserver's (Synapse or Dendrite) signing key. See the [Signing keys](./docs/configuring-playbook-matrix-media-repo.md#signing-keys) and [Key backup and revoking](./docs/configuring-playbook-matrix-media-repo.md#key-backup-and-revoking) sections of the matrix-media-repo documentation for more details." msgstr "" -#: ../../../CHANGELOG.md:216 +#: ../../../CHANGELOG.md:274 msgid "If you'd like to avoid this new feature, you can disable it by setting `matrix_media_repo_generate_signing_key: false` in your `vars.yml` configuration file." msgstr "" -#: ../../../CHANGELOG.md:219 +#: ../../../CHANGELOG.md:277 msgid "2024-08-08" msgstr "" -#: ../../../CHANGELOG.md:221 +#: ../../../CHANGELOG.md:279 msgid "(Backward Compatibility Break) matrix-corporal has been upgraded to v3" msgstr "" -#: ../../../CHANGELOG.md:223 +#: ../../../CHANGELOG.md:281 msgid "The playbook now installs [matrix-corporal](https://github.com/devture/matrix-corporal) v3.0.0, which brings support for **power-level management** (thanks to [this PR](https://github.com/devture/matrix-corporal/pull/32))." msgstr "" -#: ../../../CHANGELOG.md:225 +#: ../../../CHANGELOG.md:283 msgid "This upgrade necessitates configuration policy changes as described in [matrix-corporal's changelog entry](https://github.com/devture/matrix-corporal/blob/5287cb81c82cd3b951c2a099b4697c3e0b384559/CHANGELOG.md#version-300-2024-08-08)." msgstr "" -#: ../../../CHANGELOG.md:227 +#: ../../../CHANGELOG.md:285 msgid "If you'd like to remain on the old (v2) version of matrix-corporal, you can do so by adding the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:233 +#: ../../../CHANGELOG.md:291 msgid "2024-07-25" msgstr "" -#: ../../../CHANGELOG.md:235 +#: ../../../CHANGELOG.md:293 msgid "synapse-usage-exporter support" msgstr "" -#: ../../../CHANGELOG.md:237 -msgid "Thanks to [Michael Hollister](https://github.com/Michael-Hollister) from [FUTO](https://www.futo.org/), the creators of the [Circles app](https://circu.li/), the playbook can now set up [synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) - a small [Flask](https://flask.palletsprojects.com)-based webservice which can capture usage statistics from Synapse (via HTTP `PUT`) and then make them available for Prometheus to scrape." +#: ../../../CHANGELOG.md:295 +msgid "Thanks to [Michael Hollister](https://github.com/Michael-Hollister) from [FUTO](https://www.futo.org/), the creators of the [Circles app](https://circu.li/), the playbook can now set up [synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) — a small [Flask](https://flask.palletsprojects.com)-based webservice which can capture usage statistics from Synapse (via HTTP `PUT`) and then make them available for Prometheus to scrape." msgstr "" -#: ../../../CHANGELOG.md:239 +#: ../../../CHANGELOG.md:297 msgid "To learn more see our [Enabling synapse-usage-exporter for Synapse usage statistics](docs/configuring-playbook-synapse-usage-exporter.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:242 +#: ../../../CHANGELOG.md:300 msgid "2024-07-06" msgstr "" -#: ../../../CHANGELOG.md:244 +#: ../../../CHANGELOG.md:302 msgid "matrix-alertmanager-receiver support" msgstr "" -#: ../../../CHANGELOG.md:246 +#: ../../../CHANGELOG.md:304 msgid "For those wishing to more easily integrate [Prometheus](https://prometheus.io/)' alerting service ([Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/)) with Matrix, the playbook can now set up [matrix-alertmanager-receiver](https://github.com/metio/matrix-alertmanager-receiver)." msgstr "" -#: ../../../CHANGELOG.md:248 +#: ../../../CHANGELOG.md:306 msgid "See [Setting up Prometheus Alertmanager integration via matrix-alertmanager-receiver](./docs/configuring-playbook-alertmanager-receiver.md) for more details." msgstr "" -#: ../../../CHANGELOG.md:250 +#: ../../../CHANGELOG.md:308 msgid "Traefik v3 and HTTP/3 are here now" msgstr "" -#: ../../../CHANGELOG.md:252 +#: ../../../CHANGELOG.md:310 msgid "**TLDR**: Traefik was migrated from v2 to v3. Minor changes were done to the playbook. Mostly everything else worked out of the box. Most people will not have to do any tweaks to their configuration. In addition, [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) support is now auto-enabled for the `web-secure` (port 443) and `matrix-federation` (port `8448`) entrypoints. If you have a firewall in front of your server and you wish to benefit from `HTTP3`, you will need to open the `443` and `8448` UDP ports in it." msgstr "" -#: ../../../CHANGELOG.md:254 +#: ../../../CHANGELOG.md:312 msgid "Traefik v3" msgstr "" -#: ../../../CHANGELOG.md:256 +#: ../../../CHANGELOG.md:314 msgid "The reverse-proxy that the playbook uses by default (Traefik) has recently been upgraded to v3 (see [this blog post](https://traefik.io/blog/announcing-traefik-proxy-v3-rc/) to learn about its new features). Version 3 includes some small breaking configuration changes requiring a [migration](https://doc.traefik.io/traefik/migration/v2-to-v3/)." msgstr "" -#: ../../../CHANGELOG.md:258 +#: ../../../CHANGELOG.md:316 msgid "We have **updated the playbook to Traefik v3** (make sure to run `just roles` / `make roles` to get it)." msgstr "" -#: ../../../CHANGELOG.md:260 +#: ../../../CHANGELOG.md:318 msgid "There were **only minor playbook changes required** to adapt to Traefik v3, and only to the Ansible role for [matrix-media-repo](./docs/configuring-playbook-matrix-media-repo.md) where we changed a few [`PathPrefix` instances to `PathRegexp`](https://doc.traefik.io/traefik/routing/routers/#path-pathprefix-and-pathregexp), because these instances were using a regular expression instead of a fixed path. For fixed-path values, `PathPrefix` is still the preferred matcher function to use." msgstr "" -#: ../../../CHANGELOG.md:262 +#: ../../../CHANGELOG.md:320 msgid "**Most people using the playbook should not have to do any changes**." msgstr "" -#: ../../../CHANGELOG.md:264 +#: ../../../CHANGELOG.md:322 msgid "If you're using the playbook's Traefik instance to reverse-proxy to some other services of your own (not managed by the playbook), you may wish to review their Traefik labels and make sure they're in line with the [Traefik v2 to v3 migration guide](https://doc.traefik.io/traefik/migration/v2-to-v3/)." msgstr "" -#: ../../../CHANGELOG.md:266 +#: ../../../CHANGELOG.md:324 msgid "If you've tweaked any of this playbook's `_path_prefix` variables and made them use a regular expression, you will now need to make additional adjustments. The playbook makes extensive use of `PathPrefix()` matchers in Traefik rules and `PathPrefix` does not support regular expressions anymore. To work around it, you may now need to override a whole `_traefik_rule` variable and switch it from [`PathPrefix` to `PathRegexp`](https://doc.traefik.io/traefik/routing/routers/#path-pathprefix-and-pathregexp)." msgstr "" -#: ../../../CHANGELOG.md:268 -msgid "If you're not using [matrix-media-repo](./docs/configuring-playbook-matrix-media-repo.md) (the only role we had to tweak to adapt it to Traefik v3), you **may potentially downgrade to Traefik v2** (if necessary) by adding `traefik_verison: v2.11.4` to your configuration. People using `matrix-media-repo` cannot downgrade this way, because `matrix-media-repo` has been adjusted to use `PathRegexp` - a [routing matcher](https://doc.traefik.io/traefik/v2.11/routing/routers/#rule) that Traefik v2 does not understand." +#: ../../../CHANGELOG.md:326 +msgid "If you're not using [matrix-media-repo](./docs/configuring-playbook-matrix-media-repo.md) (the only role we had to tweak to adapt it to Traefik v3), you **may potentially downgrade to Traefik v2** (if necessary) by adding `traefik_verison: v2.11.4` to your configuration. People using `matrix-media-repo` cannot downgrade this way, because `matrix-media-repo` has been adjusted to use `PathRegexp` — a [routing matcher](https://doc.traefik.io/traefik/v2.11/routing/routers/#rule) that Traefik v2 does not understand." msgstr "" -#: ../../../CHANGELOG.md:270 +#: ../../../CHANGELOG.md:328 msgid "HTTP/3 is enabled by default" msgstr "" -#: ../../../CHANGELOG.md:272 +#: ../../../CHANGELOG.md:330 msgid "In Traefik v3, [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) support is no longer considered experimental now. Due to this, **the playbook auto-enables HTTP3** for the `web-secure` (port 443) and `matrix-federation` (port `8448`) entrypoints." msgstr "" -#: ../../../CHANGELOG.md:274 +#: ../../../CHANGELOG.md:332 msgid "HTTP3 uses the UDP protocol and **the playbook (together with Docker) will make sure that the appropriate ports** (`443` over UDP & `8448` over UDP) **are exposed and whitelisted in your server's firewall**. However, **if you have another firewall in front of your server** (as is the case for many cloud providers), **you will need to manually open these UDP ports**." msgstr "" -#: ../../../CHANGELOG.md:276 +#: ../../../CHANGELOG.md:334 msgid "If you do not open the UDP ports correctly or there is some other issue, clients (browsers, mostly) will fall-back to [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) or even [HTTP/1.1](https://en.wikipedia.org/wiki/HTTP)." msgstr "" -#: ../../../CHANGELOG.md:278 +#: ../../../CHANGELOG.md:336 msgid "Still, if HTTP/3 cannot function correctly in your setup, it's best to disable advertising support for it (and misleading clients into trying to use HTTP/3)." msgstr "" -#: ../../../CHANGELOG.md:280 +#: ../../../CHANGELOG.md:338 msgid "To **disable HTTP/3**, you can use the following configuration:" msgstr "" -#: ../../../CHANGELOG.md:294 +#: ../../../CHANGELOG.md:352 msgid "If you are using [your own webserver](./docs/configuring-playbook-own-webserver.md) (in front of Traefik), port binding on UDP port `8448` by default due to HTTP/3 is either unnecessary or [may get in the way](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3402). If it does, you can disable it:" msgstr "" -#: ../../../CHANGELOG.md:307 +#: ../../../CHANGELOG.md:365 msgid "2024-07-01" msgstr "" -#: ../../../CHANGELOG.md:309 +#: ../../../CHANGELOG.md:367 msgid "synapse-admin is now restricted to your homeserver's URL by default" msgstr "" -#: ../../../CHANGELOG.md:311 +#: ../../../CHANGELOG.md:369 msgid "A new feature introduced in synapse-admin [v0.10.0](https://github.com/Awesome-Technologies/synapse-admin/releases/tag/0.10.0) (released and supported by the playbook since a a few months ago) provides the ability to [restrict its usage to a specific homeserver](https://github.com/Awesome-Technologies/synapse-admin/blob/e21e44362c879ac41f47c580b04210842b6ff3d7/README.md#restricting-available-homeserver) (or multiple homeservers)." msgstr "" -#: ../../../CHANGELOG.md:313 +#: ../../../CHANGELOG.md:371 msgid "The playbook has just started making use of this feature. **From now on, your synapse-admin instance will be restricted to the homeserver you're managing via the playbook**. When configured like this, the *Homeserver URL* field in synapse-admin's web UI changes from a text field to a dropdown having a single value (the URL of your homeserver). This makes usage simpler for most people, as they won't need to manually enter a *Homeserver URL* anymore." msgstr "" -#: ../../../CHANGELOG.md:315 +#: ../../../CHANGELOG.md:373 msgid "If you'd like **to go back to the old unrestricted behavior**, use the following configuration:" msgstr "" -#: ../../../CHANGELOG.md:323 +#: ../../../CHANGELOG.md:381 msgid "2024-06-25" msgstr "" -#: ../../../CHANGELOG.md:325 +#: ../../../CHANGELOG.md:383 msgid "The URL-prefix for Hookshot generic webhooks has changed" msgstr "" -#: ../../../CHANGELOG.md:327 +#: ../../../CHANGELOG.md:385 msgid "Until now, generic Hookshot webhook URLs looked like this: `https://matrix.example.com/hookshot/webhooks/:hookId`." msgstr "" -#: ../../../CHANGELOG.md:329 +#: ../../../CHANGELOG.md:387 msgid "The `/hookshot/webhooks` common prefix gets stripped by Traefik automatically, so Hookshot only sees the part that comes after (`/:hookId`)." msgstr "" -#: ../../../CHANGELOG.md:331 +#: ../../../CHANGELOG.md:389 msgid "[A few years ago](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1681), Hookshot started to prefer to handle webhooks at a `/webhook/:hookId` path (instead of directly at `/:hookId`)." msgstr "" -#: ../../../CHANGELOG.md:333 +#: ../../../CHANGELOG.md:391 msgid "To avoid future problems, we've [reconfigured](https://github.com/spantaleev/matrix-docker-ansible-deploy/commit/4704a60718946fd469aeee7fc3ae8127c633bb6b) our Hookshot configuration to use webhook URLs that include `/webhook` in the URL suffix (e.g. `/hookshot/webhooks/webhook/:hookId`, instead of `/hookshot/webhooks/:hookId`). This means that when we strip the common prefi (`/hookshot/webhooks`), we'll end up sending `/webhook/:hookId` to Hookshot, just like recommended." msgstr "" -#: ../../../CHANGELOG.md:335 +#: ../../../CHANGELOG.md:393 msgid "When generating new webhooks, you should start seeing the new URLs being used." msgstr "" -#: ../../../CHANGELOG.md:337 +#: ../../../CHANGELOG.md:395 msgid "**For now**, **both** old URLs (`/hookshot/webhooks/:hookId`) and new URLs (`/hookshot/webhooks/webhook/:hookId`) **continue to work**, so your webhooks will not break just yet." msgstr "" -#: ../../../CHANGELOG.md:339 -msgid "However, **we recommend that you update all your old webhook URLs** (configured in other systems) to include the new `/webhook` path component, so that future Hookshot changes (whenever they come) will not break your webhooks. You don't need to do anything on the Hookshot side - you merely need to reconfigure the remote systems that use your webhook URLs." +#: ../../../CHANGELOG.md:397 +msgid "However, **we recommend that you update all your old webhook URLs** (configured in other systems) to include the new `/webhook` path component, so that future Hookshot changes (whenever they come) will not break your webhooks. You don't need to do anything on the Hookshot side — you merely need to reconfigure the remote systems that use your webhook URLs." msgstr "" -#: ../../../CHANGELOG.md:342 +#: ../../../CHANGELOG.md:400 msgid "2024-06-22" msgstr "" -#: ../../../CHANGELOG.md:344 +#: ../../../CHANGELOG.md:402 msgid "The maubot user is now managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:346 +#: ../../../CHANGELOG.md:404 msgid "To make things easier and to be consistent with other roles, the [maubot](./docs/configuring-playbook-bot-maubot.md) user (`bot.maubot` by default) is [now](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3376) automatically created be the playbook." msgstr "" -#: ../../../CHANGELOG.md:348 +#: ../../../CHANGELOG.md:406 msgid "If you have an existing maubot installation, you will need to specify `matrix_bot_maubot_initial_password` in your `vars.yml` file to make the playbook not complain about it being undefined. Since the bot is already registered in your installation, there's nothing for the playbook to do anyway. In case you don't remember the password you've registered your maubot user account with, you can specify any value for this variable." msgstr "" -#: ../../../CHANGELOG.md:350 +#: ../../../CHANGELOG.md:408 msgid "If you've registered another username for the bot (other than the recommended default of `bot.maubot`), consider adjusting the `matrix_bot_maubot_login` variable (e.g. `matrix_bot_maubot_login: my.maubot.username`)." msgstr "" -#: ../../../CHANGELOG.md:353 +#: ../../../CHANGELOG.md:411 msgid "2024-06-03" msgstr "" -#: ../../../CHANGELOG.md:355 +#: ../../../CHANGELOG.md:413 msgid "WeChat bridging support" msgstr "" -#: ../../../CHANGELOG.md:357 +#: ../../../CHANGELOG.md:415 msgid "Thanks to [Tobias Diez](https://github.com/tobiasdiez)'s [efforts](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3241), the playbook now supports bridging to [WeChat](https://www.wechat.com/) via the [matrix-wechat](https://github.com/duo/matrix-wechat) bridge." msgstr "" -#: ../../../CHANGELOG.md:359 +#: ../../../CHANGELOG.md:417 msgid "See our [Setting up WeChat bridging](docs/configuring-playbook-bridge-wechat.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:362 +#: ../../../CHANGELOG.md:420 msgid "2024-03-26" msgstr "" -#: ../../../CHANGELOG.md:364 +#: ../../../CHANGELOG.md:422 msgid "(Backward Compatibility Break) The playbook now defaults to KeyDB, instead of Redis" msgstr "" -#: ../../../CHANGELOG.md:366 +#: ../../../CHANGELOG.md:424 msgid "**TLDR**: if the playbook used installed Redis as a dependency for you before, it will now replace it with [KeyDB](https://docs.keydb.dev/) (a drop-in alternative) due to [Redis having changed its license](https://redis.com/blog/redis-adopts-dual-source-available-licensing/)." msgstr "" -#: ../../../CHANGELOG.md:368 +#: ../../../CHANGELOG.md:426 msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook now uses [KeyDB](https://docs.keydb.dev/) (a drop-in alternative for Redis), instead of [Redis](https://redis.io/)." msgstr "" -#: ../../../CHANGELOG.md:370 +#: ../../../CHANGELOG.md:428 msgid "The playbook used to install Redis (and now installs KeyDB in its place) if services have a need for it ([enabling worker support for Synapse](docs/configuring-playbook-synapse.md#load-balancing-with-workers), [enabling Hookshot encryption](docs/configuring-playbook-bridge-hookshot.md#end-to-bridge-encryption), etc.) or if you explicitly enabled the service (`redis_enabled: true` or `keydb_enabled: true`)." msgstr "" -#: ../../../CHANGELOG.md:372 +#: ../../../CHANGELOG.md:430 msgid "This change is provoked by the fact that [Redis is now \"source available\"](https://redis.com/blog/redis-adopts-dual-source-available-licensing/). According to the Limitations of [the new license](https://redis.com/legal/rsalv2-agreement/) (as best as we understand them, given that we're not lawyers), using Redis in the playbook (even in a commercial FOSS service like [etke.cc](https://etke.cc/)) does not violate the new Redis license. That said, we'd rather neither risk it, nor endorse shady licenses and products that pretend to be free-software. Another high-quality alternative to Redis seems to be [Dragonfly](https://www.dragonflydb.io/), but the [Dragonfly license](https://github.com/dragonflydb/dragonfly?tab=License-1-ov-file#readme) is no better than Redis's." msgstr "" -#: ../../../CHANGELOG.md:374 +#: ../../../CHANGELOG.md:432 msgid "Next time your run the playbook (via the `setup-all` tag), **Redis will be automatically uninstalled and replaced with KeyDB**. Some Synapse downtime may occur while the switch happens." msgstr "" -#: ../../../CHANGELOG.md:376 +#: ../../../CHANGELOG.md:434 msgid "Users on `arm32` should be aware that there's **neither a prebuilt `arm32` container image for KeyDB**, nor the KeyDB role supports self-building yet. Users on this architecture likely don't run Synapse with workers, etc., so they're likely in no need of KeyDB (or Redis). If Redis is necessary in an `arm32` deployment, disabling KeyDB and making the playbook fall back to Redis is possible (see below)." msgstr "" -#: ../../../CHANGELOG.md:387 +#: ../../../CHANGELOG.md:445 msgid "2024-03-24" msgstr "" -#: ../../../CHANGELOG.md:389 +#: ../../../CHANGELOG.md:447 msgid "Initial work on IPv6 support" msgstr "" -#: ../../../CHANGELOG.md:391 +#: ../../../CHANGELOG.md:449 msgid "Thanks to [Tilo Spannagel](https://github.com/tilosp), the playbook can now enable IPv6 for container networks for various components (roles) via [the `devture_systemd_docker_base_ipv6_enabled` variable](https://github.com/devture/com.devture.ansible.role.systemd_docker_base/blob/c11a526bb8e318b42eb52055056377bb31154f13/defaults/main.yml#L14-L31)." msgstr "" -#: ../../../CHANGELOG.md:393 +#: ../../../CHANGELOG.md:451 msgid "It should be noted that:" msgstr "" -#: ../../../CHANGELOG.md:395 +#: ../../../CHANGELOG.md:453 msgid "Matrix roles (`roles/custom/matrix-*`) respect this variable, but external roles (those defined in `requirements.yml` and installed via `just roles`) do not respect it yet. Additional work is necessary" msgstr "" -#: ../../../CHANGELOG.md:396 +#: ../../../CHANGELOG.md:454 msgid "changing the variable subsequently may not change existing container networks. Refer to [these instructions](https://github.com/devture/com.devture.ansible.role.systemd_docker_base/blob/c11a526bb8e318b42eb52055056377bb31154f13/defaults/main.yml#L26-L30)" msgstr "" -#: ../../../CHANGELOG.md:397 +#: ../../../CHANGELOG.md:455 msgid "this is all very new and untested" msgstr "" -#: ../../../CHANGELOG.md:399 +#: ../../../CHANGELOG.md:457 msgid "Pantalaimon support" msgstr "" -#: ../../../CHANGELOG.md:401 -msgid "Thanks to [Julian Foad](https://matrix.to/#/@julian:foad.me.uk), the playbook can now install the [Pantalaimon](https://github.com/matrix-org/pantalaimon) E2EE aware proxy daemon for you. It's already possible to integrate it with [Draupnir](docs/configuring-playbook-bot-draupnir.md) to allow it to work in E2EE rooms - see our Draupnir docs for details." +#: ../../../CHANGELOG.md:459 +msgid "Thanks to [Julian Foad](https://matrix.to/#/@julian:foad.me.uk), the playbook can now install the [Pantalaimon](https://github.com/matrix-org/pantalaimon) E2EE aware proxy daemon for you. It's already possible to integrate it with [Draupnir](docs/configuring-playbook-bot-draupnir.md) to allow it to work in E2EE rooms — see our Draupnir docs for details." msgstr "" -#: ../../../CHANGELOG.md:403 +#: ../../../CHANGELOG.md:461 msgid "See our [Setting up Pantalaimon](docs/configuring-playbook-pantalaimon.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:406 +#: ../../../CHANGELOG.md:464 msgid "2024-03-05" msgstr "" -#: ../../../CHANGELOG.md:408 +#: ../../../CHANGELOG.md:466 msgid "Support for Draupnir-for-all" msgstr "" -#: ../../../CHANGELOG.md:410 +#: ../../../CHANGELOG.md:468 msgid "Thanks to [FSG-Cat](https://github.com/FSG-Cat), the playbook can now install [Draupnir for all](./docs/configuring-playbook-appservice-draupnir-for-all.md) (aka multi-instance Draupnir running in appservice mode)." msgstr "" -#: ../../../CHANGELOG.md:412 +#: ../../../CHANGELOG.md:470 msgid "This is an alternative to [running Draupnir in bot mode](./docs/configuring-playbook-bot-draupnir.md), which is still supported by the playbook." msgstr "" -#: ../../../CHANGELOG.md:414 +#: ../../../CHANGELOG.md:472 msgid "The documentation page for [Draupnir for all](./docs/configuring-playbook-appservice-draupnir-for-all.md) contains more information on how to install it." msgstr "" -#: ../../../CHANGELOG.md:417 +#: ../../../CHANGELOG.md:475 msgid "2024-02-19" msgstr "" -#: ../../../CHANGELOG.md:419 +#: ../../../CHANGELOG.md:477 msgid "Support for bridging to Facebook/Messenger via the new mautrix-meta bridge" msgstr "" -#: ../../../CHANGELOG.md:421 -msgid "The [mautrix-facebook](./docs/configuring-playbook-bridge-mautrix-facebook.md) and [mautrix-instagram](./docs/configuring-playbook-bridge-mautrix-instagram.md) bridges are being [superseded by a new bridge](https://github.com/mautrix/facebook/issues/332) - the [mautrix-meta](https://github.com/mautrix/meta) bridge." +#: ../../../CHANGELOG.md:479 +msgid "The [mautrix-facebook](./docs/configuring-playbook-bridge-mautrix-facebook.md) and [mautrix-instagram](./docs/configuring-playbook-bridge-mautrix-instagram.md) bridges are being [superseded by a new bridge](https://github.com/mautrix/facebook/issues/332) — the [mautrix-meta](https://github.com/mautrix/meta) bridge." msgstr "" -#: ../../../CHANGELOG.md:423 -msgid "The playbook now supports the new mautrix-meta bridge - a single bridge, which can run in different modes and bridge to Messenger (via [Facebook](https://facebook.com/), Facebook over [Tor](https://www.torproject.org/) or via [Messenger](https://messenger.com/)) and [Instagram](https://instagram.com/). The playbook makes this bridge available via 2 separate Ansible roles, allowing you to easily run 2 instances of mautrix-meta, for bridging to both services at the same time." +#: ../../../CHANGELOG.md:481 +msgid "The playbook now supports the new mautrix-meta bridge — a single bridge, which can run in different modes and bridge to Messenger (via [Facebook](https://facebook.com/), Facebook over [Tor](https://www.torproject.org/) or via [Messenger](https://messenger.com/)) and [Instagram](https://instagram.com/). The playbook makes this bridge available via 2 separate Ansible roles, allowing you to easily run 2 instances of mautrix-meta, for bridging to both services at the same time." msgstr "" -#: ../../../CHANGELOG.md:425 +#: ../../../CHANGELOG.md:483 msgid "If you're using mautrix-facebook or mautrix-instagram right now, **you can still continue using the old bridges, but may wish to change to the new bridge implementations**. See:" msgstr "" -#: ../../../CHANGELOG.md:427 +#: ../../../CHANGELOG.md:485 msgid "[Setting up Instagram bridging via Mautrix Meta](docs/configuring-playbook-bridge-mautrix-meta-instagram.md)" msgstr "" -#: ../../../CHANGELOG.md:429 +#: ../../../CHANGELOG.md:487 msgid "[Setting up Messenger bridging via Mautrix Meta](docs/configuring-playbook-bridge-mautrix-meta-messenger.md)" msgstr "" -#: ../../../CHANGELOG.md:431 +#: ../../../CHANGELOG.md:489 msgid "The documentation pages contain more information on how to migrate." msgstr "" -#: ../../../CHANGELOG.md:434 +#: ../../../CHANGELOG.md:492 msgid "2024-02-14" msgstr "" -#: ../../../CHANGELOG.md:436 +#: ../../../CHANGELOG.md:494 msgid "Much larger Synapse caches and cache auto-tuning enabled by default" msgstr "" -#: ../../../CHANGELOG.md:438 +#: ../../../CHANGELOG.md:496 msgid "Thanks to [FSG-Cat](https://github.com/FSG-Cat), the playbook now uses much larger caches and enables Synapse's [cache auto-tuning functionality](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#caches-and-associated-values). This work and the default values used by the playbook are inspired by [Tom Foster](https://github.com/tcpipuk)'s [Synapse homeserver guide](https://tcpipuk.github.io/synapse/deployment/synapse.html)." msgstr "" -#: ../../../CHANGELOG.md:440 +#: ../../../CHANGELOG.md:498 msgid "The playbook has always used a very conservative cache factor (`matrix_synapse_caches_global_factor`) value of `0.5`, which may be OK for small and underactive deployments, but is not ideal for larger servers. Paradoxically, a small global cache factor value [does not necessarily decrease RAM usage as a whole](https://github.com/matrix-org/synapse/issues/3939)." msgstr "" -#: ../../../CHANGELOG.md:442 +#: ../../../CHANGELOG.md:500 msgid "The playbook now uses **a 20x larger cache factor** (currently `10`), adjusts a few other cache-related variables, and **enables cache auto-tuning** via the following variables:" msgstr "" -#: ../../../CHANGELOG.md:444 -msgid "`matrix_synapse_cache_autotuning_max_cache_memory_usage` - defaults to 1/8 of total RAM with a cap of 2GB; values are specified in bytes" +#: ../../../CHANGELOG.md:502 +msgid "`matrix_synapse_cache_autotuning_max_cache_memory_usage` — defaults to 1/8 of total RAM with a cap of 2GB; values are specified in bytes" msgstr "" -#: ../../../CHANGELOG.md:445 -msgid "`matrix_synapse_cache_autotuning_target_cache_memory_usage` - defaults to 1/16 of total RAM with a cap of 1GB; values are specified in bytes" +#: ../../../CHANGELOG.md:503 +msgid "`matrix_synapse_cache_autotuning_target_cache_memory_usage` — defaults to 1/16 of total RAM with a cap of 1GB; values are specified in bytes" msgstr "" -#: ../../../CHANGELOG.md:446 -msgid "`matrix_synapse_cache_autotuning_min_cache_ttl` - defaults to `30s`" +#: ../../../CHANGELOG.md:504 +msgid "`matrix_synapse_cache_autotuning_min_cache_ttl` — defaults to `30s`" msgstr "" -#: ../../../CHANGELOG.md:448 +#: ../../../CHANGELOG.md:506 msgid "These values should be good defaults for most servers, but may change over time as we experiment further." msgstr "" -#: ../../../CHANGELOG.md:450 +#: ../../../CHANGELOG.md:508 msgid "Refer to our new [Tuning caches and cache autotuning](docs/maintenance-synapse.md#tuning-caches-and-cache-autotuning) documentation section for more details." msgstr "" -#: ../../../CHANGELOG.md:453 +#: ../../../CHANGELOG.md:511 msgid "2024-01-31" msgstr "" -#: ../../../CHANGELOG.md:455 +#: ../../../CHANGELOG.md:513 msgid "(Backward-compatibility break) Minor changes necessary for some people serving a static website at the base domain" msgstr "" -#: ../../../CHANGELOG.md:457 +#: ../../../CHANGELOG.md:515 msgid "This only affects people who are [Serving a static website at the base domain](./docs/configuring-playbook-base-domain-serving.md#serving-a-static-website-at-the-base-domain), but not managing its `index.html` through the playbook." msgstr "" -#: ../../../CHANGELOG.md:459 -msgid "That is, for people who have `matrix_static_files_file_index_html_enabled: false` in their `vars.yml` configuration, the playbook has a new default behavior. Since the playbook is not managing the `index.html` file, it will default to a more sensible way of handling the base domain - redirecting `https://example.com/` to `https://matrix.example.com/`, instead of serving a 404 page." +#: ../../../CHANGELOG.md:517 +msgid "That is, for people who have `matrix_static_files_file_index_html_enabled: false` in their `vars.yml` configuration, the playbook has a new default behavior. Since the playbook is not managing the `index.html` file, it will default to a more sensible way of handling the base domain — redirecting `https://example.com/` to `https://matrix.example.com/`, instead of serving a 404 page." msgstr "" -#: ../../../CHANGELOG.md:461 +#: ../../../CHANGELOG.md:519 msgid "If you are managing your static website by yourself (by dropping files into `/matrix/static-files/public` somehow), then you probably don't wish for such redirection to happen. You can disable it by adding `matrix_static_files_container_labels_base_domain_root_path_redirection_enabled: false` to your `vars.yml` configuration file." msgstr "" -#: ../../../CHANGELOG.md:464 +#: ../../../CHANGELOG.md:522 msgid "2024-01-20" msgstr "" -#: ../../../CHANGELOG.md:466 +#: ../../../CHANGELOG.md:524 msgid "Support for more efficient (specialized) Synapse workers" msgstr "" -#: ../../../CHANGELOG.md:468 +#: ../../../CHANGELOG.md:526 msgid "Thanks to [Charles Wright](https://github.com/cvwright) from [FUTO](https://www.futo.org/), the creators of the [Circles app](https://circu.li/), the playbook has [received support](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3100) for load-balancing the Synapse workload via [specialized workers](./docs/configuring-playbook-synapse.md#specialized-workers) which are supposed to work better than our old [generic workers](./docs/configuring-playbook-synapse.md#generic-workers) implementation." msgstr "" -#: ../../../CHANGELOG.md:470 +#: ../../../CHANGELOG.md:528 msgid "For now, playbook defaults remain unchanged and the `one-of-each` [workers preset](./docs/configuring-playbook-synapse.md#worker-presets) continues being the default. However, the default may change in the future. If you'd like to remain on this preset even if/when the defaults change, consider explicitly adding `matrix_synapse_workers_preset: one-of-each` to your `vars.yml` configuration." msgstr "" -#: ../../../CHANGELOG.md:472 +#: ../../../CHANGELOG.md:530 msgid "Our specialized workers setup is based on recommendations found in [Tom Foster](https://github.com/tcpipuk)'s [Synapse homeserver guide](https://tcpipuk.github.io/synapse/index.html). What's special about our new setup is that we try to parse information out of the request (who the user is; which room is being operated on) and try to forward similar requests to the same worker. As an example, this means that once a worker caches some room information, subsequent requests for the same room will be routed to the same worker (which supposedly still has the room's state cached)." msgstr "" -#: ../../../CHANGELOG.md:474 +#: ../../../CHANGELOG.md:532 msgid "To get started, refer to our [Specialized workers](./docs/configuring-playbook-synapse.md#specialized-workers) documentation section." msgstr "" -#: ../../../CHANGELOG.md:477 +#: ../../../CHANGELOG.md:535 msgid "2024-01-17" msgstr "" -#: ../../../CHANGELOG.md:479 +#: ../../../CHANGELOG.md:537 msgid "Switching to Element's AGPLv3-licensed Synapse release" msgstr "" -#: ../../../CHANGELOG.md:481 +#: ../../../CHANGELOG.md:539 msgid "A few months ago, the [Element](https://element.io/) company has [announced](https://element.io/blog/element-to-adopt-agplv3/) that their work on the Synapse homeserver would no longer be available under the permissive [Apache-2.0 license](https://www.apache.org/licenses/LICENSE-2.0), but only under:" msgstr "" -#: ../../../CHANGELOG.md:483 -msgid "the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.en.html) free-software license - the same license that this Ansible playbook has always used" +#: ../../../CHANGELOG.md:541 +msgid "the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.en.html) free-software license — the same license that this Ansible playbook has always used" msgstr "" -#: ../../../CHANGELOG.md:484 +#: ../../../CHANGELOG.md:542 msgid "a proprietary license, for those wishing for Element to [sell them an exception](https://gnu.org/philosophy/selling-exceptions.html) to the AGPLv3 license" msgstr "" -#: ../../../CHANGELOG.md:486 +#: ../../../CHANGELOG.md:544 msgid "You can also learn more in [this post](https://matrix.org/blog/2023/11/06/future-of-synapse-dendrite/) by the Matrix Foundation." msgstr "" -#: ../../../CHANGELOG.md:488 +#: ../../../CHANGELOG.md:546 msgid "The change has [already happened](https://element.io/blog/synapse-now-lives-at-github-com-element-hq-synapse/) and the first Synapse release under the new license is here: [v1.99.0](https://github.com/element-hq/synapse/releases/tag/v1.99.0)." msgstr "" -#: ../../../CHANGELOG.md:490 +#: ../../../CHANGELOG.md:548 msgid "There is no up-to-date alternative Synapse fork right now and this free-software (AGPLv3-licensed) playbook is definitely not against free-software licenses, so we are now switching to the Element-maintained Synapse release." msgstr "" -#: ../../../CHANGELOG.md:492 +#: ../../../CHANGELOG.md:550 msgid "**What does this mean to you?**" msgstr "" -#: ../../../CHANGELOG.md:494 +#: ../../../CHANGELOG.md:552 msgid "For most home users, it doesn't mean anything. Your installation will continue working as it should and you don't need to do anything." msgstr "" -#: ../../../CHANGELOG.md:496 +#: ../../../CHANGELOG.md:554 msgid "For people building commercial products on top of Synapse, they may have to either buy a license exception from Element (from what we hear, the fee depends on the number of monthly-active users on your instance) or they may need to release all related code as free-software (which is what we've been doing at [etke.cc](https://etke.cc/) ([here](https://gitlab.com/etke.cc)) all along)." msgstr "" -#: ../../../CHANGELOG.md:498 +#: ../../../CHANGELOG.md:556 msgid "We're no lawyers and this changelog entry does not aim to give you the best legal advice, so please research on your own!" msgstr "" -#: ../../../CHANGELOG.md:500 +#: ../../../CHANGELOG.md:558 msgid "If you'd like to continue using the old Apache-2.0-licensed Synapse (for a while longer anyway), the playbook makes it possible by intruducing a new Ansible variable. You can do it like this:" msgstr "" -#: ../../../CHANGELOG.md:512 +#: ../../../CHANGELOG.md:570 msgid "Notes:" msgstr "" -#: ../../../CHANGELOG.md:514 -msgid "if you had already upgraded Synapse to `v1.99.0` by running this playbook, you will still be able to downgrade to `v1.98.0`, because both releases use the same database schema version (`SCHEMA_COMPAT_VERSION = 83` - see [here for v1.98.0](https://github.com/element-hq/synapse/blob/v1.98.0/synapse/storage/schema/__init__.py#L131-L134) and [here for v1.99.0](https://github.com/element-hq/synapse/blob/v1.99.0/synapse/storage/schema/__init__.py#L137-L140)). More details on Synapse's database schema are available [here](https://element-hq.github.io/synapse/develop/development/database_schema.html). It appears that there are no new database migrations introduced in `v1.99.0`, so going back to the older release is possible. This is not guaranteed to hold true for future Synapse releases, so if you're seeing this early-enough, consider pinning the version and organization before re-running the playbook and getting upgraded to the latest version" +#: ../../../CHANGELOG.md:572 +msgid "if you had already upgraded Synapse to `v1.99.0` by running this playbook, you will still be able to downgrade to `v1.98.0`, because both releases use the same database schema version (`SCHEMA_COMPAT_VERSION = 83` — see [here for v1.98.0](https://github.com/element-hq/synapse/blob/v1.98.0/synapse/storage/schema/__init__.py#L131-L134) and [here for v1.99.0](https://github.com/element-hq/synapse/blob/v1.99.0/synapse/storage/schema/__init__.py#L137-L140)). More details on Synapse's database schema are available [here](https://element-hq.github.io/synapse/develop/development/database_schema.html). It appears that there are no new database migrations introduced in `v1.99.0`, so going back to the older release is possible. This is not guaranteed to hold true for future Synapse releases, so if you're seeing this early-enough, consider pinning the version and organization before re-running the playbook and getting upgraded to the latest version" msgstr "" -#: ../../../CHANGELOG.md:516 +#: ../../../CHANGELOG.md:574 msgid "running an outdated homeserver exposes you to security issues and incompatibilities. Only consider doing this as a short-term solution." msgstr "" -#: ../../../CHANGELOG.md:518 +#: ../../../CHANGELOG.md:576 msgid "2024-01-16" msgstr "" -#: ../../../CHANGELOG.md:520 +#: ../../../CHANGELOG.md:578 msgid "`Draupnir` has been relicensed to AFL-3.0" msgstr "" -#: ../../../CHANGELOG.md:522 +#: ../../../CHANGELOG.md:580 msgid "As of [#204](https://github.com/the-draupnir-project/Draupnir/pull/204) Draupnir changed its licence to AFL-3.0 from the CSL licence. This change affects playbook users who could not run Draupnir under the old license restrictions. The new license is considerably less restrictive and is OSI approved. Draupnir version v1.86.0 and later are covered by this license change." msgstr "" -#: ../../../CHANGELOG.md:524 +#: ../../../CHANGELOG.md:582 msgid "2024-01-15" msgstr "" -#: ../../../CHANGELOG.md:526 +#: ../../../CHANGELOG.md:584 msgid "Goodbye, `matrix-nginx-proxy` 🪦" msgstr "" -#: ../../../CHANGELOG.md:528 +#: ../../../CHANGELOG.md:586 msgid "**TLDR**: All traces of the `matrix-nginx-proxy` reverse-proxy component are now gone. This brought about many other internal changes (and security improvements), so setups may need minor adjustments or suffer some (temporary) breakage. People who have been on the Traefik-native setup may upgrade without much issues. Those running their own Traefik instance may need minor changes. People who have been postponing the migration away from `matrix-nginx-proxy` (for more than a year already!) will now finally need to do something about it." msgstr "" -#: ../../../CHANGELOG.md:530 +#: ../../../CHANGELOG.md:588 msgid "Backstory on `matrix-nginx-proxy`" msgstr "" -#: ../../../CHANGELOG.md:532 -msgid "We gather here today to celebrate the loss of a once-beloved component in our stack - `matrix-nginx-proxy`. It's been our [nginx](https://nginx.org/)-based reverse-proxy of choice since the [first commit](https://github.com/spantaleev/matrix-docker-ansible-deploy/tree/87f5883f2455fb115457b65f267f17de305c053c) of this playbook, 7 years ago." +#: ../../../CHANGELOG.md:590 +msgid "We gather here today to celebrate the loss of a once-beloved component in our stack — `matrix-nginx-proxy`. It's been our [nginx](https://nginx.org/)-based reverse-proxy of choice since the [first commit](https://github.com/spantaleev/matrix-docker-ansible-deploy/tree/87f5883f2455fb115457b65f267f17de305c053c) of this playbook, 7 years ago." msgstr "" -#: ../../../CHANGELOG.md:534 -msgid "For 6 years, `matrix-nginx-proxy` has been the front-most reverse-proxy in our setup (doing SSL termination, etc.). After [transitioning to Traefik last year](#traefik-is-the-default-reverse-proxy-now), `matrix-nginx-proxy` took a step back. Nevertheless, since it was so ingrained into the playbook, it still remained in use - even if only internally. Despite our warnings of its imminent death, many of you have indubitably continued to use it instead of Traefik. Its suffering continued for too long, because it served many different purposes and massive effort was required to transition them to others." +#: ../../../CHANGELOG.md:592 +msgid "For 6 years, `matrix-nginx-proxy` has been the front-most reverse-proxy in our setup (doing SSL termination, etc.). After [transitioning to Traefik last year](#traefik-is-the-default-reverse-proxy-now), `matrix-nginx-proxy` took a step back. Nevertheless, since it was so ingrained into the playbook, it still remained in use — even if only internally. Despite our warnings of its imminent death, many of you have indubitably continued to use it instead of Traefik. Its suffering continued for too long, because it served many different purposes and massive effort was required to transition them to others." msgstr "" -#: ../../../CHANGELOG.md:536 +#: ../../../CHANGELOG.md:594 msgid "To us, `matrix-nginx-proxy` was:" msgstr "" -#: ../../../CHANGELOG.md:538 +#: ../../../CHANGELOG.md:596 msgid "an [nginx](https://nginx.org/)-based reverse-proxy" msgstr "" -#: ../../../CHANGELOG.md:539 -msgid "an Ansible role organizing the work of [certbot](https://certbot.eff.org/) - retrieving free [Let's Encrypt](https://letsencrypt.org/) SSL certificates for `matrix-nginx-proxy` and for the [Coturn TURN server](./docs/configuring-playbook-turn.md)" +#: ../../../CHANGELOG.md:597 +msgid "an Ansible role organizing the work of [certbot](https://certbot.eff.org/) — retrieving free [Let's Encrypt](https://letsencrypt.org/) SSL certificates for `matrix-nginx-proxy` and for the [coturn TURN server](./docs/configuring-playbook-turn.md)" msgstr "" -#: ../../../CHANGELOG.md:540 +#: ../../../CHANGELOG.md:598 msgid "a central component for reverse-proxying to the [long list of services](./docs/configuring-playbook.md) supported by the playbook. As such, it became a dependency that all these services had to inject themselves into during runtime" msgstr "" -#: ../../../CHANGELOG.md:541 +#: ../../../CHANGELOG.md:599 msgid "an intermediary through which addons (bridges, bots) communicated with the homeserver. Going through an intermediary (instead of directly talking to the homeserver) is useful when certain components (like [matrix-media-repo](./docs/configuring-playbook-matrix-media-repo.md) or [matrix-corporal](./docs/configuring-playbook-matrix-corporal.md)) are enabled, because it lets these services \"steal routes\" from the homeserver" msgstr "" -#: ../../../CHANGELOG.md:542 +#: ../../../CHANGELOG.md:600 msgid "a webserver for serving the `/.well-known/matrix` static files (generated by the `matrix-base` role until now)" msgstr "" -#: ../../../CHANGELOG.md:543 +#: ../../../CHANGELOG.md:601 msgid "a webserver [serving your base domain](./docs/configuring-playbook-base-domain-serving.md) (and also generating the `index.html` page for it)" msgstr "" -#: ../../../CHANGELOG.md:544 +#: ../../../CHANGELOG.md:602 msgid "a central component providing global [HTTP Basic Auth](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication) password-protection for all `/metrics` endpoints when metrics were exposed publicly for consumption from a remote Prometheus server" msgstr "" -#: ../../../CHANGELOG.md:546 +#: ../../../CHANGELOG.md:604 msgid "Talk about a jack of all trades! The [UNIX philosophy](https://en.wikipedia.org/wiki/Unix_philosophy) (and Docker container philosophy) of \"do one thing and do it well\" had been severely violated for too long." msgstr "" -#: ../../../CHANGELOG.md:548 +#: ../../../CHANGELOG.md:606 msgid "On a related note, we also had a large chain of reverse-proxies in the mix. In the worst case, it was something like this: (Traefik -> `matrix-nginx-proxy:8080` -> `matrix-nginx-proxy:12080` -> `matrix-synapse-reverse-proxy-companion:8008` -> `matrix-synapse:8008`)." msgstr "" -#: ../../../CHANGELOG.md:550 -msgid "Due to complexity and the playbook's flexibility (trying to accommodate a mix of tens of components), many layers of indirection were necessary. We do like reverse-proxies, but.. not quite enough to enjoy going through a chain of ~4 of them before reaching the target service." +#: ../../../CHANGELOG.md:608 +msgid "Due to complexity and the playbook's flexibility (trying to accommodate a mix of tens of components), many layers of indirection were necessary. We do like reverse-proxies, but… not quite enough to enjoy going through a chain of ~4 of them before reaching the target service." msgstr "" -#: ../../../CHANGELOG.md:552 +#: ../../../CHANGELOG.md:610 msgid "After **a ton of work** in the last weeks (200+ commits, which changed 467 files - 8684 insertions and 8913 deletions), **we're finally saying goodbye** to `matrix-nginx-proxy`." msgstr "" -#: ../../../CHANGELOG.md:554 +#: ../../../CHANGELOG.md:612 msgid "Going Traefik-native and cutting out all middlemen" msgstr "" -#: ../../../CHANGELOG.md:556 +#: ../../../CHANGELOG.md:614 msgid "In our new setup, you'll see the bare minimum number of reverse-proxies." msgstr "" -#: ../../../CHANGELOG.md:558 +#: ../../../CHANGELOG.md:616 msgid "In most cases, there's only Traefik and all services being registered directly with it. When [Synapse workers](./docs/configuring-playbook-synapse.md#load-balancing-with-workers) are enabled, `matrix-synapse-reverse-proxy-companion` remains as an extra reverse-proxy that requests go through (for load-balancing to the correct Synapse worker), but in all other cases services are exposed directly." msgstr "" -#: ../../../CHANGELOG.md:560 +#: ../../../CHANGELOG.md:618 msgid "This reduces \"network\" hops (improving performance) and also decreases the number of components (containers). Each Ansible role in our setup is now independent and doesn't need to interact with other roles during runtime." msgstr "" -#: ../../../CHANGELOG.md:562 +#: ../../../CHANGELOG.md:620 msgid "Traefik now has an extra job" msgstr "" -#: ../../../CHANGELOG.md:564 -msgid "Previously, **Traefik had a single purpose** - being the main reverse-proxy. It was either front-most (terminating SSL, etc.) or you were [fronting Traefik with your own other reverse-proxy](./docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy). In any case - it had this central (yet decentralized) job." +#: ../../../CHANGELOG.md:622 +msgid "Previously, **Traefik had a single purpose** — being the main reverse-proxy. It was either front-most (terminating SSL, etc.) or you were [fronting Traefik with your own other reverse-proxy](./docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy). In any case — it had this central (yet decentralized) job." msgstr "" -#: ../../../CHANGELOG.md:566 -msgid "Now, **Traefik has one more role** - it serves as an intermediary which allows addon services (bridges, bots, etc.) to communicate with the homeserver. As mentioned above, such an intermediary service is not strictly necessary in all kinds of setups, but more complex setups (including [matrix-media-repo](./docs/configuring-playbook-matrix-media-repo.md) or [matrix-corporal](./docs/configuring-playbook-matrix-corporal.md)) benefit from it." +#: ../../../CHANGELOG.md:624 +msgid "Now, **Traefik has one more role** — it serves as an intermediary which allows addon services (bridges, bots, etc.) to communicate with the homeserver. As mentioned above, such an intermediary service is not strictly necessary in all kinds of setups, but more complex setups (including [matrix-media-repo](./docs/configuring-playbook-matrix-media-repo.md) or [matrix-corporal](./docs/configuring-playbook-matrix-corporal.md)) benefit from it." msgstr "" -#: ../../../CHANGELOG.md:568 +#: ../../../CHANGELOG.md:626 msgid "To perform this new role, Traefik now has a new internal [entrypoint](https://doc.traefik.io/traefik/routing/entrypoints/) called `matrix-internal-matrix-client-api`. All homeservers (Conduit, Dendrite, Synapse and even `matrix-synapse-reverse-proxy-companion`) and homeserver-related core services ([matrix-media-repo](./docs/configuring-playbook-matrix-media-repo.md), [matrix-corporal](./docs/configuring-playbook-matrix-corporal.md) and potentially others) register their routes (using [container labels](https://docs.docker.com/config/labels-custom-metadata/)) not only on the public entrypoints (`web-secure`, `matrix-federation`), but also on this new internal entrypoint." msgstr "" -#: ../../../CHANGELOG.md:570 +#: ../../../CHANGELOG.md:628 msgid "Doing so, services can contact Traefik on this entrypoint's dedicated port (the URL defaults to `http://matrix-traefik:8008`) and reach the homeserver Client-Server API as they expect. Internally, Traefik takes care of the routing to the correct service." msgstr "" -#: ../../../CHANGELOG.md:572 +#: ../../../CHANGELOG.md:630 msgid "We've also considered keeping it simple and having services talk to the homeserver over the public internet (e.g. `https://matrix.example.com`) thus reusing all existing Traefik routing labels. In this scenario, performance was incredibly poor (e.g. 70 rps, instead of 1400 rps) due to TLS and networking overhead. The need for fast internal communication (via the new internal non-TLS-enabled Traefik entrypoint) is definitely there. In our benchmarks, Traefik even proved more efficient than nginx at doing this: ~1200 rps for Traefik compared to ~900 rps for nginx (out of ~1400 rps when talking to the Synapse homeserver directly)." msgstr "" -#: ../../../CHANGELOG.md:574 +#: ../../../CHANGELOG.md:632 msgid "Traefik serving this second purpose has a few downsides:" msgstr "" -#: ../../../CHANGELOG.md:576 +#: ../../../CHANGELOG.md:634 msgid "Traefik becomes a runtime dependency for all homeserver-dependant container services" msgstr "" -#: ../../../CHANGELOG.md:577 +#: ../../../CHANGELOG.md:635 msgid "all homeserver-dependant services now need to be connected to the `traefik` container network, even if they don't need public internet exposure" msgstr "" -#: ../../../CHANGELOG.md:579 +#: ../../../CHANGELOG.md:637 msgid "Despite these downsides (which the playbook manages automatically), we believe it's still a good compromise given the amount of complexity it eliminates and the performance benefits it yields. One alternative we've [considered](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3045#issuecomment-1867327001) was adding a new intermediary service (e.g. `matrix-homeserver-proxy` powered by nginx), but this both had much higher complexity (one more component in the mix; duplication of effort to produce nginx-compatible route definitions for it) and slightly worse performance (see above)." msgstr "" -#: ../../../CHANGELOG.md:581 +#: ../../../CHANGELOG.md:639 msgid "People running the default Traefik setup do not need to do anything to make Traefik take on this extra job. Your Traefik configuration will be updated automatically." msgstr "" -#: ../../../CHANGELOG.md:583 +#: ../../../CHANGELOG.md:641 msgid "**People runnning their own Traefik reverse-proxy need to do [minor adjustments](#people-managing-their-own-traefik-instance-need-to-do-minor-changes)**, as described in the section below." msgstr "" -#: ../../../CHANGELOG.md:585 +#: ../../../CHANGELOG.md:643 msgid "You may disable Traefik acting as an intermediary by explicitly setting `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_enabled` to `false`. Services would then be configured to talk to the homeserver directly, giving you a slight performance boost and a \"simpler\" Traefik setup. However, such a configuration is less tested and will cause troubles, especially if you enable more services (like `matrix-media-repo`, etc.) in the future. As such, it's not recommended." msgstr "" -#: ../../../CHANGELOG.md:587 +#: ../../../CHANGELOG.md:645 msgid "People managing their own Traefik instance need to do minor changes" msgstr "" -#: ../../../CHANGELOG.md:589 +#: ../../../CHANGELOG.md:647 msgid "This section is for people [managing their own Traefik instance on the Matrix server](./docs/configuring-playbook-own-webserver.md#traefik-managed-by-you). Those [using Traefik managed by the playbook](./docs/configuring-playbook-own-webserver.md#traefik-managed-by-the-playbook) don't need to do any changes." msgstr "" -#: ../../../CHANGELOG.md:591 +#: ../../../CHANGELOG.md:649 msgid "Because [Traefik has an extra job now](#traefik-now-has-an-extra-job), you need to adapt your configuration to add the additional `matrix-internal-matrix-client-api` entrypoint and potentially configure the `matrix_playbook_reverse_proxy_container_network` variable. See the [Traefik managed by you](./docs/configuring-playbook-own-webserver.md#traefik-managed-by-you) documentation section for more details." msgstr "" -#: ../../../CHANGELOG.md:593 +#: ../../../CHANGELOG.md:651 msgid "People fronting Traefik with another reverse proxy need to do minor changes" msgstr "" -#: ../../../CHANGELOG.md:595 +#: ../../../CHANGELOG.md:653 msgid "We've already previously mentioned that you need to do some minor [configuration changes related to `traefik_additional_entrypoints_auto`](#backward-compatibility-configuration-changes-required-for-people-fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy)." msgstr "" -#: ../../../CHANGELOG.md:597 +#: ../../../CHANGELOG.md:655 msgid "If you don't do these changes (switching from `traefik_additional_entrypoints_auto` to multiple other variables), your Traefik setup will not automatically receive the new `matrix-internal-matrix-client-api` Traefik entrypoint and Traefik would not be able to perform [its new duty of connecting addons with the homeserver](#traefik-now-has-an-extra-job)." msgstr "" -#: ../../../CHANGELOG.md:599 +#: ../../../CHANGELOG.md:657 msgid "Supported reverse proxy types are now fewer" msgstr "" -#: ../../../CHANGELOG.md:601 -msgid "This section is for people using a more custom reverse-proxy setup - those having `matrix_playbook_reverse_proxy_type` set to a value different than the default (`playbook-managed-traefik`)." +#: ../../../CHANGELOG.md:659 +msgid "This section is for people using a more custom reverse-proxy setup — those having `matrix_playbook_reverse_proxy_type` set to a value different than the default (`playbook-managed-traefik`)." msgstr "" -#: ../../../CHANGELOG.md:603 +#: ../../../CHANGELOG.md:661 msgid "Previously, we allowed you to set `matrix_playbook_reverse_proxy_type` to 7 different values to accommodate various reverse-proxy setups." msgstr "" -#: ../../../CHANGELOG.md:605 +#: ../../../CHANGELOG.md:663 msgid "The complexity of this is too high, so we only support 3 values right now:" msgstr "" -#: ../../../CHANGELOG.md:607 +#: ../../../CHANGELOG.md:665 msgid "(the default) `playbook-managed-traefik`, when you're [using Traefik managed by the playbook](./docs/configuring-playbook-own-webserver.md#traefik-managed-by-the-playbook)" msgstr "" -#: ../../../CHANGELOG.md:608 +#: ../../../CHANGELOG.md:666 msgid "`other-traefik-container`, when you're [managing your own Traefik instance on the Matrix server](./docs/configuring-playbook-own-webserver.md#traefik-managed-by-you)" msgstr "" -#: ../../../CHANGELOG.md:609 +#: ../../../CHANGELOG.md:667 msgid "`none`, when you wish for [no reverse-proxy integration to be done at all](./docs/configuring-playbook-own-webserver.md#using-no-reverse-proxy-on-the-matrix-side-at-all)" msgstr "" -#: ../../../CHANGELOG.md:611 +#: ../../../CHANGELOG.md:669 msgid "The `none` value is not recommended and may not work adequately, due to lack of testing and [Traefik's new responsibilities](#traefik-now-has-an-extra-job) in our setup." msgstr "" -#: ../../../CHANGELOG.md:613 +#: ../../../CHANGELOG.md:671 msgid "**Previous values that are now gone** (and the playbook would report them as such) are: `playbook-managed-nginx`, `other-nginx-non-container`, `other-on-same-host` and `other-on-another-host`." msgstr "" -#: ../../../CHANGELOG.md:615 +#: ../../../CHANGELOG.md:673 msgid "If you were using these values as a way to stay away from Traefik, you now have 2 options:" msgstr "" -#: ../../../CHANGELOG.md:617 +#: ../../../CHANGELOG.md:675 msgid "(recommended) [Fronting Traefik with another reverse-proxy](./docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy)" msgstr "" -#: ../../../CHANGELOG.md:618 +#: ../../../CHANGELOG.md:676 msgid "(not recommended) [Using no reverse-proxy on the Matrix side at all](./docs/configuring-playbook-own-webserver.md#using-no-reverse-proxy-on-the-matrix-side-at-all) and reverse-proxying to each and every service manually" msgstr "" -#: ../../../CHANGELOG.md:620 +#: ../../../CHANGELOG.md:678 msgid "Container networking changes" msgstr "" -#: ../../../CHANGELOG.md:622 +#: ../../../CHANGELOG.md:680 msgid "Now that `matrix-nginx-proxy` is not in the mix, it became easier to clear out some other long-overdue technical debt." msgstr "" -#: ../../../CHANGELOG.md:624 +#: ../../../CHANGELOG.md:682 msgid "Since the very beginning of this playbook, all playbook services were connected to a single (shared) `matrix` container network. Later on, some additional container networks appeared, but most services (database, etc.) still remained in the `matrix` container network. This meant that any random container in this network could try to talk (or attack) the Postgres database operating in the same `matrix` network." msgstr "" -#: ../../../CHANGELOG.md:626 -msgid "Moving components (especially the database) into other container networks was difficult - it required changes to many other components to ensure correct connectivity." +#: ../../../CHANGELOG.md:684 +msgid "Moving components (especially the database) into other container networks was difficult — it required changes to many other components to ensure correct connectivity." msgstr "" -#: ../../../CHANGELOG.md:628 +#: ../../../CHANGELOG.md:686 msgid "All the hard work has been done now. We've added much more isolation between services by splitting them up into separate networks (`matrix-homeserver`, `matrix-addons`, `matrix-monitoring`, `matrix-exim-relay`, etc). Components are only joined to the networks they need and should (for the most part) not be able to access unrelated things." msgstr "" -#: ../../../CHANGELOG.md:630 +#: ../../../CHANGELOG.md:688 msgid "Carrying out these container networking changes necessitated modifying many components, so **we're hoping not too many bugs were introduced in the process**." msgstr "" -#: ../../../CHANGELOG.md:632 +#: ../../../CHANGELOG.md:690 msgid "We've refrained from creating too many container networks (e.g. one for each component), to avoid exhausting Docker's default network pool and contaminating the container networks list too much." msgstr "" -#: ../../../CHANGELOG.md:634 +#: ../../../CHANGELOG.md:692 msgid "Metrics exposure changes" msgstr "" -#: ../../../CHANGELOG.md:636 +#: ../../../CHANGELOG.md:694 msgid "This section is for people who are exposing monitoring metrics publicly, to be consumed by an external Prometheus server." msgstr "" -#: ../../../CHANGELOG.md:638 +#: ../../../CHANGELOG.md:696 msgid "Previously, `matrix-nginx-proxy` was potentially password-protecting all `/metrics/*` endpoints with the same username and password (specified as plain-text in your `vars.yml` configuration file)." msgstr "" -#: ../../../CHANGELOG.md:640 -msgid "From now on, there are new variables for doing roughly the same - `matrix_metrics_exposure_enabled`, `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users`. See the [Prometheus & Grafana](./docs/configuring-playbook-prometheus-grafana.md) docs page for details." +#: ../../../CHANGELOG.md:698 +msgid "From now on, there are new variables for doing roughly the same — `matrix_metrics_exposure_enabled`, `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users`. See the [Prometheus & Grafana](./docs/configuring-playbook-prometheus-grafana.md) docs page for details." msgstr "" -#: ../../../CHANGELOG.md:642 +#: ../../../CHANGELOG.md:700 msgid "`matrix-nginx-proxy` is not acting as a \"global guardian\" anymore. Now, each role provides its own metrics exposure and protection by registering with Traefik. Nevertheless, all roles are wired (via playbook configuration in `group_vars/matrix_servers`) to obey these new `matrix_metrics_exposure_*` variables. We've eliminated the centralization, but have kept the ease of use. Now, you can also do per-service password-protection (with different credentials), should you need to do that for some reason." msgstr "" -#: ../../../CHANGELOG.md:644 -msgid "The playbook will tell you about all variables that you need to migrate during runtime, so rest assured - you shouldn't be able to miss anything!" +#: ../../../CHANGELOG.md:702 +msgid "The playbook will tell you about all variables that you need to migrate during runtime, so rest assured — you shouldn't be able to miss anything!" msgstr "" -#: ../../../CHANGELOG.md:646 +#: ../../../CHANGELOG.md:704 msgid "Matrix static files" msgstr "" -#: ../../../CHANGELOG.md:648 +#: ../../../CHANGELOG.md:706 msgid "As mentioned above, static files like `/.well-known/matrix/*` or your base domain's `index.html` file (when [serving the base domain via the Matrix server](./docs/configuring-playbook-base-domain-serving.md) was enabled) were generated by the `matrix-base` or `matrix-nginx-proxy` roles and put into a `/matrix/static-files` directory on the server. Then `matrix-nginx-proxy` was serving all these static files." msgstr "" -#: ../../../CHANGELOG.md:650 +#: ../../../CHANGELOG.md:708 msgid "All of this has been extracted into a new `matrix-static-files` Ansible role that's part of the playbook. The static files generated by this new role still live at roughly the same place (`/matrix/static-files/public` directory, instead of `/matrix/static-files`)." msgstr "" -#: ../../../CHANGELOG.md:652 +#: ../../../CHANGELOG.md:710 msgid "The playbook will migrate and update the `/.well-known/matrix/*` files automatically but not your own files in `nginx-proxy/data/matrix-domain/` you will need to back these up yourself otherwise they will be lost. It will also warn you about usage of old variable names, so you can adapt to the new names." msgstr "" -#: ../../../CHANGELOG.md:654 +#: ../../../CHANGELOG.md:712 msgid "A note on performance" msgstr "" -#: ../../../CHANGELOG.md:656 +#: ../../../CHANGELOG.md:714 msgid "Some of you have been voicing their concerns (for a long time) about Traefik being too slow and nginx being better." msgstr "" -#: ../../../CHANGELOG.md:658 +#: ../../../CHANGELOG.md:716 msgid "Some online benchmarks support this by demonstrating slightly higher SSL-termination performance in favor of nginx. The upcoming Traefik v3 release is [said to](https://medium.com/beyn-technology/is-nginx-dead-is-traefik-v3-20-faster-than-traefik-v2-f28ffb7eed3e) improve Traefik's SSL performance by some 20%, but that still ends up being somewhat slower than nginx." msgstr "" -#: ../../../CHANGELOG.md:660 +#: ../../../CHANGELOG.md:718 msgid "We believe that using Traefik provides way too many benefits to worry about this minor performance impairment." msgstr "" -#: ../../../CHANGELOG.md:662 +#: ../../../CHANGELOG.md:720 msgid "The heaviest part of running a Matrix homeserver is all the slow and potentially inefficient things the homeserver (e.g. Synapse) is doing. These things affect performance much more than whatever reverse-proxy is in front. Your server will die the same way by joining the famously large **Matrix HQ** room, no matter which reverse-proxy you put in front." msgstr "" -#: ../../../CHANGELOG.md:664 -msgid "Even our previously mentioned benchmarks (yielding ~1300 rps) are synthetic - hitting a useless `/_matrix/client/versions` endpoint. Real-use does much more than this." +#: ../../../CHANGELOG.md:722 +msgid "Even our previously mentioned benchmarks (yielding ~1300 rps) are synthetic — hitting a useless `/_matrix/client/versions` endpoint. Real-use does much more than this." msgstr "" -#: ../../../CHANGELOG.md:666 -msgid "If this is still not convincing enough for you and you want the best possible performance, consider [Fronting Traefik with another reverse-proxy](./docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) (thus having the slowest part - SSL termination - happen elsewhere) or [Using no reverse-proxy on the Matrix side at all](./docs/configuring-playbook-own-webserver.md#using-no-reverse-proxy-on-the-matrix-side-at-all). The playbook will not get in your way of doing that, but these options may make your life much harder. Performance comes at a cost, after all." +#: ../../../CHANGELOG.md:724 +msgid "If this is still not convincing enough for you and you want the best possible performance, consider [Fronting Traefik with another reverse-proxy](./docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) (thus having the slowest part — SSL termination — happen elsewhere) or [Using no reverse-proxy on the Matrix side at all](./docs/configuring-playbook-own-webserver.md#using-no-reverse-proxy-on-the-matrix-side-at-all). The playbook will not get in your way of doing that, but these options may make your life much harder. Performance comes at a cost, after all." msgstr "" -#: ../../../CHANGELOG.md:668 +#: ../../../CHANGELOG.md:726 msgid "Migration procedure" msgstr "" -#: ../../../CHANGELOG.md:670 +#: ../../../CHANGELOG.md:728 msgid "The updated playbook will automatically perform some migration tasks for you:" msgstr "" -#: ../../../CHANGELOG.md:672 +#: ../../../CHANGELOG.md:730 msgid "It will stop and remove the `matrix-nginx-proxy` systemd service and container for you. This behavior cannot be disabled. It's essential that this service gets stopped, because it remaining running (and having container labels) may confuse Traefik as to where to route HTTP requests." msgstr "" -#: ../../../CHANGELOG.md:674 +#: ../../../CHANGELOG.md:732 msgid "It will delete the `/matrix/nginx-proxy` directory and all files within it. You can disable this behavior by adding `matrix_playbook_migration_matrix_nginx_proxy_uninstallation_enabled: false` to your `vars.yml` configuration file. Doing so will leave its data around." msgstr "" -#: ../../../CHANGELOG.md:676 +#: ../../../CHANGELOG.md:734 msgid "It will delete the `/matrix/ssl` directory and all files within it. You can disable this behavior by adding `matrix_playbook_migration_matrix_ssl_uninstallation_enabled: false` to your `vars.yml` configuration file. If you have some important certificates there for some reason, take them out or temporarily disable removal of these files until you do." msgstr "" -#: ../../../CHANGELOG.md:678 -msgid "It will tell you about all variables (`matrix_nginx_proxy_*` and many others - even from other roles) that have changed during this large nginx-elimination upgrade. You can disable this behavior by adding `matrix_playbook_migration_matrix_nginx_proxy_elimination_variable_transition_checks_enabled: false` to your `vars.yml` configuration file." +#: ../../../CHANGELOG.md:736 +msgid "It will tell you about all variables (`matrix_nginx_proxy_*` and many others — even from other roles) that have changed during this large nginx-elimination upgrade. You can disable this behavior by adding `matrix_playbook_migration_matrix_nginx_proxy_elimination_variable_transition_checks_enabled: false` to your `vars.yml` configuration file." msgstr "" -#: ../../../CHANGELOG.md:680 +#: ../../../CHANGELOG.md:738 msgid "It will tell you about any leftover `matrix_nginx_proxy_*` variables in your `vars.yml` file. You can disable this behavior by adding `matrix_playbook_migration_matrix_nginx_proxy_leftover_variable_validation_checks_enabled: false` to your `vars.yml` configuration file." msgstr "" -#: ../../../CHANGELOG.md:682 +#: ../../../CHANGELOG.md:740 msgid "It will tell you about any leftover `matrix_ssl_*` variables in your `vars.yml` file. You can disable this behavior by adding `matrix_playbook_migration_matrix_ssl_leftover_variable_checks_enabled: false` to your `vars.yml` configuration file." msgstr "" -#: ../../../CHANGELOG.md:684 +#: ../../../CHANGELOG.md:742 msgid "We don't recommend changing these variables and suppressing warnings, unless you know what you're doing." msgstr "" -#: ../../../CHANGELOG.md:686 +#: ../../../CHANGELOG.md:744 msgid "**Most people should just upgrade as per-normal**, bearing in mind that a lot has changed and some issues may arise. The playbook would guide you through renamed variables automatically." msgstr "" -#: ../../../CHANGELOG.md:688 +#: ../../../CHANGELOG.md:746 msgid "Conclusion" msgstr "" -#: ../../../CHANGELOG.md:690 +#: ../../../CHANGELOG.md:748 msgid "Thousands of lines of code were changed across hundreds of files. All addons (bridges, bots) were rewired in terms of container networking and in terms of how they reach the homeserver." msgstr "" -#: ../../../CHANGELOG.md:692 +#: ../../../CHANGELOG.md:750 msgid "I don't actively use all the ~100 components offered by the playbook (no one does), nor do I operate servers exercising all edge-cases. As such, issues may arise. Please have patience and report (or try to fix) these issues!" msgstr "" -#: ../../../CHANGELOG.md:695 +#: ../../../CHANGELOG.md:753 msgid "2024-01-14" msgstr "" -#: ../../../CHANGELOG.md:697 +#: ../../../CHANGELOG.md:755 msgid "(Backward Compatibility) Configuration changes required for people fronting the integrated reverse-proxy webserver with another reverse-proxy" msgstr "" -#: ../../../CHANGELOG.md:699 +#: ../../../CHANGELOG.md:757 msgid "If you're on the default setup (using the Traefik reverse-proxy as installed by the playbook), you don't need to do anything." msgstr "" -#: ../../../CHANGELOG.md:701 +#: ../../../CHANGELOG.md:759 msgid "People who are [Fronting the integrated Traefik reverse-proxy webserver with another reverse-proxy](./docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy), as per our previous instructions are redefining `traefik_additional_entrypoints_auto` in their `vars.yml` configuration." msgstr "" -#: ../../../CHANGELOG.md:703 +#: ../../../CHANGELOG.md:761 msgid "Such a full variable redefinion is intrustive, because it prevents the playbook from injecting additional entrypoints into the Traefik webserver. In the future, the playbook may have a need to do so." msgstr "" -#: ../../../CHANGELOG.md:705 +#: ../../../CHANGELOG.md:763 msgid "For this reason, we no longer recommend completely redefining `traefik_additional_entrypoints_auto`. The playbook now defines [various `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_*` variables in the `defaults/main.yml` file](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/roles/custom/matrix-base/defaults/main.yml) of the `matrix-base` role which can be used as a safer alternative to `traefik_additional_entrypoints_auto`." msgstr "" -#: ../../../CHANGELOG.md:707 +#: ../../../CHANGELOG.md:765 msgid "Adapt your configuration as seen below:" msgstr "" -#: ../../../CHANGELOG.md:740 +#: ../../../CHANGELOG.md:798 msgid "Also, feel free to read the [Fronting the integrated Traefik reverse-proxy webserver with another reverse-proxy](./docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) documentation section again for additional details." msgstr "" -#: ../../../CHANGELOG.md:743 +#: ../../../CHANGELOG.md:801 msgid "2024-01-13" msgstr "" -#: ../../../CHANGELOG.md:745 +#: ../../../CHANGELOG.md:803 msgid "matrix-reminder-bot update with more secure (backward-incompatible) default settings" msgstr "" -#: ../../../CHANGELOG.md:747 +#: ../../../CHANGELOG.md:805 msgid "**TLDR**: your updated (to [v0.3.0](https://github.com/anoadragon453/matrix-reminder-bot/releases/tag/v0.3.0)) [matrix-reminder-bot](./docs/configuring-playbook-bot-matrix-reminder-bot.md) is now more secure. By default, like other bridges/bots managed by the playbook, it will only provide its services to users of your own server (not to anyone, even across the Matrix Federation). If that's fine, there's nothing you need to do." msgstr "" -#: ../../../CHANGELOG.md:749 +#: ../../../CHANGELOG.md:807 msgid "Maintenance of [matrix-reminder-bot](./docs/configuring-playbook-bot-matrix-reminder-bot.md) has been picked up by [Kim Brose](https://github.com/HarHarLinks) and [@svierne](https://github.com/svierne)." msgstr "" -#: ../../../CHANGELOG.md:751 +#: ../../../CHANGELOG.md:809 msgid "Thanks to them, a new [v0.3.0](https://github.com/anoadragon453/matrix-reminder-bot/releases/tag/v0.3.0) release is out. The new version is now available for the ARM64 architecture, so playbook users on this architecture will no longer need to wait for [self-building](./docs/self-building.md) to happen." msgstr "" -#: ../../../CHANGELOG.md:753 +#: ../../../CHANGELOG.md:811 msgid "The new version also comes with new `allowlist` and `blocklist` settings, which make it possible to restrict who can use the bot. Previously anyone, even across the Matrix Federation could talk to it and schedule reminders." msgstr "" -#: ../../../CHANGELOG.md:755 +#: ../../../CHANGELOG.md:813 msgid "The playbook defaults all bridges and bots (where possible) to only be exposed to users of the current homeserver, not users across federation. Thanks to the new version of this bot making such a restriction possible, we're now making use of it. The playbook (via its `group_vars/matrix_servers` file) automatically enables the `allowlist` (`matrix_bot_matrix_reminder_bot_allowlist_enabled: true`) and configures it in such a way (`matrix_bot_matrix_reminder_bot_allowlist_regexes_auto`) so as to restrict the bot to your homeserver's users." msgstr "" -#: ../../../CHANGELOG.md:757 +#: ../../../CHANGELOG.md:815 msgid "If you need **to undo or tweak these security improvements**, you can change your `vars.yml` file to:" msgstr "" -#: ../../../CHANGELOG.md:759 +#: ../../../CHANGELOG.md:817 msgid "disable the allowlist (`matrix_bot_matrix_reminder_bot_allowlist_enabled: false`), making the bot allow usage by anyone, anywhere" msgstr "" -#: ../../../CHANGELOG.md:761 +#: ../../../CHANGELOG.md:819 msgid "inject additional allowed servers or users by adding **additional** (on top of the default allowlist in `matrix_bot_matrix_reminder_bot_allowlist_regexes_auto`) custom regexes in the `matrix_bot_matrix_reminder_bot_allowlist_regexes_custom` list variable (see the [syntax reference](https://github.com/anoadragon453/matrix-reminder-bot/blob/1e910c0aa3469d280d93ee7e6c6d577227a3460c/sample.config.yaml#L43-L49))" msgstr "" -#: ../../../CHANGELOG.md:763 +#: ../../../CHANGELOG.md:821 msgid "override the default allowlist (in the `group_vars/matrix_servers` file) by redefining `matrix_bot_matrix_reminder_bot_allowlist_regexes_auto`" msgstr "" -#: ../../../CHANGELOG.md:766 +#: ../../../CHANGELOG.md:824 msgid "2024-01-05" msgstr "" -#: ../../../CHANGELOG.md:768 +#: ../../../CHANGELOG.md:826 msgid "matrix-mailer has been replaced by the exim-relay external role" msgstr "" -#: ../../../CHANGELOG.md:770 ../../../CHANGELOG.md:1410 +#: ../../../CHANGELOG.md:828 ../../../CHANGELOG.md:1468 msgid "We're continuing our effort to make [the playbook use external roles for some things](#the-playbook-now-uses-external-roles-for-some-things), so as to avoid doing everything ourselves and to facilitate code re-use." msgstr "" -#: ../../../CHANGELOG.md:772 +#: ../../../CHANGELOG.md:830 msgid "The `matrix-mailer` role has been moved to its own repository ([ansible-role-exim-relay](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay)) that this playbook now includes." msgstr "" -#: ../../../CHANGELOG.md:774 +#: ../../../CHANGELOG.md:832 msgid "To migrate:" msgstr "" -#: ../../../CHANGELOG.md:776 +#: ../../../CHANGELOG.md:834 msgid "pull the playbook changes, as usual" msgstr "" -#: ../../../CHANGELOG.md:777 +#: ../../../CHANGELOG.md:835 msgid "update your roles (run `just roles` or `make roles`)" msgstr "" -#: ../../../CHANGELOG.md:778 +#: ../../../CHANGELOG.md:836 msgid "update your `vars.yml`, renaming `matrix_mailer`-prefixed variables to `exim_relay`-prefixed ones (e.g. `matrix_mailer_sender_address` -> `exim_relay_sender_address`). If you find none, it means you're using the default configuration and your migraiton job is even simpler." msgstr "" -#: ../../../CHANGELOG.md:779 +#: ../../../CHANGELOG.md:837 msgid "re-run the playbook (`install-all` or `setup-all`)" msgstr "" -#: ../../../CHANGELOG.md:781 +#: ../../../CHANGELOG.md:839 msgid "The playbook will take care of stopping the old `matrix-mailer` systemd service, relocating its directory and restarting it under the new name (`matrix-exim-relay.service`)." msgstr "" -#: ../../../CHANGELOG.md:784 +#: ../../../CHANGELOG.md:842 msgid "2024-01-02" msgstr "" -#: ../../../CHANGELOG.md:786 +#: ../../../CHANGELOG.md:844 msgid "mautrix-signal now powered by the new Go-based bridge" msgstr "" -#: ../../../CHANGELOG.md:788 +#: ../../../CHANGELOG.md:846 msgid "The old Python-based [mautrix-signal](https://github.com/mautrix/signal) bridge is no longer maintained upstream. It's also known to have issues linking new devices." msgstr "" -#: ../../../CHANGELOG.md:790 +#: ../../../CHANGELOG.md:848 msgid "It seems like the path forward is to switch to the new mautrix-signal bridge written in Golang, which we did thanks to [PR #3031](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3041) by [Pierre 'McFly' Marty](https://github.com/pm-McFly)." msgstr "" -#: ../../../CHANGELOG.md:792 +#: ../../../CHANGELOG.md:850 msgid "The playbook should **automatically migrate your mautrix-signal installation to the new bridge code**. You will **need to relink all your devices** to continue your bridged conversations." msgstr "" -#: ../../../CHANGELOG.md:795 +#: ../../../CHANGELOG.md:853 msgid "2023-10-23" msgstr "" -#: ../../../CHANGELOG.md:797 +#: ../../../CHANGELOG.md:855 msgid "Enabling `allow_public_rooms_over_federation` by default for Synapse" msgstr "" -#: ../../../CHANGELOG.md:799 +#: ../../../CHANGELOG.md:857 msgid "**TDLR**: if your Matrix server is federating (which it mostly likely is, unless you've [disabled federation](docs/configuring-playbook-federation.md#disabling-federation)), your public rooms will not only be joinable across federation (as they've always been), but from now on will be discoverable (made available as a list across federation). We're changing this by flipping the value for Synapse's `allow_public_rooms_over_federation` setting to `true`, going against the upstream default. Servers that disable federation are not affected. Servers that have public rooms which are not published to the room directory are also not affected." msgstr "" -#: ../../../CHANGELOG.md:801 -msgid "We generally try to stick to the default configuration for Synapse (and all other components), unless these defaults seem wrong or harmful. One such previous case from a few months ago was us [Enabling `forget_rooms_on_leave` by default for Synapse](#enabling-forget_rooms_on_leave-by-default-for-synapse) - the default value was making Synapse more wasteful of resources by default." +#: ../../../CHANGELOG.md:859 +msgid "We generally try to stick to the default configuration for Synapse (and all other components), unless these defaults seem wrong or harmful. One such previous case from a few months ago was us [Enabling `forget_rooms_on_leave` by default for Synapse](#enabling-forget_rooms_on_leave-by-default-for-synapse) — the default value was making Synapse more wasteful of resources by default." msgstr "" -#: ../../../CHANGELOG.md:803 +#: ../../../CHANGELOG.md:861 msgid "Today, we're going against upstream defaults again and flipping the `allow_public_rooms_over_federation` configuration option to `true`. This way, public rooms on your server will be made discoverable by others via federation, using the [`GET /_matrix/federation/v1/publicRooms` of the Server-Server API](https://spec.matrix.org/v1.8/server-server-api/#get_matrixfederationv1publicrooms)." msgstr "" -#: ../../../CHANGELOG.md:805 +#: ../../../CHANGELOG.md:863 msgid "The upstream Synapse default is `false` (disabled), so that public rooms are not exposed for other servers to discover (learn about their existence). Nevertheless, even if these rooms are not exposed (listed) for discovery, they are **still joinable** by anyone who knows their address or is invited to the room by an existing member." msgstr "" -#: ../../../CHANGELOG.md:807 -msgid "**We go against the upstream default** in an effort to make Matrix federation more useful - a public room should be globally public - not only joinable, but also discoverable across federation." +#: ../../../CHANGELOG.md:865 +msgid "**We go against the upstream default** in an effort to make Matrix federation more useful — a public room should be globally public — not only joinable, but also discoverable across federation." msgstr "" -#: ../../../CHANGELOG.md:809 +#: ../../../CHANGELOG.md:867 msgid "The **historical reasoning** behind this change is as follows:" msgstr "" -#: ../../../CHANGELOG.md:811 -msgid "`allow_public_rooms_over_federation` seems to have been enabled by default for Synapse until v1.7.0 (~2019), just like we believe it should be for a globally-federating network - rooms should be joinable and discoverable across federation." +#: ../../../CHANGELOG.md:869 +msgid "`allow_public_rooms_over_federation` seems to have been enabled by default for Synapse until v1.7.0 (~2019), just like we believe it should be for a globally-federating network — rooms should be joinable and discoverable across federation." msgstr "" -#: ../../../CHANGELOG.md:813 +#: ../../../CHANGELOG.md:871 msgid "In Synapse v1.7.0 (~2019), `allow_public_rooms_over_federation` [got disabled](https://github.com/element-hq/synapse/blob/e9069c9f919685606506f04527332e83fbfa44d9/docs/upgrade.md?plain=1#L1877-L1891) by default in a [security-by-obscurity](https://en.wikipedia.org/wiki/Security_through_obscurity) workaround for misconfigured servers. See the [Avoiding unwelcome visitors on private Matrix servers](https://matrix.org/blog/2019/11/09/avoiding-unwelcome-visitors-on-private-matrix-servers/) `matrix.org` blog article. We believe that people wishing for a truly private server, should [disable federation](docs/configuring-playbook-federation.md#disabling-federation), instead of having a fully-federating server and trying to hide its public rooms. We also provide other workarounds below. We (and the Synapse team, obviously) believe that Matrix should federate by default, so federating the public room list seems to make sense." msgstr "" -#: ../../../CHANGELOG.md:815 +#: ../../../CHANGELOG.md:873 #, python-format msgid "[etke.cc](https://etke.cc/) has been developing the free-software [Matrix Rooms Search](https://github.com/etkecc/mrs) project for a while now. One public (demo) instance of it is hosted at [matrixrooms.info](https://matrixrooms.info/). This search engine tries to go through the Matrix federation and discover & index public rooms to allow people to find them. We believe it's vital for Matrix (and any chat or social network for that matter) to be more discoverable, so that people can find communities and others to talk to. Today (on 23rd of October 2023), `matrixrooms.info` is indexing `23066` Matrix servers. Of these, only `1567` servers (7%) are making their public rooms discoverable. Who knows what wonderful communities and rooms are available on these 93% other Matrix servers that are supposedly federating, but are still gate-keeping their public room list. Indubitably, many of these servers are hosted via matrix-docker-ansible-deploy, so we feel partially responsible for making Matrix federation less useful." msgstr "" -#: ../../../CHANGELOG.md:817 +#: ../../../CHANGELOG.md:875 msgid "Here are **actions you may wish to take** as a result of this change:" msgstr "" -#: ../../../CHANGELOG.md:819 +#: ../../../CHANGELOG.md:877 msgid "(recommended) embrace the new default. If your Matrix server is federating, your public rooms have always been joinable across federation anyway. Exposing the list of public rooms does no harm and more-so does good by contributing to the usefulness of the Matrix network by facilitating room discovery." msgstr "" -#: ../../../CHANGELOG.md:821 -msgid "(switch to a better way of doings things on your semi-private server) The problem that the Synapse team appears to have solved by flipping the `allow_public_rooms_over_federation` default in Synapse v1.7.0 seems to for \"mostly private\" servers, which federate and have a bunch of rooms made public (and published in their room directory) in an effort to allow people on the same homeserver to easily find and join them (self-onboarding). With the introduction of Matrix Spaces, you can reorganize your flow around spaces - you can auto-join your users to a Matrix Space (via Synapse's `auto_join_rooms` setting - controlled by our `matrix_synapse_auto_join_rooms` variable), then add a bunch of rooms to the space and make them joinable by people belonging to the space. That is to say, do not make rooms public and do not publish them to the room directory unless they are really public. Instead, use other mechanisms for semi-public rooms or private rooms. One alternative is to stick to what you're doing (public rooms published to your rooms directory) but having a `m.federate: true` flag set during creation (clients like Element Web have a nice UI checkbox for this) to explicitly disable federation for them." +#: ../../../CHANGELOG.md:879 +msgid "(switch to a better way of doings things on your semi-private server) The problem that the Synapse team appears to have solved by flipping the `allow_public_rooms_over_federation` default in Synapse v1.7.0 seems to for \"mostly private\" servers, which federate and have a bunch of rooms made public (and published in their room directory) in an effort to allow people on the same homeserver to easily find and join them (self-onboarding). With the introduction of Matrix Spaces, you can reorganize your flow around spaces — you can auto-join your users to a Matrix Space (via Synapse's `auto_join_rooms` setting — controlled by our `matrix_synapse_auto_join_rooms` variable), then add a bunch of rooms to the space and make them joinable by people belonging to the space. That is to say, do not make rooms public and do not publish them to the room directory unless they are really public. Instead, use other mechanisms for semi-public rooms or private rooms. One alternative is to stick to what you're doing (public rooms published to your rooms directory) but having a `m.federate: true` flag set during creation (clients like Element Web have a nice UI checkbox for this) to explicitly disable federation for them." msgstr "" -#: ../../../CHANGELOG.md:823 +#: ../../../CHANGELOG.md:881 msgid "(keeping the old behavior) if you wish to keep doing what you're doing (keeping your Matrix server federating, but hiding its public rooms list), add `matrix_synapse_allow_public_rooms_over_federation: false` to your `vars.yml` configuration. This restores the old behavior. You may also consider [disabling federation](docs/configuring-playbook-federation.md#disabling-federation) completely instead of relying on security-by-obscurity measures." msgstr "" -#: ../../../CHANGELOG.md:826 +#: ../../../CHANGELOG.md:884 msgid "2023-10-18" msgstr "" -#: ../../../CHANGELOG.md:828 +#: ../../../CHANGELOG.md:886 msgid "Postgres parameters are automatically tuned now" msgstr "" -#: ../../../CHANGELOG.md:830 +#: ../../../CHANGELOG.md:888 msgid "The playbook has provided some hints about [Tuning PostgreSQL](docs/maintenance-postgres.md#tuning-postgresql) for quite a while now." msgstr "" -#: ../../../CHANGELOG.md:832 +#: ../../../CHANGELOG.md:890 msgid "From now on, the [Postgres Ansible role](https://github.com/mother-of-all-self-hosting/ansible-role-postgres) automatically tunes your Postgres configuration with the same [calculation logic](https://github.com/le0pard/pgtune/blob/master/src/features/configuration/configurationSlice.js) that powers https://pgtune.leopard.in.ua/." msgstr "" -#: ../../../CHANGELOG.md:834 +#: ../../../CHANGELOG.md:892 msgid "Our [Tuning PostgreSQL](docs/maintenance-postgres.md#tuning-postgresql) documentation page has details about how you can turn auto-tuning off or adjust the automatically-determined Postgres configuration parameters manually." msgstr "" -#: ../../../CHANGELOG.md:836 +#: ../../../CHANGELOG.md:894 msgid "People who [enable load-balancing with Synapse workers](docs/configuring-playbook-synapse.md#load-balancing-with-workers) no longer need to increase the maximum number of Postgres connections manually (previously done via `postgres_process_extra_arguments`). There's a new variable (`postgres_max_connections`) for controlling this number and the playbook automatically raises its value from `200` to `500` for setups which enable workers." msgstr "" -#: ../../../CHANGELOG.md:839 +#: ../../../CHANGELOG.md:897 msgid "2023-08-31" msgstr "" -#: ../../../CHANGELOG.md:841 +#: ../../../CHANGELOG.md:899 msgid "SchildiChat Web support" msgstr "" -#: ../../../CHANGELOG.md:843 +#: ../../../CHANGELOG.md:901 msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook can now set up the [SchildiChat Web](https://github.com/SchildiChat/schildichat-desktop) client." msgstr "" -#: ../../../CHANGELOG.md:845 +#: ../../../CHANGELOG.md:903 msgid "See our [Configuring SchildiChat Web](docs/configuring-playbook-client-schildichat-web.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:848 +#: ../../../CHANGELOG.md:906 msgid "2023-08-23" msgstr "" -#: ../../../CHANGELOG.md:850 +#: ../../../CHANGELOG.md:908 msgid "mautrix-wsproxy support" msgstr "" -#: ../../../CHANGELOG.md:852 +#: ../../../CHANGELOG.md:910 msgid "Thanks to [Johan Swetzén](https://github.com/jswetzen)'s efforts (who finished what was started by [James Reilly](https://github.com/hanthor) and [Shreyas Ajjarapu](https://github.com/shreyasajj)), the playbook now supports bridging to Android SMS and Apple iMessage via the [mautrix-wsproxy](https://github.com/mautrix/wsproxy) service (in combination with a [mautrix-imessage](https://github.com/mautrix/imessage) bridge running on your Mac or Android phone)." msgstr "" -#: ../../../CHANGELOG.md:854 +#: ../../../CHANGELOG.md:912 msgid "See our [Setting up Mautrix wsproxy for bridging Android SMS or Apple iMessage](docs/configuring-playbook-bridge-mautrix-wsproxy.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:857 +#: ../../../CHANGELOG.md:915 msgid "2023-07-24" msgstr "" -#: ../../../CHANGELOG.md:859 +#: ../../../CHANGELOG.md:917 msgid "matrix-registration-bot usage changed" msgstr "" -#: ../../../CHANGELOG.md:861 +#: ../../../CHANGELOG.md:919 msgid "[matrix-registration-bot](docs/configuring-playbook-bot-matrix-registration-bot.md) got some updates and now supports password-only-based login. Therefore the bot now doesn't need any manual configuration except setting a password in your `vars.yml`. The bot will be registered as admin and access tokens will be obtained automatically by the bot." msgstr "" -#: ../../../CHANGELOG.md:863 +#: ../../../CHANGELOG.md:921 msgid "**For existing users** You need to set `matrix_bot_matrix_registration_bot_bot_password` if you previously only used `matrix_bot_matrix_registration_bot_bot_access_token`. Please also remove the following deprecated settings" msgstr "" -#: ../../../CHANGELOG.md:865 +#: ../../../CHANGELOG.md:923 msgid "`matrix_bot_matrix_registration_bot_bot_access_token`" msgstr "" -#: ../../../CHANGELOG.md:866 +#: ../../../CHANGELOG.md:924 msgid "`matrix_bot_matrix_registration_bot_api_token`" msgstr "" -#: ../../../CHANGELOG.md:869 +#: ../../../CHANGELOG.md:927 msgid "2023-07-21" msgstr "" -#: ../../../CHANGELOG.md:871 +#: ../../../CHANGELOG.md:929 msgid "mautrix-gmessages support" msgstr "" -#: ../../../CHANGELOG.md:873 +#: ../../../CHANGELOG.md:931 msgid "Thanks to [Shreyas Ajjarapu](https://github.com/shreyasajj)'s efforts, the playbook now supports bridging to [Google Messages](https://messages.google.com/) via the [mautrix-gmessages](https://github.com/mautrix/gmessages) bridge. See our [Setting up Mautrix Google Messages bridging](docs/configuring-playbook-bridge-mautrix-gmessages.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:876 +#: ../../../CHANGELOG.md:934 msgid "2023-07-17" msgstr "" -#: ../../../CHANGELOG.md:878 +#: ../../../CHANGELOG.md:936 msgid "matrix-media-repo support" msgstr "" -#: ../../../CHANGELOG.md:880 -msgid "Thanks to [Michael Hollister](https://github.com/Michael-Hollister) from [FUTO](https://www.futo.org/), the creators of the [Circles app](https://circu.li/), the playbook can now set up [matrix-media-repo](https://github.com/turt2live/matrix-media-repo) - an alternative way to store homeserver media files, powered by a homeserver-independent implementation which supports S3 storage, IPFS, deduplication and other advanced features." +#: ../../../CHANGELOG.md:938 +msgid "Thanks to [Michael Hollister](https://github.com/Michael-Hollister) from [FUTO](https://www.futo.org/), the creators of the [Circles app](https://circu.li/), the playbook can now set up [matrix-media-repo](https://github.com/turt2live/matrix-media-repo) — an alternative way to store homeserver media files, powered by a homeserver-independent implementation which supports S3 storage, IPFS, deduplication and other advanced features." msgstr "" -#: ../../../CHANGELOG.md:882 +#: ../../../CHANGELOG.md:940 msgid "To learn more see our [Storing Matrix media files using matrix-media-repo](docs/configuring-playbook-matrix-media-repo.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:885 +#: ../../../CHANGELOG.md:943 msgid "2023-05-25" msgstr "" -#: ../../../CHANGELOG.md:887 +#: ../../../CHANGELOG.md:945 msgid "Enabling `forget_rooms_on_leave` by default for Synapse" msgstr "" -#: ../../../CHANGELOG.md:889 +#: ../../../CHANGELOG.md:947 msgid "With the [Synapse v1.84.0 update](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2698), we've also **changed the default value** of the `forget_rooms_on_leave` setting of Synapse to a value of `true`. This way, **when you leave a room, Synapse will now forget it automatically**." msgstr "" -#: ../../../CHANGELOG.md:891 +#: ../../../CHANGELOG.md:949 msgid "The upstream Synapse default is `false` (disabled), so that you must forget rooms manually after leaving." msgstr "" -#: ../../../CHANGELOG.md:893 +#: ../../../CHANGELOG.md:951 msgid "**We go against the upstream default** ([somewhat controversially](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2700)) in an effort to make Synapse leaner and potentially do what we believe most users would expect their homeserver to be doing." msgstr "" -#: ../../../CHANGELOG.md:895 +#: ../../../CHANGELOG.md:953 msgid "If you'd like to go back to the old behavior, add the following to your configuration: `matrix_synapse_forget_rooms_on_leave: false`" msgstr "" -#: ../../../CHANGELOG.md:898 +#: ../../../CHANGELOG.md:956 msgid "2023-04-03" msgstr "" -#: ../../../CHANGELOG.md:900 +#: ../../../CHANGELOG.md:958 msgid "The matrix-jitsi role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:902 +#: ../../../CHANGELOG.md:960 msgid "**TLDR**: the `matrix-jitsi` role is now included from the [ansible-role-jitsi](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi) repository, part of the [MASH playbook](https://github.com/mother-of-all-self-hosting/mash-playbook). Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:904 -msgid "The `matrix-jitsi` role has been relocated in its own repository, part of the [MASH playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) project - an Ansible playbook for self-hosting [a growing list of FOSS software](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md). If hosting a Jitsi stack on the Matrix server itself did not stand right with you or you always wanted to host most stuff, you can now use this new playbook to do so." +#: ../../../CHANGELOG.md:962 +msgid "The `matrix-jitsi` role has been relocated in its own repository, part of the [MASH playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) project — an Ansible playbook for self-hosting [a growing list of FOSS software](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md). If hosting a Jitsi stack on the Matrix server itself did not stand right with you or you always wanted to host most stuff, you can now use this new playbook to do so." msgstr "" -#: ../../../CHANGELOG.md:906 +#: ../../../CHANGELOG.md:964 msgid "As part of the extraction process of this role out of the Matrix playbook, a few other things improved:" msgstr "" -#: ../../../CHANGELOG.md:908 +#: ../../../CHANGELOG.md:966 msgid "**native Traefik support** has been added" msgstr "" -#: ../../../CHANGELOG.md:909 +#: ../../../CHANGELOG.md:967 msgid "**support for hosting under a subpath** has been added, although it suffers from a few minor issues listed [here](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/jitsi.md#url)" msgstr "" -#: ../../../CHANGELOG.md:911 +#: ../../../CHANGELOG.md:969 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're using Jitsi or not." msgstr "" -#: ../../../CHANGELOG.md:913 +#: ../../../CHANGELOG.md:971 msgid "If you're making use of Jitsi via this playbook, you will need to update variable references in your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:915 +#: ../../../CHANGELOG.md:973 msgid "`matrix_jitsi_*_docker_image_` -> `matrix_jitsi_*_container_image_`" msgstr "" -#: ../../../CHANGELOG.md:916 +#: ../../../CHANGELOG.md:974 msgid "`matrix_jitsi_` -> `jitsi_`" msgstr "" -#: ../../../CHANGELOG.md:917 ../../../CHANGELOG.md:944 +#: ../../../CHANGELOG.md:975 ../../../CHANGELOG.md:1002 msgid "some other internal variables have changed, but the playbook will tell you about them" msgstr "" -#: ../../../CHANGELOG.md:919 +#: ../../../CHANGELOG.md:977 msgid "2023-03-22" msgstr "" -#: ../../../CHANGELOG.md:921 +#: ../../../CHANGELOG.md:979 msgid "ntfy Web App is disabled by default" msgstr "" -#: ../../../CHANGELOG.md:923 +#: ../../../CHANGELOG.md:981 msgid "ntfy provides a web app, which is now disabled by default, because it may be unknown to and unused by most users of this playbook. You can enable it by setting `ntfy_web_root: \"app\"` (see [ntfy documentation](docs/configuring-playbook-ntfy.md))." msgstr "" -#: ../../../CHANGELOG.md:925 +#: ../../../CHANGELOG.md:983 msgid "This change was already applied a while before this entry, but as some users were reporting the missing web app, this entry was added (see [#2529](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2529))." msgstr "" -#: ../../../CHANGELOG.md:928 +#: ../../../CHANGELOG.md:986 msgid "2023-03-21" msgstr "" -#: ../../../CHANGELOG.md:930 +#: ../../../CHANGELOG.md:988 msgid "The matrix-prometheus role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:932 +#: ../../../CHANGELOG.md:990 msgid "**TLDR**: the `matrix-prometheus` role is now included from the [ansible-role-prometheus](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus) repository, part of the [MASH playbook](https://github.com/mother-of-all-self-hosting/mash-playbook). Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:934 -msgid "The `matrix-prometheus` role has been relocated in its own repository, part of the [MASH playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) project - an Ansible playbook for self-hosting [a growing list of FOSS software](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md). If hosting a Prometheus stack on the Matrix server itself did not stand right with you or you always wanted to host most stuff, you can now use this new playbook to do so." +#: ../../../CHANGELOG.md:992 +msgid "The `matrix-prometheus` role has been relocated in its own repository, part of the [MASH playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) project — an Ansible playbook for self-hosting [a growing list of FOSS software](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md). If hosting a Prometheus stack on the Matrix server itself did not stand right with you or you always wanted to host most stuff, you can now use this new playbook to do so." msgstr "" -#: ../../../CHANGELOG.md:936 +#: ../../../CHANGELOG.md:994 msgid "Extracting the Prometheus role out of this Matrix playbook required huge internal refactoring to the way the Prometheus configuration (scraping jobs) is generated. If you notice any breakage after upgrading, let us know." msgstr "" -#: ../../../CHANGELOG.md:938 +#: ../../../CHANGELOG.md:996 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're using Prometheus or not." msgstr "" -#: ../../../CHANGELOG.md:940 +#: ../../../CHANGELOG.md:998 msgid "If you're making use of Prometheus via this playbook, you will need to update variable references in your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:942 +#: ../../../CHANGELOG.md:1000 msgid "`matrix_prometheus_docker_image_` -> `matrix_prometheus_container_image_`" msgstr "" -#: ../../../CHANGELOG.md:943 +#: ../../../CHANGELOG.md:1001 msgid "`matrix_prometheus_` -> `prometheus_`" msgstr "" -#: ../../../CHANGELOG.md:947 +#: ../../../CHANGELOG.md:1005 msgid "2023-03-12" msgstr "" -#: ../../../CHANGELOG.md:949 +#: ../../../CHANGELOG.md:1007 msgid "synapse-auto-compressor support" msgstr "" -#: ../../../CHANGELOG.md:951 +#: ../../../CHANGELOG.md:1009 msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook can now set up [rust-synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state)'s `synapse_auto_compressor` tool to run periodically." msgstr "" -#: ../../../CHANGELOG.md:953 -msgid "If enabled, `synapse_auto_compressor` runs on a schedule and compresses your Synapse database's `state_groups` table. It was possible to run `rust-synapse-compress-state` manually via the playbook even before - see [Compressing state with rust-synapse-compress-state](docs/maintenance-synapse.md#compressing-state-with-rust-synapse-compress-state). However, using `synapse_auto_compressor` is better, because:" +#: ../../../CHANGELOG.md:1011 +msgid "If enabled, `synapse_auto_compressor` runs on a schedule and compresses your Synapse database's `state_groups` table. It was possible to run `rust-synapse-compress-state` manually via the playbook even before — see [Compressing state with rust-synapse-compress-state](docs/maintenance-synapse.md#compressing-state-with-rust-synapse-compress-state). However, using `synapse_auto_compressor` is better, because:" msgstr "" -#: ../../../CHANGELOG.md:955 +#: ../../../CHANGELOG.md:1013 msgid "it runs on a more up-to-date version of `rust-synapse-compress-state`" msgstr "" -#: ../../../CHANGELOG.md:956 +#: ../../../CHANGELOG.md:1014 msgid "it's a set-it-and-forget-it tool that you can enable and never have to deal with manual compression anymore" msgstr "" -#: ../../../CHANGELOG.md:958 +#: ../../../CHANGELOG.md:1016 msgid "This tool needs to be enabled manually, for now. In the future, we're considering enabling it by default for all Synapse installations." msgstr "" -#: ../../../CHANGELOG.md:960 +#: ../../../CHANGELOG.md:1018 msgid "See our [Setting up synapse-auto-compressor](docs/configuring-playbook-synapse-auto-compressor.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:963 +#: ../../../CHANGELOG.md:1021 msgid "2023-03-07" msgstr "" -#: ../../../CHANGELOG.md:965 +#: ../../../CHANGELOG.md:1023 msgid "Sliding Sync proxy (Element X) support" msgstr "" -#: ../../../CHANGELOG.md:967 +#: ../../../CHANGELOG.md:1025 msgid "Thanks to [Benjamin Kampmann](https://github.com/gnunicorn) for [getting it started](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2515), [FSG-Cat](https://github.com/FSG-Cat) for fixing it up and me ([Slavi](https://github.com/spantaleev)) for polishing it up, the playbook can now install and configure the [sliding-sync proxy](https://github.com/matrix-org/sliding-sync)." msgstr "" -#: ../../../CHANGELOG.md:969 +#: ../../../CHANGELOG.md:1027 msgid "The upcoming Element X clients ([Element X iOS](https://github.com/vector-im/element-x-ios) and [Element X Android](https://github.com/vector-im/element-x-android)) require the `sliding-sync` proxy to do their job. **These clients are still in beta** (especially Element X Android, which requires manual compilation to get it working with a non-`matrix.org` homeseserver). Playbook users can now easily give these clients a try and help test them thanks to us having `sliding-sync` support." msgstr "" -#: ../../../CHANGELOG.md:971 +#: ../../../CHANGELOG.md:1029 msgid "To get started, see our [Setting up the Sliding Sync proxy](docs/configuring-playbook-sliding-sync-proxy.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:974 +#: ../../../CHANGELOG.md:1032 msgid "2023-03-02" msgstr "" -#: ../../../CHANGELOG.md:976 +#: ../../../CHANGELOG.md:1034 msgid "The matrix-etherpad role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:978 +#: ../../../CHANGELOG.md:1036 msgid "**TLDR**: the `matrix-etherpad` role is now included from [another repository](https://github.com/mother-of-all-self-hosting/ansible-role-etherpad). Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:980 +#: ../../../CHANGELOG.md:1038 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're using Etherpad or not." msgstr "" -#: ../../../CHANGELOG.md:982 +#: ../../../CHANGELOG.md:1040 msgid "If you're making use of Etherpad via this playbook, you will need to update variable references in your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:984 +#: ../../../CHANGELOG.md:1042 msgid "Rename `matrix_etherpad_public_endpoint` to `etherpad_path_prefix`" msgstr "" -#: ../../../CHANGELOG.md:986 +#: ../../../CHANGELOG.md:1044 msgid "Replace `matrix_etherpad_mode: dimension` with:" msgstr "" -#: ../../../CHANGELOG.md:987 +#: ../../../CHANGELOG.md:1045 msgid "for `matrix-nginx-proxy` users:" msgstr "" -#: ../../../CHANGELOG.md:988 +#: ../../../CHANGELOG.md:1046 msgid "`etherpad_nginx_proxy_dimension_integration_enabled: true`" msgstr "" -#: ../../../CHANGELOG.md:989 +#: ../../../CHANGELOG.md:1047 msgid "`etherpad_hostname: \"{{ matrix_server_fqn_dimension }}\"`" msgstr "" -#: ../../../CHANGELOG.md:990 +#: ../../../CHANGELOG.md:1048 msgid "for Traefik users:" msgstr "" -#: ../../../CHANGELOG.md:991 +#: ../../../CHANGELOG.md:1049 msgid "define your own `etherpad_hostname` and `etherpad_path_prefix` as you see fit" msgstr "" -#: ../../../CHANGELOG.md:993 +#: ../../../CHANGELOG.md:1051 msgid "Rename all other variables:" msgstr "" -#: ../../../CHANGELOG.md:994 +#: ../../../CHANGELOG.md:1052 msgid "`matrix_etherpad_docker_image_` -> `matrix_etherpad_container_image_`" msgstr "" -#: ../../../CHANGELOG.md:995 +#: ../../../CHANGELOG.md:1053 msgid "`matrix_etherpad_` -> `etherpad_`" msgstr "" -#: ../../../CHANGELOG.md:997 +#: ../../../CHANGELOG.md:1055 msgid "Along with this relocation, the new role also:" msgstr "" -#: ../../../CHANGELOG.md:999 +#: ../../../CHANGELOG.md:1057 msgid "supports [self-building](docs/self-building.md), so it should work on `arm32` and `arm64` architectures" msgstr "" -#: ../../../CHANGELOG.md:1000 +#: ../../../CHANGELOG.md:1058 msgid "has native Traefik reverse-proxy support (Etherpad requests no longer go through `matrix-nginx-proxy` when using Traefik)" msgstr "" -#: ../../../CHANGELOG.md:1003 +#: ../../../CHANGELOG.md:1061 msgid "2023-02-26" msgstr "" -#: ../../../CHANGELOG.md:1005 +#: ../../../CHANGELOG.md:1063 msgid "Traefik is the default reverse-proxy now" msgstr "" -#: ../../../CHANGELOG.md:1007 +#: ../../../CHANGELOG.md:1065 msgid "**TLDR**: new installations will now default to Traefik as their reverse-proxy. Existing users need to explicitly choose their reverse-proxy type. [Switching to Traefik](#how-do-i-switch-my-existing-setup-to-traefik) is strongly encouraged. `matrix-nginx-proxy` may break over time and will ultimately be removed." msgstr "" -#: ../../../CHANGELOG.md:1009 +#: ../../../CHANGELOG.md:1067 msgid "As mentioned 2 weeks ago in [(Backward Compatibility) Reverse-proxy configuration changes and initial Traefik support](#backward-compatibility-reverse-proxy-configuration-changes-and-initial-traefik-support), the playbook is moving to Traefik as its default SSL-terminating reverse-proxy." msgstr "" -#: ../../../CHANGELOG.md:1011 +#: ../../../CHANGELOG.md:1069 msgid "Until now, we've been doing the migration gradually and keeping full backward compatibility. New installations were defaulting to `matrix-nginx-proxy` (just like before), while existing installations were allowed to remain on `matrix-nginx-proxy` as well. This makes things very difficult for us, because we need to maintain and think about lots of different setups:" msgstr "" -#: ../../../CHANGELOG.md:1013 +#: ../../../CHANGELOG.md:1071 msgid "Traefik managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:1014 +#: ../../../CHANGELOG.md:1072 msgid "Traefik managed by the user in another way" msgstr "" -#: ../../../CHANGELOG.md:1015 +#: ../../../CHANGELOG.md:1073 msgid "another reverse-proxy on the same host (`127.0.0.1` port exposure)" msgstr "" -#: ../../../CHANGELOG.md:1016 +#: ../../../CHANGELOG.md:1074 msgid "another reverse-proxy on another host (`0.0.0.0` port exposure)" msgstr "" -#: ../../../CHANGELOG.md:1017 -msgid "`matrix-nginx-proxy` - an `nginx` container managed by the playbook" +#: ../../../CHANGELOG.md:1075 +msgid "`matrix-nginx-proxy` — an `nginx` container managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:1018 +#: ../../../CHANGELOG.md:1076 msgid "`nginx` webserver operated by the user, running without a container on the same server" msgstr "" -#: ../../../CHANGELOG.md:1020 +#: ../../../CHANGELOG.md:1078 msgid "Each change we do and each new feature that comes in needs to support all these different ways of reverse-proxying. Because `matrix-nginx-proxy` was the default and pretty much everyone was (and still is) using it, means that new PRs also come with `matrix-nginx-proxy` as their main focus and Traefik as an afterthought, which means we need to spend hours fixing up Traefik support." msgstr "" -#: ../../../CHANGELOG.md:1022 +#: ../../../CHANGELOG.md:1080 msgid "We can't spend all this time maintaining so many different configurations anymore. Traefik support has been an option for 2 weeks and lots of people have already migrated their server and have tested things out. Traefik is what we use and preferentially test for." msgstr "" -#: ../../../CHANGELOG.md:1024 +#: ../../../CHANGELOG.md:1082 msgid "It's time for the **next step in our migration process** to Traefik and elimination of `matrix-nginx-proxy`:" msgstr "" -#: ../../../CHANGELOG.md:1026 +#: ../../../CHANGELOG.md:1084 msgid "Traefik is now the default reverse-proxy for new installations" msgstr "" -#: ../../../CHANGELOG.md:1027 +#: ../../../CHANGELOG.md:1085 msgid "All existing users need to explicitly choose their reverse-proxy type by defining the `matrix_playbook_reverse_proxy_type` variable in their `vars.yml` configuration file. We strongly encourage existing users to [switch the Traefik](#how-to-switch-an-existing-setup-to-traefik), as the nginx setup is bound to become more and more broken over time until it's ultimately removed" msgstr "" -#: ../../../CHANGELOG.md:1029 +#: ../../../CHANGELOG.md:1087 msgid "How do I switch my existing setup to Traefik?" msgstr "" -#: ../../../CHANGELOG.md:1031 +#: ../../../CHANGELOG.md:1089 msgid "**For users who are on `matrix-nginx-proxy`** (the default reverse-proxy provided by the playbook), switching to Traefik can happen with a simple configuration change. Follow this section from 2 weeks ago: [How do I explicitly switch to Traefik right now?](#how-do-i-explicitly-switch-to-traefik-right-now)." msgstr "" -#: ../../../CHANGELOG.md:1033 +#: ../../../CHANGELOG.md:1091 msgid "If you experience trouble:" msgstr "" -#: ../../../CHANGELOG.md:1035 +#: ../../../CHANGELOG.md:1093 msgid "Follow [How do I remain on matrix-nginx-proxy?](#how-do-i-remain-on-matrix-nginx-proxy) to bring your server back online using the old reverse-proxy" msgstr "" -#: ../../../CHANGELOG.md:1036 +#: ../../../CHANGELOG.md:1094 msgid "Ask for help in our [support channels](README.md#support)" msgstr "" -#: ../../../CHANGELOG.md:1037 +#: ../../../CHANGELOG.md:1095 msgid "Try switching to Traefik again later" msgstr "" -#: ../../../CHANGELOG.md:1039 +#: ../../../CHANGELOG.md:1097 msgid "**For users with a more special reverse-proxying setup** (another nginx server, Apache, Caddy, etc.), the migration may not be so smooth. Follow the [Using your own webserver](docs/configuring-playbook-own-webserver.md) guide. Ideally, your custom reverse-proxy will be configured in such a way that it **fronts the Traefik reverse-proxy** provided by the playbook. Other means of reverse-proxying are more fragile and may be deprecated in the future." msgstr "" -#: ../../../CHANGELOG.md:1041 +#: ../../../CHANGELOG.md:1099 msgid "I already use my own Traefik server. How do I plug that in?" msgstr "" -#: ../../../CHANGELOG.md:1043 +#: ../../../CHANGELOG.md:1101 msgid "See the [Traefik managed by the playbook](docs/configuring-playbook-own-webserver.md#traefik-managed-by-the-playbook) section." msgstr "" -#: ../../../CHANGELOG.md:1045 +#: ../../../CHANGELOG.md:1103 msgid "Why is matrix-nginx-proxy used even after switching to Traefik?" msgstr "" -#: ../../../CHANGELOG.md:1047 +#: ../../../CHANGELOG.md:1105 msgid "This playbook manages many different services. All these services were initially integrated with `matrix-nginx-proxy`." msgstr "" -#: ../../../CHANGELOG.md:1049 +#: ../../../CHANGELOG.md:1107 msgid "While we migrate all these components to have native Traefik support, some still go through nginx internally (Traefik -> local `matrix-nginx-proxy` -> component). As time goes on, internal reliance on `matrix-nginx-proxy` will gradually decrease until it's completely removed." msgstr "" -#: ../../../CHANGELOG.md:1051 +#: ../../../CHANGELOG.md:1109 msgid "How do I remain on matrix-nginx-proxy?" msgstr "" -#: ../../../CHANGELOG.md:1053 +#: ../../../CHANGELOG.md:1111 msgid "Most new work and testing targets Traefik, so remaining on nginx is **not** \"the good old stable\" option, but rather the \"still available, but largely untested and likely to be broken very soon\" option." msgstr "" -#: ../../../CHANGELOG.md:1055 +#: ../../../CHANGELOG.md:1113 msgid "To proceed regardless of this warning, add `matrix_playbook_reverse_proxy_type: playbook-managed-nginx` to your configuration." msgstr "" -#: ../../../CHANGELOG.md:1057 +#: ../../../CHANGELOG.md:1115 msgid "At some point in the **near** future (days, or even weeks at most), we hope to completely get rid of `matrix-nginx-proxy` (or break it enough to make it unusable), so you **will soon be forced to migrate** anyway. Plan your migration accordingly." msgstr "" -#: ../../../CHANGELOG.md:1059 +#: ../../../CHANGELOG.md:1117 msgid "How do I keep using my own other reverse-proxy?" msgstr "" -#: ../../../CHANGELOG.md:1061 +#: ../../../CHANGELOG.md:1119 msgid "We recommend that you follow the guide for [Fronting the integrated reverse-proxy webserver with another reverse-proxy](docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy)." msgstr "" -#: ../../../CHANGELOG.md:1064 +#: ../../../CHANGELOG.md:1122 msgid "2023-02-25" msgstr "" -#: ../../../CHANGELOG.md:1066 +#: ../../../CHANGELOG.md:1124 msgid "rageshake support" msgstr "" -#: ../../../CHANGELOG.md:1068 +#: ../../../CHANGELOG.md:1126 msgid "Thanks to [Benjamin Kampmann](https://github.com/gnunicorn), the playbook can now install and configure the [rageshake](https://github.com/matrix-org/rageshake) bug report server." msgstr "" -#: ../../../CHANGELOG.md:1070 +#: ../../../CHANGELOG.md:1128 msgid "Additional details are available in [Setting up rageshake](docs/configuring-playbook-rageshake.md)." msgstr "" -#: ../../../CHANGELOG.md:1073 +#: ../../../CHANGELOG.md:1131 msgid "2023-02-17" msgstr "" -#: ../../../CHANGELOG.md:1075 +#: ../../../CHANGELOG.md:1133 msgid "Synapse templates customization support" msgstr "" -#: ../../../CHANGELOG.md:1077 +#: ../../../CHANGELOG.md:1135 msgid "The playbook can now help you customize Synapse's templates." msgstr "" -#: ../../../CHANGELOG.md:1079 +#: ../../../CHANGELOG.md:1137 msgid "Additional details are available in the [Customizing templates](docs/configuring-playbook-synapse.md#customizing-templates) section of our Synapse documentation." msgstr "" -#: ../../../CHANGELOG.md:1081 +#: ../../../CHANGELOG.md:1139 msgid "The matrix-redis role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1083 +#: ../../../CHANGELOG.md:1141 msgid "**TLDR**: the `matrix-redis` role is now included from another repository. Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1085 +#: ../../../CHANGELOG.md:1143 msgid "The `matrix-redis` role (which configures [Redis](https://redis.io/)) has been extracted from the playbook and now lives in its [own repository](https://github.com/mother-of-all-self-hosting/ansible-role-redis). This makes it possible to easily use it in other Ansible playbooks." msgstr "" -#: ../../../CHANGELOG.md:1087 +#: ../../../CHANGELOG.md:1145 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're enabling Ntfy or not. If you're making use of Ntfy via this playbook, you will need to update variable references in your `vars.yml` file (`matrix_redis_` -> `redis_`)." msgstr "" -#: ../../../CHANGELOG.md:1089 +#: ../../../CHANGELOG.md:1147 msgid "The matrix-ntfy role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1091 +#: ../../../CHANGELOG.md:1149 msgid "**TLDR**: the `matrix-ntfy` role is now included from another repository. Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1093 +#: ../../../CHANGELOG.md:1151 msgid "The `matrix-ntfy` role (which configures [Ntfy](https://ntfy.sh/)) has been extracted from the playbook and now lives in its [own repository](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy). This makes it possible to easily use it in other Ansible playbooks." msgstr "" -#: ../../../CHANGELOG.md:1095 +#: ../../../CHANGELOG.md:1153 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're enabling Ntfy or not. If you're making use of Ntfy via this playbook, you will need to update variable references in your `vars.yml` file (`matrix_ntfy_` -> `ntfy_`)." msgstr "" -#: ../../../CHANGELOG.md:1098 +#: ../../../CHANGELOG.md:1156 msgid "2023-02-15" msgstr "" -#: ../../../CHANGELOG.md:1100 +#: ../../../CHANGELOG.md:1158 msgid "The matrix-grafana role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1102 +#: ../../../CHANGELOG.md:1160 msgid "**TLDR**: the `matrix-grafana` role is now included from another repository. Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1104 +#: ../../../CHANGELOG.md:1162 msgid "The `matrix-grafana` role (which configures [Grafana](docs/configuring-playbook-prometheus-grafana.md)) has been extracted from the playbook and now lives in its [own repository](https://github.com/mother-of-all-self-hosting/ansible-role-grafana). This makes it possible to easily use it in other Ansible playbooks." msgstr "" -#: ../../../CHANGELOG.md:1106 +#: ../../../CHANGELOG.md:1164 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're enabling Grafana or not. If you're making use of Grafana via this playbook, you will need to update variable references in your `vars.yml` file (`matrix_grafana_` -> `grafana_`)." msgstr "" -#: ../../../CHANGELOG.md:1109 +#: ../../../CHANGELOG.md:1167 msgid "2023-02-13" msgstr "" -#: ../../../CHANGELOG.md:1111 +#: ../../../CHANGELOG.md:1169 msgid "The matrix-backup-borg role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1113 +#: ../../../CHANGELOG.md:1171 msgid "**TLDR**: the `matrix-backup-borg` role is now included from another repository. Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1115 +#: ../../../CHANGELOG.md:1173 msgid "Thanks to [moan0s](https://github.com/moan0s), the `matrix-backup-borg` role (which configures [BorgBackup](docs/configuring-playbook-backup-borg.md)) has been extracted from the playbook and now lives in its [own repository](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg). This makes it possible to easily use it in other Ansible playbooks and will become part of [nextcloud-docker-ansible-deploy](https://github.com/spantaleev/nextcloud-docker-ansible-deploy) soon." msgstr "" -#: ../../../CHANGELOG.md:1117 +#: ../../../CHANGELOG.md:1175 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're enabling Borg's backup functionality or not. If you're making use of BorgBackup via this playbook, you will need to update variable references in your `vars.yml` file (`matrix_backup_borg_` -> `backup_borg_`)." msgstr "" -#: ../../../CHANGELOG.md:1120 +#: ../../../CHANGELOG.md:1178 msgid "2023-02-12" msgstr "" -#: ../../../CHANGELOG.md:1122 +#: ../../../CHANGELOG.md:1180 msgid "(Backward Compatibility) Reverse-proxy configuration changes and initial Traefik support" msgstr "" -#: ../../../CHANGELOG.md:1124 +#: ../../../CHANGELOG.md:1182 msgid "**TLDR**:" msgstr "" -#: ../../../CHANGELOG.md:1126 +#: ../../../CHANGELOG.md:1184 msgid "there's a new `matrix_playbook_reverse_proxy_type` variable (see [roles/custom/matrix-base/defaults/main.yml](roles/custom/matrix-base/defaults/main.yml)), which lets you tell the playbook what reverse-proxy setup you'd like to have. This makes it easier for people who want to do reverse-proxying in other ways." msgstr "" -#: ../../../CHANGELOG.md:1127 +#: ../../../CHANGELOG.md:1185 msgid "the default reverse-proxy (`matrix_playbook_reverse_proxy_type`) is still `playbook-managed-nginx` (via `matrix-nginx-proxy`), for now. **Existing `matrix-nginx-proxy` users should not observe any changes** and can stay on this for now." msgstr "" -#: ../../../CHANGELOG.md:1128 +#: ../../../CHANGELOG.md:1186 msgid "**Users who use their [own other webserver](docs/configuring-playbook-own-webserver.md) (e.g. Apache, etc.) need to change** `matrix_playbook_reverse_proxy_type` to something like `other-on-same-host`, `other-on-another-host` or `other-nginx-non-container`" msgstr "" -#: ../../../CHANGELOG.md:1129 +#: ../../../CHANGELOG.md:1187 msgid "we now have **optional [Traefik](https://traefik.io/) support**, so you could easily host Matrix and other Traefik-native services in containers on the same server. Traefik support is still experimental (albeit, good enough) and will improve over time. It does work, but certain esoteric features may not be there yet." msgstr "" -#: ../../../CHANGELOG.md:1130 +#: ../../../CHANGELOG.md:1188 msgid "**Traefik will become the default reverse-proxy in the near future**. `matrix-nginx-proxy` will either remain as an option, or be completely removed to simplify the playbook" msgstr "" -#: ../../../CHANGELOG.md:1132 +#: ../../../CHANGELOG.md:1190 msgid "Motivation for redoing our reverse-proxy setup" msgstr "" -#: ../../../CHANGELOG.md:1134 -msgid "The playbook has supported various reverse-proxy setups for a long time. We have various configuration variables (`matrix_nginx_proxy_enabled`, various `_host_bind_port` variables, etc.) which allow the playbook to adapt to these different setups. The whole situation was messy though - hard to figure out and with lots of variables to toggle to make things work as you'd expect - huge **operational complexity**." +#: ../../../CHANGELOG.md:1192 +msgid "The playbook has supported various reverse-proxy setups for a long time. We have various configuration variables (`matrix_nginx_proxy_enabled`, various `_host_bind_port` variables, etc.) which allow the playbook to adapt to these different setups. The whole situation was messy though — hard to figure out and with lots of variables to toggle to make things work as you'd expect — huge **operational complexity**." msgstr "" -#: ../../../CHANGELOG.md:1136 +#: ../../../CHANGELOG.md:1194 msgid "We love containers, proven by the fact that **everything** that this playbook manages runs in a container. Yet, we weren't allowing people to easily host other web-exposed containers alongside Matrix services on the same server. We were using `matrix-nginx-proxy` (our integrated [nginx](https://nginx.org/) server), which was handling web-exposure and SSL termination for our own services, but we **weren't helping you with all your other containers**." msgstr "" -#: ../../../CHANGELOG.md:1138 +#: ../../../CHANGELOG.md:1196 msgid "People who were **using `matrix-nginx-proxy`** were on the happy path on which everything worked well by default (Matrix-wise), **but** could not easily run other web-exposed services on their Matrix server because `matrix-nginx-proxy` was occupying ports `80` and `443`. Other services which wanted to get web exposure either had to be plugged into `matrix-nginx-proxy` (somewhat difficult) or people had to forgo using `matrix-nginx-proxy` in favor of something else." msgstr "" -#: ../../../CHANGELOG.md:1140 +#: ../../../CHANGELOG.md:1198 msgid "Of those that decided to forgo `matrix-nginx-proxy`, many were **using nginx** on the same server without a container. This was likely some ancient nginx version, depending on your choice of distro. The Matrix playbook was trying to be helpful and even with `matrix_nginx_proxy_enabled: false` was still generating nginx configuration in `/matrix/nginx-proxy/conf.d`. Those configuration files were adapted for inclusion into an nginx server running locally. Disabling the `matrix-nginx-proxy` role like this, yet still having it produce files is a bit disgusting, but it's what we've had since the early beginnings of this playbook." msgstr "" -#: ../../../CHANGELOG.md:1142 +#: ../../../CHANGELOG.md:1200 msgid "Others still, wanted to run Matrix locally (no SSL certificates), regardless of which web server technology this relied on, and then **reverse-proxy from another machine on the network** which was doing SSL termination. These people were:" msgstr "" -#: ../../../CHANGELOG.md:1144 +#: ../../../CHANGELOG.md:1202 msgid "*either* relying on `matrix_nginx_proxy_enabled: false` as well, combined with exposing services manually (setting `_bind_port` variables)" msgstr "" -#: ../../../CHANGELOG.md:1145 +#: ../../../CHANGELOG.md:1203 msgid "*or* better yet, they were keeping `matrix-nginx-proxy` enabled, but in `http`-only mode (no SSL certificate retrieval)." msgstr "" -#: ../../../CHANGELOG.md:1147 +#: ../../../CHANGELOG.md:1205 msgid "Despite this operational complexity, things worked and were reasonably flexible to adapt to all these situations." msgstr "" -#: ../../../CHANGELOG.md:1149 -msgid "When using `matrix-nginx-proxy` as is, we still had another problem - one of **internal playbook complexity**. Too many services need to be web-exposed (port 80/443, SSL certificates). Because of this, they all had to integrate with the `matrix-nginx-proxy` role. Tens of different roles explicitly integrating with `matrix-nginx-proxy` is not what we call clean. The `matrix-nginx-proxy` role contains variables for many of these roles (yikes). Other roles were more decoupled from it and were injecting configuration into `matrix-nginx-proxy` at runtime - see all the `inject_into_nginx_proxy.yml` task files in this playbook (more decoupled, but still.. yikes)." +#: ../../../CHANGELOG.md:1207 +msgid "When using `matrix-nginx-proxy` as is, we still had another problem — one of **internal playbook complexity**. Too many services need to be web-exposed (port 80/443, SSL certificates). Because of this, they all had to integrate with the `matrix-nginx-proxy` role. Tens of different roles explicitly integrating with `matrix-nginx-proxy` is not what we call clean. The `matrix-nginx-proxy` role contains variables for many of these roles (yikes). Other roles were more decoupled from it and were injecting configuration into `matrix-nginx-proxy` at runtime — see all the `inject_into_nginx_proxy.yml` task files in this playbook (more decoupled, but still… yikes)." msgstr "" -#: ../../../CHANGELOG.md:1151 +#: ../../../CHANGELOG.md:1209 msgid "The next problem is one of **efficiency, interoperability and cost-saving**. We're working on other playbooks:" msgstr "" -#: ../../../CHANGELOG.md:1153 -msgid "[vaultwarden-docker-ansible-deploy](https://github.com/spantaleev/vaultwarden-docker-ansible-deploy) for hosting the [Vaultwarden](https://github.com/dani-garcia/vaultwarden) server - an alternative implementation of the [Bitwarden](https://bitwarden.com/) password manager" +#: ../../../CHANGELOG.md:1211 +msgid "[vaultwarden-docker-ansible-deploy](https://github.com/spantaleev/vaultwarden-docker-ansible-deploy) for hosting the [Vaultwarden](https://github.com/dani-garcia/vaultwarden) server — an alternative implementation of the [Bitwarden](https://bitwarden.com/) password manager" msgstr "" -#: ../../../CHANGELOG.md:1154 -msgid "[gitea-docker-ansible-deploy](https://github.com/spantaleev/gitea-docker-ansible-deploy) - for hosting the [Gitea](https://gitea.io/) git source code hosting service" +#: ../../../CHANGELOG.md:1212 +msgid "[gitea-docker-ansible-deploy](https://github.com/spantaleev/gitea-docker-ansible-deploy) — for hosting the [Gitea](https://gitea.io/) git source code hosting service" msgstr "" -#: ../../../CHANGELOG.md:1155 -msgid "[nextcloud-docker-ansible-deploy](https://github.com/spantaleev/nextcloud-docker-ansible-deploy) - for hosting the [Nextcloud](https://nextcloud.com/) groupware platform" +#: ../../../CHANGELOG.md:1213 +msgid "[nextcloud-docker-ansible-deploy](https://github.com/spantaleev/nextcloud-docker-ansible-deploy) — for hosting the [Nextcloud](https://nextcloud.com/) groupware platform" msgstr "" -#: ../../../CHANGELOG.md:1157 +#: ../../../CHANGELOG.md:1215 msgid "We'd love for users to be able to **seamlessly use all these playbooks (and others, even) against a single server**. We don't want `matrix-nginx-proxy` to have a monopoly on port `80`/`443` and make it hard for other services to join in on the party. Such a thing forces people into running multiple servers (one for each service), which does provide nice security benefits, but is costly and ineffiecient. We'd like to make self-hosting these services cheap and easy." msgstr "" -#: ../../../CHANGELOG.md:1159 +#: ../../../CHANGELOG.md:1217 msgid "These other playbooks have been using [Traefik](https://traefik.io/) as their default reverse-proxy for a long time. They can all coexist nicely together (as an example, see the [Interoperability](https://github.com/spantaleev/nextcloud-docker-ansible-deploy/blob/master/docs/configuring-playbook-interoperability.md) documentation for the [Nextcloud playbook](https://github.com/spantaleev/nextcloud-docker-ansible-deploy)). Now that this playbook is gaining Traefik support, it will be able to interoperate with them. If you're going this way, make sure to have the Matrix playbook install Traefik and have the others use `*_reverse_proxy_type: other-traefik-container`." msgstr "" -#: ../../../CHANGELOG.md:1161 -msgid "Finally, at [etke.cc - a managed Matrix server hosting service](https://etke.cc) (built on top of this playbook, and coincidentally [turning 2 years old today](https://etke.cc/news/upsyw4ykbtgmwhz8k7ukldx0zbbfq-fh0iqi3llixi0/) 🎉), we're allowing people to host some additional services besides Matrix components. Exposing these services to the web requires ugly hacks and configuration files being dropped into `/matrix/nginx-proxy/conf.d`. We believe that everything should run in independent containers and be exposed to the web via a Traefik server, without a huge Ansible role like `matrix-nginx-proxy` that everything else needs to integrate with." +#: ../../../CHANGELOG.md:1219 +msgid "Finally, at [etke.cc — a managed Matrix server hosting service](https://etke.cc) (built on top of this playbook, and coincidentally [turning 2 years old today](https://etke.cc/news/upsyw4ykbtgmwhz8k7ukldx0zbbfq-fh0iqi3llixi0/) 🎉), we're allowing people to host some additional services besides Matrix components. Exposing these services to the web requires ugly hacks and configuration files being dropped into `/matrix/nginx-proxy/conf.d`. We believe that everything should run in independent containers and be exposed to the web via a Traefik server, without a huge Ansible role like `matrix-nginx-proxy` that everything else needs to integrate with." msgstr "" -#: ../../../CHANGELOG.md:1163 +#: ../../../CHANGELOG.md:1221 msgid "How do these changes fix all these problems?" msgstr "" -#: ../../../CHANGELOG.md:1165 +#: ../../../CHANGELOG.md:1223 msgid "The new `matrix_playbook_reverse_proxy_type` lets you easily specify your preferred reverse-proxy type, including `other-on-same-host`, `other-on-another-host` and `none`, so people who'd like to reverse-proxy with their own web server have more options now." msgstr "" -#: ../../../CHANGELOG.md:1167 +#: ../../../CHANGELOG.md:1225 msgid "Using Traefik greatly simplifies things, so going forward we'll have a simpler and easier to maintain playbook, which is also interoperable with other services." msgstr "" -#: ../../../CHANGELOG.md:1169 +#: ../../../CHANGELOG.md:1227 msgid "Traefik is a web server, which has been specifically **designed for reverse-proxying to services running in containers**. It's ideal for usage in an Ansible playbook which runs everything in containers." msgstr "" -#: ../../../CHANGELOG.md:1171 +#: ../../../CHANGELOG.md:1229 msgid "**Traefik obtains SSL certificates automatically**, so there's no need for plugging additional tools like [Certbot](https://certbot.eff.org/) into your web server (like we were doing in the `matrix-nginx-proxy` role). No more certificate renewal timers, web server reloading timers, etc. It's just simpler." msgstr "" -#: ../../../CHANGELOG.md:1173 +#: ../../../CHANGELOG.md:1231 msgid "Traefik is a **modern web server**. [HTTP/3](https://doc.traefik.io/traefik/routing/entrypoints/#http3) is supported already (experimentally) and will move to stable soon, in the upcoming Traefik v3 release." msgstr "" -#: ../../../CHANGELOG.md:1175 +#: ../../../CHANGELOG.md:1233 msgid "Traefik does not lock important functionality we'd like to use into [plus packages like nginx does](https://www.nginx.com/products/nginx/), leading us to resolve to configuration workarounds. The default Traefik package is good enough as it is." msgstr "" -#: ../../../CHANGELOG.md:1177 +#: ../../../CHANGELOG.md:1235 msgid "Where we're at right now?" msgstr "" -#: ../../../CHANGELOG.md:1179 +#: ../../../CHANGELOG.md:1237 msgid "`matrix_playbook_reverse_proxy_type` still defaults to a value of `playbook-managed-nginx`." msgstr "" -#: ../../../CHANGELOG.md:1181 +#: ../../../CHANGELOG.md:1239 msgid "Unless we have some regression, **existing `matrix-nginx-proxy` users should be able to update their Matrix server and not observe any changes**. Their setup should still remain on nginx and everything should still work as expected." msgstr "" -#: ../../../CHANGELOG.md:1183 +#: ../../../CHANGELOG.md:1241 msgid "**Users using [their own webservers](docs/configuring-playbook-own-webserver.md) will need to change `matrix_playbook_reverse_proxy_type`** to something like `other-on-same-host`, `other-on-another-host` or `other-nginx-non-container`. Previously, they could toggle `matrix_nginx_proxy_enabled` to `false`, and that made the playbook automatically expose services locally. Currently, we only do this if you change the reverse-proxy type to `other-on-same-host`, `other-on-another-host` or `other-nginx-non-container`." msgstr "" -#: ../../../CHANGELOG.md:1185 +#: ../../../CHANGELOG.md:1243 msgid "How do I explicitly switch to Traefik right now?" msgstr "" -#: ../../../CHANGELOG.md:1187 +#: ../../../CHANGELOG.md:1245 msgid "**Users who wish to migrate to Traefik** today, can do so by **adding** this to their configuration:" msgstr "" -#: ../../../CHANGELOG.md:1195 +#: ../../../CHANGELOG.md:1253 msgid "You may still need to keep certain old `matrix_nginx_proxy_*` variables (like `matrix_nginx_proxy_base_domain_serving_enabled`), even when using Traefik. For now, we recommend keeping all `matrix_nginx_proxy_*` variables just in case. In the future, reliance on `matrix-nginx-proxy` will be removed." msgstr "" -#: ../../../CHANGELOG.md:1197 +#: ../../../CHANGELOG.md:1255 msgid "Switching to Traefik will obtain new SSL certificates from Let's Encrypt (stored in `/matrix/traefik/ssl/acme.json`). **The switch is reversible**. You can always go back to `playbook-managed-nginx` if Traefik is causing you trouble." msgstr "" -#: ../../../CHANGELOG.md:1199 +#: ../../../CHANGELOG.md:1257 msgid "**Note**: toggling `matrix_playbook_reverse_proxy_type` between Traefik and nginx will uninstall the Traefik role and all of its data (under `/matrix/traefik`), so you may run into a Let's Encrypt rate limit if you do it often." msgstr "" -#: ../../../CHANGELOG.md:1201 +#: ../../../CHANGELOG.md:1259 msgid "Treafik directly reverse-proxies to **some** services right now, but for most other services it goes through `matrix-nginx-proxy` (e.g. Traefik -> `matrix-nginx-proxy` -> [Ntfy](docs/configuring-playbook-ntfy.md)). So, even if you opt into Traefik, you'll still see `matrix-nginx-proxy` being installed in local-only mode. This will improve with time." msgstr "" -#: ../../../CHANGELOG.md:1203 -msgid "Some services (like [Coturn](docs/configuring-playbook-turn.md) and [Postmoogle](docs/configuring-playbook-bridge-postmoogle.md)) cannot be reverse-proxied to directly from Traefik, so they require direct access to SSL certificate files extracted out of Traefik. The playbook does this automatically thanks to a new [com.devture.ansible.role.traefik_certs_dumper](https://github.com/devture/com.devture.ansible.role.traefik_certs_dumper) role utilizing the [traefik-certs-dumper](https://github.com/ldez/traefik-certs-dumper) tool." +#: ../../../CHANGELOG.md:1261 +msgid "Some services (like [coturn](docs/configuring-playbook-turn.md) and [Postmoogle](docs/configuring-playbook-bridge-postmoogle.md)) cannot be reverse-proxied to directly from Traefik, so they require direct access to SSL certificate files extracted out of Traefik. The playbook does this automatically thanks to a new [com.devture.ansible.role.traefik_certs_dumper](https://github.com/devture/com.devture.ansible.role.traefik_certs_dumper) role utilizing the [traefik-certs-dumper](https://github.com/ldez/traefik-certs-dumper) tool." msgstr "" -#: ../../../CHANGELOG.md:1205 +#: ../../../CHANGELOG.md:1263 msgid "Our Traefik setup mostly works, but certain esoteric features may not work. If you have a default setup, we expect you to have a good experience." msgstr "" -#: ../../../CHANGELOG.md:1207 +#: ../../../CHANGELOG.md:1265 msgid "Where we're going in the near future?" msgstr "" -#: ../../../CHANGELOG.md:1209 +#: ../../../CHANGELOG.md:1267 msgid "The `matrix-nginx-proxy` role is quite messy. It manages both nginx and Certbot and its certificate renewal scripts and timers. It generates configuration even when the role is disabled (weird). Although it doesn't directly reach into variables from other roles, it has explicit awareness of various other services that it reverse-proxies to (`roles/custom/matrix-nginx-proxy/templates/nginx/conf.d/matrix-ntfy.conf.j2`, etc.). We'd like to clean this up. The only way is probably to just get rid of the whole thing at some point." msgstr "" -#: ../../../CHANGELOG.md:1211 +#: ../../../CHANGELOG.md:1269 msgid "For now, `matrix-nginx-proxy` will stay around." msgstr "" -#: ../../../CHANGELOG.md:1213 +#: ../../../CHANGELOG.md:1271 msgid "As mentioned above, Traefik still reverse-proxies to some (most) services by going through a local-only `matrix-nginx-proxy` server. This has allowed us to add Traefik support to the playbook early on (without having to rework all services), but is not the final goal. We'll **work on making each service support Traefik natively**, so that traffic will not need to go through `matrix-nginx-proxy` anymore. In the end, choosing Traefik should only give you a pure Traefik installation with no `matrix-nginx-proxy` in sight." msgstr "" -#: ../../../CHANGELOG.md:1215 +#: ../../../CHANGELOG.md:1273 msgid "As Traefik support becomes complete and proves to be stable for a while, especially as a playbook default, we will **most likely remove `matrix-nginx-proxy` completely**. It will likely be some months before this happens though. Keeping support for both Traefik and nginx in the playbook will be a burden, especially with most of us running Traefik in the future. The Traefik role should do everything nginx does in a better and cleaner way. Users who use their own `nginx` server on the Matrix server will be inconvenienced, as nothing will generate ready-to-include nginx configuration for them. Still, we hope it won't be too hard to migrate their setup to another way of doing things, like:" msgstr "" -#: ../../../CHANGELOG.md:1217 +#: ../../../CHANGELOG.md:1275 msgid "not using nginx anymore. A common reason for using nginx until now was that you were running other containers and you need your own nginx to reverse-proxy to all of them. Just switch them to Traefik as well." msgstr "" -#: ../../../CHANGELOG.md:1218 +#: ../../../CHANGELOG.md:1276 msgid "running Traefik in local-only mode (`traefik_config_entrypoint_web_secure_enabled: false`) and using some nginx configuration which reverse-proxies to Traefik (we should introduce examples for this in `examples/nginx`)." msgstr "" -#: ../../../CHANGELOG.md:1220 +#: ../../../CHANGELOG.md:1278 msgid "How do I help?" msgstr "" -#: ../../../CHANGELOG.md:1222 +#: ../../../CHANGELOG.md:1280 msgid "You can help by:" msgstr "" -#: ../../../CHANGELOG.md:1224 +#: ../../../CHANGELOG.md:1282 msgid "**explicitly switching your server to Traefik** right now (see example configuration in [How do I explicitly switch to Traefik right now?](#how-do-i-explicitly-switch-to-traefik-right-now) above), testing, reporting troubles" msgstr "" -#: ../../../CHANGELOG.md:1226 -msgid "**adding native Traefik support to a role** (requires adding Traefik labels, etc.) - for inspiration, see these roles ([prometheus_node_exporter](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter), [prometheus_postgres_exporter](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter)) and how they're hooked into the playbook via [group_vars/matrix_servers](group_vars/matrix_servers)." +#: ../../../CHANGELOG.md:1284 +msgid "**adding native Traefik support to a role** (requires adding Traefik labels, etc.) — for inspiration, see these roles ([prometheus_node_exporter](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter), [prometheus_postgres_exporter](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter)) and how they're hooked into the playbook via [group_vars/matrix_servers](group_vars/matrix_servers)." msgstr "" -#: ../../../CHANGELOG.md:1228 +#: ../../../CHANGELOG.md:1286 msgid "**adding reverse-proxying examples for nginx users** in `examples/nginx`. People who insist on using their own `nginx` server on the same Matrix host, can run Traefik in local-only mode (`traefik_config_entrypoint_web_secure_enabled: false`) and reverse-proxy to the Traefik server" msgstr "" -#: ../../../CHANGELOG.md:1231 +#: ../../../CHANGELOG.md:1289 msgid "2023-02-10" msgstr "" -#: ../../../CHANGELOG.md:1233 +#: ../../../CHANGELOG.md:1291 msgid "Matrix Authentication Support for Jitsi" msgstr "" -#: ../../../CHANGELOG.md:1235 +#: ../../../CHANGELOG.md:1293 msgid "Thanks to [Jakob S.](https://github.com/jakicoll) ([zakk gGmbH](https://github.com/zakk-it)), Jitsi can now use Matrix for authentication (via [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service))." msgstr "" -#: ../../../CHANGELOG.md:1237 +#: ../../../CHANGELOG.md:1295 msgid "Additional details are available in the [Authenticate using Matrix OpenID (Auth-Type 'matrix')](docs/configuring-playbook-jitsi.md#authenticate-using-matrix-openid-auth-type-matrix)." msgstr "" -#: ../../../CHANGELOG.md:1239 +#: ../../../CHANGELOG.md:1297 msgid "Draupnir moderation tool (bot) support" msgstr "" -#: ../../../CHANGELOG.md:1241 +#: ../../../CHANGELOG.md:1299 msgid "Thanks to [FSG-Cat](https://github.com/FSG-Cat), the playbook can now install and configure the [Draupnir](https://github.com/the-draupnir-project/Draupnir) moderation tool (bot). Draupnir is a fork of [Mjolnir](docs/configuring-playbook-bot-mjolnir.md) (which the playbook has supported for a long time) maintained by Mjolnir's former lead developer." msgstr "" -#: ../../../CHANGELOG.md:1243 +#: ../../../CHANGELOG.md:1301 msgid "Additional details are available in [Setting up Draupnir](docs/configuring-playbook-bot-draupnir.md)." msgstr "" -#: ../../../CHANGELOG.md:1246 +#: ../../../CHANGELOG.md:1304 msgid "2023-02-05" msgstr "" -#: ../../../CHANGELOG.md:1248 +#: ../../../CHANGELOG.md:1306 msgid "The matrix-prometheus-postgres-exporter role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1250 +#: ../../../CHANGELOG.md:1308 msgid "**TLDR**: the `matrix-prometheus-postgres-exporter` role is now included from another repository. Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1252 +#: ../../../CHANGELOG.md:1310 msgid "The `matrix-prometheus-postgres-exporter` role (which configures [Prometheus Postgres Exporter](https://github.com/prometheus-community/postgres_exporter)) has been extracted from the playbook and now lives in its own repository at https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter" msgstr "" -#: ../../../CHANGELOG.md:1254 +#: ../../../CHANGELOG.md:1312 msgid "It's still part of the playbook, but is now installed via `ansible-galaxy` (by running `just roles` / `make roles`). Some variables have been renamed (`matrix_prometheus_postgres_exporter_` -> `prometheus_postgres_exporter_`, etc.). The playbook will report all variables that you need to rename to get upgraded. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1256 +#: ../../../CHANGELOG.md:1314 msgid "The `matrix-prometheus-services-proxy-connect` role has bee adjusted to help integrate the new `prometheus_postgres_exporter` role with our own services (`matrix-nginx-proxy`)" msgstr "" -#: ../../../CHANGELOG.md:1258 ../../../CHANGELOG.md:1300 +#: ../../../CHANGELOG.md:1316 ../../../CHANGELOG.md:1358 msgid "Other roles which aren't strictly related to Matrix are likely to follow this fate of moving to their own repositories. Extracting them out allows other Ansible playbooks to make use of these roles easily." msgstr "" -#: ../../../CHANGELOG.md:1261 +#: ../../../CHANGELOG.md:1319 msgid "2023-01-26" msgstr "" -#: ../../../CHANGELOG.md:1263 -msgid "Coturn can now use host-networking" +#: ../../../CHANGELOG.md:1321 +msgid "coturn can now use host-networking" msgstr "" -#: ../../../CHANGELOG.md:1265 -msgid "Large Coturn deployments (with a huge range of ports specified via `matrix_coturn_turn_udp_min_port` and `matrix_coturn_turn_udp_max_port`) experience a huge slowdown with how Docker publishes all these ports (setting up firewall forwarding rules), which leads to a very slow Coturn service startup and shutdown." +#: ../../../CHANGELOG.md:1323 +msgid "Large coturn deployments (with a huge range of ports specified via `matrix_coturn_turn_udp_min_port` and `matrix_coturn_turn_udp_max_port`) experience a huge slowdown with how Docker publishes all these ports (setting up firewall forwarding rules), which leads to a very slow coturn service startup and shutdown." msgstr "" -#: ../../../CHANGELOG.md:1267 -msgid "Such deployments don't need to run Coturn within a private container network anymore. Coturn can now run with host-networking by using configuration like this:" +#: ../../../CHANGELOG.md:1325 +msgid "Such deployments don't need to run coturn within a private container network anymore. coturn can now run with host-networking by using configuration like this:" msgstr "" -#: ../../../CHANGELOG.md:1273 -msgid "With such a configuration, **Docker no longer needs to configure thousands of firewall forwarding rules** each time Coturn starts and stops. This, however, means that **you will need to ensure these ports are open** in your firewall yourself." +#: ../../../CHANGELOG.md:1331 +msgid "With such a configuration, **Docker no longer needs to configure thousands of firewall forwarding rules** each time coturn starts and stops. This, however, means that **you will need to ensure these ports are open** in your firewall yourself." msgstr "" -#: ../../../CHANGELOG.md:1275 -msgid "Thanks to us [tightening Coturn security](#backward-compatibility-tightening-coturn-security-can-lead-to-connectivity-issues), running Coturn with host-networking should be safe and not expose neither other services running on the host, nor other services running on the local network." +#: ../../../CHANGELOG.md:1333 +msgid "Thanks to us [tightening coturn security](#backward-compatibility-tightening-coturn-security-can-lead-to-connectivity-issues), running coturn with host-networking should be safe and not expose neither other services running on the host, nor other services running on the local network." msgstr "" -#: ../../../CHANGELOG.md:1277 -msgid "(Backward Compatibility) Tightening Coturn security can lead to connectivity issues" +#: ../../../CHANGELOG.md:1335 +msgid "(Backward Compatibility) Tightening coturn security can lead to connectivity issues" msgstr "" -#: ../../../CHANGELOG.md:1279 -msgid "**TLDR**: users who run and access their Matrix server on a private network (likely a small minority of users) may experience connectivity issues with our new default Coturn blocklists. They may need to override `matrix_coturn_denied_peer_ips` and remove some IP ranges from it." +#: ../../../CHANGELOG.md:1337 +msgid "**TLDR**: users who run and access their Matrix server on a private network (likely a small minority of users) may experience connectivity issues with our new default coturn blocklists. They may need to override `matrix_coturn_denied_peer_ips` and remove some IP ranges from it." msgstr "" -#: ../../../CHANGELOG.md:1281 -msgid "Inspired by [this security article](https://www.rtcsec.com/article/cve-2020-26262-bypass-of-coturns-access-control-protection/), we've decided to make use of Coturn's `denied-peer-ip` functionality to prevent relaying network traffic to certain private IP subnets. This ensures that your Coturn server won't accidentally try to forward traffic to certain services running on your local networks. We run Coturn in a container and in a private container network by default, which should prevent such access anyway, but having additional block layers in place is better." +#: ../../../CHANGELOG.md:1339 +msgid "Inspired by [this security article](https://www.rtcsec.com/article/cve-2020-26262-bypass-of-coturns-access-control-protection/), we've decided to make use of coturn's `denied-peer-ip` functionality to prevent relaying network traffic to certain private IP subnets. This ensures that your coturn server won't accidentally try to forward traffic to certain services running on your local networks. We run coturn in a container and in a private container network by default, which should prevent such access anyway, but having additional block layers in place is better." msgstr "" -#: ../../../CHANGELOG.md:1283 -msgid "If you access your Matrix server from a local network and need Coturn to relay to private IP addresses, you may observe that relaying is now blocked due to our new default `denied-peer-ip` lists (specified in `matrix_coturn_denied_peer_ips`). If you experience such connectivity problems, consider overriding this setting in your `vars.yml` file and removing certain networks from it." +#: ../../../CHANGELOG.md:1341 +msgid "If you access your Matrix server from a local network and need coturn to relay to private IP addresses, you may observe that relaying is now blocked due to our new default `denied-peer-ip` lists (specified in `matrix_coturn_denied_peer_ips`). If you experience such connectivity problems, consider overriding this setting in your `vars.yml` file and removing certain networks from it." msgstr "" -#: ../../../CHANGELOG.md:1285 -msgid "We've also added `no-multicast-peers` to the default Coturn configuration, but we don't expect this to cause trouble for most people." +#: ../../../CHANGELOG.md:1343 +msgid "We've also added `no-multicast-peers` to the default coturn configuration, but we don't expect this to cause trouble for most people." msgstr "" -#: ../../../CHANGELOG.md:1288 +#: ../../../CHANGELOG.md:1346 msgid "2023-01-21" msgstr "" -#: ../../../CHANGELOG.md:1290 +#: ../../../CHANGELOG.md:1348 msgid "The matrix-prometheus-node-exporter role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1292 +#: ../../../CHANGELOG.md:1350 msgid "**TLDR**: the `matrix-prometheus-node-exporter` role is now included from another repository. Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1294 +#: ../../../CHANGELOG.md:1352 msgid "The `matrix-prometheus-node-exporter` role (which configures [Prometheus node exporter](https://github.com/prometheus/node_exporter)) has been extracted from the playbook and now lives in its own repository at https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter" msgstr "" -#: ../../../CHANGELOG.md:1296 +#: ../../../CHANGELOG.md:1354 msgid "It's still part of the playbook, but is now installed via `ansible-galaxy` (by running `just roles` / `make roles`). Some variables have been renamed (`matrix_prometheus_node_exporter_` -> `prometheus_node_exporter_`, etc.). The playbook will report all variables that you need to rename to get upgraded. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1298 +#: ../../../CHANGELOG.md:1356 msgid "A new `matrix-prometheus-services-proxy-connect` role was added to the playbook to help integrate the new `prometheus_node_exporter` role with our own services (`matrix-nginx-proxy`)" msgstr "" -#: ../../../CHANGELOG.md:1303 +#: ../../../CHANGELOG.md:1361 msgid "2023-01-13" msgstr "" -#: ../../../CHANGELOG.md:1305 +#: ../../../CHANGELOG.md:1363 msgid "Support for running commands via just" msgstr "" -#: ../../../CHANGELOG.md:1307 +#: ../../../CHANGELOG.md:1365 msgid "We've previously used [make](https://www.gnu.org/software/make/) for easily running some playbook commands (e.g. `make roles` which triggers `ansible-galaxy`, see [Makefile](Makefile)). Our `Makefile` is still around and you can still run these commands." msgstr "" -#: ../../../CHANGELOG.md:1309 -msgid "In addition, we've added support for running commands via [just](https://github.com/casey/just) - a more modern command-runner alternative to `make`. Instead of `make roles`, you can now run `just roles` to accomplish the same." +#: ../../../CHANGELOG.md:1367 +msgid "In addition, we've added support for running commands via [just](https://github.com/casey/just) — a more modern command-runner alternative to `make`. Instead of `make roles`, you can now run `just roles` to accomplish the same." msgstr "" -#: ../../../CHANGELOG.md:1311 +#: ../../../CHANGELOG.md:1369 msgid "Our [justfile](justfile) already defines some additional helpful **shortcut** commands that weren't part of our `Makefile`. Here are some examples:" msgstr "" -#: ../../../CHANGELOG.md:1313 +#: ../../../CHANGELOG.md:1371 msgid "`just install-all` to trigger the much longer `ansible-playbook -i inventory/hosts setup.yml --tags=install-all,ensure-matrix-users-created,start` command" msgstr "" -#: ../../../CHANGELOG.md:1314 -msgid "`just install-all --ask-vault-pass` - commands also support additional arguments (`--ask-vault-pass` will be appended to the above installation command)" +#: ../../../CHANGELOG.md:1372 +msgid "`just install-all --ask-vault-pass` — commands also support additional arguments (`--ask-vault-pass` will be appended to the above installation command)" msgstr "" -#: ../../../CHANGELOG.md:1315 -msgid "`just run-tags install-mautrix-slack,start` - to run specific playbook tags" +#: ../../../CHANGELOG.md:1373 +msgid "`just run-tags install-mautrix-slack,start` — to run specific playbook tags" msgstr "" -#: ../../../CHANGELOG.md:1316 -msgid "`just start-all` - (re-)starts all services" +#: ../../../CHANGELOG.md:1374 +msgid "`just start-all` — (re-)starts all services" msgstr "" -#: ../../../CHANGELOG.md:1317 -msgid "`just stop-group postgres` - to stop only the Postgres service" +#: ../../../CHANGELOG.md:1375 +msgid "`just stop-group postgres` — to stop only the Postgres service" msgstr "" -#: ../../../CHANGELOG.md:1318 -msgid "`just register-user alice secret-password yes` - registers an `alice` user with the `secret-password` password and admin access (admin = `yes`)" +#: ../../../CHANGELOG.md:1376 +msgid "`just register-user alice secret-password yes` — registers an `alice` user with the `secret-password` password and admin access (admin = `yes`)" msgstr "" -#: ../../../CHANGELOG.md:1320 +#: ../../../CHANGELOG.md:1378 msgid "Additional helpful commands and shortcuts may be defined in the future." msgstr "" -#: ../../../CHANGELOG.md:1322 +#: ../../../CHANGELOG.md:1380 msgid "This is all completely optional. If you find it difficult to [install `just`](https://github.com/casey/just#installation) or don't find any of this convenient, feel free to run all commands manually." msgstr "" -#: ../../../CHANGELOG.md:1325 +#: ../../../CHANGELOG.md:1383 msgid "2023-01-11" msgstr "" -#: ../../../CHANGELOG.md:1327 +#: ../../../CHANGELOG.md:1385 msgid "mautrix-slack support" msgstr "" -#: ../../../CHANGELOG.md:1329 +#: ../../../CHANGELOG.md:1387 msgid "Thanks to [Cody Neiman](https://github.com/xangelix)'s efforts, the playbook now supports bridging to [Slack](https://slack.com/) via the [mautrix-slack](https://mau.dev/mautrix/slack) bridge. See our [Setting up Mautrix Slack bridging](docs/configuring-playbook-bridge-mautrix-slack.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:1331 +#: ../../../CHANGELOG.md:1389 msgid "**Note**: this is a new Slack bridge. The playbook still retains Slack bridging via [matrix-appservice-slack](docs/configuring-playbook-bridge-appservice-slack.md) and [mx-puppet-slack](docs/configuring-playbook-bridge-mx-puppet-slack.md). You're free to use the bridge that serves you better, or even all three of them (for different users and use-cases)." msgstr "" -#: ../../../CHANGELOG.md:1334 +#: ../../../CHANGELOG.md:1392 msgid "2023-01-10" msgstr "" -#: ../../../CHANGELOG.md:1336 +#: ../../../CHANGELOG.md:1394 msgid "ChatGPT support" msgstr "" -#: ../../../CHANGELOG.md:1338 -msgid "Thanks to [@bertybuttface](https://github.com/bertybuttface), the playbook can now help you set up [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) - a bot through which you can talk to the [ChatGPT](https://openai.com/blog/chatgpt/) model." +#: ../../../CHANGELOG.md:1396 +msgid "Thanks to [@bertybuttface](https://github.com/bertybuttface), the playbook can now help you set up [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) — a bot through which you can talk to the [ChatGPT](https://openai.com/blog/chatgpt/) model." msgstr "" -#: ../../../CHANGELOG.md:1340 +#: ../../../CHANGELOG.md:1398 msgid "See our [Setting up matrix-bot-chatgpt](docs/configuring-playbook-bot-chatgpt.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1343 +#: ../../../CHANGELOG.md:1401 msgid "2022-11-30" msgstr "" -#: ../../../CHANGELOG.md:1345 +#: ../../../CHANGELOG.md:1403 msgid "matrix-postgres-backup has been replaced by the ansible-role-postgres-backup external role" msgstr "" -#: ../../../CHANGELOG.md:1347 -msgid "Just like we've [replaced Postgres with an external role](#matrix-postgres-has-been-replaced-by-the-comdevtureansiblerolepostgres-external-role) on 2022-11-28, we're now replacing `matrix-postgres-backup` with an external role - [com.devture.ansible.role.postgres_backup](https://github.com/mother-of-all-self-hosting/ansible-role-postgres_backup)." +#: ../../../CHANGELOG.md:1405 +msgid "Just like we've [replaced Postgres with an external role](#matrix-postgres-has-been-replaced-by-the-comdevtureansiblerolepostgres-external-role) on 2022-11-28, we're now replacing `matrix-postgres-backup` with an external role — [com.devture.ansible.role.postgres_backup](https://github.com/mother-of-all-self-hosting/ansible-role-postgres_backup)." msgstr "" -#: ../../../CHANGELOG.md:1349 +#: ../../../CHANGELOG.md:1407 msgid "You'll need to rename your `matrix_postgres_backup`-prefixed variables such that they use a `postgres_backup` prefix." msgstr "" -#: ../../../CHANGELOG.md:1352 +#: ../../../CHANGELOG.md:1410 msgid "2022-11-28" msgstr "" -#: ../../../CHANGELOG.md:1354 +#: ../../../CHANGELOG.md:1412 msgid "matrix-postgres has been replaced by the ansible-role-postgres external role" msgstr "" -#: ../../../CHANGELOG.md:1356 -msgid "**TLDR**: the tasks that install the integrated Postgres server now live in an external role - [ansible-role-postgres](https://github.com/mother-of-all-self-hosting/ansible-role-postgres). You'll need to run `make roles` to install it, and to also rename your `matrix_postgres`-prefixed variables to use a `devture_postgres` prefix (e.g. `matrix_postgres_connection_password` -> `postgres_connection_password`). All your data will still be there! Some scripts have moved (`/usr/local/bin/matrix-postgres-cli` -> `/matrix/postgres/bin/cli`)." +#: ../../../CHANGELOG.md:1414 +msgid "**TLDR**: the tasks that install the integrated Postgres server now live in an external role — [ansible-role-postgres](https://github.com/mother-of-all-self-hosting/ansible-role-postgres). You'll need to run `make roles` to install it, and to also rename your `matrix_postgres`-prefixed variables to use a `devture_postgres` prefix (e.g. `matrix_postgres_connection_password` -> `postgres_connection_password`). All your data will still be there! Some scripts have moved (`/usr/local/bin/matrix-postgres-cli` -> `/matrix/postgres/bin/cli`)." msgstr "" -#: ../../../CHANGELOG.md:1358 +#: ../../../CHANGELOG.md:1416 msgid "The `matrix-postgres` role that has been part of the playbook for a long time has been replaced with the [ansible-role-postgres](https://github.com/mother-of-all-self-hosting/ansible-role-postgres) role. This was done as part of our work to [use external roles for some things](#the-playbook-now-uses-external-roles-for-some-things) for better code re-use and maintainability." msgstr "" -#: ../../../CHANGELOG.md:1360 +#: ../../../CHANGELOG.md:1418 msgid "The new role is an upgraded version of the old `matrix-postgres` role with these notable differences:" msgstr "" -#: ../../../CHANGELOG.md:1362 +#: ../../../CHANGELOG.md:1420 msgid "it uses different names for its variables (`matrix_postgres` -> `devture_postgres`)" msgstr "" -#: ../../../CHANGELOG.md:1363 +#: ../../../CHANGELOG.md:1421 msgid "when [Vacuuming PostgreSQL](docs/maintenance-postgres.md#vacuuming-postgresql), it will vacuum all your databases, not just the Synapse one" msgstr "" -#: ../../../CHANGELOG.md:1365 +#: ../../../CHANGELOG.md:1423 msgid "You'll need to run `make roles` to install the new role. You would also need to rename your `matrix_postgres`-prefixed variables to use a `devture_postgres` prefix." msgstr "" -#: ../../../CHANGELOG.md:1367 -msgid "Note: the systemd service still remains the same - `matrix-postgres.service`. Your data will still be in `/matrix/postgres`, etc. Postgres-related scripts will be moved to `/matrix/postgres/bin` (`/usr/local/bin/matrix-postgres-cli` -> `/matrix/postgres/bin/cli`, etc). Also see [The playbook no longer installs scripts in /usr/local/bin](#the-playbook-no-longer-installs-scripts-in-usrlocalbin)." +#: ../../../CHANGELOG.md:1425 +msgid "Note: the systemd service still remains the same — `matrix-postgres.service`. Your data will still be in `/matrix/postgres`, etc. Postgres-related scripts will be moved to `/matrix/postgres/bin` (`/usr/local/bin/matrix-postgres-cli` -> `/matrix/postgres/bin/cli`, etc). Also see [The playbook no longer installs scripts in /usr/local/bin](#the-playbook-no-longer-installs-scripts-in-usrlocalbin)." msgstr "" -#: ../../../CHANGELOG.md:1369 +#: ../../../CHANGELOG.md:1427 msgid "The playbook no longer installs scripts to /usr/local/bin" msgstr "" -#: ../../../CHANGELOG.md:1371 +#: ../../../CHANGELOG.md:1429 msgid "The locations of various scripts installed by the playbook have changed." msgstr "" -#: ../../../CHANGELOG.md:1373 +#: ../../../CHANGELOG.md:1431 msgid "The playbook no longer contaminates your `/usr/local/bin` directory. All scripts installed by the playbook now live in `bin/` directories under `/matrix`. Some examples are below:" msgstr "" -#: ../../../CHANGELOG.md:1375 +#: ../../../CHANGELOG.md:1433 msgid "`/usr/local/bin/matrix-remove-all` -> `/matrix/bin/remove-all`" msgstr "" -#: ../../../CHANGELOG.md:1376 +#: ../../../CHANGELOG.md:1434 msgid "`/usr/local/bin/matrix-postgres-cli` -> `/matrix/postgres/bin/cli`" msgstr "" -#: ../../../CHANGELOG.md:1377 +#: ../../../CHANGELOG.md:1435 msgid "`/usr/local/bin/matrix-ssl-lets-encrypt-certificates-renew` -> `/matrix/ssl/bin/lets-encrypt-certificates-renew`" msgstr "" -#: ../../../CHANGELOG.md:1378 +#: ../../../CHANGELOG.md:1436 msgid "`/usr/local/bin/matrix-synapse-register-user` -> `/matrix/synapse/bin/register-user`" msgstr "" -#: ../../../CHANGELOG.md:1381 +#: ../../../CHANGELOG.md:1439 msgid "2022-11-25" msgstr "" -#: ../../../CHANGELOG.md:1383 +#: ../../../CHANGELOG.md:1441 msgid "2x-5x performance improvements in playbook runtime" msgstr "" -#: ../../../CHANGELOG.md:1385 +#: ../../../CHANGELOG.md:1443 msgid "**TLDR**: the playbook is 2x faster for running `--tags=setup-all` (and various other tags). It also has new `--tags=install-*` tags (like `--tags=install-all`), which skip uninstallation tasks and bring an additional 2.5x speedup. In total, the playbook can maintain your server 5 times faster." msgstr "" -#: ../../../CHANGELOG.md:1387 +#: ../../../CHANGELOG.md:1445 msgid "Our [etke.cc managed Matrix hosting service](https://etke.cc) runs maintenance against hundreds of servers, so the playbook being fast means a lot. The [etke.cc Ansible playbook](https://github.com/etkecc/ansible) (which is an extension of this one) is growing to support more and more services (besides just Matrix), so the Matrix playbook being leaner prevents runtimes from becoming too slow and improves the customer experience." msgstr "" -#: ../../../CHANGELOG.md:1389 +#: ../../../CHANGELOG.md:1447 msgid "Even when running `ansible-playbook` manually (as most of us here do), it's beneficial not to waste time and CPU resources." msgstr "" -#: ../../../CHANGELOG.md:1391 +#: ../../../CHANGELOG.md:1449 msgid "Recently, a few large optimizations have been done to this playbook and its external roles (see [The playbook now uses external roles for some things](#the-playbook-now-uses-external-roles-for-some-things) and don't forget to run `make roles`):" msgstr "" -#: ../../../CHANGELOG.md:1393 +#: ../../../CHANGELOG.md:1451 msgid "Replacing Ansible `import_tasks` calls with `include_tasks`, which decreased runtime in half. Using `import_tasks` is slower and causes Ansible to go through and skip way too many tasks (tasks which could have been skipped altogether by not having Ansible include them in the first place). On an experimental VM, **deployment time was decreased from ~530 seconds to ~250 seconds**." msgstr "" -#: ../../../CHANGELOG.md:1395 +#: ../../../CHANGELOG.md:1453 msgid "Introducing new `install-*` tags (`install-all` and `install-COMPONENT`, e.g. `install-synapse`, `install-bot-mjolnir`), which only run Ansible tasks pertaining to installation, while skipping uninstallation tasks. In most cases, people are maintaining the same setup or they're *adding* new components. Removing components is rare. Running thousands of uninstallation tasks each time is wasteful. On an experimental VM, **deployment time was decreased from ~250 seconds (`--tags=setup-all`) to ~100 seconds (`--tags=install-all`)**." msgstr "" -#: ../../../CHANGELOG.md:1397 +#: ../../../CHANGELOG.md:1455 msgid "You can still use `--tags=setup-all`. In fact, that's the best way to ensure your server is reconciled with the `vars.yml` configuration." msgstr "" -#: ../../../CHANGELOG.md:1399 +#: ../../../CHANGELOG.md:1457 msgid "If you know you haven't uninstalled any services since the last time you ran the playbook, you could run `--tags=install-all` instead and benefit from quicker runtimes. It should be noted that a service may become \"eligible for uninstallation\" even if your `vars.yml` file remains the same. In rare cases, we toggle services from being auto-installed to being optional, like we did on the 17th of March 2022 when we made [ma1sd not get installed by default](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/CHANGELOG.md#compatibility-break-ma1sd-identity-server-no-longer-installed-by-default). In such rare cases, you'd also need to run `--tags=setup-all`." msgstr "" -#: ../../../CHANGELOG.md:1402 +#: ../../../CHANGELOG.md:1460 msgid "2022-11-22" msgstr "" -#: ../../../CHANGELOG.md:1404 +#: ../../../CHANGELOG.md:1462 msgid "Automatic `matrix_architecture` determination" msgstr "" -#: ../../../CHANGELOG.md:1406 +#: ../../../CHANGELOG.md:1464 msgid "From now on, the playbook automatically determines your server's architecture and sets the `matrix_architecture` variable accordingly. You no longer need to set this variable manually in your `vars.yml` file." msgstr "" -#: ../../../CHANGELOG.md:1408 +#: ../../../CHANGELOG.md:1466 msgid "Docker and the Docker SDK for Python are now installed via external roles" msgstr "" -#: ../../../CHANGELOG.md:1412 +#: ../../../CHANGELOG.md:1470 msgid "Docker will now be installed on the server via the [geerlingguy.docker](https://github.com/geerlingguy/ansible-role-docker) Ansible role. If you'd like to manage the Docker installation yourself, you can disable the playbook's installation of Docker by setting `matrix_playbook_docker_installation_enabled: false`." msgstr "" -#: ../../../CHANGELOG.md:1414 +#: ../../../CHANGELOG.md:1472 msgid "The Docker SDK for Python (named `docker-python`, `python-docker`, etc. on the different platforms) is now also installed by another role ([com.devture.ansible.role.docker_sdk_for_python](https://github.com/devture/com.devture.ansible.role.docker_sdk_for_python)). To disable this role and install the necessary tools yourself, use `devture_docker_sdk_for_python_installation_enabled: false`." msgstr "" -#: ../../../CHANGELOG.md:1416 +#: ../../../CHANGELOG.md:1474 msgid "If you're hitting issues with Docker installation or Docker SDK for Python installation, consider reporting bugs or contributing to these other projects." msgstr "" -#: ../../../CHANGELOG.md:1418 -msgid "These additional roles are downloaded into the playbook directory (to `roles/galaxy`) via an `ansible-galaxy ..` command. `make roles` is an easy shortcut for invoking the `ansible-galaxy` command to download these roles." +#: ../../../CHANGELOG.md:1476 +msgid "These additional roles are downloaded into the playbook directory (to `roles/galaxy`) via an `ansible-galaxy …` command. `make roles` is an easy shortcut for invoking the `ansible-galaxy` command to download these roles." msgstr "" -#: ../../../CHANGELOG.md:1421 +#: ../../../CHANGELOG.md:1479 msgid "2022-11-20" msgstr "" -#: ../../../CHANGELOG.md:1423 -msgid "(Backward Compatibility Break) Changing how reverse-proxying to Synapse works - now via a `matrix-synapse-reverse-proxy-companion` service" +#: ../../../CHANGELOG.md:1481 +msgid "(Backward Compatibility Break) Changing how reverse-proxying to Synapse works — now via a `matrix-synapse-reverse-proxy-companion` service" msgstr "" -#: ../../../CHANGELOG.md:1425 -msgid "**TLDR**: There's now a `matrix-synapse-reverse-proxy-companion` nginx service, which helps with reverse-proxying to Synapse and its various worker processes (if workers are enabled), so that `matrix-nginx-proxy` can be relieved of this role. `matrix-nginx-proxy` still remains as the public SSL-terminating reverse-proxy in the playbook. `matrix-synapse-reverse-proxy-companion` is just one more reverse-proxy thrown into the mix for convenience. People with a more custom reverse-proxying configuration may be affected - see [Webserver configuration](#webserver-configuration) below." +#: ../../../CHANGELOG.md:1483 +msgid "**TLDR**: There's now a `matrix-synapse-reverse-proxy-companion` nginx service, which helps with reverse-proxying to Synapse and its various worker processes (if workers are enabled), so that `matrix-nginx-proxy` can be relieved of this role. `matrix-nginx-proxy` still remains as the public SSL-terminating reverse-proxy in the playbook. `matrix-synapse-reverse-proxy-companion` is just one more reverse-proxy thrown into the mix for convenience. People with a more custom reverse-proxying configuration may be affected — see [Webserver configuration](#webserver-configuration) below." msgstr "" -#: ../../../CHANGELOG.md:1427 +#: ../../../CHANGELOG.md:1485 msgid "Background" msgstr "" -#: ../../../CHANGELOG.md:1429 +#: ../../../CHANGELOG.md:1487 msgid "Previously, `matrix-nginx-proxy` forwarded requests to Synapse directly. When Synapse is running in worker mode, the reverse-proxying configuration is more complicated (different requests need to go to different Synapse worker processes). `matrix-nginx-proxy` had configuration for sending each URL endpoint to the correct Synapse worker responsible for handling it. However, sometimes people like to disable `matrix-nginx-proxy` (for whatever reason) as detailed in [Using your own webserver, instead of this playbook's nginx proxy](docs/configuring-playbook-own-webserver.md)." msgstr "" -#: ../../../CHANGELOG.md:1431 -msgid "Because `matrix-nginx-proxy` was so central to request forwarding, when it was disabled and Synapse was running with workers enabled, there was nothing which could forward requests to the correct place anymore.. which caused [problems such as this one affecting Dimension](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2090)." +#: ../../../CHANGELOG.md:1489 +msgid "Because `matrix-nginx-proxy` was so central to request forwarding, when it was disabled and Synapse was running with workers enabled, there was nothing which could forward requests to the correct place anymore… which caused [problems such as this one affecting Dimension](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2090)." msgstr "" -#: ../../../CHANGELOG.md:1433 +#: ../../../CHANGELOG.md:1491 msgid "Solution" msgstr "" -#: ../../../CHANGELOG.md:1435 +#: ../../../CHANGELOG.md:1493 msgid "From now on, `matrix-nginx-proxy` is relieved of its function of reverse-proxying to Synapse and its various worker processes. This role is now handled by the new `matrix-synapse-reverse-proxy-companion` nginx service and works even if `matrix-nginx-proxy` is disabled. The purpose of the new `matrix-synapse-reverse-proxy-companion` service is to:" msgstr "" -#: ../../../CHANGELOG.md:1437 +#: ../../../CHANGELOG.md:1495 msgid "serve as a companion to Synapse and know how to reverse-proxy to Synapse correctly (no matter if workers are enabled or not)" msgstr "" -#: ../../../CHANGELOG.md:1439 +#: ../../../CHANGELOG.md:1497 msgid "provide a unified container address for reaching Synapse (no matter if workers are enabled or not)" msgstr "" -#: ../../../CHANGELOG.md:1440 +#: ../../../CHANGELOG.md:1498 msgid "`matrix-synapse-reverse-proxy-companion:8008` for Synapse Client-Server API traffic" msgstr "" -#: ../../../CHANGELOG.md:1441 +#: ../../../CHANGELOG.md:1499 msgid "`matrix-synapse-reverse-proxy-companion:8048` for Synapse Server-Server (Federation) API traffic" msgstr "" -#: ../../../CHANGELOG.md:1443 -msgid "simplify `matrix-nginx-proxy` configuration - it now only needs to send requests to `matrix-synapse-reverse-proxy-companion` or `matrix-dendrite`, etc., without having to worry about workers" +#: ../../../CHANGELOG.md:1501 +msgid "simplify `matrix-nginx-proxy` configuration — it now only needs to send requests to `matrix-synapse-reverse-proxy-companion` or `matrix-dendrite`, etc., without having to worry about workers" msgstr "" -#: ../../../CHANGELOG.md:1445 +#: ../../../CHANGELOG.md:1503 msgid "allow reverse-proxying to Synapse, even if `matrix-nginx-proxy` is disabled" msgstr "" -#: ../../../CHANGELOG.md:1447 +#: ../../../CHANGELOG.md:1505 msgid "`matrix-nginx-proxy` still remains as the public SSL-terminating reverse-proxy in the playbook. All traffic goes through it before reaching any of the services. It's just that now the Synapse traffic is routed through `matrix-synapse-reverse-proxy-companion` like this:" msgstr "" -#: ../../../CHANGELOG.md:1449 +#: ../../../CHANGELOG.md:1507 msgid "(`matrix-nginx-proxy` -> `matrix-synapse-reverse-proxy-companion` -> (`matrix-synapse` or some Synapse worker))." msgstr "" -#: ../../../CHANGELOG.md:1451 +#: ../../../CHANGELOG.md:1509 msgid "Various services (like Dimension, etc.) still talk to Synapse via `matrix-nginx-proxy` (e.g. `http://matrix-nginx-proxy:12080`) preferentially. They only talk to Synapse via the reverse-proxy companion (e.g. `http://matrix-synapse-reverse-proxy-companion:8008`) if `matrix-nginx-proxy` is disabled. Services should not be talking to Synapse (e.g. `https://matrix-synapse:8008` directly anymore), because when workers are enabled, that's the Synapse `master` process and may not be serving all URL endpoints needed by the service." msgstr "" -#: ../../../CHANGELOG.md:1453 +#: ../../../CHANGELOG.md:1511 msgid "Webserver configuration" msgstr "" -#: ../../../CHANGELOG.md:1455 +#: ../../../CHANGELOG.md:1513 msgid "if you're using `matrix-nginx-proxy` (`matrix_nginx_proxy_enabled: true`, which is the default for the playbook), you don't need to do anything" msgstr "" -#: ../../../CHANGELOG.md:1457 +#: ../../../CHANGELOG.md:1515 msgid "if you're using your own `nginx` webserver running on the server, you shouldn't be affected. The `/matrix/nginx/conf.d` configuration and exposed ports that you're relying on will automatically be updated in a way that should work" msgstr "" -#: ../../../CHANGELOG.md:1459 -msgid "if you're using another local webserver (e.g. Apache, etc.) and haven't changed any ports (`matrix_*_host_bind_port` definitions), you shouldn't be affected. You're likely sending Matrix traffic to `127.0.0.1:8008` and `127.0.0.1:8048`. These ports (`8008` and `8048`) will still be exposed on `127.0.0.1` by default - just not by the `matrix-synapse` container from now on, but by the `matrix-synapse-reverse-proxy-companion` container instead" +#: ../../../CHANGELOG.md:1517 +msgid "if you're using another local webserver (e.g. Apache, etc.) and haven't changed any ports (`matrix_*_host_bind_port` definitions), you shouldn't be affected. You're likely sending Matrix traffic to `127.0.0.1:8008` and `127.0.0.1:8048`. These ports (`8008` and `8048`) will still be exposed on `127.0.0.1` by default — just not by the `matrix-synapse` container from now on, but by the `matrix-synapse-reverse-proxy-companion` container instead" msgstr "" -#: ../../../CHANGELOG.md:1461 +#: ../../../CHANGELOG.md:1519 msgid "if you've been exposing `matrix-synapse` ports (`matrix_synapse_container_client_api_host_bind_port`, etc.) manually, you should consider exposing `matrix-synapse-reverse-proxy-companion` ports instead" msgstr "" -#: ../../../CHANGELOG.md:1463 +#: ../../../CHANGELOG.md:1521 msgid "if you're running Traefik and reverse-proxying directly to the `matrix-synapse` container, you should start reverse-proxying to the `matrix-synapse-reverse-proxy-companion` container instead. See [our updated Traefik example configuration](docs/configuring-playbook-own-webserver.md#sample-configuration-for-running-behind-traefik-20). Note: we now recommend calling the federation entry point `federation` (instead of `synapse`) and reverse-proxying the federation traffic via `matrix-nginx-proxy`, instead of sending it directly to Synapse (or `matrix-synapse-reverse-proxy-companion`). This makes the configuration simpler." msgstr "" -#: ../../../CHANGELOG.md:1466 +#: ../../../CHANGELOG.md:1524 msgid "2022-11-05" msgstr "" -#: ../../../CHANGELOG.md:1468 +#: ../../../CHANGELOG.md:1526 msgid "(Backward Compatibility Break) A new default standalone mode for Etherpad" msgstr "" -#: ../../../CHANGELOG.md:1470 +#: ../../../CHANGELOG.md:1528 msgid "Until now, [Etherpad](https://etherpad.org/) (which [the playbook could install for you](docs/configuring-playbook-etherpad.md)) required the [Dimension integration manager](docs/configuring-playbook-dimension.md) to also be installed, because Etherpad was hosted on the Dimension domain (at `dimension.example.com/etherpad`)." msgstr "" -#: ../../../CHANGELOG.md:1472 +#: ../../../CHANGELOG.md:1530 msgid "From now on, Etherpad can be installed in `standalone` mode on `etherpad.example.com` and used even without Dimension. This is much more versatile, so the playbook now defaults to this new mode (`etherpad_mode: standalone`)." msgstr "" -#: ../../../CHANGELOG.md:1474 +#: ../../../CHANGELOG.md:1532 msgid "If you've already got both Etherpad and Dimension in use you could:" msgstr "" -#: ../../../CHANGELOG.md:1476 +#: ../../../CHANGELOG.md:1534 msgid "**either** keep hosting Etherpad under the Dimension domain by adding `etherpad_mode: dimension` to your `vars.yml` file. All your existing room widgets will continue working at the same URLs and no other changes will be necessary." msgstr "" -#: ../../../CHANGELOG.md:1478 +#: ../../../CHANGELOG.md:1536 msgid "**or**, you could change to hosting Etherpad separately on `etherpad.example.com`. You will need to [configure a DNS record](docs/configuring-dns.md) for this new domain. You will also need to reconfigure Dimension to use the new pad URLs (`https://etherpad.example.com/…`) going forward (refer to our [configuring Etherpad documentation](docs/configuring-playbook-etherpad.md)). All your existing room widgets (which still use `https://dimension.example.com/etherpad/…`) will break as Etherpad is not hosted there anymore. You will need to re-add them or to consider not using `standalone` mode" msgstr "" -#: ../../../CHANGELOG.md:1481 +#: ../../../CHANGELOG.md:1539 msgid "2022-11-04" msgstr "" -#: ../../../CHANGELOG.md:1483 +#: ../../../CHANGELOG.md:1541 msgid "The playbook now uses external roles for some things" msgstr "" -#: ../../../CHANGELOG.md:1485 +#: ../../../CHANGELOG.md:1543 msgid "**TLDR**: when updating the playbook and before running it, you'll need to run `make roles` to make [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) download dependency roles (see the [`requirements.yml` file](requirements.yml)) to the `roles/galaxy` directory. Without this, the playbook won't work." msgstr "" -#: ../../../CHANGELOG.md:1487 +#: ../../../CHANGELOG.md:1545 msgid "We're in the process of trimming the playbook and making it reuse Ansible roles." msgstr "" -#: ../../../CHANGELOG.md:1489 +#: ../../../CHANGELOG.md:1547 msgid "Starting now, the playbook is composed of 2 types of Ansible roles:" msgstr "" -#: ../../../CHANGELOG.md:1491 +#: ../../../CHANGELOG.md:1549 msgid "those that live within the playbook itself (`roles/custom/*`)" msgstr "" -#: ../../../CHANGELOG.md:1493 +#: ../../../CHANGELOG.md:1551 msgid "those downloaded from other sources (using [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) to `roles/galaxy`, based on the [`requirements.yml` file](requirements.yml)). These roles are maintained by us or by other people from the Ansible community." msgstr "" -#: ../../../CHANGELOG.md:1495 -msgid "We're doing this for greater code-reuse (across Ansible playbooks, including our own related playbooks [gitea-docker-ansible-deploy](https://github.com/spantaleev/gitea-docker-ansible-deploy) and [nextcloud-docker-ansible-deploy](https://github.com/spantaleev/nextcloud-docker-ansible-deploy)) and decreased maintenance burden. Until now, certain features were copy-pasted across playbooks or were maintained separately in each one, with improvements often falling behind. We've also tended to do too much by ourselves - installing Docker on the server from our `matrix-base` role, etc. - something that we'd rather not do anymore by switching to the [geerlingguy.docker](https://galaxy.ansible.com/geerlingguy/docker) role." +#: ../../../CHANGELOG.md:1553 +msgid "We're doing this for greater code-reuse (across Ansible playbooks, including our own related playbooks [gitea-docker-ansible-deploy](https://github.com/spantaleev/gitea-docker-ansible-deploy) and [nextcloud-docker-ansible-deploy](https://github.com/spantaleev/nextcloud-docker-ansible-deploy)) and decreased maintenance burden. Until now, certain features were copy-pasted across playbooks or were maintained separately in each one, with improvements often falling behind. We've also tended to do too much by ourselves — installing Docker on the server from our `matrix-base` role, etc. — something that we'd rather not do anymore by switching to the [geerlingguy.docker](https://galaxy.ansible.com/geerlingguy/docker) role." msgstr "" -#: ../../../CHANGELOG.md:1497 +#: ../../../CHANGELOG.md:1555 msgid "Some variable names will change during the transition to having more and more external (galaxy) roles. There's a new `custom/matrix_playbook_migration` role added to the playbook which will tell you about these changes each time you run the playbook." msgstr "" -#: ../../../CHANGELOG.md:1499 +#: ../../../CHANGELOG.md:1557 msgid "**From now on**, every time you update the playbook (well, every time the `requirements.yml` file changes), it's best to run `make roles` to update the roles downloaded from other sources. `make roles` is a shortcut (a `roles` target defined in [`Makefile`](Makefile) and executed by the [`make`](https://www.gnu.org/software/make/) utility) which ultimately runs [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) to download Ansible roles. If you don't have `make`, you can also manually run the commands seen in the `Makefile`." msgstr "" -#: ../../../CHANGELOG.md:1502 +#: ../../../CHANGELOG.md:1560 msgid "2022-10-14" msgstr "" -#: ../../../CHANGELOG.md:1504 +#: ../../../CHANGELOG.md:1562 msgid "synapse-s3-storage-provider support" msgstr "" -#: ../../../CHANGELOG.md:1506 +#: ../../../CHANGELOG.md:1564 msgid "**`synapse-s3-storage-provider` support is very new and still relatively untested. Using it may cause data loss.**" msgstr "" -#: ../../../CHANGELOG.md:1508 -msgid "You can now store your Synapse media repository files on Amazon S3 (or another S3-compatible object store) using [synapse-s3-storage-provider](https://github.com/matrix-org/synapse-s3-storage-provider) - a media provider for Synapse (Python module), which should work faster and more reliably than our previous [Goofys](docs/configuring-playbook-s3-goofys.md) implementation (Goofys will continue to work)." +#: ../../../CHANGELOG.md:1566 +msgid "You can now store your Synapse media repository files on Amazon S3 (or another S3-compatible object store) using [synapse-s3-storage-provider](https://github.com/matrix-org/synapse-s3-storage-provider) — a media provider for Synapse (Python module), which should work faster and more reliably than our previous [Goofys](docs/configuring-playbook-s3-goofys.md) implementation (Goofys will continue to work)." msgstr "" -#: ../../../CHANGELOG.md:1510 +#: ../../../CHANGELOG.md:1568 msgid "This is not just for initial installations. Users with existing files (stored in the local filesystem) can also migrate their files to `synapse-s3-storage-provider`." msgstr "" -#: ../../../CHANGELOG.md:1512 +#: ../../../CHANGELOG.md:1570 msgid "To get started, see our [Storing Synapse media files on Amazon S3 with synapse-s3-storage-provider](docs/configuring-playbook-synapse-s3-storage-provider.md) documentation." msgstr "" -#: ../../../CHANGELOG.md:1514 +#: ../../../CHANGELOG.md:1572 msgid "Synapse container image customization support" msgstr "" -#: ../../../CHANGELOG.md:1516 +#: ../../../CHANGELOG.md:1574 msgid "We now support customizing the Synapse container image by adding additional build steps to its [`Dockerfile`](https://docs.docker.com/engine/reference/builder/)." msgstr "" -#: ../../../CHANGELOG.md:1518 +#: ../../../CHANGELOG.md:1576 msgid "Our [synapse-s3-storage-provider support](#synapse-s3-storage-provider-support) is actually built on this. When `s3-storage-provider` is enabled, we automatically add additional build steps to install its Python module into the Synapse image." msgstr "" -#: ../../../CHANGELOG.md:1520 +#: ../../../CHANGELOG.md:1578 msgid "Besides this kind of auto-added build steps (for components supported by the playbook), we also let you inject your own custom build steps using configuration like this:" msgstr "" -#: ../../../CHANGELOG.md:1531 +#: ../../../CHANGELOG.md:1589 msgid "People who have needed to customize Synapse previously had to fork the git repository, make their changes to the `Dockerfile` there, point the playbook to the new repository (`matrix_synapse_container_image_self_build_repo`) and enable self-building from scratch (`matrix_synapse_container_image_self_build: true`). This is harder and slower." msgstr "" -#: ../../../CHANGELOG.md:1533 +#: ../../../CHANGELOG.md:1591 msgid "With the new Synapse-customization feature in the playbook, we use the original upstream (pre-built, if available) Synapse image and only build on top of it, right on the Matrix server. This is much faster than building all of Synapse from scratch." msgstr "" -#: ../../../CHANGELOG.md:1536 +#: ../../../CHANGELOG.md:1594 msgid "2022-10-02" msgstr "" -#: ../../../CHANGELOG.md:1538 +#: ../../../CHANGELOG.md:1596 msgid "matrix-ldap-registration-proxy support" msgstr "" -#: ../../../CHANGELOG.md:1540 -msgid "Thanks to [@TheOneWithTheBraid](https://github.com/TheOneWithTheBraid), we now support installing [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) - a proxy which handles Matrix registration requests and forwards them to LDAP." +#: ../../../CHANGELOG.md:1598 +msgid "Thanks to [@TheOneWithTheBraid](https://github.com/TheOneWithTheBraid), we now support installing [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) — a proxy which handles Matrix registration requests and forwards them to LDAP." msgstr "" -#: ../../../CHANGELOG.md:1542 +#: ../../../CHANGELOG.md:1600 msgid "See our [Setting up matrix-ldap-registration-proxy](docs/configuring-playbook-matrix-ldap-registration-proxy.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1545 +#: ../../../CHANGELOG.md:1603 msgid "2022-09-15" msgstr "" -#: ../../../CHANGELOG.md:1547 +#: ../../../CHANGELOG.md:1605 msgid "(Potential Backward Compatibility Break) Major improvements to Synapse workers" msgstr "" -#: ../../../CHANGELOG.md:1549 +#: ../../../CHANGELOG.md:1607 msgid "People who are interested in running a Synapse worker setup should know that **our Synapse worker implementation is much more powerful now**:" msgstr "" -#: ../../../CHANGELOG.md:1551 +#: ../../../CHANGELOG.md:1609 msgid "we've added support for [Stream writers](#stream-writers-support)" msgstr "" -#: ../../../CHANGELOG.md:1552 +#: ../../../CHANGELOG.md:1610 msgid "we've added support for [multiple federation sender workers](#multiple-federation-sender-workers-support)" msgstr "" -#: ../../../CHANGELOG.md:1553 +#: ../../../CHANGELOG.md:1611 msgid "we've added support for [multiple pusher workers](#multiple-pusher-workers-support)" msgstr "" -#: ../../../CHANGELOG.md:1554 +#: ../../../CHANGELOG.md:1612 msgid "we've added support for [running background tasks on a worker](#background-tasks-can-run-on-a-worker)" msgstr "" -#: ../../../CHANGELOG.md:1555 +#: ../../../CHANGELOG.md:1613 msgid "we've restored support for [`appservice` workers](#appservice-worker-support-is-back)" msgstr "" -#: ../../../CHANGELOG.md:1556 +#: ../../../CHANGELOG.md:1614 msgid "we've restored support for [`user_dir` workers](#user-directory-worker-support-is-back)" msgstr "" -#: ../../../CHANGELOG.md:1557 +#: ../../../CHANGELOG.md:1615 msgid "we've made it possible to [reliably use more than 1 `media_repository` worker](#using-more-than-1-media-repository-worker-is-now-more-reliable)" msgstr "" -#: ../../../CHANGELOG.md:1558 +#: ../../../CHANGELOG.md:1616 msgid "see the [Potential Backward Incompatibilities after these Synapse worker changes](#potential-backward-incompatibilities-after-these-synapse-worker-changes)" msgstr "" -#: ../../../CHANGELOG.md:1560 +#: ../../../CHANGELOG.md:1618 msgid "Stream writers support" msgstr "" -#: ../../../CHANGELOG.md:1562 +#: ../../../CHANGELOG.md:1620 msgid "From now on, the playbook lets you easily set up various [stream writer workers](https://matrix-org.github.io/synapse/latest/workers.html#stream-writers) which can handle different streams (`events` stream; `typing` URL endpoints, `to_device` URL endpoints, `account_data` URL endpoints, `receipts` URL endpoints, `presence` URL endpoints). All of this work was previously handled by the main Synapse process, but can now be offloaded to stream writer worker processes." msgstr "" -#: ../../../CHANGELOG.md:1564 +#: ../../../CHANGELOG.md:1622 msgid "If you're using `matrix_synapse_workers_preset: one-of-each`, you'll automatically get 6 additional workers (one for each of the above stream types). Our `little-federation-helper` preset (meant to be quite minimal and focusing in improved federation performance) does not include stream writer workers." msgstr "" -#: ../../../CHANGELOG.md:1566 +#: ../../../CHANGELOG.md:1624 msgid "If you'd like to customize the number of workers we also make that possible using these variables:" msgstr "" -#: ../../../CHANGELOG.md:1579 +#: ../../../CHANGELOG.md:1637 msgid "Multiple federation sender workers support" msgstr "" -#: ../../../CHANGELOG.md:1581 +#: ../../../CHANGELOG.md:1639 msgid "Until now, we only supported a single `federation_sender` worker (`matrix_synapse_workers_federation_sender_workers_count` could either be `0` or `1`). From now on, you can have as many as you want to help with your federation traffic." msgstr "" -#: ../../../CHANGELOG.md:1583 +#: ../../../CHANGELOG.md:1641 msgid "Multiple pusher workers support" msgstr "" -#: ../../../CHANGELOG.md:1585 +#: ../../../CHANGELOG.md:1643 msgid "Until now, we only supported a single `pusher` worker (`matrix_synapse_workers_pusher_workers_count` could either be `0` or `1`). From now on, you can have as many as you want to help with pushing notifications out." msgstr "" -#: ../../../CHANGELOG.md:1587 +#: ../../../CHANGELOG.md:1645 msgid "Background tasks can run on a worker" msgstr "" -#: ../../../CHANGELOG.md:1589 +#: ../../../CHANGELOG.md:1647 msgid "From now on, you can put [background task processing on a worker](https://matrix-org.github.io/synapse/latest/workers.html#background-tasks)." msgstr "" -#: ../../../CHANGELOG.md:1591 +#: ../../../CHANGELOG.md:1649 msgid "With `matrix_synapse_workers_preset: one-of-each`, you'll get one `background` worker automatically. You can also control the `background` workers count with `matrix_synapse_workers_background_workers_count`. Only `0` or `1` workers of this type are supported by Synapse." msgstr "" -#: ../../../CHANGELOG.md:1593 +#: ../../../CHANGELOG.md:1651 msgid "Appservice worker support is back" msgstr "" -#: ../../../CHANGELOG.md:1595 +#: ../../../CHANGELOG.md:1653 msgid "We previously had an `appservice` worker type, which [Synapse deprecated in v1.59.0](https://github.com/element-hq/synapse/blob/v1.59.0/docs/upgrade.md#deprecation-of-the-synapseappappservice-and-synapseappuser_dir-worker-application-types). So did we, at the time." msgstr "" -#: ../../../CHANGELOG.md:1597 +#: ../../../CHANGELOG.md:1655 msgid "The new way to implement such workers is by using a `generic_worker` and dedicating it to the task of talking to Application Services. From now on, we have support for this." msgstr "" -#: ../../../CHANGELOG.md:1599 +#: ../../../CHANGELOG.md:1657 msgid "With `matrix_synapse_workers_preset: one-of-each`, you'll get one `appservice` worker automatically. You can also control the `appservice` workers count with `matrix_synapse_workers_appservice_workers_count`. Only `0` or `1` workers of this type are supported by Synapse." msgstr "" -#: ../../../CHANGELOG.md:1601 +#: ../../../CHANGELOG.md:1659 msgid "User Directory worker support is back" msgstr "" -#: ../../../CHANGELOG.md:1603 +#: ../../../CHANGELOG.md:1661 msgid "We previously had a `user_dir` worker type, which [Synapse deprecated in v1.59.0](https://github.com/element-hq/synapse/blob/v1.59.0/docs/upgrade.md#deprecation-of-the-synapseappappservice-and-synapseappuser_dir-worker-application-types). So did we, at the time." msgstr "" -#: ../../../CHANGELOG.md:1605 +#: ../../../CHANGELOG.md:1663 msgid "The new way to implement such workers is by using a `generic_worker` and dedicating it to the task of serving the user directory. From now on, we have support for this." msgstr "" -#: ../../../CHANGELOG.md:1607 +#: ../../../CHANGELOG.md:1665 msgid "With `matrix_synapse_workers_preset: one-of-each`, you'll get one `user_dir` worker automatically. You can also control the `user_dir` workers count with `matrix_synapse_workers_user_dir_workers_count`. Only `0` or `1` workers of this type are supported by Synapse." msgstr "" -#: ../../../CHANGELOG.md:1609 +#: ../../../CHANGELOG.md:1667 msgid "Using more than 1 media repository worker is now more reliable" msgstr "" -#: ../../../CHANGELOG.md:1611 +#: ../../../CHANGELOG.md:1669 msgid "With `matrix_synapse_workers_preset: one-of-each`, we only launch one `media_repository` worker." msgstr "" -#: ../../../CHANGELOG.md:1613 +#: ../../../CHANGELOG.md:1671 msgid "If you've been configuring `matrix_synapse_workers_media_repository_workers_count` manually, you may have increased that to more workers. When multiple media repository workers are in use, background tasks related to the media repository must always be configured to run on a single `media_repository` worker via `media_instance_running_background_jobs`. Until now, we weren't doing this correctly, but we now are." msgstr "" -#: ../../../CHANGELOG.md:1615 +#: ../../../CHANGELOG.md:1673 msgid "Potential Backward Incompatibilities after these Synapse worker changes" msgstr "" -#: ../../../CHANGELOG.md:1617 +#: ../../../CHANGELOG.md:1675 msgid "Below we'll discuss **potential backward incompatibilities**." msgstr "" -#: ../../../CHANGELOG.md:1619 +#: ../../../CHANGELOG.md:1677 msgid "**Worker names** (container names, systemd services, worker configuration files) **have changed**. Workers are now labeled sequentially (e.g. `matrix-synapse-worker_generic_worker-18111` -> `matrix-synapse-worker-generic-0`). The playbook will handle these changes automatically." msgstr "" -#: ../../../CHANGELOG.md:1621 +#: ../../../CHANGELOG.md:1679 msgid "Due to increased worker types support above, people who use `matrix_synapse_workers_preset: one-of-each` should be aware that with these changes, **the playbook will deploy 9 additional workers** (6 stream writers, 1 `appservice` worker, 1 `user_dir` worker, 1 background task worker). This **may increase RAM/CPU usage**, etc. If you find your server struggling, consider disabling some workers with the appropriate `matrix_synapse_workers_*_workers_count` variables." msgstr "" -#: ../../../CHANGELOG.md:1623 +#: ../../../CHANGELOG.md:1681 msgid "**Metric endpoints have also changed** (`/metrics/synapse/worker/generic_worker-18111` -> `/metrics/synapse/worker/generic-worker-0`). If you're [collecting metrics to an external Prometheus server](docs/configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server), consider revisiting our [Collecting Synapse worker metrics to an external Prometheus server](docs/configuring-playbook-prometheus-grafana.md#collecting-synapse-worker-metrics-to-an-external-prometheus-server) docs and updating your Prometheus configuration. **If you're collecting metrics to the integrated Prometheus server** (not enabled by default), **your Prometheus configuration will be updated automatically**. Old data (from before this change) may stick around though." msgstr "" -#: ../../../CHANGELOG.md:1625 +#: ../../../CHANGELOG.md:1683 msgid "**the format of `matrix_synapse_workers_enabled_list` has changed**. You were never advised to use this variable for directly creating workers (we advise people to control workers using `matrix_synapse_workers_preset` or by tweaking `matrix_synapse_workers_*_workers_count` variables only), but some people may have started using the `matrix_synapse_workers_enabled_list` variable to gain more control over workers. If you're one of them, you'll need to adjust its value. See `roles/custom/matrix-synapse/defaults/main.yml` for more information on the new format. The playbook will also do basic validation and complain if you got something wrong." msgstr "" -#: ../../../CHANGELOG.md:1628 +#: ../../../CHANGELOG.md:1686 msgid "2022-09-09" msgstr "" -#: ../../../CHANGELOG.md:1630 +#: ../../../CHANGELOG.md:1688 msgid "Cactus Comments support" msgstr "" -#: ../../../CHANGELOG.md:1632 -msgid "Thanks to [Julian-Samuel Gebühr (@moan0s)](https://github.com/moan0s), the playbook can now set up [Cactus Comments](https://cactus.chat) - federated comment system for the web based on Matrix." +#: ../../../CHANGELOG.md:1690 +msgid "Thanks to [Julian-Samuel Gebühr (@moan0s)](https://github.com/moan0s), the playbook can now set up [Cactus Comments](https://cactus.chat) — federated comment system for the web based on Matrix." msgstr "" -#: ../../../CHANGELOG.md:1634 +#: ../../../CHANGELOG.md:1692 msgid "See our [Setting up Cactus Comments](docs/configuring-playbook-cactus-comments.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1637 +#: ../../../CHANGELOG.md:1695 msgid "2022-08-23" msgstr "" -#: ../../../CHANGELOG.md:1639 +#: ../../../CHANGELOG.md:1697 msgid "Postmoogle email bridge support" msgstr "" -#: ../../../CHANGELOG.md:1641 -msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook can now set up the new [Postmoogle](https://github.com/etkecc/postmoogle) email bridge. Postmoogle is like the [email2matrix bridge](https://github.com/devture/email2matrix) (also [already supported by the playbook](docs/configuring-playbook-email2matrix.md)), but more capable and with the intention to soon support *sending* emails, not just receiving." +#: ../../../CHANGELOG.md:1699 +msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook can now set up the new [Postmoogle](https://github.com/etkecc/postmoogle) email bridge. Postmoogle is like the [Email2Matrix bridge](https://github.com/devture/email2matrix) (also [already supported by the playbook](docs/configuring-playbook-email2matrix.md)), but more capable and with the intention to soon support *sending* emails, not just receiving." msgstr "" -#: ../../../CHANGELOG.md:1643 +#: ../../../CHANGELOG.md:1701 msgid "See our [Setting up Postmoogle email bridging](docs/configuring-playbook-bridge-postmoogle.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1646 +#: ../../../CHANGELOG.md:1704 msgid "2022-08-10" msgstr "" -#: ../../../CHANGELOG.md:1648 +#: ../../../CHANGELOG.md:1706 msgid "mautrix-whatsapp default configuration changes" msgstr "" -#: ../../../CHANGELOG.md:1650 +#: ../../../CHANGELOG.md:1708 msgid "In [Pull Request #2012](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2012), we've made some changes to the default configuration used by the `mautrix-whatsapp` bridge." msgstr "" -#: ../../../CHANGELOG.md:1652 +#: ../../../CHANGELOG.md:1710 msgid "If you're using this bridge, you should look into this PR and see if the new configuration suits you. If not, you can always change individual preferences in your `vars.yml` file." msgstr "" -#: ../../../CHANGELOG.md:1654 +#: ../../../CHANGELOG.md:1712 msgid "Most notably, spaces support has been enabled by default. The bridge will now group rooms into a Matrix space. **If you've already bridged to Whatsapp** prior to this update, you will need to send `!wa sync space` to the bridge bot to make it create the space and put your existing rooms into it." msgstr "" -#: ../../../CHANGELOG.md:1657 +#: ../../../CHANGELOG.md:1715 msgid "2022-08-09" msgstr "" -#: ../../../CHANGELOG.md:1659 +#: ../../../CHANGELOG.md:1717 msgid "Conduit support" msgstr "" -#: ../../../CHANGELOG.md:1661 +#: ../../../CHANGELOG.md:1719 msgid "Thanks to [Charles Wright](https://github.com/cvwright), we now have optional experimental [Conduit](https://conduit.rs) homeserver support for new installations. This comes as a follow-up to the playbook getting [Dendrite support](#dendrite-support) earlier this year." msgstr "" -#: ../../../CHANGELOG.md:1663 +#: ../../../CHANGELOG.md:1721 msgid "Existing Synapse or Dendrite installations do **not** need to be updated. **Synapse is still the default homeserver implementation** installed by the playbook." msgstr "" -#: ../../../CHANGELOG.md:1665 +#: ../../../CHANGELOG.md:1723 msgid "To try out Conduit, we recommend that you **use a new server** and the following `vars.yml` configuration:" msgstr "" -#: ../../../CHANGELOG.md:1671 +#: ../../../CHANGELOG.md:1729 msgid "**The homeserver implementation of an existing server cannot be changed** (e.g. from Synapse or Dendrite to Conduit) without data loss." msgstr "" -#: ../../../CHANGELOG.md:1674 +#: ../../../CHANGELOG.md:1732 msgid "2022-07-29" msgstr "" -#: ../../../CHANGELOG.md:1676 +#: ../../../CHANGELOG.md:1734 msgid "mautrix-discord support" msgstr "" -#: ../../../CHANGELOG.md:1678 +#: ../../../CHANGELOG.md:1736 msgid "Thanks to [MdotAmaan](https://github.com/MdotAmaan)'s efforts, the playbook now supports bridging to [Discord](https://discordapp.com/) via the [mautrix-discord](https://mau.dev/mautrix/discord) bridge. See our [Setting up Mautrix Discord bridging](docs/configuring-playbook-bridge-mautrix-discord.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:1680 +#: ../../../CHANGELOG.md:1738 msgid "**Note**: this is a new Discord bridge. The playbook still retains Discord bridging via [matrix-appservice-discord](docs/configuring-playbook-bridge-appservice-discord.md) and [mx-puppet-discord](docs/configuring-playbook-bridge-mx-puppet-discord.md). You're free to use the bridge that serves you better, or even all three of them (for different users and use-cases)." msgstr "" -#: ../../../CHANGELOG.md:1683 +#: ../../../CHANGELOG.md:1741 msgid "2022-07-27" msgstr "" -#: ../../../CHANGELOG.md:1685 +#: ../../../CHANGELOG.md:1743 msgid "matrix-appservice-kakaotalk support" msgstr "" -#: ../../../CHANGELOG.md:1687 -msgid "The playbook now supports bridging to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) via [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) - a bridge based on [node-kakao](https://github.com/storycraft/node-kakao) (now unmaintained) and some [mautrix-facebook](https://github.com/mautrix/facebook) code. Thanks to [hnarjis](https://github.com/hnarjis) for helping us add support for this!" +#: ../../../CHANGELOG.md:1745 +msgid "The playbook now supports bridging to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) via [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) — a bridge based on [node-kakao](https://github.com/storycraft/node-kakao) (now unmaintained) and some [mautrix-facebook](https://github.com/mautrix/facebook) code. Thanks to [hnarjis](https://github.com/hnarjis) for helping us add support for this!" msgstr "" -#: ../../../CHANGELOG.md:1689 +#: ../../../CHANGELOG.md:1747 msgid "See our [Setting up Appservice Kakaotalk bridging](docs/configuring-playbook-bridge-appservice-kakaotalk.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1692 +#: ../../../CHANGELOG.md:1750 msgid "2022-07-20" msgstr "" -#: ../../../CHANGELOG.md:1694 +#: ../../../CHANGELOG.md:1752 msgid "maubot support" msgstr "" -#: ../../../CHANGELOG.md:1696 -msgid "Thanks to [Stuart Mumford (@Cadair)](https://github.com/cadair) for starting ([PR #373](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/373) and [PR #622](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/622)) and to [Julian-Samuel Gebühr (@moan0s)](https://github.com/moan0s) for finishing up (in [PR #1894](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/1894)), the playbook can now help you set up [maubot](https://github.com/maubot/maubot) - a plugin-based Matrix bot system." +#: ../../../CHANGELOG.md:1754 +msgid "Thanks to [Stuart Mumford (@Cadair)](https://github.com/cadair) for starting ([PR #373](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/373) and [PR #622](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/622)) and to [Julian-Samuel Gebühr (@moan0s)](https://github.com/moan0s) for finishing up (in [PR #1894](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/1894)), the playbook can now help you set up [maubot](https://github.com/maubot/maubot) — a plugin-based Matrix bot system." msgstr "" -#: ../../../CHANGELOG.md:1698 +#: ../../../CHANGELOG.md:1756 msgid "See our [Setting up maubot](docs/configuring-playbook-bot-maubot.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1701 +#: ../../../CHANGELOG.md:1759 msgid "2022-07-14" msgstr "" -#: ../../../CHANGELOG.md:1703 +#: ../../../CHANGELOG.md:1761 msgid "mx-puppet-skype removal" msgstr "" -#: ../../../CHANGELOG.md:1705 +#: ../../../CHANGELOG.md:1763 msgid "The playbook no longer includes the [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype) bridge, because it has been broken and unmaintained for a long time. Users that have `matrix_mx_puppet_skype_enabled` in their configuration files will encounter an error when running the playbook until they remove references to this bridge from their configuration." msgstr "" -#: ../../../CHANGELOG.md:1707 +#: ../../../CHANGELOG.md:1765 msgid "To completely clean up your server from `mx-puppet-skype`'s presence on it:" msgstr "" -#: ../../../CHANGELOG.md:1709 +#: ../../../CHANGELOG.md:1767 msgid "ensure your Ansible configuration (`vars.yml` file) no longer contains `matrix_mx_puppet_skype_*` references" msgstr "" -#: ../../../CHANGELOG.md:1710 +#: ../../../CHANGELOG.md:1768 msgid "stop and disable the systemd service (run `systemctl disable --now matrix-mx-puppet-skype` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1711 +#: ../../../CHANGELOG.md:1769 msgid "delete the systemd service (run `rm /etc/systemd/system/matrix-mx-puppet-skype.service` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1712 +#: ../../../CHANGELOG.md:1770 msgid "delete `/matrix/mx-puppet-skype` (run `rm -rf /matrix/mx-puppet-skype` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1713 +#: ../../../CHANGELOG.md:1771 msgid "drop the `matrix_mx_puppet_skype` database (run `/usr/local/bin/matrix-postgres-cli` on the server, and execute the `DROP DATABASE matrix_mx_puppet_skype;` query there)" msgstr "" -#: ../../../CHANGELOG.md:1715 +#: ../../../CHANGELOG.md:1773 msgid "If you still need bridging to [Skype](https://www.skype.com/), consider switching to [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) instead. See [Setting up Go Skype Bridge bridging](docs/configuring-playbook-bridge-go-skype-bridge.md)." msgstr "" -#: ../../../CHANGELOG.md:1717 +#: ../../../CHANGELOG.md:1775 msgid "If you think this is a mistake and `mx-puppet-skype` works for you (or you get it to work somehow), let us know and we may reconsider this removal." msgstr "" -#: ../../../CHANGELOG.md:1719 +#: ../../../CHANGELOG.md:1777 msgid "signald (0.19.0+) upgrade requires data migration" msgstr "" -#: ../../../CHANGELOG.md:1721 +#: ../../../CHANGELOG.md:1779 msgid "In [Pull Request #1921](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/1921) we upgraded [signald](https://signald.org/) (used by the mautrix-signal bridge) from `v0.18.5` to `v0.20.0`." msgstr "" -#: ../../../CHANGELOG.md:1723 +#: ../../../CHANGELOG.md:1781 msgid "Back in the [`v0.19.0` released of signald](https://gitlab.com/signald/signald/-/blob/main/releases/0.19.0.md) (which we skipped and migrated straight to `v0.20.0`), a new `--migrate-data` command had been added that migrates avatars, group images, attachments, etc., into the database (those were previously stored in the filesystem)." msgstr "" -#: ../../../CHANGELOG.md:1725 +#: ../../../CHANGELOG.md:1783 msgid "If you've been using the mautrix-signal bridge for a while, you may have files stored in the local filesystem, which will need to be upgraded." msgstr "" -#: ../../../CHANGELOG.md:1727 +#: ../../../CHANGELOG.md:1785 msgid "We attempt to do this data migration automatically every time Signald starts (`matrix-mautrix-signal-daemon.service`) using a `ExecStartPre` systemd unit definition." msgstr "" -#: ../../../CHANGELOG.md:1729 +#: ../../../CHANGELOG.md:1787 msgid "Keep an eye on your Signal bridge and let us know (in our [support room](README.md#support) or in [Pull Request #1921](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/1921)) if you experience any trouble!" msgstr "" -#: ../../../CHANGELOG.md:1732 +#: ../../../CHANGELOG.md:1790 msgid "2022-07-05" msgstr "" -#: ../../../CHANGELOG.md:1734 +#: ../../../CHANGELOG.md:1792 msgid "Ntfy push notifications support" msgstr "" -#: ../../../CHANGELOG.md:1736 +#: ../../../CHANGELOG.md:1794 msgid "Thanks to [Julian Foad](https://matrix.to/#/@julian:foad.me.uk), the playbook can now install a [ntfy](https://ntfy.sh/) push notifications server for you." msgstr "" -#: ../../../CHANGELOG.md:1738 +#: ../../../CHANGELOG.md:1796 msgid "See our [Setting up the ntfy push notifications server](docs/configuring-playbook-ntfy.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1741 +#: ../../../CHANGELOG.md:1799 msgid "2022-06-23" msgstr "" -#: ../../../CHANGELOG.md:1743 +#: ../../../CHANGELOG.md:1801 msgid "(Potential Backward Compatibility Break) Changes around metrics collection" msgstr "" -#: ../../../CHANGELOG.md:1745 +#: ../../../CHANGELOG.md:1803 msgid "**TLDR**: we've made extensive **changes to metrics exposure/collection, which concern people using an external Prometheus server**. If you don't know what that is, you don't need to read below." msgstr "" -#: ../../../CHANGELOG.md:1747 +#: ../../../CHANGELOG.md:1805 msgid "**Why do major changes to metrics**? Because various services were exposing metrics in different, hacky, ways. Synapse was exposing metrics at `/_synapse/metrics` and `/_synapse-worker-…/metrics` on the `matrix.example.com`. The Hookshot role was **repurposing** the Granana web UI domain (`stats.example.com`) for exposing its metrics on `stats.example.com/hookshot/metrics`, while protecting these routes using Basic Authentication **normally used for Synapse** (`/_synapse/metrics`). Node-exporter and Postgres-exporter roles were advising for more `stats.example.com` usage in manual ways. Each role was doing things differently and mixing variables from other roles. Each metrics endpoint was ending up in a different place, protected by who knows what Basic Authentication credentials (if protected at all)." msgstr "" -#: ../../../CHANGELOG.md:1749 +#: ../../../CHANGELOG.md:1807 msgid "**The solution**: a completely revamped way to expose metrics to an external Prometheus server. We are **introducing new `https://matrix.example.com/metrics/*` endpoints**, where various services *can* expose their metrics, for collection by external Prometheus servers. To enable the `/metrics/*` endpoints, use `matrix_nginx_proxy_proxy_matrix_metrics_enabled: true`. There's also a way to protect access using [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication). See the `matrix-nginx-proxy` role or our [Collecting metrics to an external Prometheus server](docs/configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server) documentation for additional variables around `matrix_nginx_proxy_proxy_matrix_metrics_enabled`." msgstr "" -#: ../../../CHANGELOG.md:1751 +#: ../../../CHANGELOG.md:1809 msgid "**If you are using the [Hookshot bridge](docs/configuring-playbook-bridge-hookshot.md)**, you may find that:" msgstr "" -#: ../../../CHANGELOG.md:1752 +#: ../../../CHANGELOG.md:1810 msgid "**Metrics may not be enabled by default anymore**:" msgstr "" -#: ../../../CHANGELOG.md:1753 +#: ../../../CHANGELOG.md:1811 msgid "If Prometheus is enabled (`prometheus_enabled: true`), then Hookshot metrics will be enabled automatically (`matrix_hookshot_metrics_enabled: true`). These metrics will be collected from the local (in-container) Prometheus over the container network." msgstr "" -#: ../../../CHANGELOG.md:1754 +#: ../../../CHANGELOG.md:1812 msgid "**If Prometheus is not enabled** (you are either not using Prometheus or are using an external one), **Hookshot metrics will not be enabled by default anymore**. Feel free to enable them by setting `matrix_hookshot_metrics_enabled: true`. Also, see below." msgstr "" -#: ../../../CHANGELOG.md:1755 +#: ../../../CHANGELOG.md:1813 msgid "When metrics are meant to be **consumed by an external Prometheus server**, `matrix_hookshot_metrics_proxying_enabled` needs to be set to `true`, so that metrics would be exposed (proxied) \"publicly\" on `https://matrix.example.com/metrics/hookshot`. To make use of this, you'll also need to enable the new `https://matrix.example.com/metrics/*` endpoints mentioned above, using `matrix_nginx_proxy_proxy_matrix_metrics_enabled`. Learn more in our [Collecting metrics to an external Prometheus server](docs/configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server) documentation." msgstr "" -#: ../../../CHANGELOG.md:1756 +#: ../../../CHANGELOG.md:1814 msgid "**We've changed the URL we're exposing Hookshot metrics at** for external Prometheus servers. Until now, you were advised to consume Hookshot metrics from `https://stats.example.com/hookshot/metrics` (working in conjunction with `matrix_nginx_proxy_proxy_synapse_metrics`). From now on, **this no longer works**. As described above, you need to start consuming metrics from `https://matrix.example.com/metrics/hookshot`." msgstr "" -#: ../../../CHANGELOG.md:1758 +#: ../../../CHANGELOG.md:1816 msgid "**If you're using node-exporter** (`matrix_prometheus_node_exporter_enabled: true`) and would like to collect its metrics from an external Prometheus server, see `matrix_prometheus_node_exporter_metrics_proxying_enabled` described in our [Collecting metrics to an external Prometheus server](docs/configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server) documentation. You will be able to collect its metrics from `https://matrix.example.com/metrics/node-exporter`." msgstr "" -#: ../../../CHANGELOG.md:1760 +#: ../../../CHANGELOG.md:1818 msgid "**If you're using [postgres-exporter](docs/configuring-playbook-prometheus-postgres.md)** (`prometheus_postgres_exporter_enabled: true`) and would like to collect its metrics from an external Prometheus server, see `matrix_prometheus_services_proxy_connect_prometheus_postgres_exporter_metrics_proxying_enabled` described in our [Collecting metrics to an external Prometheus server](docs/configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server) documentation. You will be able to collect its metrics from `https://matrix.example.com/metrics/postgres-exporter`." msgstr "" -#: ../../../CHANGELOG.md:1762 +#: ../../../CHANGELOG.md:1820 msgid "**If you're using Synapse** and would like to collect its metrics from an external Prometheus server, you may find that:" msgstr "" -#: ../../../CHANGELOG.md:1764 +#: ../../../CHANGELOG.md:1822 msgid "Exposing metrics is now done using `matrix_synapse_metrics_proxying_enabled`, not `matrix_nginx_proxy_proxy_synapse_metrics: true`. You may still need to enable metrics using `matrix_synapse_metrics_enabled: true` before exposing them." msgstr "" -#: ../../../CHANGELOG.md:1765 +#: ../../../CHANGELOG.md:1823 msgid "Protecting metrics endpoints using [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) is now done in another way. See our [Collecting metrics to an external Prometheus server](docs/configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server) documentation" msgstr "" -#: ../../../CHANGELOG.md:1766 +#: ../../../CHANGELOG.md:1824 msgid "If Synapse metrics are exposed, they will be made available at `https://matrix.example.com/metrics/synapse/main-process` or `https://matrix.example.com/metrics/synapse/worker/TYPE-ID` (when workers are enabled), not at `https://matrix.example.com/_synapse/metrics` and `https://matrix.example.com/_synapse-worker-…/metrics`" msgstr "" -#: ../../../CHANGELOG.md:1767 +#: ../../../CHANGELOG.md:1825 msgid "The playbook still generates an `external_prometheus.yml.example` sample file for scraping Synapse from Prometheus as described in [Collecting Synapse worker metrics to an external Prometheus server](docs/configuring-playbook-prometheus-grafana.md#collecting-synapse-worker-metrics-to-an-external-prometheus-server), but it's now saved under `/matrix/synapse` (not `/matrix`)." msgstr "" -#: ../../../CHANGELOG.md:1769 +#: ../../../CHANGELOG.md:1827 msgid "**If you where already using a external Prometheus server** before this change, and you gave a hashed version of the password as a variable, the playbook will now take care of hashing the password for you. Thus, you need to provide the non-hashed version now." msgstr "" -#: ../../../CHANGELOG.md:1771 +#: ../../../CHANGELOG.md:1829 msgid "2022-06-13" msgstr "" -#: ../../../CHANGELOG.md:1773 +#: ../../../CHANGELOG.md:1831 msgid "go-skype-bridge bridging support" msgstr "" -#: ../../../CHANGELOG.md:1775 +#: ../../../CHANGELOG.md:1833 msgid "Thanks to [CyberShadow](https://github.com/CyberShadow), the playbook can now install the [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) bridge for bridging Matrix to [Skype](https://www.skype.com/)." msgstr "" -#: ../../../CHANGELOG.md:1777 +#: ../../../CHANGELOG.md:1835 msgid "See our [Setting up Go Skype Bridge bridging](docs/configuring-playbook-bridge-go-skype-bridge.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1779 +#: ../../../CHANGELOG.md:1837 msgid "The playbook has supported [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype) bridging (see [Setting up MX Puppet Skype bridging](docs/configuring-playbook-bridge-mx-puppet-skype.md)) since [2020-04-09](#2020-04-09), but `mx-puppet-skype` is reportedly broken." msgstr "" -#: ../../../CHANGELOG.md:1782 +#: ../../../CHANGELOG.md:1840 msgid "2022-06-09" msgstr "" -#: ../../../CHANGELOG.md:1784 +#: ../../../CHANGELOG.md:1842 msgid "Running Ansible in a container can now happen on the Matrix server itself" msgstr "" -#: ../../../CHANGELOG.md:1786 +#: ../../../CHANGELOG.md:1844 msgid "If you're tired of being on an old and problematic Ansible version, you can now run [run Ansible in a container on the Matrix server itself](docs/ansible.md#running-ansible-in-a-container-on-the-matrix-server-itself)." msgstr "" -#: ../../../CHANGELOG.md:1789 +#: ../../../CHANGELOG.md:1847 msgid "2022-05-31" msgstr "" -#: ../../../CHANGELOG.md:1791 +#: ../../../CHANGELOG.md:1849 msgid "Synapse v1.60 upgrade may cause trouble and require manual intervention" msgstr "" -#: ../../../CHANGELOG.md:1793 +#: ../../../CHANGELOG.md:1851 msgid "Synapse v1.60 will try to add a new unique index to `state_group_edges` upon startup and could fail if your database is corrupted." msgstr "" -#: ../../../CHANGELOG.md:1795 +#: ../../../CHANGELOG.md:1853 msgid "We haven't observed this problem yet, but [the Synapse v1.60.0 upgrade notes](https://github.com/element-hq/synapse/blob/v1.60.0/docs/upgrade.md#adding-a-new-unique-index-to-state_group_edges-could-fail-if-your-database-is-corrupted) mention it, so we're giving you a heads up here in case you're unlucky." msgstr "" -#: ../../../CHANGELOG.md:1797 +#: ../../../CHANGELOG.md:1855 msgid "**If Synapse fails to start** after your next playbook run, you'll need to:" msgstr "" -#: ../../../CHANGELOG.md:1799 +#: ../../../CHANGELOG.md:1857 msgid "SSH into the Matrix server" msgstr "" -#: ../../../CHANGELOG.md:1800 +#: ../../../CHANGELOG.md:1858 msgid "launch `/usr/local/bin/matrix-postgres-cli`" msgstr "" -#: ../../../CHANGELOG.md:1801 +#: ../../../CHANGELOG.md:1859 msgid "switch to the `synapse` database: `\\c synapse`" msgstr "" -#: ../../../CHANGELOG.md:1802 +#: ../../../CHANGELOG.md:1860 msgid "run the following SQL query:" msgstr "" -#: ../../../CHANGELOG.md:1821 +#: ../../../CHANGELOG.md:1879 msgid "You could then restart services: `ansible-playbook -i inventory/hosts setup.yml --tags=start`" msgstr "" -#: ../../../CHANGELOG.md:1824 +#: ../../../CHANGELOG.md:1882 msgid "2022-04-25" msgstr "" -#: ../../../CHANGELOG.md:1826 +#: ../../../CHANGELOG.md:1884 msgid "Buscarron bot support" msgstr "" -#: ../../../CHANGELOG.md:1828 +#: ../../../CHANGELOG.md:1886 msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook can now set up [the Buscarron bot](https://github.com/etkecc/buscarron). It's a bot you can use to send any form (HTTP POST, HTML) to a (encrypted) Matrix room" msgstr "" -#: ../../../CHANGELOG.md:1830 +#: ../../../CHANGELOG.md:1888 msgid "See our [Setting up Buscarron](docs/configuring-playbook-bot-buscarron.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1833 +#: ../../../CHANGELOG.md:1891 msgid "2022-04-21" msgstr "" -#: ../../../CHANGELOG.md:1835 +#: ../../../CHANGELOG.md:1893 msgid "matrix-registration-bot support" msgstr "" -#: ../../../CHANGELOG.md:1837 -msgid "Thanks to [Julian-Samuel Gebühr (@moan0s)](https://github.com/moan0s), the playbook can now help you set up [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) - a bot that is used to create and manage registration tokens for a Matrix server." +#: ../../../CHANGELOG.md:1895 +msgid "Thanks to [Julian-Samuel Gebühr (@moan0s)](https://github.com/moan0s), the playbook can now help you set up [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) — a bot that is used to create and manage registration tokens for a Matrix server." msgstr "" -#: ../../../CHANGELOG.md:1839 +#: ../../../CHANGELOG.md:1897 msgid "See our [Setting up matrix-registration-bot](docs/configuring-playbook-bot-matrix-registration-bot.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1842 +#: ../../../CHANGELOG.md:1900 msgid "2022-04-19" msgstr "" -#: ../../../CHANGELOG.md:1844 +#: ../../../CHANGELOG.md:1902 msgid "BorgBackup support" msgstr "" -#: ../../../CHANGELOG.md:1846 +#: ../../../CHANGELOG.md:1904 msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook can now set up [Borg](https://www.borgbackup.org/) backups with [borgmatic](https://torsion.org/borgmatic/) of your Matrix server." msgstr "" -#: ../../../CHANGELOG.md:1848 +#: ../../../CHANGELOG.md:1906 msgid "See our [Setting up BorgBackup](docs/configuring-playbook-backup-borg.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1850 +#: ../../../CHANGELOG.md:1908 msgid "(Compatibility Break) Upgrading to Synapse v1.57 on setups using workers may require manual action" msgstr "" -#: ../../../CHANGELOG.md:1852 +#: ../../../CHANGELOG.md:1910 msgid "If you're running a worker setup for Synapse (`matrix_synapse_workers_enabled: true`), the [Synapse v1.57 upgrade notes](https://github.com/element-hq/synapse/blob/v1.57.0rc1/docs/upgrade.md#changes-to-database-schema-for-application-services) say that you may need to take special care when upgrading:" msgstr "" -#: ../../../CHANGELOG.md:1854 +#: ../../../CHANGELOG.md:1912 msgid "Synapse v1.57.0 includes a change to the way transaction IDs are managed for application services. If your deployment uses a dedicated worker for application service traffic, **it must be stopped** when the database is upgraded (which normally happens when the main process is upgraded), to ensure the change is made safely without any risk of reusing transaction IDs." msgstr "" -#: ../../../CHANGELOG.md:1856 +#: ../../../CHANGELOG.md:1914 msgid "If you're not running an `appservice` worker (`matrix_synapse_workers_preset: little-federation-helper` or `matrix_synapse_workers_appservice_workers_count: 0`), you are probably safe to upgrade as per normal, without taking any special care." msgstr "" -#: ../../../CHANGELOG.md:1858 +#: ../../../CHANGELOG.md:1916 msgid "If you are running a setup with an `appservice` worker, or otherwise want to be on the safe side, we recommend the following upgrade path:" msgstr "" -#: ../../../CHANGELOG.md:1860 +#: ../../../CHANGELOG.md:1918 msgid "Pull the latest playbook changes" msgstr "" -#: ../../../CHANGELOG.md:1861 +#: ../../../CHANGELOG.md:1919 msgid "Stop all services (`ansible-playbook -i inventory/hosts setup.yml --tags=stop`)" msgstr "" -#: ../../../CHANGELOG.md:1862 +#: ../../../CHANGELOG.md:1920 msgid "Re-run the playbook (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-all`)" msgstr "" -#: ../../../CHANGELOG.md:1863 +#: ../../../CHANGELOG.md:1921 msgid "Start Postgres (`systemctl start matrix-postgres` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1864 +#: ../../../CHANGELOG.md:1922 msgid "Start the main Synapse process (`systemctl start matrix-synapse` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1865 +#: ../../../CHANGELOG.md:1923 msgid "Wait a while so that Synapse can start and complete the database migrations. You can use `journalctl -fu matrix-synapse` on the server to get a clue. Waiting a few minutes should also be enough." msgstr "" -#: ../../../CHANGELOG.md:1866 +#: ../../../CHANGELOG.md:1924 msgid "It should now be safe to start all other services. `ansible-playbook -i inventory/hosts setup.yml --tags=start` will do it for you" msgstr "" -#: ../../../CHANGELOG.md:1869 +#: ../../../CHANGELOG.md:1927 msgid "2022-04-14" msgstr "" -#: ../../../CHANGELOG.md:1871 +#: ../../../CHANGELOG.md:1929 msgid "(Compatibility Break) Changes to `docker-src` permissions necessitating manual action" msgstr "" -#: ../../../CHANGELOG.md:1873 +#: ../../../CHANGELOG.md:1931 msgid "Users who build container images from source will need to manually correct file permissions of some directories on the server." msgstr "" -#: ../../../CHANGELOG.md:1875 +#: ../../../CHANGELOG.md:1933 msgid "When self-building, the playbook used to `git clone` repositories (into `/matrix/SERVICE/docker-src`) using the `root` user, but now uses `matrix` instead to work around [the following issue with git 2.35.2](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1749)." msgstr "" -#: ../../../CHANGELOG.md:1877 +#: ../../../CHANGELOG.md:1935 msgid "If you're on a non-`amd64` architecture (that is, you're overriding `matrix_architecture` in your `vars.yml` file) or you have enabled self-building for some service (e.g. `matrix_*_self_build: true`), you're certainly building some container images from source and have `docker-src` directories with mixed permissions lying around in various `/matrix/SERVICE` directories." msgstr "" -#: ../../../CHANGELOG.md:1879 -msgid "The playbook *could* correct these permissions automatically, but that requires additional Ansible tasks in some ~45 different places - something that takes considerable effort. So we ask users observing errors related to `docker-src` directories to correct the problem manually by **running this command on the Matrix server** (which deletes all `/matrix/*/docker-src` directories): `find /matrix -maxdepth 2 -name 'docker-src' | xargs rm -rf`" +#: ../../../CHANGELOG.md:1937 +msgid "The playbook *could* correct these permissions automatically, but that requires additional Ansible tasks in some ~45 different places — something that takes considerable effort. So we ask users observing errors related to `docker-src` directories to correct the problem manually by **running this command on the Matrix server** (which deletes all `/matrix/*/docker-src` directories): `find /matrix -maxdepth 2 -name 'docker-src' | xargs rm -rf`" msgstr "" -#: ../../../CHANGELOG.md:1882 +#: ../../../CHANGELOG.md:1940 msgid "2022-03-17" msgstr "" -#: ../../../CHANGELOG.md:1884 +#: ../../../CHANGELOG.md:1942 msgid "(Compatibility Break) ma1sd identity server no longer installed by default" msgstr "" -#: ../../../CHANGELOG.md:1886 +#: ../../../CHANGELOG.md:1944 msgid "The playbook no longer installs the [ma1sd](https://github.com/ma1uta/ma1sd) identity server by default. The next time you run the playbook, ma1sd will be uninstalled from your server, unless you explicitly enable the ma1sd service (see how below)." msgstr "" -#: ../../../CHANGELOG.md:1888 +#: ../../../CHANGELOG.md:1946 msgid "The main reason we used to install ma1sd by default in the past was to prevent Element clients from talking to the `matrix.org` / `vector.im` identity servers, by forcing it to talk to our own self-hosted (but otherwise useless) identity server instead, thus preventing contact list leaks." msgstr "" -#: ../../../CHANGELOG.md:1890 +#: ../../../CHANGELOG.md:1948 msgid "Since Element clients no longer default to using a public identity server if another one is not provided, we can stop installing ma1sd." msgstr "" -#: ../../../CHANGELOG.md:1892 +#: ../../../CHANGELOG.md:1950 msgid "If you need to install the ma1sd identity server for some reason, you can explicitly enable it by adding this to your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:1899 +#: ../../../CHANGELOG.md:1957 msgid "2022-02-12" msgstr "" -#: ../../../CHANGELOG.md:1901 +#: ../../../CHANGELOG.md:1959 msgid "matrix_encryption_disabler support" msgstr "" -#: ../../../CHANGELOG.md:1903 +#: ../../../CHANGELOG.md:1961 msgid "We now support installing the [matrix_encryption_disabler](https://github.com/digitalentity/matrix_encryption_disabler) Synapse module, which lets you prevent End-to-End-Encryption from being enabled by users on your homeserver. The popular opinion is that this is dangerous and shouldn't be done, but there are valid use cases for disabling encryption discussed [here](https://github.com/matrix-org/synapse/issues/4401)." msgstr "" -#: ../../../CHANGELOG.md:1905 +#: ../../../CHANGELOG.md:1963 msgid "To enable this module (and prevent encryption from being used on your homserver), add `matrix_synapse_ext_encryption_disabler_enabled: true` to your configuration. This module provides further customization. Check its other configuration settings (and defaults) in `roles/custom/matrix-synapse/defaults/main.yml`." msgstr "" -#: ../../../CHANGELOG.md:1908 +#: ../../../CHANGELOG.md:1966 msgid "2022-02-01" msgstr "" -#: ../../../CHANGELOG.md:1910 +#: ../../../CHANGELOG.md:1968 msgid "matrix-hookshot bridging support" msgstr "" -#: ../../../CHANGELOG.md:1912 +#: ../../../CHANGELOG.md:1970 msgid "Thanks to [HarHarLinks](https://github.com/HarHarLinks), the playbook can now install the [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) bridge for bridging Matrix to multiple project management services, such as GitHub, GitLab and JIRA. See our [Setting up matrix-hookshot](docs/configuring-playbook-bridge-hookshot.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1915 +#: ../../../CHANGELOG.md:1973 msgid "2022-01-31" msgstr "" -#: ../../../CHANGELOG.md:1917 +#: ../../../CHANGELOG.md:1975 msgid "ARM support for matrix-corporal" msgstr "" -#: ../../../CHANGELOG.md:1919 +#: ../../../CHANGELOG.md:1977 msgid "[matrix-corporal](https://github.com/devture/matrix-corporal) (as of version `2.2.3`) is now published to Docker Hub (see [devture/matrix-corporal](https://hub.docker.com/r/devture/matrix-corporal)) as a multi-arch container image with support for all these platforms: `linux/amd64`, `linux/arm64/v8` and `linux/arm/v7`. The playbook no longer resorts to self-building matrix-corporal on these ARM architectures." msgstr "" -#: ../../../CHANGELOG.md:1922 +#: ../../../CHANGELOG.md:1980 msgid "2022-01-07" msgstr "" -#: ../../../CHANGELOG.md:1924 +#: ../../../CHANGELOG.md:1982 msgid "Dendrite support" msgstr "" -#: ../../../CHANGELOG.md:1926 +#: ../../../CHANGELOG.md:1984 msgid "**TLDR**: We now have optional experimental [Dendrite](https://github.com/matrix-org/dendrite) homeserver support for new installations. **Existing (Synapse) installations need to be updated**, because some internals changed. See [Adapting the configuration for existing Synapse installations](#adapting-the-configuration-for-existing-synapse-installations)." msgstr "" -#: ../../../CHANGELOG.md:1928 +#: ../../../CHANGELOG.md:1986 msgid "[Jip J. Dekker](https://github.com/Dekker1) did the [initial work](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/818) of adding [Dendrite](https://github.com/matrix-org/dendrite) support to the playbook back in January 2021. Lots of work (and time) later, Dendrite support is finally ready for testing." msgstr "" -#: ../../../CHANGELOG.md:1930 +#: ../../../CHANGELOG.md:1988 msgid "We believe that 2022 will be the year of the non-Synapse Matrix server!" msgstr "" -#: ../../../CHANGELOG.md:1932 +#: ../../../CHANGELOG.md:1990 msgid "The playbook was previously quite [Synapse](https://github.com/element-hq/synapse)-centric, but can now accommodate multiple homeserver implementations. Only one homeserver implementation can be active (installed) at a given time." msgstr "" -#: ../../../CHANGELOG.md:1934 +#: ../../../CHANGELOG.md:1992 msgid "**Synapse is still the default homeserver implementation** installed by the playbook. A new variable (`matrix_homeserver_implementation`) controls which server implementation is enabled (`synapse` or `dendrite` at the given moment)." msgstr "" -#: ../../../CHANGELOG.md:1936 +#: ../../../CHANGELOG.md:1994 msgid "Adapting the configuration for existing Synapse installations" msgstr "" -#: ../../../CHANGELOG.md:1938 +#: ../../../CHANGELOG.md:1996 msgid "Because the playbook is not so Synapse-centric anymore, a small configuration change is necessary for existing installations to bring them up to date." msgstr "" -#: ../../../CHANGELOG.md:1940 +#: ../../../CHANGELOG.md:1998 msgid "The `vars.yml` file for **existing installations will need to be updated** by adding this **additional configuration**:" msgstr "" -#: ../../../CHANGELOG.md:1952 +#: ../../../CHANGELOG.md:2010 msgid "Trying out Dendrite" msgstr "" -#: ../../../CHANGELOG.md:1954 +#: ../../../CHANGELOG.md:2012 msgid "Finally, **to try out Dendrite**, we recommend that you **use a new server** and the following addition to your `vars.yml` configuration:" msgstr "" -#: ../../../CHANGELOG.md:1960 +#: ../../../CHANGELOG.md:2018 msgid "**The homeserver implementation of an existing server cannot be changed** (e.g. from Synapse to Dendrite) without data loss." msgstr "" -#: ../../../CHANGELOG.md:1962 +#: ../../../CHANGELOG.md:2020 msgid "We're excited to gain support for other homeserver implementations, like [Conduit](https://conduit.rs/), etc!" msgstr "" -#: ../../../CHANGELOG.md:1964 +#: ../../../CHANGELOG.md:2022 msgid "Honoroit bot support" msgstr "" -#: ../../../CHANGELOG.md:1966 -msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook can now help you set up [Honoroit](https://github.com/etkecc/honoroit) - a helpdesk bot." +#: ../../../CHANGELOG.md:2024 +msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook can now help you set up [Honoroit](https://github.com/etkecc/honoroit) — a helpdesk bot." msgstr "" -#: ../../../CHANGELOG.md:1968 +#: ../../../CHANGELOG.md:2026 msgid "See our [Setting up Honoroit](docs/configuring-playbook-bot-honoroit.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1971 +#: ../../../CHANGELOG.md:2029 msgid "2022-01-06" msgstr "" -#: ../../../CHANGELOG.md:1973 +#: ../../../CHANGELOG.md:2031 msgid "Cinny support" msgstr "" -#: ../../../CHANGELOG.md:1975 -msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook now supports [Cinny](https://cinny.in/) - a new simple, elegant and secure Matrix client." +#: ../../../CHANGELOG.md:2033 +msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook now supports [Cinny](https://cinny.in/) — a new simple, elegant and secure Matrix client." msgstr "" -#: ../../../CHANGELOG.md:1977 +#: ../../../CHANGELOG.md:2035 msgid "By default, we still install Element Web. Still, people who'd like to try Cinny out can now install it via the playbook." msgstr "" -#: ../../../CHANGELOG.md:1979 +#: ../../../CHANGELOG.md:2037 msgid "Additional details are available in [Setting up Cinny](docs/configuring-playbook-client-cinny.md)." msgstr "" -#: ../../../CHANGELOG.md:1982 +#: ../../../CHANGELOG.md:2040 msgid "2021-12-22" msgstr "" -#: ../../../CHANGELOG.md:1984 +#: ../../../CHANGELOG.md:2042 msgid "Twitter bridging support via mautrix-twitter" msgstr "" -#: ../../../CHANGELOG.md:1986 +#: ../../../CHANGELOG.md:2044 msgid "Thanks to [Matthew Cengia](https://github.com/mattcen) and [Shreyas Ajjarapu](https://github.com/shreyasajj), besides [mx-puppet-twitter](docs/configuring-playbook-bridge-mx-puppet-twitter.md), bridging to [Twitter](https://twitter.com/) can now also happen with [mautrix-twitter](docs/configuring-playbook-bridge-mautrix-twitter.md)." msgstr "" -#: ../../../CHANGELOG.md:1989 +#: ../../../CHANGELOG.md:2047 msgid "2021-12-14" msgstr "" -#: ../../../CHANGELOG.md:1991 +#: ../../../CHANGELOG.md:2049 msgid "(Security) Users of the Signal bridge may wish to upgrade it to work around log4j vulnerability" msgstr "" -#: ../../../CHANGELOG.md:1993 +#: ../../../CHANGELOG.md:2051 msgid "Recently, a security vulnerability affecting the Java logging package `log4j` [has been discovered](https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java). Software that uses this Java package is potentially vulnerable." msgstr "" -#: ../../../CHANGELOG.md:1995 +#: ../../../CHANGELOG.md:2053 msgid "One such piece of software that is part of the playbook is the [mautrix-signal bridge](./docs/configuring-playbook-bridge-mautrix-signal.md), which [has been patched already](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/1452). If you're running this bridge, you may wish to [upgrade](./docs/maintenance-upgrading-services.md)." msgstr "" -#: ../../../CHANGELOG.md:1998 +#: ../../../CHANGELOG.md:2056 msgid "2021-11-11" msgstr "" -#: ../../../CHANGELOG.md:2000 +#: ../../../CHANGELOG.md:2058 msgid "Dropped support for Postgres v9.6" msgstr "" -#: ../../../CHANGELOG.md:2002 +#: ../../../CHANGELOG.md:2060 msgid "Postgres v9.6 reached its end of life today, so the playbook will refuse to run for you if you're still on that version." msgstr "" -#: ../../../CHANGELOG.md:2004 +#: ../../../CHANGELOG.md:2062 msgid "Synapse still supports v9.6 (for now), but we're retiring support for it early, to avoid having to maintain support for so many Postgres versions. Users that are still on Postgres v9.6 can easily [upgrade Postgres](docs/maintenance-postgres.md#upgrading-postgresql) via the playbook." msgstr "" -#: ../../../CHANGELOG.md:2007 +#: ../../../CHANGELOG.md:2065 msgid "2021-10-23" msgstr "" -#: ../../../CHANGELOG.md:2009 +#: ../../../CHANGELOG.md:2067 msgid "Hangouts bridge no longer updated, superseded by a Googlechat bridge" msgstr "" -#: ../../../CHANGELOG.md:2011 +#: ../../../CHANGELOG.md:2069 msgid "The mautrix-hangouts bridge is no longer receiving updates upstream and is likely to stop working in the future. We still retain support for this bridge in the playbook, but you're encouraged to switch away from it." msgstr "" -#: ../../../CHANGELOG.md:2013 +#: ../../../CHANGELOG.md:2071 msgid "There's a new [mautrix-googlechat](https://github.com/mautrix/googlechat) bridge that you can [install using the playbook](docs/configuring-playbook-bridge-mautrix-googlechat.md). Your **Hangouts bridge data will not be migrated**, however. You need to start fresh with the new bridge." msgstr "" -#: ../../../CHANGELOG.md:2016 +#: ../../../CHANGELOG.md:2074 msgid "2021-08-23" msgstr "" -#: ../../../CHANGELOG.md:2018 +#: ../../../CHANGELOG.md:2076 msgid "LinkedIn bridging support via beeper-linkedin" msgstr "" -#: ../../../CHANGELOG.md:2020 +#: ../../../CHANGELOG.md:2078 msgid "Thanks to [Alexandar Mechev](https://github.com/apmechev), the playbook can now install the [beeper-linkedin](https://gitlab.com/beeper/linkedin) bridge for bridging to [LinkedIn](https://www.linkedin.com/) Messaging." msgstr "" -#: ../../../CHANGELOG.md:2022 +#: ../../../CHANGELOG.md:2080 msgid "This brings the total number of bridges supported by the playbook up to 20. See all supported bridges [here](docs/configuring-playbook.md#bridging-other-networks)." msgstr "" -#: ../../../CHANGELOG.md:2024 +#: ../../../CHANGELOG.md:2082 msgid "To get started with bridging to LinkedIn, see [Setting up Beeper LinkedIn bridging](docs/configuring-playbook-bridge-beeper-linkedin.md)." msgstr "" -#: ../../../CHANGELOG.md:2027 +#: ../../../CHANGELOG.md:2085 msgid "2021-08-20" msgstr "" -#: ../../../CHANGELOG.md:2029 -msgid "Sygnal upgraded - ARM support and no longer requires a database" +#: ../../../CHANGELOG.md:2087 +msgid "Sygnal upgraded — ARM support and no longer requires a database" msgstr "" -#: ../../../CHANGELOG.md:2031 +#: ../../../CHANGELOG.md:2089 msgid "The [Sygnal](docs/configuring-playbook-sygnal.md) push gateway has been upgraded from `v0.9.0` to `v0.10.1`." msgstr "" -#: ../../../CHANGELOG.md:2033 +#: ../../../CHANGELOG.md:2091 msgid "This is an optional component for the playbook, so most of our users wouldn't care about this announcement." msgstr "" -#: ../../../CHANGELOG.md:2035 +#: ../../../CHANGELOG.md:2093 msgid "Since this feels like a relatively big (and untested, as of yet) Sygnal change, we're putting up this changelog entry." msgstr "" -#: ../../../CHANGELOG.md:2037 +#: ../../../CHANGELOG.md:2095 msgid "The new version is also available for the ARM architecture. It also no longer requires a database anymore. If you need to downgrade to the previous version, changing `matrix_sygnal_version` or `matrix_sygnal_docker_image` will not be enough, as we've removed the `database` configuration completely. You'd need to switch to an earlier playbook commit." msgstr "" -#: ../../../CHANGELOG.md:2040 +#: ../../../CHANGELOG.md:2098 msgid "2021-05-21" msgstr "" -#: ../../../CHANGELOG.md:2042 +#: ../../../CHANGELOG.md:2100 msgid "Hydrogen support" msgstr "" -#: ../../../CHANGELOG.md:2044 -msgid "Thanks to [Aaron Raimist](https://github.com/aaronraimist), the playbook now supports [Hydrogen](https://github.com/vector-im/hydrogen-web) - a new lightweight Matrix client with legacy and mobile browser support." +#: ../../../CHANGELOG.md:2102 +msgid "Thanks to [Aaron Raimist](https://github.com/aaronraimist), the playbook now supports [Hydrogen](https://github.com/vector-im/hydrogen-web) — a new lightweight Matrix client with legacy and mobile browser support." msgstr "" -#: ../../../CHANGELOG.md:2046 +#: ../../../CHANGELOG.md:2104 msgid "By default, we still install Element Web, as Hydrogen is still not fully-featured. Still, people who'd like to try Hydrogen out can now install it via the playbook." msgstr "" -#: ../../../CHANGELOG.md:2048 +#: ../../../CHANGELOG.md:2106 msgid "Additional details are available in [Setting up Hydrogen](docs/configuring-playbook-client-hydrogen.md)." msgstr "" -#: ../../../CHANGELOG.md:2051 +#: ../../../CHANGELOG.md:2109 msgid "2021-05-19" msgstr "" -#: ../../../CHANGELOG.md:2053 +#: ../../../CHANGELOG.md:2111 msgid "Heisenbridge support" msgstr "" -#: ../../../CHANGELOG.md:2055 +#: ../../../CHANGELOG.md:2113 msgid "Thanks to [Toni Spets (hifi)](https://github.com/hifi), the playbook now supports bridging to [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) using yet another bridge (besides matrix-appservice-irc), called [Heisenbridge](https://github.com/hifi/heisenbridge)." msgstr "" -#: ../../../CHANGELOG.md:2057 +#: ../../../CHANGELOG.md:2115 msgid "Additional details are available in [Setting up Heisenbridge bouncer-style IRC bridging](docs/configuring-playbook-bridge-heisenbridge.md)." msgstr "" -#: ../../../CHANGELOG.md:2060 +#: ../../../CHANGELOG.md:2118 msgid "2021-04-16" msgstr "" -#: ../../../CHANGELOG.md:2062 -msgid "Disabling TLSv1 and TLSv1.1 for Coturn" +#: ../../../CHANGELOG.md:2120 +msgid "Disabling TLSv1 and TLSv1.1 for coturn" msgstr "" -#: ../../../CHANGELOG.md:2064 -msgid "To improve security, we've [removed TLSv1 and TLSv1.1 support](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/999) from our default [Coturn](https://github.com/coturn/coturn) configuration." +#: ../../../CHANGELOG.md:2122 +msgid "To improve security, we've [removed TLSv1 and TLSv1.1 support](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/999) from our default [coturn](https://github.com/coturn/coturn) configuration." msgstr "" -#: ../../../CHANGELOG.md:2066 +#: ../../../CHANGELOG.md:2124 msgid "If you need to support old clients, you can re-enable both (or whichever one you need) with the following configuration:" msgstr "" -#: ../../../CHANGELOG.md:2074 +#: ../../../CHANGELOG.md:2132 msgid "2021-04-05" msgstr "" -#: ../../../CHANGELOG.md:2076 +#: ../../../CHANGELOG.md:2134 msgid "Automated local Postgres backup support" msgstr "" -#: ../../../CHANGELOG.md:2078 +#: ../../../CHANGELOG.md:2136 msgid "Thanks to [foxcris](https://github.com/foxcris), the playbook can now make automated local Postgres backups on a fixed schedule using [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local)." msgstr "" -#: ../../../CHANGELOG.md:2080 +#: ../../../CHANGELOG.md:2138 msgid "Additional details are available in [Setting up postgres backup](docs/configuring-playbook-postgres-backup.md)." msgstr "" -#: ../../../CHANGELOG.md:2083 +#: ../../../CHANGELOG.md:2141 msgid "2021-04-03" msgstr "" -#: ../../../CHANGELOG.md:2085 +#: ../../../CHANGELOG.md:2143 msgid "Mjolnir moderation tool (bot) support" msgstr "" -#: ../../../CHANGELOG.md:2087 +#: ../../../CHANGELOG.md:2145 msgid "Thanks to [Aaron Raimist](https://github.com/aaronraimist), the playbook can now install and configure the [Mjolnir](https://github.com/matrix-org/mjolnir) moderation tool (bot)." msgstr "" -#: ../../../CHANGELOG.md:2089 +#: ../../../CHANGELOG.md:2147 msgid "Additional details are available in [Setting up Mjolnir](docs/configuring-playbook-bot-mjolnir.md)." msgstr "" -#: ../../../CHANGELOG.md:2092 +#: ../../../CHANGELOG.md:2150 msgid "2021-03-20" msgstr "" -#: ../../../CHANGELOG.md:2094 +#: ../../../CHANGELOG.md:2152 msgid "Sygnal push gateway support" msgstr "" -#: ../../../CHANGELOG.md:2096 +#: ../../../CHANGELOG.md:2154 msgid "The playbook can now install the [Sygnal](https://github.com/matrix-org/sygnal) push gateway for you." msgstr "" -#: ../../../CHANGELOG.md:2098 +#: ../../../CHANGELOG.md:2156 msgid "This is only useful to people who develop/build their own Matrix client applications." msgstr "" -#: ../../../CHANGELOG.md:2100 +#: ../../../CHANGELOG.md:2158 msgid "Additional details are available in our [Setting up the Sygnal push gateway](docs/configuring-playbook-sygnal.md) docs." msgstr "" -#: ../../../CHANGELOG.md:2103 +#: ../../../CHANGELOG.md:2161 msgid "2021-03-16" msgstr "" -#: ../../../CHANGELOG.md:2105 +#: ../../../CHANGELOG.md:2163 msgid "Go-NEB support" msgstr "" -#: ../../../CHANGELOG.md:2107 +#: ../../../CHANGELOG.md:2165 msgid "Thanks to [Zir0h](https://github.com/Zir0h), the playbook can now install and configure the [Go-NEB](https://github.com/matrix-org/go-neb) bot." msgstr "" -#: ../../../CHANGELOG.md:2109 +#: ../../../CHANGELOG.md:2167 msgid "Additional details are available in [Setting up Go-NEB](docs/configuring-playbook-bot-go-neb.md)." msgstr "" -#: ../../../CHANGELOG.md:2112 +#: ../../../CHANGELOG.md:2170 msgid "2021-02-19" msgstr "" -#: ../../../CHANGELOG.md:2114 +#: ../../../CHANGELOG.md:2172 msgid "GroupMe bridging support via mx-puppet-groupme" msgstr "" -#: ../../../CHANGELOG.md:2116 +#: ../../../CHANGELOG.md:2174 msgid "Thanks to [Cody Neiman](https://github.com/xangelix), the playbook can now install the [mx-puppet-groupme](https://gitlab.com/robintown/mx-puppet-groupme) bridge for bridging to [GroupMe](https://groupme.com)." msgstr "" -#: ../../../CHANGELOG.md:2118 +#: ../../../CHANGELOG.md:2176 msgid "This brings the total number of bridges supported by the playbook up to 18. See all supported bridges [here](docs/configuring-playbook.md#bridging-other-networks)." msgstr "" -#: ../../../CHANGELOG.md:2120 +#: ../../../CHANGELOG.md:2178 msgid "To get started, follow our [Setting up MX Puppet GroupMe](docs/configuring-playbook-bridge-mx-puppet-groupme.md) docs." msgstr "" -#: ../../../CHANGELOG.md:2122 +#: ../../../CHANGELOG.md:2180 msgid "Mautrix Instagram bridging support" msgstr "" -#: ../../../CHANGELOG.md:2124 +#: ../../../CHANGELOG.md:2182 msgid "The playbook now supports bridging with [Instagram](https://www.instagram.com/) by installing the [mautrix-instagram](https://github.com/tulir/mautrix-instagram) bridge. This playbook functionality is available thanks to [@MarcProe](https://github.com/MarcProe)." msgstr "" -#: ../../../CHANGELOG.md:2126 +#: ../../../CHANGELOG.md:2184 msgid "Additional details are available in [Setting up Mautrix Instagram bridging](docs/configuring-playbook-bridge-mautrix-instagram.md)." msgstr "" -#: ../../../CHANGELOG.md:2128 +#: ../../../CHANGELOG.md:2186 msgid "Synapse workers support" msgstr "" -#: ../../../CHANGELOG.md:2130 +#: ../../../CHANGELOG.md:2188 msgid "After [lots and lots of work](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/456) (done over many months by [Marcel Partap](https://github.com/eMPee584), [Max Klenk](https://github.com/maxklenk), a few others from the [Technical University of Dresden, Germany](https://tu-dresden.de/) and various other contributors), support for Synapse workers has finally landed." msgstr "" -#: ../../../CHANGELOG.md:2132 +#: ../../../CHANGELOG.md:2190 msgid "Having support for workers makes the playbook suitable for larger homeserver deployments." msgstr "" -#: ../../../CHANGELOG.md:2134 -msgid "Our setup is not yet perfect (we don't support all types of workers; scaling some of them (like `pusher`, `federation_sender`) beyond a single instance is not yet supported). Still, it's a great start and can already power homeservers with thousands of users, like the [Matrix deployment at TU Dresden](https://doc.matrix.tu-dresden.de/en/) discussed in [Matrix Live S06E09 - TU Dresden on their Matrix deployment](https://www.youtube.com/watch?v=UHJX2pmT2gk)." +#: ../../../CHANGELOG.md:2192 +msgid "Our setup is not yet perfect (we don't support all types of workers; scaling some of them (like `pusher`, `federation_sender`) beyond a single instance is not yet supported). Still, it's a great start and can already power homeservers with thousands of users, like the [Matrix deployment at TU Dresden](https://doc.matrix.tu-dresden.de/en/) discussed in [Matrix Live S06E09 — TU Dresden on their Matrix deployment](https://www.youtube.com/watch?v=UHJX2pmT2gk)." msgstr "" -#: ../../../CHANGELOG.md:2136 +#: ../../../CHANGELOG.md:2194 msgid "By default, workers are disabled and Synapse runs as a single process (homeservers don't necessarily need the complexity and increased memory requirements of running a worker-based setup)." msgstr "" -#: ../../../CHANGELOG.md:2138 +#: ../../../CHANGELOG.md:2196 msgid "To enable Synapse workers, follow our [Load balancing with workers](docs/configuring-playbook-synapse.md#load-balancing-with-workers) documentation." msgstr "" -#: ../../../CHANGELOG.md:2141 +#: ../../../CHANGELOG.md:2199 msgid "2021-02-12" msgstr "" -#: ../../../CHANGELOG.md:2143 +#: ../../../CHANGELOG.md:2201 msgid "(Potential Breaking Change) Monitoring/metrics support using Prometheus and Grafana" msgstr "" -#: ../../../CHANGELOG.md:2145 +#: ../../../CHANGELOG.md:2203 msgid "Thanks to [@Peetz0r](https://github.com/Peetz0r), the playbook can now install a bunch of tools for monitoring your Matrix server: the [Prometheus](https://prometheus.io) time-series database server, the Prometheus [node-exporter](https://prometheus.io/docs/guides/node-exporter/) host metrics exporter, and the [Grafana](https://grafana.com/) web UI." msgstr "" -#: ../../../CHANGELOG.md:2147 +#: ../../../CHANGELOG.md:2205 msgid "To get get these installed, follow our [Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server](docs/configuring-playbook-prometheus-grafana.md) docs page." msgstr "" -#: ../../../CHANGELOG.md:2149 +#: ../../../CHANGELOG.md:2207 msgid "This update comes with a **potential breaking change** for people who were already exposing Synapse metrics (for consumption via another Prometheus installation). From now on, `matrix_synapse_metrics_enabled: true` no longer exposes metrics publicly via matrix-nginx-proxy (at `https://matrix.example.com/_synapse/metrics`). To do so, you'd need to explicitly set `matrix_nginx_proxy_proxy_synapse_metrics: true`." msgstr "" -#: ../../../CHANGELOG.md:2152 +#: ../../../CHANGELOG.md:2210 msgid "2021-01-31" msgstr "" -#: ../../../CHANGELOG.md:2154 +#: ../../../CHANGELOG.md:2212 msgid "Etherpad support" msgstr "" -#: ../../../CHANGELOG.md:2156 +#: ../../../CHANGELOG.md:2214 msgid "Thanks to [@pushytoxin](https://github.com/pushytoxin), the playbook can now install the [Etherpad](https://etherpad.org) realtime collaborative text editor. It can be used in a [Jitsi](https://jitsi.org/) audio/video call or integrated as a widget into Matrix chat rooms via the [Dimension](https://dimension.t2bot.io) integration manager." msgstr "" -#: ../../../CHANGELOG.md:2158 +#: ../../../CHANGELOG.md:2216 msgid "To get it installed, follow [our Etherpad docs page](docs/configuring-playbook-etherpad.md)." msgstr "" -#: ../../../CHANGELOG.md:2161 +#: ../../../CHANGELOG.md:2219 msgid "2021-01-22" msgstr "" -#: ../../../CHANGELOG.md:2163 +#: ../../../CHANGELOG.md:2221 msgid "(Breaking Change) Postgres changes that require manual intervention" msgstr "" -#: ../../../CHANGELOG.md:2165 +#: ../../../CHANGELOG.md:2223 msgid "We've made a lot of changes to our Postgres setup and some manual action is required (described below). Sorry about the hassle." msgstr "" -#: ../../../CHANGELOG.md:2167 +#: ../../../CHANGELOG.md:2225 msgid "**TLDR**: people running an [external Postgres server](docs/configuring-playbook-external-postgres.md) don't need to change anything for now. Everyone else (the common/default case) is affected and manual intervention is required." msgstr "" -#: ../../../CHANGELOG.md:2169 +#: ../../../CHANGELOG.md:2227 msgid "Why?" msgstr "" -#: ../../../CHANGELOG.md:2171 +#: ../../../CHANGELOG.md:2229 msgid "we had a default Postgres password (`matrix_postgres_connection_password: synapse-password`), which we think is **not ideal for security anymore**. We now ask you to generate/provide a strong password yourself. Postgres is normally not exposed outside the container network, making it relatively secure, but still:" msgstr "" -#: ../../../CHANGELOG.md:2172 +#: ../../../CHANGELOG.md:2230 msgid "by tweaking the configuration, you may end up intentionally or unintentionally exposing your Postgres server to the local network (or even publicly), while still using the default default credentials (`synapse` + `synapse-password`)" msgstr "" -#: ../../../CHANGELOG.md:2173 +#: ../../../CHANGELOG.md:2231 msgid "we can't be sure we trust all these services (bridges, etc). Some of them may try to talk to or attack `matrix-postgres` using the default credentials (`synapse` + `synapse-password`)" msgstr "" -#: ../../../CHANGELOG.md:2174 +#: ../../../CHANGELOG.md:2232 msgid "you may have other containers running on the same Docker network, which may try to talk to or attack `matrix-postgres` using the default credentials (`synapse` + `synapse-password`)" msgstr "" -#: ../../../CHANGELOG.md:2175 +#: ../../../CHANGELOG.md:2233 msgid "our Postgres usage **was overly-focused on Synapse** (default username of `synapse` and default/main database of `homeserver`). Additional homeserver options are likely coming in the future ([Dendrite](https://matrix.org/docs/projects/server/dendrite), [Conduit](https://matrix.org/docs/projects/server/conduit), [The Construct](https://matrix.org/docs/projects/server/construct)), so being too focused on `matrix-synapse` is not great. From now on, Synapse is just another component of this playbook, which happens to have an *additional database* (called `synapse`) on the Postgres server." msgstr "" -#: ../../../CHANGELOG.md:2176 +#: ../../../CHANGELOG.md:2234 msgid "we try to reorganize things a bit, to make the playbook even friendlier to people running an [external Postgres server](docs/configuring-playbook-external-postgres.md). Work on this will proceed in the future." msgstr "" -#: ../../../CHANGELOG.md:2178 +#: ../../../CHANGELOG.md:2236 msgid "So, this is some **effort to improve security** and to **prepare for a brighter future of having more homeserver options** than just Synapse." msgstr "" -#: ../../../CHANGELOG.md:2180 +#: ../../../CHANGELOG.md:2238 msgid "What has really changed?" msgstr "" -#: ../../../CHANGELOG.md:2182 +#: ../../../CHANGELOG.md:2240 msgid "the default superuser Postgres username is now `matrix` (used to be `synapse`)" msgstr "" -#: ../../../CHANGELOG.md:2183 +#: ../../../CHANGELOG.md:2241 msgid "the default Postgres database is now `matrix` (used to be `homeserver`)" msgstr "" -#: ../../../CHANGELOG.md:2184 +#: ../../../CHANGELOG.md:2242 msgid "Synapse's database is now `synapse` (used to be `homeserver`). This is now just another \"additional database\" that the playbook manages for you" msgstr "" -#: ../../../CHANGELOG.md:2185 +#: ../../../CHANGELOG.md:2243 msgid "Synapse's user called `synapse` is just a regular user that can only use the `synapse` database (not a superuser anymore)" msgstr "" -#: ../../../CHANGELOG.md:2187 +#: ../../../CHANGELOG.md:2245 msgid "What do I do if I'm using the integrated Postgres server (default)?" msgstr "" -#: ../../../CHANGELOG.md:2189 +#: ../../../CHANGELOG.md:2247 msgid "By default, the playbook runs an integrated Postgres server for you in a container (`matrix-postgres`). Unless you've explicitly configured an [external Postgres server](docs/configuring-playbook-external-postgres.md), these steps are meant for you." msgstr "" -#: ../../../CHANGELOG.md:2191 +#: ../../../CHANGELOG.md:2249 msgid "To migrate to the new setup, expect a few minutes of downtime, while you follow these steps:" msgstr "" -#: ../../../CHANGELOG.md:2193 +#: ../../../CHANGELOG.md:2251 msgid "We believe the steps below are safe and you won't encounter any data loss, but consider [making a Postgres backup](docs/maintenance-postgres.md#backing-up-postgresql) anyway. If you've never backed up Postgres, now would be a good time to try it." msgstr "" -#: ../../../CHANGELOG.md:2195 +#: ../../../CHANGELOG.md:2253 msgid "Generate a strong password to be used for your superuser Postgres user (called `matrix`). You can create one with a command like `pwgen -s 64 1`. The **maximum length** for a Postgres password is 100 bytes (characters). Don't go crazy!" msgstr "" -#: ../../../CHANGELOG.md:2197 +#: ../../../CHANGELOG.md:2255 msgid "Update your playbook's `inventory/host_vars/matrix.example.com/vars.yml` file, adding a line like this:" msgstr "" -#: ../../../CHANGELOG.md:2202 ../../../CHANGELOG.md:2214 -msgid ".. where `YOUR_POSTGRES_PASSWORD_HERE` is to be replaced with the password you generated during step #2." +#: ../../../CHANGELOG.md:2260 ../../../CHANGELOG.md:2272 +msgid "… where `YOUR_POSTGRES_PASSWORD_HERE` is to be replaced with the password you generated during step #2." msgstr "" -#: ../../../CHANGELOG.md:2204 +#: ../../../CHANGELOG.md:2262 msgid "Stop all services: `ansible-playbook -i inventory/hosts setup.yml --tags=stop`" msgstr "" -#: ../../../CHANGELOG.md:2205 +#: ../../../CHANGELOG.md:2263 msgid "Log in to the server via SSH. The next commands will be performed there." msgstr "" -#: ../../../CHANGELOG.md:2206 +#: ../../../CHANGELOG.md:2264 msgid "Start the Postgres database server: `systemctl start matrix-postgres`" msgstr "" -#: ../../../CHANGELOG.md:2207 +#: ../../../CHANGELOG.md:2265 msgid "Open a Postgres shell: `/usr/local/bin/matrix-postgres-cli`" msgstr "" -#: ../../../CHANGELOG.md:2208 +#: ../../../CHANGELOG.md:2266 msgid "Execute the following query, while making sure to **change the password inside** (**don't forget the ending `;`**):" msgstr "" -#: ../../../CHANGELOG.md:2216 +#: ../../../CHANGELOG.md:2274 msgid "Execute the following queries as you see them (no modifications necessary, so you can just **paste them all at once**):" msgstr "" -#: ../../../CHANGELOG.md:2234 +#: ../../../CHANGELOG.md:2292 msgid "You may need to press *Enter* after pasting the lines above." msgstr "" -#: ../../../CHANGELOG.md:2236 +#: ../../../CHANGELOG.md:2294 msgid "Re-run the playbook normally: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`" msgstr "" -#: ../../../CHANGELOG.md:2238 +#: ../../../CHANGELOG.md:2296 msgid "What do I do if I'm using an external Postgres server?" msgstr "" -#: ../../../CHANGELOG.md:2240 +#: ../../../CHANGELOG.md:2298 msgid "If you've explicitly configured an [external Postgres server](docs/configuring-playbook-external-postgres.md), there are **no changes** that you need to do at this time." msgstr "" -#: ../../../CHANGELOG.md:2242 +#: ../../../CHANGELOG.md:2300 msgid "The fact that we've renamed Synapse's database from `homeserver` to `synapse` (in our defaults) should not affect you, as you're already explicitly defining `matrix_synapse_database_database` (if you've followed our guide, that is). If you're not explicitly defining this variable, you may wish to do so (`matrix_synapse_database_database: homeserver`), to avoid the new `synapse` default and keep things as they were." msgstr "" -#: ../../../CHANGELOG.md:2245 +#: ../../../CHANGELOG.md:2303 msgid "2021-01-20" msgstr "" -#: ../../../CHANGELOG.md:2247 +#: ../../../CHANGELOG.md:2305 msgid "(Breaking Change) The mautrix-facebook bridge now requires a Postgres database" msgstr "" -#: ../../../CHANGELOG.md:2249 +#: ../../../CHANGELOG.md:2307 msgid "**Update from 2021-11-15**: SQLite support has been re-added to the mautrix-facebook bridge in [v0.3.2](https://github.com/mautrix/facebook/releases/tag/v0.3.2). You can ignore this changelog entry." msgstr "" -#: ../../../CHANGELOG.md:2251 +#: ../../../CHANGELOG.md:2309 msgid "A new version of the [mautrix-facebook](https://github.com/tulir/mautrix-facebook) bridge has been released. It's a full rewrite of its backend and the bridge now requires Postgres. New versions of the bridge can no longer run on SQLite." msgstr "" -#: ../../../CHANGELOG.md:2253 +#: ../../../CHANGELOG.md:2311 msgid "**TLDR**: if you're NOT using an [external Postgres server](docs/configuring-playbook-external-postgres.md) and have NOT forcefully kept the bridge on SQLite during [The big move to all-on-Postgres (potentially dangerous)](#the-big-move-to-all-on-postgres-potentially-dangerous), you will be automatically upgraded without manual intervention. All you need to do is send a `login` message to the Facebook bridge bot again." msgstr "" -#: ../../../CHANGELOG.md:2255 +#: ../../../CHANGELOG.md:2313 msgid "Whether this change requires your intervention depends mostly on:" msgstr "" -#: ../../../CHANGELOG.md:2256 +#: ../../../CHANGELOG.md:2314 msgid "whether you're using an [external Postgres server](docs/configuring-playbook-external-postgres.md). If yes, then [you need to do something](#upgrade-path-for-people-running-an-external-postgres-server)." msgstr "" -#: ../../../CHANGELOG.md:2257 +#: ../../../CHANGELOG.md:2315 msgid "or whether you've force-changed the bridge's database engine to SQLite (`matrix_mautrix_facebook_database_engine: 'sqlite'` in your `vars.yml`) some time in the past (likely during [The big move to all-on-Postgres (potentially dangerous)](#the-big-move-to-all-on-postgres-potentially-dangerous))." msgstr "" -#: ../../../CHANGELOG.md:2259 +#: ../../../CHANGELOG.md:2317 msgid "As already mentioned above, you most likely don't need to do anything. If you rerun the playbook and don't get an error, you've been automatically upgraded. Just send a `login` message to the Facebook bridge bot again. Otherwise, read below for a solution." msgstr "" -#: ../../../CHANGELOG.md:2261 +#: ../../../CHANGELOG.md:2319 msgid "Upgrade path for people NOT running an external Postgres server (default for the playbook)" msgstr "" -#: ../../../CHANGELOG.md:2263 +#: ../../../CHANGELOG.md:2321 msgid "If you're **not running an external Postgres server**, then this bridge either already works on Postgres for you, or you've intentionally kept it back on SQLite with custom configuration (`matrix_mautrix_facebook_database_engine: 'sqlite'` in your `vars.yml`) ." msgstr "" -#: ../../../CHANGELOG.md:2265 +#: ../../../CHANGELOG.md:2323 msgid "Simply remove that custom configuration from your `vars.yml` file (if it's there) and re-run the playbook. It should upgrade you automatically. You'll need to send a `login` message to the Facebook bridge bot again." msgstr "" -#: ../../../CHANGELOG.md:2267 +#: ../../../CHANGELOG.md:2325 msgid "Alternatively, [you can stay on SQLite for a little longer](#staying-on-sqlite-for-a-little-longer-temporary-solution)." msgstr "" -#: ../../../CHANGELOG.md:2269 +#: ../../../CHANGELOG.md:2327 msgid "Upgrade path for people running an external Postgres server" msgstr "" -#: ../../../CHANGELOG.md:2271 +#: ../../../CHANGELOG.md:2329 msgid "For people using the internal Postgres server (the default for the playbook):" msgstr "" -#: ../../../CHANGELOG.md:2272 +#: ../../../CHANGELOG.md:2330 msgid "we automatically create an additional `matrix_mautrix_facebook` Postgres database and credentials to access it" msgstr "" -#: ../../../CHANGELOG.md:2273 +#: ../../../CHANGELOG.md:2331 msgid "we automatically adjust the bridge's `matrix_mautrix_facebook_database_*` variables to point the bridge to that Postgres database" msgstr "" -#: ../../../CHANGELOG.md:2274 +#: ../../../CHANGELOG.md:2332 msgid "we use [pgloader](https://pgloader.io/) to automatically import the existing SQLite data for the bridge into the `matrix_mautrix_facebook` Postgres database" msgstr "" -#: ../../../CHANGELOG.md:2276 +#: ../../../CHANGELOG.md:2334 msgid "If you are using an [external Postgres server](docs/configuring-playbook-external-postgres.md), unfortunately we currently can't do any of that for you." msgstr "" -#: ../../../CHANGELOG.md:2278 +#: ../../../CHANGELOG.md:2336 msgid "You have 3 ways to proceed:" msgstr "" -#: ../../../CHANGELOG.md:2280 +#: ../../../CHANGELOG.md:2338 msgid "contribute to the playbook to make this possible (difficult)" msgstr "" -#: ../../../CHANGELOG.md:2281 +#: ../../../CHANGELOG.md:2339 msgid "or, do the migration \"steps\" manually:" msgstr "" -#: ../../../CHANGELOG.md:2282 +#: ../../../CHANGELOG.md:2340 msgid "stop the bridge (`systemctl stop matrix-mautrix-facebook`)" msgstr "" -#: ../../../CHANGELOG.md:2283 +#: ../../../CHANGELOG.md:2341 msgid "create a new `matrix_mautrix_facebook` Postgres database for it" msgstr "" -#: ../../../CHANGELOG.md:2284 +#: ../../../CHANGELOG.md:2342 msgid "run [pgloader](https://pgloader.io/) manually (we import this bridge's data using default settings and it works well)" msgstr "" -#: ../../../CHANGELOG.md:2285 -msgid "define `matrix_mautrix_facebook_database_*` variables in your `vars.yml` file (credentials, etc.) - you can find their defaults in `roles/custom/matrix-mautrix-facebook/defaults/main.yml`" +#: ../../../CHANGELOG.md:2343 +msgid "define `matrix_mautrix_facebook_database_*` variables in your `vars.yml` file (credentials, etc.) — you can find their defaults in `roles/custom/matrix-mautrix-facebook/defaults/main.yml`" msgstr "" -#: ../../../CHANGELOG.md:2286 +#: ../../../CHANGELOG.md:2344 msgid "switch the bridge to Postgres (`matrix_mautrix_facebook_database_engine: 'postgres'` in your `vars.yml` file)" msgstr "" -#: ../../../CHANGELOG.md:2287 +#: ../../../CHANGELOG.md:2345 msgid "re-run the playbook (`--tags=setup-all,start`) and ensure the bridge works (`systemctl status matrix-mautrix-facebook` and `journalctl -fu matrix-mautrix-facebook`)" msgstr "" -#: ../../../CHANGELOG.md:2288 +#: ../../../CHANGELOG.md:2346 msgid "send a `login` message to the Facebook bridge bot again" msgstr "" -#: ../../../CHANGELOG.md:2289 +#: ../../../CHANGELOG.md:2347 msgid "or, [stay on SQLite for a little longer (temporary solution)](#staying-on-sqlite-for-a-little-longer-temporary-solution)" msgstr "" -#: ../../../CHANGELOG.md:2291 +#: ../../../CHANGELOG.md:2349 msgid "Staying on SQLite for a little longer (temporary solution)" msgstr "" -#: ../../../CHANGELOG.md:2293 +#: ../../../CHANGELOG.md:2351 msgid "To keep using this bridge with SQLite for a little longer (**not recommended**), use the following configuration in your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:2303 +#: ../../../CHANGELOG.md:2361 msgid "If you do this, keep in mind that **you can't run this forever**. This SQLite-supporting bridge version is not getting any updates and will break sooner or later. The playbook will also drop support for SQLite at some point in the future." msgstr "" -#: ../../../CHANGELOG.md:2306 +#: ../../../CHANGELOG.md:2364 msgid "2021-01-17" msgstr "" -#: ../../../CHANGELOG.md:2308 +#: ../../../CHANGELOG.md:2366 msgid "matrix-corporal goes 2.0" msgstr "" -#: ../../../CHANGELOG.md:2310 +#: ../../../CHANGELOG.md:2368 msgid "[matrix-corporal v2 has been released](https://github.com/devture/matrix-corporal/releases/tag/2.0.0) and the playbook also supports it now." msgstr "" -#: ../../../CHANGELOG.md:2312 +#: ../../../CHANGELOG.md:2370 msgid "No manual intervention is required in the common case." msgstr "" -#: ../../../CHANGELOG.md:2314 +#: ../../../CHANGELOG.md:2372 msgid "The new [matrix-corporal](https://github.com/devture/matrix-corporal) version is also the first one to support Interactive Authentication. If you wish to enable that (hint: you should), you'll need to set up the [REST auth password provider](docs/configuring-playbook-rest-auth.md). There's more information in [our matrix-corporal docs](docs/configuring-playbook-matrix-corporal.md)." msgstr "" -#: ../../../CHANGELOG.md:2317 +#: ../../../CHANGELOG.md:2375 msgid "2021-01-14" msgstr "" -#: ../../../CHANGELOG.md:2319 +#: ../../../CHANGELOG.md:2377 msgid "Moving from cronjobs to systemd timers" msgstr "" -#: ../../../CHANGELOG.md:2321 +#: ../../../CHANGELOG.md:2379 msgid "We no longer use cronjobs for Let's Encrypt SSL renewal and `matrix-nginx-proxy`/`matrix-coturn` reloading. Instead, we've switched to systemd timers." msgstr "" -#: ../../../CHANGELOG.md:2323 +#: ../../../CHANGELOG.md:2381 msgid "The largest benefit of this is that we no longer require you to install a cron daemon, thus simplifying our install procedure." msgstr "" -#: ../../../CHANGELOG.md:2325 +#: ../../../CHANGELOG.md:2383 msgid "The playbook will migrate you from cronjobs to systemd timers automatically. This is just a heads up." msgstr "" -#: ../../../CHANGELOG.md:2328 +#: ../../../CHANGELOG.md:2386 msgid "2021-01-08" msgstr "" -#: ../../../CHANGELOG.md:2330 +#: ../../../CHANGELOG.md:2388 msgid "(Breaking Change) New SSL configuration" msgstr "" -#: ../../../CHANGELOG.md:2332 +#: ../../../CHANGELOG.md:2390 msgid "SSL configuration (protocols, ciphers) can now be more easily controlled thanks to us making use of configuration presets." msgstr "" -#: ../../../CHANGELOG.md:2334 +#: ../../../CHANGELOG.md:2392 msgid "We define a few presets (old, intermediate, modern), following the [Mozilla SSL Configuration Generator](https://ssl-config.mozilla.org/#server=nginx)." msgstr "" -#: ../../../CHANGELOG.md:2336 +#: ../../../CHANGELOG.md:2394 msgid "A new variable `matrix_nginx_proxy_ssl_preset` controls which preset is used (defaults to `\"intermediate\"`)." msgstr "" -#: ../../../CHANGELOG.md:2338 +#: ../../../CHANGELOG.md:2396 msgid "Compared to before, this changes nginx's `ssl_prefer_server_ciphers` to `off` (used to default to `on`). It also add some more ciphers to the list, giving better performance on mobile devices, and removes some weak ciphers. More information in the [documentation](docs/configuring-playbook-nginx.md)." msgstr "" -#: ../../../CHANGELOG.md:2340 +#: ../../../CHANGELOG.md:2398 msgid "To revert to the old behaviour, set the following variables:" msgstr "" -#: ../../../CHANGELOG.md:2347 +#: ../../../CHANGELOG.md:2405 msgid "Just like before, you can still use your own custom protocols by specifying them in `matrix_nginx_proxy_ssl_protocols`. Doing so overrides the values coming from the preset." msgstr "" -#: ../../../CHANGELOG.md:2350 +#: ../../../CHANGELOG.md:2408 msgid "2021-01-03" msgstr "" -#: ../../../CHANGELOG.md:2352 +#: ../../../CHANGELOG.md:2410 msgid "Signal bridging support via mautrix-signal" msgstr "" -#: ../../../CHANGELOG.md:2354 +#: ../../../CHANGELOG.md:2412 msgid "Thanks to [laszabine](https://github.com/laszabine)'s efforts, the playbook now supports bridging to [Signal](https://www.signal.org/) via the [mautrix-signal](https://github.com/tulir/mautrix-signal) bridge. See our [Setting up Mautrix Signal bridging](docs/configuring-playbook-bridge-mautrix-signal.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:2356 +#: ../../../CHANGELOG.md:2414 msgid "If you had installed the mautrix-signal bridge while its Pull Request was still work-in-progress, you can migrate your data to the new and final setup by referring to [this comment](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/686#issuecomment-753510789)." msgstr "" -#: ../../../CHANGELOG.md:2359 +#: ../../../CHANGELOG.md:2417 msgid "2020-12-23" msgstr "" -#: ../../../CHANGELOG.md:2361 +#: ../../../CHANGELOG.md:2419 msgid "The big move to all-on-Postgres (potentially dangerous)" msgstr "" -#: ../../../CHANGELOG.md:2363 +#: ../../../CHANGELOG.md:2421 msgid "**TLDR**: all your bridges (and other services) will likely be auto-migrated from SQLite/nedb to Postgres, hopefully without trouble. You can opt-out (see how below), if too worried about breakage." msgstr "" -#: ../../../CHANGELOG.md:2365 +#: ../../../CHANGELOG.md:2423 msgid "Until now, we've only used Postgres as a database for Synapse. All other services (bridges, bots, etc.) were kept simple and used a file-based database (SQLite or nedb)." msgstr "" -#: ../../../CHANGELOG.md:2367 +#: ../../../CHANGELOG.md:2425 msgid "Since [this huge pull request](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/740), **all of our services now use Postgres by default**. Thanks to [Johanna Dorothea Reichmann](https://github.com/jdreichmann) for starting the work on it and for providing great input!" msgstr "" -#: ../../../CHANGELOG.md:2369 +#: ../../../CHANGELOG.md:2427 msgid "Moving all services to Postgres brings a few **benefits** to us:" msgstr "" -#: ../../../CHANGELOG.md:2371 +#: ../../../CHANGELOG.md:2429 msgid "**improved performance**" msgstr "" -#: ../../../CHANGELOG.md:2372 +#: ../../../CHANGELOG.md:2430 msgid "**improved compatibility**. Most bridges are deprecating SQLite/nedb support or offer less features when not on Postgres." msgstr "" -#: ../../../CHANGELOG.md:2373 +#: ../../../CHANGELOG.md:2431 msgid "**easier backups**. It's still some effort to take a proper backup (Postgres dump + various files, keys), but a Postgres dump now takes you much further." msgstr "" -#: ../../../CHANGELOG.md:2374 -msgid "we're now **more prepared to introduce other services** that need a Postgres database - [Dendrite](https://github.com/matrix-org/dendrite), the [mautrix-signal](https://github.com/tulir/mautrix-signal) bridge (existing [pull request](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/686)), etc." +#: ../../../CHANGELOG.md:2432 +msgid "we're now **more prepared to introduce other services** that need a Postgres database — [Dendrite](https://github.com/matrix-org/dendrite), the [mautrix-signal](https://github.com/tulir/mautrix-signal) bridge (existing [pull request](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/686)), etc." msgstr "" -#: ../../../CHANGELOG.md:2376 +#: ../../../CHANGELOG.md:2434 msgid "Key takeway" msgstr "" -#: ../../../CHANGELOG.md:2378 +#: ../../../CHANGELOG.md:2436 msgid "existing installations that use an [external Postgres](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-external-postgres.md) server should be unaffected (they remain on SQLite/nedb for all services, except Synapse)" msgstr "" -#: ../../../CHANGELOG.md:2380 +#: ../../../CHANGELOG.md:2438 msgid "for existing installations which use our integrated Postgres database server (`matrix-postgres`, which is the default), **we automatically migrate data** from SQLite/nedb to Postgres and **archive the database files** (`something.db` -> `something.db.backup`), so you can restore them if you need to go back (see how below)." msgstr "" -#: ../../../CHANGELOG.md:2382 +#: ../../../CHANGELOG.md:2440 msgid "Opting-out of the Postgres migration" msgstr "" -#: ../../../CHANGELOG.md:2384 +#: ../../../CHANGELOG.md:2442 msgid "This is a **very large and somewhat untested change** (potentially dangerous), so **if you're not feeling confident/experimental, opt-out** of it for now. Still, it's the new default and what we (and various bridges) will focus on going forward, so don't stick to old ways for too long." msgstr "" -#: ../../../CHANGELOG.md:2386 +#: ../../../CHANGELOG.md:2444 msgid "You can remain on SQLite/nedb (at least for now) by adding a variable like this to your `vars.yml` file for each service you use: `matrix_COMPONENT_database_engine: sqlite` (e.g. `matrix_mautrix_facebook_database_engine: sqlite`)." msgstr "" -#: ../../../CHANGELOG.md:2388 +#: ../../../CHANGELOG.md:2446 msgid "Some services (like `appservice-irc` and `appservice-slack`) don't use SQLite, so use `nedb`, instead of `sqlite` for them." msgstr "" -#: ../../../CHANGELOG.md:2390 +#: ../../../CHANGELOG.md:2448 msgid "Going back to SQLite/nedb if things went wrong" msgstr "" -#: ../../../CHANGELOG.md:2392 +#: ../../../CHANGELOG.md:2450 msgid "If you went with the Postgres migration and it went badly for you (some bridge not working as expected or not working at all), do this:" msgstr "" -#: ../../../CHANGELOG.md:2394 +#: ../../../CHANGELOG.md:2452 msgid "stop all services (`ansible-playbook -i inventory/hosts setup.yml --tags=stop`)" msgstr "" -#: ../../../CHANGELOG.md:2395 +#: ../../../CHANGELOG.md:2453 msgid "SSH into the server and rename the old database files (`something.db.backup` -> `something.db`). Example: `mv /matrix/mautrix-facebook/data/mautrix-facebook.db.backup /matrix/mautrix-facebook/data/mautrix-facebook.db`" msgstr "" -#: ../../../CHANGELOG.md:2396 +#: ../../../CHANGELOG.md:2454 msgid "switch the affected service back to SQLite (e.g. `matrix_mautrix_facebook_database_engine: sqlite`). Some services (like `appservice-irc` and `appservice-slack`) don't use SQLite, so use `nedb`, instead of `sqlite` for them." msgstr "" -#: ../../../CHANGELOG.md:2397 +#: ../../../CHANGELOG.md:2455 msgid "re-run the playbook (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`)" msgstr "" -#: ../../../CHANGELOG.md:2398 +#: ../../../CHANGELOG.md:2456 msgid "[get in touch](README.md#support) with us" msgstr "" -#: ../../../CHANGELOG.md:2400 +#: ../../../CHANGELOG.md:2458 msgid "2020-12-11" msgstr "" -#: ../../../CHANGELOG.md:2402 +#: ../../../CHANGELOG.md:2460 msgid "synapse-janitor support removed" msgstr "" -#: ../../../CHANGELOG.md:2404 +#: ../../../CHANGELOG.md:2462 msgid "We've removed support for the unmaintained [synapse-janitor](https://github.com/xwiki-labs/synapse_scripts) script. There's been past reports of it corrupting the Synapse database. Since there hasn't been any new development on it and it doesn't seem too useful nowadays, there's no point in including it in the playbook." msgstr "" -#: ../../../CHANGELOG.md:2406 +#: ../../../CHANGELOG.md:2464 msgid "If you need to clean up or compact your database, consider using the Synapse Admin APIs directly. See our [Synapse maintenance](docs/maintenance-synapse.md) and [Postgres maintenance](docs/maintenance-postgres.md) documentation pages for more details." msgstr "" -#: ../../../CHANGELOG.md:2408 +#: ../../../CHANGELOG.md:2466 msgid "Docker 20.10 is here" msgstr "" -#: ../../../CHANGELOG.md:2410 +#: ../../../CHANGELOG.md:2468 msgid "(No need to do anything special in relation to this. Just something to keep in mind)" msgstr "" -#: ../../../CHANGELOG.md:2412 +#: ../../../CHANGELOG.md:2470 msgid "Docker 20.10 got released recently and your server will likely get it the next time you update." msgstr "" -#: ../../../CHANGELOG.md:2414 +#: ../../../CHANGELOG.md:2472 msgid "This is the first major Docker update in a long time and it packs a lot of changes. Some of them introduced some breakage for us initially (see [here](https://github.com/spantaleev/matrix-docker-ansible-deploy/commit/d08b27784f222effcbce2abf924bf07bbe0893be) and [here](https://github.com/spantaleev/matrix-docker-ansible-deploy/commit/7593d969e316cc0144bce378a5be58c76c2c37ee)), but it should be all good now." msgstr "" -#: ../../../CHANGELOG.md:2417 +#: ../../../CHANGELOG.md:2475 msgid "2020-12-08" msgstr "" -#: ../../../CHANGELOG.md:2419 +#: ../../../CHANGELOG.md:2477 msgid "openid APIs exposed by default on the federation port when federation disabled" msgstr "" -#: ../../../CHANGELOG.md:2421 +#: ../../../CHANGELOG.md:2479 msgid "We've changed some defaults. People running with our default configuration (federation enabled), are not affected at all." msgstr "" -#: ../../../CHANGELOG.md:2423 +#: ../../../CHANGELOG.md:2481 msgid "If you are running an unfederated server (`matrix_synapse_federation_enabled: false`), this may be of interest to you." msgstr "" -#: ../../../CHANGELOG.md:2425 +#: ../../../CHANGELOG.md:2483 msgid "When federation is disabled, but ma1sd or Dimension are enabled, we'll now expose the `openid` APIs on the federation port. These APIs are necessary for some ma1sd features to work. If you'd like to prevent this, you can: `matrix_synapse_federation_port_openid_resource_required: false`." msgstr "" -#: ../../../CHANGELOG.md:2428 +#: ../../../CHANGELOG.md:2486 msgid "2020-11-27" msgstr "" -#: ../../../CHANGELOG.md:2430 +#: ../../../CHANGELOG.md:2488 msgid "Recent Jitsi updates may require configuration changes" msgstr "" -#: ../../../CHANGELOG.md:2432 +#: ../../../CHANGELOG.md:2490 msgid "We've recently [updated from Jitsi build 4857 to build 5142](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/719), which brings a lot of configuration changes." msgstr "" -#: ../../../CHANGELOG.md:2434 +#: ../../../CHANGELOG.md:2492 msgid "**If you use our default Jitsi settings, you won't have to do anything.**" msgstr "" -#: ../../../CHANGELOG.md:2436 +#: ../../../CHANGELOG.md:2494 msgid "People who have [fine-tuned Jitsi](docs/configuring-playbook-jitsi.md#optional-fine-tune-jitsi) may find that some options got renamed now, others are gone and yet others still need to be defined in another way." msgstr "" -#: ../../../CHANGELOG.md:2438 +#: ../../../CHANGELOG.md:2496 msgid "The next time you run the playbook [installation](docs/installing.md) command, our validation logic will tell you if you're using some variables like that and will recommend a migration path for each one." msgstr "" -#: ../../../CHANGELOG.md:2440 +#: ../../../CHANGELOG.md:2498 msgid "Additionally, we've recently disabled transcriptions (`jitsi_enable_transcriptions: false`) and recording (`jitsi_enable_recording: false`) by default. These features did not work anyway, because we don't install the required dependencies for them (Jigasi and Jibri, respectively). If you've been somehow pointing your Jitsi installation to some manually installed Jigasi/Jibri service, you may need to toggle these flags back to enabled to have transcriptions and recordings working." msgstr "" -#: ../../../CHANGELOG.md:2443 +#: ../../../CHANGELOG.md:2501 msgid "2020-11-23" msgstr "" -#: ../../../CHANGELOG.md:2445 ../../../CHANGELOG.md:2453 +#: ../../../CHANGELOG.md:2503 ../../../CHANGELOG.md:2511 msgid "Breaking change matrix-sms-bridge" msgstr "" -#: ../../../CHANGELOG.md:2447 +#: ../../../CHANGELOG.md:2505 msgid "Because of many problems using gammu as SMS provider, matrix-sms-bridge now uses (https://github.com/RebekkaMa/android-sms-gateway-server) by default. See (the docs)[./docs/configuring-playbook-bridge-matrix-bridge-sms.md] which new vars you need to add." msgstr "" -#: ../../../CHANGELOG.md:2449 +#: ../../../CHANGELOG.md:2507 msgid "If you are using this playbook to deploy matrix-sms-bridge and still really want to use gammu as SMS provider, we could possibly add support for both android-sms-gateway-server and gammu." msgstr "" -#: ../../../CHANGELOG.md:2451 +#: ../../../CHANGELOG.md:2509 msgid "2020-11-13" msgstr "" -#: ../../../CHANGELOG.md:2455 +#: ../../../CHANGELOG.md:2513 msgid "The new version of [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) changed its database from neo4j to h2. You need to sync the bridge at the first start. Note that this only will sync rooms where the @smsbot:yourServer is member. For rooms without @smsbot:yourServer you need to kick and invite the telephone number **or** invite @smsbot:yourServer." msgstr "" -#: ../../../CHANGELOG.md:2457 +#: ../../../CHANGELOG.md:2515 msgid "Add the following to your `vars.yml` file: `matrix_sms_bridge_container_extra_arguments=['--env SPRING_PROFILES_ACTIVE=initialsync']`" msgstr "" -#: ../../../CHANGELOG.md:2458 +#: ../../../CHANGELOG.md:2516 msgid "Login to your host shell and remove old systemd file from your host: `rm /etc/systemd/system/matrix-sms-bridge-database.service`" msgstr "" -#: ../../../CHANGELOG.md:2459 +#: ../../../CHANGELOG.md:2517 msgid "Run `ansible-playbook -i inventory/hosts setup.yml --tags=setup-matrix-sms-bridge,start`" msgstr "" -#: ../../../CHANGELOG.md:2460 +#: ../../../CHANGELOG.md:2518 msgid "Login to your host shell and check the logs with `journalctl -u matrix-sms-bridge` until the sync finished." msgstr "" -#: ../../../CHANGELOG.md:2461 +#: ../../../CHANGELOG.md:2519 msgid "Remove the var from the first step." msgstr "" -#: ../../../CHANGELOG.md:2462 +#: ../../../CHANGELOG.md:2520 msgid "Run `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`." msgstr "" -#: ../../../CHANGELOG.md:2464 +#: ../../../CHANGELOG.md:2522 msgid "2020-11-10" msgstr "" -#: ../../../CHANGELOG.md:2466 +#: ../../../CHANGELOG.md:2524 msgid "Dynamic DNS support" msgstr "" -#: ../../../CHANGELOG.md:2468 +#: ../../../CHANGELOG.md:2526 msgid "Thanks to [Scott Crossen](https://github.com/scottcrossen), the playbook can now manage Dynamic DNS for you using [ddclient](https://ddclient.net/)." msgstr "" -#: ../../../CHANGELOG.md:2470 +#: ../../../CHANGELOG.md:2528 msgid "To learn more, follow our [Dynamic DNS docs page](docs/configuring-playbook-dynamic-dns.md)." msgstr "" -#: ../../../CHANGELOG.md:2473 +#: ../../../CHANGELOG.md:2531 msgid "2020-10-28" msgstr "" -#: ../../../CHANGELOG.md:2475 +#: ../../../CHANGELOG.md:2533 msgid "(Compatibility Break) https://matrix.example.com/ now redirects to https://element.example.com/" msgstr "" -#: ../../../CHANGELOG.md:2477 +#: ../../../CHANGELOG.md:2535 msgid "Until now, we used to serve a static page coming from Synapse at `https://matrix.example.com/`. This page was not very useful to anyone." msgstr "" -#: ../../../CHANGELOG.md:2479 +#: ../../../CHANGELOG.md:2537 msgid "Since `matrix.example.com` may be accessed by regular users in certain conditions, it's probably better to redirect them to a better place (e.g. to [Element Web](docs/configuring-playbook-client-element-web.md))." msgstr "" -#: ../../../CHANGELOG.md:2481 +#: ../../../CHANGELOG.md:2539 msgid "If Element Web is installed (`matrix_client_element_enabled: true`, which it is by default), we now redirect people to it, instead of showing them a Synapse static page." msgstr "" -#: ../../../CHANGELOG.md:2483 +#: ../../../CHANGELOG.md:2541 msgid "If you'd like to control where the redirect goes, use the `matrix_nginx_proxy_proxy_matrix_client_redirect_root_uri_to_domain` variable. To restore the old behavior of not redirecting anywhere and serving the Synapse static page, set it to an empty value (`matrix_nginx_proxy_proxy_matrix_client_redirect_root_uri_to_domain: \"\"`)." msgstr "" -#: ../../../CHANGELOG.md:2486 +#: ../../../CHANGELOG.md:2544 msgid "2020-10-26" msgstr "" -#: ../../../CHANGELOG.md:2488 +#: ../../../CHANGELOG.md:2546 msgid "(Compatibility Break) /_synapse/admin is no longer publicly exposed by default" msgstr "" -#: ../../../CHANGELOG.md:2490 +#: ../../../CHANGELOG.md:2548 msgid "We used to expose the Synapse Admin APIs publicly (at `https://matrix.example.com/_synapse/admin`). These APIs require authentication with a valid access token, so it's not that big a deal to expose them." msgstr "" -#: ../../../CHANGELOG.md:2492 +#: ../../../CHANGELOG.md:2550 msgid "However, following [official Synapse's reverse-proxying recommendations](https://github.com/element-hq/synapse/blob/master/docs/reverse_proxy.md#synapse-administration-endpoints), we're no longer exposing `/_synapse/admin` by default." msgstr "" -#: ../../../CHANGELOG.md:2494 +#: ../../../CHANGELOG.md:2552 msgid "If you'd like to restore restore the old behavior and expose `/_synapse/admin` publicly, you can use the following configuration (in your `vars.yml`):" msgstr "" -#: ../../../CHANGELOG.md:2501 +#: ../../../CHANGELOG.md:2559 msgid "2020-10-02" msgstr "" -#: ../../../CHANGELOG.md:2503 +#: ../../../CHANGELOG.md:2561 msgid "Minimum Ansible version raised to v2.7.0" msgstr "" -#: ../../../CHANGELOG.md:2505 +#: ../../../CHANGELOG.md:2563 msgid "We were claiming to support [Ansible](https://www.ansible.com/) v2.5.2 and higher, but issues like [#662](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/662) demonstrate that we need at least v2.7.0." msgstr "" -#: ../../../CHANGELOG.md:2507 +#: ../../../CHANGELOG.md:2565 msgid "If you've been using the playbook without getting any errors until now, you're probably on a version higher than that already (or you're not using the `matrix-ma1sd` and `matrix-client-element` roles)." msgstr "" -#: ../../../CHANGELOG.md:2509 +#: ../../../CHANGELOG.md:2567 msgid "Our [Ansible docs page](docs/ansible.md) contains information on how to run a more up-to-date version of Ansible." msgstr "" -#: ../../../CHANGELOG.md:2512 +#: ../../../CHANGELOG.md:2570 msgid "2020-10-01" msgstr "" -#: ../../../CHANGELOG.md:2514 +#: ../../../CHANGELOG.md:2572 msgid "Postgres 13 support" msgstr "" -#: ../../../CHANGELOG.md:2516 +#: ../../../CHANGELOG.md:2574 msgid "The playbook now installs [Postgres 13](https://www.postgresql.org/about/news/postgresql-13-released-2077/) by default." msgstr "" -#: ../../../CHANGELOG.md:2518 +#: ../../../CHANGELOG.md:2576 msgid "If you have have an existing setup, it's likely running on an older Postgres version (9.x, 10.x, 11.x or 12.x). You can easily upgrade by following the [upgrading PostgreSQL guide](docs/maintenance-postgres.md#upgrading-postgresql)." msgstr "" -#: ../../../CHANGELOG.md:2520 +#: ../../../CHANGELOG.md:2578 msgid "2020-09-01" msgstr "" -#: ../../../CHANGELOG.md:2522 +#: ../../../CHANGELOG.md:2580 msgid "matrix-registration support" msgstr "" -#: ../../../CHANGELOG.md:2524 -msgid "The playbook can now help you set up [matrix-registration](https://github.com/ZerataX/matrix-registration) - an application that lets you keep your Matrix server's registration private, but still allow certain users (those having a unique registration link) to register by themselves." +#: ../../../CHANGELOG.md:2582 +msgid "The playbook can now help you set up [matrix-registration](https://github.com/ZerataX/matrix-registration) — an application that lets you keep your Matrix server's registration private, but still allow certain users (those having a unique registration link) to register by themselves." msgstr "" -#: ../../../CHANGELOG.md:2526 +#: ../../../CHANGELOG.md:2584 msgid "See our [Setting up matrix-registration](docs/configuring-playbook-matrix-registration.md) documentation page to get started." msgstr "" -#: ../../../CHANGELOG.md:2529 +#: ../../../CHANGELOG.md:2587 msgid "2020-08-21" msgstr "" -#: ../../../CHANGELOG.md:2531 +#: ../../../CHANGELOG.md:2589 msgid "rust-synapse-compress-state support" msgstr "" -#: ../../../CHANGELOG.md:2533 +#: ../../../CHANGELOG.md:2591 msgid "The playbook can now help you use [rust-synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state) to compress the state groups in your Synapse database." msgstr "" -#: ../../../CHANGELOG.md:2535 +#: ../../../CHANGELOG.md:2593 msgid "See our [Compressing state with rust-synapse-compress-state](docs/maintenance-synapse.md#compressing-state-with-rust-synapse-compress-state) documentation page to get started." msgstr "" -#: ../../../CHANGELOG.md:2538 +#: ../../../CHANGELOG.md:2596 msgid "2020-07-22" msgstr "" -#: ../../../CHANGELOG.md:2540 +#: ../../../CHANGELOG.md:2598 msgid "Synapse Admin support" msgstr "" -#: ../../../CHANGELOG.md:2542 +#: ../../../CHANGELOG.md:2600 msgid "The playbook can now help you set up [synapse-admin](https://github.com/Awesome-Technologies/synapse-admin)." msgstr "" -#: ../../../CHANGELOG.md:2544 +#: ../../../CHANGELOG.md:2602 msgid "See our [Setting up Synapse Admin](docs/configuring-playbook-synapse-admin.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:2547 +#: ../../../CHANGELOG.md:2605 msgid "2020-07-20" msgstr "" -#: ../../../CHANGELOG.md:2549 +#: ../../../CHANGELOG.md:2607 msgid "matrix-reminder-bot support" msgstr "" -#: ../../../CHANGELOG.md:2551 +#: ../../../CHANGELOG.md:2609 msgid "The playbook can now help you set up [matrix-reminder-bot](https://github.com/anoadragon453/matrix-reminder-bot)." msgstr "" -#: ../../../CHANGELOG.md:2553 +#: ../../../CHANGELOG.md:2611 msgid "See our [Setting up matrix-reminder-bot](docs/configuring-playbook-bot-matrix-reminder-bot.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:2556 +#: ../../../CHANGELOG.md:2614 msgid "2020-07-17" msgstr "" -#: ../../../CHANGELOG.md:2558 +#: ../../../CHANGELOG.md:2616 msgid "(Compatibility Break) Riot is now Element" msgstr "" -#: ../../../CHANGELOG.md:2560 +#: ../../../CHANGELOG.md:2618 msgid "As per the official announcement, [Riot has been rebraned to Element](https://element.io/blog/welcome-to-element/)." msgstr "" -#: ../../../CHANGELOG.md:2562 +#: ../../../CHANGELOG.md:2620 msgid "The playbook follows suit. Existing installations have a few options for how to handle this." msgstr "" -#: ../../../CHANGELOG.md:2564 +#: ../../../CHANGELOG.md:2622 msgid "See our [Migrating to Element Web](docs/configuring-playbook-riot-web.md#migrating-to-element) documentation page for more details." msgstr "" -#: ../../../CHANGELOG.md:2567 +#: ../../../CHANGELOG.md:2625 msgid "2020-07-03" msgstr "" -#: ../../../CHANGELOG.md:2569 +#: ../../../CHANGELOG.md:2627 msgid "Steam bridging support via mx-puppet-steam" msgstr "" -#: ../../../CHANGELOG.md:2571 +#: ../../../CHANGELOG.md:2629 msgid "Thanks to [Hugues Morisset](https://github.com/izissise)'s efforts, the playbook now supports bridging to [Steam](https://steamapp.com/) via the [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) bridge. See our [Setting up MX Puppet Steam bridging](docs/configuring-playbook-bridge-mx-puppet-steam.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:2574 +#: ../../../CHANGELOG.md:2632 msgid "2020-07-01" msgstr "" -#: ../../../CHANGELOG.md:2576 +#: ../../../CHANGELOG.md:2634 msgid "Discord bridging support via mx-puppet-discord" msgstr "" -#: ../../../CHANGELOG.md:2578 +#: ../../../CHANGELOG.md:2636 msgid "Thanks to [Hugues Morisset](https://github.com/izissise)'s efforts, the playbook now supports bridging to [Discord](https://discordapp.com/) via the [mx-puppet-discord](https://github.com/Sorunome/mx-puppet-discord) bridge. See our [Setting up MX Puppet Discord bridging](docs/configuring-playbook-bridge-mx-puppet-discord.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:2580 +#: ../../../CHANGELOG.md:2638 msgid "**Note**: this is a new Discord bridge. The playbook still retains Discord bridging via [matrix-appservice-discord](docs/configuring-playbook-bridge-appservice-discord.md). You're free too use the bridge that serves you better, or even both (for different users and use-cases)." msgstr "" -#: ../../../CHANGELOG.md:2583 +#: ../../../CHANGELOG.md:2641 msgid "2020-06-30" msgstr "" -#: ../../../CHANGELOG.md:2585 +#: ../../../CHANGELOG.md:2643 msgid "Instagram and Twitter bridging support" msgstr "" -#: ../../../CHANGELOG.md:2587 +#: ../../../CHANGELOG.md:2645 msgid "Thanks to [Johanna Dorothea Reichmann](https://github.com/jdreichmann)'s efforts, the playbook now supports bridging to [Instagram](https://www.instagram.com/) via the [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) bridge. See our [Setting up MX Puppet Instagram bridging](docs/configuring-playbook-bridge-mx-puppet-instagram.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:2589 +#: ../../../CHANGELOG.md:2647 msgid "Thanks to [Tulir Asokan](https://github.com/tulir)'s efforts, the playbook now supports bridging to [Twitter](https://twitter.com/) via the [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) bridge. See our [Setting up MX Puppet Twitter bridging](docs/configuring-playbook-bridge-mx-puppet-twitter.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:2592 +#: ../../../CHANGELOG.md:2650 msgid "2020-06-28" msgstr "" -#: ../../../CHANGELOG.md:2594 +#: ../../../CHANGELOG.md:2652 msgid "(Post Mortem / fixed Security Issue) Re-enabling User Directory search powered by the ma1sd Identity Server" msgstr "" -#: ../../../CHANGELOG.md:2596 ../../../CHANGELOG.md:2625 +#: ../../../CHANGELOG.md:2654 ../../../CHANGELOG.md:2683 msgid "User Directory search requests used to go to the ma1sd identity server by default, which queried its own stores and the Synapse database." msgstr "" -#: ../../../CHANGELOG.md:2598 +#: ../../../CHANGELOG.md:2656 msgid "ma1sd's [security issue](https://github.com/ma1uta/ma1sd/issues/44) has been fixed in version `2.4.0`, with [this commit](ma1uta/ma1sd@2bb5a734d11662b06471113cf3d6b4cee5e33a85). `ma1sd 2.4.0` is now the default version for this playbook. For more information on what happened, please check the mentioned issue." msgstr "" -#: ../../../CHANGELOG.md:2600 +#: ../../../CHANGELOG.md:2658 msgid "We are re-enabling user directory search with this update. Those who would like to keep it disabled can use this configuration: `matrix_nginx_proxy_proxy_matrix_user_directory_search_enabled: false`" msgstr "" -#: ../../../CHANGELOG.md:2602 +#: ../../../CHANGELOG.md:2660 msgid "As always, re-running the playbook is enough to get the updated bits." msgstr "" -#: ../../../CHANGELOG.md:2604 +#: ../../../CHANGELOG.md:2662 msgid "2020-06-11" msgstr "" -#: ../../../CHANGELOG.md:2606 +#: ../../../CHANGELOG.md:2664 msgid "SMS bridging requires db reset" msgstr "" -#: ../../../CHANGELOG.md:2608 +#: ../../../CHANGELOG.md:2666 msgid "The current version of [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) needs you to delete the database to work as expected. Just remove `/matrix/matrix-sms-bridge/database/*`. It also adds a new requried var `matrix_sms_bridge_default_region`." msgstr "" -#: ../../../CHANGELOG.md:2610 +#: ../../../CHANGELOG.md:2668 msgid "To reuse your existing rooms, invite `@smsbot:yourServer` to the room or write a message. You are also able to use automated room creation with telephonenumers by writing `sms send -t 01749292923 \"Hello World\"` in a room with `@smsbot:yourServer`. See [the docs](https://github.com/benkuly/matrix-sms-bridge) for more information." msgstr "" -#: ../../../CHANGELOG.md:2612 +#: ../../../CHANGELOG.md:2670 msgid "2020-06-05" msgstr "" -#: ../../../CHANGELOG.md:2614 +#: ../../../CHANGELOG.md:2672 msgid "SMS bridging support" msgstr "" -#: ../../../CHANGELOG.md:2616 +#: ../../../CHANGELOG.md:2674 msgid "Thanks to [benkuly](https://github.com/benkuly)'s efforts, the playbook now supports bridging to SMS (with one telephone number only) via [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge)." msgstr "" -#: ../../../CHANGELOG.md:2618 +#: ../../../CHANGELOG.md:2676 msgid "See our [Setting up Matrix SMS bridging](docs/configuring-playbook-bridge-matrix-bridge-sms.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:2621 +#: ../../../CHANGELOG.md:2679 msgid "2020-05-19" msgstr "" -#: ../../../CHANGELOG.md:2623 +#: ../../../CHANGELOG.md:2681 msgid "(Compatibility Break / Security Issue) Disabling User Directory search powered by the ma1sd Identity Server" msgstr "" -#: ../../../CHANGELOG.md:2627 -msgid "ma1sd current has [a security issue](https://github.com/ma1uta/ma1sd/issues/44), which made it leak information about all users - including users created by bridges, etc." +#: ../../../CHANGELOG.md:2685 +msgid "ma1sd current has [a security issue](https://github.com/ma1uta/ma1sd/issues/44), which made it leak information about all users — including users created by bridges, etc." msgstr "" -#: ../../../CHANGELOG.md:2629 +#: ../../../CHANGELOG.md:2687 msgid "Until the issue gets fixed, we're making User Directory search not go to ma1sd by default. You **need to re-run the playbook and restart services to apply this workaround**." msgstr "" -#: ../../../CHANGELOG.md:2631 +#: ../../../CHANGELOG.md:2689 msgid "*If you insist on restoring the old behavior* (**which has a security issue!**), you *might* use this configuration: `matrix_nginx_proxy_proxy_matrix_user_directory_search_enabled: \"{{ matrix_ma1sd_enabled }}\"`" msgstr "" -#: ../../../CHANGELOG.md:2634 +#: ../../../CHANGELOG.md:2692 msgid "2020-04-28" msgstr "" -#: ../../../CHANGELOG.md:2636 +#: ../../../CHANGELOG.md:2694 msgid "Newer IRC bridge (with potential breaking change)" msgstr "" -#: ../../../CHANGELOG.md:2638 +#: ../../../CHANGELOG.md:2696 msgid "This upgrades matrix-appservice-irc from 0.14.1 to 0.16.0. Upstream made a change to how you define manual mappings. If you added a `mapping` to your configuration, you will need to update it accoring to the [upstream instructions](https://github.com/matrix-org/matrix-appservice-irc/blob/master/CHANGELOG.md#0150-2020-02-05). If you did not include `mappings` in your configuration for IRC, no change is necessary. `mappings` is not part of the default configuration." msgstr "" -#: ../../../CHANGELOG.md:2647 +#: ../../../CHANGELOG.md:2705 msgid "2020-04-23" msgstr "" -#: ../../../CHANGELOG.md:2649 ../../../CHANGELOG.md:2880 +#: ../../../CHANGELOG.md:2707 ../../../CHANGELOG.md:2938 msgid "Slack bridging support" msgstr "" -#: ../../../CHANGELOG.md:2651 +#: ../../../CHANGELOG.md:2709 msgid "Thanks to [Rodrigo Belem](https://github.com/rbelem)'s efforts, the playbook now supports bridging to [Slack](https://slack.com) via the [mx-puppet-slack](https://github.com/Sorunome/mx-puppet-slack) bridge." msgstr "" -#: ../../../CHANGELOG.md:2653 +#: ../../../CHANGELOG.md:2711 msgid "See our [Setting up MX Puppet Slack bridging](docs/configuring-playbook-bridge-mx-puppet-slack.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:2656 +#: ../../../CHANGELOG.md:2714 msgid "2020-04-09" msgstr "" -#: ../../../CHANGELOG.md:2658 +#: ../../../CHANGELOG.md:2716 msgid "Skype bridging support" msgstr "" -#: ../../../CHANGELOG.md:2660 +#: ../../../CHANGELOG.md:2718 msgid "Thanks to [Rodrigo Belem](https://github.com/rbelem)'s efforts, the playbook now supports bridging to [Skype](https://www.skype.com) via the [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype) bridge." msgstr "" -#: ../../../CHANGELOG.md:2662 +#: ../../../CHANGELOG.md:2720 msgid "See our [Setting up MX Puppet Skype bridging](docs/configuring-playbook-bridge-mx-puppet-skype.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:2665 +#: ../../../CHANGELOG.md:2723 msgid "2020-04-05" msgstr "" -#: ../../../CHANGELOG.md:2667 +#: ../../../CHANGELOG.md:2725 msgid "Private Jitsi support" msgstr "" -#: ../../../CHANGELOG.md:2669 +#: ../../../CHANGELOG.md:2727 msgid "The [Jitsi support](#jitsi-support) we had landed a few weeks ago was working well, but it was always open to the whole world." msgstr "" -#: ../../../CHANGELOG.md:2671 +#: ../../../CHANGELOG.md:2729 msgid "Running such an open instance is not desirable to most people, so [teutat3s](https://github.com/teutat3s) has contributed support for making Jitsi use authentication." msgstr "" -#: ../../../CHANGELOG.md:2673 +#: ../../../CHANGELOG.md:2731 msgid "To make your Jitsi server more private, see the [configure internal Jitsi authentication and guests mode](docs/configuring-playbook-jitsi.md#optional-configure-internal-jitsi-authentication-and-guests-mode) section in our Jitsi documentation." msgstr "" -#: ../../../CHANGELOG.md:2676 +#: ../../../CHANGELOG.md:2734 msgid "2020-04-03" msgstr "" -#: ../../../CHANGELOG.md:2678 +#: ../../../CHANGELOG.md:2736 msgid "(Potential Backward Compatibility Break) ma1sd replaces mxisd" msgstr "" -#: ../../../CHANGELOG.md:2680 +#: ../../../CHANGELOG.md:2738 msgid "Thanks to [Marcel Partap](https://github.com/eMPee584)'s efforts, the [mxisd](https://github.com/kamax-io/mxisd) identity server, which has been deprecated for a long time, has finally been replaced by [ma1sd](https://github.com/ma1uta/ma1sd), a compatible fork." msgstr "" -#: ../../../CHANGELOG.md:2682 -msgid "**If you're using the default playbook configuration**, you don't need to do anything -- your mxisd installation will be replaced with ma1sd and all existing data will be migrated automatically the next time you run the playbook." +#: ../../../CHANGELOG.md:2740 +msgid "**If you're using the default playbook configuration**, you don't need to do anything — your mxisd installation will be replaced with ma1sd and all existing data will be migrated automatically the next time you run the playbook." msgstr "" -#: ../../../CHANGELOG.md:2684 +#: ../../../CHANGELOG.md:2742 msgid "**If you're doing something more special** (defining custom `matrix_mxisd_*` variables), the playbook will ask you to rename them to `matrix_ma1sd_*`. You're also encouraged to test that ma1sd works well for such a more custom setup." msgstr "" -#: ../../../CHANGELOG.md:2687 +#: ../../../CHANGELOG.md:2745 msgid "2020-03-29" msgstr "" -#: ../../../CHANGELOG.md:2689 +#: ../../../CHANGELOG.md:2747 msgid "Archlinux support" msgstr "" -#: ../../../CHANGELOG.md:2691 +#: ../../../CHANGELOG.md:2749 msgid "Thanks to [Christian Lupus](https://github.com/christianlupus)'s efforts, the playbook now supports installing to an [Archlinux](https://www.archlinux.org/) server." msgstr "" -#: ../../../CHANGELOG.md:2694 +#: ../../../CHANGELOG.md:2752 msgid "2020-03-24" msgstr "" -#: ../../../CHANGELOG.md:2696 +#: ../../../CHANGELOG.md:2754 msgid "Jitsi support" msgstr "" -#: ../../../CHANGELOG.md:2698 +#: ../../../CHANGELOG.md:2756 msgid "The playbook can now (optionally) install the [Jitsi](https://jitsi.org/) video-conferencing platform and integrate it with [Riot](docs/configuring-playbook-riot-web.md)." msgstr "" -#: ../../../CHANGELOG.md:2700 +#: ../../../CHANGELOG.md:2758 msgid "See our [Jitsi documentation page](docs/configuring-playbook-jitsi.md) to get started." msgstr "" -#: ../../../CHANGELOG.md:2703 +#: ../../../CHANGELOG.md:2761 msgid "2020-03-15" msgstr "" -#: ../../../CHANGELOG.md:2705 +#: ../../../CHANGELOG.md:2763 msgid "Raspberry Pi support" msgstr "" -#: ../../../CHANGELOG.md:2707 +#: ../../../CHANGELOG.md:2765 msgid "Thanks to [Gergely Horváth](https://github.com/hooger)'s effort, the playbook supports installing to a Raspberry Pi server, for at least some of the services." msgstr "" -#: ../../../CHANGELOG.md:2709 +#: ../../../CHANGELOG.md:2767 msgid "Since most ready-made container images do not support that architecture, we achieve this by building images locally on the device itself. See our [Self-building documentation page](docs/self-building.md) for how to get started." msgstr "" -#: ../../../CHANGELOG.md:2712 +#: ../../../CHANGELOG.md:2770 msgid "2020-02-26" msgstr "" -#: ../../../CHANGELOG.md:2714 +#: ../../../CHANGELOG.md:2772 msgid "Riot-web themes are here" msgstr "" -#: ../../../CHANGELOG.md:2716 +#: ../../../CHANGELOG.md:2774 msgid "The playbook now makes it easy to install custom riot-web themes." msgstr "" -#: ../../../CHANGELOG.md:2718 +#: ../../../CHANGELOG.md:2776 msgid "To learn more, take a look at our [riot-web documentation on Themes](docs/configuring-playbook-riot-web.md#themes)." msgstr "" -#: ../../../CHANGELOG.md:2721 +#: ../../../CHANGELOG.md:2779 msgid "2020-02-24" msgstr "" -#: ../../../CHANGELOG.md:2723 +#: ../../../CHANGELOG.md:2781 msgid "Customize the server name in Riot's login page" msgstr "" -#: ../../../CHANGELOG.md:2725 +#: ../../../CHANGELOG.md:2783 msgid "You can now customize the server name string that Riot-web displays in its login page." msgstr "" -#: ../../../CHANGELOG.md:2727 +#: ../../../CHANGELOG.md:2785 msgid "These playbook variables, with these default values, have been added:" msgstr "" -#: ../../../CHANGELOG.md:2733 +#: ../../../CHANGELOG.md:2791 msgid "The login page previously said \"Sign in to your Matrix account on matrix.example.org\" (the homeserver's domain name). It will now say \"Sign in … on example.org\" (the server name) by default, or \"Sign in … on Our Server\" if you set the variable to \"Our Server\"." msgstr "" -#: ../../../CHANGELOG.md:2735 +#: ../../../CHANGELOG.md:2793 msgid "To support this, the config.json template is changed to use the configuration key `default_server_config` for setting the default HS/IS, and the new configuration key `server_name` is added in there." msgstr "" -#: ../../../CHANGELOG.md:2738 +#: ../../../CHANGELOG.md:2796 msgid "2020-01-30" msgstr "" -#: ../../../CHANGELOG.md:2740 +#: ../../../CHANGELOG.md:2798 msgid "Disabling TLSv1.1" msgstr "" -#: ../../../CHANGELOG.md:2742 +#: ../../../CHANGELOG.md:2800 msgid "To improve security, we've removed TLSv1.1 support from our default matrix-nginx-proxy configuration." msgstr "" -#: ../../../CHANGELOG.md:2744 +#: ../../../CHANGELOG.md:2802 msgid "If you need to support old clients, you can re-enable it with the following configuration: `matrix_nginx_proxy_ssl_protocols: \"TLSv1.1 TLSv1.2 TLSv1.3\"`" msgstr "" -#: ../../../CHANGELOG.md:2747 +#: ../../../CHANGELOG.md:2805 msgid "2020-01-21" msgstr "" -#: ../../../CHANGELOG.md:2749 +#: ../../../CHANGELOG.md:2807 msgid "Postgres collation changes (action required!)" msgstr "" -#: ../../../CHANGELOG.md:2751 +#: ../../../CHANGELOG.md:2809 msgid "By default, we've been using a UTF-8 collation for Postgres. This is known to cause Synapse some troubles (see the [relevant issue](https://github.com/matrix-org/synapse/issues/6722)) on systems that use [glibc](https://www.gnu.org/software/libc/). We run Postgres in an [Alpine Linux](https://alpinelinux.org/) container (which uses [musl](https://www.musl-libc.org/), and not glibc), so our users are likely not affected by the index corruption problem observed by others." msgstr "" -#: ../../../CHANGELOG.md:2753 +#: ../../../CHANGELOG.md:2811 msgid "Still, we might become affected in the future. In any case, it's imminent that Synapse will complain about databases which do not use a C collation." msgstr "" -#: ../../../CHANGELOG.md:2755 +#: ../../../CHANGELOG.md:2813 msgid "To avoid future problems, we recommend that you run the following command:" msgstr "" -#: ../../../CHANGELOG.md:2761 +#: ../../../CHANGELOG.md:2819 msgid "It forces a [Postgres database upgrade](docs/maintenance-postgres.md#upgrading-postgresql), which would recreate your Postgres database using the proper (`C`) collation. If you are low on disk space, or run into trouble, refer to the Postgres database upgrade documentation page." msgstr "" -#: ../../../CHANGELOG.md:2764 +#: ../../../CHANGELOG.md:2822 msgid "2020-01-14" msgstr "" -#: ../../../CHANGELOG.md:2766 +#: ../../../CHANGELOG.md:2824 msgid "Added support for Appservice Webhooks" msgstr "" -#: ../../../CHANGELOG.md:2768 +#: ../../../CHANGELOG.md:2826 msgid "Thanks to a contribution from [Björn Marten](https://github.com/tripleawwy) from [netresearch](https://www.netresearch.de/), the playbook can now install and configure [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks) for you. This bridge provides support for Slack-compatible webhooks." msgstr "" -#: ../../../CHANGELOG.md:2770 +#: ../../../CHANGELOG.md:2828 msgid "Learn more in [Setting up Appservice Webhooks bridging](docs/configuring-playbook-bridge-appservice-webhooks.md)." msgstr "" -#: ../../../CHANGELOG.md:2773 +#: ../../../CHANGELOG.md:2831 msgid "2020-01-12" msgstr "" -#: ../../../CHANGELOG.md:2775 +#: ../../../CHANGELOG.md:2833 msgid "Added support for automatic Double Puppeting for all Mautrix bridges" msgstr "" -#: ../../../CHANGELOG.md:2777 +#: ../../../CHANGELOG.md:2835 msgid "Double Puppeting can now be easily enabled for all Mautrix bridges supported by the playbook (Facebook, Hangouts, Whatsapp, Telegram)." msgstr "" -#: ../../../CHANGELOG.md:2779 -msgid "This is possible due to those bridges' integration with [matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) - yet another component that this playbook can install for you." +#: ../../../CHANGELOG.md:2837 +msgid "This is possible due to those bridges' integration with [matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) — yet another component that this playbook can install for you." msgstr "" -#: ../../../CHANGELOG.md:2781 +#: ../../../CHANGELOG.md:2839 msgid "To get started, following the playbook's documentation for the bridge you'd like to configure." msgstr "" -#: ../../../CHANGELOG.md:2784 +#: ../../../CHANGELOG.md:2842 msgid "2019-12-06" msgstr "" -#: ../../../CHANGELOG.md:2786 +#: ../../../CHANGELOG.md:2844 msgid "Added support for an alternative method for using another webserver" msgstr "" -#: ../../../CHANGELOG.md:2788 +#: ../../../CHANGELOG.md:2846 msgid "We have added support for making `matrix-nginx-proxy` not being so invasive, so that it would be easier to [use your own webserver](docs/configuring-playbook-own-webserver.md)." msgstr "" -#: ../../../CHANGELOG.md:2790 +#: ../../../CHANGELOG.md:2848 msgid "The documentation has been updated with a **Method 2**, which might make \"own webserver\" setup easier in some cases (such as [reverse-proxying using Traefik](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/296))." msgstr "" -#: ../../../CHANGELOG.md:2792 +#: ../../../CHANGELOG.md:2850 msgid "**Existing users** are not affected by this and **don't need to change anything**. The defaults are still the same (`matrix-nginx-proxy` obtaining SSL certificates and doing everything for you automatically)." msgstr "" -#: ../../../CHANGELOG.md:2795 +#: ../../../CHANGELOG.md:2853 msgid "2019-11-10" msgstr "" -#: ../../../CHANGELOG.md:2797 +#: ../../../CHANGELOG.md:2855 msgid "Tightened security around room directory publishing" msgstr "" -#: ../../../CHANGELOG.md:2799 +#: ../../../CHANGELOG.md:2857 msgid "As per this [advisory blog post](https://matrix.org/blog/2019/11/09/avoiding-unwelcome-visitors-on-private-matrix-servers), we've decided to change the default publishing rules for the Matrix room directory." msgstr "" -#: ../../../CHANGELOG.md:2801 +#: ../../../CHANGELOG.md:2859 msgid "Our general goal is to favor privacy and security when running personal (family & friends) and corporate homeservers. Both of these likely benefit from having a more secure default of **not showing the room directory without authentication** and **not publishing the room directory over federation**." msgstr "" -#: ../../../CHANGELOG.md:2803 +#: ../../../CHANGELOG.md:2861 msgid "As with anything else, these new defaults can be overriden by changing the `matrix_synapse_allow_public_rooms_without_auth` and `matrix_synapse_allow_public_rooms_over_federation` variables, respectively." msgstr "" -#: ../../../CHANGELOG.md:2806 +#: ../../../CHANGELOG.md:2864 msgid "2019-10-05" msgstr "" -#: ../../../CHANGELOG.md:2808 +#: ../../../CHANGELOG.md:2866 msgid "Improved Postgres upgrading/importing" msgstr "" -#: ../../../CHANGELOG.md:2810 +#: ../../../CHANGELOG.md:2868 msgid "Postgres [upgrading](docs/maintenance-postgres.md#upgrading-postgresql) and [importing](docs/importing-postgres.md) have been improved to add support for multiple databases and roles." msgstr "" -#: ../../../CHANGELOG.md:2812 +#: ../../../CHANGELOG.md:2870 msgid "Previously, the playbook would only take care of the `homeserver` database and `synapse` user. We now back up and restore all databases and users on the Postgres server." msgstr "" -#: ../../../CHANGELOG.md:2814 +#: ../../../CHANGELOG.md:2872 msgid "For now, the playbook only uses that one database (`homeserver`) and that one single user (`synapse`), so it's all the same. However, in the future, additional components besides Synapse may also make use the Postgres database server. One such example is the [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) bridge, which strongly encourages use of Postgres in its v1.0 release. We are yet to upgrade to it." msgstr "" -#: ../../../CHANGELOG.md:2816 +#: ../../../CHANGELOG.md:2874 msgid "Additionally, Postgres [upgrading](docs/maintenance-postgres.md#upgrading-postgresql) now uses gzipped dump files by default, to minimize disk space usage." msgstr "" -#: ../../../CHANGELOG.md:2819 +#: ../../../CHANGELOG.md:2877 msgid "2019-10-04" msgstr "" -#: ../../../CHANGELOG.md:2821 +#: ../../../CHANGELOG.md:2879 msgid "Postgres 12 support" msgstr "" -#: ../../../CHANGELOG.md:2823 +#: ../../../CHANGELOG.md:2881 msgid "The playbook now installs [Postgres 12](https://www.postgresql.org/about/news/1976/) by default." msgstr "" -#: ../../../CHANGELOG.md:2825 +#: ../../../CHANGELOG.md:2883 msgid "If you have have an existing setup, it's likely running on an older Postgres version (9.x, 10.x or 11.x). You can easily upgrade by following the [upgrading PostgreSQL guide](docs/maintenance-postgres.md#upgrading-postgresql)." msgstr "" -#: ../../../CHANGELOG.md:2828 +#: ../../../CHANGELOG.md:2886 msgid "2019-10-03" msgstr "" -#: ../../../CHANGELOG.md:2830 +#: ../../../CHANGELOG.md:2888 msgid "Synapse 1.4.0" msgstr "" -#: ../../../CHANGELOG.md:2832 +#: ../../../CHANGELOG.md:2890 msgid "Synapse 1.4.0 [is out](https://matrix.org/blog/2019/10/03/synapse-1-4-0-released) with lots of changes related to privacy." msgstr "" -#: ../../../CHANGELOG.md:2834 +#: ../../../CHANGELOG.md:2892 msgid "Its new defaults (which we adopt as well) mean that certain old data will automatically get purged after a certain number of days. 1.4.0 automatically garbage collects redacted messages (defaults to 7 days) and removes unused IP and user agent information stored in the user_ips table (defaults to 30 days). If you'd like to preserve this data, we encourage you to look at the `redaction_retention_period` and `user_ips_max_age` options (controllable by the `matrix_synapse_redaction_retention_period` and `matrix_synapse_user_ips_max_age` playbook variables, respectively) before doing the upgrade. If you'd like to keep data indefinitely, set these variables to `null` (e.g. `matrix_synapse_redaction_retention_period: ~`)." msgstr "" -#: ../../../CHANGELOG.md:2836 +#: ../../../CHANGELOG.md:2894 msgid "From now on the `trusted_key_servers` setting for Synapse is configurable. It still defaults to `matrix.org` just like it always has, but in a more explicit way now. If you'd like to use another trusted key server, adjust the `matrix_synapse_trusted_key_servers` playbook variable." msgstr "" -#: ../../../CHANGELOG.md:2838 +#: ../../../CHANGELOG.md:2896 msgid "Synapse 1.4.0 also changes lots of things related to identity server integration. Because Synapse will now by default be responsible for validating email addresses for user accounts, running without an identity server looks more feasible. We still [have concerns](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/275/files#r331104117) over disabling the identity server by default, so for now it remains enabled." msgstr "" -#: ../../../CHANGELOG.md:2841 +#: ../../../CHANGELOG.md:2899 msgid "2019-09-09" msgstr "" -#: ../../../CHANGELOG.md:2843 +#: ../../../CHANGELOG.md:2901 msgid "Synapse Simple Antispam support" msgstr "" -#: ../../../CHANGELOG.md:2845 +#: ../../../CHANGELOG.md:2903 msgid "There have been lots of invite-spam attacks lately and [Travis](https://github.com/t2bot) has created a Synapse module ([synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispam)) to let people protect themselves." msgstr "" -#: ../../../CHANGELOG.md:2847 +#: ../../../CHANGELOG.md:2905 msgid "From now on, you can easily install and configure this spam checker module through the playbook." msgstr "" -#: ../../../CHANGELOG.md:2849 +#: ../../../CHANGELOG.md:2907 msgid "Learn more in [Setting up Synapse Simple Antispam](docs/configuring-playbook-synapse-simple-antispam.md)." msgstr "" -#: ../../../CHANGELOG.md:2852 +#: ../../../CHANGELOG.md:2910 msgid "2019-08-25" msgstr "" -#: ../../../CHANGELOG.md:2854 +#: ../../../CHANGELOG.md:2912 msgid "Extensible Riot-web configuration" msgstr "" -#: ../../../CHANGELOG.md:2856 +#: ../../../CHANGELOG.md:2914 msgid "Similarly to [Extensible Synapse configuration](#extensible-synapse-configuration) (below), Riot-web configuration is also extensible now." msgstr "" -#: ../../../CHANGELOG.md:2858 +#: ../../../CHANGELOG.md:2916 msgid "From now on, you can extend/override Riot-web's configuration by making use of the `matrix_riot_web_configuration_extension_json` variable. This should be enough for most customization needs." msgstr "" -#: ../../../CHANGELOG.md:2860 +#: ../../../CHANGELOG.md:2918 msgid "If you need even more power, you can now also take full control and override `matrix_riot_web_configuration_default` (or `matrix_riot_web_configuration`) directly." msgstr "" -#: ../../../CHANGELOG.md:2862 +#: ../../../CHANGELOG.md:2920 msgid "Learn more in [Configuring Riot-web](docs/configuring-playbook-riot-web.md)." msgstr "" -#: ../../../CHANGELOG.md:2865 +#: ../../../CHANGELOG.md:2923 msgid "2019-08-22" msgstr "" -#: ../../../CHANGELOG.md:2867 +#: ../../../CHANGELOG.md:2925 msgid "Extensible Synapse configuration" msgstr "" -#: ../../../CHANGELOG.md:2869 +#: ../../../CHANGELOG.md:2927 msgid "Previously, we had to create custom Ansible variables for each and every Synapse setting. This lead to too much effort (and configuration ugliness) to all of Synapse's settings, so naturally, not all features of Synapse could be controlled through the playbook." msgstr "" -#: ../../../CHANGELOG.md:2871 +#: ../../../CHANGELOG.md:2929 msgid "From now on, you can extend/override the Synapse server's configuration by making use of the `matrix_synapse_configuration_extension_yaml` variable. This should be enough for most customization needs." msgstr "" -#: ../../../CHANGELOG.md:2873 +#: ../../../CHANGELOG.md:2931 msgid "If you need even more power, you can now also take full control and override `matrix_synapse_configuration` (or `matrix_synapse_configuration_yaml`) directly." msgstr "" -#: ../../../CHANGELOG.md:2875 +#: ../../../CHANGELOG.md:2933 msgid "Learn more here in [Configuring Synapse](docs/configuring-playbook-synapse.md)." msgstr "" -#: ../../../CHANGELOG.md:2878 +#: ../../../CHANGELOG.md:2936 msgid "2019-08-21" msgstr "" -#: ../../../CHANGELOG.md:2882 +#: ../../../CHANGELOG.md:2940 msgid "Thanks to the [great work](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/205) of [kingoftheconnors](https://github.com/kingoftheconnors) and [Stuart Mumford (Cadair)](https://github.com/Cadair), the playbook now supports bridging to [Slack](https://slack.com) via the [appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) bridge." msgstr "" -#: ../../../CHANGELOG.md:2884 +#: ../../../CHANGELOG.md:2942 msgid "Additional details are available in [Setting up Appservice Slack bridging](docs/configuring-playbook-bridge-appservice-slack.md)." msgstr "" -#: ../../../CHANGELOG.md:2886 +#: ../../../CHANGELOG.md:2944 msgid "Google Hangouts bridging support" msgstr "" -#: ../../../CHANGELOG.md:2888 +#: ../../../CHANGELOG.md:2946 msgid "Thanks to the [great work](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/251) of [Eduardo Beltrame (Munfred)](https://github.com/Munfred) and [Robbie D (microchipster)](https://github.com/microchipster), the playbook now supports bridging to [Google Hangouts](https://hangouts.google.com/) via the [mautrix-hangouts](https://mau.dev/tulir/mautrix-hangouts) bridge." msgstr "" -#: ../../../CHANGELOG.md:2890 +#: ../../../CHANGELOG.md:2948 msgid "Additional details are available in [Setting up Mautrix Hangouts bridging](docs/configuring-playbook-bridge-mautrix-hangouts.md)." msgstr "" -#: ../../../CHANGELOG.md:2893 +#: ../../../CHANGELOG.md:2951 msgid "2019-08-05" msgstr "" -#: ../../../CHANGELOG.md:2895 +#: ../../../CHANGELOG.md:2953 msgid "Email2Matrix support" msgstr "" -#: ../../../CHANGELOG.md:2897 +#: ../../../CHANGELOG.md:2955 msgid "Support for [Email2Matrix](https://github.com/devture/email2matrix) has been added." msgstr "" -#: ../../../CHANGELOG.md:2899 +#: ../../../CHANGELOG.md:2957 msgid "It's an optional feature that you can enable via the playbook." msgstr "" -#: ../../../CHANGELOG.md:2901 +#: ../../../CHANGELOG.md:2959 msgid "To learn more, see the [playbook's documentation on Email2Matrix](./docs/configuring-playbook-email2matrix.md)." msgstr "" -#: ../../../CHANGELOG.md:2904 +#: ../../../CHANGELOG.md:2962 msgid "2019-08-03" msgstr "" -#: ../../../CHANGELOG.md:2906 +#: ../../../CHANGELOG.md:2964 msgid "Synapse logging level has been reduced to WARNING" msgstr "" -#: ../../../CHANGELOG.md:2908 +#: ../../../CHANGELOG.md:2966 msgid "After [some discussion in our support room](https://matrix.to/#/!PukFFdIcHgtaaHZflT:devture.com/$156476852524179TBeKy:matrix.org?via=devture.com&via=matrix.org&via=librem.one), we've decided to change the default logging level for Synapse from `INFO` to `WARNING`." msgstr "" -#: ../../../CHANGELOG.md:2910 +#: ../../../CHANGELOG.md:2968 msgid "This greatly reduces the number of log messages that are being logged, leading to:" msgstr "" -#: ../../../CHANGELOG.md:2912 +#: ../../../CHANGELOG.md:2970 msgid "much less disk space dedicated to Synapse and thus, logs kept for longer" msgstr "" -#: ../../../CHANGELOG.md:2913 +#: ../../../CHANGELOG.md:2971 msgid "easier to find some important `WARNING`, `ERROR` and `CRITICAL` messages, as they're not longer buried in thousands of non-important `INFO` messages" msgstr "" -#: ../../../CHANGELOG.md:2915 +#: ../../../CHANGELOG.md:2973 msgid "If you'd like to track down an issue, you [can always increase the logging level as described here](./docs/maintenance-and-troubleshooting.md#increasing-synapse-logging)." msgstr "" -#: ../../../CHANGELOG.md:2918 +#: ../../../CHANGELOG.md:2976 msgid "2019-07-08" msgstr "" -#: ../../../CHANGELOG.md:2920 +#: ../../../CHANGELOG.md:2978 msgid "Synapse Maintenance docs and synapse-janitor support are available" msgstr "" -#: ../../../CHANGELOG.md:2922 +#: ../../../CHANGELOG.md:2980 msgid "The playbook can now help you with Synapse's maintenance." msgstr "" -#: ../../../CHANGELOG.md:2924 +#: ../../../CHANGELOG.md:2982 msgid "There's a new documentation page about [Synapse maintenance](./docs/maintenance-synapse.md) and another section on [Postgres vacuuming](./docs/maintenance-postgres.md#vacuuming-postgresql)." msgstr "" -#: ../../../CHANGELOG.md:2926 +#: ../../../CHANGELOG.md:2984 msgid "Among other things, if your Postgres database has grown significantly over time, you may wish to [ask the playbook to purge unused data with synapse-janitor](./docs/maintenance-synapse.md#purging-unused-data-with-synapse-janitor) for you." msgstr "" -#: ../../../CHANGELOG.md:2928 +#: ../../../CHANGELOG.md:2986 msgid "(BC Break) Rename run control variables" msgstr "" -#: ../../../CHANGELOG.md:2930 +#: ../../../CHANGELOG.md:2988 msgid "Some internal playbook control variables have been renamed." msgstr "" -#: ../../../CHANGELOG.md:2932 +#: ../../../CHANGELOG.md:2990 msgid "This change **only affects people who run this playbook's roles from another playbook**. If you're using this playbook as-is, you're not affected and don't need to do anything." msgstr "" -#: ../../../CHANGELOG.md:2934 +#: ../../../CHANGELOG.md:2992 msgid "The following variables have been renamed:" msgstr "" -#: ../../../CHANGELOG.md:2936 +#: ../../../CHANGELOG.md:2994 msgid "from `run_import_postgres` to `run_postgres_import`" msgstr "" -#: ../../../CHANGELOG.md:2937 +#: ../../../CHANGELOG.md:2995 msgid "from `run_import_sqlite_db` to `run_postgres_import_sqlite_db`" msgstr "" -#: ../../../CHANGELOG.md:2938 +#: ../../../CHANGELOG.md:2996 msgid "from `run_upgrade_postgres` to `run_postgres_upgrade`" msgstr "" -#: ../../../CHANGELOG.md:2939 +#: ../../../CHANGELOG.md:2997 msgid "from `run_import_media_store` to `run_synapse_import_media_store`" msgstr "" -#: ../../../CHANGELOG.md:2940 +#: ../../../CHANGELOG.md:2998 msgid "from `run_register_user` to `run_synapse_register_user`" msgstr "" -#: ../../../CHANGELOG.md:2941 +#: ../../../CHANGELOG.md:2999 msgid "from `run_update_user_password` to `run_synapse_update_user_password`" msgstr "" -#: ../../../CHANGELOG.md:2944 +#: ../../../CHANGELOG.md:3002 msgid "2019-07-04" msgstr "" -#: ../../../CHANGELOG.md:2946 +#: ../../../CHANGELOG.md:3004 msgid "Synapse no longer logs to text files" msgstr "" -#: ../../../CHANGELOG.md:2948 +#: ../../../CHANGELOG.md:3006 msgid "Following what the official Synapse Docker image is doing ([#5565](https://github.com/matrix-org/synapse/pull/5565)) and what we've been doing for mostly everything installed by this playbook, **Synapse no longer logs to text files** (`/matrix/synapse/run/homeserver.log*`)." msgstr "" -#: ../../../CHANGELOG.md:2950 +#: ../../../CHANGELOG.md:3008 msgid "From now on, Synapse would only log to console, which goes to systemd's journald. To see Synapse's logs, execute: `journalctl -fu matrix-synapse`" msgstr "" -#: ../../../CHANGELOG.md:2952 +#: ../../../CHANGELOG.md:3010 msgid "Because of this, the following variables have become obsolete and were removed:" msgstr "" -#: ../../../CHANGELOG.md:2954 +#: ../../../CHANGELOG.md:3012 msgid "`matrix_synapse_max_log_file_size_mb`" msgstr "" -#: ../../../CHANGELOG.md:2955 +#: ../../../CHANGELOG.md:3013 msgid "`matrix_synapse_max_log_files_count`" msgstr "" -#: ../../../CHANGELOG.md:2957 +#: ../../../CHANGELOG.md:3015 msgid "To prevent confusion, it'd be better if you delete all old files manually after you've upgraded (`rm -f /matrix/synapse/run/homeserver.log*`)." msgstr "" -#: ../../../CHANGELOG.md:2959 +#: ../../../CHANGELOG.md:3017 msgid "Because Synapse is incredibly chatty when it comes to logging (here's [one such issue](https://github.com/matrix-org/synapse/issues/4751) describing the problem), if you're running an ancient distribution (like CentOS 7.0), be advised that systemd's journald default logging restrictions may not be high enough to capture all log messages generated by Synapse. This is especially true if you've got a busy (Synapse) server. We advise that you manually add `RateLimitInterval=0` and `RateLimitBurst=0` under `[Storage]` in the `/etc/systemd/journald.conf` file, followed by restarting the logging service (`systemctl restart systemd-journald`)." msgstr "" -#: ../../../CHANGELOG.md:2962 +#: ../../../CHANGELOG.md:3020 msgid "2019-06-27" msgstr "" -#: ../../../CHANGELOG.md:2964 +#: ../../../CHANGELOG.md:3022 msgid "(BC Break) Discord bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:2966 +#: ../../../CHANGELOG.md:3024 msgid "Until now, the `config.yaml` file for the [Discord bridge](docs/configuring-playbook-bridge-appservice-discord.md) was managed by the playbook, but the `registration.yaml` file was not." msgstr "" -#: ../../../CHANGELOG.md:2968 +#: ../../../CHANGELOG.md:3026 msgid "From now on, the playbook will keep both configuration files sync for you." msgstr "" -#: ../../../CHANGELOG.md:2970 +#: ../../../CHANGELOG.md:3028 msgid "This means that if you were making manual changes to the `/matrix/appservice-discord/discord-registration.yaml` configuration file, those would be lost the next time you run the playbook." msgstr "" -#: ../../../CHANGELOG.md:2972 +#: ../../../CHANGELOG.md:3030 msgid "The bridge now stores configuration in a subdirectory (`/matrix/appservice-discord/config`)." msgstr "" -#: ../../../CHANGELOG.md:2974 +#: ../../../CHANGELOG.md:3032 msgid "Likewise, data is now also stored in a subdirectory (`/matrix/appservice-discord/data`). When you run the playbook with an existing database file (`/matrix/appservice-discord/discord.db`), the playbook will stop the bridge and relocate the database file to the `./data` directory. There's no data-loss involved. You'll need to restart the bridge manually though (`--tags=start`)." msgstr "" -#: ../../../CHANGELOG.md:2976 +#: ../../../CHANGELOG.md:3034 msgid "The main directory (`/matrix/appservice-discord`) may contain some leftover files (`user-store.db`, `room-store.db`, `config.yaml`, `discord-registration.yaml`, `invite_link`). These are no longer necessary and can be deleted manually." msgstr "" -#: ../../../CHANGELOG.md:2978 +#: ../../../CHANGELOG.md:3036 msgid "We're now following the default sample configuration for the Discord bridge. If you need to override some values, define them in `matrix_appservice_discord_configuration_extension_yaml`." msgstr "" -#: ../../../CHANGELOG.md:2981 +#: ../../../CHANGELOG.md:3039 msgid "2019-06-24" msgstr "" -#: ../../../CHANGELOG.md:2983 +#: ../../../CHANGELOG.md:3041 msgid "(BC Break) WhatsApp bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:2985 +#: ../../../CHANGELOG.md:3043 msgid "Until now, configuration files for the [WhatsApp bridge](docs/configuring-playbook-bridge-mautrix-whatsapp.md) were created by the playbook initially, but never modified later on." msgstr "" -#: ../../../CHANGELOG.md:2987 ../../../CHANGELOG.md:3004 -#: ../../../CHANGELOG.md:3023 ../../../CHANGELOG.md:3062 +#: ../../../CHANGELOG.md:3045 ../../../CHANGELOG.md:3062 +#: ../../../CHANGELOG.md:3081 ../../../CHANGELOG.md:3120 msgid "From now on, the playbook will keep the configuration in sync for you." msgstr "" -#: ../../../CHANGELOG.md:2989 +#: ../../../CHANGELOG.md:3047 msgid "This means that if you were making manual changes to the `/matrix/mautrix-whatsapp/config.yaml` or `/matrix/mautrix-whatsapp/registration.yaml` configuration files, those would be lost the next time you run the playbook." msgstr "" -#: ../../../CHANGELOG.md:2991 +#: ../../../CHANGELOG.md:3049 msgid "The bridge now stores configuration in a subdirectory (`/matrix/mautrix-whatsapp/config`), so your old configuration remains in the base directory (`/matrix/mautrix-whatsapp`). You need to migrate any manual changes over to the new `matrix_mautrix_whatsapp_configuration_extension_yaml` variable, so that the playbook would apply them for you." msgstr "" -#: ../../../CHANGELOG.md:2993 +#: ../../../CHANGELOG.md:3051 msgid "Likewise, data is now also stored in a subdirectory (`/matrix/mautrix-whatsapp/data`). When you run the playbook with an existing database file (`/matrix/mautrix-whatsapp/mautrix-whatsapp.db`), the playbook will stop the bridge and relocate the database file to the `./data` directory. There's no data-loss involved. You'll need to restart the bridge manually though (`--tags=start`)." msgstr "" -#: ../../../CHANGELOG.md:2995 +#: ../../../CHANGELOG.md:3053 msgid "We're now following the default configuration for the WhatsApp bridge." msgstr "" -#: ../../../CHANGELOG.md:2998 +#: ../../../CHANGELOG.md:3056 msgid "2019-06-20" msgstr "" -#: ../../../CHANGELOG.md:3000 +#: ../../../CHANGELOG.md:3058 msgid "(BC Break) IRC bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:3002 +#: ../../../CHANGELOG.md:3060 msgid "Until now, configuration files for the [IRC bridge](docs/configuring-playbook-bridge-appservice-irc.md) were created by the playbook initially, but never modified later on." msgstr "" -#: ../../../CHANGELOG.md:3006 +#: ../../../CHANGELOG.md:3064 msgid "This means that if you were making manual changes to the `/matrix/appservice-irc/config.yaml` or `/matrix/appservice-irc/registration.yaml` configuration files, those would be lost the next time you run the playbook." msgstr "" -#: ../../../CHANGELOG.md:3008 +#: ../../../CHANGELOG.md:3066 msgid "The bridge now stores configuration in a subdirectory (`/matrix/appservice-irc/config`), so your old configuration remains in the base directory (`/matrix/appservice-irc`)." msgstr "" -#: ../../../CHANGELOG.md:3010 +#: ../../../CHANGELOG.md:3068 msgid "Previously, we asked people to configure bridged IRC servers by extending the bridge configuration (`matrix_appservice_irc_configuration_extension_yaml`). While this is still possible and will continue working forever, **we now recommend defining IRC servers in the easier to use `matrix_appservice_irc_ircService_servers` variable**. See [our IRC bridge documentation page](docs/configuring-playbook-bridge-appservice-irc.md) for an example." msgstr "" -#: ../../../CHANGELOG.md:3012 +#: ../../../CHANGELOG.md:3070 msgid "If you decide to continue using `matrix_appservice_irc_configuration_extension_yaml`, you might be interested to know that `ircService.databaseUri` and a few other keys now have default values in the base configuration (`matrix_appservice_irc_configuration_yaml`). You may wish to stop redefining those keys, unless you really intend to override them. You most likely only need to override `ircService.servers`." msgstr "" -#: ../../../CHANGELOG.md:3014 +#: ../../../CHANGELOG.md:3072 msgid "Bridge data (`passkey.pem` and database files) is now also stored in a subdirectory (`/matrix/appservice-irc/data`). When you run the playbook with an existing `/matrix/appservice-irc/passkey.pem` file, the playbook will stop the bridge and relocate the passkey and database files (`rooms.db` and `users.db`) to the `./data` directory. There's no data-loss involved. You'll need to restart the bridge manually though (`--tags=start`)." msgstr "" -#: ../../../CHANGELOG.md:3017 +#: ../../../CHANGELOG.md:3075 msgid "2019-06-15" msgstr "" -#: ../../../CHANGELOG.md:3019 +#: ../../../CHANGELOG.md:3077 msgid "(BC Break) Telegram bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:3021 +#: ../../../CHANGELOG.md:3079 msgid "Until now, configuration files for the [Telegram bridge](docs/configuring-playbook-bridge-mautrix-telegram.md) were created by the playbook initially, but never modified later on." msgstr "" -#: ../../../CHANGELOG.md:3025 +#: ../../../CHANGELOG.md:3083 msgid "This means that if you were making manual changes to the `/matrix/mautrix-telegram/config.yaml` or `/matrix/mautrix-telegram/registration.yaml` configuration files, those would be lost the next time you run the playbook." msgstr "" -#: ../../../CHANGELOG.md:3027 +#: ../../../CHANGELOG.md:3085 msgid "The bridge now stores configuration in a subdirectory (`/matrix/mautrix-telegram/config`), so your old configuration remains in the base directory (`/matrix/mautrix-telegram`). You need to migrate any manual changes over to the new `matrix_mautrix_telegram_configuration_extension_yaml` variable, so that the playbook would apply them for you." msgstr "" -#: ../../../CHANGELOG.md:3029 +#: ../../../CHANGELOG.md:3087 msgid "Likewise, data is now also stored in a subdirectory (`/matrix/mautrix-telegram/data`). When you run the playbook with an existing database file (`/matrix/mautrix-telegram/mautrix-telegram.db`), the playbook will stop the bridge and relocate the database file to the `./data` directory. There's no data-loss involved. You'll need to restart the bridge manually though (`--tags=start`)." msgstr "" -#: ../../../CHANGELOG.md:3031 +#: ../../../CHANGELOG.md:3089 msgid "Also, we're now following the default configuration for the Telegram bridge, so some default configuration values are different:" msgstr "" -#: ../../../CHANGELOG.md:3033 -msgid "`edits_as_replies` (used to be `false`, now `true`) - previously replies were not sent over to Matrix at all; ow they are sent over as a reply to the original message" +#: ../../../CHANGELOG.md:3091 +msgid "`edits_as_replies` (used to be `false`, now `true`) — previously replies were not sent over to Matrix at all; ow they are sent over as a reply to the original message" msgstr "" -#: ../../../CHANGELOG.md:3034 -msgid "`inline_images` (used to be `true`, now `false`) - this has to do with captioned images. Inline-image (included caption) are said to exhibit troubles on Riot iOS. When `false`, the caption arrives on the Matrix side as a separate message." +#: ../../../CHANGELOG.md:3092 +msgid "`inline_images` (used to be `true`, now `false`) — this has to do with captioned images. Inline-image (included caption) are said to exhibit troubles on Riot iOS. When `false`, the caption arrives on the Matrix side as a separate message." msgstr "" -#: ../../../CHANGELOG.md:3035 -msgid "`authless_portals` (used to be `false`, now `true`) - creating portals from the Telegram side is now possible" +#: ../../../CHANGELOG.md:3093 +msgid "`authless_portals` (used to be `false`, now `true`) — creating portals from the Telegram side is now possible" msgstr "" -#: ../../../CHANGELOG.md:3036 -msgid "`whitelist_group_admins` (used to be `false`, now `true`) - allows Telegram group admins to use the bot commands" +#: ../../../CHANGELOG.md:3094 +msgid "`whitelist_group_admins` (used to be `false`, now `true`) — allows Telegram group admins to use the bot commands" msgstr "" -#: ../../../CHANGELOG.md:3038 +#: ../../../CHANGELOG.md:3096 msgid "If the new values are not to your liking, use `matrix_mautrix_telegram_configuration_extension_yaml` to specify an override (refer to `matrix_mautrix_telegram_configuration_yaml` to figure out which variable goes where)." msgstr "" -#: ../../../CHANGELOG.md:3041 +#: ../../../CHANGELOG.md:3099 msgid "2019-06-12" msgstr "" -#: ../../../CHANGELOG.md:3043 +#: ../../../CHANGELOG.md:3101 msgid "Synapse v1.0" msgstr "" -#: ../../../CHANGELOG.md:3045 +#: ../../../CHANGELOG.md:3103 msgid "With [Synapse v1.0 now available](https://matrix.org/blog/2019/06/11/introducing-matrix-1-0-and-the-matrix-org-foundation) and most people being on at least Synapse v0.99, it's time to remove the `_matrix._tcp` DNS SRV record that we've been keeping for compatibility with old Synapse versions (<= 0.34)." msgstr "" -#: ../../../CHANGELOG.md:3047 +#: ../../../CHANGELOG.md:3105 msgid "According to the [Server Discovery specification](https://matrix.org/docs/spec/server_server/r0.1.2.html#server-discovery), it's no harm to keep the DNS SRV record. But since it's not necessary for federating with the larger Matrix network anymore, you should be safe to get rid of it." msgstr "" -#: ../../../CHANGELOG.md:3049 +#: ../../../CHANGELOG.md:3107 msgid "**Note**: don't confuse the `_matrix._tcp` and `_matrix-identity._tcp` DNS SRV records. The latter, **must not** be removed." msgstr "" -#: ../../../CHANGELOG.md:3051 +#: ../../../CHANGELOG.md:3109 msgid "For completeness, we must say that using a `_matrix._tcp` [SRV record for Server Delegation](docs/howto-server-delegation.md#server-delegation-via-a-dns-srv-record-advanced) is still valid and useful for certain deployments. It's just that our guide recommends the [`/.well-known/matrix/server` Server Delegation method](docs/howto-server-delegation.md#server-delegation-via-a-well-known-file), due to its easier implementation when using this playbook." msgstr "" -#: ../../../CHANGELOG.md:3053 +#: ../../../CHANGELOG.md:3111 msgid "Besides this optional/non-urgent DNS change, assuming you're already on Synapse v0.99, upgrading to Synapse v1.0 should be as simple as [re-running the playbook](docs/maintenance-upgrading-services.md)." msgstr "" -#: ../../../CHANGELOG.md:3056 +#: ../../../CHANGELOG.md:3114 msgid "2019-06-07" msgstr "" -#: ../../../CHANGELOG.md:3058 +#: ../../../CHANGELOG.md:3116 msgid "(BC Break) Facebook bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:3060 +#: ../../../CHANGELOG.md:3118 msgid "Until now, configuration files for the [Facebook bridge](docs/configuring-playbook-bridge-mautrix-facebook.md) were created by the playbook initially, but never modified later on." msgstr "" -#: ../../../CHANGELOG.md:3064 +#: ../../../CHANGELOG.md:3122 msgid "This means that if you were making manual changes to the `/matrix/mautrix-facebook/config.yaml` or `/matrix/mautrix-facebook/registration.yaml` configuration files, those would be lost the next time you run the playbook." msgstr "" -#: ../../../CHANGELOG.md:3066 +#: ../../../CHANGELOG.md:3124 msgid "The bridge now stores configuration in a subdirectory (`/matrix/mautrix-facebook/config`), so your old configuration remains in the base directory (`/matrix/mautrix-facebook`). You need to migrate any manual changes over to the new `matrix_mautrix_facebook_configuration_extension_yaml` variable, so that the playbook would apply them for you." msgstr "" -#: ../../../CHANGELOG.md:3068 +#: ../../../CHANGELOG.md:3126 msgid "Likewise, data is now also stored in a subdirectory (`/matrix/mautrix-facebook/data`). When you run the playbook with an existing database file (`/matrix/mautrix-facebook/mautrix-facebook.db`), the playbook will stop the bridge and relocate the database file to the `./data` directory. There's no data-loss involved. You'll need to restart the bridge manually though (`--tags=start`)." msgstr "" -#: ../../../CHANGELOG.md:3071 +#: ../../../CHANGELOG.md:3129 msgid "2019-05-25" msgstr "" -#: ../../../CHANGELOG.md:3073 +#: ../../../CHANGELOG.md:3131 msgid "Support for exposing container ports publicly (not just to the host)" msgstr "" -#: ../../../CHANGELOG.md:3075 +#: ../../../CHANGELOG.md:3133 msgid "Until now, various roles supported a `matrix_*_expose_port` variable, which would expose their container's port to the host. This was mostly useful for reverse-proxying manually (in case `matrix-nginx-proxy` was disabled). It could also be used for installing some playbook services (e.g. bridges, etc.) and wiring them to a separate (manual) Matrix setup." msgstr "" -#: ../../../CHANGELOG.md:3077 -msgid "`matrix_*_expose_port` variables were not granular enough - sometimes they would expose one port, other times multiple. They also didn't provide control over **where** to expose (to which port number and to which network interface), because they would usually hardcode something like `127.0.0.1:8080`." +#: ../../../CHANGELOG.md:3135 +msgid "`matrix_*_expose_port` variables were not granular enough — sometimes they would expose one port, other times multiple. They also didn't provide control over **where** to expose (to which port number and to which network interface), because they would usually hardcode something like `127.0.0.1:8080`." msgstr "" -#: ../../../CHANGELOG.md:3079 +#: ../../../CHANGELOG.md:3137 msgid "All such variables have been superseded by a better (more flexible) way to do it." msgstr "" -#: ../../../CHANGELOG.md:3081 +#: ../../../CHANGELOG.md:3139 msgid "**Most** people (including those not using `matrix-nginx-proxy`), **don't need** to bother with this." msgstr "" -#: ../../../CHANGELOG.md:3083 +#: ../../../CHANGELOG.md:3141 msgid "Porting examples follow for people having more customized setups:" msgstr "" -#: ../../../CHANGELOG.md:3085 +#: ../../../CHANGELOG.md:3143 msgid "**from** `matrix_synapse_container_expose_client_api_port: true` **to** `matrix_synapse_container_client_api_host_bind_port: '127.0.0.1:8008'`" msgstr "" -#: ../../../CHANGELOG.md:3087 +#: ../../../CHANGELOG.md:3145 msgid "**from** `matrix_synapse_container_expose_federation_api_port: true` **to** `matrix_synapse_container_federation_api_plain_host_bind_port: '127.0.0.1:8048'` and possibly `matrix_synapse_container_federation_api_tls_host_bind_port: '8448'`" msgstr "" -#: ../../../CHANGELOG.md:3089 +#: ../../../CHANGELOG.md:3147 msgid "**from** `matrix_synapse_container_expose_metrics_port: true` **to** `matrix_synapse_container_metrics_api_host_bind_port: '127.0.0.1:9100'`" msgstr "" -#: ../../../CHANGELOG.md:3091 +#: ../../../CHANGELOG.md:3149 msgid "**from** `matrix_riot_web_container_expose_port: true` **to** `matrix_riot_web_container_http_host_bind_port: '127.0.0.1:8765'`" msgstr "" -#: ../../../CHANGELOG.md:3093 +#: ../../../CHANGELOG.md:3151 msgid "**from** `matrix_mxisd_container_expose_port: true` **to** `matrix_mxisd_container_http_host_bind_port: '127.0.0.1:8090'`" msgstr "" -#: ../../../CHANGELOG.md:3095 +#: ../../../CHANGELOG.md:3153 msgid "**from** `matrix_dimension_container_expose_port: true` **to** `matrix_dimension_container_http_host_bind_port: '127.0.0.1:8184'`" msgstr "" -#: ../../../CHANGELOG.md:3097 +#: ../../../CHANGELOG.md:3155 msgid "**from** `matrix_corporal_container_expose_ports: true` **to** `matrix_corporal_container_http_gateway_host_bind_port: '127.0.0.1:41080'` and possibly `matrix_corporal_container_http_api_host_bind_port: '127.0.0.1:41081'`" msgstr "" -#: ../../../CHANGELOG.md:3099 +#: ../../../CHANGELOG.md:3157 msgid "**from** `matrix_appservice_irc_container_expose_client_server_api_port: true` **to** `matrix_appservice_irc_container_http_host_bind_port: '127.0.0.1:9999'`" msgstr "" -#: ../../../CHANGELOG.md:3101 +#: ../../../CHANGELOG.md:3159 msgid "**from** `matrix_appservice_discord_container_expose_client_server_api_port: true` **to** `matrix_appservice_discord_container_http_host_bind_port: '127.0.0.1:9005'`" msgstr "" -#: ../../../CHANGELOG.md:3103 +#: ../../../CHANGELOG.md:3161 msgid "As always, if you forget to remove usage of some outdated variable, the playbook will warn you." msgstr "" -#: ../../../CHANGELOG.md:3106 +#: ../../../CHANGELOG.md:3164 msgid "2019-05-23" msgstr "" -#: ../../../CHANGELOG.md:3108 +#: ../../../CHANGELOG.md:3166 msgid "(BC Break) Ansible 2.8 compatibility" msgstr "" -#: ../../../CHANGELOG.md:3110 +#: ../../../CHANGELOG.md:3168 msgid "Thanks to [@danbob](https://github.com/danbob), the playbook now [supports the new Ansible 2.8](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/187)." msgstr "" -#: ../../../CHANGELOG.md:3112 +#: ../../../CHANGELOG.md:3170 msgid "A manual change is required to the `inventory/hosts` file, changing the group name from `matrix-servers` to `matrix_servers` (dash to underscore)." msgstr "" -#: ../../../CHANGELOG.md:3114 +#: ../../../CHANGELOG.md:3172 msgid "To avoid doing it manually, run this:" msgstr "" -#: ../../../CHANGELOG.md:3115 +#: ../../../CHANGELOG.md:3173 msgid "Linux: `sed -i 's/matrix-servers/matrix_servers/g' inventory/hosts`" msgstr "" -#: ../../../CHANGELOG.md:3116 +#: ../../../CHANGELOG.md:3174 msgid "Mac: `sed -i '' 's/matrix-servers/matrix_servers/g' inventory/hosts`" msgstr "" -#: ../../../CHANGELOG.md:3119 +#: ../../../CHANGELOG.md:3177 msgid "2019-05-21" msgstr "" -#: ../../../CHANGELOG.md:3121 +#: ../../../CHANGELOG.md:3179 msgid "Synapse no longer required" msgstr "" -#: ../../../CHANGELOG.md:3123 +#: ../../../CHANGELOG.md:3181 msgid "The playbook no longer insists on installing [Synapse](https://github.com/element-hq/synapse) via the `matrix-synapse` role." msgstr "" -#: ../../../CHANGELOG.md:3125 +#: ../../../CHANGELOG.md:3183 msgid "If you would prefer to install Synapse another way and just use the playbook to install other services, it should be possible (`matrix_synapse_enabled: false`)." msgstr "" -#: ../../../CHANGELOG.md:3127 +#: ../../../CHANGELOG.md:3185 msgid "Note that it won't necessarily be the best experience, since the playbook wires things to Synapse by default. If you're using your own Synapse instance (especially one not running in a container), you may have to override many variables to point them to the correct place." msgstr "" -#: ../../../CHANGELOG.md:3129 +#: ../../../CHANGELOG.md:3187 msgid "Having Synapse not be a required component potentially opens the door for installing alternative Matrix homeservers." msgstr "" -#: ../../../CHANGELOG.md:3131 +#: ../../../CHANGELOG.md:3189 msgid "Bridges are now separate from the Synapse role" msgstr "" -#: ../../../CHANGELOG.md:3133 +#: ../../../CHANGELOG.md:3191 msgid "Bridges are no longer part of the `matrix-synapse` role. Each bridge now lives in its own separate role (`roles/custom/matrix-bridge-*`)." msgstr "" -#: ../../../CHANGELOG.md:3135 +#: ../../../CHANGELOG.md:3193 msgid "These bridge roles are independent of the `matrix-synapse` role, so it should be possible to use them with a Synapse instance installed another way (not through the playbook)." msgstr "" -#: ../../../CHANGELOG.md:3137 +#: ../../../CHANGELOG.md:3195 msgid "Renaming inconsistently-named Synapse variables" msgstr "" -#: ../../../CHANGELOG.md:3139 +#: ../../../CHANGELOG.md:3197 msgid "For better consistency, the following variables have been renamed:" msgstr "" -#: ../../../CHANGELOG.md:3141 +#: ../../../CHANGELOG.md:3199 msgid "`matrix_enable_room_list_search` was renamed to `matrix_synapse_enable_room_list_search`" msgstr "" -#: ../../../CHANGELOG.md:3142 +#: ../../../CHANGELOG.md:3200 msgid "`matrix_alias_creation_rules` was renamed to `matrix_synapse_alias_creation_rules`" msgstr "" -#: ../../../CHANGELOG.md:3143 +#: ../../../CHANGELOG.md:3201 msgid "`matrix_nginx_proxy_matrix_room_list_publication_rulesdata_path` was renamed to `matrix_synapse_room_list_publication_rules`" msgstr "" -#: ../../../CHANGELOG.md:3146 +#: ../../../CHANGELOG.md:3204 msgid "2019-05-09" msgstr "" -#: ../../../CHANGELOG.md:3148 +#: ../../../CHANGELOG.md:3206 msgid "Besides a myriad of bug fixes and minor improvements, here are the more notable (bigger) features we can announce today." msgstr "" -#: ../../../CHANGELOG.md:3150 +#: ../../../CHANGELOG.md:3208 msgid "Mautrix Facebook/Messenger bridging support" msgstr "" -#: ../../../CHANGELOG.md:3152 +#: ../../../CHANGELOG.md:3210 msgid "The playbook now supports bridging with [Facebook](https://www.facebook.com/) by installing the [mautrix-facebook](https://github.com/tulir/mautrix-facebook) bridge. This playbook functionality is available thanks to [@izissise](https://github.com/izissise)." msgstr "" -#: ../../../CHANGELOG.md:3154 +#: ../../../CHANGELOG.md:3212 msgid "Additional details are available in [Setting up Mautrix Facebook bridging](docs/configuring-playbook-bridge-mautrix-facebook.md)." msgstr "" -#: ../../../CHANGELOG.md:3156 +#: ../../../CHANGELOG.md:3214 msgid "mxisd Registration feature integration" msgstr "" -#: ../../../CHANGELOG.md:3158 +#: ../../../CHANGELOG.md:3216 msgid "The playbook can now help you integrate with mxisd's [Registration](https://github.com/kamax-matrix/mxisd/blob/master/docs/features/registration.md) feature." msgstr "" -#: ../../../CHANGELOG.md:3160 +#: ../../../CHANGELOG.md:3218 msgid "Learn more in [mxisd-controlled Registration](docs/configuring-playbook-mxisd.md#mxisd-controlled-registration)." msgstr "" -#: ../../../CHANGELOG.md:3163 +#: ../../../CHANGELOG.md:3221 msgid "2019-04-16" msgstr "" -#: ../../../CHANGELOG.md:3165 +#: ../../../CHANGELOG.md:3223 msgid "Caddy webserver examples" msgstr "" -#: ../../../CHANGELOG.md:3167 +#: ../../../CHANGELOG.md:3225 msgid "If you prefer using the [Caddy](https://caddyserver.com/) webserver instead of our own integrated nginx, we now have examples for it in the [`examples/caddy`](examples/caddy) directory" msgstr "" -#: ../../../CHANGELOG.md:3169 +#: ../../../CHANGELOG.md:3227 msgid "2019-04-10" msgstr "" -#: ../../../CHANGELOG.md:3171 +#: ../../../CHANGELOG.md:3229 msgid "Goofys support for other S3-compatible object stores" msgstr "" -#: ../../../CHANGELOG.md:3173 +#: ../../../CHANGELOG.md:3231 msgid "Until now, you could optionally host Synapse's media repository on Amazon S3, but we now also support [using other S3-compatible object stores](docs/configuring-playbook-s3.md)," msgstr "" -#: ../../../CHANGELOG.md:3176 +#: ../../../CHANGELOG.md:3234 msgid "2019-04-03" msgstr "" -#: ../../../CHANGELOG.md:3178 +#: ../../../CHANGELOG.md:3236 msgid "Ansible >= 2.5 is required" msgstr "" -#: ../../../CHANGELOG.md:3180 +#: ../../../CHANGELOG.md:3238 msgid "Due to recent playbook improvements and the fact that the world keeps turning, we're bumping the [version requirement for Ansible](docs/ansible.md#supported-ansible-versions) (2.4 -> 2.5)." msgstr "" -#: ../../../CHANGELOG.md:3182 +#: ../../../CHANGELOG.md:3240 msgid "We've also started building our own Docker image of Ansible ([devture/ansible](https://hub.docker.com/r/devture/ansible/)), which is useful for people who can't upgrade their local Ansible installation (see [Using Ansible via Docker](docs/ansible.md#using-ansible-via-docker))." msgstr "" -#: ../../../CHANGELOG.md:3185 +#: ../../../CHANGELOG.md:3243 msgid "2019-03-19" msgstr "" -#: ../../../CHANGELOG.md:3187 -msgid "TLS support for Coturn" +#: ../../../CHANGELOG.md:3245 +msgid "TLS support for coturn" msgstr "" -#: ../../../CHANGELOG.md:3189 -msgid "We've added TLS support to the Coturn TURN server installed by the playbook by default. The certificates from the Matrix domain will be used for the Coturn server." +#: ../../../CHANGELOG.md:3247 +msgid "We've added TLS support to the coturn TURN server installed by the playbook by default. The certificates from the Matrix domain will be used for the coturn server." msgstr "" -#: ../../../CHANGELOG.md:3191 -msgid "This feature is enabled by default for new installations. To make use of TLS support for your existing Matrix server's Coturn, make sure to rebuild both Coturn and Synapse:" +#: ../../../CHANGELOG.md:3249 +msgid "This feature is enabled by default for new installations. To make use of TLS support for your existing Matrix server's coturn, make sure to rebuild both coturn and Synapse:" msgstr "" -#: ../../../CHANGELOG.md:3197 +#: ../../../CHANGELOG.md:3255 msgid "People who have an extra firewall (besides the iptables firewall, which Docker manages automatically), will need to open these additional firewall ports: `5349/tcp` (TURN over TCP) and `5349/udp` (TURN over UDP)." msgstr "" -#: ../../../CHANGELOG.md:3199 +#: ../../../CHANGELOG.md:3257 msgid "People who build their own custom playbook from our roles should be aware that:" msgstr "" -#: ../../../CHANGELOG.md:3201 -msgid "the `matrix-coturn` role and actually starting Coturn (e.g. `--tags=start`), requires that certificates are already put in place. For this reason, it's usually a good idea to have the `matrix-coturn` role execute after `matrix-nginx-proxy` (which retrieves the certificates)." +#: ../../../CHANGELOG.md:3259 +msgid "the `matrix-coturn` role and actually starting coturn (e.g. `--tags=start`), requires that certificates are already put in place. For this reason, it's usually a good idea to have the `matrix-coturn` role execute after `matrix-nginx-proxy` (which retrieves the certificates)." msgstr "" -#: ../../../CHANGELOG.md:3203 -msgid "there are a few variables that can help you enable TLS support for Coturn. See the `matrix-coturn` section in [group_vars/matrix-servers](./group_vars/matrix-servers)." +#: ../../../CHANGELOG.md:3261 +msgid "there are a few variables that can help you enable TLS support for coturn. See the `matrix-coturn` section in [group_vars/matrix-servers](./group_vars/matrix-servers)." msgstr "" -#: ../../../CHANGELOG.md:3206 +#: ../../../CHANGELOG.md:3264 msgid "2019-03-12" msgstr "" -#: ../../../CHANGELOG.md:3208 +#: ../../../CHANGELOG.md:3266 msgid "matrix-nginx-proxy support for serving the base domain" msgstr "" -#: ../../../CHANGELOG.md:3210 +#: ../../../CHANGELOG.md:3268 msgid "If you don't have a dedicated server for your base domain and want to set up [Server Delegation via a well-known file](docs/howto-server-delegation.md#server-delegation-via-a-well-known-file), the playbook has got you covered now." msgstr "" -#: ../../../CHANGELOG.md:3212 +#: ../../../CHANGELOG.md:3270 msgid "It's now possible for the playbook to obtain an SSL certificate and serve the necessary files for Matrix Server Delegation on your base domain. Take a look at the new [Serving the base domain](docs/configuring-playbook-base-domain-serving.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:3214 +#: ../../../CHANGELOG.md:3272 msgid "(BC break) matrix-nginx-proxy data variable renamed" msgstr "" -#: ../../../CHANGELOG.md:3216 +#: ../../../CHANGELOG.md:3274 msgid "`matrix_nginx_proxy_data_path` was renamed to `matrix_nginx_proxy_base_path`." msgstr "" -#: ../../../CHANGELOG.md:3218 +#: ../../../CHANGELOG.md:3276 msgid "There's a new `matrix_nginx_proxy_data_path` variable, which has a different use-purpose now (it's a subdirectory of `matrix_nginx_proxy_base_path` and is meant for storing various data files)." msgstr "" -#: ../../../CHANGELOG.md:3221 +#: ../../../CHANGELOG.md:3279 msgid "2019-03-10" msgstr "" -#: ../../../CHANGELOG.md:3223 +#: ../../../CHANGELOG.md:3281 msgid "Dimension integration manager support" msgstr "" -#: ../../../CHANGELOG.md:3225 +#: ../../../CHANGELOG.md:3283 msgid "Thanks to [NullIsNot0](https://github.com/NullIsNot0), the playbook can now (optionally) install the [Dimension](https://dimension.t2bot.io/) integration manager. To learn more, see the [Setting up Dimension](docs/configuring-playbook-dimension.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:3228 +#: ../../../CHANGELOG.md:3286 msgid "2019-03-07" msgstr "" -#: ../../../CHANGELOG.md:3230 +#: ../../../CHANGELOG.md:3288 msgid "Ability to customize mxisd's email templates" msgstr "" -#: ../../../CHANGELOG.md:3232 +#: ../../../CHANGELOG.md:3290 msgid "Thanks to [Sylvia van Os](https://github.com/TheLastProject), mxisd's email templates can now be customized easily. To learn more, see the [Customizing email templates](docs/configuring-playbook-mxisd.md#customizing-email-templates) documentation page." msgstr "" -#: ../../../CHANGELOG.md:3235 +#: ../../../CHANGELOG.md:3293 msgid "2019-03-05" msgstr "" -#: ../../../CHANGELOG.md:3237 +#: ../../../CHANGELOG.md:3295 msgid "Discord bridging support" msgstr "" -#: ../../../CHANGELOG.md:3239 +#: ../../../CHANGELOG.md:3297 msgid "[@Lionstiger](https://github.com/Lionstiger) has done some great work adding Discord bridging support via [matrix-appservice-discord](https://github.com/matrix-org/matrix-appservice-discord). To learn more, see the [Setting up Appservice Discord bridging](docs/configuring-playbook-bridge-appservice-discord.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:3242 +#: ../../../CHANGELOG.md:3300 msgid "2019-02-19" msgstr "" -#: ../../../CHANGELOG.md:3244 +#: ../../../CHANGELOG.md:3302 msgid "Renaming variables" msgstr "" -#: ../../../CHANGELOG.md:3246 ../../../CHANGELOG.md:3563 -#: ../../../CHANGELOG.md:3648 ../../../CHANGELOG.md:3768 +#: ../../../CHANGELOG.md:3304 ../../../CHANGELOG.md:3621 +#: ../../../CHANGELOG.md:3706 ../../../CHANGELOG.md:3826 msgid "The following playbook variables were renamed:" msgstr "" -#: ../../../CHANGELOG.md:3248 +#: ../../../CHANGELOG.md:3306 msgid "from `host_specific_hostname_identity` to `matrix_domain`" msgstr "" -#: ../../../CHANGELOG.md:3249 +#: ../../../CHANGELOG.md:3307 msgid "from `hostname_identity` to `matrix_domain`" msgstr "" -#: ../../../CHANGELOG.md:3250 +#: ../../../CHANGELOG.md:3308 msgid "from `hostname_matrix` to `matrix_server_fqn_matrix`" msgstr "" -#: ../../../CHANGELOG.md:3251 +#: ../../../CHANGELOG.md:3309 msgid "from `hostname_riot` to `matrix_server_fqn_riot`" msgstr "" -#: ../../../CHANGELOG.md:3252 +#: ../../../CHANGELOG.md:3310 msgid "from `host_specific_matrix_ssl_lets_encrypt_support_email` to `matrix_ssl_lets_encrypt_support_email`" msgstr "" -#: ../../../CHANGELOG.md:3254 +#: ../../../CHANGELOG.md:3312 msgid "Doing that, we've simplified things, made names less confusing (hopefully) and moved all variable names under the `matrix_` prefix." msgstr "" -#: ../../../CHANGELOG.md:3257 +#: ../../../CHANGELOG.md:3315 msgid "2019-02-16" msgstr "" -#: ../../../CHANGELOG.md:3259 +#: ../../../CHANGELOG.md:3317 msgid "Riot v1.0.1 support" msgstr "" -#: ../../../CHANGELOG.md:3261 +#: ../../../CHANGELOG.md:3319 msgid "You can now use the brand new and redesigned Riot." msgstr "" -#: ../../../CHANGELOG.md:3263 +#: ../../../CHANGELOG.md:3321 msgid "The new version no longer has a homepage by default, so we've also removed the custom homepage that we've been installing." msgstr "" -#: ../../../CHANGELOG.md:3265 +#: ../../../CHANGELOG.md:3323 msgid "However, we still provide you with hooks to install your own `home.html` file by specifying the `matrix_riot_web_embedded_pages_home_path` variable (used to be called `matrix_riot_web_homepage_template` before)." msgstr "" -#: ../../../CHANGELOG.md:3268 +#: ../../../CHANGELOG.md:3326 msgid "2019-02-14" msgstr "" -#: ../../../CHANGELOG.md:3270 +#: ../../../CHANGELOG.md:3328 msgid "Synapse v0.99.1" msgstr "" -#: ../../../CHANGELOG.md:3272 +#: ../../../CHANGELOG.md:3330 msgid "As we're moving toward Synapse v1.0, things are beginning to stabilize. Upgrading from v0.99.0 to v0.99.1 should be painless." msgstr "" -#: ../../../CHANGELOG.md:3274 +#: ../../../CHANGELOG.md:3332 msgid "If you've been overriding the default configuration so that you can terminate TLS at the Synapse side (`matrix_synapse_no_tls: false`), you'll now have to replace this custom configuration with `matrix_synapse_tls_federation_listener_enabled: true`. The `matrix_synapse_no_tls` variable is no more." msgstr "" -#: ../../../CHANGELOG.md:3277 +#: ../../../CHANGELOG.md:3335 msgid "2019-02-06" msgstr "" -#: ../../../CHANGELOG.md:3279 +#: ../../../CHANGELOG.md:3337 msgid "Synapse v0.99 support and preparation for Synapse v1.0" msgstr "" -#: ../../../CHANGELOG.md:3281 +#: ../../../CHANGELOG.md:3339 msgid "Matrix is undergoing a lot of changes as it matures towards Synapse v1.0. The first step is the Synapse v0.99 transitional release, which this playbook now supports." msgstr "" -#: ../../../CHANGELOG.md:3283 +#: ../../../CHANGELOG.md:3341 msgid "If you've been using this playbook successfully until now, you'd be aware that we've been doing [Server Delegation](docs/howto-server-delegation.md) using a `_matrix._tcp` DNS SRV record (as per [Configuring DNS](docs/configuring-dns.md))." msgstr "" -#: ../../../CHANGELOG.md:3285 -msgid "Due to changes related to certificate file requirements that will affect us at Synapse v1.0, we'll have to stop using a **`_matrix._tcp` DNS SRV record in the future** (when Synapse goes to v1.0 - around 5th of March 2019). We **still need to keep the SRV record for now**, for backward compatibility with older Synapse versions (lower than v0.99)." +#: ../../../CHANGELOG.md:3343 +msgid "Due to changes related to certificate file requirements that will affect us at Synapse v1.0, we'll have to stop using a **`_matrix._tcp` DNS SRV record in the future** (when Synapse goes to v1.0 — around 5th of March 2019). We **still need to keep the SRV record for now**, for backward compatibility with older Synapse versions (lower than v0.99)." msgstr "" -#: ../../../CHANGELOG.md:3287 +#: ../../../CHANGELOG.md:3345 msgid "**What you need to do now** is make use of this transitional Synapse v0.99 release to **prepare your federation settings for the future**. You have 2 choices to prepare yourself for compatibility with the future Synapse v1.0:" msgstr "" -#: ../../../CHANGELOG.md:3289 +#: ../../../CHANGELOG.md:3347 msgid "(recommended) set up [Server Delegation via a well-known file](docs/howto-server-delegation.md#server-delegation-via-a-well-known-file), unless you are affected by the [Downsides of well-known-based Server Delegation](docs/howto-server-delegation.md#downsides-of-well-known-based-server-delegation). If you had previously set up the well-known `client` file, depending on how you've done it, it may be that there is nothing new required of you (besides [upgrading](docs/maintenance-upgrading-services.md)). After upgrading, you can [run a self-check](docs/maintenance-checking-services.md), which will tell you if you need to do anything extra with regard to setting up [Server Delegation via a well-known file](docs/howto-server-delegation.md#server-delegation-via-a-well-known-file). After some time, when most people have upgraded to Synapse v0.99 and older releases have disappeared, be prepared to drop your `_matrix._tcp` SRV record." msgstr "" -#: ../../../CHANGELOG.md:3291 +#: ../../../CHANGELOG.md:3349 msgid "(more advanced) if the [Downsides of well-known-based Server Delegation](docs/howto-server-delegation.md#downsides-of-well-known-based-server-delegation) are not to your liking, **as an alternative**, you can set up [Server Delegation via a DNS SRV record](docs/howto-server-delegation.md#server-delegation-via-a-dns-srv-record-advanced). In such a case, you get to keep using your existing `_matrix._tcp` DNS SRV record forever and need to NOT set up a `/.well-known/matrix/server` file. Don't forget that you need to do certificate changes though. Follow the guide at [Server Delegation via a DNS SRV record](docs/howto-server-delegation.md#server-delegation-via-a-dns-srv-record-advanced)." msgstr "" -#: ../../../CHANGELOG.md:3294 +#: ../../../CHANGELOG.md:3352 msgid "2019-02-01" msgstr "" -#: ../../../CHANGELOG.md:3296 +#: ../../../CHANGELOG.md:3354 msgid "TLS v1.3 support" msgstr "" -#: ../../../CHANGELOG.md:3298 +#: ../../../CHANGELOG.md:3356 msgid "Now that the [nginx Docker image](https://hub.docker.com/_/nginx) has [added support for TLS v1.3](https://github.com/nginxinc/docker-nginx/issues/190), we have enabled that protocol by default." msgstr "" -#: ../../../CHANGELOG.md:3300 +#: ../../../CHANGELOG.md:3358 msgid "When using:" msgstr "" -#: ../../../CHANGELOG.md:3302 +#: ../../../CHANGELOG.md:3360 msgid "the **integrated nginx server**: TLS v1.3 support might not kick in immediately, because the nginx version hasn't been bumped and you may have an older build of the nginx Docker image (currently `nginx:1.15.8-alpine`). Typically, we do not re-pull images that you already have. When the nginx version gets bumped in the future, everyone will get the update. Until then, you could manually force-pull the rebuilt Docker image by running this on the server: `docker pull nginx:1.15.8-alpine`." msgstr "" -#: ../../../CHANGELOG.md:3304 +#: ../../../CHANGELOG.md:3362 msgid "**your own external nginx server**: if your external nginx server is too old, the new configuration we generate for you in `/matrix/nginx-proxy/conf.d/` might not work anymore, because it mentions `TLSv1.3` and your nginx version might not support that. You can adjust the SSL protocol list by overriding the `matrix_nginx_proxy_ssl_protocols` variable. Learn more in the documentation page for [Using your own webserver, instead of this playbook's nginx proxy](docs/configuring-playbook-own-webserver.md)" msgstr "" -#: ../../../CHANGELOG.md:3306 +#: ../../../CHANGELOG.md:3364 msgid "**another web server**: you don't need to do anything to accommodate this change" msgstr "" -#: ../../../CHANGELOG.md:3309 +#: ../../../CHANGELOG.md:3367 msgid "2019-01-31" msgstr "" -#: ../../../CHANGELOG.md:3311 +#: ../../../CHANGELOG.md:3369 msgid "IRC bridging support" msgstr "" -#: ../../../CHANGELOG.md:3313 +#: ../../../CHANGELOG.md:3371 msgid "[Devon Maloney (@Plailect)](https://github.com/Plailect) has done some great work bringing IRC bridging support via [matrix-appservice-irc](https://github.com/TeDomum/matrix-appservice-irc). To learn more, see the [Setting up Appservice IRC bridging](docs/configuring-playbook-bridge-appservice-irc.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:3316 +#: ../../../CHANGELOG.md:3374 msgid "2019-01-29" msgstr "" -#: ../../../CHANGELOG.md:3318 +#: ../../../CHANGELOG.md:3376 msgid "Running container processes as non-root, without capabilities and read-only" msgstr "" -#: ../../../CHANGELOG.md:3320 -msgid "To improve security, this playbook no longer starts container processes as the `root` user. Most containers were dropping privileges anyway, but we were trusting them with `root` privileges until they would do that. Not anymore -- container processes now start as a non-root user (usually `matrix`) from the get-go." +#: ../../../CHANGELOG.md:3378 +msgid "To improve security, this playbook no longer starts container processes as the `root` user. Most containers were dropping privileges anyway, but we were trusting them with `root` privileges until they would do that. Not anymore — container processes now start as a non-root user (usually `matrix`) from the get-go." msgstr "" -#: ../../../CHANGELOG.md:3322 +#: ../../../CHANGELOG.md:3380 msgid "For additional security, various capabilities are also dropped (see [why it's important](https://github.com/projectatomic/atomic-site/issues/203)) for all containers." msgstr "" -#: ../../../CHANGELOG.md:3324 +#: ../../../CHANGELOG.md:3382 msgid "Additionally, most containers now use a read-only filesystem (see [why it's important](https://www.projectatomic.io/blog/2015/12/making-docker-images-write-only-in-production/)). Containers are given write access only to the directories they need to write to." msgstr "" -#: ../../../CHANGELOG.md:3326 +#: ../../../CHANGELOG.md:3384 msgid "A minor breaking change is the `matrix_nginx_proxy_proxy_matrix_client_api_client_max_body_size` variable having being renamed to `matrix_nginx_proxy_proxy_matrix_client_api_client_max_body_size_mb` (note the `_mb` suffix). The new variable expects a number value (e.g. `25M` -> `25`). If you weren't customizing this variable, this wouldn't affect you." msgstr "" -#: ../../../CHANGELOG.md:3328 +#: ../../../CHANGELOG.md:3386 msgid "matrix-mailer is now based on Exim, not Postfix" msgstr "" -#: ../../../CHANGELOG.md:3330 +#: ../../../CHANGELOG.md:3388 msgid "While we would have preferred to stay with [Postfix](http://www.postfix.org/), we found out that it cannot run as a non-root user. We've had to replace it with [Exim](https://www.exim.org/) (via the [devture/exim-relay](https://hub.docker.com/r/devture/exim-relay) container image)." msgstr "" -#: ../../../CHANGELOG.md:3332 +#: ../../../CHANGELOG.md:3390 msgid "The internal `matrix-mailer` service (running in a container) now listens on port `8025` (used to be `587` before). The playbook will update your Synapse and mxisd email settings to match (`matrix-mailer:587` -> `matrix-mailer:8025`)." msgstr "" -#: ../../../CHANGELOG.md:3334 +#: ../../../CHANGELOG.md:3392 msgid "Using the [devture/exim-relay](https://hub.docker.com/r/devture/exim-relay) container image instead of [panubo/postfix](https://hub.docker.com/r/panubo/postfix/) also gives us a nice disk usage reduction (~200MB -> 8MB)." msgstr "" -#: ../../../CHANGELOG.md:3337 +#: ../../../CHANGELOG.md:3395 msgid "2019-01-17" msgstr "" -#: ../../../CHANGELOG.md:3339 +#: ../../../CHANGELOG.md:3397 msgid "(BC Break) Making the playbook's roles more independent of one another" msgstr "" -#: ../../../CHANGELOG.md:3341 -msgid "The following change **affects people running a more non-standard setup** - external Postgres or using our roles in their own other playbook. **Most users don't need to do anything**, besides becoming aware of the new glue variables file [`group_vars/matrix-servers`](group_vars/matrix-servers)." +#: ../../../CHANGELOG.md:3399 +msgid "The following change **affects people running a more non-standard setup** — external Postgres or using our roles in their own other playbook. **Most users don't need to do anything**, besides becoming aware of the new glue variables file [`group_vars/matrix-servers`](group_vars/matrix-servers)." msgstr "" -#: ../../../CHANGELOG.md:3344 +#: ../../../CHANGELOG.md:3402 msgid "Because people like using the playbook's components independently (outside of this playbook) and because it's much better for maintainability, we've continued working on separating them. Still, we'd like to offer a turnkey solution for running a fully-featured Matrix server, so this playbook remains important for wiring up the various components." msgstr "" -#: ../../../CHANGELOG.md:3346 +#: ../../../CHANGELOG.md:3404 msgid "With the new changes, **all roles are now only dependent on the minimal `matrix-base` role**. They are no longer dependent among themselves." msgstr "" -#: ../../../CHANGELOG.md:3348 +#: ../../../CHANGELOG.md:3406 msgid "In addition, the following components can now be completely disabled (for those who want/need to):" msgstr "" -#: ../../../CHANGELOG.md:3349 +#: ../../../CHANGELOG.md:3407 msgid "`matrix-coturn` by using `matrix_coturn_enabled: false`" msgstr "" -#: ../../../CHANGELOG.md:3350 +#: ../../../CHANGELOG.md:3408 msgid "`matrix-mailer` by using `matrix_mailer_enabled: false`" msgstr "" -#: ../../../CHANGELOG.md:3351 +#: ../../../CHANGELOG.md:3409 msgid "`matrix-postgres` by using `matrix_postgres_enabled: false`" msgstr "" -#: ../../../CHANGELOG.md:3353 +#: ../../../CHANGELOG.md:3411 msgid "The following changes had to be done:" msgstr "" -#: ../../../CHANGELOG.md:3355 +#: ../../../CHANGELOG.md:3413 msgid "glue variables had to be introduced to the playbook, so it can wire together the various components. Those glue vars are stored in the [`group_vars/matrix-servers`](group_vars/matrix-servers) file. When overriding variables for a given component (role), you need to be aware of both the role defaults (`role/ROLE/defaults/main.yml`) and the role's corresponding section in the [`group_vars/matrix-servers`](group_vars/matrix-servers) file." msgstr "" -#: ../../../CHANGELOG.md:3357 +#: ../../../CHANGELOG.md:3415 msgid "`matrix_postgres_use_external` has been superceeded by the more consistently named `matrix_postgres_enabled` variable and a few other `matrix_synapse_database_` variables. See the [Using an external PostgreSQL server (optional)](docs/configuring-playbook-external-postgres.md) documentation page for an up-to-date replacement." msgstr "" -#: ../../../CHANGELOG.md:3359 +#: ../../../CHANGELOG.md:3417 msgid "Postgres tools (`matrix-postgres-cli` and `matrix-make-user-admin`) are no longer installed if you're not enabling the `matrix-postgres` role (`matrix_postgres_enabled: false`)" msgstr "" -#: ../../../CHANGELOG.md:3361 +#: ../../../CHANGELOG.md:3419 msgid "roles, being more independent now, are more minimal and do not do so much magic for you. People that are building their own playbook using our roles will definitely need to take a look at the [`group_vars/matrix-servers`](group_vars/matrix-servers) file and adapt their playbooks with the same (or similar) wiring logic." msgstr "" -#: ../../../CHANGELOG.md:3364 +#: ../../../CHANGELOG.md:3422 msgid "2019-01-16" msgstr "" -#: ../../../CHANGELOG.md:3366 +#: ../../../CHANGELOG.md:3424 msgid "Splitting the playbook into multiple roles" msgstr "" -#: ../../../CHANGELOG.md:3368 +#: ../../../CHANGELOG.md:3426 msgid "For better maintainability, the playbook logic (which all used to reside in a single `matrix-server` role) has been split out into a number of different roles: `matrix-synapse`, `matrix-postgres`, `matrix-riot-web`, `matrix-mxisd`, etc. (see the `roles/` directory)." msgstr "" -#: ../../../CHANGELOG.md:3371 +#: ../../../CHANGELOG.md:3429 msgid "To keep the filesystem more consistent with this separation, the **Postgres data had to be relocated**." msgstr "" -#: ../../../CHANGELOG.md:3373 +#: ../../../CHANGELOG.md:3431 msgid "The default value of `matrix_postgres_data_path` was changed from `/matrix/postgres` to `/matrix/postgres/data`. The `/matrix/postgres` directory is what we consider a base path now (new variable `matrix_postgres_base_path`). **Your Postgres data files will automatically be relocated by the playbook** (`/matrix/postgres/*` -> `/matrix/postgres/data/`) when you run with `--tags=setup-all` (or `--tags=setup-postgres`). While this shouldn't cause data-loss, **it's better if you do a Postgres backup just in case**. You'd need to restart all services after this migration (`--tags=start`)." msgstr "" -#: ../../../CHANGELOG.md:3376 +#: ../../../CHANGELOG.md:3434 msgid "2019-01-11" msgstr "" -#: ../../../CHANGELOG.md:3378 +#: ../../../CHANGELOG.md:3436 msgid "(BC Break) mxisd configuration changes" msgstr "" -#: ../../../CHANGELOG.md:3380 +#: ../../../CHANGELOG.md:3438 msgid "To be more flexible and to support the upcoming [mxisd](https://github.com/kamax-io/mxisd) 1.3.0 (when it gets released), we've had to redo how mxisd gets configured." msgstr "" -#: ../../../CHANGELOG.md:3383 +#: ../../../CHANGELOG.md:3441 msgid "The following variables are no longer supported by this playbook:" msgstr "" -#: ../../../CHANGELOG.md:3385 +#: ../../../CHANGELOG.md:3443 msgid "`matrix_mxisd_ldap_enabled`" msgstr "" -#: ../../../CHANGELOG.md:3386 +#: ../../../CHANGELOG.md:3444 msgid "`matrix_mxisd_ldap_connection_host`" msgstr "" -#: ../../../CHANGELOG.md:3387 +#: ../../../CHANGELOG.md:3445 msgid "`matrix_mxisd_ldap_connection_tls`" msgstr "" -#: ../../../CHANGELOG.md:3388 +#: ../../../CHANGELOG.md:3446 msgid "`matrix_mxisd_ldap_connection_port`" msgstr "" -#: ../../../CHANGELOG.md:3389 +#: ../../../CHANGELOG.md:3447 msgid "`matrix_mxisd_ldap_connection_baseDn`" msgstr "" -#: ../../../CHANGELOG.md:3390 +#: ../../../CHANGELOG.md:3448 msgid "`matrix_mxisd_ldap_connection_baseDns`" msgstr "" -#: ../../../CHANGELOG.md:3391 ../../../CHANGELOG.md:3392 +#: ../../../CHANGELOG.md:3449 ../../../CHANGELOG.md:3450 msgid "`matrix_mxisd_ldap_connection_bindDn`" msgstr "" -#: ../../../CHANGELOG.md:3393 ../../../CHANGELOG.md:3397 +#: ../../../CHANGELOG.md:3451 ../../../CHANGELOG.md:3455 msgid "`matrix_mxisd_ldap_connection_bindPassword`" msgstr "" -#: ../../../CHANGELOG.md:3394 +#: ../../../CHANGELOG.md:3452 msgid "`matrix_mxisd_ldap_filter`" msgstr "" -#: ../../../CHANGELOG.md:3395 +#: ../../../CHANGELOG.md:3453 msgid "`matrix_mxisd_ldap_attribute_uid_type`" msgstr "" -#: ../../../CHANGELOG.md:3396 +#: ../../../CHANGELOG.md:3454 msgid "`matrix_mxisd_ldap_attribute_uid_value`" msgstr "" -#: ../../../CHANGELOG.md:3398 +#: ../../../CHANGELOG.md:3456 msgid "`matrix_mxisd_ldap_attribute_name`" msgstr "" -#: ../../../CHANGELOG.md:3399 +#: ../../../CHANGELOG.md:3457 msgid "`matrix_mxisd_ldap_attribute_threepid_email`" msgstr "" -#: ../../../CHANGELOG.md:3400 +#: ../../../CHANGELOG.md:3458 msgid "`matrix_mxisd_ldap_attribute_threepid_msisdn`" msgstr "" -#: ../../../CHANGELOG.md:3401 +#: ../../../CHANGELOG.md:3459 msgid "`matrix_mxisd_ldap_identity_filter`" msgstr "" -#: ../../../CHANGELOG.md:3402 +#: ../../../CHANGELOG.md:3460 msgid "`matrix_mxisd_ldap_identity_medium`" msgstr "" -#: ../../../CHANGELOG.md:3403 +#: ../../../CHANGELOG.md:3461 msgid "`matrix_mxisd_ldap_auth_filter`" msgstr "" -#: ../../../CHANGELOG.md:3404 +#: ../../../CHANGELOG.md:3462 msgid "`matrix_mxisd_ldap_directory_filter`" msgstr "" -#: ../../../CHANGELOG.md:3405 +#: ../../../CHANGELOG.md:3463 msgid "`matrix_mxisd_template_config`" msgstr "" -#: ../../../CHANGELOG.md:3407 +#: ../../../CHANGELOG.md:3465 msgid "You are encouraged to use the `matrix_mxisd_configuration_extension_yaml` variable to define your own mxisd configuration additions and overrides. Refer to the [default variables file](roles/custom/matrix-mxisd/defaults/main.yml) for more information." msgstr "" -#: ../../../CHANGELOG.md:3409 +#: ../../../CHANGELOG.md:3467 msgid "This new way of configuring mxisd is beneficial because:" msgstr "" -#: ../../../CHANGELOG.md:3411 +#: ../../../CHANGELOG.md:3469 msgid "it lets us support all mxisd configuration options, as the playbook simply forwards them to mxisd without needing to care or understand them" msgstr "" -#: ../../../CHANGELOG.md:3412 +#: ../../../CHANGELOG.md:3470 msgid "it lets you upgrade to newer mxisd versions and make use of their features, without us having to add support for them explicitly" msgstr "" -#: ../../../CHANGELOG.md:3415 +#: ../../../CHANGELOG.md:3473 msgid "2019-01-08" msgstr "" -#: ../../../CHANGELOG.md:3417 +#: ../../../CHANGELOG.md:3475 msgid "(BC Break) Cronjob schedule no longer configurable" msgstr "" -#: ../../../CHANGELOG.md:3419 +#: ../../../CHANGELOG.md:3477 msgid "Due to the way we manage cronjobs now, you can no longer configure the schedule they're invoked at." msgstr "" -#: ../../../CHANGELOG.md:3421 +#: ../../../CHANGELOG.md:3479 msgid "If you were previously using `matrix_ssl_lets_encrypt_renew_cron_time_definition` or `matrix_nginx_proxy_reload_cron_time_definition` to set a custom schedule, you should note that these variables don't affect anything anymore." msgstr "" -#: ../../../CHANGELOG.md:3424 +#: ../../../CHANGELOG.md:3482 msgid "If you miss this functionality, please [open an Issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/new) and let us know about your use case!" msgstr "" -#: ../../../CHANGELOG.md:3427 +#: ../../../CHANGELOG.md:3485 msgid "2018-12-23" msgstr "" -#: ../../../CHANGELOG.md:3429 +#: ../../../CHANGELOG.md:3487 msgid "(BC Break) More SSL certificate retrieval methods" msgstr "" -#: ../../../CHANGELOG.md:3431 +#: ../../../CHANGELOG.md:3489 msgid "The playbook now lets you decide between 3 different SSL certificate retrieval methods:" msgstr "" -#: ../../../CHANGELOG.md:3432 +#: ../../../CHANGELOG.md:3490 msgid "(default) obtaining free SSL certificates from Let's Encrypt" msgstr "" -#: ../../../CHANGELOG.md:3433 +#: ../../../CHANGELOG.md:3491 msgid "generating self-signed SSL certificates" msgstr "" -#: ../../../CHANGELOG.md:3434 +#: ../../../CHANGELOG.md:3492 msgid "managing SSL certificates manually" msgstr "" -#: ../../../CHANGELOG.md:3436 +#: ../../../CHANGELOG.md:3494 msgid "Learn more in [Adjusting SSL certificate retrieval](docs/configuring-playbook-ssl-certificates.md)." msgstr "" -#: ../../../CHANGELOG.md:3438 +#: ../../../CHANGELOG.md:3496 msgid "For people who use Let's Encrypt (mostly everyone, since it's the default), you'll also have to rename a variable in your configuration:" msgstr "" -#: ../../../CHANGELOG.md:3440 +#: ../../../CHANGELOG.md:3498 msgid "before: `host_specific_matrix_ssl_support_email`" msgstr "" -#: ../../../CHANGELOG.md:3441 +#: ../../../CHANGELOG.md:3499 msgid "after: `host_specific_matrix_ssl_lets_encrypt_support_email`" msgstr "" -#: ../../../CHANGELOG.md:3443 +#: ../../../CHANGELOG.md:3501 msgid "(BC Break) mxisd upgrade with multiple base DN support" msgstr "" -#: ../../../CHANGELOG.md:3445 +#: ../../../CHANGELOG.md:3503 msgid "mxisd has bee upgraded to [version 1.2.2](https://github.com/kamax-matrix/mxisd/releases/tag/v1.2.2), which supports [multiple base DNs](https://github.com/kamax-matrix/mxisd/blob/v1.2.2/docs/stores/ldap.md#base)." msgstr "" -#: ../../../CHANGELOG.md:3447 +#: ../../../CHANGELOG.md:3505 msgid "If you were configuring this playbook's `matrix_mxisd_ldap_connection_baseDn` variable until now (a string containing a single base DN), you'll need to change to configuring the `matrix_mxisd_ldap_connection_baseDns` variable (an array containing multiple base DNs)." msgstr "" -#: ../../../CHANGELOG.md:3449 +#: ../../../CHANGELOG.md:3507 msgid "Example change:" msgstr "" -#: ../../../CHANGELOG.md:3451 +#: ../../../CHANGELOG.md:3509 msgid "before: `matrix_mxisd_ldap_connection_baseDn: OU=Users,DC=example,DC=org`" msgstr "" -#: ../../../CHANGELOG.md:3452 +#: ../../../CHANGELOG.md:3510 msgid "after: `matrix_mxisd_ldap_connection_baseDns: ['OU=Users,DC=example,DC=org']`" msgstr "" -#: ../../../CHANGELOG.md:3455 +#: ../../../CHANGELOG.md:3513 msgid "2018-12-21" msgstr "" -#: ../../../CHANGELOG.md:3457 +#: ../../../CHANGELOG.md:3515 msgid "Synapse 0.34.0 and Python 3" msgstr "" -#: ../../../CHANGELOG.md:3459 +#: ../../../CHANGELOG.md:3517 msgid "Synapse has been upgraded to 0.34.0 and now uses Python 3. Based on feedback from others, running Synapse on Python 3 is supposed to decrease memory usage significantly (~2x)." msgstr "" -#: ../../../CHANGELOG.md:3462 +#: ../../../CHANGELOG.md:3520 msgid "2018-12-12" msgstr "" -#: ../../../CHANGELOG.md:3464 +#: ../../../CHANGELOG.md:3522 msgid "Riot homepage customization" msgstr "" -#: ../../../CHANGELOG.md:3466 +#: ../../../CHANGELOG.md:3524 msgid "You can now customize some parts of the Riot homepage (or even completely replace it with your own custom page). See the `matrix_riot_web_homepage_` variables in `roles/custom/matrix-riot-web/defaults/main.yml`." msgstr "" -#: ../../../CHANGELOG.md:3469 +#: ../../../CHANGELOG.md:3527 msgid "2018-12-04" msgstr "" -#: ../../../CHANGELOG.md:3471 +#: ../../../CHANGELOG.md:3529 msgid "mxisd extensibility" msgstr "" -#: ../../../CHANGELOG.md:3473 +#: ../../../CHANGELOG.md:3531 msgid "The [LDAP identity store for mxisd](https://github.com/kamax-matrix/mxisd/blob/master/docs/stores/ldap.md) can now be configured easily using playbook variables (see the `matrix_mxisd_ldap_` variables in `roles/custom/matrix-server/defaults/main.yml`)." msgstr "" -#: ../../../CHANGELOG.md:3476 +#: ../../../CHANGELOG.md:3534 msgid "2018-11-28" msgstr "" -#: ../../../CHANGELOG.md:3478 +#: ../../../CHANGELOG.md:3536 msgid "More scripts" msgstr "" -#: ../../../CHANGELOG.md:3480 +#: ../../../CHANGELOG.md:3538 msgid "matrix-remove-all allows to uninstall everything with a single command" msgstr "" -#: ../../../CHANGELOG.md:3481 +#: ../../../CHANGELOG.md:3539 msgid "matrix-make-user-admin allows to upgrade a user's privileges" msgstr "" -#: ../../../CHANGELOG.md:3483 +#: ../../../CHANGELOG.md:3541 msgid "LDAP auth support via matrix-synapse-ldap3" msgstr "" -#: ../../../CHANGELOG.md:3485 +#: ../../../CHANGELOG.md:3543 msgid "The playbook can now install and configure [LDAP auth support](https://github.com/matrix-org/matrix-synapse-ldap3) for you." msgstr "" -#: ../../../CHANGELOG.md:3487 +#: ../../../CHANGELOG.md:3545 msgid "Additional details are available in [Setting up the LDAP authentication password provider module](docs/configuring-playbook-ldap-auth.md)." msgstr "" -#: ../../../CHANGELOG.md:3490 +#: ../../../CHANGELOG.md:3548 msgid "2018-11-23" msgstr "" -#: ../../../CHANGELOG.md:3492 +#: ../../../CHANGELOG.md:3550 msgid "Support for controlling public registration and room auto-join" msgstr "" -#: ../../../CHANGELOG.md:3494 +#: ../../../CHANGELOG.md:3552 msgid "The playbook now lets you enable public registration for users (controlled via `matrix_synapse_enable_registration`). By default, public registration is forbidden." msgstr "" -#: ../../../CHANGELOG.md:3496 +#: ../../../CHANGELOG.md:3554 msgid "You can also make people automatically get auto-joined to rooms (controlled via `matrix_synapse_auto_join_rooms`)." msgstr "" -#: ../../../CHANGELOG.md:3498 +#: ../../../CHANGELOG.md:3556 msgid "Support for changing the welcome user ID (welcome bot)" msgstr "" -#: ../../../CHANGELOG.md:3500 +#: ../../../CHANGELOG.md:3558 msgid "By default, `@riot-bot:matrix.org` is used to welcome newly registered users. This can be changed to something else (or disabled) via the new `matrix_riot_web_welcome_user_id` variable." msgstr "" -#: ../../../CHANGELOG.md:3503 +#: ../../../CHANGELOG.md:3561 msgid "2018-11-14" msgstr "" -#: ../../../CHANGELOG.md:3505 +#: ../../../CHANGELOG.md:3563 msgid "Ability to set Synapse log levels" msgstr "" -#: ../../../CHANGELOG.md:3507 +#: ../../../CHANGELOG.md:3565 msgid "The playbook now allows you to set the log levels used by Synapse. The default logging levels remain the same." msgstr "" -#: ../../../CHANGELOG.md:3509 +#: ../../../CHANGELOG.md:3567 msgid "You can now override following variables with any of the supported log levels listed here: https://docs.python.org/3/library/logging.html#logging-levels" msgstr "" -#: ../../../CHANGELOG.md:3518 +#: ../../../CHANGELOG.md:3576 msgid "2018-11-03" msgstr "" -#: ../../../CHANGELOG.md:3520 +#: ../../../CHANGELOG.md:3578 msgid "Customize parts of Riot's config" msgstr "" -#: ../../../CHANGELOG.md:3522 +#: ../../../CHANGELOG.md:3580 msgid "You can now customize some parts of Riot's `config.json`. These playbook variables, with these default values, have been added:" msgstr "" -#: ../../../CHANGELOG.md:3533 +#: ../../../CHANGELOG.md:3591 msgid "This now allows you use a custom integration manager like [Dimension](https://dimension.t2bot.io). For example, if you wish to use the Dimension instance hosted at dimension.t2bot.io, you can set the following in your vars.yml file:" msgstr "" -#: ../../../CHANGELOG.md:3542 +#: ../../../CHANGELOG.md:3600 msgid "SSL protocols used to serve Riot and Synapse" msgstr "" -#: ../../../CHANGELOG.md:3544 +#: ../../../CHANGELOG.md:3602 msgid "There's now a new `matrix_nginx_proxy_ssl_protocols` playbook variable, which controls the SSL protocols used to serve Riot and Synapse. Its default value is `TLSv1.1 TLSv1.2`. This playbook previously used `TLSv1 TLSv1.1 TLSv1.2` to serve Riot and Synapse." msgstr "" -#: ../../../CHANGELOG.md:3546 +#: ../../../CHANGELOG.md:3604 msgid "You may wish to reenable TLSv1 if you need to access Riot in older browsers." msgstr "" -#: ../../../CHANGELOG.md:3548 +#: ../../../CHANGELOG.md:3606 msgid "Note: Currently the dockerized nginx doesn't support TLSv1.3. See https://github.com/nginxinc/docker-nginx/issues/190 for more details." msgstr "" -#: ../../../CHANGELOG.md:3551 +#: ../../../CHANGELOG.md:3609 msgid "2018-11-01" msgstr "" -#: ../../../CHANGELOG.md:3553 +#: ../../../CHANGELOG.md:3611 msgid "Postgres 11 support" msgstr "" -#: ../../../CHANGELOG.md:3555 +#: ../../../CHANGELOG.md:3613 msgid "The playbook now installs [Postgres 11](https://www.postgresql.org/about/news/1894/) by default." msgstr "" -#: ../../../CHANGELOG.md:3557 +#: ../../../CHANGELOG.md:3615 msgid "If you have have an existing setup, it's likely running on an older Postgres version (9.x or 10.x). You can easily upgrade by following the [upgrading PostgreSQL guide](docs/maintenance-postgres.md#upgrading-postgresql)." msgstr "" -#: ../../../CHANGELOG.md:3559 ../../../CHANGELOG.md:3646 -#: ../../../CHANGELOG.md:3766 +#: ../../../CHANGELOG.md:3617 ../../../CHANGELOG.md:3704 +#: ../../../CHANGELOG.md:3824 msgid "(BC Break) Renaming playbook variables" msgstr "" -#: ../../../CHANGELOG.md:3561 +#: ../../../CHANGELOG.md:3619 msgid "Due to the large amount of features added to this playbook lately, to keep things manageable we've had to reorganize its configuration variables a bit." msgstr "" -#: ../../../CHANGELOG.md:3565 +#: ../../../CHANGELOG.md:3623 msgid "from `matrix_docker_image_mxisd` to `matrix_mxisd_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3566 +#: ../../../CHANGELOG.md:3624 msgid "from `matrix_docker_image_mautrix_telegram` to `matrix_mautrix_telegram_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3567 +#: ../../../CHANGELOG.md:3625 msgid "from `matrix_docker_image_mautrix_whatsapp` to `matrix_mautrix_whatsapp_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3568 +#: ../../../CHANGELOG.md:3626 msgid "from `matrix_docker_image_mailer` to `matrix_mailer_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3569 +#: ../../../CHANGELOG.md:3627 msgid "from `matrix_docker_image_coturn` to `matrix_coturn_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3570 +#: ../../../CHANGELOG.md:3628 msgid "from `matrix_docker_image_goofys` to `matrix_s3_goofys_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3571 +#: ../../../CHANGELOG.md:3629 msgid "from `matrix_docker_image_riot` to `matrix_riot_web_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3572 +#: ../../../CHANGELOG.md:3630 msgid "from `matrix_docker_image_nginx` to `matrix_nginx_proxy_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3573 +#: ../../../CHANGELOG.md:3631 msgid "from `matrix_docker_image_synapse` to `matrix_synapse_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3574 +#: ../../../CHANGELOG.md:3632 msgid "from `matrix_docker_image_postgres_v9` to `matrix_postgres_docker_image_v9`" msgstr "" -#: ../../../CHANGELOG.md:3575 +#: ../../../CHANGELOG.md:3633 msgid "from `matrix_docker_image_postgres_v10` to `matrix_postgres_docker_image_v10`" msgstr "" -#: ../../../CHANGELOG.md:3576 +#: ../../../CHANGELOG.md:3634 msgid "from `matrix_docker_image_postgres_latest` to `matrix_postgres_docker_image_latest`" msgstr "" -#: ../../../CHANGELOG.md:3579 +#: ../../../CHANGELOG.md:3637 msgid "2018-10-26" msgstr "" -#: ../../../CHANGELOG.md:3581 +#: ../../../CHANGELOG.md:3639 msgid "Mautrix Whatsapp bridging support" msgstr "" -#: ../../../CHANGELOG.md:3583 +#: ../../../CHANGELOG.md:3641 msgid "The playbook now supports bridging with [Whatsapp](https://www.whatsapp.com/) by installing the [mautrix-whatsapp](https://github.com/tulir/mautrix-whatsapp) bridge. This playbook functionality is available thanks to [@izissise](https://github.com/izissise)." msgstr "" -#: ../../../CHANGELOG.md:3585 +#: ../../../CHANGELOG.md:3643 msgid "Additional details are available in [Setting up Mautrix Whatsapp bridging](docs/configuring-playbook-bridge-mautrix-whatsapp.md)." msgstr "" -#: ../../../CHANGELOG.md:3588 +#: ../../../CHANGELOG.md:3646 msgid "2018-10-25" msgstr "" -#: ../../../CHANGELOG.md:3590 +#: ../../../CHANGELOG.md:3648 msgid "Support for controlling Matrix federation" msgstr "" -#: ../../../CHANGELOG.md:3592 +#: ../../../CHANGELOG.md:3650 msgid "The playbook can now help you with [Controlling Matrix federation](docs/configuring-playbook-federation), should you wish to run a more private (isolated) server." msgstr "" -#: ../../../CHANGELOG.md:3595 +#: ../../../CHANGELOG.md:3653 msgid "2018-10-24" msgstr "" -#: ../../../CHANGELOG.md:3597 +#: ../../../CHANGELOG.md:3655 msgid "Disabling riot-web guests" msgstr "" -#: ../../../CHANGELOG.md:3599 +#: ../../../CHANGELOG.md:3657 msgid "From now on, Riot's configuration setting `disable_guests` would be set to `true`. The homeserver was rejecting guests anyway, so this is just a cosmetic change affecting Riot's UI." msgstr "" -#: ../../../CHANGELOG.md:3602 +#: ../../../CHANGELOG.md:3660 msgid "2018-10-21" msgstr "" -#: ../../../CHANGELOG.md:3604 +#: ../../../CHANGELOG.md:3662 msgid "Self-check maintenance command" msgstr "" -#: ../../../CHANGELOG.md:3606 +#: ../../../CHANGELOG.md:3664 msgid "The playbook can now [check if services are configured correctly](docs/maintenance-checking-services.md)." msgstr "" -#: ../../../CHANGELOG.md:3609 +#: ../../../CHANGELOG.md:3667 msgid "2018-10-05" msgstr "" -#: ../../../CHANGELOG.md:3611 +#: ../../../CHANGELOG.md:3669 msgid "Presence tracking made configurable" msgstr "" -#: ../../../CHANGELOG.md:3613 -msgid "The playbook can now enable/disable user presence-status tracking in Synapse, through the playbook's `matrix_synapse_use_presence` variable (having a default value of `true` - enabled)." +#: ../../../CHANGELOG.md:3671 +msgid "The playbook can now enable/disable user presence-status tracking in Synapse, through the playbook's `matrix_synapse_use_presence` variable (having a default value of `true` — enabled)." msgstr "" -#: ../../../CHANGELOG.md:3615 +#: ../../../CHANGELOG.md:3673 msgid "If users participate in large rooms with many other servers, disabling presence will decrease server load significantly." msgstr "" -#: ../../../CHANGELOG.md:3618 +#: ../../../CHANGELOG.md:3676 msgid "2018-09-27" msgstr "" -#: ../../../CHANGELOG.md:3620 +#: ../../../CHANGELOG.md:3678 msgid "Synapse Cache Factor made configurable" msgstr "" -#: ../../../CHANGELOG.md:3622 +#: ../../../CHANGELOG.md:3680 msgid "The playbook now makes the Synapse cache factor configurable, through the playbook's `matrix_synapse_cache_factor` variable (having a default value of `0.5`)." msgstr "" -#: ../../../CHANGELOG.md:3624 +#: ../../../CHANGELOG.md:3682 msgid "Changing that value allows you to potentially decrease RAM usage or to increase performance by caching more stuff. Some information on it is available here: https://github.com/element-hq/synapse#help-synapse-eats-all-my-ram" msgstr "" -#: ../../../CHANGELOG.md:3627 +#: ../../../CHANGELOG.md:3685 msgid "2018-09-26" msgstr "" -#: ../../../CHANGELOG.md:3629 +#: ../../../CHANGELOG.md:3687 msgid "Disabling Docker container logging" msgstr "" -#: ../../../CHANGELOG.md:3631 +#: ../../../CHANGELOG.md:3689 msgid "`--log-driver=none` is used for all Docker containers now." msgstr "" -#: ../../../CHANGELOG.md:3633 -msgid "All these containers are started through systemd anyway and get logged in journald, so there's no need for Docker to be logging the same thing using the default `json-file` driver. Doing that was growing `/var/lib/docker/containers/..` infinitely until service/container restart." +#: ../../../CHANGELOG.md:3691 +msgid "All these containers are started through systemd anyway and get logged in journald, so there's no need for Docker to be logging the same thing using the default `json-file` driver. Doing that was growing `/var/lib/docker/containers/…` infinitely until service/container restart." msgstr "" -#: ../../../CHANGELOG.md:3635 +#: ../../../CHANGELOG.md:3693 msgid "As a result of this, things like `docker logs matrix-synapse` won't work anymore. `journalctl -u matrix-synapse` is how one can see the logs." msgstr "" -#: ../../../CHANGELOG.md:3638 +#: ../../../CHANGELOG.md:3696 msgid "2018-09-17" msgstr "" -#: ../../../CHANGELOG.md:3640 +#: ../../../CHANGELOG.md:3698 msgid "Service discovery support" msgstr "" -#: ../../../CHANGELOG.md:3642 +#: ../../../CHANGELOG.md:3700 msgid "The playbook now helps you set up [service discovery](https://matrix.org/docs/spec/client_server/r0.4.0.html#server-discovery) using a `/.well-known/matrix/client` file." msgstr "" -#: ../../../CHANGELOG.md:3644 +#: ../../../CHANGELOG.md:3702 msgid "Additional details are available in [Configuring service discovery via .well-known](docs/configuring-well-known.md)." msgstr "" -#: ../../../CHANGELOG.md:3650 +#: ../../../CHANGELOG.md:3708 msgid "from `matrix_nginx_riot_web_data_path` to `matrix_riot_web_data_path`" msgstr "" -#: ../../../CHANGELOG.md:3651 +#: ../../../CHANGELOG.md:3709 msgid "from `matrix_riot_web_default_identity_server_url` to `matrix_identity_server_url`" msgstr "" -#: ../../../CHANGELOG.md:3654 +#: ../../../CHANGELOG.md:3712 msgid "2018-09-07" msgstr "" -#: ../../../CHANGELOG.md:3656 +#: ../../../CHANGELOG.md:3714 msgid "Mautrix Telegram bridging support" msgstr "" -#: ../../../CHANGELOG.md:3658 +#: ../../../CHANGELOG.md:3716 msgid "The playbook now supports bridging with [Telegram](https://telegram.org/) by installing the [mautrix-telegram](https://github.com/tulir/mautrix-telegram) bridge. This playbook functionality is available thanks to [@izissise](https://github.com/izissise)." msgstr "" -#: ../../../CHANGELOG.md:3660 +#: ../../../CHANGELOG.md:3718 msgid "Additional details are available in [Setting up Mautrix Telegram bridging](docs/configuring-playbook-bridge-mautrix-telegram.md)." msgstr "" -#: ../../../CHANGELOG.md:3662 +#: ../../../CHANGELOG.md:3720 msgid "Events cache size increase and configurability for Matrix Synapse" msgstr "" -#: ../../../CHANGELOG.md:3664 +#: ../../../CHANGELOG.md:3722 msgid "The playbook now lets you configure Matrix Synapse's `event_cache_size` configuration via the `matrix_synapse_event_cache_size` playbook variable." msgstr "" -#: ../../../CHANGELOG.md:3666 +#: ../../../CHANGELOG.md:3724 msgid "Previously, this value was hardcoded to `\"10K\"`. From now on, a more reasonable default of `\"100K\"` is used." msgstr "" -#: ../../../CHANGELOG.md:3668 +#: ../../../CHANGELOG.md:3726 msgid "Password-peppering support for Matrix Synapse" msgstr "" -#: ../../../CHANGELOG.md:3670 +#: ../../../CHANGELOG.md:3728 msgid "The playbook now supports enabling password-peppering for increased security in Matrix Synapse via the `matrix_synapse_password_config_pepper` playbook variable. Using a password pepper is disabled by default (just like it used to be before this playbook variable got introduced) and is not to be enabled/disabled after initial setup, as that would invalidate all existing passwords." msgstr "" -#: ../../../CHANGELOG.md:3672 +#: ../../../CHANGELOG.md:3730 msgid "Statistics-reporting support for Matrix Synapse" msgstr "" -#: ../../../CHANGELOG.md:3674 +#: ../../../CHANGELOG.md:3732 msgid "There's now a new `matrix_synapse_report_stats` playbook variable, which controls the `report_stats` configuration option for Matrix Synapse. It defaults to `false`, so no change is required to retain your privacy." msgstr "" -#: ../../../CHANGELOG.md:3676 +#: ../../../CHANGELOG.md:3734 msgid "If you'd like to start reporting statistics about your homeserver (things like number of users, number of messages sent, uptime, load, etc.) to matrix.org, you can turn on stats reporting." msgstr "" -#: ../../../CHANGELOG.md:3679 +#: ../../../CHANGELOG.md:3737 msgid "2018-08-29" msgstr "" -#: ../../../CHANGELOG.md:3681 +#: ../../../CHANGELOG.md:3739 msgid "Changing the way SSL certificates are retrieved" msgstr "" -#: ../../../CHANGELOG.md:3683 +#: ../../../CHANGELOG.md:3741 msgid "We've been using [acmetool](https://github.com/hlandau/acme) (with the [willwill/acme-docker](https://hub.docker.com/r/willwill/acme-docker/) Docker image) until now." msgstr "" -#: ../../../CHANGELOG.md:3685 +#: ../../../CHANGELOG.md:3743 msgid "Due to the Docker image being deprecated, and things looking bleak for acmetool's support of the newer ACME v2 API endpoint, we've switched to using [certbot](https://certbot.eff.org/) (with the [certbot/certbot](https://hub.docker.com/r/certbot/certbot/) Docker image)." msgstr "" -#: ../../../CHANGELOG.md:3687 +#: ../../../CHANGELOG.md:3745 msgid "Simply re-running the playbook will retrieve new certificates (via certbot) for you. To ensure you don't leave any old files behind, though, you'd better do this:" msgstr "" -#: ../../../CHANGELOG.md:3689 +#: ../../../CHANGELOG.md:3747 msgid "`systemctl stop 'matrix*'`" msgstr "" -#: ../../../CHANGELOG.md:3690 +#: ../../../CHANGELOG.md:3748 msgid "stop your custom webserver, if you're running one (only affects you if you've installed with `matrix_nginx_proxy_enabled: false`)" msgstr "" -#: ../../../CHANGELOG.md:3691 +#: ../../../CHANGELOG.md:3749 msgid "`mv /matrix/ssl /matrix/ssl-acmetool-delete-later`" msgstr "" -#: ../../../CHANGELOG.md:3692 +#: ../../../CHANGELOG.md:3750 msgid "re-run the playbook's [installation](docs/installing.md)" msgstr "" -#: ../../../CHANGELOG.md:3693 +#: ../../../CHANGELOG.md:3751 msgid "possibly delete `/matrix/ssl-acmetool-delete-later`" msgstr "" -#: ../../../CHANGELOG.md:3696 +#: ../../../CHANGELOG.md:3754 msgid "2018-08-21" msgstr "" -#: ../../../CHANGELOG.md:3698 +#: ../../../CHANGELOG.md:3756 msgid "Matrix Corporal support" msgstr "" -#: ../../../CHANGELOG.md:3700 +#: ../../../CHANGELOG.md:3758 msgid "The playbook can now install and configure [matrix-corporal](https://github.com/devture/matrix-corporal) for you." msgstr "" -#: ../../../CHANGELOG.md:3702 +#: ../../../CHANGELOG.md:3760 msgid "Additional details are available in [Setting up Matrix Corporal](docs/configuring-playbook-matrix-corporal.md)." msgstr "" -#: ../../../CHANGELOG.md:3705 +#: ../../../CHANGELOG.md:3763 msgid "2018-08-20" msgstr "" -#: ../../../CHANGELOG.md:3707 +#: ../../../CHANGELOG.md:3765 msgid "Matrix Synapse rate limit control variables" msgstr "" -#: ../../../CHANGELOG.md:3709 +#: ../../../CHANGELOG.md:3767 msgid "The following new variables can now be configured to control Matrix Synapse's rate-limiting (default values are shown below)." msgstr "" -#: ../../../CHANGELOG.md:3716 +#: ../../../CHANGELOG.md:3774 msgid "Shared Secret Auth support via matrix-synapse-shared-secret-auth" msgstr "" -#: ../../../CHANGELOG.md:3718 +#: ../../../CHANGELOG.md:3776 msgid "The playbook can now install and configure [matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) for you." msgstr "" -#: ../../../CHANGELOG.md:3720 +#: ../../../CHANGELOG.md:3778 msgid "Additional details are available in [Setting up the Shared Secret Auth password provider module](docs/configuring-playbook-shared-secret-auth.md)." msgstr "" -#: ../../../CHANGELOG.md:3723 +#: ../../../CHANGELOG.md:3781 msgid "2018-08-17" msgstr "" -#: ../../../CHANGELOG.md:3725 +#: ../../../CHANGELOG.md:3783 msgid "REST auth support via matrix-synapse-rest-auth" msgstr "" -#: ../../../CHANGELOG.md:3727 +#: ../../../CHANGELOG.md:3785 msgid "The playbook can now install and configure [matrix-synapse-rest-auth](https://github.com/kamax-io/matrix-synapse-rest-auth) for you." msgstr "" -#: ../../../CHANGELOG.md:3729 +#: ../../../CHANGELOG.md:3787 msgid "Additional details are available in [Setting up the REST authentication password provider module](docs/configuring-playbook-rest-auth.md)." msgstr "" -#: ../../../CHANGELOG.md:3731 +#: ../../../CHANGELOG.md:3789 msgid "Compression improvements" msgstr "" -#: ../../../CHANGELOG.md:3733 +#: ../../../CHANGELOG.md:3791 msgid "Shifted Matrix Synapse compression from happening in the Matrix Synapse, to happening in the nginx proxy that's in front of it." msgstr "" -#: ../../../CHANGELOG.md:3736 +#: ../../../CHANGELOG.md:3794 msgid "Additionally, `riot-web` also gets compressed now (in the nginx proxy), which drops the initial page load's size from 5.31MB to 1.86MB." msgstr "" -#: ../../../CHANGELOG.md:3739 +#: ../../../CHANGELOG.md:3797 msgid "Disabling some unnecessary Synapse services" msgstr "" -#: ../../../CHANGELOG.md:3741 +#: ../../../CHANGELOG.md:3799 msgid "The following services are not necessary, so they have been disabled:" msgstr "" -#: ../../../CHANGELOG.md:3742 +#: ../../../CHANGELOG.md:3800 msgid "on the federation port (8448): the `client` service" msgstr "" -#: ../../../CHANGELOG.md:3743 +#: ../../../CHANGELOG.md:3801 msgid "on the http port (8008, exposed over 443): the old Angular `webclient` and the `federation` service" msgstr "" -#: ../../../CHANGELOG.md:3745 +#: ../../../CHANGELOG.md:3803 msgid "Federation runs only on the federation port (8448) now. The Client APIs run only on the http port (8008) now." msgstr "" -#: ../../../CHANGELOG.md:3748 +#: ../../../CHANGELOG.md:3806 msgid "2018-08-15" msgstr "" -#: ../../../CHANGELOG.md:3750 +#: ../../../CHANGELOG.md:3808 msgid "mxisd Identity Server support" msgstr "" -#: ../../../CHANGELOG.md:3752 +#: ../../../CHANGELOG.md:3810 msgid "The playbook now sets up an [mxisd](https://github.com/kamax-io/mxisd) Identity Server for you by default. Additional details are available in [Setting up ma1sd Identity Server](docs/configuring-playbook-mxisd.md)." msgstr "" -#: ../../../CHANGELOG.md:3755 +#: ../../../CHANGELOG.md:3813 msgid "2018-08-14" msgstr "" -#: ../../../CHANGELOG.md:3757 +#: ../../../CHANGELOG.md:3815 msgid "Email-sending support" msgstr "" -#: ../../../CHANGELOG.md:3759 +#: ../../../CHANGELOG.md:3817 msgid "The playbook now configures an email-sending service (postfix) by default. Additional details are available in [Adjusting email-sending settings](docs/configuring-playbook-email.md)." msgstr "" -#: ../../../CHANGELOG.md:3761 +#: ../../../CHANGELOG.md:3819 msgid "With this, Matrix Synapse is able to send email notifications for missed messages, etc." msgstr "" -#: ../../../CHANGELOG.md:3764 +#: ../../../CHANGELOG.md:3822 msgid "2018-08-08" msgstr "" -#: ../../../CHANGELOG.md:3770 +#: ../../../CHANGELOG.md:3828 msgid "from `matrix_max_upload_size_mb` to `matrix_synapse_max_upload_size_mb`" msgstr "" -#: ../../../CHANGELOG.md:3771 +#: ../../../CHANGELOG.md:3829 msgid "from `matrix_max_log_file_size_mb` to `matrix_synapse_max_log_file_size_mb`" msgstr "" -#: ../../../CHANGELOG.md:3772 +#: ../../../CHANGELOG.md:3830 msgid "from `matrix_max_log_files_count` to `matrix_synapse_max_log_files_count`" msgstr "" -#: ../../../CHANGELOG.md:3773 +#: ../../../CHANGELOG.md:3831 msgid "from `docker_matrix_image` to `matrix_docker_image_synapse`" msgstr "" -#: ../../../CHANGELOG.md:3774 +#: ../../../CHANGELOG.md:3832 msgid "from `docker_nginx_image` to `matrix_docker_image_nginx`" msgstr "" -#: ../../../CHANGELOG.md:3775 +#: ../../../CHANGELOG.md:3833 msgid "from `docker_riot_image` to `matrix_docker_image_riot`" msgstr "" -#: ../../../CHANGELOG.md:3776 +#: ../../../CHANGELOG.md:3834 msgid "from `docker_goofys_image` to `matrix_docker_image_goofys`" msgstr "" -#: ../../../CHANGELOG.md:3777 +#: ../../../CHANGELOG.md:3835 msgid "from `docker_coturn_image` to `matrix_docker_image_coturn`" msgstr "" -#: ../../../CHANGELOG.md:3779 +#: ../../../CHANGELOG.md:3837 msgid "If you're overriding any of them in your `vars.yml` file, you'd need to change to the new names." msgstr "" -#: ../../../CHANGELOG.md:3781 +#: ../../../CHANGELOG.md:3839 msgid "Renaming Ansible playbook tag" msgstr "" -#: ../../../CHANGELOG.md:3783 +#: ../../../CHANGELOG.md:3841 msgid "The command for executing the whole playbook has changed. The `setup-main` tag got renamed to `setup-all`." msgstr "" -#: ../../../CHANGELOG.md:3785 +#: ../../../CHANGELOG.md:3843 msgid "Docker container linking" msgstr "" -#: ../../../CHANGELOG.md:3787 +#: ../../../CHANGELOG.md:3845 msgid "Changed the way the Docker containers are linked together. The ones that need to communicate with others operate in a `matrix` network now and not in the default bridge network." msgstr "" diff --git a/i18n/locales/bg/LC_MESSAGES/README.po b/i18n/locales/bg/LC_MESSAGES/README.po index 653a76b8b..9518b2d69 100644 --- a/i18n/locales/bg/LC_MESSAGES/README.po +++ b/i18n/locales/bg/LC_MESSAGES/README.po @@ -8,19 +8,18 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: matrix-docker-ansible-deploy\n" +"Project-Id-Version: matrix-docker-ansible-deploy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-20 09:53+0200\n" +"POT-Creation-Date: 2025-01-27 09:54+0200\n" "PO-Revision-Date: 2024-12-20 14:56+0200\n" "Last-Translator: \n" -"Language-Team: bg \n" "Language: bg\n" +"Language-Team: bg \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" -"X-Generator: Poedit 3.4.2\n" #: ../../../README.md:1 msgid "[![Support room on Matrix](https://img.shields.io/matrix/matrix-docker-ansible-deploy:devture.com.svg?label=%23matrix-docker-ansible-deploy%3Adevture.com&logo=matrix&style=for-the-badge&server_fqdn=matrix.devture.com)](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) [![donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/s.pantaleev/donate)" @@ -179,7 +178,21 @@ msgid "[Link](docs/configuring-playbook-conduit.md)" msgstr "[Връзка](docs/configuring-playbook-conduit.md)" #: ../../../README.md -msgid "[Dendrite](https://github.com/matrix-org/dendrite)" +#, fuzzy +msgid "[conduwuit](https://conduwuit.puppyirl.gay/)" +msgstr "[Conduit](https://conduit.rs)" + +#: ../../../README.md +msgid "Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit is a fork of Conduit." +msgstr "" + +#: ../../../README.md +#, fuzzy +msgid "[Link](docs/configuring-playbook-conduwuit.md)" +msgstr "[Връзка](docs/configuring-playbook-conduit.md)" + +#: ../../../README.md +msgid "[Dendrite](https://github.com/element-hq/dendrite)" msgstr "" #: ../../../README.md @@ -190,11 +203,11 @@ msgstr "" msgid "[Link](docs/configuring-playbook-dendrite.md)" msgstr "" -#: ../../../README.md:57 +#: ../../../README.md:58 msgid "Clients" msgstr "Клиенти" -#: ../../../README.md:59 +#: ../../../README.md:60 msgid "Web clients for Matrix that you can host on your own domains." msgstr "" @@ -246,11 +259,11 @@ msgstr "" msgid "[Link](docs/configuring-playbook-client-schildichat-web.md)" msgstr "" -#: ../../../README.md:68 +#: ../../../README.md:69 msgid "Server Components" msgstr "" -#: ../../../README.md:70 +#: ../../../README.md:71 msgid "Services that run on the server to make the various parts of your installation work." msgstr "" @@ -267,7 +280,7 @@ msgid "[Link](docs/configuring-playbook-external-postgres.md)" msgstr "" #: ../../../README.md -msgid "[Coturn](https://github.com/coturn/coturn)" +msgid "[coturn](https://github.com/coturn/coturn)" msgstr "" #: ../../../README.md @@ -338,11 +351,11 @@ msgstr "" msgid "[Link](docs/configuring-playbook-dynamic-dns.md)" msgstr "[Връзка](docs/configuring-playbook-dynamic-dns.md)" -#: ../../../README.md:82 +#: ../../../README.md:83 msgid "Authentication" msgstr "" -#: ../../../README.md:84 +#: ../../../README.md:85 msgid "Extend and modify how users are authenticated on your homeserver." msgstr "" @@ -430,11 +443,11 @@ msgstr "" msgid "[Link](docs/configuring-playbook-synapse-simple-antispam.md)" msgstr "" -#: ../../../README.md:96 +#: ../../../README.md:97 msgid "File Storage" msgstr "" -#: ../../../README.md:98 +#: ../../../README.md:99 msgid "Use alternative file storage to the default `media_store` folder." msgstr "" @@ -470,11 +483,11 @@ msgstr "" msgid "[Link](docs/configuring-playbook-matrix-media-repo.md)" msgstr "" -#: ../../../README.md:106 +#: ../../../README.md:107 msgid "Bridges" msgstr "" -#: ../../../README.md:108 +#: ../../../README.md:109 msgid "Bridges can be used to connect your Matrix installation with third-party communication networks." msgstr "" @@ -782,18 +795,6 @@ msgstr "" msgid "[Link](docs/configuring-playbook-bridge-mx-puppet-steam.md)" msgstr "" -#: ../../../README.md -msgid "[Email2Matrix](https://github.com/devture/email2matrix)" -msgstr "" - -#: ../../../README.md -msgid "Bridge for relaying emails to Matrix rooms" -msgstr "" - -#: ../../../README.md -msgid "[Link](docs/configuring-playbook-email2matrix.md)" -msgstr "" - #: ../../../README.md msgid "[Postmoogle](https://github.com/etkecc/postmoogle)" msgstr "" diff --git a/i18n/locales/bg/LC_MESSAGES/YEAR-IN-REVIEW.po b/i18n/locales/bg/LC_MESSAGES/YEAR-IN-REVIEW.po index 70d2e7f11..0c45bab0f 100644 --- a/i18n/locales/bg/LC_MESSAGES/YEAR-IN-REVIEW.po +++ b/i18n/locales/bg/LC_MESSAGES/YEAR-IN-REVIEW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-12-16 12:05+0900\n" +"POT-Creation-Date: 2025-01-27 09:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -150,7 +150,7 @@ msgid "With this configuration change in place, projects like [MatrixRooms.info] msgstr "" #: ../../../YEAR-IN-REVIEW.md:55 -msgid "On the **media side of things**, besides Jitsi getting better Matrix integration (via the aforementioned Matrix User Verification Service), we've also had some [Coturn security tightening](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-tightening-coturn-security-can-lead-to-connectivity-issues) as well as [performance optimizations](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#coturn-can-now-use-host-networking) for configurations exposing lots of network ports." +msgid "On the **media side of things**, besides Jitsi getting better Matrix integration (via the aforementioned Matrix User Verification Service), we've also had some [coturn security tightening](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-tightening-coturn-security-can-lead-to-connectivity-issues) as well as [performance optimizations](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#coturn-can-now-use-host-networking) for configurations exposing lots of network ports." msgstr "" #: ../../../YEAR-IN-REVIEW.md:57 @@ -182,7 +182,7 @@ msgid "Support for the following new **bridges** was added:" msgstr "" #: ../../../YEAR-IN-REVIEW.md:72 -msgid "[Postmoogle](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#postmoogle-email-bridge-support) for bi-directional email bridging, which supersedes my old and simplistic [email2matrix](https://github.com/devture/email2matrix) one-way bridge-bot" +msgid "[Postmoogle](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#postmoogle-email-bridge-support) for bi-directional email bridging, which supersedes my old and simplistic [Email2Matrix](https://github.com/devture/email2matrix) one-way bridge-bot" msgstr "" #: ../../../YEAR-IN-REVIEW.md:73 diff --git a/i18n/locales/bg/LC_MESSAGES/docs/README.po b/i18n/locales/bg/LC_MESSAGES/docs/README.po index 57112b8f3..e23b3a717 100644 --- a/i18n/locales/bg/LC_MESSAGES/docs/README.po +++ b/i18n/locales/bg/LC_MESSAGES/docs/README.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-16 12:05+0900\n" +"POT-Creation-Date: 2025-01-27 09:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: bg\n" @@ -70,35 +70,35 @@ msgid "You can check useful documentation for configuring components here: [Conf msgstr "" #: ../../../docs/README.md:30 -msgid "[Administration](configuring-playbook.md#administration) - services that help you in administrating and monitoring your Matrix installation" +msgid "[Administration](configuring-playbook.md#administration) — services that help you in administrating and monitoring your Matrix installation" msgstr "" #: ../../../docs/README.md:32 -msgid "[Authentication and user-related](configuring-playbook.md#authentication-and-user-related) - extend and modify how users are authenticated on your homeserver" +msgid "[Authentication and user-related](configuring-playbook.md#authentication-and-user-related) — extend and modify how users are authenticated on your homeserver" msgstr "" #: ../../../docs/README.md:34 -msgid "[Bots](configuring-playbook.md#bots) - bots provide various additional functionality to your installation" +msgid "[Bots](configuring-playbook.md#bots) — bots provide various additional functionality to your installation" msgstr "" #: ../../../docs/README.md:36 -msgid "[Bridges](configuring-playbook.md#bridging-other-networks) - bridges can be used to connect your Matrix installation with third-party communication networks" +msgid "[Bridges](configuring-playbook.md#bridging-other-networks) — bridges can be used to connect your Matrix installation with third-party communication networks" msgstr "" #: ../../../docs/README.md:38 -msgid "[Clients](configuring-playbook.md#clients) - web clients for Matrix that you can host on your own domains" +msgid "[Clients](configuring-playbook.md#clients) — web clients for Matrix that you can host on your own domains" msgstr "" #: ../../../docs/README.md:40 -msgid "[Core service adjustments](configuring-playbook.md#core-service-adjustments) - backbone of your Matrix system" +msgid "[Core service adjustments](configuring-playbook.md#core-service-adjustments) — backbone of your Matrix system" msgstr "" #: ../../../docs/README.md:42 -msgid "[File Storage](configuring-playbook.md#file-storage) - use alternative file storage to the default `media_store` folder" +msgid "[File Storage](configuring-playbook.md#file-storage) — use alternative file storage to the default `media_store` folder" msgstr "" #: ../../../docs/README.md:46 -msgid "[Other specialized services](configuring-playbook.md#other-specialized-services) - various services that don't fit any other categories" +msgid "[Other specialized services](configuring-playbook.md#other-specialized-services) — various services that don't fit any other categories" msgstr "" #: ../../../docs/README.md:48 @@ -134,7 +134,7 @@ msgid "Other documentation pages + # matrix-mautrix-meta-instagram This bridge role is derived from the matrix-mautrix-meta-messenger Ansible role via automatic changes (see `just rebuild-mautrix-meta-instagram` or `bin/rebuild-mautrix-meta-instagram.sh`). diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-meta-instagram/defaults/main.yml index 848e86bde..85b1cce2a 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-meta is a Matrix <-> Facebook/Messenger/Instagram bridge @@ -13,7 +20,7 @@ matrix_mautrix_meta_instagram_enabled: true matrix_mautrix_meta_instagram_identifier: matrix-mautrix-meta-instagram # renovate: datasource=docker depName=dock.mau.dev/mautrix/meta -matrix_mautrix_meta_instagram_version: v0.4.3 +matrix_mautrix_meta_instagram_version: v0.4.5 matrix_mautrix_meta_instagram_base_path: "{{ matrix_base_data_path }}/mautrix-meta-instagram" matrix_mautrix_meta_instagram_config_path: "{{ matrix_mautrix_meta_instagram_base_path }}/config" @@ -23,8 +30,10 @@ matrix_mautrix_meta_instagram_container_src_files_path: "{{ matrix_mautrix_meta_ matrix_mautrix_meta_instagram_container_image_self_build: false matrix_mautrix_meta_instagram_container_image_self_build_repo: "https://github.com/mautrix/meta.git" -matrix_mautrix_meta_instagram_container_image: "{{ matrix_mautrix_meta_instagram_container_image_name_prefix }}mautrix/meta:{{ matrix_mautrix_meta_instagram_container_image_tag }}" -matrix_mautrix_meta_instagram_container_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_meta_instagram_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_meta_instagram_container_image: "{{ matrix_mautrix_meta_instagram_container_image_registry_prefix }}mautrix/meta:{{ matrix_mautrix_meta_instagram_container_image_tag }}" +matrix_mautrix_meta_instagram_container_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_meta_instagram_container_image_self_build else matrix_mautrix_meta_instagram_container_image_registry_prefix_upstream }}" +matrix_mautrix_meta_instagram_container_image_registry_prefix_upstream: "{{ matrix_mautrix_meta_instagram_container_image_registry_prefix_upstream_default }}" +matrix_mautrix_meta_instagram_container_image_registry_prefix_upstream_default: "dock.mau.dev/" # Prebuilt container images for specific commit hashes are tagged with an architecture suffix (e.g. `HASH-amd64`). matrix_mautrix_meta_instagram_container_image_tag: "{{ matrix_mautrix_meta_instagram_version }}{{ ('-' ~ matrix_architecture) if (matrix_mautrix_meta_instagram_version | length == 40) else '' }}" matrix_mautrix_meta_instagram_container_image_force_pull: "{{ matrix_mautrix_meta_instagram_container_image.endswith(':latest') }}" diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/install.yml b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/install.yml index 3debb493e..4f3749c1e 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/install.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/main.yml index 0acc399f0..f06937433 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/uninstall.yml b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/uninstall.yml index 991f47b40..794607e04 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of mautrix-meta-instagram service diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/validate_config.yml index fbaa3da1c..62ea8d204 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mautrix-meta-instagram settings not defined @@ -15,13 +20,14 @@ - {'name': 'matrix_mautrix_meta_instagram_database_hostname', when: "{{ matrix_mautrix_meta_instagram_database_engine == 'postgres' }}"} - {'name': 'matrix_mautrix_meta_instagram_database_password', when: "{{ matrix_mautrix_meta_instagram_database_engine == 'postgres' }}"} -- name: (Deprecation) Catch and report renamed settings +- name: (Deprecation) Catch and report renamed mautrix-meta-instagram variables ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_mautrix_meta_instagram_bridge_login_shared_secret', 'new': ''} - {'old': 'matrix_mautrix_meta_instagram_bridge_login_shared_secret_map_custom', 'new': ''} - {'old': 'matrix_mautrix_meta_instagram_bridge_management_room_text_welcome', 'new': ''} + - {'old': 'matrix_mautrix_meta_instagram_container_image_name_prefix', 'new': 'matrix_mautrix_meta_instagram_container_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/config.yaml.j2.license new file mode 100644 index 000000000..dfee73659 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2024 Nikita Chernyi +SPDX-FileCopyrightText: 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/labels.j2 index 3648706cb..42ba3e6a7 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/labels.j2 @@ -1,4 +1,10 @@ -{% if matrix_mautrix_meta_instagram_container_labels_traefik_enabled %} +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +{% if matrix_mautrix_meta_instagram_container_labels_traefik_enabled and matrix_mautrix_meta_instagram_container_labels_metrics_enabled %} traefik.enable=true {% if matrix_mautrix_meta_instagram_container_labels_traefik_docker_network %} diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/systemd/matrix-mautrix-meta.service.j2 b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/systemd/matrix-mautrix-meta.service.j2 index a772b3eca..e72e911f2 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/systemd/matrix-mautrix-meta.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/systemd/matrix-mautrix-meta.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_mautrix_meta_instagram_identifier }} 2>/dev/null || true' +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_mautrix_meta_instagram_identifier }} 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_mautrix_meta_instagram_identifier }} 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -41,7 +41,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach {{ matrix_mautrix_meta_instagram_identifier }} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_mautrix_meta_instagram_identifier }} 2>/dev/null || true' +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_mautrix_meta_instagram_identifier }} 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_mautrix_meta_instagram_identifier }} 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/systemd/matrix-mautrix-meta.service.j2.license b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/systemd/matrix-mautrix-meta.service.j2.license new file mode 100644 index 000000000..e18b238ea --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/systemd/matrix-mautrix-meta.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-meta-messenger/defaults/main.yml index ca951a333..f644aec5a 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-meta is a Matrix <-> Facebook/Messenger/Instagram bridge @@ -13,7 +20,7 @@ matrix_mautrix_meta_messenger_enabled: true matrix_mautrix_meta_messenger_identifier: matrix-mautrix-meta-messenger # renovate: datasource=docker depName=dock.mau.dev/mautrix/meta -matrix_mautrix_meta_messenger_version: v0.4.3 +matrix_mautrix_meta_messenger_version: v0.4.5 matrix_mautrix_meta_messenger_base_path: "{{ matrix_base_data_path }}/mautrix-meta-messenger" matrix_mautrix_meta_messenger_config_path: "{{ matrix_mautrix_meta_messenger_base_path }}/config" @@ -23,8 +30,10 @@ matrix_mautrix_meta_messenger_container_src_files_path: "{{ matrix_mautrix_meta_ matrix_mautrix_meta_messenger_container_image_self_build: false matrix_mautrix_meta_messenger_container_image_self_build_repo: "https://github.com/mautrix/meta.git" -matrix_mautrix_meta_messenger_container_image: "{{ matrix_mautrix_meta_messenger_container_image_name_prefix }}mautrix/meta:{{ matrix_mautrix_meta_messenger_container_image_tag }}" -matrix_mautrix_meta_messenger_container_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_meta_messenger_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_meta_messenger_container_image: "{{ matrix_mautrix_meta_messenger_container_image_registry_prefix }}mautrix/meta:{{ matrix_mautrix_meta_messenger_container_image_tag }}" +matrix_mautrix_meta_messenger_container_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_meta_messenger_container_image_self_build else matrix_mautrix_meta_messenger_container_image_registry_prefix_upstream }}" +matrix_mautrix_meta_messenger_container_image_registry_prefix_upstream: "{{ matrix_mautrix_meta_messenger_container_image_registry_prefix_upstream_default }}" +matrix_mautrix_meta_messenger_container_image_registry_prefix_upstream_default: "dock.mau.dev/" # Prebuilt container images for specific commit hashes are tagged with an architecture suffix (e.g. `HASH-amd64`). matrix_mautrix_meta_messenger_container_image_tag: "{{ matrix_mautrix_meta_messenger_version }}{{ ('-' ~ matrix_architecture) if (matrix_mautrix_meta_messenger_version | length == 40) else '' }}" matrix_mautrix_meta_messenger_container_image_force_pull: "{{ matrix_mautrix_meta_messenger_container_image.endswith(':latest') }}" diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/install.yml b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/install.yml index 438682d2b..ef09d425b 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/install.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/main.yml index 5e5a7bebd..c77b53fa0 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/uninstall.yml b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/uninstall.yml index 22040c2df..7ec36ad14 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of mautrix-meta-messenger service diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/validate_config.yml index d9f40022f..db8bb4fb1 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mautrix-meta-messenger settings not defined @@ -15,13 +20,14 @@ - {'name': 'matrix_mautrix_meta_messenger_database_hostname', when: "{{ matrix_mautrix_meta_messenger_database_engine == 'postgres' }}"} - {'name': 'matrix_mautrix_meta_messenger_database_password', when: "{{ matrix_mautrix_meta_messenger_database_engine == 'postgres' }}"} -- name: (Deprecation) Catch and report renamed settings +- name: (Deprecation) Catch and report renamed mautrix-meta-messenger variables ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_mautrix_meta_messenger_bridge_login_shared_secret', 'new': ''} - {'old': 'matrix_mautrix_meta_messenger_bridge_login_shared_secret_map_custom', 'new': ''} - {'old': 'matrix_mautrix_meta_messenger_bridge_management_room_text_welcome', 'new': ''} + - {'old': 'matrix_mautrix_meta_messenger_container_image_name_prefix', 'new': 'matrix_mautrix_meta_messenger_container_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2.license new file mode 100644 index 000000000..dfee73659 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2024 Nikita Chernyi +SPDX-FileCopyrightText: 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/labels.j2 index 79e1fc743..21946df81 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/labels.j2 @@ -1,4 +1,10 @@ -{% if matrix_mautrix_meta_messenger_container_labels_traefik_enabled %} +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +{% if matrix_mautrix_meta_messenger_container_labels_traefik_enabled and matrix_mautrix_meta_messenger_container_labels_metrics_enabled %} traefik.enable=true {% if matrix_mautrix_meta_messenger_container_labels_traefik_docker_network %} diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/systemd/matrix-mautrix-meta.service.j2 b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/systemd/matrix-mautrix-meta.service.j2 index 0ca0263b1..92439132e 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/systemd/matrix-mautrix-meta.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/systemd/matrix-mautrix-meta.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_mautrix_meta_messenger_identifier }} 2>/dev/null || true' +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_mautrix_meta_messenger_identifier }} 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_mautrix_meta_messenger_identifier }} 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -41,7 +41,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach {{ matrix_mautrix_meta_messenger_identifier }} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_mautrix_meta_messenger_identifier }} 2>/dev/null || true' +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_mautrix_meta_messenger_identifier }} 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_mautrix_meta_messenger_identifier }} 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/systemd/matrix-mautrix-meta.service.j2.license b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/systemd/matrix-mautrix-meta.service.j2.license new file mode 100644 index 000000000..e18b238ea --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/systemd/matrix-mautrix-meta.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-signal/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-signal/defaults/main.yml index b1aecf902..790f03b16 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-signal/defaults/main.yml @@ -1,3 +1,19 @@ +# SPDX-FileCopyrightText: 2020 - 2021 Sabine Laszakovits +# SPDX-FileCopyrightText: 2020 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Wolfgang Winter +# SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 László Várady +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Matthew Cengia +# SPDX-FileCopyrightText: 2023 - 2024 Pierre 'McFly' Marty +# SPDX-FileCopyrightText: 2023 Adrien le Maire +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2023 Yousef Amar +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-signal is a Matrix <-> Signal bridge # Project source code URL: https://github.com/mautrix/signal @@ -9,12 +25,14 @@ matrix_mautrix_signal_container_image_self_build_repo: "https://mau.dev/mautrix/ matrix_mautrix_signal_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_signal_version == 'latest' else matrix_mautrix_signal_version }}" # renovate: datasource=docker depName=dock.mau.dev/mautrix/signal -matrix_mautrix_signal_version: v0.7.5 +matrix_mautrix_signal_version: v0.8.1 # See: https://mau.dev/mautrix/signal/container_registry -matrix_mautrix_signal_docker_image: "{{ matrix_mautrix_signal_docker_image_name_prefix }}mautrix/signal:{{ matrix_mautrix_signal_docker_image_tag }}" +matrix_mautrix_signal_docker_image: "{{ matrix_mautrix_signal_docker_image_registry_prefix }}mautrix/signal:{{ matrix_mautrix_signal_docker_image_tag }}" matrix_mautrix_signal_docker_image_tag: "{{ matrix_mautrix_signal_version }}" -matrix_mautrix_signal_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_signal_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_signal_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_signal_container_image_self_build else matrix_mautrix_signal_docker_image_registry_prefix_upstream }}" +matrix_mautrix_signal_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_signal_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_signal_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_signal_docker_image_force_pull: "{{ matrix_mautrix_signal_docker_image.endswith(':latest') }}" matrix_mautrix_signal_base_path: "{{ matrix_base_data_path }}/mautrix-signal" @@ -93,7 +111,7 @@ matrix_mautrix_signal_homeserver_token: '' matrix_mautrix_signal_appservice_bot_username: signalbot # Minimum severity of journal log messages. -# Options: trace, debug, info, warn, error, fatal +# Valid values: fatal, error, warn, info, debug, trace matrix_mautrix_signal_logging_level: 'warn' # Whether or not created rooms should have federation enabled. diff --git a/roles/custom/matrix-bridge-mautrix-signal/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-signal/tasks/main.yml index ded64b60c..60266ba91 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-signal/tasks/main.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Adrien le Maire +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-signal/tasks/remove_legacy.yml b/roles/custom/matrix-bridge-mautrix-signal/tasks/remove_legacy.yml index d65b2d14d..f566606fc 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/tasks/remove_legacy.yml +++ b/roles/custom/matrix-bridge-mautrix-signal/tasks/remove_legacy.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Signal daemon service diff --git a/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_install.yml index ca6568c8e..55bcb2cb4 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_install.yml @@ -1,3 +1,15 @@ +# SPDX-FileCopyrightText: 2020 - 2021 Sabine Laszakovits +# SPDX-FileCopyrightText: 2020 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Jim Myhrberg +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_uninstall.yml index 4a76bf141..79e3f8249 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_uninstall.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Sabine Laszakovits +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mautrix-signal service diff --git a/roles/custom/matrix-bridge-mautrix-signal/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-signal/tasks/validate_config.yml index 702842e39..1f08f1feb 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-signal/tasks/validate_config.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2020 - 2021 Sabine Laszakovits +# SPDX-FileCopyrightText: 2020 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mautrix-signal settings not defined @@ -14,11 +22,11 @@ - {'name': 'matrix_mautrix_signal_metrics_proxying_hostname', when: "{{ matrix_mautrix_signal_metrics_proxying_enabled }}"} - {'name': 'matrix_mautrix_signal_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_signal_metrics_proxying_enabled }}"} -- name: (Deprecation) Catch and report renamed settings +- name: (Deprecation) Catch and report renamed mautrix-signal variables ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_mautrix_signal_log_level', 'new': 'matrix_mautrix_signal_logging_level'} @@ -27,3 +35,4 @@ - {'old': 'matrix_mautrix_signal_login_shared_secret', 'new': ''} - {'old': 'matrix_mautrix_signal_bridge_login_shared_secret_map', 'new': ''} - {'old': 'matrix_mautrix_signal_bridge_double_puppet_server_map', 'new': ''} + - {'old': 'matrix_mautrix_signal_docker_image_name_prefix', 'new': 'matrix_mautrix_signal_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-signal/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-signal/templates/config.yaml.j2.license new file mode 100644 index 000000000..7fa4396c7 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-signal/templates/config.yaml.j2.license @@ -0,0 +1,10 @@ +SPDX-FileCopyrightText: 2020 - 2021 Sabine Laszakovits +SPDX-FileCopyrightText: 2020 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2021 Wolfgang Winter +SPDX-FileCopyrightText: 2022 László Várady +SPDX-FileCopyrightText: 2022 Nikita Chernyi +SPDX-FileCopyrightText: 2023 - 2024 Pierre 'McFly' Marty +SPDX-FileCopyrightText: 2023 Adrien le Maire + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-signal/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-signal/templates/labels.j2 index fb912080a..334ca6fbc 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/templates/labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-signal/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_mautrix_signal_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-mautrix-signal/templates/systemd/matrix-mautrix-signal.service.j2 b/roles/custom/matrix-bridge-mautrix-signal/templates/systemd/matrix-mautrix-signal.service.j2 index 431dfd736..f108dce1c 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/templates/systemd/matrix-mautrix-signal.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-signal/templates/systemd/matrix-mautrix-signal.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-signal 2>/dev/null || true' +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-mautrix-signal 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-signal 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -39,7 +39,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-signal -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-signal 2>/dev/null || true' +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-mautrix-signal 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-signal 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-signal/templates/systemd/matrix-mautrix-signal.service.j2.license b/roles/custom/matrix-bridge-mautrix-signal/templates/systemd/matrix-mautrix-signal.service.j2.license new file mode 100644 index 000000000..1c3358e43 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-signal/templates/systemd/matrix-mautrix-signal.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2022 MDAD project contributors +SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml index 9b95d069f..b0d2406fc 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-slack is a Matrix <-> Slack bridge # Project source code URL: https://github.com/mautrix/slack @@ -9,10 +17,12 @@ matrix_mautrix_slack_container_image_self_build_repo: "https://mau.dev/mautrix/s matrix_mautrix_slack_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_slack_version == 'latest' else matrix_mautrix_slack_version }}" # renovate: datasource=docker depName=dock.mau.dev/mautrix/slack -matrix_mautrix_slack_version: v0.1.4 +matrix_mautrix_slack_version: v0.2.0 # See: https://mau.dev/mautrix/slack/container_registry -matrix_mautrix_slack_docker_image: "{{ matrix_mautrix_slack_docker_image_name_prefix }}mautrix/slack:{{ matrix_mautrix_slack_version }}" -matrix_mautrix_slack_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_slack_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_slack_docker_image: "{{ matrix_mautrix_slack_docker_image_registry_prefix }}mautrix/slack:{{ matrix_mautrix_slack_version }}" +matrix_mautrix_slack_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_slack_container_image_self_build else matrix_mautrix_slack_docker_image_registry_prefix_upstream }}" +matrix_mautrix_slack_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_slack_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_slack_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_slack_docker_image_force_pull: "{{ matrix_mautrix_slack_docker_image.endswith(':latest') }}" matrix_mautrix_slack_base_path: "{{ matrix_base_data_path }}/mautrix-slack" @@ -62,7 +72,7 @@ matrix_mautrix_slack_backfill_unread_hours_threshold: 720 matrix_mautrix_slack_backfill_threads_max_initial_messages: 50 # Minimum severity of journal log messages. -# Options: trace, debug, info, warn, error, fatal +# Valid values: fatal, error, warn, info, debug, trace matrix_mautrix_slack_logging_level: 'warn' # Database-related configuration fields. diff --git a/roles/custom/matrix-bridge-mautrix-slack/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-slack/tasks/main.yml index b7a2199d7..9112981f2 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-slack/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_install.yml index be5e11d80..c5266dfff 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_install.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_uninstall.yml index 19350b443..7361983d2 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mautrix-slack service diff --git a/roles/custom/matrix-bridge-mautrix-slack/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-slack/tasks/validate_config.yml index 19c51c61e..8265ee865 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-slack/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mautrix-slack settings not defined @@ -21,13 +27,14 @@ Consider either changing `matrix_mautrix_slack_appservice_bot_username` (the bot username for the mautrix-slack component) or `matrix_appservice_slack_bot_name` (the bot username for the appservice-slack component). We recommend that you change the username for the newly-added (and yet unused) component. -- name: (Deprecation) Catch and report renamed settings +- name: (Deprecation) Catch and report renamed mautrix-slack variables ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_mautrix_slack_login_shared_secret', 'new': ''} - {'old': 'matrix_mautrix_slack_bridge_login_shared_secret_map', 'new': ''} - {'old': 'matrix_mautrix_slack_bridge_double_puppet_server_map', 'new': ''} + - {'old': 'matrix_mautrix_slack_docker_image_name_prefix', 'new': 'matrix_mautrix_slack_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-slack/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-slack/templates/config.yaml.j2.license new file mode 100644 index 000000000..21834835b --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-slack/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +SPDX-FileCopyrightText: 2023 Shaleen Jain +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-slack/templates/systemd/matrix-mautrix-slack.service.j2 b/roles/custom/matrix-bridge-mautrix-slack/templates/systemd/matrix-mautrix-slack.service.j2 index e81bd4cef..563ff2552 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/templates/systemd/matrix-mautrix-slack.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-slack/templates/systemd/matrix-mautrix-slack.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-slack 2>/dev/null || true' +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-mautrix-slack 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-slack 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-slack -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-slack 2>/dev/null || true' +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-mautrix-slack 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-slack 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-slack/templates/systemd/matrix-mautrix-slack.service.j2.license b/roles/custom/matrix-bridge-mautrix-slack/templates/systemd/matrix-mautrix-slack.service.j2.license new file mode 100644 index 000000000..1792ce657 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-slack/templates/systemd/matrix-mautrix-slack.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml index 619dfee86..f941b7c59 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml @@ -1,3 +1,19 @@ +# SPDX-FileCopyrightText: 2019 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Johanna Dorothea Reichmann +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis +# SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 László Várady +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Olivér Falvai +# SPDX-FileCopyrightText: 2022 Vincent Post +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Pierre 'McFly' Marty +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-telegram is a Matrix <-> Telegram bridge @@ -9,13 +25,15 @@ matrix_mautrix_telegram_scheme: https matrix_mautrix_telegram_hostname: '' matrix_mautrix_telegram_path_prefix: '' -matrix_telegram_lottieconverter_container_image_self_build: false -matrix_telegram_lottieconverter_container_image_self_build_mask_arch: false -matrix_telegram_lottieconverter_docker_repo: "https://mau.dev/tulir/lottieconverter.git" -matrix_telegram_lottieconverter_docker_repo_version: "master" -matrix_telegram_lottieconverter_docker_src_files_path: "{{ matrix_base_data_path }}/lotticonverter/docker-src" -matrix_telegram_lottieconverter_docker_image: "{{ matrix_telegram_lottieconverter_docker_image_name_prefix }}tulir/lottieconverter:alpine-3.16" # needs to be adjusted according to the FROM clause of Dockerfile of mautrix-telegram -matrix_telegram_lottieconverter_docker_image_name_prefix: "{{ 'localhost/' if matrix_telegram_lottieconverter_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_telegram_lottieconverter_container_image_self_build: false +matrix_mautrix_telegram_lottieconverter_container_image_self_build_mask_arch: false +matrix_mautrix_telegram_lottieconverter_docker_repo: "https://mau.dev/tulir/lottieconverter.git" +matrix_mautrix_telegram_lottieconverter_docker_repo_version: "master" +matrix_mautrix_telegram_lottieconverter_docker_src_files_path: "{{ matrix_base_data_path }}/lotticonverter/docker-src" +matrix_mautrix_telegram_lottieconverter_docker_image: "{{ matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix }}tulir/lottieconverter:alpine-3.16" # needs to be adjusted according to the FROM clause of Dockerfile of mautrix-telegram +matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_telegram_lottieconverter_container_image_self_build else matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream }}" +matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_telegram_container_image_self_build: false matrix_mautrix_telegram_docker_repo: "https://mau.dev/mautrix/telegram.git" @@ -25,8 +43,10 @@ matrix_mautrix_telegram_docker_src_files_path: "{{ matrix_base_data_path }}/maut # renovate: datasource=docker depName=dock.mau.dev/mautrix/telegram matrix_mautrix_telegram_version: v0.15.2 # See: https://mau.dev/mautrix/telegram/container_registry -matrix_mautrix_telegram_docker_image: "{{ matrix_mautrix_telegram_docker_image_name_prefix }}mautrix/telegram:{{ matrix_mautrix_telegram_version }}" -matrix_mautrix_telegram_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_telegram_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_telegram_docker_image: "{{ matrix_mautrix_telegram_docker_image_registry_prefix }}mautrix/telegram:{{ matrix_mautrix_telegram_version }}" +matrix_mautrix_telegram_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_telegram_container_image_self_build else matrix_mautrix_telegram_docker_image_registry_prefix_upstream }}" +matrix_mautrix_telegram_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_telegram_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_telegram_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_telegram_docker_image_force_pull: "{{ matrix_mautrix_telegram_docker_image.endswith(':latest') }}" matrix_mautrix_telegram_base_path: "{{ matrix_base_data_path }}/mautrix-telegram" diff --git a/roles/custom/matrix-bridge-mautrix-telegram/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-telegram/tasks/main.yml index 9fb6fb48f..fab0c1657 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-telegram/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml index c73468bb8..f45cd306f 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml @@ -1,3 +1,20 @@ +# SPDX-FileCopyrightText: 2018 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2018 Hugues Morisset +# SPDX-FileCopyrightText: 2019 Aaron Raimist +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Jan Christian Grünhage +# SPDX-FileCopyrightText: 2020 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 Stuart Mumford +# SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis +# 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-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: @@ -55,26 +72,26 @@ - name: Ensure lottieconverter is present when self-building ansible.builtin.git: - repo: "{{ matrix_telegram_lottieconverter_docker_repo }}" - version: "{{ matrix_telegram_lottieconverter_docker_repo_version }}" - dest: "{{ matrix_telegram_lottieconverter_docker_src_files_path }}" + repo: "{{ matrix_mautrix_telegram_lottieconverter_docker_repo }}" + version: "{{ matrix_mautrix_telegram_lottieconverter_docker_repo_version }}" + dest: "{{ matrix_mautrix_telegram_lottieconverter_docker_src_files_path }}" force: "yes" become: true become_user: "{{ matrix_user_username }}" - register: matrix_telegram_lottieconverter_git_pull_results - when: "matrix_telegram_lottieconverter_container_image_self_build | bool and matrix_mautrix_telegram_container_image_self_build | bool" + register: matrix_mautrix_telegram_lottieconverter_git_pull_results + when: "matrix_mautrix_telegram_lottieconverter_container_image_self_build | bool and matrix_mautrix_telegram_container_image_self_build | bool" - name: Ensure lottieconverter Docker image is built community.docker.docker_image: - name: "{{ matrix_telegram_lottieconverter_docker_image }}" + name: "{{ matrix_mautrix_telegram_lottieconverter_docker_image }}" source: build - force_source: "{{ matrix_telegram_lottieconverter_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_telegram_lottieconverter_git_pull_results.changed }}" + force_source: "{{ matrix_mautrix_telegram_lottieconverter_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_mautrix_telegram_lottieconverter_git_pull_results.changed }}" build: dockerfile: Dockerfile - path: "{{ matrix_telegram_lottieconverter_docker_src_files_path }}" + path: "{{ matrix_mautrix_telegram_lottieconverter_docker_src_files_path }}" pull: true - when: "matrix_telegram_lottieconverter_container_image_self_build | bool and matrix_telegram_lottieconverter_git_pull_results.changed and matrix_mautrix_telegram_container_image_self_build | bool" + when: "matrix_mautrix_telegram_lottieconverter_container_image_self_build | bool and matrix_mautrix_telegram_lottieconverter_git_pull_results.changed and matrix_mautrix_telegram_container_image_self_build | bool" - name: Ensure matrix-mautrix-telegram repository is present when self-building ansible.builtin.git: @@ -96,7 +113,7 @@ build: dockerfile: Dockerfile path: "{{ matrix_mautrix_telegram_docker_src_files_path }}" - pull: "{{ not matrix_telegram_lottieconverter_container_image_self_build_mask_arch | bool }}" + pull: "{{ not matrix_mautrix_telegram_lottieconverter_container_image_self_build_mask_arch | bool }}" args: TARGETARCH: "" when: "matrix_mautrix_telegram_container_image_self_build | bool and matrix_mautrix_telegram_git_pull_results.changed" diff --git a/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_uninstall.yml index ebb7e5db2..cbde3ff57 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mautrix-telegram service diff --git a/roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config.yml index 040d7da42..20bad5816 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mautrix-telegram settings not defined @@ -19,15 +25,23 @@ - {'name': 'matrix_mautrix_telegram_metrics_proxying_hostname', when: "{{ matrix_mautrix_telegram_metrics_proxying_enabled }}"} - {'name': 'matrix_mautrix_telegram_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_telegram_metrics_proxying_enabled }}"} -- name: (Deprecation) Catch and report renamed Telegram variables +- name: (Deprecation) Catch and report renamed mautrix-telegram variables ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_mautrix_telegram_container_exposed_port_number', 'new': ''} - {'old': 'matrix_mautrix_telegram_container_self_build', 'new': 'matrix_mautrix_telegram_container_image_self_build'} - - {'old': 'matrix_telegram_lottieconverter_container_self_build', 'new': 'matrix_mautrix_telegram_container_image_self_build'} - - {'old': 'matrix_telegram_lottieconverter_container_self_build_mask_arch', 'new': 'matrix_telegram_lottieconverter_container_image_self_build_mask_arch'} + - {'old': 'matrix_mautrix_telegram_lottieconverter_container_self_build', 'new': 'matrix_mautrix_telegram_container_image_self_build'} + - {'old': 'matrix_mautrix_telegram_lottieconverter_container_self_build_mask_arch', 'new': 'matrix_mautrix_telegram_lottieconverter_container_image_self_build_mask_arch'} - {'old': 'matrix_mautrix_telegram_login_shared_secret', 'new': ''} + - {'old': 'matrix_mautrix_telegram_lottieconverter_docker_image_name_prefix', 'new': 'matrix_mautrix_telegram_lottieconverter_docker_image_registry_prefix'} + - {'old': 'matrix_mautrix_telegram_docker_image_name_prefix', 'new': 'matrix_mautrix_telegram_docker_image_registry_prefix'} + - {'old': 'matrix_telegram_lottieconverter_container_image_self_build', 'new': 'matrix_mautrix_telegram_lottieconverter_container_image_self_build'} + - {'old': 'matrix_telegram_lottieconverter_container_image_self_build_mask_arch', 'new': 'matrix_mautrix_telegram_lottieconverter_container_image_self_build_mask_arch'} + - {'old': 'matrix_telegram_lottieconverter_docker_repo', 'new': 'matrix_mautrix_telegram_lottieconverter_docker_repo'} + - {'old': 'matrix_telegram_lottieconverter_docker_repo_version', 'new': 'matrix_mautrix_telegram_lottieconverter_docker_repo_version'} + - {'old': 'matrix_telegram_lottieconverter_docker_src_files_path', 'new': 'matrix_mautrix_telegram_lottieconverter_docker_src_files_path'} + - {'old': 'matrix_telegram_lottieconverter_docker_image', 'new': 'matrix_mautrix_telegram_lottieconverter_docker_image'} diff --git a/roles/custom/matrix-bridge-mautrix-telegram/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-telegram/templates/config.yaml.j2.license new file mode 100644 index 000000000..ded8b03d5 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-telegram/templates/config.yaml.j2.license @@ -0,0 +1,11 @@ +SPDX-FileCopyrightText: 2018 Hugues Morisset +SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2020 - 2022 MDAD project contributors +SPDX-FileCopyrightText: 2022 László Várady +SPDX-FileCopyrightText: 2022 Nikita Chernyi +SPDX-FileCopyrightText: 2022 Vincent Post +SPDX-FileCopyrightText: 2024 Pierre 'McFly' Marty +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-telegram/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-telegram/templates/labels.j2 index 494a45bdc..04021d807 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/templates/labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-telegram/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_mautrix_telegram_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-mautrix-telegram/templates/systemd/matrix-mautrix-telegram.service.j2 b/roles/custom/matrix-bridge-mautrix-telegram/templates/systemd/matrix-mautrix-telegram.service.j2 index 9b611affe..ce59de6af 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/templates/systemd/matrix-mautrix-telegram.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-telegram/templates/systemd/matrix-mautrix-telegram.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-telegram 2>/dev/null || true' +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-mautrix-telegram 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-telegram 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -41,7 +41,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-telegram -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-telegram 2>/dev/null || true' +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-mautrix-telegram 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-telegram 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-telegram/templates/systemd/matrix-mautrix-telegram.service.j2.license b/roles/custom/matrix-bridge-mautrix-telegram/templates/systemd/matrix-mautrix-telegram.service.j2.license new file mode 100644 index 000000000..575ca9abb --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-telegram/templates/systemd/matrix-mautrix-telegram.service.j2.license @@ -0,0 +1,9 @@ +SPDX-FileCopyrightText: 2018 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2018 Hugues Morisset +SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2020 Scott Crossen +SPDX-FileCopyrightText: 2022 László Várady + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-twitter/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-twitter/defaults/main.yml index 8a2fb4200..84613f754 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-twitter/defaults/main.yml @@ -1,3 +1,16 @@ +# SPDX-FileCopyrightText: 2021 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Matthew Cengia +# SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Aaron Raimist +# SPDX-FileCopyrightText: 2022 László Várady +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Adrien le Maire +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-twitter is a Matrix <-> Twitter bridge # Project source code URL: https://github.com/mautrix/twitter @@ -9,10 +22,12 @@ matrix_mautrix_twitter_container_image_self_build_repo: "https://github.com/maut matrix_mautrix_twitter_container_image_self_build_repo_version: "{{ 'master' if matrix_mautrix_twitter_version == 'latest' else matrix_mautrix_twitter_version }}" # renovate: datasource=docker depName=dock.mau.dev/mautrix/twitter -matrix_mautrix_twitter_version: v0.2.1 +matrix_mautrix_twitter_version: v0.3.0 # See: https://mau.dev/tulir/mautrix-twitter/container_registry -matrix_mautrix_twitter_docker_image: "{{ matrix_mautrix_twitter_docker_image_name_prefix }}mautrix/twitter:{{ matrix_mautrix_twitter_version }}" -matrix_mautrix_twitter_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_twitter_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_twitter_docker_image: "{{ matrix_mautrix_twitter_docker_image_registry_prefix }}mautrix/twitter:{{ matrix_mautrix_twitter_version }}" +matrix_mautrix_twitter_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_twitter_container_image_self_build else matrix_mautrix_twitter_docker_image_registry_prefix_upstream }}" +matrix_mautrix_twitter_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_twitter_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_twitter_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_twitter_docker_image_force_pull: "{{ matrix_mautrix_twitter_docker_image.endswith(':latest') }}" matrix_mautrix_twitter_base_path: "{{ matrix_base_data_path }}/mautrix-twitter" @@ -130,7 +145,7 @@ matrix_mautrix_twitter_backfill_max_catchup_messages: 500 matrix_mautrix_twitter_provisioning_shared_secret: disable # Minimum severity of journal log messages. -# Options: trace, debug, info, warn, error, fatal +# Valid values: fatal, error, warn, info, debug, trace matrix_mautrix_twitter_logging_level: 'warn' # Whether or not metrics endpoint should be enabled. diff --git a/roles/custom/matrix-bridge-mautrix-twitter/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-twitter/tasks/main.yml index bb5a3a32e..39aff219b 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-twitter/tasks/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2021 Matthew Cengia +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Adrien le Maire +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_install.yml index f89ef1994..4e5b1d149 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Matthew Cengia +# 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-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_uninstall.yml index 2a73e4818..be45fe4ac 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Matthew Cengia +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mautrix-twitter service diff --git a/roles/custom/matrix-bridge-mautrix-twitter/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-twitter/tasks/validate_config.yml index b63a61558..0a30cd1d7 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-twitter/tasks/validate_config.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2021 Matthew Cengia +# SPDX-FileCopyrightText: 2021 Shreyas Ajjarapu +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mautrix-twitter settings not defined @@ -18,7 +25,7 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_mautrix_twitter_login_shared_secret', 'new': ''} @@ -28,3 +35,4 @@ - {'old': 'matrix_mautrix_twitter_bridge_login_shared_secret_map_custom', 'new': 'matrix_mautrix_twitter_double_puppet_secrets_custom'} - {'old': 'matrix_mautrix_twitter_federate_rooms', 'new': 'matrix_mautrix_twitter_matrix_federate_rooms'} - {'old': 'matrix_mautrix_twitter_command_prefix', 'new': 'matrix_mautrix_twitter_bridge_command_prefix'} + - {'old': 'matrix_mautrix_twitter_docker_image_name_prefix', 'new': 'matrix_mautrix_twitter_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-twitter/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-twitter/templates/config.yaml.j2.license new file mode 100644 index 000000000..1cdaa53c0 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-twitter/templates/config.yaml.j2.license @@ -0,0 +1,9 @@ +SPDX-FileCopyrightText: 2021 Matthew Cengia +SPDX-FileCopyrightText: 2021 Shreyas Ajjarapu +SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 László Várady +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2023 Adrien le Maire + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-twitter/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-twitter/templates/labels.j2 index e54502e74..fbf530be4 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/templates/labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-twitter/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_mautrix_twitter_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-mautrix-twitter/templates/systemd/matrix-mautrix-twitter.service.j2 b/roles/custom/matrix-bridge-mautrix-twitter/templates/systemd/matrix-mautrix-twitter.service.j2 index ef16a675d..c044cc616 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/templates/systemd/matrix-mautrix-twitter.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-twitter/templates/systemd/matrix-mautrix-twitter.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-twitter 2>/dev/null || true' +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-mautrix-twitter 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-twitter 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-twitter -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-twitter 2>/dev/null || true' +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-mautrix-twitter 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-twitter 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-twitter/templates/systemd/matrix-mautrix-twitter.service.j2.license b/roles/custom/matrix-bridge-mautrix-twitter/templates/systemd/matrix-mautrix-twitter.service.j2.license new file mode 100644 index 000000000..e0357d6e9 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-twitter/templates/systemd/matrix-mautrix-twitter.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2021 Matthew Cengia + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-whatsapp/defaults/main.yml index 2d2519338..b461573b6 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/defaults/main.yml @@ -1,3 +1,22 @@ +# SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Julian Foad +# SPDX-FileCopyrightText: 2019 Thomas Kuehne +# SPDX-FileCopyrightText: 2021 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2021 Sebastian Gumprich +# SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Arthur Brugière +# SPDX-FileCopyrightText: 2022 László Várady +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Petteri Pucilowski +# SPDX-FileCopyrightText: 2023 Adrien le Maire +# SPDX-FileCopyrightText: 2023 James Collier +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +# SPDX-FileCopyrightText: 2024 Nikolai Raitsev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-whatsapp is a Matrix <-> Whatsapp bridge # Project source code URL: https://github.com/mautrix/whatsapp @@ -9,11 +28,13 @@ matrix_mautrix_whatsapp_container_image_self_build_repo: "https://mau.dev/mautri matrix_mautrix_whatsapp_container_image_self_build_branch: "{{ 'master' if matrix_mautrix_whatsapp_version == 'latest' else matrix_mautrix_whatsapp_version }}" # renovate: datasource=docker depName=dock.mau.dev/mautrix/whatsapp -matrix_mautrix_whatsapp_version: v0.11.2 +matrix_mautrix_whatsapp_version: v0.11.4 # See: https://mau.dev/mautrix/whatsapp/container_registry -matrix_mautrix_whatsapp_docker_image: "{{ matrix_mautrix_whatsapp_docker_image_name_prefix }}mautrix/whatsapp:{{ matrix_mautrix_whatsapp_version }}" -matrix_mautrix_whatsapp_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_whatsapp_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_whatsapp_docker_image: "{{ matrix_mautrix_whatsapp_docker_image_registry_prefix }}mautrix/whatsapp:{{ matrix_mautrix_whatsapp_version }}" +matrix_mautrix_whatsapp_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_whatsapp_container_image_self_build else matrix_mautrix_whatsapp_docker_image_registry_prefix_upstream }}" +matrix_mautrix_whatsapp_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_whatsapp_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_whatsapp_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_whatsapp_docker_image_force_pull: "{{ matrix_mautrix_whatsapp_docker_image.endswith(':latest') }}" matrix_mautrix_whatsapp_base_path: "{{ matrix_base_data_path }}/mautrix-whatsapp" @@ -82,7 +103,7 @@ matrix_mautrix_whatsapp_homeserver_token: '' matrix_mautrix_whatsapp_appservice_bot_username: whatsappbot # Minimum severity of journal log messages. -# Options: trace, debug, info, warn, error, fatal +# Valid values: fatal, error, warn, info, debug, trace matrix_mautrix_whatsapp_logging_level: 'warn' # Whether or not created rooms should have federation enabled. diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/main.yml index c7de3e189..4fb583f66 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Thomas Kuehne +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Adrien le Maire +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml index fd2c1a1ed..ecafc5a32 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml @@ -1,3 +1,20 @@ +# SPDX-FileCopyrightText: 2018 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2018 Hugues Morisset +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Jan Christian Grünhage +# SPDX-FileCopyrightText: 2019 Thomas Kuehne +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2020 Stuart Mumford +# 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: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_uninstall.yml index 98607b945..9a0beafd5 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mautrix-whatsapp service diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/validate_config.yml index 220f99b15..a1f7605f3 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/validate_config.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2019 Thomas Kuehne +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mautrix-whatsapp settings not defined @@ -11,11 +19,11 @@ - {'name': 'matrix_mautrix_whatsapp_homeserver_token', when: true} - {'name': 'matrix_mautrix_whatsapp_database_hostname', when: "{{ matrix_mautrix_whatsapp_database_engine == 'postgres' }}"} -- name: (Deprecation) Catch and report renamed settings +- name: (Deprecation) Catch and report renamed mautrix-whatsapp variables ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_mautrix_whatsapp_log_level', 'new': 'matrix_mautrix_whatsapp_logging_level'} @@ -24,3 +32,4 @@ - {'old': 'matrix_mautrix_whatsapp_bridge_double_puppet_server_map', 'new': ''} - {'old': 'matrix_mautrix_whatsapp_bridge_allow_user_invite', 'new': ''} - {'old': 'matrix_mautrix_whatsapp_bridge_mute_bridging', 'new': ''} + - {'old': 'matrix_mautrix_whatsapp_docker_image_name_prefix', 'new': 'matrix_mautrix_whatsapp_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/config.yaml.j2.license new file mode 100644 index 000000000..00e16d9b7 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/config.yaml.j2.license @@ -0,0 +1,13 @@ +SPDX-FileCopyrightText: 2018 Hugues Morisset +SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2019 Thomas Kuehne +SPDX-FileCopyrightText: 2020 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2022 László Várady +SPDX-FileCopyrightText: 2022 Nikita Chernyi +SPDX-FileCopyrightText: 2022 Shaleen Jain +SPDX-FileCopyrightText: 2023 Adrien le Maire +SPDX-FileCopyrightText: 2023 James Collier +SPDX-FileCopyrightText: 2024 Nikolai Raitsev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/labels.j2 index 23f94361e..74bd55954 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/templates/labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_mautrix_whatsapp_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/templates/systemd/matrix-mautrix-whatsapp.service.j2 b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/systemd/matrix-mautrix-whatsapp.service.j2 index f7b4a9ee5..fe77ca34d 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/templates/systemd/matrix-mautrix-whatsapp.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/systemd/matrix-mautrix-whatsapp.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-whatsapp 2>/dev/null || true' +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-mautrix-whatsapp 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-whatsapp 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -39,7 +39,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-whatsapp -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-whatsapp 2>/dev/null || true' +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-mautrix-whatsapp 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-whatsapp 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/templates/systemd/matrix-mautrix-whatsapp.service.j2.license b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/systemd/matrix-mautrix-whatsapp.service.j2.license new file mode 100644 index 000000000..6a14dbaad --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/systemd/matrix-mautrix-whatsapp.service.j2.license @@ -0,0 +1,8 @@ +SPDX-FileCopyrightText: 2018 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2018 Hugues Morisset +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2019 Thomas Kuehne +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2020 Scott Crossen + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-wsproxy/defaults/main.yml index 51ad2a990..b55933180 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 Johan Swetzén +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-wsproxy is a Matrix <-> websocket bridge # See: https://github.com/mautrix/wsproxy @@ -6,7 +13,10 @@ matrix_mautrix_wsproxy_enabled: true matrix_mautrix_wsproxy_version: latest # See: https://mau.dev/mautrix/wsproxy/container_registry -matrix_mautrix_wsproxy_docker_image: "dock.mau.dev/mautrix/wsproxy:{{ matrix_mautrix_wsproxy_version }}" +matrix_mautrix_wsproxy_docker_image: "{{ matrix_mautrix_wsproxy_docker_image_registry_prefix }}mautrix/wsproxy:{{ matrix_mautrix_wsproxy_version }}" +matrix_mautrix_wsproxy_docker_image_registry_prefix: "{{ matrix_mautrix_wsproxy_docker_image_registry_prefix_upstream }}" +matrix_mautrix_wsproxy_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_wsproxy_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_wsproxy_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_wsproxy_docker_image_force_pull: "{{ matrix_mautrix_wsproxy_docker_image.endswith(':latest') }}" matrix_mautrix_wsproxy_base_path: "{{ matrix_base_data_path }}/wsproxy" @@ -95,11 +105,11 @@ matrix_mautrix_wsproxy_configuration_extension_yaml: | # If you need something more special, you can take full control by # completely redefining `matrix_mautrix_wsproxy_configuration_yaml`. -matrix_mautrix_wsproxy_configuration_extension: "{{ matrix_mautrix_wsproxy_configuration_extension_yaml|from_yaml if matrix_mautrix_wsproxy_configuration_extension_yaml|from_yaml is mapping else {} }}" +matrix_mautrix_wsproxy_configuration_extension: "{{ matrix_mautrix_wsproxy_configuration_extension_yaml | from_yaml if matrix_mautrix_wsproxy_configuration_extension_yaml | from_yaml is mapping else {} }}" # Holds the final configuration (a combination of the default and its extension). # You most likely don't need to touch this variable. Instead, see `matrix_mautrix_wsproxy_configuration_yaml`. -matrix_mautrix_wsproxy_configuration: "{{ matrix_mautrix_wsproxy_configuration_yaml|from_yaml|combine(matrix_mautrix_wsproxy_configuration_extension, recursive=True) }}" +matrix_mautrix_wsproxy_configuration: "{{ matrix_mautrix_wsproxy_configuration_yaml | from_yaml | combine(matrix_mautrix_wsproxy_configuration_extension, recursive=True) }}" matrix_mautrix_androidsms_registration_yaml: | id: androidsms @@ -110,12 +120,12 @@ matrix_mautrix_androidsms_registration_yaml: | rate_limited: false namespaces: users: - - regex: '@androidsms_.+:{{ matrix_mautrix_wsproxy_homeserver_domain|regex_escape }}$' + - regex: '@androidsms_.+:{{ matrix_mautrix_wsproxy_homeserver_domain | regex_escape }}$' exclusive: true - exclusive: true - regex: '^@{{ matrix_mautrix_androidsms_appservice_bot_username|regex_escape }}:{{ matrix_mautrix_wsproxy_homeserver_domain|regex_escape }}$' + regex: '^@{{ matrix_mautrix_androidsms_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_wsproxy_homeserver_domain | regex_escape }}$' -matrix_mautrix_androidsms_registration: "{{ matrix_mautrix_androidsms_registration_yaml|from_yaml }}" +matrix_mautrix_androidsms_registration: "{{ matrix_mautrix_androidsms_registration_yaml | from_yaml }}" matrix_mautrix_imessage_registration_yaml: | id: imessage @@ -126,12 +136,12 @@ matrix_mautrix_imessage_registration_yaml: | rate_limited: false namespaces: users: - - regex: '@imessage_.+:{{ matrix_mautrix_wsproxy_homeserver_domain|regex_escape }}$' + - regex: '@imessage_.+:{{ matrix_mautrix_wsproxy_homeserver_domain | regex_escape }}$' exclusive: true - exclusive: true - regex: '^@{{ matrix_mautrix_imessage_appservice_bot_username|regex_escape }}:{{ matrix_mautrix_wsproxy_homeserver_domain|regex_escape }}$' + regex: '^@{{ matrix_mautrix_imessage_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_wsproxy_homeserver_domain | regex_escape }}$' -matrix_mautrix_imessage_registration: "{{ matrix_mautrix_imessage_registration_yaml|from_yaml }}" +matrix_mautrix_imessage_registration: "{{ matrix_mautrix_imessage_registration_yaml | from_yaml }}" # Syncproxy-related configuration fields # renovate: datasource=docker depName=dock.mau.dev/mautrix/syncproxy diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/main.yml index 77ba520f4..dd2cee331 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Johan Swetzén +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/setup_install.yml index 703d412df..9685df0e0 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/setup_install.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Johan Swetzén +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # If the matrix-synapse role is not used, `matrix_synapse_role_executed` won't exist. @@ -69,7 +76,7 @@ - name: Ensure mautrix-wsproxy config.yaml installed ansible.builtin.copy: - content: "{{ matrix_mautrix_wsproxy_configuration|to_nice_yaml }}" + content: "{{ matrix_mautrix_wsproxy_configuration | to_nice_yaml }}" dest: "{{ matrix_mautrix_wsproxy_config_path }}/config.yaml" mode: 0644 owner: "{{ matrix_user_username }}" @@ -77,7 +84,7 @@ - name: Ensure mautrix-androidsms registration.yaml installed ansible.builtin.copy: - content: "{{ matrix_mautrix_androidsms_registration|to_nice_yaml }}" + content: "{{ matrix_mautrix_androidsms_registration | to_nice_yaml }}" dest: "{{ matrix_mautrix_wsproxy_config_path }}/androidsms-registration.yaml" mode: 0644 owner: "{{ matrix_user_username }}" @@ -85,7 +92,7 @@ - name: Ensure mautrix-imessage registration.yaml installed ansible.builtin.copy: - content: "{{ matrix_mautrix_imessage_registration|to_nice_yaml }}" + content: "{{ matrix_mautrix_imessage_registration | to_nice_yaml }}" dest: "{{ matrix_mautrix_wsproxy_config_path }}/imessage-registration.yaml" mode: 0644 owner: "{{ matrix_user_username }}" diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/setup_uninstall.yml index c39fd29f4..0326fcb96 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Johan Swetzén +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mautrix-wsproxy service diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/validate_config.yml index 6a7012385..244da474f 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Johan Swetzén +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required settings not defined diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/config.yaml.j2 b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/config.yaml.j2 index 2c7932614..b0eae9f68 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/config.yaml.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 Johan Swetzén + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + listen_address: 0.0.0.0:29331 appservices: - id: androidsms diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/syncproxy-env.j2 b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/syncproxy-env.j2 index 0ce02496d..45ff0d9b6 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/syncproxy-env.j2 +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/syncproxy-env.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 Johan Swetzén +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + DATABASE_URL={{ matrix_mautrix_signal_wsproxy_syncproxy_connection_string }} HOMESERVER_URL={{ matrix_mautrix_wsproxy_syncproxy_homeserver_url }} SHARED_SECRET={{ matrix_mautrix_wsproxy_syncproxy_shared_secret }} diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy-syncproxy.service.j2 b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy-syncproxy.service.j2 index 9e1137a97..c46d7b6f9 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy-syncproxy.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy-syncproxy.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-wsproxy-syncproxy 2>/dev/null' +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-mautrix-wsproxy-syncproxy 2>/dev/null' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-wsproxy-syncproxy 2>/dev/null' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -35,7 +35,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-wsproxy-syncproxy -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-wsproxy-syncproxy 2>/dev/null' +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-mautrix-wsproxy-syncproxy 2>/dev/null' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-wsproxy-syncproxy 2>/dev/null' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy-syncproxy.service.j2.license b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy-syncproxy.service.j2.license new file mode 100644 index 000000000..bf57ad87b --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy-syncproxy.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Johan Swetzén + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy.service.j2 b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy.service.j2 index 206342676..ab71702ea 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-wsproxy 2>/dev/null' +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-mautrix-wsproxy 2>/dev/null' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-wsproxy 2>/dev/null' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create --rm --name matrix-mautrix-wsproxy \ @@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-wsproxy -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-wsproxy 2>/dev/null' +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-mautrix-wsproxy 2>/dev/null' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-wsproxy 2>/dev/null' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy.service.j2.license b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy.service.j2.license new file mode 100644 index 000000000..3cc582ba8 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/systemd/matrix-mautrix-wsproxy.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Johan Swetzén + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/wsproxy-labels.j2 b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/wsproxy-labels.j2 index f16a631e8..06a879b9c 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/templates/wsproxy-labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/templates/wsproxy-labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 Johan Swetzén + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_mautrix_wsproxy_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/defaults/main.yml b/roles/custom/matrix-bridge-mx-puppet-discord/defaults/main.yml index faf1a770c..5cda2b0f4 100644 --- a/roles/custom/matrix-bridge-mx-puppet-discord/defaults/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-discord/defaults/main.yml @@ -1,3 +1,15 @@ +# SPDX-FileCopyrightText: 2020 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2022 Daniel Sonck +# 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 + --- # Mx Puppet Discord is a Matrix <-> Discord bridge # Project source code URL: https://gitlab.com/mx-puppet/discord/mx-puppet-discord @@ -16,8 +28,10 @@ matrix_mx_puppet_discord_container_http_host_bind_port: '' # renovate: datasource=docker depName=registry.gitlab.com/mx-puppet/discord/mx-puppet-discord matrix_mx_puppet_discord_version: v0.1.1 -matrix_mx_puppet_discord_docker_image: "{{ matrix_mx_puppet_discord_docker_image_name_prefix }}mx-puppet/discord/mx-puppet-discord:{{ matrix_mx_puppet_discord_version }}" -matrix_mx_puppet_discord_docker_image_name_prefix: "{{ 'localhost/' if matrix_mx_puppet_discord_container_image_self_build else 'registry.gitlab.com/' }}" +matrix_mx_puppet_discord_docker_image: "{{ matrix_mx_puppet_discord_docker_image_registry_prefix }}mx-puppet/discord/mx-puppet-discord:{{ matrix_mx_puppet_discord_version }}" +matrix_mx_puppet_discord_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_discord_container_image_self_build else matrix_mx_puppet_discord_docker_image_registry_prefix_upstream }}" +matrix_mx_puppet_discord_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_discord_docker_image_registry_prefix_upstream_default }}" +matrix_mx_puppet_discord_docker_image_registry_prefix_upstream_default: "registry.gitlab.com/" matrix_mx_puppet_discord_docker_image_force_pull: "{{ matrix_mx_puppet_discord_docker_image.endswith(':latest') }}" matrix_mx_puppet_discord_base_path: "{{ matrix_base_data_path }}/mx-puppet-discord" diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-discord/tasks/main.yml index c0300b513..67e4948e4 100644 --- a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-discord/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_install.yml b/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_install.yml index 5922c59c3..af1717a0f 100644 --- a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2020 Stuart Mumford +# 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-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure MX Puppet Discord paths exist diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_uninstall.yml index c1ed9ec36..2deb391a0 100644 --- a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mx-puppet-discord service diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/validate_config.yml b/roles/custom/matrix-bridge-mx-puppet-discord/tasks/validate_config.yml index f5faa2333..d343fbba6 100644 --- a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mx-puppet-discord/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mx-puppet-discord settings not defined @@ -11,3 +16,11 @@ - {'name': 'matrix_mx_puppet_discord_homeserver_token', when: true} - {'name': 'matrix_mx_puppet_discord_database_hostname', when: "{{ matrix_mx_puppet_discord_database_engine == 'postgres' }}"} - {'name': 'matrix_mx_puppet_discord_container_network', when: true} + +- name: (Deprecation) Catch and report renamed mx-puppet-discord variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_mx_puppet_discord_docker_image_name_prefix', 'new': 'matrix_mx_puppet_discord_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2.license new file mode 100644 index 000000000..7b4bc3507 --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Hugues Morisset +SPDX-FileCopyrightText: 2020 MDAD project contributors +SPDX-FileCopyrightText: 2022 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2 b/roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2 index 55efcfba4..6d75a9332 100644 --- a/roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2 +++ b/roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-discord 2>/dev/null || true' +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-mx-puppet-discord 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-discord 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-discord -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-discord 2>/dev/null || true' +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-mx-puppet-discord 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-discord 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2.license b/roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2.license new file mode 100644 index 000000000..16b2b499b --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Hugues Morisset +SPDX-FileCopyrightText: 2020 Scott Crossen + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/defaults/main.yml b/roles/custom/matrix-bridge-mx-puppet-groupme/defaults/main.yml index 67ecd6cbd..a4d7570ef 100644 --- a/roles/custom/matrix-bridge-mx-puppet-groupme/defaults/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/defaults/main.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2021 Cody Neiman +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Cody Wyatt Neiman +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Mx Puppet GroupMe is a Matrix <-> GroupMe bridge # Project source code URL: https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme @@ -14,8 +25,10 @@ matrix_mx_puppet_groupme_container_image_self_build_repo_version: "{{ 'main' if matrix_mx_puppet_groupme_container_http_host_bind_port: '' matrix_mx_puppet_groupme_version: 533cccc8 -matrix_mx_puppet_groupme_docker_image: "{{ matrix_mx_puppet_groupme_docker_image_name_prefix }}xangelix-pub/matrix/mx-puppet-groupme:{{ matrix_mx_puppet_groupme_version }}" -matrix_mx_puppet_groupme_docker_image_name_prefix: "{{ 'localhost/' if matrix_mx_puppet_groupme_container_image_self_build else 'registry.gitlab.com/' }}" +matrix_mx_puppet_groupme_docker_image: "{{ matrix_mx_puppet_groupme_docker_image_registry_prefix }}xangelix-pub/matrix/mx-puppet-groupme:{{ matrix_mx_puppet_groupme_version }}" +matrix_mx_puppet_groupme_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_groupme_container_image_self_build else matrix_mx_puppet_groupme_docker_image_registry_prefix_upstream }}" +matrix_mx_puppet_groupme_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_groupme_docker_image_registry_prefix_upstream_default }}" +matrix_mx_puppet_groupme_docker_image_registry_prefix_upstream_default: "registry.gitlab.com/" matrix_mx_puppet_groupme_docker_image_force_pull: "{{ matrix_mx_puppet_groupme_docker_image.endswith(':latest') }}" matrix_mx_puppet_groupme_base_path: "{{ matrix_base_data_path }}/mx-puppet-groupme" diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/main.yml index de225e71d..8b6e0be39 100644 --- a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 Cody Neiman +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_install.yml b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_install.yml index 44dc72e47..5e09ca887 100644 --- a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Cody Neiman +# 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-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure MX Puppet Groupme paths exist diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_uninstall.yml index ce0823e6e..6f698ca62 100644 --- a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Cody Neiman +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mx-puppet-groupme service diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/validate_config.yml b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/validate_config.yml index c52c038b1..8d195daff 100644 --- a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2021 Cody Neiman +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mx-puppet-groupme settings not defined @@ -11,3 +16,11 @@ - {'name': 'matrix_mx_puppet_groupme_homeserver_token', when: true} - {'name': 'matrix_mx_puppet_groupme_database_hostname', when: "{{ matrix_mx_puppet_groupme_database_engine == 'postgres' }}"} - {'name': 'matrix_mx_puppet_groupme_container_network', when: true} + +- name: (Deprecation) Catch and report renamed mx-puppet-groupme variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_mx_puppet_groupme_docker_image_name_prefix', 'new': 'matrix_mx_puppet_groupme_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mx-puppet-groupme/templates/config.yaml.j2.license new file mode 100644 index 000000000..3065e3d50 --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2021 Cody Neiman +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/templates/systemd/matrix-mx-puppet-groupme.service.j2 b/roles/custom/matrix-bridge-mx-puppet-groupme/templates/systemd/matrix-mx-puppet-groupme.service.j2 index eb9fd2574..9f4483c6a 100644 --- a/roles/custom/matrix-bridge-mx-puppet-groupme/templates/systemd/matrix-mx-puppet-groupme.service.j2 +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/templates/systemd/matrix-mx-puppet-groupme.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-groupme 2>/dev/null || true' +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-mx-puppet-groupme 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-groupme 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-groupme -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-groupme 2>/dev/null || true' +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-mx-puppet-groupme 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-groupme 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/templates/systemd/matrix-mx-puppet-groupme.service.j2.license b/roles/custom/matrix-bridge-mx-puppet-groupme/templates/systemd/matrix-mx-puppet-groupme.service.j2.license new file mode 100644 index 000000000..eaa700407 --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/templates/systemd/matrix-mx-puppet-groupme.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 Cody Neiman +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/defaults/main.yml b/roles/custom/matrix-bridge-mx-puppet-instagram/defaults/main.yml index 168c4a3b3..14568af1a 100644 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/defaults/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-instagram/defaults/main.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# 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 + --- # mx-puppet-instagram bridges instagram DMs # Project source code URL: https://github.com/Sorunome/mx-puppet-instagram @@ -10,8 +20,10 @@ matrix_mx_puppet_instagram_container_image_self_build_repo_version: "{{ 'master' # renovate: datasource=docker depName=sorunome/mx-puppet-instagram matrix_mx_puppet_instagram_version: latest -matrix_mx_puppet_instagram_docker_image: "{{ matrix_mx_puppet_instagram_docker_image_name_prefix }}sorunome/mx-puppet-instagram:{{ matrix_mx_puppet_instagram_version }}" -matrix_mx_puppet_instagram_docker_image_name_prefix: "{{ 'localhost/' if matrix_mx_puppet_instagram_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_mx_puppet_instagram_docker_image: "{{ matrix_mx_puppet_instagram_docker_image_registry_prefix }}sorunome/mx-puppet-instagram:{{ matrix_mx_puppet_instagram_version }}" +matrix_mx_puppet_instagram_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_instagram_container_image_self_build else matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream }}" +matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream_default }}" +matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_mx_puppet_instagram_docker_image_force_pull: "{{ matrix_mx_puppet_instagram_docker_image.endswith(':latest') }}" matrix_mx_puppet_instagram_base_path: "{{ matrix_base_data_path }}/mx-puppet-instagram" diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/main.yml index 0d46532ce..c2944596f 100644 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_install.yml b/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_install.yml index 47ec55ef7..1846ede1f 100644 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Stuart Mumford +# 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-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_uninstall.yml index 943c0556a..b3b465060 100644 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mx-puppet-instagram service diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/validate_config.yml b/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/validate_config.yml index 67a2c6978..13a9fbf7d 100644 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mx-puppet-instagram settings not defined @@ -11,3 +16,11 @@ - {'name': 'matrix_mx_puppet_instagram_homeserver_token', when: true} - {'name': 'matrix_mx_puppet_instagram_database_hostname', when: "{{ matrix_mx_puppet_instagram_database_engine == 'postgres' }}"} - {'name': 'matrix_mx_puppet_instagram_container_network', when: true} + +- name: (Deprecation) Catch and report renamed mx-puppet-instagram variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_mx_puppet_instagram_docker_image_name_prefix', 'new': 'matrix_mx_puppet_instagram_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2.license new file mode 100644 index 000000000..7ae771d35 --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 MDAD project contributors +SPDX-FileCopyrightText: 2022 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2 b/roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2 index a3b9d1739..0efca1941 100644 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2 +++ b/roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-instagram 2>/dev/null || true' +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-mx-puppet-instagram 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-instagram 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-instagram -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-instagram 2>/dev/null || true' +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-mx-puppet-instagram 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-instagram 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2.license b/roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2.license new file mode 100644 index 000000000..ed96bddd2 --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 MDAD project contributors +SPDX-FileCopyrightText: 2020 Scott Crossen + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mx-puppet-slack/defaults/main.yml b/roles/custom/matrix-bridge-mx-puppet-slack/defaults/main.yml index 030ac871f..338eb3691 100644 --- a/roles/custom/matrix-bridge-mx-puppet-slack/defaults/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-slack/defaults/main.yml @@ -1,3 +1,18 @@ +# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2020 Rodrigo Belem +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2021 Marcel Ackermann +# SPDX-FileCopyrightText: 2022 Daniel Sonck +# SPDX-FileCopyrightText: 2022 Jim Myhrberg +# 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 + --- # Mx Puppet Slack is a Matrix <-> Slack bridge # Project source code URL: https://gitlab.com/mx-puppet/slack/mx-puppet-slack @@ -23,8 +38,10 @@ matrix_mx_puppet_slack_container_http_host_bind_port: '' # renovate: datasource=docker depName=registry.gitlab.com/mx-puppet/slack/mx-puppet-slack matrix_mx_puppet_slack_version: v0.1.2 -matrix_mx_puppet_slack_docker_image: "{{ matrix_mx_puppet_slack_docker_image_name_prefix }}mx-puppet/slack/mx-puppet-slack:{{ matrix_mx_puppet_slack_version }}" -matrix_mx_puppet_slack_docker_image_name_prefix: "{{ 'localhost/' if matrix_mx_puppet_slack_container_image_self_build else 'registry.gitlab.com/' }}" +matrix_mx_puppet_slack_docker_image: "{{ matrix_mx_puppet_slack_docker_image_registry_prefix }}mx-puppet/slack/mx-puppet-slack:{{ matrix_mx_puppet_slack_version }}" +matrix_mx_puppet_slack_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_slack_container_image_self_build else matrix_mx_puppet_slack_docker_image_registry_prefix_upstream }}" +matrix_mx_puppet_slack_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_slack_docker_image_registry_prefix_upstream_default }}" +matrix_mx_puppet_slack_docker_image_registry_prefix_upstream_default: "registry.gitlab.com/" matrix_mx_puppet_slack_docker_image_force_pull: "{{ matrix_mx_puppet_slack_docker_image.endswith(':latest') }}" matrix_mx_puppet_slack_base_path: "{{ matrix_base_data_path }}/mx-puppet-slack" @@ -108,7 +125,7 @@ matrix_mx_puppet_slack_login_shared_secret: '' matrix_mx_puppet_slack_presence_enabled: true matrix_mx_puppet_slack_presence_interval: 5000 -# Database configuration, role uses 'sqlite' per default but playbook sets up postgres by default +# Database configuration, role uses 'sqlite' per default but playbook sets up Postgres by default matrix_mx_puppet_slack_database_engine: sqlite matrix_mx_puppet_slack_sqlite_database_path_local: "{{ matrix_mx_puppet_slack_data_path }}/database.db" diff --git a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-slack/tasks/main.yml index d5d3d421e..3e66fd822 100644 --- a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-slack/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Rodrigo Belem +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_install.yml b/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_install.yml index c46a25bd1..55e0cdecf 100644 --- a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_install.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Rodrigo Belem +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure MX Puppet Slack paths exist diff --git a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_uninstall.yml index 444939198..33d2ad22c 100644 --- a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Rodrigo Belem +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mx-puppet-slack service diff --git a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/validate_config.yml b/roles/custom/matrix-bridge-mx-puppet-slack/tasks/validate_config.yml index dbc1d0025..8ede9eed3 100644 --- a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mx-puppet-slack/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Rodrigo Belem +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mx-puppet-slack settings not defined @@ -18,8 +24,9 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_mx_puppet_slack_redirect_path', 'new': 'matrix_mx_puppet_slack_oauth_redirect_path, but setting matrix_mx_puppet_slack_path_prefix is better'} - {'old': 'matrix_mx_puppet_slack_redirect_uri', 'new': '/dev/null || true' +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-mx-puppet-slack 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-slack 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -42,7 +42,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-slack -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-slack 2>/dev/null || true' +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-mx-puppet-slack 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-slack 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2.license b/roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2.license new file mode 100644 index 000000000..04f321b44 --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2020 Rodrigo Belem +SPDX-FileCopyrightText: 2020 Scott Crossen + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/defaults/main.yml b/roles/custom/matrix-bridge-mx-puppet-steam/defaults/main.yml index 0e4ce1674..65161cf54 100644 --- a/roles/custom/matrix-bridge-mx-puppet-steam/defaults/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-steam/defaults/main.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2020 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# 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 + --- # Mx Puppet Steam is a Matrix <-> Steam bridge # Project source code URL: https://github.com/icewind1991/mx-puppet-steam @@ -15,8 +26,10 @@ matrix_mx_puppet_steam_container_http_host_bind_port: '' # renovate: datasource=docker depName=icewind1991/mx-puppet-steam matrix_mx_puppet_steam_version: latest -matrix_mx_puppet_steam_docker_image: "{{ matrix_mx_puppet_steam_docker_image_name_prefix }}icewind1991/mx-puppet-steam:{{ matrix_mx_puppet_steam_version }}" -matrix_mx_puppet_steam_docker_image_name_prefix: "{{ 'localhost/' if matrix_mx_puppet_steam_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_mx_puppet_steam_docker_image: "{{ matrix_mx_puppet_steam_docker_image_registry_prefix }}icewind1991/mx-puppet-steam:{{ matrix_mx_puppet_steam_version }}" +matrix_mx_puppet_steam_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_steam_container_image_self_build else matrix_mx_puppet_steam_docker_image_registry_prefix_upstream }}" +matrix_mx_puppet_steam_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_steam_docker_image_registry_prefix_upstream_default }}" +matrix_mx_puppet_steam_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_mx_puppet_steam_docker_image_force_pull: "{{ matrix_mx_puppet_steam_docker_image.endswith(':latest') }}" matrix_mx_puppet_steam_base_path: "{{ matrix_base_data_path }}/mx-puppet-steam" diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/main.yml index 66d2980d3..a7619e431 100644 --- a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_install.yml b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_install.yml index a29c5e44f..298913aec 100644 --- a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_install.yml @@ -1,3 +1,15 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2020 Panagiotis Vasilopoulos +# SPDX-FileCopyrightText: 2020 Stuart Mumford +# 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-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure MX Puppet Steam paths exist diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_uninstall.yml index 75d0ebc0f..1281ee4f8 100644 --- a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mx-puppet-steam service diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/validate_config.yml b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/validate_config.yml index 7a09a8073..4c2dc020b 100644 --- a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 Hugues Morisset +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mx-puppet-steam settings not defined @@ -11,3 +16,11 @@ - {'name': 'matrix_mx_puppet_steam_homeserver_token', when: true} - {'name': 'matrix_mx_puppet_steam_database_hostname', when: "{{ matrix_mx_puppet_steam_database_engine == 'postgres' }}"} - {'name': 'matrix_mx_puppet_steam_container_network', when: true} + +- name: (Deprecation) Catch and report renamed mx-puppet-steam variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_mx_puppet_steam_docker_image_name_prefix', 'new': 'matrix_mx_puppet_steam_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mx-puppet-steam/templates/config.yaml.j2.license new file mode 100644 index 000000000..7b4bc3507 --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-steam/templates/config.yaml.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Hugues Morisset +SPDX-FileCopyrightText: 2020 MDAD project contributors +SPDX-FileCopyrightText: 2022 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/templates/systemd/matrix-mx-puppet-steam.service.j2 b/roles/custom/matrix-bridge-mx-puppet-steam/templates/systemd/matrix-mx-puppet-steam.service.j2 index cdb1efaa6..dd235a4e3 100644 --- a/roles/custom/matrix-bridge-mx-puppet-steam/templates/systemd/matrix-mx-puppet-steam.service.j2 +++ b/roles/custom/matrix-bridge-mx-puppet-steam/templates/systemd/matrix-mx-puppet-steam.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-steam 2>/dev/null || true' +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-mx-puppet-steam 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-steam 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-steam -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-steam 2>/dev/null || true' +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-mx-puppet-steam 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-steam 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/templates/systemd/matrix-mx-puppet-steam.service.j2.license b/roles/custom/matrix-bridge-mx-puppet-steam/templates/systemd/matrix-mx-puppet-steam.service.j2.license new file mode 100644 index 000000000..16b2b499b --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-steam/templates/systemd/matrix-mx-puppet-steam.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Hugues Morisset +SPDX-FileCopyrightText: 2020 Scott Crossen + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mx-puppet-twitter/defaults/main.yml b/roles/custom/matrix-bridge-mx-puppet-twitter/defaults/main.yml index 24fc7fc07..c556cda4a 100644 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/defaults/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-twitter/defaults/main.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Tulir Asokan +# 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 + --- # Mx Puppet Twitter is a Matrix <-> Twitter bridge @@ -19,8 +30,10 @@ matrix_mx_puppet_twitter_container_http_host_bind_port: '' # renovate: datasource=docker depName=sorunome/mx-puppet-twitter matrix_mx_puppet_twitter_version: latest -matrix_mx_puppet_twitter_docker_image: "{{ matrix_mx_puppet_twitter_docker_image_name_prefix }}sorunome/mx-puppet-twitter:{{ matrix_mx_puppet_twitter_version }}" -matrix_mx_puppet_twitter_docker_image_name_prefix: "{{ 'localhost/' if matrix_mx_puppet_twitter_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_mx_puppet_twitter_docker_image: "{{ matrix_mx_puppet_twitter_docker_image_registry_prefix }}sorunome/mx-puppet-twitter:{{ matrix_mx_puppet_twitter_version }}" +matrix_mx_puppet_twitter_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_twitter_container_image_self_build else matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream }}" +matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream_default }}" +matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_mx_puppet_twitter_docker_image_force_pull: "{{ matrix_mx_puppet_twitter_docker_image.endswith(':latest') }}" matrix_mx_puppet_twitter_base_path: "{{ matrix_base_data_path }}/mx-puppet-twitter" diff --git a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/main.yml index 3cfe6a793..b534f22c0 100644 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Tulir Asokan +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_install.yml b/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_install.yml index 8d385dd14..2f6a7807e 100644 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Stuart Mumford +# SPDX-FileCopyrightText: 2020 Tulir Asokan +# 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-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure MX Puppet Twitter paths exist diff --git a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_uninstall.yml index c529f0b34..c5f3bc2bf 100644 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Tulir Asokan +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mx-puppet-twitter service diff --git a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/validate_config.yml b/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/validate_config.yml index a8f6b0bb0..84e2c1c76 100644 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Tulir Asokan +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mx-puppet-twitter settings not defined @@ -18,8 +24,9 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_mx_puppet_twitter_webhook_path', 'new': '/dev/null || true' +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-mx-puppet-twitter 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-twitter 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -41,7 +41,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-twitter -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-twitter 2>/dev/null || true' +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-mx-puppet-twitter 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-twitter 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2.license b/roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2.license new file mode 100644 index 000000000..2bcb63426 --- /dev/null +++ b/roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Scott Crossen +SPDX-FileCopyrightText: 2020 Tulir Asokan + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-postmoogle/defaults/main.yml b/roles/custom/matrix-bridge-postmoogle/defaults/main.yml index 99bd6085a..595cfb1da 100644 --- a/roles/custom/matrix-bridge-postmoogle/defaults/main.yml +++ b/roles/custom/matrix-bridge-postmoogle/defaults/main.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Luke D Iremadze +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # postmoogle is an email to Matrix bridge using its bot user # Project source code URL: https://github.com/etkecc/postmoogle @@ -10,9 +18,11 @@ matrix_postmoogle_docker_repo_version: "{{ 'main' if matrix_postmoogle_version = matrix_postmoogle_docker_src_files_path: "{{ matrix_base_data_path }}/postmoogle/docker-src" # renovate: datasource=docker depName=ghcr.io/etkecc/postmoogle -matrix_postmoogle_version: v0.9.24 -matrix_postmoogle_docker_image: "{{ matrix_postmoogle_docker_image_name_prefix }}etkecc/postmoogle:{{ matrix_postmoogle_version }}" -matrix_postmoogle_docker_image_name_prefix: "{{ 'localhost/' if matrix_postmoogle_container_image_self_build else 'ghcr.io/' }}" +matrix_postmoogle_version: v0.9.26 +matrix_postmoogle_docker_image: "{{ matrix_postmoogle_docker_image_registry_prefix }}etkecc/postmoogle:{{ matrix_postmoogle_version }}" +matrix_postmoogle_docker_image_registry_prefix: "{{ 'localhost/' if matrix_postmoogle_container_image_self_build else matrix_postmoogle_docker_image_registry_prefix_upstream }}" +matrix_postmoogle_docker_image_registry_prefix_upstream: "{{ matrix_postmoogle_docker_image_registry_prefix_upstream_default }}" +matrix_postmoogle_docker_image_registry_prefix_upstream_default: "ghcr.io/" matrix_postmoogle_docker_image_force_pull: "{{ matrix_postmoogle_docker_image.endswith(':latest') }}" matrix_postmoogle_base_path: "{{ matrix_base_data_path }}/postmoogle" diff --git a/roles/custom/matrix-bridge-postmoogle/tasks/main.yml b/roles/custom/matrix-bridge-postmoogle/tasks/main.yml index 0b4dbc60b..ecbbff69a 100644 --- a/roles/custom/matrix-bridge-postmoogle/tasks/main.yml +++ b/roles/custom/matrix-bridge-postmoogle/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-postmoogle/tasks/setup_install.yml b/roles/custom/matrix-bridge-postmoogle/tasks/setup_install.yml index 61a8e7873..4dc78ddc7 100644 --- a/roles/custom/matrix-bridge-postmoogle/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-postmoogle/tasks/setup_install.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Check and remove the legacy systemd service (`matrix-bot-postmoogle.service`). diff --git a/roles/custom/matrix-bridge-postmoogle/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-postmoogle/tasks/setup_uninstall.yml index 28b243429..9db50fc5c 100644 --- a/roles/custom/matrix-bridge-postmoogle/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-postmoogle/tasks/setup_uninstall.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-postmoogle service diff --git a/roles/custom/matrix-bridge-postmoogle/tasks/validate_config.yml b/roles/custom/matrix-bridge-postmoogle/tasks/validate_config.yml index d486923d3..78b40d94c 100644 --- a/roles/custom/matrix-bridge-postmoogle/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-postmoogle/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required Postmoogle settings not defined @@ -10,3 +16,11 @@ - {'name': 'matrix_postmoogle_container_network', when: true} - {'name': 'matrix_postmoogle_homeserver', when: true} - {'name': 'matrix_postmoogle_database_hostname', when: "{{ matrix_postmoogle_database_engine == 'postgres' }}"} + +- name: (Deprecation) Catch and report renamed Postmoogle variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_postmoogle_docker_image_name_prefix', 'new': 'matrix_postmoogle_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-postmoogle/templates/env.j2 b/roles/custom/matrix-bridge-postmoogle/templates/env.j2 index b56f88ae2..a2a8348bf 100644 --- a/roles/custom/matrix-bridge-postmoogle/templates/env.j2 +++ b/roles/custom/matrix-bridge-postmoogle/templates/env.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +SPDX-FileCopyrightText: 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + POSTMOOGLE_LOGIN={{ matrix_postmoogle_login }} POSTMOOGLE_PASSWORD={{ matrix_postmoogle_password }} POSTMOOGLE_SHAREDSECRET={{ matrix_postmoogle_sharedsecret }} diff --git a/roles/custom/matrix-bridge-postmoogle/templates/systemd/matrix-postmoogle.service.j2 b/roles/custom/matrix-bridge-postmoogle/templates/systemd/matrix-postmoogle.service.j2 index fa4c1bf36..5d730184e 100644 --- a/roles/custom/matrix-bridge-postmoogle/templates/systemd/matrix-postmoogle.service.j2 +++ b/roles/custom/matrix-bridge-postmoogle/templates/systemd/matrix-postmoogle.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-postmoogle 2>/dev/null || true' +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-postmoogle 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-postmoogle 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -44,7 +44,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-postmoogle -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-postmoogle 2>/dev/null || true' +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-postmoogle 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-postmoogle 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-postmoogle/templates/systemd/matrix-postmoogle.service.j2.license b/roles/custom/matrix-bridge-postmoogle/templates/systemd/matrix-postmoogle.service.j2.license new file mode 100644 index 000000000..c8f114ab8 --- /dev/null +++ b/roles/custom/matrix-bridge-postmoogle/templates/systemd/matrix-postmoogle.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Nikita Chernyi +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-sms/defaults/main.yml b/roles/custom/matrix-bridge-sms/defaults/main.yml index 048bc85c2..992d8b936 100644 --- a/roles/custom/matrix-bridge-sms/defaults/main.yml +++ b/roles/custom/matrix-bridge-sms/defaults/main.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2021 boris runakov +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-sms-bridge is a Matrix <-> SMS bridge # Project source code URL: https://github.com/benkuly/matrix-sms-bridge @@ -6,7 +16,11 @@ matrix_sms_bridge_enabled: true # renovate: datasource=docker depName=folivonet/matrix-sms-bridge matrix_sms_bridge_version: 0.5.9 -matrix_sms_bridge_docker_image: "{{ matrix_container_global_registry_prefix }}folivonet/matrix-sms-bridge:{{ matrix_sms_bridge_version }}" +matrix_sms_bridge_docker_image: "{{ matrix_sms_bridge_docker_image_registry_prefix }}folivonet/matrix-sms-bridge:{{ matrix_sms_bridge_docker_image_tag }}" +matrix_sms_bridge_docker_image_registry_prefix: "{{ matrix_sms_bridge_docker_image_registry_prefix_upstream }}" +matrix_sms_bridge_docker_image_registry_prefix_upstream: "{{ matrix_sms_bridge_docker_image_registry_prefix_upstream_default }}" +matrix_sms_bridge_docker_image_registry_prefix_upstream_default: "docker.io/" +matrix_sms_bridge_docker_image_tag: "{{ matrix_sms_bridge_version }}" matrix_sms_bridge_base_path: "{{ matrix_base_data_path }}/matrix-sms-bridge" matrix_sms_bridge_config_path: "{{ matrix_base_data_path }}/matrix-sms-bridge/config" diff --git a/roles/custom/matrix-bridge-sms/tasks/main.yml b/roles/custom/matrix-bridge-sms/tasks/main.yml index 57d517275..574dba74b 100644 --- a/roles/custom/matrix-bridge-sms/tasks/main.yml +++ b/roles/custom/matrix-bridge-sms/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-sms/tasks/setup_install.yml b/roles/custom/matrix-bridge-sms/tasks/setup_install.yml index 1fc34b9ca..a46bc21dc 100644 --- a/roles/custom/matrix-bridge-sms/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-sms/tasks/setup_install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# 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-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-sms-bridge image is pulled diff --git a/roles/custom/matrix-bridge-sms/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-sms/tasks/setup_uninstall.yml index c7d0011ec..f6e1e2a6e 100644 --- a/roles/custom/matrix-bridge-sms/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-sms/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-sms-bridge service diff --git a/roles/custom/matrix-bridge-sms/tasks/validate_config.yml b/roles/custom/matrix-bridge-sms/tasks/validate_config.yml index 474e2526c..2830ae8bb 100644 --- a/roles/custom/matrix-bridge-sms/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-sms/tasks/validate_config.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2021 boris runakov +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-bridge-sms settings not defined diff --git a/roles/custom/matrix-bridge-sms/templates/systemd/matrix-sms-bridge.service.j2 b/roles/custom/matrix-bridge-sms/templates/systemd/matrix-sms-bridge.service.j2 index 5f12e4922..49af8b715 100644 --- a/roles/custom/matrix-bridge-sms/templates/systemd/matrix-sms-bridge.service.j2 +++ b/roles/custom/matrix-bridge-sms/templates/systemd/matrix-sms-bridge.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-sms-bridge 2>/dev/null || true' +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-sms-bridge 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-sms-bridge 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -40,7 +40,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-sms-bridge -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-sms-bridge 2>/dev/null || true' +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-sms-bridge 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-sms-bridge 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-sms/templates/systemd/matrix-sms-bridge.service.j2.license b/roles/custom/matrix-bridge-sms/templates/systemd/matrix-sms-bridge.service.j2.license new file mode 100644 index 000000000..cb09f3c35 --- /dev/null +++ b/roles/custom/matrix-bridge-sms/templates/systemd/matrix-sms-bridge.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 MDAD project contributors +SPDX-FileCopyrightText: 2020 Scott Crossen + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-wechat/defaults/main.yml b/roles/custom/matrix-bridge-wechat/defaults/main.yml index 1ca0c910f..907f959ba 100644 --- a/roles/custom/matrix-bridge-wechat/defaults/main.yml +++ b/roles/custom/matrix-bridge-wechat/defaults/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # WeChat Bridge is a Matrix <-> WeChat bridge @@ -7,8 +12,10 @@ matrix_wechat_enabled: true # renovate: datasource=docker depName=lxduo/matrix-wechat matrix_wechat_version: 0.2.4 -matrix_wechat_container_image: "{{ matrix_wechat_container_image_name_prefix }}lxduo/matrix-wechat:{{ matrix_wechat_version }}" -matrix_wechat_container_image_name_prefix: "{{ 'localhost/' if matrix_wechat_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_wechat_container_image: "{{ matrix_wechat_container_image_registry_prefix }}lxduo/matrix-wechat:{{ matrix_wechat_version }}" +matrix_wechat_container_image_registry_prefix: "{{ 'localhost/' if matrix_wechat_container_image_self_build else matrix_wechat_container_image_registry_prefix_upstream }}" +matrix_wechat_container_image_registry_prefix_upstream: "{{ matrix_wechat_container_image_registry_prefix_upstream_default }}" +matrix_wechat_container_image_registry_prefix_upstream_default: "docker.io/" matrix_wechat_container_image_force_pull: "{{ matrix_wechat_container_image.endswith(':latest') }}" matrix_wechat_container_image_self_build: false @@ -17,8 +24,10 @@ matrix_wechat_container_image_self_build_branch: "{{ 'master' if matrix_wechat_v # renovate: datasource=docker depName=lxduo/matrix-wechat-agent matrix_wechat_agent_version: 0.0.1 -matrix_wechat_agent_container_image: "{{ matrix_wechat_agent_container_image_name_prefix }}lxduo/matrix-wechat-agent:{{ matrix_wechat_agent_version }}" -matrix_wechat_agent_container_image_name_prefix: "{{ 'localhost/' if matrix_wechat_agent_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_wechat_agent_container_image: "{{ matrix_wechat_agent_container_image_registry_prefix }}lxduo/matrix-wechat-agent:{{ matrix_wechat_agent_version }}" +matrix_wechat_agent_container_image_registry_prefix: "{{ 'localhost/' if matrix_wechat_agent_container_image_self_build else matrix_wechat_agent_container_image_registry_prefix_upstream }}" +matrix_wechat_agent_container_image_registry_prefix_upstream: "{{ matrix_wechat_agent_container_image_registry_prefix_upstream_default }}" +matrix_wechat_agent_container_image_registry_prefix_upstream_default: "docker.io/" matrix_wechat_agent_container_image_force_pull: "{{ matrix_wechat_agent_container_image.endswith(':latest') }}" # The agent needs to write to /home/user/.vnc. @@ -95,7 +104,7 @@ matrix_wechat_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" matrix_wechat_encryption_default: "{{ matrix_wechat_encryption_allow }}" # Minimum severity of journal log messages. -# Options: debug, info, warn, error, fatal +# Valid values: fatal, error, warn, info, debug matrix_wechat_log_level: 'warn' matrix_wechat_permissions: | diff --git a/roles/custom/matrix-bridge-wechat/tasks/install.yml b/roles/custom/matrix-bridge-wechat/tasks/install.yml index 36d530c75..607ca780b 100644 --- a/roles/custom/matrix-bridge-wechat/tasks/install.yml +++ b/roles/custom/matrix-bridge-wechat/tasks/install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure WeChat Bridge paths exists @@ -111,6 +116,7 @@ - name: Ensure matrix-wechat container network is created community.general.docker_network: + enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" name: "{{ matrix_wechat_container_network }}" driver: bridge driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" diff --git a/roles/custom/matrix-bridge-wechat/tasks/main.yml b/roles/custom/matrix-bridge-wechat/tasks/main.yml index effcd7d5e..bcad351ab 100644 --- a/roles/custom/matrix-bridge-wechat/tasks/main.yml +++ b/roles/custom/matrix-bridge-wechat/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-wechat/tasks/uninstall.yml b/roles/custom/matrix-bridge-wechat/tasks/uninstall.yml index cf19203fa..7972bd7df 100644 --- a/roles/custom/matrix-bridge-wechat/tasks/uninstall.yml +++ b/roles/custom/matrix-bridge-wechat/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-wechat service diff --git a/roles/custom/matrix-bridge-wechat/tasks/validate_config.yml b/roles/custom/matrix-bridge-wechat/tasks/validate_config.yml index 49159be21..c74f26390 100644 --- a/roles/custom/matrix-bridge-wechat/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-wechat/tasks/validate_config.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required WeChat settings not defined @@ -17,3 +21,12 @@ when: matrix_architecture not in ['amd64'] ansible.builtin.fail: msg: "The WeChat Agent does not support the '{{ matrix_architecture }}' architecture yet. Its Dockerfile downloads amd64 binaries and does not work on arm64." + +- name: (Deprecation) Catch and report renamed WeChat variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_wechat_container_image_name_prefix', 'new': 'matrix_wechat_container_image_registry_prefix'} + - {'old': 'matrix_wechat_agent_container_image_name_prefix', 'new': 'matrix_wechat_agent_container_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-wechat/templates/agent-config.yaml.j2 b/roles/custom/matrix-bridge-wechat/templates/agent-config.yaml.j2 index 19c1d1ad9..6b30c6345 100644 --- a/roles/custom/matrix-bridge-wechat/templates/agent-config.yaml.j2 +++ b/roles/custom/matrix-bridge-wechat/templates/agent-config.yaml.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + wechat: version: 3.8.1.26 listen_port: 22222 diff --git a/roles/custom/matrix-bridge-wechat/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-wechat/templates/config.yaml.j2.license new file mode 100644 index 000000000..9470a96a3 --- /dev/null +++ b/roles/custom/matrix-bridge-wechat/templates/config.yaml.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2024 Nikita Chernyi +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat-agent.service.j2 b/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat-agent.service.j2 index 8e5ea5239..dc8d348da 100644 --- a/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat-agent.service.j2 +++ b/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat-agent.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-wechat-agent 2>/dev/null || true' +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-wechat-agent 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-wechat-agent 2>/dev/null || true' {# @@ -39,7 +39,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-wechat-agent -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-wechat-agent 2>/dev/null || true' +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-wechat-agent 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-wechat-agent 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat-agent.service.j2.license b/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat-agent.service.j2.license new file mode 100644 index 000000000..e18b238ea --- /dev/null +++ b/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat-agent.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat.service.j2 b/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat.service.j2 index 96f87e9bb..193042a66 100644 --- a/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat.service.j2 +++ b/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-wechat 2>/dev/null || true' +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-wechat 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-wechat 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -37,7 +37,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-wechat -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-wechat 2>/dev/null || true' +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-wechat 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-wechat 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat.service.j2.license b/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat.service.j2.license new file mode 100644 index 000000000..e18b238ea --- /dev/null +++ b/roles/custom/matrix-bridge-wechat/templates/systemd/matrix-wechat.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-cactus-comments-client/defaults/main.yml b/roles/custom/matrix-cactus-comments-client/defaults/main.yml index 6a43ba585..b753a6c24 100644 --- a/roles/custom/matrix-cactus-comments-client/defaults/main.yml +++ b/roles/custom/matrix-cactus-comments-client/defaults/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Cactus Comments is a federated comment system built on Matrix. # This role installs the client assets (JS, CSS files). @@ -13,9 +18,12 @@ matrix_cactus_comments_client_public_path: "{{ matrix_cactus_comments_client_bas matrix_cactus_comments_client_public_path_file_permissions: "0644" # renovate: datasource=docker depName=joseluisq/static-web-server -matrix_cactus_comments_client_version: 2.35.0 +matrix_cactus_comments_client_version: 2.36.1 -matrix_cactus_comments_client_container_image: "{{ matrix_container_global_registry_prefix }}joseluisq/static-web-server:{{ matrix_cactus_comments_client_container_image_tag }}" +matrix_cactus_comments_client_container_image: "{{ matrix_cactus_comments_client_container_image_registry_prefix }}joseluisq/static-web-server:{{ matrix_cactus_comments_client_container_image_tag }}" +matrix_cactus_comments_client_container_image_registry_prefix: "{{ matrix_cactus_comments_client_container_image_registry_prefix_upstream }}" +matrix_cactus_comments_client_container_image_registry_prefix_upstream: "{{ matrix_cactus_comments_client_container_image_registry_prefix_upstream_default }}" +matrix_cactus_comments_client_container_image_registry_prefix_upstream_default: docker.io/ matrix_cactus_comments_client_container_image_tag: "{{ 'latest' if matrix_cactus_comments_client_version == 'latest' else (matrix_cactus_comments_client_version + '-alpine') }}" matrix_cactus_comments_client_container_image_force_pull: "{{ matrix_cactus_comments_client_container_image.endswith(':latest') }}" @@ -67,7 +75,7 @@ matrix_cactus_comments_client_environment_variable_server_port: 8080 # Controls the SERVER_LOG_LEVEL environment variable. # See: https://static-web-server.net/configuration/environment-variables/ -# Valid values: error, warn, info, debug or trace +# Valid values: error, warn, info, debug, trace matrix_cactus_comments_client_environment_variable_server_log_level: error # Controls the SERVER_LOG_REMOTE_ADDRESS environment variable. diff --git a/roles/custom/matrix-cactus-comments-client/tasks/install.yml b/roles/custom/matrix-cactus-comments-client/tasks/install.yml index 16fdde5e2..6a86df4ce 100644 --- a/roles/custom/matrix-cactus-comments-client/tasks/install.yml +++ b/roles/custom/matrix-cactus-comments-client/tasks/install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-cactus-comments-client paths exist diff --git a/roles/custom/matrix-cactus-comments-client/tasks/main.yml b/roles/custom/matrix-cactus-comments-client/tasks/main.yml index 9423aada2..7defa906b 100644 --- a/roles/custom/matrix-cactus-comments-client/tasks/main.yml +++ b/roles/custom/matrix-cactus-comments-client/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-cactus-comments-client/tasks/uninstall.yml b/roles/custom/matrix-cactus-comments-client/tasks/uninstall.yml index df6c55324..f38c7658c 100644 --- a/roles/custom/matrix-cactus-comments-client/tasks/uninstall.yml +++ b/roles/custom/matrix-cactus-comments-client/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-cactus-comments-client service diff --git a/roles/custom/matrix-cactus-comments-client/tasks/validate_config.yml b/roles/custom/matrix-cactus-comments-client/tasks/validate_config.yml index c1142ce32..fc3901551 100644 --- a/roles/custom/matrix-cactus-comments-client/tasks/validate_config.yml +++ b/roles/custom/matrix-cactus-comments-client/tasks/validate_config.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-cactus-comments-client settings not defined diff --git a/roles/custom/matrix-cactus-comments-client/templates/env.j2.license b/roles/custom/matrix-cactus-comments-client/templates/env.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-cactus-comments-client/templates/env.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-cactus-comments-client/templates/labels.j2 b/roles/custom/matrix-cactus-comments-client/templates/labels.j2 index 274ba9e07..d5e7291ae 100644 --- a/roles/custom/matrix-cactus-comments-client/templates/labels.j2 +++ b/roles/custom/matrix-cactus-comments-client/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_cactus_comments_client_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-cactus-comments-client/templates/systemd/matrix-cactus-comments-client.service.j2 b/roles/custom/matrix-cactus-comments-client/templates/systemd/matrix-cactus-comments-client.service.j2 index 10fd74d94..6e49e6fad 100755 --- a/roles/custom/matrix-cactus-comments-client/templates/systemd/matrix-cactus-comments-client.service.j2 +++ b/roles/custom/matrix-cactus-comments-client/templates/systemd/matrix-cactus-comments-client.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-cactus-comments-client 2>/dev/null || true' +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-cactus-comments-client 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-cactus-comments-client 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-cactus-comments-client -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-cactus-comments-client 2>/dev/null || true' +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-cactus-comments-client 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-cactus-comments-client 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-cactus-comments-client/templates/systemd/matrix-cactus-comments-client.service.j2.license b/roles/custom/matrix-cactus-comments-client/templates/systemd/matrix-cactus-comments-client.service.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-cactus-comments-client/templates/systemd/matrix-cactus-comments-client.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-cactus-comments/defaults/main.yml b/roles/custom/matrix-cactus-comments/defaults/main.yml index a31ae1a1d..6189f9faf 100644 --- a/roles/custom/matrix-cactus-comments/defaults/main.yml +++ b/roles/custom/matrix-cactus-comments/defaults/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Cactus Comments is a federated comment system built on Matrix. # This role installs the backend appservice. @@ -27,7 +33,11 @@ matrix_cactus_comments_container_port: 5000 # renovate: datasource=docker depName=cactuscomments/cactus-appservice matrix_cactus_comments_version: 0.9.0 -matrix_cactus_comments_docker_image: "{{ matrix_container_global_registry_prefix }}cactuscomments/cactus-appservice:{{ matrix_cactus_comments_version }}" +matrix_cactus_comments_docker_image: "{{ matrix_cactus_comments_docker_image_registry_prefix }}cactuscomments/cactus-appservice:{{ matrix_cactus_comments_docker_image_tag }}" +matrix_cactus_comments_docker_image_registry_prefix: "{{ 'localhost/' if matrix_cactus_comments_container_image_self_build else matrix_cactus_comments_docker_image_registry_prefix_upstream }}" +matrix_cactus_comments_docker_image_registry_prefix_upstream: "{{ matrix_cactus_comments_docker_image_registry_prefix_upstream_default }}" +matrix_cactus_comments_docker_image_registry_prefix_upstream_default: docker.io/ +matrix_cactus_comments_docker_image_tag: "{{ matrix_cactus_comments_version }}" matrix_cactus_comments_docker_image_force_pull: "{{ matrix_cactus_comments_docker_image.endswith(':latest') }}" matrix_cactus_comments_container_network: "" diff --git a/roles/custom/matrix-cactus-comments/tasks/main.yml b/roles/custom/matrix-cactus-comments/tasks/main.yml index 12ee16717..6d2a418ff 100644 --- a/roles/custom/matrix-cactus-comments/tasks/main.yml +++ b/roles/custom/matrix-cactus-comments/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-cactus-comments/tasks/setup_install.yml b/roles/custom/matrix-cactus-comments/tasks/setup_install.yml index b79611595..5e6219746 100644 --- a/roles/custom/matrix-cactus-comments/tasks/setup_install.yml +++ b/roles/custom/matrix-cactus-comments/tasks/setup_install.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-cactus-comments paths exist diff --git a/roles/custom/matrix-cactus-comments/tasks/setup_uninstall.yml b/roles/custom/matrix-cactus-comments/tasks/setup_uninstall.yml index 833708aa7..4eebcacaf 100644 --- a/roles/custom/matrix-cactus-comments/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-cactus-comments/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-cactus-comments service diff --git a/roles/custom/matrix-cactus-comments/tasks/validate_config.yml b/roles/custom/matrix-cactus-comments/tasks/validate_config.yml index 683b2f0d9..125b4b858 100644 --- a/roles/custom/matrix-cactus-comments/tasks/validate_config.yml +++ b/roles/custom/matrix-cactus-comments/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: (Deprecation) Catch and report renamed matrix-cactus-comments settings ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_bot_cactus_comments_systemd_required_services_list', 'new': 'matrix_cactus_comments_systemd_required_services_list'} diff --git a/roles/custom/matrix-cactus-comments/templates/cactus_appservice.yaml.j2 b/roles/custom/matrix-cactus-comments/templates/cactus_appservice.yaml.j2 index 007a2e87a..2ecf4d508 100644 --- a/roles/custom/matrix-cactus-comments/templates/cactus_appservice.yaml.j2 +++ b/roles/custom/matrix-cactus-comments/templates/cactus_appservice.yaml.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # A unique, user-defined ID of the application service which will never change. id: "Cactus Comments" diff --git a/roles/custom/matrix-cactus-comments/templates/env.j2.license b/roles/custom/matrix-cactus-comments/templates/env.j2.license new file mode 100644 index 000000000..da108d1da --- /dev/null +++ b/roles/custom/matrix-cactus-comments/templates/env.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-cactus-comments/templates/systemd/matrix-cactus-comments.service.j2 b/roles/custom/matrix-cactus-comments/templates/systemd/matrix-cactus-comments.service.j2 index 9c862e178..64220e310 100644 --- a/roles/custom/matrix-cactus-comments/templates/systemd/matrix-cactus-comments.service.j2 +++ b/roles/custom/matrix-cactus-comments/templates/systemd/matrix-cactus-comments.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-cactus-comments 2>/dev/null || true' +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-cactus-comments 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-cactus-comments 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -34,7 +34,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-cactus-comments -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-cactus-comments 2>/dev/null || true' +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-cactus-comments 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-cactus-comments 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-cactus-comments/templates/systemd/matrix-cactus-comments.service.j2.license b/roles/custom/matrix-cactus-comments/templates/systemd/matrix-cactus-comments.service.j2.license new file mode 100644 index 000000000..1c63cc4e4 --- /dev/null +++ b/roles/custom/matrix-cactus-comments/templates/systemd/matrix-cactus-comments.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-cinny/defaults/main.yml b/roles/custom/matrix-client-cinny/defaults/main.yml index 86e5d9ef9..0974ffa92 100644 --- a/roles/custom/matrix-client-cinny/defaults/main.yml +++ b/roles/custom/matrix-client-cinny/defaults/main.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 László Várady +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# 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/ajbura/cinny @@ -7,9 +17,11 @@ matrix_client_cinny_container_image_self_build: false matrix_client_cinny_container_image_self_build_repo: "https://github.com/ajbura/cinny.git" # renovate: datasource=docker depName=ajbura/cinny -matrix_client_cinny_version: v4.2.3 -matrix_client_cinny_docker_image: "{{ matrix_client_cinny_docker_image_name_prefix }}ajbura/cinny:{{ matrix_client_cinny_version }}" -matrix_client_cinny_docker_image_name_prefix: "{{ 'localhost/' if matrix_client_cinny_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_client_cinny_version: v4.6.0 +matrix_client_cinny_docker_image: "{{ matrix_client_cinny_docker_image_registry_prefix }}ajbura/cinny:{{ matrix_client_cinny_version }}" +matrix_client_cinny_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_cinny_container_image_self_build else matrix_client_cinny_docker_image_registry_prefix_upstream }}" +matrix_client_cinny_docker_image_registry_prefix_upstream: "{{ matrix_client_cinny_docker_image_registry_prefix_upstream_default }}" +matrix_client_cinny_docker_image_registry_prefix_upstream_default: docker.io/ matrix_client_cinny_docker_image_force_pull: "{{ matrix_client_cinny_docker_image.endswith(':latest') }}" matrix_client_cinny_data_path: "{{ matrix_base_data_path }}/client-cinny" diff --git a/roles/custom/matrix-client-cinny/tasks/main.yml b/roles/custom/matrix-client-cinny/tasks/main.yml index 40c6514b5..935b4ee03 100644 --- a/roles/custom/matrix-client-cinny/tasks/main.yml +++ b/roles/custom/matrix-client-cinny/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-client-cinny/tasks/self_check.yml b/roles/custom/matrix-client-cinny/tasks/self_check.yml index 8e8634153..054fdf87e 100644 --- a/roles/custom/matrix-client-cinny/tasks/self_check.yml +++ b/roles/custom/matrix-client-cinny/tasks/self_check.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-client-cinny/tasks/setup_install.yml b/roles/custom/matrix-client-cinny/tasks/setup_install.yml index ab3dcbf64..228aa0614 100644 --- a/roles/custom/matrix-client-cinny/tasks/setup_install.yml +++ b/roles/custom/matrix-client-cinny/tasks/setup_install.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Cinny paths exists ansible.builtin.file: diff --git a/roles/custom/matrix-client-cinny/tasks/setup_uninstall.yml b/roles/custom/matrix-client-cinny/tasks/setup_uninstall.yml index a73825623..7a8b5f1bc 100644 --- a/roles/custom/matrix-client-cinny/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-client-cinny/tasks/setup_uninstall.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-client-cinny.service ansible.builtin.stat: diff --git a/roles/custom/matrix-client-cinny/tasks/validate_config.yml b/roles/custom/matrix-client-cinny/tasks/validate_config.yml index 7a7ee2dfe..b3e324a38 100644 --- a/roles/custom/matrix-client-cinny/tasks/validate_config.yml +++ b/roles/custom/matrix-client-cinny/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required Cinny settings not defined ansible.builtin.fail: @@ -9,6 +14,14 @@ - {'name': 'matrix_client_cinny_container_network', when: true} - {'name': 'matrix_client_cinny_container_labels_traefik_compression_middleware_name', when: "{{ matrix_client_cinny_container_labels_traefik_compression_middleware_enabled }}"} +- name: (Deprecation) Catch and report renamed Cinny variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_client_cinny_container_image_name_prefix', 'new': 'matrix_client_cinny_container_image_registry_prefix'} + - name: Fail if matrix_client_cinny_path_prefix is not / ansible.builtin.fail: msg: >- diff --git a/roles/custom/matrix-client-cinny/templates/config.json.j2.license b/roles/custom/matrix-client-cinny/templates/config.json.j2.license new file mode 100644 index 000000000..33dc112bd --- /dev/null +++ b/roles/custom/matrix-client-cinny/templates/config.json.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-cinny/templates/labels.j2 b/roles/custom/matrix-client-cinny/templates/labels.j2 index e18e804c0..17e4057d0 100644 --- a/roles/custom/matrix-client-cinny/templates/labels.j2 +++ b/roles/custom/matrix-client-cinny/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_client_cinny_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-client-cinny/templates/nginx.conf.j2.license b/roles/custom/matrix-client-cinny/templates/nginx.conf.j2.license new file mode 100644 index 000000000..ec432fa3c --- /dev/null +++ b/roles/custom/matrix-client-cinny/templates/nginx.conf.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2024 James Reilly + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-cinny/templates/systemd/matrix-client-cinny.service.j2 b/roles/custom/matrix-client-cinny/templates/systemd/matrix-client-cinny.service.j2 index c5b5ab3ac..6aac5e9c3 100644 --- a/roles/custom/matrix-client-cinny/templates/systemd/matrix-client-cinny.service.j2 +++ b/roles/custom/matrix-client-cinny/templates/systemd/matrix-client-cinny.service.j2 @@ -10,7 +10,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-client-cinny 2>/dev/null || true' +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-client-cinny 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-cinny 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -39,7 +39,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-client-cinny -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-client-cinny 2>/dev/null || true' +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-client-cinny 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-cinny 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-client-cinny/templates/systemd/matrix-client-cinny.service.j2.license b/roles/custom/matrix-client-cinny/templates/systemd/matrix-client-cinny.service.j2.license new file mode 100644 index 000000000..c751d3d6f --- /dev/null +++ b/roles/custom/matrix-client-cinny/templates/systemd/matrix-client-cinny.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-element/defaults/main.yml b/roles/custom/matrix-client-element/defaults/main.yml index 8f4e9cb67..fa32f286d 100644 --- a/roles/custom/matrix-client-element/defaults/main.yml +++ b/roles/custom/matrix-client-element/defaults/main.yml @@ -1,3 +1,21 @@ +# SPDX-FileCopyrightText: 2020 - 2022 Aaron Raimist +# SPDX-FileCopyrightText: 2020 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Dan Arnfield +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2021 Paul Tötterman +# SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 - 2025 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Christos Karamolegkos +# SPDX-FileCopyrightText: 2022 Joe Kappus +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Igor Goldenberg +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# 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/element-hq/element-web @@ -10,11 +28,13 @@ matrix_client_element_container_image_self_build_repo: "https://github.com/eleme # - https://github.com/element-hq/element-web/issues/19544 matrix_client_element_container_image_self_build_low_memory_system_patch_enabled: "{{ ansible_memtotal_mb < 4096 }}" -# renovate: datasource=docker depName=vectorim/element-web -matrix_client_element_version: v1.11.90 +# renovate: datasource=docker depName=ghcr.io/element-hq/element-web +matrix_client_element_version: v1.11.97 -matrix_client_element_docker_image: "{{ matrix_client_element_docker_image_name_prefix }}vectorim/element-web:{{ matrix_client_element_version }}" -matrix_client_element_docker_image_name_prefix: "{{ 'localhost/' if matrix_client_element_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_client_element_docker_image: "{{ matrix_client_element_docker_image_registry_prefix }}element-hq/element-web:{{ matrix_client_element_version }}" +matrix_client_element_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_element_container_image_self_build else matrix_client_element_docker_image_registry_prefix_upstream }}" +matrix_client_element_docker_image_registry_prefix_upstream: "{{ matrix_client_element_docker_image_registry_prefix_upstream_default }}" +matrix_client_element_docker_image_registry_prefix_upstream_default: ghcr.io/ matrix_client_element_docker_image_force_pull: "{{ matrix_client_element_docker_image.endswith(':latest') }}" matrix_client_element_data_path: "{{ matrix_base_data_path }}/client-element" @@ -28,9 +48,16 @@ matrix_client_element_container_network: '' # Use this to expose this container to a reverse proxy, which runs in a different container network. matrix_client_element_container_additional_networks: [] +# Controls the in-container port that Element will use. +# +# Also see: `matrix_client_element_container_http_host_bind_port` +matrix_client_element_container_port: 8080 + # Controls whether the matrix-client-element container exposes its HTTP port (tcp/8080 in the container). # # Takes an ":" or "" value (e.g. "127.0.0.1:8765"), or empty string to not expose. +# +# Also see: `matrix_client_element_container_port` matrix_client_element_container_http_host_bind_port: '' # matrix_client_element_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container. @@ -83,6 +110,11 @@ matrix_client_element_container_extra_arguments: [] # List of systemd services that matrix-client-element.service depends on matrix_client_element_systemd_required_services_list: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" +# Controls the healthcheck command for the container. +# +# Leave empty to use the default (upstream) command. +matrix_client_element_container_healthcheck_cmd: "" + # Specifies the value of the `X-XSS-Protection` header # Stops pages from loading when they detect reflected cross-site scripting (XSS) attacks. # @@ -180,6 +212,67 @@ matrix_client_element_branding_auth_header_logo_url: "{{ matrix_client_element_w # URL to Wallpaper, shown in background of welcome page matrix_client_element_branding_welcome_background_url: ~ # noqa var-naming +# Controls the `features` section of the Element Web configuration. +matrix_client_element_features: "{{ matrix_client_element_features_default | combine(matrix_client_element_features_auto, recursive=True) | combine(matrix_client_element_features_custom, recursive=True) }}" +matrix_client_element_features_default: |- + {{ + {} + + | combine( + {'feature_video_rooms': true} if matrix_client_element_features_feature_video_rooms else {} + ) + | combine( + {'feature_group_calls': true} if matrix_client_element_features_feature_group_calls else {} + ) + | combine( + {'feature_element_call_video_rooms': true} if matrix_client_element_features_feature_element_call_video_rooms else {} + ) + | combine( + {'feature_oidc_native_flow': true} if matrix_client_element_features_feature_oidc_native_flow else {} + ) + }} + +matrix_client_element_features_auto: {} +matrix_client_element_features_custom: {} + +matrix_client_element_features_feature_video_rooms: false +matrix_client_element_features_feature_group_calls: false +matrix_client_element_features_feature_element_call_video_rooms: false +matrix_client_element_features_feature_oidc_native_flow: false + +matrix_client_element_element_call_enabled: false +matrix_client_element_element_call: "{{ matrix_client_element_element_call_default | combine(matrix_client_element_element_call_auto, recursive=True) | combine(matrix_client_element_element_call_custom, recursive=True) }}" +matrix_client_element_element_call_default: |- + {{ + {} + | combine( + {'url': matrix_client_element_element_call_url} if matrix_client_element_element_call_url else {} + ) + | combine( + {'participant_limit': matrix_client_element_element_call_participant_limit} if matrix_client_element_element_call_participant_limit else {} + ) + | combine( + {'brand': matrix_client_element_element_call_brand} if matrix_client_element_element_call_brand else {} + ) + | combine( + {'use_exclusively': matrix_client_element_element_call_use_exclusively} if matrix_client_element_element_call_use_exclusively else {} + ) + }} +matrix_client_element_element_call_auto: {} +matrix_client_element_element_call_custom: {} + +# Controls the `element_call.url` setting in the Element Web configuration. +matrix_client_element_element_call_url: '' + +# Controls the `element_call.participant_limit` setting in the Element Web configuration. +matrix_client_element_element_call_participant_limit: 8 + +# Controls the `element_call.brand` setting in the Element Web configuration. +matrix_client_element_element_call_brand: "Element Call" + +# Controls the `element_call.use_exclusively` setting in the Element Web configuration. +matrix_client_element_element_call_use_exclusively: true + matrix_client_element_page_template_welcome_path: "{{ role_path }}/templates/welcome.html.j2" # By default, there's no Element Web homepage (when logged in). If you wish to have one, @@ -194,7 +287,7 @@ matrix_client_element_self_check_validate_certificates: true # don't show the registration button on welcome page matrix_client_element_registration_enabled: false -# Default country code on welcome page when login by phone number +# An optional ISO 3166 alpha2 country code (eg: GB, the default) to use when showing phone number inputs matrix_client_element_default_country_code: "GB" # Controls whether presence will be enabled @@ -322,3 +415,15 @@ matrix_client_element_location_sharing_map_style_content_sources_localsource_att # Optional URL to redirect the user to after they have logged out. # See https://github.com/element-hq/element-web/blob/develop/docs/config.md#sso-setup matrix_client_element_logout_redirect_url: '' + +# Controls the `ELEMENT_WEB_PORT` environment variable. +matrix_client_element_environment_variable_element_web_port: "{{ matrix_client_element_container_port }}" + +# Additional environment variables to pass to the container. +# +# Environment variables take priority over settings in the configuration file. +# +# Example: +# matrix_client_element_environment_variables_extension: | +# ELEMENT_WEB_PORT=8080 +matrix_client_element_environment_variables_extension: '' diff --git a/roles/custom/matrix-client-element/tasks/main.yml b/roles/custom/matrix-client-element/tasks/main.yml index 770200678..eddb03ad0 100644 --- a/roles/custom/matrix-client-element/tasks/main.yml +++ b/roles/custom/matrix-client-element/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-client-element/tasks/prepare_themes.yml b/roles/custom/matrix-client-element/tasks/prepare_themes.yml index cb3bf2bd4..56ddb3403 100644 --- a/roles/custom/matrix-client-element/tasks/prepare_themes.yml +++ b/roles/custom/matrix-client-element/tasks/prepare_themes.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # diff --git a/roles/custom/matrix-client-element/tasks/self_check.yml b/roles/custom/matrix-client-element/tasks/self_check.yml index 8a08d8d04..b2e70a5d1 100644 --- a/roles/custom/matrix-client-element/tasks/self_check.yml +++ b/roles/custom/matrix-client-element/tasks/self_check.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-client-element/tasks/setup_install.yml b/roles/custom/matrix-client-element/tasks/setup_install.yml index e528faa8b..10a8b61ae 100644 --- a/roles/custom/matrix-client-element/tasks/setup_install.yml +++ b/roles/custom/matrix-client-element/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Element Web paths exists @@ -84,12 +95,17 @@ owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" with_items: - - {src: "{{ role_path }}/templates/nginx.conf.j2", name: "nginx.conf"} - {src: "{{ role_path }}/templates/labels.j2", name: "labels"} + - {src: "{{ role_path }}/templates/env.j2", name: "env"} - {src: "{{ matrix_client_element_page_template_welcome_path }}", name: "welcome.html"} - {src: "{{ matrix_client_element_embedded_pages_home_path }}", name: "home.html"} when: "item.src is not none" +- name: Ensure Element Web nginx.conf file is removed + ansible.builtin.file: + path: "{{ matrix_client_element_data_path }}/nginx.conf" + state: absent + - name: Ensure Element Web config files removed ansible.builtin.file: path: "{{ matrix_client_element_data_path }}/{{ item.name }}" diff --git a/roles/custom/matrix-client-element/tasks/setup_uninstall.yml b/roles/custom/matrix-client-element/tasks/setup_uninstall.yml index 279dd8166..a8823ed4a 100644 --- a/roles/custom/matrix-client-element/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-client-element/tasks/setup_uninstall.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2021 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-client-element.service diff --git a/roles/custom/matrix-client-element/tasks/validate_config.yml b/roles/custom/matrix-client-element/tasks/validate_config.yml index a61d8bcaf..7ff71cc2f 100644 --- a/roles/custom/matrix-client-element/tasks/validate_config.yml +++ b/roles/custom/matrix-client-element/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required Element Web settings not defined @@ -23,7 +29,7 @@ msg: >- Riot has been renamed to Element (https://element.io/blog/welcome-to-element/). The playbook will migrate your existing configuration and data automatically, but you need to adjust variable names. - Please change your configuration (vars.yml) to rename all riot-web variables (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). Also note that DNS configuration changes may be necessary. when: "vars | dict2items | selectattr('key', 'match', item.old) | list | items2dict" with_items: @@ -33,7 +39,7 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_client_element_showLabsSettings', 'new': 'matrix_client_element_show_lab_settings'} @@ -45,6 +51,7 @@ - {'old': 'matrix_client_element_branding_welcomeBackgroundUrl', 'new': 'matrix_client_element_branding_welcome_background_url'} - {'old': 'matrix_client_element_jitsi_preferredDomain', 'new': 'matrix_client_element_jitsi_preferred_domain'} - {'old': 'matrix_client_element_welcome_user_id', 'new': ''} + - {'old': 'matrix_client_element_docker_image_name_prefix', 'new': 'matrix_client_element_docker_image_registry_prefix'} - when: matrix_client_element_container_labels_traefik_enabled | bool block: diff --git a/roles/custom/matrix-client-element/templates/config.json.j2 b/roles/custom/matrix-client-element/templates/config.json.j2 index 9d354a3c2..7516abe48 100644 --- a/roles/custom/matrix-client-element/templates/config.json.j2 +++ b/roles/custom/matrix-client-element/templates/config.json.j2 @@ -45,5 +45,7 @@ "auth_footer_links": {{ matrix_client_element_branding_auth_footer_links | to_json }}, "auth_header_logo_url": {{ matrix_client_element_branding_auth_header_logo_url | to_json }}, "welcome_background_url": {{ matrix_client_element_branding_welcome_background_url | to_json }} - } + }, + "features": {{ matrix_client_element_features | to_json }}, + "element_call": {{ (matrix_client_element_element_call if matrix_client_element_element_call_enabled else {}) | to_json }} } diff --git a/roles/custom/matrix-client-element/templates/config.json.j2.license b/roles/custom/matrix-client-element/templates/config.json.j2.license new file mode 100644 index 000000000..d679203dd --- /dev/null +++ b/roles/custom/matrix-client-element/templates/config.json.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Aaron Raimist +SPDX-FileCopyrightText: 2023 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2023 Igor Goldenberg + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-element/templates/env.j2 b/roles/custom/matrix-client-element/templates/env.j2 new file mode 100644 index 000000000..83d1cdca0 --- /dev/null +++ b/roles/custom/matrix-client-element/templates/env.j2 @@ -0,0 +1,9 @@ +{# +SPDX-FileCopyrightText: 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +ELEMENT_WEB_PORT={{ matrix_client_element_environment_variable_element_web_port }} + +{{ matrix_client_element_environment_variables_extension }} diff --git a/roles/custom/matrix-client-element/templates/labels.j2 b/roles/custom/matrix-client-element/templates/labels.j2 index 67ed2b95a..2d12275e5 100644 --- a/roles/custom/matrix-client-element/templates/labels.j2 +++ b/roles/custom/matrix-client-element/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_client_element_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-client-element/templates/map_style.json.j2.license b/roles/custom/matrix-client-element/templates/map_style.json.j2.license new file mode 100644 index 000000000..bf4d752e6 --- /dev/null +++ b/roles/custom/matrix-client-element/templates/map_style.json.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-element/templates/nginx.conf.j2 b/roles/custom/matrix-client-element/templates/nginx.conf.j2 deleted file mode 100644 index fba16bbdc..000000000 --- a/roles/custom/matrix-client-element/templates/nginx.conf.j2 +++ /dev/null @@ -1,66 +0,0 @@ -#jinja2: lstrip_blocks: "True" -# This is a custom nginx configuration file that we use in the container (instead of the default one), -# because it allows us to run nginx with a non-root user. -# -# For this to work, the default vhost file (`/etc/nginx/conf.d/default.conf`) also needs to be removed. -# (mounting `/dev/null` over `/etc/nginx/conf.d/default.conf` works well) -# -# The following changes have been done compared to a default nginx configuration file: -# - default server port is changed (80 -> 8080), so that a non-root user can bind it -# - various temp paths are changed to `/tmp`, so that a non-root user can write to them -# - the `user` directive was removed, as we don't want nginx to switch users - -worker_processes 1; - -error_log /var/log/nginx/error.log warn; -pid /tmp/nginx.pid; - - -events { - worker_connections 1024; -} - - -http { - proxy_temp_path /tmp/proxy_temp; - client_body_temp_path /tmp/client_temp; - fastcgi_temp_path /tmp/fastcgi_temp; - uwsgi_temp_path /tmp/uwsgi_temp; - scgi_temp_path /tmp/scgi_temp; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - sendfile on; - #tcp_nopush on; - - keepalive_timeout 65; - - #gzip on; - - server { - listen 8080; - server_name localhost; - - root /usr/share/nginx/html; - - location / { - index index.html index.htm; - } - - location ~* ^/(config(.+)?\.json$|(.+)\.html$|i18n) { - expires -1; - } - - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } - } -} diff --git a/roles/custom/matrix-client-element/templates/systemd/matrix-client-element.service.j2 b/roles/custom/matrix-client-element/templates/systemd/matrix-client-element.service.j2 index 9748cfe7c..9a1475b49 100644 --- a/roles/custom/matrix-client-element/templates/systemd/matrix-client-element.service.j2 +++ b/roles/custom/matrix-client-element/templates/systemd/matrix-client-element.service.j2 @@ -10,9 +10,13 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-client-element 2>/dev/null || true' +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-client-element 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-element 2>/dev/null || true' +{# + The custom healthcheck command is a patch until https://github.com/element-hq/element-web/pull/29471 + lands in a release. +#} ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ --rm \ --name=matrix-client-element \ @@ -22,11 +26,15 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ --read-only \ --network={{ matrix_client_element_container_network }} \ {% if matrix_client_element_container_http_host_bind_port %} - -p {{ matrix_client_element_container_http_host_bind_port }}:8080 \ + -p {{ matrix_client_element_container_http_host_bind_port }}:{{ matrix_client_element_container_port }} \ {% endif %} --label-file={{ matrix_client_element_data_path }}/labels \ + --env-file={{ matrix_client_element_data_path }}/env \ --tmpfs=/tmp:rw,noexec,nosuid,size=10m \ - --mount type=bind,src={{ matrix_client_element_data_path }}/nginx.conf,dst=/etc/nginx/nginx.conf,ro \ + --tmpfs=/var/cache/nginx:rw,mode=777 \ + --tmpfs=/var/run:rw,mode=777 \ + --tmpfs=/tmp/element-web-config:rw,mode=777 \ + --tmpfs=/etc/nginx/conf.d:rw,mode=777 \ --mount type=bind,src={{ matrix_client_element_data_path }}/config.json,dst=/app/config.json,ro \ --mount type=bind,src={{ matrix_client_element_data_path }}/config.json,dst=/app/config.{{ matrix_server_fqn_element }}.json,ro \ {% if matrix_client_element_location_sharing_enabled %} @@ -36,6 +44,9 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ --mount type=bind,src={{ matrix_client_element_data_path }}/home.html,dst=/app/home.html,ro \ {% endif %} --mount type=bind,src={{ matrix_client_element_data_path }}/welcome.html,dst=/app/welcome.html,ro \ + {% if matrix_client_element_container_healthcheck_cmd %} + --health-cmd="{{ matrix_client_element_container_healthcheck_cmd }}" \ + {% endif %} {% for arg in matrix_client_element_container_extra_arguments %} {{ arg }} \ {% endfor %} @@ -47,7 +58,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-client-element -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-client-element 2>/dev/null || true' +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-client-element 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-element 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-client-element/templates/systemd/matrix-client-element.service.j2.license b/roles/custom/matrix-client-element/templates/systemd/matrix-client-element.service.j2.license new file mode 100644 index 000000000..909ecff79 --- /dev/null +++ b/roles/custom/matrix-client-element/templates/systemd/matrix-client-element.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-element/templates/welcome.html.j2.license b/roles/custom/matrix-client-element/templates/welcome.html.j2.license new file mode 100644 index 000000000..8338f12af --- /dev/null +++ b/roles/custom/matrix-client-element/templates/welcome.html.j2.license @@ -0,0 +1,9 @@ +SPDX-FileCopyrightText: 2019 Daniel Hoffend +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Clement Renaud +SPDX-FileCopyrightText: 2020 Stefan Warnat +SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +SPDX-FileCopyrightText: 2024 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-element/vars/main.yml b/roles/custom/matrix-client-element/vars/main.yml index 8237b5110..f332b4312 100644 --- a/roles/custom/matrix-client-element/vars/main.yml +++ b/roles/custom/matrix-client-element/vars/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- matrix_client_element_embedded_pages_home_url: "{{ ('' if matrix_client_element_embedded_pages_home_path is none else 'home.html') }}" diff --git a/roles/custom/matrix-client-fluffychat/defaults/main.yml b/roles/custom/matrix-client-fluffychat/defaults/main.yml new file mode 100644 index 000000000..417911a4c --- /dev/null +++ b/roles/custom/matrix-client-fluffychat/defaults/main.yml @@ -0,0 +1,149 @@ +# SPDX-FileCopyrightText: 2025 Nikita Chernyi +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- +# Project source code URL: https://github.com/krille-chan/fluffychat + +matrix_client_fluffychat_enabled: true + +matrix_client_fluffychat_container_image_self_build: false +matrix_client_fluffychat_container_image_self_build_repo: "https://github.com/etkecc/fluffychat-web.git" +matrix_client_fluffychat_container_image_self_build_version: "{{ 'main' if matrix_client_fluffychat_version == 'latest' else matrix_client_fluffychat_version }}" + +# renovate: datasource=docker depName=ghcr.io/etkecc/fluffychat-web +matrix_client_fluffychat_version: v1.25.1 +matrix_client_fluffychat_docker_image: "{{ matrix_client_fluffychat_docker_image_registry_prefix }}etkecc/fluffychat-web:{{ matrix_client_fluffychat_version }}" +matrix_client_fluffychat_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_fluffychat_container_image_self_build else matrix_client_fluffychat_docker_image_registry_prefix_upstream }}" +matrix_client_fluffychat_docker_image_registry_prefix_upstream: "{{ matrix_client_fluffychat_docker_image_registry_prefix_upstream_default }}" +matrix_client_fluffychat_docker_image_registry_prefix_upstream_default: ghcr.io/ +matrix_client_fluffychat_docker_image_force_pull: "{{ matrix_client_fluffychat_docker_image.endswith(':latest') }}" + +matrix_client_fluffychat_data_path: "{{ matrix_base_data_path }}/client-fluffychat" +matrix_client_fluffychat_container_src_files_path: "{{ matrix_client_fluffychat_data_path }}/docker-src" + +# The base container network +matrix_client_fluffychat_container_network: '' + +# 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 a reverse proxy, which runs in a different container network. +matrix_client_fluffychat_container_additional_networks: "{{ matrix_client_fluffychat_container_additional_networks_auto + matrix_client_fluffychat_container_additional_networks_custom }}" +matrix_client_fluffychat_container_additional_networks_auto: [] +matrix_client_fluffychat_container_additional_networks_custom: [] + +# Controls whether the matrix-client-fluffychat container exposes its HTTP port (tcp/8080 in the container). +# +# Takes an ":" or "" value (e.g. "127.0.0.1:8765"), or empty string to not expose. +matrix_client_fluffychat_container_http_host_bind_port: '' + +# matrix_client_fluffychat_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_client_fluffychat_container_labels_additional_labels`. +matrix_client_fluffychat_container_labels_traefik_enabled: true +matrix_client_fluffychat_container_labels_traefik_docker_network: "{{ matrix_client_fluffychat_container_network }}" +matrix_client_fluffychat_container_labels_traefik_hostname: "{{ matrix_client_fluffychat_hostname }}" +# The path prefix must either be `/` or not end with a slash (e.g. `/fluffychat`). +matrix_client_fluffychat_container_labels_traefik_path_prefix: "{{ matrix_client_fluffychat_path_prefix }}" +matrix_client_fluffychat_container_labels_traefik_rule: "Host(`{{ matrix_client_fluffychat_container_labels_traefik_hostname }}`){% if matrix_client_fluffychat_container_labels_traefik_path_prefix != '/' %} && PathPrefix(`{{ matrix_client_fluffychat_container_labels_traefik_path_prefix }}`){% endif %}" +matrix_client_fluffychat_container_labels_traefik_priority: 0 +matrix_client_fluffychat_container_labels_traefik_entrypoints: web-secure +matrix_client_fluffychat_container_labels_traefik_tls: "{{ matrix_client_fluffychat_container_labels_traefik_entrypoints != 'web' }}" +matrix_client_fluffychat_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_client_fluffychat_container_labels_traefik_additional_response_headers_custom` +matrix_client_fluffychat_container_labels_traefik_additional_response_headers: "{{ matrix_client_fluffychat_container_labels_traefik_additional_response_headers_auto | combine(matrix_client_fluffychat_container_labels_traefik_additional_response_headers_custom) }}" +matrix_client_fluffychat_container_labels_traefik_additional_response_headers_auto: | + {{ + {} + | combine ({'X-XSS-Protection': matrix_client_fluffychat_http_header_xss_protection} if matrix_client_fluffychat_http_header_xss_protection else {}) + | combine ({'X-Frame-Options': matrix_client_fluffychat_http_header_frame_options} if matrix_client_fluffychat_http_header_frame_options else {}) + | combine ({'X-Content-Type-Options': matrix_client_fluffychat_http_header_content_type_options} if matrix_client_fluffychat_http_header_content_type_options else {}) + | combine ({'Content-Security-Policy': matrix_client_fluffychat_http_header_content_security_policy} if matrix_client_fluffychat_http_header_content_security_policy else {}) + | combine ({'Permission-Policy': matrix_client_fluffychat_http_header_content_permission_policy} if matrix_client_fluffychat_http_header_content_permission_policy else {}) + | combine ({'Strict-Transport-Security': matrix_client_fluffychat_http_header_strict_transport_security} if matrix_client_fluffychat_http_header_strict_transport_security and matrix_client_fluffychat_container_labels_traefik_tls else {}) + }} +matrix_client_fluffychat_container_labels_traefik_additional_response_headers_custom: {} + +# matrix_client_fluffychat_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_client_fluffychat_container_labels_additional_labels: | +# my.label=1 +# another.label="here" +matrix_client_fluffychat_container_labels_additional_labels: '' + +# A list of extra arguments to pass to the container +matrix_client_fluffychat_container_extra_arguments: [] + +# List of systemd services that matrix-client-fluffychat.service depends on +matrix_client_fluffychat_systemd_required_services_list: "{{ matrix_client_fluffychat_systemd_required_services_list_default + matrix_client_fluffychat_systemd_required_services_list_auto + matrix_client_fluffychat_systemd_required_services_list_custom }}" +matrix_client_fluffychat_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" +matrix_client_fluffychat_systemd_required_services_list_auto: [] +matrix_client_fluffychat_systemd_required_services_list_custom: [] + +# 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_client_fluffychat_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_client_fluffychat_http_header_frame_options: SAMEORIGIN + +# 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_client_fluffychat_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_client_fluffychat_http_header_content_security_policy: frame-ancestors 'self' + +# Specifies the value of the `Permission-Policy` header. +# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permission-Policy +matrix_client_fluffychat_http_header_content_permission_policy: "{{ 'interest-cohort=()' if matrix_client_fluffychat_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_client_fluffychat_http_header_strict_transport_security: "max-age=31536000; includeSubDomains{{ '; preload' if matrix_client_fluffychat_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_client_fluffychat_content_permission_policy` +matrix_client_fluffychat_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_client_fluffychat_http_header_strict_transport_security` +matrix_client_fluffychat_hsts_preload_enabled: false + +matrix_client_fluffychat_scheme: https +# The hostname at which FluffyChat Web is served. +matrix_client_fluffychat_hostname: "{{ matrix_server_fqn_fluffychat }}" + +# The path at which FluffyChat Web is exposed. +# This value must either be `/` or not end with a slash (e.g. `/fluffychat`). +matrix_client_fluffychat_path_prefix: / + +# Controls whether the self-check feature should validate SSL certificates. +matrix_client_fluffychat_self_check_validate_certificates: true diff --git a/roles/custom/matrix-client-fluffychat/tasks/main.yml b/roles/custom/matrix-client-fluffychat/tasks/main.yml new file mode 100644 index 000000000..846913577 --- /dev/null +++ b/roles/custom/matrix-client-fluffychat/tasks/main.yml @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: 2025 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- tags: + - setup-all + - setup-client-fluffychat + - install-all + - install-client-fluffychat + block: + - when: matrix_client_fluffychat_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" + + - when: matrix_client_fluffychat_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" + +- tags: + - setup-all + - setup-client-fluffychat + block: + - when: not matrix_client_fluffychat_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" + +- tags: + - self-check + block: + - when: matrix_client_fluffychat_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/self_check.yml" diff --git a/roles/custom/matrix-client-fluffychat/tasks/self_check.yml b/roles/custom/matrix-client-fluffychat/tasks/self_check.yml new file mode 100644 index 000000000..12f8bd298 --- /dev/null +++ b/roles/custom/matrix-client-fluffychat/tasks/self_check.yml @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: 2025 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- ansible.builtin.set_fact: + matrix_client_fluffychat_url_endpoint_public: "{{ matrix_client_fluffychat_scheme }}://{{ matrix_client_fluffychat_hostname }}/" + +- name: Check FluffyChat Web + ansible.builtin.uri: + url: "{{ matrix_client_fluffychat_url_endpoint_public }}" + follow_redirects: none + validate_certs: "{{ matrix_client_fluffychat_self_check_validate_certificates }}" + register: matrix_client_fluffychat_self_check_result + check_mode: false + ignore_errors: true + delegate_to: 127.0.0.1 + become: false + +- name: Fail if FluffyChat Web not working + ansible.builtin.fail: + msg: "Failed checking FluffyChat Web is up at `{{ matrix_server_fqn_fluffychat }}` (checked endpoint: `{{ matrix_client_fluffychat_url_endpoint_public }}`). Is FluffyChat Web running? Is port 443 open in your firewall? Full error: {{ matrix_client_fluffychat_self_check_result }}" + when: "matrix_client_fluffychat_self_check_result.failed or 'json' not in matrix_client_fluffychat_self_check_result" + +- name: Report working FluffyChat Web + ansible.builtin.debug: + msg: "FluffyChat Web at `{{ matrix_server_fqn_fluffychat }}` is working (checked endpoint: `{{ matrix_client_fluffychat_url_endpoint_public }}`)" diff --git a/roles/custom/matrix-client-fluffychat/tasks/setup_install.yml b/roles/custom/matrix-client-fluffychat/tasks/setup_install.yml new file mode 100644 index 000000000..a774ad724 --- /dev/null +++ b/roles/custom/matrix-client-fluffychat/tasks/setup_install.yml @@ -0,0 +1,74 @@ +# SPDX-FileCopyrightText: 2025 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Ensure FluffyChat Web paths exists + ansible.builtin.file: + path: "{{ item.path }}" + state: directory + mode: 0750 + owner: "{{ matrix_user_username }}" + group: "{{ matrix_user_groupname }}" + with_items: + - {path: "{{ matrix_client_fluffychat_data_path }}", when: true} + - {path: "{{ matrix_client_fluffychat_container_src_files_path }}", when: "{{ matrix_client_fluffychat_container_image_self_build }}"} + when: "item.when | bool" + +- name: Ensure FluffyChat Web container image is pulled + community.docker.docker_image: + name: "{{ matrix_client_fluffychat_docker_image }}" + source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" + force_source: "{{ matrix_client_fluffychat_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_client_fluffychat_docker_image_force_pull }}" + when: "not matrix_client_fluffychat_container_image_self_build | bool" + register: result + retries: "{{ devture_playbook_help_container_retries_count }}" + delay: "{{ devture_playbook_help_container_retries_delay }}" + until: result is not failed + +- when: "matrix_client_fluffychat_container_image_self_build | bool" + block: + - name: Ensure FluffyChat Web repository is present on self-build + ansible.builtin.git: + repo: "{{ matrix_client_fluffychat_container_image_self_build_repo }}" + dest: "{{ matrix_client_fluffychat_container_src_files_path }}" + version: "{{ matrix_client_fluffychat_container_image_self_build_version }}" + force: "yes" + become: true + become_user: "{{ matrix_user_username }}" + register: matrix_client_fluffychat_git_pull_results + + - name: Ensure FluffyChat Web container image is built + ansible.builtin.command: + cmd: |- + {{ devture_systemd_docker_base_host_command_docker }} buildx build + --tag={{ matrix_client_fluffychat_docker_image }} + --file={{ matrix_client_fluffychat_container_src_files_path }}/Dockerfile + {{ matrix_client_fluffychat_container_src_files_path }} + changed_when: true + +- name: Ensure FluffyChat Web config files installed + ansible.builtin.template: + src: "{{ item.src }}" + dest: "{{ matrix_client_fluffychat_data_path }}/{{ item.name }}" + mode: 0644 + owner: "{{ matrix_user_username }}" + group: "{{ matrix_user_groupname }}" + with_items: + - {src: "{{ role_path }}/templates/labels.j2", name: "labels"} + when: "item.src is not none" + +- name: Ensure FluffyChat Web container network is created + community.general.docker_network: + enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" + name: "{{ matrix_client_fluffychat_container_network }}" + driver: bridge + driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" + +- name: Ensure matrix-client-fluffychat.service installed + ansible.builtin.template: + src: "{{ role_path }}/templates/systemd/matrix-client-fluffychat.service.j2" + dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-client-fluffychat.service" + mode: 0644 diff --git a/roles/custom/matrix-client-fluffychat/tasks/setup_uninstall.yml b/roles/custom/matrix-client-fluffychat/tasks/setup_uninstall.yml new file mode 100644 index 000000000..140c95344 --- /dev/null +++ b/roles/custom/matrix-client-fluffychat/tasks/setup_uninstall.yml @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: 2025 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Check existence of matrix-client-fluffychat.service + ansible.builtin.stat: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-client-fluffychat.service" + register: matrix_client_fluffychat_service_stat + +- when: matrix_client_fluffychat_service_stat.stat.exists | bool + block: + - name: Ensure matrix-client-fluffychat is stopped + ansible.builtin.service: + name: matrix-client-fluffychat + state: stopped + enabled: false + daemon_reload: true + + - name: Ensure matrix-client-fluffychat.service doesn't exist + ansible.builtin.file: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-client-fluffychat.service" + state: absent + + - name: Ensure FluffyChat Web path doesn't exist + ansible.builtin.file: + path: "{{ matrix_client_fluffychat_data_path }}" + state: absent diff --git a/roles/custom/matrix-client-fluffychat/tasks/validate_config.yml b/roles/custom/matrix-client-fluffychat/tasks/validate_config.yml new file mode 100644 index 000000000..f5a5ae961 --- /dev/null +++ b/roles/custom/matrix-client-fluffychat/tasks/validate_config.yml @@ -0,0 +1,42 @@ +# SPDX-FileCopyrightText: 2025 Nikita Chernyi +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Fail if required FluffyChat Web settings not defined + ansible.builtin.fail: + msg: > + You need to define a required configuration setting (`{{ item }}`) for using FluffyChat Web. + when: "vars[item] == ''" + with_items: + - matrix_client_fluffychat_container_network + +- name: (Deprecation) Catch and report renamed FluffyChat Web variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_client_fluffychat_container_image_name_prefix', 'new': 'matrix_client_fluffychat_container_image_registry_prefix'} + +- when: matrix_client_fluffychat_container_labels_traefik_enabled | bool + block: + - name: Fail if required matrix-client-fluffychat Traefik settings not defined + ansible.builtin.fail: + msg: >- + You need to define a required configuration setting (`{{ item }}`). + when: "vars[item] == ''" + with_items: + - matrix_client_fluffychat_container_labels_traefik_hostname + - matrix_client_fluffychat_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_client_fluffychat_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_client_fluffychat_container_labels_traefik_path_prefix ends with a slash + ansible.builtin.fail: + msg: >- + matrix_client_fluffychat_container_labels_traefik_path_prefix (`{{ matrix_client_fluffychat_container_labels_traefik_path_prefix }}`) must either be `/` or not end with a slash (e.g. `/fluffychat`). + when: "matrix_client_fluffychat_container_labels_traefik_path_prefix != '/' and matrix_client_fluffychat_container_labels_traefik_path_prefix[-1] == '/'" diff --git a/roles/custom/matrix-client-fluffychat/templates/labels.j2 b/roles/custom/matrix-client-fluffychat/templates/labels.j2 new file mode 100644 index 000000000..f3527c61a --- /dev/null +++ b/roles/custom/matrix-client-fluffychat/templates/labels.j2 @@ -0,0 +1,52 @@ +{# +SPDX-FileCopyrightText: 2025 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +{% if matrix_client_fluffychat_container_labels_traefik_enabled %} +traefik.enable=true + +{% if matrix_client_fluffychat_container_labels_traefik_docker_network %} +traefik.docker.network={{ matrix_client_fluffychat_container_labels_traefik_docker_network }} +{% endif %} + +traefik.http.services.matrix-client-fluffychat.loadbalancer.server.port=8080 + +{% set middlewares = [] %} + +{% if matrix_client_fluffychat_container_labels_traefik_path_prefix != '/' %} +traefik.http.middlewares.matrix-client-fluffychat-slashless-redirect.redirectregex.regex=({{ matrix_client_fluffychat_container_labels_traefik_path_prefix | quote }})$ +traefik.http.middlewares.matrix-client-fluffychat-slashless-redirect.redirectregex.replacement=${1}/ +{% set middlewares = middlewares + ['matrix-client-fluffychat-slashless-redirect'] %} +{% endif %} + +{% if matrix_client_fluffychat_container_labels_traefik_path_prefix != '/' %} +traefik.http.middlewares.matrix-client-fluffychat-strip-prefix.stripprefix.prefixes={{ matrix_client_fluffychat_container_labels_traefik_path_prefix }} +{% set middlewares = middlewares + ['matrix-client-fluffychat-strip-prefix'] %} +{% endif %} + +{% if matrix_client_fluffychat_container_labels_traefik_additional_response_headers.keys() | length > 0 %} +{% for name, value in matrix_client_fluffychat_container_labels_traefik_additional_response_headers.items() %} +traefik.http.middlewares.matrix-client-fluffychat-add-headers.headers.customresponseheaders.{{ name }}={{ value }} +{% endfor %} +{% set middlewares = middlewares + ['matrix-client-fluffychat-add-headers'] %} +{% endif %} + +traefik.http.routers.matrix-client-fluffychat.rule={{ matrix_client_fluffychat_container_labels_traefik_rule }} +{% if matrix_client_fluffychat_container_labels_traefik_priority | int > 0 %} +traefik.http.routers.matrix-client-fluffychat.priority={{ matrix_client_fluffychat_container_labels_traefik_priority }} +{% endif %} +traefik.http.routers.matrix-client-fluffychat.service=matrix-client-fluffychat +{% if middlewares | length > 0 %} +traefik.http.routers.matrix-client-fluffychat.middlewares={{ middlewares | join(',') }} +{% endif %} +traefik.http.routers.matrix-client-fluffychat.entrypoints={{ matrix_client_fluffychat_container_labels_traefik_entrypoints }} +traefik.http.routers.matrix-client-fluffychat.tls={{ matrix_client_fluffychat_container_labels_traefik_tls | to_json }} +{% if matrix_client_fluffychat_container_labels_traefik_tls %} +traefik.http.routers.matrix-client-fluffychat.tls.certResolver={{ matrix_client_fluffychat_container_labels_traefik_tls_certResolver }} +{% endif %} + +{% endif %} + +{{ matrix_client_fluffychat_container_labels_additional_labels }} diff --git a/roles/custom/matrix-client-fluffychat/templates/systemd/matrix-client-fluffychat.service.j2 b/roles/custom/matrix-client-fluffychat/templates/systemd/matrix-client-fluffychat.service.j2 new file mode 100644 index 000000000..ad10c6297 --- /dev/null +++ b/roles/custom/matrix-client-fluffychat/templates/systemd/matrix-client-fluffychat.service.j2 @@ -0,0 +1,48 @@ +#jinja2: lstrip_blocks: "True" +[Unit] +Description=Matrix FluffyChat Web server +{% for service in matrix_client_fluffychat_systemd_required_services_list %} +Requires={{ service }} +After={{ 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-client-fluffychat 2>/dev/null || true' +ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-fluffychat 2>/dev/null || true' + +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ + --rm \ + --name=matrix-client-fluffychat \ + --log-driver=none \ + --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ + --cap-drop=ALL \ + --read-only \ + --network={{ matrix_client_fluffychat_container_network }} \ + {% if matrix_client_fluffychat_container_http_host_bind_port %} + -p {{ matrix_client_fluffychat_container_http_host_bind_port }}:8080 \ + {% endif %} + --label-file={{ matrix_client_fluffychat_data_path }}/labels \ + --tmpfs=/tmp:rw,noexec,nosuid,size=10m \ + {% for arg in matrix_client_fluffychat_container_extra_arguments %} + {{ arg }} \ + {% endfor %} + {{ matrix_client_fluffychat_docker_image }} + +{% for network in matrix_client_fluffychat_container_additional_networks %} +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-client-fluffychat +{% endfor %} + +ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-client-fluffychat + +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-client-fluffychat 2>/dev/null || true' +ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-fluffychat 2>/dev/null || true' + +Restart=always +RestartSec=30 +SyslogIdentifier=matrix-client-fluffychat + +[Install] +WantedBy=multi-user.target diff --git a/roles/custom/matrix-client-fluffychat/templates/systemd/matrix-client-fluffychat.service.j2.license b/roles/custom/matrix-client-fluffychat/templates/systemd/matrix-client-fluffychat.service.j2.license new file mode 100644 index 000000000..a12f6a9f4 --- /dev/null +++ b/roles/custom/matrix-client-fluffychat/templates/systemd/matrix-client-fluffychat.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2025 Nikita Chernyi +SPDX-FileCopyrightText: 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-hydrogen/defaults/main.yml b/roles/custom/matrix-client-hydrogen/defaults/main.yml index 78d1b8618..eae7aed87 100644 --- a/roles/custom/matrix-client-hydrogen/defaults/main.yml +++ b/roles/custom/matrix-client-hydrogen/defaults/main.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Aaron Raimist +# SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Matthew Cengia +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Project source code URL: https://github.com/element-hq/hydrogen-web @@ -8,8 +19,10 @@ matrix_client_hydrogen_container_image_self_build_repo: "https://github.com/elem # renovate: datasource=docker depName=ghcr.io/element-hq/hydrogen-web matrix_client_hydrogen_version: v0.5.1 -matrix_client_hydrogen_docker_image: "{{ matrix_client_hydrogen_docker_image_name_prefix }}element-hq/hydrogen-web:{{ matrix_client_hydrogen_version }}" -matrix_client_hydrogen_docker_image_name_prefix: "{{ 'localhost/' if matrix_client_hydrogen_container_image_self_build else 'ghcr.io/' }}" +matrix_client_hydrogen_docker_image: "{{ matrix_client_hydrogen_docker_image_registry_prefix }}element-hq/hydrogen-web:{{ matrix_client_hydrogen_version }}" +matrix_client_hydrogen_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_hydrogen_container_image_self_build else matrix_client_hydrogen_docker_image_registry_prefix_upstream }}" +matrix_client_hydrogen_docker_image_registry_prefix_upstream: "{{ matrix_client_hydrogen_docker_image_registry_prefix_upstream_default }}" +matrix_client_hydrogen_docker_image_registry_prefix_upstream_default: ghcr.io/ matrix_client_hydrogen_docker_image_force_pull: "{{ matrix_client_hydrogen_docker_image.endswith(':latest') }}" matrix_client_hydrogen_data_path: "{{ matrix_base_data_path }}/client-hydrogen" diff --git a/roles/custom/matrix-client-hydrogen/tasks/main.yml b/roles/custom/matrix-client-hydrogen/tasks/main.yml index 9e7445c0b..838b82a47 100644 --- a/roles/custom/matrix-client-hydrogen/tasks/main.yml +++ b/roles/custom/matrix-client-hydrogen/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-client-hydrogen/tasks/self_check.yml b/roles/custom/matrix-client-hydrogen/tasks/self_check.yml index 4892c40dc..b89cddc61 100644 --- a/roles/custom/matrix-client-hydrogen/tasks/self_check.yml +++ b/roles/custom/matrix-client-hydrogen/tasks/self_check.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Aaron Raimist +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-client-hydrogen/tasks/setup_install.yml b/roles/custom/matrix-client-hydrogen/tasks/setup_install.yml index 08727586c..f720fe5f5 100644 --- a/roles/custom/matrix-client-hydrogen/tasks/setup_install.yml +++ b/roles/custom/matrix-client-hydrogen/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Aaron Raimist +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Matthew Cengia +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2023 Julian Foad +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Hydrogen paths exists diff --git a/roles/custom/matrix-client-hydrogen/tasks/setup_uninstall.yml b/roles/custom/matrix-client-hydrogen/tasks/setup_uninstall.yml index d6caa5b97..d963ac0b8 100644 --- a/roles/custom/matrix-client-hydrogen/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-client-hydrogen/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 - 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-client-hydrogen.service diff --git a/roles/custom/matrix-client-hydrogen/tasks/validate_config.yml b/roles/custom/matrix-client-hydrogen/tasks/validate_config.yml index 93b9354eb..2bd1ae7ff 100644 --- a/roles/custom/matrix-client-hydrogen/tasks/validate_config.yml +++ b/roles/custom/matrix-client-hydrogen/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required Hydrogen settings not defined @@ -10,6 +16,14 @@ - {'name': 'matrix_client_hydrogen_container_network', when: true} - {'name': 'matrix_client_hydrogen_container_labels_traefik_compression_middleware_name', when: "{{ matrix_client_hydrogen_container_labels_traefik_compression_middleware_enabled }}"} +- name: (Deprecation) Catch and report renamed Hydrogen variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_client_hydrogen_container_image_name_prefix', 'new': 'matrix_client_hydrogen_container_image_registry_prefix'} + - when: matrix_client_hydrogen_container_labels_traefik_enabled | bool block: - name: Fail if required matrix-client-hydrogen Traefik settings not defined diff --git a/roles/custom/matrix-client-hydrogen/templates/config.json.j2.license b/roles/custom/matrix-client-hydrogen/templates/config.json.j2.license new file mode 100644 index 000000000..a4ca23eb3 --- /dev/null +++ b/roles/custom/matrix-client-hydrogen/templates/config.json.j2.license @@ -0,0 +1,7 @@ +SPDX-FileCopyrightText: 2021 - 2022 Aaron Raimist +SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Matthew Cengia +SPDX-FileCopyrightText: 2022 Nikita Chernyi +SPDX-FileCopyrightText: 2023 Sergio Durigan Junior + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-hydrogen/templates/labels.j2 b/roles/custom/matrix-client-hydrogen/templates/labels.j2 index 011d02d1d..3431f7157 100644 --- a/roles/custom/matrix-client-hydrogen/templates/labels.j2 +++ b/roles/custom/matrix-client-hydrogen/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_client_hydrogen_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-client-hydrogen/templates/nginx.conf.j2.license b/roles/custom/matrix-client-hydrogen/templates/nginx.conf.j2.license new file mode 100644 index 000000000..c69a90227 --- /dev/null +++ b/roles/custom/matrix-client-hydrogen/templates/nginx.conf.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 Aaron Raimist +SPDX-FileCopyrightText: 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2 b/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2 index 28867dd5a..5f6dbe30d 100644 --- a/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2 +++ b/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2 @@ -10,7 +10,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-client-hydrogen 2>/dev/null || true' +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-client-hydrogen 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-hydrogen 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -39,7 +39,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-client-hydrogen -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-client-hydrogen 2>/dev/null || true' +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-client-hydrogen 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-hydrogen 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2.license b/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2.license new file mode 100644 index 000000000..0379e85ae --- /dev/null +++ b/roles/custom/matrix-client-hydrogen/templates/systemd/matrix-client-hydrogen.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2021 Aaron Raimist +SPDX-FileCopyrightText: 2022 Matthew Cengia + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-schildichat/defaults/main.yml b/roles/custom/matrix-client-schildichat/defaults/main.yml index 68f0e86b9..4619af27c 100644 --- a/roles/custom/matrix-client-schildichat/defaults/main.yml +++ b/roles/custom/matrix-client-schildichat/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Project source code URL: https://github.com/SchildiChat/schildichat-desktop @@ -13,8 +20,10 @@ matrix_client_schildichat_container_image_self_build_low_memory_system_patch_ena # renovate: datasource=docker depName=ghcr.io/etkecc/schildichat-web matrix_client_schildichat_version: 1.11.86-sc.0.test.0 -matrix_client_schildichat_docker_image: "{{ matrix_client_schildichat_docker_image_name_prefix }}etkecc/schildichat-web:{{ matrix_client_schildichat_version }}" -matrix_client_schildichat_docker_image_name_prefix: "{{ 'localhost/' if matrix_client_schildichat_container_image_self_build else 'ghcr.io/' }}" +matrix_client_schildichat_docker_image: "{{ matrix_client_schildichat_docker_image_registry_prefix }}etkecc/schildichat-web:{{ matrix_client_schildichat_version }}" +matrix_client_schildichat_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_schildichat_container_image_self_build else matrix_client_schildichat_docker_image_registry_prefix_upstream }}" +matrix_client_schildichat_docker_image_registry_prefix_upstream: "{{ matrix_client_schildichat_docker_image_registry_prefix_upstream_default }}" +matrix_client_schildichat_docker_image_registry_prefix_upstream_default: ghcr.io/ matrix_client_schildichat_docker_image_force_pull: "{{ matrix_client_schildichat_docker_image.endswith(':latest') }}" matrix_client_schildichat_data_path: "{{ matrix_base_data_path }}/client-schildichat" @@ -189,7 +198,7 @@ matrix_client_schildichat_self_check_validate_certificates: true # don't show the registration button on welcome page matrix_client_schildichat_registration_enabled: false -# Default country code on welcome page when login by phone number +# An optional ISO 3166 alpha2 country code (eg: GB, the default) to use when showing phone number inputs matrix_client_schildichat_default_country_code: "GB" # Controls whether presence will be enabled diff --git a/roles/custom/matrix-client-schildichat/tasks/main.yml b/roles/custom/matrix-client-schildichat/tasks/main.yml index 240dee1cf..476bc76d5 100644 --- a/roles/custom/matrix-client-schildichat/tasks/main.yml +++ b/roles/custom/matrix-client-schildichat/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-client-schildichat/tasks/prepare_themes.yml b/roles/custom/matrix-client-schildichat/tasks/prepare_themes.yml index 521679bc0..4c2167bcd 100644 --- a/roles/custom/matrix-client-schildichat/tasks/prepare_themes.yml +++ b/roles/custom/matrix-client-schildichat/tasks/prepare_themes.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # diff --git a/roles/custom/matrix-client-schildichat/tasks/self_check.yml b/roles/custom/matrix-client-schildichat/tasks/self_check.yml index 5e8771111..255975cad 100644 --- a/roles/custom/matrix-client-schildichat/tasks/self_check.yml +++ b/roles/custom/matrix-client-schildichat/tasks/self_check.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-client-schildichat/tasks/setup_install.yml b/roles/custom/matrix-client-schildichat/tasks/setup_install.yml index b27f5bc48..2a577df58 100644 --- a/roles/custom/matrix-client-schildichat/tasks/setup_install.yml +++ b/roles/custom/matrix-client-schildichat/tasks/setup_install.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure SchildiChat Web paths exists @@ -38,7 +46,7 @@ # See: # - https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1357 - # - https://github.com/vector-im/schildichat-web/issues/19544 -- # Update (2023-12-15): 404 + # - https://github.com/vector-im/schildichat-web/issues/19544 — # Update (2023-12-15): 404 - name: Patch webpack.config.js to support building on low-memory (<4G RAM) devices ansible.builtin.lineinfile: path: "{{ matrix_client_schildichat_container_src_files_path }}/element-web/webpack.config.js" diff --git a/roles/custom/matrix-client-schildichat/tasks/setup_uninstall.yml b/roles/custom/matrix-client-schildichat/tasks/setup_uninstall.yml index 67f6856ff..d53238fb4 100644 --- a/roles/custom/matrix-client-schildichat/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-client-schildichat/tasks/setup_uninstall.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-client-schildichat.service diff --git a/roles/custom/matrix-client-schildichat/tasks/validate_config.yml b/roles/custom/matrix-client-schildichat/tasks/validate_config.yml index a9cb7358c..09ef97434 100644 --- a/roles/custom/matrix-client-schildichat/tasks/validate_config.yml +++ b/roles/custom/matrix-client-schildichat/tasks/validate_config.yml @@ -1,13 +1,20 @@ +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: (Deprecation) Catch and report renamed SchildiChat Web settings ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_client_schildichat_welcome_user_id', 'new': ''} + - {'old': 'matrix_client_schildichat_container_image_name_prefix', 'new': 'matrix_client_schildichat_container_image_registry_prefix'} - name: Fail if required SchildiChat Web settings not defined ansible.builtin.fail: diff --git a/roles/custom/matrix-client-schildichat/templates/config.json.j2.license b/roles/custom/matrix-client-schildichat/templates/config.json.j2.license new file mode 100644 index 000000000..2d30733cd --- /dev/null +++ b/roles/custom/matrix-client-schildichat/templates/config.json.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2023 Nikita Chernyi +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-schildichat/templates/labels.j2 b/roles/custom/matrix-client-schildichat/templates/labels.j2 index 25f19f6b4..e7b87ad72 100644 --- a/roles/custom/matrix-client-schildichat/templates/labels.j2 +++ b/roles/custom/matrix-client-schildichat/templates/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 Nikita Chernyi +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_client_schildichat_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-client-schildichat/templates/map_style.json.j2.license b/roles/custom/matrix-client-schildichat/templates/map_style.json.j2.license new file mode 100644 index 000000000..d84b8388e --- /dev/null +++ b/roles/custom/matrix-client-schildichat/templates/map_style.json.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-schildichat/templates/systemd/matrix-client-schildichat.service.j2 b/roles/custom/matrix-client-schildichat/templates/systemd/matrix-client-schildichat.service.j2 index 98941d47e..ab223e166 100644 --- a/roles/custom/matrix-client-schildichat/templates/systemd/matrix-client-schildichat.service.j2 +++ b/roles/custom/matrix-client-schildichat/templates/systemd/matrix-client-schildichat.service.j2 @@ -10,7 +10,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-client-schildichat 2>/dev/null || true' +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-client-schildichat 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-schildichat 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -46,7 +46,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-client-schildichat -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-client-schildichat 2>/dev/null || true' +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-client-schildichat 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-client-schildichat 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-client-schildichat/templates/systemd/matrix-client-schildichat.service.j2.license b/roles/custom/matrix-client-schildichat/templates/systemd/matrix-client-schildichat.service.j2.license new file mode 100644 index 000000000..4f7c9af82 --- /dev/null +++ b/roles/custom/matrix-client-schildichat/templates/systemd/matrix-client-schildichat.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Nikita Chernyi +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-schildichat/templates/welcome.html.j2.license b/roles/custom/matrix-client-schildichat/templates/welcome.html.j2.license new file mode 100644 index 000000000..27cec7bdf --- /dev/null +++ b/roles/custom/matrix-client-schildichat/templates/welcome.html.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2023 Nikita Chernyi +SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-client-schildichat/vars/main.yml b/roles/custom/matrix-client-schildichat/vars/main.yml index bbd0d3dd0..d338feb65 100644 --- a/roles/custom/matrix-client-schildichat/vars/main.yml +++ b/roles/custom/matrix-client-schildichat/vars/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- matrix_client_schildichat_embedded_pages_home_url: "{{ ('' if matrix_client_schildichat_embedded_pages_home_path is none else 'home.html') }}" diff --git a/roles/custom/matrix-common-after/tasks/main.yml b/roles/custom/matrix-common-after/tasks/main.yml index 5e4dc76b9..30e32027a 100644 --- a/roles/custom/matrix-common-after/tasks/main.yml +++ b/roles/custom/matrix-common-after/tasks/main.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Marcel Partap +# SPDX-FileCopyrightText: 2019 Stuart Mumford +# SPDX-FileCopyrightText: 2020 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-common-after/tasks/run_docker_prune.yml b/roles/custom/matrix-common-after/tasks/run_docker_prune.yml index 58f0e7933..0917d019d 100644 --- a/roles/custom/matrix-common-after/tasks/run_docker_prune.yml +++ b/roles/custom/matrix-common-after/tasks/run_docker_prune.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Run Docker System Prune diff --git a/roles/custom/matrix-conduit/defaults/main.yml b/roles/custom/matrix-conduit/defaults/main.yml index 247c95751..726c39d29 100644 --- a/roles/custom/matrix-conduit/defaults/main.yml +++ b/roles/custom/matrix-conduit/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Samuel Meenzen +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Charles Wright +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Conduit is a simple, fast and reliable chat server powered by Matrix # Project source code URL: https://gitlab.com/famedly/conduit @@ -7,8 +14,10 @@ matrix_conduit_enabled: true matrix_conduit_hostname: '' -matrix_conduit_docker_image: "{{ matrix_conduit_docker_image_name_prefix }}matrixconduit/matrix-conduit:{{ matrix_conduit_docker_image_tag }}" -matrix_conduit_docker_image_name_prefix: "docker.io/" +matrix_conduit_docker_image: "{{ matrix_conduit_docker_image_registry_prefix }}matrixconduit/matrix-conduit:{{ matrix_conduit_docker_image_tag }}" +matrix_conduit_docker_image_registry_prefix: "{{ matrix_conduit_docker_image_registry_prefix_upstream }}" +matrix_conduit_docker_image_registry_prefix_upstream: "{{ matrix_conduit_docker_image_registry_prefix_upstream_default }}" +matrix_conduit_docker_image_registry_prefix_upstream_default: docker.io/ # renovate: datasource=docker depName=matrixconduit/matrix-conduit matrix_conduit_docker_image_tag: "v0.9.0" matrix_conduit_docker_image_force_pull: "{{ matrix_conduit_docker_image.endswith(':latest') }}" diff --git a/roles/custom/matrix-conduit/tasks/main.yml b/roles/custom/matrix-conduit/tasks/main.yml index d8389a5b9..1c790ce58 100644 --- a/roles/custom/matrix-conduit/tasks/main.yml +++ b/roles/custom/matrix-conduit/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Charles Wright +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-conduit/tasks/setup_install.yml b/roles/custom/matrix-conduit/tasks/setup_install.yml index 5db1ba225..a4a65b097 100644 --- a/roles/custom/matrix-conduit/tasks/setup_install.yml +++ b/roles/custom/matrix-conduit/tasks/setup_install.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Charles Wright +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Conduit config path exists diff --git a/roles/custom/matrix-conduit/tasks/setup_uninstall.yml b/roles/custom/matrix-conduit/tasks/setup_uninstall.yml index 1745ff973..d8b4743de 100644 --- a/roles/custom/matrix-conduit/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-conduit/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 Charles Wright +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-conduit service diff --git a/roles/custom/matrix-conduit/tasks/validate_config.yml b/roles/custom/matrix-conduit/tasks/validate_config.yml index 7d643c654..2e5bdc3e2 100644 --- a/roles/custom/matrix-conduit/tasks/validate_config.yml +++ b/roles/custom/matrix-conduit/tasks/validate_config.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required Conduit settings not defined @@ -9,3 +13,11 @@ - {'name': 'matrix_conduit_hostname', when: true} - {'name': 'matrix_conduit_container_network', when: true} - {'name': 'matrix_conduit_container_labels_internal_client_api_traefik_entrypoints', when: "{{ matrix_conduit_container_labels_internal_client_api_enabled }}"} + +- name: (Deprecation) Catch and report renamed Conduit variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_conduit_container_image_name_prefix', 'new': 'matrix_conduit_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-conduit/templates/conduit.toml.j2 b/roles/custom/matrix-conduit/templates/conduit.toml.j2 index 42f215f5a..e1ae99dee 100644 --- a/roles/custom/matrix-conduit/templates/conduit.toml.j2 +++ b/roles/custom/matrix-conduit/templates/conduit.toml.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Charles Wright +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # ============================================================================= # This is the official example config for Conduit. # If you use it for your server, you will need to adjust it to your own needs. diff --git a/roles/custom/matrix-conduit/templates/labels.j2 b/roles/custom/matrix-conduit/templates/labels.j2 index 33c2789a0..9dafbef81 100644 --- a/roles/custom/matrix-conduit/templates/labels.j2 +++ b/roles/custom/matrix-conduit/templates/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2024 Daniel Lo Nigro +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_conduit_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-conduit/templates/systemd/matrix-conduit.service.j2 b/roles/custom/matrix-conduit/templates/systemd/matrix-conduit.service.j2 index 4084f6a11..1ae8b7e97 100644 --- a/roles/custom/matrix-conduit/templates/systemd/matrix-conduit.service.j2 +++ b/roles/custom/matrix-conduit/templates/systemd/matrix-conduit.service.j2 @@ -9,7 +9,7 @@ After={{ service }} [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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-conduit 2>/dev/null || true' +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-conduit 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-conduit 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -40,7 +40,7 @@ ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach m ExecStartPost=-{{ matrix_host_command_sleep }} {{ matrix_conduit_systemd_service_post_start_delay_seconds }} {% endif %} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-conduit 2>/dev/null || true' +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-conduit 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-conduit 2>/dev/null || true' ExecReload={{ devture_systemd_docker_base_host_command_docker }} exec matrix-conduit /bin/sh -c 'kill -HUP 1' Restart=always diff --git a/roles/custom/matrix-conduit/templates/systemd/matrix-conduit.service.j2.license b/roles/custom/matrix-conduit/templates/systemd/matrix-conduit.service.j2.license new file mode 100644 index 000000000..e05b9cf3f --- /dev/null +++ b/roles/custom/matrix-conduit/templates/systemd/matrix-conduit.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Charles Wright + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-conduit/vars/main.yml b/roles/custom/matrix-conduit/vars/main.yml index 633204070..8ac0e1257 100644 --- a/roles/custom/matrix-conduit/vars/main.yml +++ b/roles/custom/matrix-conduit/vars/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Charles Wright +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- matrix_conduit_client_api_url_endpoint_public: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}://{{ matrix_conduit_hostname }}/_matrix/client/versions" matrix_conduit_federation_api_url_endpoint_public: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}://{{ matrix_conduit_hostname }}:{{ matrix_federation_public_port }}/_matrix/federation/v1/version" diff --git a/roles/custom/matrix-conduwuit/defaults/main.yml b/roles/custom/matrix-conduwuit/defaults/main.yml index f302ed664..37db36882 100644 --- a/roles/custom/matrix-conduwuit/defaults/main.yml +++ b/roles/custom/matrix-conduwuit/defaults/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # conduwuit is a very cool, featureful fork of conduit (https://gitlab.com/famedly/conduit). # Project source code URL: https://github.com/girlbossceo/conduwuit @@ -8,11 +13,12 @@ matrix_conduwuit_enabled: true matrix_conduwuit_hostname: '' matrix_conduwuit_docker_image: "{{ matrix_conduwuit_docker_image_registry_prefix }}girlbossceo/conduwuit:{{ matrix_conduwuit_docker_image_tag }}" -matrix_conduwuit_docker_image_name_prefix: "docker.io/" # renovate: datasource=docker depName=ghcr.io/girlbossceo/conduwuit matrix_conduwuit_docker_image_tag: v0.4.6-8f7ade4c22533a3177bfd8f175e178573ba6c1d4 matrix_conduwuit_docker_image_force_pull: "{{ matrix_conduwuit_docker_image.endswith(':latest') }}" -matrix_conduwuit_docker_image_registry_prefix: ghcr.io/ +matrix_conduwuit_docker_image_registry_prefix: "{{ matrix_conduwuit_docker_image_registry_prefix_upstream }}" +matrix_conduwuit_docker_image_registry_prefix_upstream: "{{ matrix_conduwuit_docker_image_registry_prefix_upstream_default }}" +matrix_conduwuit_docker_image_registry_prefix_upstream_default: ghcr.io/ matrix_conduwuit_base_path: "{{ matrix_base_data_path }}/conduwuit" matrix_conduwuit_config_path: "{{ matrix_conduwuit_base_path }}/config" diff --git a/roles/custom/matrix-conduwuit/tasks/install.yml b/roles/custom/matrix-conduwuit/tasks/install.yml index 91d244c25..aa489386e 100644 --- a/roles/custom/matrix-conduwuit/tasks/install.yml +++ b/roles/custom/matrix-conduwuit/tasks/install.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure conduwuit config path exists diff --git a/roles/custom/matrix-conduwuit/tasks/main.yml b/roles/custom/matrix-conduwuit/tasks/main.yml index 68d5daad1..425f81bee 100644 --- a/roles/custom/matrix-conduwuit/tasks/main.yml +++ b/roles/custom/matrix-conduwuit/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-conduwuit/tasks/self_check_client_api.yml b/roles/custom/matrix-conduwuit/tasks/self_check_client_api.yml index a34c14fb4..5ea3f830f 100644 --- a/roles/custom/matrix-conduwuit/tasks/self_check_client_api.yml +++ b/roles/custom/matrix-conduwuit/tasks/self_check_client_api.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check Matrix Client API @@ -14,7 +19,7 @@ - name: Fail if Matrix Client API not working ansible.builtin.fail: - msg: "Failed checking Matrix Client API is up at `{{ matrix_server_fqn_matrix }}` (checked endpoint: `{{ matrix_conduwuit_client_api_url_endpoint_public }}`). Is Conduwuit running? Is port 443 open in your firewall? Full error: {{ result_matrix_conduwuit_client_api }}" + msg: "Failed checking Matrix Client API is up at `{{ matrix_server_fqn_matrix }}` (checked endpoint: `{{ matrix_conduwuit_client_api_url_endpoint_public }}`). Is conduwuit running? Is port 443 open in your firewall? Full error: {{ result_matrix_conduwuit_client_api }}" when: "matrix_conduwuit_enabled | bool and (result_matrix_conduwuit_client_api.failed or 'json' not in result_matrix_conduwuit_client_api)" - name: Report working Matrix Client API diff --git a/roles/custom/matrix-conduwuit/tasks/self_check_federation_api.yml b/roles/custom/matrix-conduwuit/tasks/self_check_federation_api.yml index fde73dae0..000a4b608 100644 --- a/roles/custom/matrix-conduwuit/tasks/self_check_federation_api.yml +++ b/roles/custom/matrix-conduwuit/tasks/self_check_federation_api.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check Matrix Federation API diff --git a/roles/custom/matrix-conduwuit/tasks/setup_install.yml b/roles/custom/matrix-conduwuit/tasks/setup_install.yml index 02b189986..4a5651fcf 100644 --- a/roles/custom/matrix-conduwuit/tasks/setup_install.yml +++ b/roles/custom/matrix-conduwuit/tasks/setup_install.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure conduwuit config path exists diff --git a/roles/custom/matrix-conduwuit/tasks/setup_uninstall.yml b/roles/custom/matrix-conduwuit/tasks/setup_uninstall.yml index dcf802b0a..24326b337 100644 --- a/roles/custom/matrix-conduwuit/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-conduwuit/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-conduwuit service diff --git a/roles/custom/matrix-conduwuit/tasks/uninstall.yml b/roles/custom/matrix-conduwuit/tasks/uninstall.yml index dcf802b0a..9755d5ad1 100644 --- a/roles/custom/matrix-conduwuit/tasks/uninstall.yml +++ b/roles/custom/matrix-conduwuit/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-conduwuit service diff --git a/roles/custom/matrix-conduwuit/tasks/validate_config.yml b/roles/custom/matrix-conduwuit/tasks/validate_config.yml index 26f3ab100..acb95bec1 100644 --- a/roles/custom/matrix-conduwuit/tasks/validate_config.yml +++ b/roles/custom/matrix-conduwuit/tasks/validate_config.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required conduwuit settings not defined diff --git a/roles/custom/matrix-conduwuit/templates/conduwuit.toml.j2 b/roles/custom/matrix-conduwuit/templates/conduwuit.toml.j2 index 4b011448c..0438a2d97 100644 --- a/roles/custom/matrix-conduwuit/templates/conduwuit.toml.j2 +++ b/roles/custom/matrix-conduwuit/templates/conduwuit.toml.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2025 MDAD project contributors +SPDX-FileCopyrightText: 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + ### conduwuit Configuration ### See: ### https://conduwuit.puppyirl.gay/configuration.html @@ -870,7 +878,7 @@ turn_password = {{ matrix_conduwuit_config_turn_password | to_json }} # 0 = AbsoluteConsistency # 1 = TolerateCorruptedTailRecords (default) # 2 = PointInTime (use me if trying to recover) -# 3 = SkipAnyCorruptedRecord (you now voided your Conduwuit warranty) +# 3 = SkipAnyCorruptedRecord (you now voided your conduwuit warranty) # # For more information on these modes, see: # https://github.com/facebook/rocksdb/wiki/WAL-Recovery-Modes diff --git a/roles/custom/matrix-conduwuit/templates/env.j2.license b/roles/custom/matrix-conduwuit/templates/env.j2.license new file mode 100644 index 000000000..a149c4232 --- /dev/null +++ b/roles/custom/matrix-conduwuit/templates/env.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-conduwuit/templates/labels.j2 b/roles/custom/matrix-conduwuit/templates/labels.j2 index 9ef9db4f8..bcaf3b2dc 100644 --- a/roles/custom/matrix-conduwuit/templates/labels.j2 +++ b/roles/custom/matrix-conduwuit/templates/labels.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2025 MDAD project contributors +SPDX-FileCopyrightText: 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_conduwuit_container_labels_traefik_enabled %} traefik.enable=true @@ -134,7 +142,7 @@ traefik.http.routers.matrix-conduwuit-public-federation-api.tls.certResolver={{ {% if matrix_conduwuit_container_labels_public_conduwuit_api_enabled %} ############################################################ # # -# Public Conduwuit-API (/_conduwuit) # +# Public conduwuit-API (/_conduwuit) # # # ############################################################ @@ -154,7 +162,7 @@ traefik.http.routers.matrix-conduwuit-public-conduwuit-api.tls.certResolver={{ m ############################################################ # # -# /Public Conduwuit-API (/_conduwuit) # +# /Public conduwuit-API (/_conduwuit) # # # ############################################################ {% endif %} diff --git a/roles/custom/matrix-conduwuit/templates/systemd/matrix-conduwuit.service.j2 b/roles/custom/matrix-conduwuit/templates/systemd/matrix-conduwuit.service.j2 index 5291e33a8..2c05c7872 100644 --- a/roles/custom/matrix-conduwuit/templates/systemd/matrix-conduwuit.service.j2 +++ b/roles/custom/matrix-conduwuit/templates/systemd/matrix-conduwuit.service.j2 @@ -9,7 +9,7 @@ After={{ service }} [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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-conduwuit 2>/dev/null || true' +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-conduwuit 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-conduwuit 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -40,7 +40,7 @@ ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach m ExecStartPost=-{{ matrix_host_command_sleep }} {{ matrix_conduwuit_systemd_service_post_start_delay_seconds }} {% endif %} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-conduwuit 2>/dev/null || true' +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-conduwuit 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-conduwuit 2>/dev/null || true' ExecReload={{ devture_systemd_docker_base_host_command_docker }} exec matrix-conduwuit /bin/sh -c 'kill -HUP 1' Restart=always diff --git a/roles/custom/matrix-conduwuit/templates/systemd/matrix-conduwuit.service.j2.license b/roles/custom/matrix-conduwuit/templates/systemd/matrix-conduwuit.service.j2.license new file mode 100644 index 000000000..6fe7fc50c --- /dev/null +++ b/roles/custom/matrix-conduwuit/templates/systemd/matrix-conduwuit.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2025 MDAD project contributors +SPDX-FileCopyrightText: 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-conduwuit/vars/main.yml b/roles/custom/matrix-conduwuit/vars/main.yml index 02684574c..fa5ec9d6e 100644 --- a/roles/custom/matrix-conduwuit/vars/main.yml +++ b/roles/custom/matrix-conduwuit/vars/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- matrix_conduwuit_client_api_url_endpoint_public: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}://{{ matrix_conduwuit_hostname }}/_matrix/client/versions" diff --git a/roles/custom/matrix-corporal/defaults/main.yml b/roles/custom/matrix-corporal/defaults/main.yml index c6829a689..53151c2b0 100644 --- a/roles/custom/matrix-corporal/defaults/main.yml +++ b/roles/custom/matrix-corporal/defaults/main.yml @@ -1,11 +1,22 @@ +# SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Sylvia van Os +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2021 boris runakov +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-corporal is a reconciliator and gateway for a managed Matrix server. # Project source code URL: https://github.com/devture/matrix-corporal matrix_corporal_enabled: true -# renovate: datasource=docker depName=devture/matrix-corporal -matrix_corporal_version: 3.1.2 +# renovate: datasource=docker depName=ghcr.io/devture/matrix-corporal +matrix_corporal_version: 3.1.4 matrix_corporal_container_image_self_build: false matrix_corporal_container_image_self_build_repo: "https://github.com/devture/matrix-corporal.git" @@ -81,8 +92,10 @@ matrix_corporal_systemd_required_services_list_default: "{{ [devture_systemd_doc matrix_corporal_systemd_required_services_list_auto: [] matrix_corporal_systemd_required_services_list_custom: [] -matrix_corporal_docker_image: "{{ matrix_corporal_docker_image_name_prefix }}devture/matrix-corporal:{{ matrix_corporal_docker_image_tag }}" -matrix_corporal_docker_image_name_prefix: "{{ 'localhost/' if matrix_corporal_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_corporal_docker_image: "{{ matrix_corporal_docker_image_registry_prefix }}devture/matrix-corporal:{{ matrix_corporal_docker_image_tag }}" +matrix_corporal_docker_image_registry_prefix: "{{ 'localhost/' if matrix_corporal_container_image_self_build else matrix_corporal_docker_image_registry_prefix_upstream }}" +matrix_corporal_docker_image_registry_prefix_upstream: "{{ matrix_corporal_docker_image_registry_prefix_upstream_default }}" +matrix_corporal_docker_image_registry_prefix_upstream_default: ghcr.io/ matrix_corporal_docker_image_tag: "{{ matrix_corporal_version }}" # for backward-compatibility matrix_corporal_docker_image_force_pull: "{{ matrix_corporal_docker_image.endswith(':latest') }}" diff --git a/roles/custom/matrix-corporal/tasks/main.yml b/roles/custom/matrix-corporal/tasks/main.yml index 54ca8ef78..0af9f70c9 100644 --- a/roles/custom/matrix-corporal/tasks/main.yml +++ b/roles/custom/matrix-corporal/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-corporal/tasks/self_check.yml b/roles/custom/matrix-corporal/tasks/self_check.yml index 0758863f8..262c30bed 100644 --- a/roles/custom/matrix-corporal/tasks/self_check.yml +++ b/roles/custom/matrix-corporal/tasks/self_check.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Dan Arnfield +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check Matrix Corporal HTTP gateway diff --git a/roles/custom/matrix-corporal/tasks/setup_install.yml b/roles/custom/matrix-corporal/tasks/setup_install.yml index a8633ffc9..cdbf3af87 100644 --- a/roles/custom/matrix-corporal/tasks/setup_install.yml +++ b/roles/custom/matrix-corporal/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2018 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Matrix Corporal paths exist diff --git a/roles/custom/matrix-corporal/tasks/setup_uninstall.yml b/roles/custom/matrix-corporal/tasks/setup_uninstall.yml index 6c6e8063a..9631e37f3 100644 --- a/roles/custom/matrix-corporal/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-corporal/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-corporal service diff --git a/roles/custom/matrix-corporal/tasks/validate_config.yml b/roles/custom/matrix-corporal/tasks/validate_config.yml index 39f7190d4..366527fcb 100644 --- a/roles/custom/matrix-corporal/tasks/validate_config.yml +++ b/roles/custom/matrix-corporal/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-corporal settings not defined @@ -21,8 +27,9 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_corporal_container_expose_ports', 'new': ''} - {'old': 'matrix_corporal_reconciliation_user_id_local_part', 'new': 'matrix_corporal_corporal_user_id_local_part'} + - {'old': 'matrix_corporal_container_image_name_prefix', 'new': 'matrix_corporal_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-corporal/templates/config.json.j2.license b/roles/custom/matrix-corporal/templates/config.json.j2.license new file mode 100644 index 000000000..e2fc3ce69 --- /dev/null +++ b/roles/custom/matrix-corporal/templates/config.json.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2018 - 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Hugues De Keyzer + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-corporal/templates/labels.j2 b/roles/custom/matrix-corporal/templates/labels.j2 index e28fd7761..9c068309b 100644 --- a/roles/custom/matrix-corporal/templates/labels.j2 +++ b/roles/custom/matrix-corporal/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_corporal_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-corporal/templates/systemd/matrix-corporal.service.j2 b/roles/custom/matrix-corporal/templates/systemd/matrix-corporal.service.j2 index 41900d130..473d9450b 100644 --- a/roles/custom/matrix-corporal/templates/systemd/matrix-corporal.service.j2 +++ b/roles/custom/matrix-corporal/templates/systemd/matrix-corporal.service.j2 @@ -10,7 +10,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-corporal 2>/dev/null || true' +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-corporal 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-corporal 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -43,7 +43,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-corporal -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-corporal 2>/dev/null || true' +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-corporal 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-corporal 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-corporal/templates/systemd/matrix-corporal.service.j2.license b/roles/custom/matrix-corporal/templates/systemd/matrix-corporal.service.j2.license new file mode 100644 index 000000000..8d7f54f75 --- /dev/null +++ b/roles/custom/matrix-corporal/templates/systemd/matrix-corporal.service.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2018 - 2025 Slavi Pantaleev +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-coturn/defaults/main.yml b/roles/custom/matrix-coturn/defaults/main.yml index bda15196a..84e1d42c2 100644 --- a/roles/custom/matrix-coturn/defaults/main.yml +++ b/roles/custom/matrix-coturn/defaults/main.yml @@ -1,3 +1,18 @@ +# SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Stuart Mumford +# SPDX-FileCopyrightText: 2019 Sylvia van Os +# SPDX-FileCopyrightText: 2020 - 2021 Dan Arnfield +# SPDX-FileCopyrightText: 2020 Horvath Gergely +# SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Hefty Zauk +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Project source code URL: https://github.com/coturn/coturn @@ -10,8 +25,10 @@ matrix_coturn_container_image_self_build_repo_dockerfile_path: "docker/coturn/al # renovate: datasource=docker depName=coturn/coturn matrix_coturn_version: 4.6.2-r11 -matrix_coturn_docker_image: "{{ matrix_coturn_docker_image_name_prefix }}coturn/coturn:{{ matrix_coturn_version }}-alpine" -matrix_coturn_docker_image_name_prefix: "{{ 'localhost/' if matrix_coturn_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_coturn_docker_image: "{{ matrix_coturn_docker_image_registry_prefix }}coturn/coturn:{{ matrix_coturn_version }}-alpine" +matrix_coturn_docker_image_registry_prefix: "{{ 'localhost/' if matrix_coturn_container_image_self_build else matrix_coturn_docker_image_registry_prefix_upstream }}" +matrix_coturn_docker_image_registry_prefix_upstream: "{{ matrix_coturn_docker_image_registry_prefix_upstream_default }}" +matrix_coturn_docker_image_registry_prefix_upstream_default: docker.io/ matrix_coturn_docker_image_force_pull: "{{ matrix_coturn_docker_image.endswith(':latest') }}" # The Docker network that coturn would be put into. @@ -39,7 +56,10 @@ matrix_coturn_docker_src_files_path: "{{ matrix_coturn_base_path }}/docker-src" matrix_coturn_config_path: "{{ matrix_coturn_base_path }}/turnserver.conf" # List of systemd services that matrix-coturn.service depends on -matrix_coturn_systemd_required_services_list: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" +matrix_coturn_systemd_required_services_list: "{{ matrix_coturn_systemd_required_services_list_default + matrix_coturn_systemd_required_services_list_auto + matrix_coturn_systemd_required_services_list_custom }}" +matrix_coturn_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" +matrix_coturn_systemd_required_services_list_auto: [] +matrix_coturn_systemd_required_services_list_custom: [] # A list of additional "volumes" to mount in the container. # This list gets populated dynamically at runtime. You can provide a different default value, @@ -51,15 +71,33 @@ matrix_coturn_container_additional_volumes: [] # A list of extra arguments to pass to the container matrix_coturn_container_extra_arguments: [] -# Controls whether the coturn container exposes its plain STUN port (tcp/3478 and udp/3478 in the container). +# Controls whether the coturn container exposes its plain STUN port (tcp/3478 in the container) over TCP. +# +# Takes an ":" or "" value (e.g. "127.0.0.1:3478"), or empty string to not expose. +matrix_coturn_container_stun_plain_host_bind_port_tcp: "{{ '3478' if matrix_coturn_container_network != 'host' else '' }}" + +# Controls whether the coturn container exposes its plain STUN port (udp/3478 in the container) over UDP. # # Takes an ":" or "" value (e.g. "127.0.0.1:3478"), or empty string to not expose. -matrix_coturn_container_stun_plain_host_bind_port: "{{ '3478' if matrix_coturn_container_network != 'host' else '' }}" +# +# Ideally, we'd like to set this to "" to avoid exposing this port and decrease the risk of DDoS amplification attacks. +# See: https://stormwall.network/resources/blog/protect-against-ddos-based-on-stun-exploit +# In practice, old Element clients only support talking to the STUN port over UDP, not TCP, so we need to keep this enabled for now. +matrix_coturn_container_stun_plain_host_bind_port_udp: "{{ '3478' if matrix_coturn_container_network != 'host' else '' }}" -# Controls whether the coturn container exposes its TLS STUN port (tcp/5349 and udp/5349 in the container). +# Controls whether the coturn container exposes its TLS STUN port (tcp/5349 in the container) over TCP. # # Takes an ":" or "" value (e.g. "127.0.0.1:5349"), or empty string to not expose. -matrix_coturn_container_stun_tls_host_bind_port: "{{ '5349' if matrix_coturn_container_network != 'host' else '' }}" +matrix_coturn_container_stun_tls_host_bind_port_tcp: "{{ '5349' if matrix_coturn_container_network != 'host' else '' }}" + +# Controls whether the coturn container exposes its TLS STUN port (udp/5349 in the container) over UDP. +# +# Takes an ":" or "" value (e.g. "127.0.0.1:5349"), or empty string to not expose. +# +# This is enabled by default, unlike `matrix_coturn_container_stun_plain_host_bind_port_udp`, +# because the risk of DDoS amplification attacks is lower for TLS +# due to the handshake requiring two-way authentication and being generally more expensive. +matrix_coturn_container_stun_tls_host_bind_port_udp: "{{ '5349' if matrix_coturn_container_network != 'host' else '' }}" # Controls whether the coturn container exposes its TURN UDP port range and which interface to do it on. # @@ -186,3 +224,9 @@ matrix_coturn_tls_key_path: ~ matrix_coturn_tls_v1_enabled: false matrix_coturn_tls_v1_1_enabled: false + +# systemd calendar configuration for the reload job +# the actual job may run with a delay (see matrix_coturn_reload_schedule_randomized_delay_sec) +matrix_coturn_reload_schedule: "*-*-* 06:30:00" +# the delay with which the systemd timer may run in relation to the `matrix_coturn_reload_schedule` schedule +matrix_coturn_reload_schedule_randomized_delay_sec: 1h diff --git a/roles/custom/matrix-coturn/tasks/main.yml b/roles/custom/matrix-coturn/tasks/main.yml index 1b1332fb7..0aa46f58f 100644 --- a/roles/custom/matrix-coturn/tasks/main.yml +++ b/roles/custom/matrix-coturn/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-coturn/tasks/setup_install.yml b/roles/custom/matrix-coturn/tasks/setup_install.yml index 30aa742cd..697edb4ee 100644 --- a/roles/custom/matrix-coturn/tasks/setup_install.yml +++ b/roles/custom/matrix-coturn/tasks/setup_install.yml @@ -1,3 +1,17 @@ +# SPDX-FileCopyrightText: 2018 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 - 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2020 Béla Becker +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 Horvath Gergely +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - when: matrix_coturn_turn_external_ip_address_auto_detection_enabled | bool @@ -97,6 +111,7 @@ - name: Ensure coturn network is created in Docker when: matrix_coturn_container_network not in ['', 'host'] community.docker.docker_network: + enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" name: "{{ matrix_coturn_container_network }}" driver: bridge driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" diff --git a/roles/custom/matrix-coturn/tasks/setup_uninstall.yml b/roles/custom/matrix-coturn/tasks/setup_uninstall.yml index e747ff094..57746906c 100644 --- a/roles/custom/matrix-coturn/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-coturn/tasks/setup_uninstall.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-coturn service diff --git a/roles/custom/matrix-coturn/tasks/validate_config.yml b/roles/custom/matrix-coturn/tasks/validate_config.yml index 7fd26e881..4d7568cee 100644 --- a/roles/custom/matrix-coturn/tasks/validate_config.yml +++ b/roles/custom/matrix-coturn/tasks/validate_config.yml @@ -1,13 +1,21 @@ +# SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: (Deprecation) Catch and report renamed coturn settings ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_coturn_docker_network', 'new': 'matrix_coturn_container_network'} + - {'old': 'matrix_coturn_container_stun_plain_host_bind_port', 'new': 'superseded by matrix_coturn_container_stun_plain_host_bind_port_tcp and matrix_coturn_container_stun_plain_host_bind_port_udp'} + - {'old': 'matrix_coturn_container_stun_tls_host_bind_port', 'new': 'superseded by matrix_coturn_container_stun_tls_host_bind_port_tcp and matrix_coturn_container_stun_tls_host_bind_port_udp'} + - {'old': 'matrix_coturn_container_image_name_prefix', 'new': 'matrix_coturn_docker_image_registry_prefix'} - name: Fail if matrix_coturn_authentication_method is invalid ansible.builtin.fail: diff --git a/roles/custom/matrix-coturn/templates/systemd/matrix-coturn-reload.service.j2 b/roles/custom/matrix-coturn/templates/systemd/matrix-coturn-reload.service.j2 index 7d12f6ec8..f1f3d0f6a 100644 --- a/roles/custom/matrix-coturn/templates/systemd/matrix-coturn-reload.service.j2 +++ b/roles/custom/matrix-coturn/templates/systemd/matrix-coturn-reload.service.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + [Unit] Description=Reloads matrix-coturn so that new SSL certificates can kick in diff --git a/roles/custom/matrix-coturn/templates/systemd/matrix-coturn-reload.timer.j2 b/roles/custom/matrix-coturn/templates/systemd/matrix-coturn-reload.timer.j2 index 528945412..902ed5821 100644 --- a/roles/custom/matrix-coturn/templates/systemd/matrix-coturn-reload.timer.j2 +++ b/roles/custom/matrix-coturn/templates/systemd/matrix-coturn-reload.timer.j2 @@ -1,10 +1,18 @@ +{# +SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2021 Hardy Erlinger +SPDX-FileCopyrightText: 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + [Unit] Description=Reloads matrix-coturn periodically so that new SSL certificates can kick in [Timer] Unit=matrix-coturn-reload.service -OnCalendar=*-*-* 06:30:00 -RandomizedDelaySec=1h +OnCalendar={{ matrix_coturn_reload_schedule }} +RandomizedDelaySec={{ matrix_coturn_reload_schedule_randomized_delay_sec }} [Install] WantedBy=timers.target diff --git a/roles/custom/matrix-coturn/templates/systemd/matrix-coturn.service.j2 b/roles/custom/matrix-coturn/templates/systemd/matrix-coturn.service.j2 index 072975b2d..5aec071f6 100644 --- a/roles/custom/matrix-coturn/templates/systemd/matrix-coturn.service.j2 +++ b/roles/custom/matrix-coturn/templates/systemd/matrix-coturn.service.j2 @@ -10,7 +10,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-coturn 2>/dev/null || true' +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-coturn 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-coturn 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -24,13 +24,17 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ --read-only \ --tmpfs=/var/tmp:rw,noexec,nosuid,size=100m \ --network={{ matrix_coturn_container_network }} \ - {% if matrix_coturn_container_stun_plain_host_bind_port != '' %} - -p {{ matrix_coturn_container_stun_plain_host_bind_port }}:3478 \ - -p {{ matrix_coturn_container_stun_plain_host_bind_port }}:3478/udp \ + {% if matrix_coturn_container_stun_plain_host_bind_port_tcp != '' %} + -p {{ matrix_coturn_container_stun_plain_host_bind_port_tcp }}:3478 \ {% endif %} - {% if matrix_coturn_container_stun_tls_host_bind_port != '' %} - -p {{ matrix_coturn_container_stun_tls_host_bind_port }}:5349 \ - -p {{ matrix_coturn_container_stun_tls_host_bind_port }}:5349/udp \ + {% if matrix_coturn_container_stun_plain_host_bind_port_udp != '' %} + -p {{ matrix_coturn_container_stun_plain_host_bind_port_udp }}:3478/udp \ + {% endif %} + {% if matrix_coturn_container_stun_tls_host_bind_port_tcp != '' %} + -p {{ matrix_coturn_container_stun_tls_host_bind_port_tcp }}:5349 \ + {% endif %} + {% if matrix_coturn_container_stun_tls_host_bind_port_udp != '' %} + -p {{ matrix_coturn_container_stun_tls_host_bind_port_udp }}:5349/udp \ {% endif %} {% if matrix_coturn_container_turn_range_listen_interface is not in [none, 'none'] %} -p {{ matrix_coturn_container_turn_range_listen_interface }}{{ ':' if matrix_coturn_container_turn_range_listen_interface else '' }}{{ matrix_coturn_turn_udp_min_port }}-{{ matrix_coturn_turn_udp_max_port }}:{{ matrix_coturn_turn_udp_min_port }}-{{ matrix_coturn_turn_udp_max_port }}/udp \ @@ -51,7 +55,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-coturn -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-coturn 2>/dev/null || true' +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-coturn 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-coturn 2>/dev/null || true' # This only reloads certificates (not other configuration). diff --git a/roles/custom/matrix-coturn/templates/systemd/matrix-coturn.service.j2.license b/roles/custom/matrix-coturn/templates/systemd/matrix-coturn.service.j2.license new file mode 100644 index 000000000..df5eb9b5a --- /dev/null +++ b/roles/custom/matrix-coturn/templates/systemd/matrix-coturn.service.j2.license @@ -0,0 +1,8 @@ +SPDX-FileCopyrightText: 2018 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2019 Sylvia van Os +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2021 Dan Arnfield +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-coturn/templates/turnserver.conf.j2.license b/roles/custom/matrix-coturn/templates/turnserver.conf.j2.license new file mode 100644 index 000000000..98807515d --- /dev/null +++ b/roles/custom/matrix-coturn/templates/turnserver.conf.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2018 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2019 Stuart Mumford +SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-coturn/vars/main.yml b/roles/custom/matrix-coturn/vars/main.yml new file mode 100644 index 000000000..4391c2853 --- /dev/null +++ b/roles/custom/matrix-coturn/vars/main.yml @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +matrix_coturn_turn_uris: |- + {{ + ([ + 'turns:' + matrix_server_fqn_matrix + '?transport=udp', + 'turns:' + matrix_server_fqn_matrix + '?transport=tcp', + ] if matrix_coturn_tls_enabled else []) + + + ([ + 'turn:' + matrix_server_fqn_matrix + '?transport=udp', + ] if (matrix_coturn_container_stun_plain_host_bind_port_udp != '' or matrix_coturn_container_network == 'host') else []) + + + ([ + 'turn:' + matrix_server_fqn_matrix + '?transport=tcp', + ] if (matrix_coturn_container_stun_plain_host_bind_port_tcp != '' or matrix_coturn_container_network == 'host') else []) + }} diff --git a/roles/custom/matrix-dendrite/defaults/main.yml b/roles/custom/matrix-dendrite/defaults/main.yml index f57947252..d4b1bab79 100644 --- a/roles/custom/matrix-dendrite/defaults/main.yml +++ b/roles/custom/matrix-dendrite/defaults/main.yml @@ -1,3 +1,17 @@ +# SPDX-FileCopyrightText: 2022 - 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Aaron Raimist +# SPDX-FileCopyrightText: 2022 Darren Rambaud +# SPDX-FileCopyrightText: 2022 Jip J. Dekker +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Shaleen Jain +# SPDX-FileCopyrightText: 2023 Isaiah Becker-Mayer +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Dendrite is a second-generation Matrix homeserver currently in Beta # Project source code URL: https://github.com/matrix-org/dendrite @@ -10,8 +24,10 @@ matrix_dendrite_container_image_self_build: false matrix_dendrite_container_image_self_build_repo: "https://github.com/matrix-org/dendrite.git" matrix_dendrite_docker_image_path: "matrixdotorg/dendrite-monolith" -matrix_dendrite_docker_image: "{{ matrix_dendrite_docker_image_name_prefix }}{{ matrix_dendrite_docker_image_path }}:{{ matrix_dendrite_docker_image_tag }}" -matrix_dendrite_docker_image_name_prefix: "{{ 'localhost/' if matrix_dendrite_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_dendrite_docker_image: "{{ matrix_dendrite_docker_image_registry_prefix }}{{ matrix_dendrite_docker_image_path }}:{{ matrix_dendrite_docker_image_tag }}" +matrix_dendrite_docker_image_registry_prefix: "{{ 'localhost/' if matrix_dendrite_container_image_self_build else matrix_dendrite_docker_image_registry_prefix_upstream }}" +matrix_dendrite_docker_image_registry_prefix_upstream: "{{ matrix_dendrite_docker_image_registry_prefix_upstream_default }}" +matrix_dendrite_docker_image_registry_prefix_upstream_default: docker.io/ # renovate: datasource=docker depName=matrixdotorg/dendrite-monolith matrix_dendrite_docker_image_tag: "v0.14.1" matrix_dendrite_docker_image_force_pull: "{{ matrix_dendrite_docker_image.endswith(':latest') }}" @@ -224,6 +240,9 @@ matrix_dendrite_client_api_rate_limiting_cooloff_ms: 500 # Controls whether people with access to the homeserver can register by themselves. matrix_dendrite_client_api_registration_disabled: true +# Controls whether guest accounts are disabled +matrix_dendrite_guests_disabled: true + # reCAPTCHA API for validating registration attempts matrix_dendrite_client_api_enable_registration_captcha: false matrix_dendrite_client_api_recaptcha_public_key: "" diff --git a/roles/custom/matrix-dendrite/tasks/main.yml b/roles/custom/matrix-dendrite/tasks/main.yml index 78d81524c..b241677b1 100644 --- a/roles/custom/matrix-dendrite/tasks/main.yml +++ b/roles/custom/matrix-dendrite/tasks/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Aaron Raimist +# SPDX-FileCopyrightText: 2022 Jip J. Dekker +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-dendrite/tasks/register_user.yml b/roles/custom/matrix-dendrite/tasks/register_user.yml index 8ee18ed2f..fa2c0339b 100644 --- a/roles/custom/matrix-dendrite/tasks/register_user.yml +++ b/roles/custom/matrix-dendrite/tasks/register_user.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 Jip J. Dekker +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if playbook called incorrectly diff --git a/roles/custom/matrix-dendrite/tasks/self_check_client_api.yml b/roles/custom/matrix-dendrite/tasks/self_check_client_api.yml index f6eb602c6..d681793a1 100644 --- a/roles/custom/matrix-dendrite/tasks/self_check_client_api.yml +++ b/roles/custom/matrix-dendrite/tasks/self_check_client_api.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 Jip J. Dekker +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check Matrix Client API ansible.builtin.uri: diff --git a/roles/custom/matrix-dendrite/tasks/self_check_federation_api.yml b/roles/custom/matrix-dendrite/tasks/self_check_federation_api.yml index bba20ff16..82b220679 100644 --- a/roles/custom/matrix-dendrite/tasks/self_check_federation_api.yml +++ b/roles/custom/matrix-dendrite/tasks/self_check_federation_api.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 Jip J. Dekker +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check Matrix Federation API ansible.builtin.uri: diff --git a/roles/custom/matrix-dendrite/tasks/setup_install.yml b/roles/custom/matrix-dendrite/tasks/setup_install.yml index acc2558f7..262f16d04 100644 --- a/roles/custom/matrix-dendrite/tasks/setup_install.yml +++ b/roles/custom/matrix-dendrite/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Jim Myhrberg +# SPDX-FileCopyrightText: 2022 Jip J. Dekker +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2023 Isaiah Becker-Mayer +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Dendrite paths exist ansible.builtin.file: diff --git a/roles/custom/matrix-dendrite/tasks/setup_uninstall.yml b/roles/custom/matrix-dendrite/tasks/setup_uninstall.yml index f6a537b30..fb744a88f 100644 --- a/roles/custom/matrix-dendrite/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-dendrite/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-dendrite service diff --git a/roles/custom/matrix-dendrite/tasks/validate_config.yml b/roles/custom/matrix-dendrite/tasks/validate_config.yml index 581825a38..2f91bfa74 100644 --- a/roles/custom/matrix-dendrite/tasks/validate_config.yml +++ b/roles/custom/matrix-dendrite/tasks/validate_config.yml @@ -1,10 +1,17 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Jip J. Dekker +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: (Deprecation) Catch and report renamed Dendrite settings ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_dendrite_enable_registration_captcha', 'new': 'matrix_dendrite_client_api_enable_registration_captcha'} @@ -27,6 +34,7 @@ - {'old': 'matrix_dendrite_pushserver_database', 'new': 'matrix_dendrite_push_server_database'} - {'old': 'matrix_dendrite_relayapi_database', 'new': 'matrix_dendrite_relay_api_database'} - {'old': 'matrix_dendrite_keyserver_database', 'new': 'matrix_dendrite_key_server_database'} + - {'old': 'matrix_dendrite_container_image_name_prefix', 'new': 'matrix_dendrite_docker_image_registry_prefix'} - name: Fail if required Dendrite settings not defined ansible.builtin.fail: diff --git a/roles/custom/matrix-dendrite/templates/bin/create-account.j2.license b/roles/custom/matrix-dendrite/templates/bin/create-account.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-dendrite/templates/bin/create-account.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-dendrite/templates/dendrite.yaml.j2 b/roles/custom/matrix-dendrite/templates/dendrite.yaml.j2 index 3b7947260..8c99c060f 100644 --- a/roles/custom/matrix-dendrite/templates/dendrite.yaml.j2 +++ b/roles/custom/matrix-dendrite/templates/dendrite.yaml.j2 @@ -1,3 +1,13 @@ +{# +SPDX-FileCopyrightText: 2022 - 2023 MDAD project contributors +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Jip J. Dekker +SPDX-FileCopyrightText: 2022 Shaleen Jain +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # This is the Dendrite configuration file. # # The configuration is split up into sections - each Dendrite component has a @@ -179,7 +189,7 @@ client_api: # Prevents new guest accounts from being created. Guest registration is also # disabled implicitly by setting 'registration_disabled' above. - guests_disabled: true + guests_disabled: {{ matrix_dendrite_guests_disabled | to_json }} # If set, allows registration by anyone who knows the shared secret, regardless of # whether registration is otherwise disabled. diff --git a/roles/custom/matrix-dendrite/templates/labels.j2 b/roles/custom/matrix-dendrite/templates/labels.j2 index d74424b99..18a69573a 100644 --- a/roles/custom/matrix-dendrite/templates/labels.j2 +++ b/roles/custom/matrix-dendrite/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_dendrite_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-dendrite/templates/systemd/matrix-dendrite.service.j2 b/roles/custom/matrix-dendrite/templates/systemd/matrix-dendrite.service.j2 index 7dff4e0f9..ca09cb292 100644 --- a/roles/custom/matrix-dendrite/templates/systemd/matrix-dendrite.service.j2 +++ b/roles/custom/matrix-dendrite/templates/systemd/matrix-dendrite.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-dendrite 2>/dev/null || true' +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-dendrite 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-dendrite 2>/dev/null || true' {% if (postgres_identifier + '.service') in matrix_dendrite_systemd_required_services_list %} @@ -67,7 +67,7 @@ ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach m ExecStartPost=-{{ matrix_host_command_sleep }} {{ matrix_dendrite_systemd_service_post_start_delay_seconds }} {% endif %} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-dendrite 2>/dev/null || true' +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-dendrite 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-dendrite 2>/dev/null || true' ExecReload={{ devture_systemd_docker_base_host_command_docker }} exec matrix-dendrite /bin/sh -c 'kill -HUP 1' Restart=always diff --git a/roles/custom/matrix-dendrite/templates/systemd/matrix-dendrite.service.j2.license b/roles/custom/matrix-dendrite/templates/systemd/matrix-dendrite.service.j2.license new file mode 100644 index 000000000..e4e9cc7ca --- /dev/null +++ b/roles/custom/matrix-dendrite/templates/systemd/matrix-dendrite.service.j2.license @@ -0,0 +1,7 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Charles Wright +SPDX-FileCopyrightText: 2022 Jip J. Dekker +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2022 Shaleen Jain + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-dendrite/vars/main.yml b/roles/custom/matrix-dendrite/vars/main.yml index 28a0f1bde..0a09d57c1 100644 --- a/roles/custom/matrix-dendrite/vars/main.yml +++ b/roles/custom/matrix-dendrite/vars/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Jip J. Dekker +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- matrix_dendrite_client_api_url_endpoint_public: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}://{{ matrix_dendrite_hostname }}/_matrix/client/versions" matrix_dendrite_federation_api_url_endpoint_public: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}://{{ matrix_dendrite_hostname }}:{{ matrix_federation_public_port }}/_matrix/federation/v1/version" diff --git a/roles/custom/matrix-dimension/defaults/main.yml b/roles/custom/matrix-dimension/defaults/main.yml index 136d9b9ec..8d4a11c7e 100644 --- a/roles/custom/matrix-dimension/defaults/main.yml +++ b/roles/custom/matrix-dimension/defaults/main.yml @@ -1,3 +1,18 @@ +# 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 @@ -31,8 +46,10 @@ matrix_dimension_docker_src_files_path: "{{ matrix_base_data_path }}/docker-src/ # renovate: datasource=docker depName=turt2live/matrix-dimension matrix_dimension_version: latest -matrix_dimension_docker_image: "{{ matrix_dimension_docker_image_name_prefix }}turt2live/matrix-dimension:{{ matrix_dimension_version }}" -matrix_dimension_docker_image_name_prefix: "{{ 'localhost/' if matrix_dimension_container_image_self_build else matrix_container_global_registry_prefix }}" +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. diff --git a/roles/custom/matrix-dimension/tasks/main.yml b/roles/custom/matrix-dimension/tasks/main.yml index 1e949d3f2..19385f106 100644 --- a/roles/custom/matrix-dimension/tasks/main.yml +++ b/roles/custom/matrix-dimension/tasks/main.yml @@ -1,3 +1,10 @@ +# 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: diff --git a/roles/custom/matrix-dimension/tasks/setup_install.yml b/roles/custom/matrix-dimension/tasks/setup_install.yml index ce7080c52..5aaeb6d1e 100644 --- a/roles/custom/matrix-dimension/tasks/setup_install.yml +++ b/roles/custom/matrix-dimension/tasks/setup_install.yml @@ -1,3 +1,16 @@ +# 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: @@ -105,7 +118,7 @@ delay: "{{ devture_playbook_help_container_retries_delay }}" until: matrix_dimension_pull_results is not failed -- name: Ensure dimension repository is present on self-build +- 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 }}" diff --git a/roles/custom/matrix-dimension/tasks/setup_uninstall.yml b/roles/custom/matrix-dimension/tasks/setup_uninstall.yml index 239e4d892..b52995681 100644 --- a/roles/custom/matrix-dimension/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-dimension/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# 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 diff --git a/roles/custom/matrix-dimension/tasks/validate_config.yml b/roles/custom/matrix-dimension/tasks/validate_config.yml index b001ceedb..39120d536 100644 --- a/roles/custom/matrix-dimension/tasks/validate_config.yml +++ b/roles/custom/matrix-dimension/tasks/validate_config.yml @@ -1,3 +1,12 @@ +# 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 @@ -18,10 +27,11 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" 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: diff --git a/roles/custom/matrix-dimension/templates/config.yaml.j2.license b/roles/custom/matrix-dimension/templates/config.yaml.j2.license new file mode 100644 index 000000000..2c26fe3c7 --- /dev/null +++ b/roles/custom/matrix-dimension/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +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 index 09ad07b96..d5d76aeaa 100644 --- a/roles/custom/matrix-dimension/templates/labels.j2 +++ b/roles/custom/matrix-dimension/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_dimension_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2 b/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2 index 7898a7ba3..33a800838 100644 --- a/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2 +++ b/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ 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 }} 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.) @@ -47,7 +47,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne 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 --time={{ 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 }} 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 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 new file mode 100644 index 000000000..22f65f580 --- /dev/null +++ b/roles/custom/matrix-dimension/templates/systemd/matrix-dimension.service.j2.license @@ -0,0 +1,7 @@ +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 index 0415989fa..4a931a6aa 100644 --- a/roles/custom/matrix-dimension/vars/main.yml +++ b/roles/custom/matrix-dimension/vars/main.yml @@ -1,3 +1,9 @@ +# 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 (""). diff --git a/roles/custom/matrix-dynamic-dns/defaults/main.yml b/roles/custom/matrix-dynamic-dns/defaults/main.yml index c2810e3d9..2c5214edd 100644 --- a/roles/custom/matrix-dynamic-dns/defaults/main.yml +++ b/roles/custom/matrix-dynamic-dns/defaults/main.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Scott Crossen +# SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Project source code URL: https://github.com/linuxserver/docker-ddclient @@ -8,12 +18,14 @@ matrix_dynamic_dns_enabled: true matrix_dynamic_dns_daemon_interval: '300' # renovate: datasource=docker depName=linuxserver/ddclient versioning=semver -matrix_dynamic_dns_version: 3.11.2 +matrix_dynamic_dns_version: 4.0.0 # The docker container to use when in mode -matrix_dynamic_dns_docker_image: "{{ matrix_dynamic_dns_docker_image_name_prefix }}linuxserver/ddclient:{{ matrix_dynamic_dns_version }}" +matrix_dynamic_dns_docker_image: "{{ matrix_dynamic_dns_docker_image_registry_prefix }}linuxserver/ddclient:{{ matrix_dynamic_dns_version }}" -matrix_dynamic_dns_docker_image_name_prefix: "{{ 'localhost/' if matrix_dynamic_dns_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_dynamic_dns_docker_image_registry_prefix: "{{ 'localhost/' if matrix_dynamic_dns_container_image_self_build else matrix_dynamic_dns_docker_image_registry_prefix_upstream }}" +matrix_dynamic_dns_docker_image_registry_prefix_upstream: "{{ matrix_dynamic_dns_docker_image_registry_prefix_upstream_default }}" +matrix_dynamic_dns_docker_image_registry_prefix_upstream_default: docker.io/ # The image to force pull matrix_dynamic_dns_docker_image_force_pull: "{{ matrix_dynamic_dns_docker_image.endswith(':latest') }}" @@ -43,6 +55,18 @@ matrix_dynamic_dns_base_path: "{{ matrix_base_data_path }}/dynamic-dns" matrix_dynamic_dns_config_path: "{{ matrix_dynamic_dns_base_path }}/config" matrix_dynamic_dns_docker_src_files_path: "{{ matrix_dynamic_dns_base_path }}/docker-src" +# Config options +matrix_dynamic_dns_use: "web" + +# The endpoint to use to determine your external IP +matrix_dynamic_dns_web: "https://cloudflare.com/cdn-cgi/trace" + +# The field to extract the IP from +# If your endpoint defined in `matrix_dynamic_dns_web` doesn't need this, just set it to "" +matrix_dynamic_dns_web_skip: "ip=" + +matrix_dynamic_dns_additional_configuration_blocks: [] + # Holds the configurations (the domains to update DNS for, the providers they use, etc.) # # Example: @@ -53,7 +77,3 @@ matrix_dynamic_dns_docker_src_files_path: "{{ matrix_dynamic_dns_base_path }}/do # password: XXXXXXXXXXXXXXXX # domain: "{{ matrix_domain }}" matrix_dynamic_dns_domain_configurations: [] - -# Config options -matrix_dynamic_dns_additional_configuration_blocks: [] -matrix_dynamic_dns_use: "web" diff --git a/roles/custom/matrix-dynamic-dns/tasks/main.yml b/roles/custom/matrix-dynamic-dns/tasks/main.yml index 8327a84ac..e56d44c0f 100644 --- a/roles/custom/matrix-dynamic-dns/tasks/main.yml +++ b/roles/custom/matrix-dynamic-dns/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Scott Crossen +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-dynamic-dns/tasks/setup_install.yml b/roles/custom/matrix-dynamic-dns/tasks/setup_install.yml index 8440d791b..45eac171d 100644 --- a/roles/custom/matrix-dynamic-dns/tasks/setup_install.yml +++ b/roles/custom/matrix-dynamic-dns/tasks/setup_install.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Scott Crossen +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Dynamic DNS image is pulled diff --git a/roles/custom/matrix-dynamic-dns/tasks/setup_uninstall.yml b/roles/custom/matrix-dynamic-dns/tasks/setup_uninstall.yml index 8f9f1b040..af7ce670b 100644 --- a/roles/custom/matrix-dynamic-dns/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-dynamic-dns/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Scott Crossen +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-dynamic-dns service diff --git a/roles/custom/matrix-dynamic-dns/tasks/validate_config.yml b/roles/custom/matrix-dynamic-dns/tasks/validate_config.yml index 8174a8487..e86ae2317 100644 --- a/roles/custom/matrix-dynamic-dns/tasks/validate_config.yml +++ b/roles/custom/matrix-dynamic-dns/tasks/validate_config.yml @@ -1,24 +1,37 @@ +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Scott Crossen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- -- name: Fail if no configurations specified +- name: Fail if no matrix-dynamic-dns configurations specified ansible.builtin.fail: msg: >- You need to define at least one configuration in `matrix_dynamic_dns_domain_configurations` for using matrix-dynamic-dns. when: "matrix_dynamic_dns_domain_configurations | length == 0" -- name: Fail if required settings not defined in configuration blocks +- name: Fail if required matrix-dynamic-dns settings not defined in configuration blocks ansible.builtin.fail: msg: >- - One of the configurations in matrix_dynamic_dns_domain_configurations is missing a required key (domain, provider, protocol). - when: "'domain' not in configuration or 'provider' not in configuration or 'protocol' not in configuration" + One of the configurations in matrix_dynamic_dns_domain_configurations is missing a required key (domain, protocol). + when: "'domain' not in configuration or 'protocol' not in configuration" with_items: "{{ matrix_dynamic_dns_domain_configurations }}" loop_control: loop_var: configuration -- name: Fail if required mautrix-dynamic-dns settings not defined +- name: Fail if required matrix-dynamic-dns settings not defined ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). when: "item.when | bool and vars[item.name] == ''" with_items: - {'name': 'matrix_dynamic_dns_container_network', when: true} + +- name: (Deprecation) Catch and report renamed matrix-dynamic-dns variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_dynamic_dns_container_image_name_prefix', 'new': 'matrix_dynamic_dns_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-dynamic-dns/templates/ddclient.conf.j2 b/roles/custom/matrix-dynamic-dns/templates/ddclient.conf.j2 index 1480d834e..4b7672c84 100644 --- a/roles/custom/matrix-dynamic-dns/templates/ddclient.conf.j2 +++ b/roles/custom/matrix-dynamic-dns/templates/ddclient.conf.j2 @@ -1,26 +1,66 @@ +{# +SPDX-FileCopyrightText: 2020 Scott Crossen +SPDX-FileCopyrightText: 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + daemon={{ matrix_dynamic_dns_daemon_interval }} syslog=no pid=/var/run/ddclient/ddclient.pid ssl=yes use={{ matrix_dynamic_dns_use }} +web='{{ matrix_dynamic_dns_web }}' +{% if matrix_dynamic_dns_web_skip %} +web-skip='{{ matrix_dynamic_dns_web_skip }}' +{% endif %} + +{% for matrix_dynamic_dns_additional_configuration in matrix_dynamic_dns_additional_configuration_blocks %} +{{ matrix_dynamic_dns_additional_configuration }} +{% endfor %} {% for dynamic_dns_domain_configuration in matrix_dynamic_dns_domain_configurations %} protocol={{ dynamic_dns_domain_configuration.protocol }} -server={{ dynamic_dns_domain_configuration.provider }} {% if 'username' in dynamic_dns_domain_configuration %} -login='{{ dynamic_dns_domain_configuration.username }}' {% endif %} {% if 'password' in dynamic_dns_domain_configuration %} -password='{{ dynamic_dns_domain_configuration.password }}' {% endif %} {% if 'static' in dynamic_dns_domain_configuration %} -static=yes {% endif %} {% if 'custom' in dynamic_dns_domain_configuration %} -custom=yes {% endif %} {% if 'zone' in dynamic_dns_domain_configuration %} -zone={{ dynamic_dns_domain_configuration.zone }} {% endif %} {% if 'ttl' in dynamic_dns_domain_configuration %} -ttl={{ dynamic_dns_domain_configuration.ttl }} {% endif %} {% if 'mx' in dynamic_dns_domain_configuration %} -mx={{ dynamic_dns_domain_configuration.mx }} {% endif %} {% if 'wildcard' in dynamic_dns_domain_configuration %} -wildcard=yes {% endif %} -{{ dynamic_dns_domain_configuration.domain }} -{% endfor %} +{% if 'provider' in dynamic_dns_domain_configuration %} +server={{ dynamic_dns_domain_configuration.provider }} +{% endif %} +{% if 'username' in dynamic_dns_domain_configuration %} +login='{{ dynamic_dns_domain_configuration.username }}' +{% endif %} -{% for matrix_dynamic_dns_additional_configuration in matrix_dynamic_dns_additional_configuration_blocks %} -{{ matrix_dynamic_dns_additional_configuration }} +{% if 'password' in dynamic_dns_domain_configuration %} +password='{{ dynamic_dns_domain_configuration.password }}' +{% endif %} + +{% if 'static' in dynamic_dns_domain_configuration %} +static=yes +{% endif %} + +{% if 'custom' in dynamic_dns_domain_configuration %} +custom=yes +{% endif %} + +{% if 'zone' in dynamic_dns_domain_configuration %} +zone={{ dynamic_dns_domain_configuration.zone }} +{% endif %} + +{% if 'ttl' in dynamic_dns_domain_configuration %} +ttl={{ dynamic_dns_domain_configuration.ttl }} +{% endif %} +{% if 'mx' in dynamic_dns_domain_configuration %} +mx={{ dynamic_dns_domain_configuration.mx }} +{% endif %} + +{% if 'wildcard' in dynamic_dns_domain_configuration %} +wildcard=yes +{% endif %} + +{% if 'script' in dynamic_dns_domain_configuration %} +script={{ dynamic_dns_domain_configuration.script }} +{% endif %} + +{{ dynamic_dns_domain_configuration.domain }} {% endfor %} diff --git a/roles/custom/matrix-dynamic-dns/templates/systemd/matrix-dynamic-dns.service.j2 b/roles/custom/matrix-dynamic-dns/templates/systemd/matrix-dynamic-dns.service.j2 index 488c692ad..f5338f165 100644 --- a/roles/custom/matrix-dynamic-dns/templates/systemd/matrix-dynamic-dns.service.j2 +++ b/roles/custom/matrix-dynamic-dns/templates/systemd/matrix-dynamic-dns.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-dynamic-dns 2>/dev/null || true' +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-dynamic-dns 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-dynamic-dns 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -36,7 +36,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-dynamic-dns -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-dynamic-dns 2>/dev/null || true' +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-dynamic-dns 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-dynamic-dns 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-dynamic-dns/templates/systemd/matrix-dynamic-dns.service.j2.license b/roles/custom/matrix-dynamic-dns/templates/systemd/matrix-dynamic-dns.service.j2.license new file mode 100644 index 000000000..ba251d31b --- /dev/null +++ b/roles/custom/matrix-dynamic-dns/templates/systemd/matrix-dynamic-dns.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Scott Crossen + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-element-call/defaults/main.yml b/roles/custom/matrix-element-call/defaults/main.yml new file mode 100644 index 000000000..f5ab28310 --- /dev/null +++ b/roles/custom/matrix-element-call/defaults/main.yml @@ -0,0 +1,155 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +# Element Call is a native Matrix video conferencing application developed by Element. +# Project source code URL: https://github.com/element-hq/element-call + +matrix_element_call_enabled: false + +# Controls whether the Element Call stack (various services around Element Call, without the Element Call frontend itself) are to be installed. +# This affects enablement of other services around Element Call. +# +# By default, we enable the rest of the stack when Element Call itself is enabled, +# but people may wish to enable the stack by itself and avoid installing the Element Call frontend. +# This is useful to do, because self-hosting the Element Call frontend is mostly useless, because +# various clients tend to embed and preferusing their own embedded Element Call frontend, instead of a self-hosted one. +matrix_rtc_enabled: "{{ matrix_element_call_enabled }}" + +# renovate: datasource=docker depName=ghcr.io/element-hq/element-call +matrix_element_call_version: v0.9.0 + +matrix_element_call_scheme: https + +matrix_element_call_hostname: "call.{{ matrix_server_fqn_element }}" +matrix_element_call_path_prefix: / + +matrix_element_call_base_path: "{{ matrix_base_data_path }}/element-call" + +# The architecture for Element Call container images. +# Recognized values by us are 'amd64', 'arm32' and 'arm64'. +matrix_element_call_architecture: "{{ matrix_architecture }}" + +matrix_element_call_container_image: "{{ matrix_element_call_container_image_registry_prefix }}element-hq/element-call:{{ matrix_element_call_container_image_tag }}" +matrix_element_call_container_image_registry_prefix: "{{ matrix_element_call_container_image_registry_prefix_upstream }}" +matrix_element_call_container_image_registry_prefix_upstream: "{{ matrix_element_call_container_image_registry_prefix_upstream_default }}" +matrix_element_call_container_image_registry_prefix_upstream_default: ghcr.io/ +matrix_element_call_container_image_tag: "{{ matrix_element_call_version }}" +matrix_element_call_container_image_force_pull: "{{ matrix_element_call_container_image.endswith(':latest') }}" + +matrix_element_call_container_network: matrix-element-call + +matrix_element_call_container_http_host_bind_port: '' + +matrix_element_call_container_additional_networks: "{{ matrix_element_call_container_additional_networks_auto + matrix_element_call_container_additional_networks_custom }}" +matrix_element_call_container_additional_networks_auto: [] +matrix_element_call_container_additional_networks_custom: [] + +# Traefik Configuration for Element Call +matrix_element_call_container_labels_traefik_enabled: true +matrix_element_call_container_labels_traefik_docker_network: "{{ matrix_element_call_container_network }}" +matrix_element_call_container_labels_traefik_hostname: "{{ matrix_element_call_hostname }}" +# The path prefix must either be `/` or not end with a slash (e.g. `/element`). +matrix_element_call_container_labels_traefik_path_prefix: "{{ matrix_element_call_path_prefix }}" +matrix_element_call_container_labels_traefik_rule: "Host(`{{ matrix_element_call_container_labels_traefik_hostname }}`){% if matrix_element_call_container_labels_traefik_path_prefix != '/' %} && PathPrefix(`{{ matrix_element_call_container_labels_traefik_path_prefix }}`){% endif %}" +matrix_element_call_container_labels_traefik_priority: 0 +matrix_element_call_container_labels_traefik_entrypoints: web-secure +matrix_element_call_container_labels_traefik_tls: "{{ matrix_element_call_container_labels_traefik_entrypoints != 'web' }}" +matrix_element_call_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_element_call_container_labels_traefik_additional_response_headers_custom` +matrix_element_call_container_labels_traefik_additional_response_headers: "{{ matrix_element_call_container_labels_traefik_additional_response_headers_auto | combine(matrix_element_call_container_labels_traefik_additional_response_headers_custom) }}" +matrix_element_call_container_labels_traefik_additional_response_headers_auto: | + {{ + {} + | combine ({'X-XSS-Protection': matrix_element_call_http_header_xss_protection} if matrix_element_call_http_header_xss_protection else {}) + | combine ({'X-Frame-Options': matrix_element_call_http_header_frame_options} if matrix_element_call_http_header_frame_options else {}) + | combine ({'X-Content-Type-Options': matrix_element_call_http_header_content_type_options} if matrix_element_call_http_header_content_type_options else {}) + | combine ({'Content-Security-Policy': matrix_element_call_http_header_content_security_policy} if matrix_element_call_http_header_content_security_policy else {}) + | combine ({'Permission-Policy': matrix_element_call_http_header_content_permission_policy} if matrix_element_call_http_header_content_permission_policy else {}) + | combine ({'Strict-Transport-Security': matrix_element_call_http_header_strict_transport_security} if matrix_element_call_http_header_strict_transport_security and matrix_element_call_container_labels_traefik_tls else {}) + }} +matrix_element_call_container_labels_traefik_additional_response_headers_custom: {} + +# matrix_element_call_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_element_call_container_labels_additional_labels: | +# my.label=1 +# another.label="here" +matrix_element_call_container_labels_additional_labels: '' + +# A list of extra arguments to pass to the container +matrix_element_call_container_extra_arguments: [] + +# List of systemd services that matrix-element-call.service depends on +matrix_element_call_systemd_required_services_list: "{{ matrix_element_call_systemd_required_services_list_default + matrix_element_call_systemd_required_services_list_auto + matrix_element_call_systemd_required_services_list_custom }}" +matrix_element_call_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" +matrix_element_call_systemd_required_services_list_auto: [] +matrix_element_call_systemd_required_services_list_custom: [] + +# 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_element_call_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_element_call_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_element_call_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_element_call_http_header_content_security_policy: frame-ancestors * + +# Specifies the value of the `Permission-Policy` header. +# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permission-Policy +matrix_element_call_http_header_content_permission_policy: "{{ 'interest-cohort=()' if matrix_element_call_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_element_call_http_header_strict_transport_security: "max-age=31536000; includeSubDomains{{ '; preload' if matrix_element_call_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_element_call_content_permission_policy` +matrix_element_call_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_element_call_http_header_strict_transport_security` +matrix_element_call_hsts_preload_enabled: false + +# Controls the default_server_config/m.homeserver/base_url property in the config.json file. +matrix_element_call_config_default_server_config_m_homeserver_base_url: "{{ matrix_homeserver_url }}" + +# Controls the default_server_config/m.homeserver/server_name property in the config.json file. +matrix_element_call_config_default_server_config_m_homeserver_server_name: "{{ matrix_domain }}" + +# Controls the livekit/livekit_service_url property in the config.json file. +matrix_element_call_config_livekit_livekit_service_url: "" diff --git a/roles/custom/matrix-element-call/tasks/install.yml b/roles/custom/matrix-element-call/tasks/install.yml new file mode 100644 index 000000000..49c3078f8 --- /dev/null +++ b/roles/custom/matrix-element-call/tasks/install.yml @@ -0,0 +1,56 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Ensure Element Call paths exist + ansible.builtin.file: + path: "{{ item.path }}" + state: directory + mode: 0750 + owner: "{{ matrix_user_username }}" + group: "{{ matrix_user_groupname }}" + with_items: + - path: "{{ matrix_element_call_base_path }}" + +- name: Ensure Element Call config.json is in place + ansible.builtin.template: + src: "{{ role_path }}/templates/config.json.j2" + dest: "{{ matrix_element_call_base_path }}/config.json" + mode: 0640 + owner: "{{ matrix_user_username }}" + group: "{{ matrix_user_groupname }}" + +- name: Ensure Element Call container labels file is in place + ansible.builtin.template: + src: "{{ role_path }}/templates/labels.j2" + dest: "{{ matrix_element_call_base_path }}/labels" + mode: 0640 + owner: "{{ matrix_user_username }}" + group: "{{ matrix_user_groupname }}" + +- name: Ensure Element Call container image is pulled + community.docker.docker_image: + name: "{{ matrix_element_call_container_image }}" + source: pull + force_source: "{{ matrix_element_call_container_image_force_pull }}" + register: element_call_image_result + retries: "{{ devture_playbook_help_container_retries_count }}" + delay: "{{ devture_playbook_help_container_retries_delay }}" + until: element_call_image_result is not failed + +- name: Ensure Element Call container network is created + community.general.docker_network: + enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" + name: "{{ matrix_element_call_container_network }}" + driver: bridge + driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" + +- name: Ensure Element Call systemd service is installed + ansible.builtin.template: + src: "{{ role_path }}/templates/systemd/matrix-element-call.service.j2" + dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-element-call.service" + mode: 0644 diff --git a/roles/custom/matrix-element-call/tasks/main.yml b/roles/custom/matrix-element-call/tasks/main.yml new file mode 100644 index 000000000..c0b771877 --- /dev/null +++ b/roles/custom/matrix-element-call/tasks/main.yml @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- tags: + - setup-all + - setup-element-call + - install-all + - install-element-call + block: + - when: matrix_element_call_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" + + - when: matrix_element_call_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/install.yml" + +- tags: + - setup-all + - setup-element-call + block: + - when: not matrix_element_call_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/uninstall.yml" diff --git a/roles/custom/matrix-element-call/tasks/uninstall.yml b/roles/custom/matrix-element-call/tasks/uninstall.yml new file mode 100644 index 000000000..26ae5303d --- /dev/null +++ b/roles/custom/matrix-element-call/tasks/uninstall.yml @@ -0,0 +1,31 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Check existence of matrix-element-call service + ansible.builtin.stat: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-element-call.service" + register: matrix_element_call_service_stat + +- when: matrix_element_call_service_stat.stat.exists | bool + block: + - name: Ensure matrix-element-call is stopped + ansible.builtin.service: + name: matrix-element-call + state: stopped + enabled: false + daemon_reload: true + + - name: Ensure matrix-element-call.service doesn't exist + ansible.builtin.file: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-element-call.service" + state: absent + + - name: Ensure Element Call paths don't exist + ansible.builtin.file: + path: "{{ matrix_element_call_base_path }}" + state: absent diff --git a/roles/custom/matrix-element-call/tasks/validate_config.yml b/roles/custom/matrix-element-call/tasks/validate_config.yml new file mode 100644 index 000000000..738b2de3c --- /dev/null +++ b/roles/custom/matrix-element-call/tasks/validate_config.yml @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Fail if Element Call architecture is not supported + ansible.builtin.fail: + msg: > + Element Call is only supported on amd64 and arm64 architectures. + Your architecture is configured as '{{ matrix_element_call_architecture }}'. + when: "matrix_element_call_architecture not in ['amd64', 'arm64']" + +- name: Fail if required Element Call settings are not defined + ansible.builtin.fail: + msg: > + You need to define a required configuration setting (`{{ item.name }}`). + when: "item.when | bool and vars[item.name] | length == 0" + with_items: + - {'name': 'matrix_element_call_container_network', when: true} + - {'name': 'matrix_element_call_hostname', when: true} + - {'name': 'matrix_element_call_config_livekit_livekit_service_url', when: true} + +# Element Call appears to hardcode all paths to `/` (e.g. `/config.json`, `/assets/...`). +# While we can properly serve the homepage and handle stripping the path prefix on our side, +# the hardcoded URLs in the Element Call are pointing people to the wrong place, which is a problem. +- name: Fail if Element Call path prefix is different than / + ansible.builtin.fail: + msg: > + Element Call with a path prefix other than '/' is not supported yet. + You have configured matrix_element_call_path_prefix to '{{ matrix_element_call_path_prefix }}'. + when: "matrix_element_call_path_prefix != '/'" diff --git a/roles/custom/matrix-element-call/templates/config.json.j2 b/roles/custom/matrix-element-call/templates/config.json.j2 new file mode 100644 index 000000000..1ef5adb9f --- /dev/null +++ b/roles/custom/matrix-element-call/templates/config.json.j2 @@ -0,0 +1,11 @@ +{ + "default_server_config": { + "m.homeserver": { + "base_url": {{ matrix_element_call_config_default_server_config_m_homeserver_base_url | to_json }}, + "server_name": {{ matrix_element_call_config_default_server_config_m_homeserver_server_name | to_json}} + } + }, + "livekit": { + "livekit_service_url": {{ matrix_element_call_config_livekit_livekit_service_url | to_json }} + } +} diff --git a/roles/custom/matrix-element-call/templates/config.json.j2.license b/roles/custom/matrix-element-call/templates/config.json.j2.license new file mode 100644 index 000000000..085b430a3 --- /dev/null +++ b/roles/custom/matrix-element-call/templates/config.json.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2024 wjbeckett +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-element-call/templates/labels.j2 b/roles/custom/matrix-element-call/templates/labels.j2 new file mode 100644 index 000000000..436c13882 --- /dev/null +++ b/roles/custom/matrix-element-call/templates/labels.j2 @@ -0,0 +1,51 @@ +{# +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2024 wjbeckett + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +{% if matrix_element_call_container_labels_traefik_enabled %} +traefik.enable=true + +{% if matrix_element_call_container_labels_traefik_docker_network %} +traefik.docker.network={{ matrix_element_call_container_labels_traefik_docker_network }} +{% endif %} + +traefik.http.services.matrix-element-call.loadbalancer.server.port=8080 + +{% set middlewares = [] %} + +{% if matrix_element_call_container_labels_traefik_path_prefix != '/' %} +traefik.http.middlewares.matrix-element-call-slashless-redirect.redirectregex.regex=({{ matrix_element_call_container_labels_traefik_path_prefix | quote }})$ +traefik.http.middlewares.matrix-element-call-slashless-redirect.redirectregex.replacement=${1}/ +{% set middlewares = middlewares + ['matrix-element-call-slashless-redirect'] %} + +traefik.http.middlewares.matrix-element-call-strip-prefix.stripprefix.prefixes={{ matrix_element_call_container_labels_traefik_path_prefix }} +{% set middlewares = middlewares + ['matrix-element-call-strip-prefix'] %} +{% endif %} + +{% if matrix_element_call_container_labels_traefik_additional_response_headers.keys() | length > 0 %} +{% for name, value in matrix_element_call_container_labels_traefik_additional_response_headers.items() %} +traefik.http.middlewares.matrix-element-call-add-headers.headers.customresponseheaders.{{ name }}={{ value }} +{% endfor %} +{% set middlewares = middlewares + ['matrix-element-call-add-headers'] %} +{% endif %} + +traefik.http.routers.matrix-element-call.rule={{ matrix_element_call_container_labels_traefik_rule }} +{% if matrix_element_call_container_labels_traefik_priority | int > 0 %} +traefik.http.routers.matrix-element-call.priority={{ matrix_element_call_container_labels_traefik_priority }} +{% endif %} +traefik.http.routers.matrix-element-call.service=matrix-element-call +{% if middlewares | length > 0 %} +traefik.http.routers.matrix-element-call.middlewares={{ middlewares | join(',') }} +{% endif %} +traefik.http.routers.matrix-element-call.entrypoints={{ matrix_element_call_container_labels_traefik_entrypoints }} +traefik.http.routers.matrix-element-call.tls={{ matrix_element_call_container_labels_traefik_tls | to_json }} +{% if matrix_element_call_container_labels_traefik_tls %} +traefik.http.routers.matrix-element-call.tls.certResolver={{ matrix_element_call_container_labels_traefik_tls_certResolver }} +{% endif %} + +{% endif %} + +{{ matrix_element_call_container_labels_additional_labels }} \ No newline at end of file diff --git a/roles/custom/matrix-email2matrix/templates/systemd/matrix-email2matrix.service.j2 b/roles/custom/matrix-element-call/templates/systemd/matrix-element-call.service.j2 similarity index 51% rename from roles/custom/matrix-email2matrix/templates/systemd/matrix-email2matrix.service.j2 rename to roles/custom/matrix-element-call/templates/systemd/matrix-element-call.service.j2 index 10d4de04d..f9cc7cd2b 100644 --- a/roles/custom/matrix-email2matrix/templates/systemd/matrix-email2matrix.service.j2 +++ b/roles/custom/matrix-element-call/templates/systemd/matrix-element-call.service.j2 @@ -1,7 +1,7 @@ #jinja2: lstrip_blocks: "True" [Unit] -Description=Email2Matrix -{% for service in matrix_email2matrix_systemd_required_services_list %} +Description=Element Call +{% for service in matrix_element_call_systemd_required_services_list %} Requires={{ service }} After={{ service }} {% endfor %} @@ -10,35 +10,37 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-email2matrix 2>/dev/null || true' -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-email2matrix 2>/dev/null || true' +ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-element-call 2>/dev/null || true' +ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-element-call 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ - --rm \ - --name=matrix-email2matrix \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --read-only \ - --network={{ matrix_email2matrix_container_network }} \ - -p {{ matrix_email2matrix_smtp_host_bind_port }}:2525 \ - --mount type=bind,src={{ matrix_email2matrix_config_dir_path }}/config.json,dst=/config.json,ro \ - {% for arg in matrix_email2matrix_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_email2matrix_docker_image }} + --rm \ + --name=matrix-element-call \ + --log-driver=none \ + --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ + --cap-drop=ALL \ + --network={{ matrix_element_call_container_network }} \ + --mount type=bind,src={{ matrix_element_call_base_path }}/config.json,dst=/app/config.json,ro \ + {% if matrix_element_call_container_http_host_bind_port %} + -p {{ matrix_element_call_container_http_host_bind_port }}:8080 \ + {% endif %} + --label-file={{ matrix_element_call_base_path }}/labels \ + {% for arg in matrix_element_call_container_extra_arguments %} + {{ arg }} \ + {% endfor %} + {{ matrix_element_call_container_image }} -{% for network in matrix_email2matrix_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-email2matrix +{% for network in matrix_element_call_container_additional_networks %} +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-element-call {% endfor %} -ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-email2matrix +ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-element-call -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-email2matrix 2>/dev/null || true' -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-email2matrix 2>/dev/null || true' +ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-element-call 2>/dev/null || true' +ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-element-call 2>/dev/null || true' Restart=always RestartSec=30 -SyslogIdentifier=matrix-email2matrix +SyslogIdentifier=matrix-element-call [Install] WantedBy=multi-user.target diff --git a/roles/custom/matrix-element-call/templates/systemd/matrix-element-call.service.j2.license b/roles/custom/matrix-element-call/templates/systemd/matrix-element-call.service.j2.license new file mode 100644 index 000000000..085b430a3 --- /dev/null +++ b/roles/custom/matrix-element-call/templates/systemd/matrix-element-call.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2024 wjbeckett +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-element-call/vars/main.yml b/roles/custom/matrix-element-call/vars/main.yml new file mode 100644 index 000000000..b07bb4c89 --- /dev/null +++ b/roles/custom/matrix-element-call/vars/main.yml @@ -0,0 +1,8 @@ +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +matrix_element_call_public_url: "{{ matrix_element_call_scheme }}://{{ matrix_element_call_hostname }}" diff --git a/roles/custom/matrix-email2matrix/defaults/main.yml b/roles/custom/matrix-email2matrix/defaults/main.yml deleted file mode 100644 index 2c55c6661..000000000 --- a/roles/custom/matrix-email2matrix/defaults/main.yml +++ /dev/null @@ -1,67 +0,0 @@ ---- -# Project source code URL: https://github.com/devture/email2matrix - -matrix_email2matrix_enabled: true - -matrix_email2matrix_base_path: "{{ matrix_base_data_path }}/email2matrix" -matrix_email2matrix_config_dir_path: "{{ matrix_email2matrix_base_path }}/config" -matrix_email2matrix_docker_src_files_path: "{{ matrix_email2matrix_base_path }}/docker-src" - -matrix_email2matrix_container_image_self_build: false -matrix_email2matrix_container_image_self_build_repo: "https://github.com/devture/email2matrix.git" -matrix_email2matrix_container_image_self_build_branch: "{{ matrix_email2matrix_version }}" - -# renovate: datasource=docker depName=devture/email2matrix -matrix_email2matrix_version: 1.1.0 -matrix_email2matrix_docker_image_prefix: "{{ 'localhost/' if matrix_email2matrix_container_image_self_build else matrix_container_global_registry_prefix }}" -matrix_email2matrix_docker_image: "{{ matrix_email2matrix_docker_image_prefix }}devture/email2matrix:{{ matrix_email2matrix_version }}" -matrix_email2matrix_docker_image_force_pull: "{{ matrix_email2matrix_docker_image.endswith(':latest') }}" - -matrix_email2matrix_container_network: "" - -matrix_email2matrix_container_additional_networks: "{{ matrix_email2matrix_container_additional_networks_auto + matrix_email2matrix_container_additional_networks_custom }}" -matrix_email2matrix_container_additional_networks_auto: [] -matrix_email2matrix_container_additional_networks_custom: [] - -# A list of extra arguments to pass to the container -matrix_email2matrix_container_extra_arguments: [] - -# List of systemd services that matrix-corporal.service depends on -matrix_email2matrix_systemd_required_services_list: "{{ matrix_email2matrix_systemd_required_services_list_default + matrix_email2matrix_systemd_required_services_list_auto + matrix_email2matrix_systemd_required_services_list_custom }}" -matrix_email2matrix_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_email2matrix_systemd_required_services_list_auto: [] -matrix_email2matrix_systemd_required_services_list_custom: [] - -# Controls where the matrix-email2matrix container exposes the SMTP (tcp/2525 in the container). -# -# Takes an ":" or "" value (e.g. "127.0.0.1:2525"). -# -# By default, we listen on port 25 on all of the host's network interfaces. -matrix_email2matrix_smtp_host_bind_port: "25" - -matrix_email2matrix_smtp_hostname: "{{ matrix_server_fqn_matrix }}" - -# A list of mailbox to Matrix mappings. -# -# Example: -# matrix_email2matrix_matrix_mappings: -# - MailboxName: "mailbox1" -# MatrixRoomId: "!qporfwt:{{ matrix_domain }}" -# MatrixHomeserverUrl: "{{ matrix_homeserver_url }}" -# MatrixUserId: "@email2matrix1:{{ matrix_domain }}" -# MatrixAccessToken: "MATRIX_ACCESS_TOKEN_HERE" -# IgnoreSubject: false -# IgnoreBody: false -# SkipMarkdown: false -# -# - MailboxName: "mailbox2" -# MatrixRoomId: "!aaabaa:{{ matrix_domain }}" -# MatrixHomeserverUrl: "{{ matrix_homeserver_url }}" -# MatrixUserId: "@email2matrix2:{{ matrix_domain }}" -# MatrixAccessToken: "MATRIX_ACCESS_TOKEN_HERE" -# IgnoreSubject: true -# IgnoreBody: false -# SkipMarkdown: true -matrix_email2matrix_matrix_mappings: [] - -matrix_email2matrix_misc_debug: false diff --git a/roles/custom/matrix-email2matrix/tasks/main.yml b/roles/custom/matrix-email2matrix/tasks/main.yml deleted file mode 100644 index acd2c9c1e..000000000 --- a/roles/custom/matrix-email2matrix/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- tags: - - setup-all - - setup-email2matrix - - install-all - - install-email2matrix - block: - - when: matrix_email2matrix_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_email2matrix_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-email2matrix - block: - - when: not matrix_email2matrix_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" diff --git a/roles/custom/matrix-email2matrix/tasks/setup_install.yml b/roles/custom/matrix-email2matrix/tasks/setup_install.yml deleted file mode 100644 index 5cf88c002..000000000 --- a/roles/custom/matrix-email2matrix/tasks/setup_install.yml +++ /dev/null @@ -1,70 +0,0 @@ ---- - -- name: Ensure Email2Matrix paths exist - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_email2matrix_base_path }}", when: true} - - {path: "{{ matrix_email2matrix_config_dir_path }}", when: true} - - {path: "{{ matrix_email2matrix_docker_src_files_path }}", when: "{{ matrix_email2matrix_container_image_self_build }}"} - when: "item.when | bool" - -- name: Ensure Email2Matrix configuration file created - ansible.builtin.template: - src: "{{ role_path }}/templates/config.json.j2" - dest: "{{ matrix_email2matrix_config_dir_path }}/config.json" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - mode: 0640 - -- name: Ensure Email2Matrix image is pulled - community.docker.docker_image: - name: "{{ matrix_email2matrix_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_email2matrix_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_email2matrix_docker_image_force_pull }}" - when: "not matrix_email2matrix_container_image_self_build | bool" - register: result - retries: "{{ devture_playbook_help_container_retries_count }}" - delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed - -- name: Ensure Email2Matrix repository is present on self-build - ansible.builtin.git: - repo: "{{ matrix_email2matrix_container_image_self_build_repo }}" - dest: "{{ matrix_email2matrix_docker_src_files_path }}" - version: "{{ matrix_email2matrix_container_image_self_build_branch }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_email2matrix_git_pull_results - when: "matrix_email2matrix_container_image_self_build | bool" - -- name: Ensure Email2Matrix Docker image is built - community.docker.docker_image: - name: "{{ matrix_email2matrix_docker_image }}" - source: build - force_source: "{{ matrix_email2matrix_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_email2matrix_git_pull_results.changed }}" - build: - dockerfile: etc/docker/Dockerfile - path: "{{ matrix_email2matrix_docker_src_files_path }}" - pull: true - when: "matrix_email2matrix_container_image_self_build | bool" - -- name: Ensure matrix-email2matrix container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_email2matrix_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-email2matrix.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-email2matrix.service.j2" - dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-email2matrix.service" - mode: 0644 diff --git a/roles/custom/matrix-email2matrix/tasks/setup_uninstall.yml b/roles/custom/matrix-email2matrix/tasks/setup_uninstall.yml deleted file mode 100644 index e95ce6617..000000000 --- a/roles/custom/matrix-email2matrix/tasks/setup_uninstall.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- - -- name: Check existence of matrix-email2matrix service - ansible.builtin.stat: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-email2matrix.service" - register: matrix_email2matrix_service_stat - -- when: matrix_email2matrix_service_stat.stat.exists | bool - block: - - name: Ensure matrix-email2matrix is stopped - ansible.builtin.service: - name: matrix-email2matrix - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-email2matrix.service doesn't exist - ansible.builtin.file: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-email2matrix.service" - state: absent - - - name: Ensure Email2Matrix data path doesn't exist - ansible.builtin.file: - path: "{{ matrix_email2matrix_base_path }}" - state: absent diff --git a/roles/custom/matrix-email2matrix/tasks/validate_config.yml b/roles/custom/matrix-email2matrix/tasks/validate_config.yml deleted file mode 100644 index 27cd9eaa0..000000000 --- a/roles/custom/matrix-email2matrix/tasks/validate_config.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -- name: Fail if no email2matrix mappings - ansible.builtin.fail: - msg: > - You need to define at least one mapping in `matrix_email2matrix_matrix_mappings` for enabling Email2Matrix. - when: "matrix_email2matrix_matrix_mappings | length == 0" - -- name: Fail if required email2matrix settings not defined - ansible.builtin.fail: - msg: >- - You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" - with_items: - - {'name': 'matrix_email2matrix_container_network', when: true} diff --git a/roles/custom/matrix-email2matrix/templates/config.json.j2 b/roles/custom/matrix-email2matrix/templates/config.json.j2 deleted file mode 100644 index a7ca7bc47..000000000 --- a/roles/custom/matrix-email2matrix/templates/config.json.j2 +++ /dev/null @@ -1,14 +0,0 @@ -#jinja2: lstrip_blocks: "True" -{ - "Smtp": { - "ListenInterface": "0.0.0.0:2525", - "Hostname": {{ matrix_email2matrix_smtp_hostname|to_json }}, - "Workers": 10 - }, - "Matrix": { - "Mappings": {{ matrix_email2matrix_matrix_mappings | to_nice_json }} - }, - "Misc": { - "Debug": {{ matrix_email2matrix_misc_debug|to_json }} - } -} diff --git a/roles/custom/matrix-ldap-registration-proxy/defaults/main.yml b/roles/custom/matrix-ldap-registration-proxy/defaults/main.yml index ce9ba1259..4ff410860 100644 --- a/roles/custom/matrix-ldap-registration-proxy/defaults/main.yml +++ b/roles/custom/matrix-ldap-registration-proxy/defaults/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix_ldap_registration_proxy - Want to build a large-scale Matrix server using external registration on LDAP? # Project source code URL: https://gitlab.com/activism.international/matrix_ldap_registration_proxy @@ -6,7 +12,12 @@ matrix_ldap_registration_proxy_enabled: true matrix_ldap_registration_proxy_hostname: '' -matrix_ldap_registration_proxy_docker_image: matrix_ldap_registration_proxy +matrix_ldap_registration_proxy_docker_image: "{{ matrix_ldap_registration_proxy_docker_image_registry_prefix }}matrix_ldap_registration_proxy" +matrix_ldap_registration_proxy_docker_image_registry_prefix: "{{ 'localhost/' if matrix_ldap_registration_proxy_container_image_self_build else matrix_ldap_registration_proxy_docker_image_registry_prefix_upstream }}" +matrix_ldap_registration_proxy_docker_image_registry_prefix_upstream: "{{ matrix_ldap_registration_proxy_docker_image_registry_prefix_upstream_default }}" +matrix_ldap_registration_proxy_docker_image_registry_prefix_upstream_default: "" + +matrix_ldap_registration_proxy_container_image_self_build: true matrix_ldap_registration_proxy_container_image_self_build_repo: "https://gitlab.com/activism.international/matrix_ldap_registration_proxy.git" matrix_ldap_registration_proxy_container_image_self_build_branch: "{{ matrix_ldap_registration_proxy_version }}" diff --git a/roles/custom/matrix-ldap-registration-proxy/tasks/main.yml b/roles/custom/matrix-ldap-registration-proxy/tasks/main.yml index 9a7f24d2d..191a3538b 100644 --- a/roles/custom/matrix-ldap-registration-proxy/tasks/main.yml +++ b/roles/custom/matrix-ldap-registration-proxy/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-ldap-registration-proxy/tasks/setup_install.yml b/roles/custom/matrix-ldap-registration-proxy/tasks/setup_install.yml index 43f16292e..e068a629b 100644 --- a/roles/custom/matrix-ldap-registration-proxy/tasks/setup_install.yml +++ b/roles/custom/matrix-ldap-registration-proxy/tasks/setup_install.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix_ldap_registration_proxy paths exist diff --git a/roles/custom/matrix-ldap-registration-proxy/tasks/setup_uninstall.yml b/roles/custom/matrix-ldap-registration-proxy/tasks/setup_uninstall.yml index 20e98a6e4..281488b18 100644 --- a/roles/custom/matrix-ldap-registration-proxy/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-ldap-registration-proxy/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-matrix_ldap_registration_proxy service diff --git a/roles/custom/matrix-ldap-registration-proxy/tasks/validate_config.yml b/roles/custom/matrix-ldap-registration-proxy/tasks/validate_config.yml index d8fcdf96b..fc2d870b5 100644 --- a/roles/custom/matrix-ldap-registration-proxy/tasks/validate_config.yml +++ b/roles/custom/matrix-ldap-registration-proxy/tasks/validate_config.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-ldap-registration-proxy settings not defined @@ -17,7 +24,7 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_ldap_registration_proxy_registration_addr_with_container', 'new': ''} diff --git a/roles/custom/matrix-ldap-registration-proxy/templates/labels.j2 b/roles/custom/matrix-ldap-registration-proxy/templates/labels.j2 index 8ce1832f1..73a7d25ed 100644 --- a/roles/custom/matrix-ldap-registration-proxy/templates/labels.j2 +++ b/roles/custom/matrix-ldap-registration-proxy/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_ldap_registration_proxy_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-ldap-registration-proxy/templates/ldap-registration-proxy.env.j2 b/roles/custom/matrix-ldap-registration-proxy/templates/ldap-registration-proxy.env.j2 index 0def38932..d40193e1b 100644 --- a/roles/custom/matrix-ldap-registration-proxy/templates/ldap-registration-proxy.env.j2 +++ b/roles/custom/matrix-ldap-registration-proxy/templates/ldap-registration-proxy.env.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # please specify the configuration here # # these settings are mandatory diff --git a/roles/custom/matrix-ldap-registration-proxy/templates/systemd/matrix-ldap-registration-proxy.service.j2 b/roles/custom/matrix-ldap-registration-proxy/templates/systemd/matrix-ldap-registration-proxy.service.j2 index 5d3ef7f47..5668d0a86 100644 --- a/roles/custom/matrix-ldap-registration-proxy/templates/systemd/matrix-ldap-registration-proxy.service.j2 +++ b/roles/custom/matrix-ldap-registration-proxy/templates/systemd/matrix-ldap-registration-proxy.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-ldap-registration-proxy 2>/dev/null || true' +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-ldap-registration-proxy 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-ldap-registration-proxy 2>/dev/null || true' # matrix_ldap_registration_proxy writes an SQLite shared library (libsqlitejdbc.so) to /tmp and executes it from there, @@ -42,7 +42,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-ldap-registration-proxy -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-ldap-registration-proxy 2>/dev/null || true' +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-ldap-registration-proxy 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-ldap-registration-proxy 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-ldap-registration-proxy/templates/systemd/matrix-ldap-registration-proxy.service.j2.license b/roles/custom/matrix-ldap-registration-proxy/templates/systemd/matrix-ldap-registration-proxy.service.j2.license new file mode 100644 index 000000000..618b21aeb --- /dev/null +++ b/roles/custom/matrix-ldap-registration-proxy/templates/systemd/matrix-ldap-registration-proxy.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-livekit-jwt-service/defaults/main.yml b/roles/custom/matrix-livekit-jwt-service/defaults/main.yml new file mode 100644 index 000000000..f35ff576c --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/defaults/main.yml @@ -0,0 +1,96 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +# Project source code URL: https://github.com/element-hq/lk-jwt-service + +matrix_livekit_jwt_service_enabled: false + +matrix_livekit_jwt_service_scheme: https +matrix_livekit_jwt_service_hostname: "" +matrix_livekit_jwt_service_path_prefix: "/livekit-jwt-service" + +matrix_livekit_jwt_service_base_path: "{{ matrix_base_data_path }}/livekit-jwt-service" + +matrix_livekit_jwt_service_container_network: '' + +matrix_livekit_jwt_service_container_http_host_bind_port: '' + +matrix_livekit_jwt_service_container_additional_networks: "{{ (matrix_livekit_jwt_service_container_additional_networks_auto + matrix_livekit_jwt_service_container_additional_networks_custom) | unique }}" +matrix_livekit_jwt_service_container_additional_networks_auto: [] +matrix_livekit_jwt_service_container_additional_networks_custom: [] + +# renovate: datasource=docker depName=ghcr.io/element-hq/lk-jwt-service +matrix_livekit_jwt_service_version: 0.2.3 + +matrix_livekit_jwt_service_container_image_self_build: false +matrix_livekit_jwt_service_container_repo: "https://github.com/element-hq/lk-jwt-service.git" +matrix_livekit_jwt_service_container_repo_version: "{{ 'main' if matrix_livekit_jwt_service_version == 'latest' else ('v' + livekit_server_version) }}" +matrix_livekit_jwt_service_container_src_files_path: "{{ matrix_livekit_jwt_service_base_path }}/container-src" + +matrix_livekit_jwt_service_container_image: "{{ matrix_livekit_jwt_service_container_image_registry_prefix }}element-hq/lk-jwt-service:{{ matrix_livekit_jwt_service_container_image_tag }}" +matrix_livekit_jwt_service_container_image_registry_prefix: "{{ 'localhost/' if matrix_livekit_jwt_service_container_image_self_build else matrix_livekit_jwt_service_container_image_registry_prefix_upstream }}" +matrix_livekit_jwt_service_container_image_registry_prefix_upstream: "{{ matrix_livekit_jwt_service_container_image_registry_prefix_upstream_default }}" +matrix_livekit_jwt_service_container_image_registry_prefix_upstream_default: ghcr.io/ +matrix_livekit_jwt_service_container_image_tag: "{{ matrix_livekit_jwt_service_version }}" +matrix_livekit_jwt_service_container_image_force_pull: "{{ matrix_livekit_jwt_service_container_image.endswith(':latest') }}" + +matrix_livekit_jwt_service_container_labels_traefik_enabled: true +matrix_livekit_jwt_service_container_labels_traefik_docker_network: "{{ matrix_livekit_jwt_service_container_network }}" +matrix_livekit_jwt_service_container_labels_traefik_hostname: "{{ matrix_livekit_jwt_service_hostname }}" +# The path prefix must either be `/` or not end with a slash (e.g. `/livekit-jwt-service`). +matrix_livekit_jwt_service_container_labels_traefik_path_prefix: "{{ matrix_livekit_jwt_service_path_prefix }}" +matrix_livekit_jwt_service_container_labels_traefik_rule: "Host(`{{ matrix_livekit_jwt_service_container_labels_traefik_hostname }}`){% if matrix_livekit_jwt_service_container_labels_traefik_path_prefix != '/' %} && PathPrefix(`{{ matrix_livekit_jwt_service_container_labels_traefik_path_prefix }}`){% endif %}" +matrix_livekit_jwt_service_container_labels_traefik_priority: 0 +matrix_livekit_jwt_service_container_labels_traefik_entrypoints: web-secure +matrix_livekit_jwt_service_container_labels_traefik_tls: "{{ matrix_livekit_jwt_service_container_labels_traefik_entrypoints != 'web' }}" +matrix_livekit_jwt_service_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_livekit_jwt_service_container_labels_traefik_additional_response_headers_custom` +matrix_livekit_jwt_service_container_labels_traefik_additional_response_headers: "{{ matrix_livekit_jwt_service_container_labels_traefik_additional_response_headers_auto | combine(matrix_livekit_jwt_service_container_labels_traefik_additional_response_headers_custom) }}" +matrix_livekit_jwt_service_container_labels_traefik_additional_response_headers_auto: {} +matrix_livekit_jwt_service_container_labels_traefik_additional_response_headers_custom: {} + +# matrix_livekit_jwt_service_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_livekit_jwt_service_container_labels_additional_labels: | +# my.label=1 +# another.label="here" +matrix_livekit_jwt_service_container_labels_additional_labels: '' + +# A list of extra arguments to pass to the container +matrix_livekit_jwt_service_container_extra_arguments: [] + +# Controls the LK_JWT_PORT environment variable +matrix_livekit_jwt_service_environment_variable_livekit_jwt_port: 8080 + +# Controls the LIVEKIT_KEY environment variable +matrix_livekit_jwt_service_environment_variable_livekit_key: "" + +# Controls the LIVEKIT_URL environment variable +matrix_livekit_jwt_service_environment_variable_livekit_url: "" + +# Controls the LIVEKIT_SECRET environment variable +matrix_livekit_jwt_service_environment_variable_livekit_secret: "" + +# Additional environment variables to pass to the container. +# +# Environment variables take priority over settings in the configuration file. +# +# Example: +# matrix_livekit_jwt_service_environment_variables_extension: | +# KEY=value +matrix_livekit_jwt_service_environment_variables_extension: '' + +# List of systemd services that LiveKit JWT Service service depends on +matrix_livekit_jwt_service_systemd_required_services_list: "{{ matrix_livekit_jwt_service_systemd_required_services_list_default + matrix_livekit_jwt_service_systemd_required_services_list_auto + matrix_livekit_jwt_service_systemd_required_services_list_custom }}" +matrix_livekit_jwt_service_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" +matrix_livekit_jwt_service_systemd_required_services_list_auto: [] +matrix_livekit_jwt_service_systemd_required_services_list_custom: [] diff --git a/roles/custom/matrix-livekit-jwt-service/tasks/install.yml b/roles/custom/matrix-livekit-jwt-service/tasks/install.yml new file mode 100644 index 000000000..9193d6679 --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/tasks/install.yml @@ -0,0 +1,76 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Ensure LiveKit JWT Service paths exist + ansible.builtin.file: + path: "{{ item.path }}" + state: directory + mode: 0750 + owner: "{{ matrix_user_username }}" + group: "{{ matrix_user_groupname }}" + with_items: + - path: "{{ matrix_livekit_jwt_service_base_path }}" + +- name: Ensure LiveKit JWT Service support files installed + ansible.builtin.template: + src: "{{ role_path }}/templates/{{ item }}.j2" + dest: "{{ matrix_livekit_jwt_service_base_path }}/{{ item }}" + mode: 0640 + owner: "{{ matrix_user_username }}" + group: "{{ matrix_user_groupname }}" + with_items: + - env + - labels + +- name: Ensure LiveKit JWT Service container image is pulled + community.docker.docker_image: + name: "{{ matrix_livekit_jwt_service_container_image }}" + source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" + force_source: "{{ matrix_livekit_jwt_service_container_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_livekit_jwt_service_container_image_force_pull }}" + when: "not matrix_livekit_jwt_service_container_image_self_build | bool" + register: result + retries: "{{ devture_playbook_help_container_retries_count }}" + delay: "{{ devture_playbook_help_container_retries_delay }}" + until: result is not failed + +- when: "matrix_livekit_jwt_service_container_image_self_build | bool" + block: + - name: Ensure LiveKit JWT Service repository is present on self-build + ansible.builtin.git: + repo: "{{ matrix_livekit_jwt_service_container_repo }}" + version: "{{ matrix_livekit_jwt_service_container_repo_version }}" + dest: "{{ matrix_livekit_jwt_service_container_src_files_path }}" + force: "yes" + become: true + become_user: "{{ matrix_user_username }}" + register: matrix_livekit_jwt_service_git_pull_results + + - name: Ensure LiveKit JWT Service container image is built + community.docker.docker_image: + name: "{{ matrix_livekit_jwt_service_container_image }}" + source: build + force_source: "{{ matrix_livekit_jwt_service_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_livekit_jwt_service_git_pull_results.changed }}" + build: + dockerfile: Dockerfile + path: "{{ matrix_livekit_jwt_service_container_src_files_path }}" + pull: true + +- name: Ensure LiveKit JWT Service container network is created + community.general.docker_network: + enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" + name: "{{ matrix_livekit_jwt_service_container_network }}" + driver: bridge + driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" + +- name: Ensure LiveKit JWT Service systemd service is installed + ansible.builtin.template: + src: "{{ role_path }}/templates/systemd/matrix-livekit-jwt-service.service.j2" + dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-livekit-jwt-service.service" + mode: 0644 diff --git a/roles/custom/matrix-livekit-jwt-service/tasks/main.yml b/roles/custom/matrix-livekit-jwt-service/tasks/main.yml new file mode 100644 index 000000000..29b49dde6 --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/tasks/main.yml @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- tags: + - setup-all + - setup-jwt-service + - install-all + - install-livekit-jwt-service + block: + - when: matrix_livekit_jwt_service_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" + + - when: matrix_livekit_jwt_service_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/install.yml" + +- tags: + - setup-all + - setup-livekit-jwt-service + block: + - when: not matrix_livekit_jwt_service_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/uninstall.yml" diff --git a/roles/custom/matrix-livekit-jwt-service/tasks/uninstall.yml b/roles/custom/matrix-livekit-jwt-service/tasks/uninstall.yml new file mode 100644 index 000000000..d33c35760 --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/tasks/uninstall.yml @@ -0,0 +1,31 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Check existence of LiveKit JWT Service systemd service + ansible.builtin.stat: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-livekit-jwt-service.service" + register: matrix_livekit_jwt_service_service_stat + +- when: matrix_livekit_jwt_service_service_stat.stat.exists | bool + block: + - name: Ensure LiveKit JWT Service systemd service is stopped + ansible.builtin.service: + name: matrix-livekit-jwt-service + state: stopped + enabled: false + daemon_reload: true + + - name: Ensure LiveKit JWT Service systemd service doesn't exist + ansible.builtin.file: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-livekit-jwt-service.service" + state: absent + + - name: Ensure LiveKit JWT Service paths don't exist + ansible.builtin.file: + path: "{{ matrix_livekit_jwt_service_base_path }}" + state: absent diff --git a/roles/custom/matrix-livekit-jwt-service/tasks/validate_config.yml b/roles/custom/matrix-livekit-jwt-service/tasks/validate_config.yml new file mode 100644 index 000000000..f731898f2 --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/tasks/validate_config.yml @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 wjbeckett +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Fail if required LiveKit JWT Service settings are not defined + ansible.builtin.fail: + msg: > + You need to define a required configuration setting (`{{ item.name }}`). + when: "item.when | bool and vars[item.name] | length == 0" + with_items: + - {'name': 'matrix_livekit_jwt_service_hostname', when: true} + - {'name': 'matrix_livekit_jwt_service_container_network', when: true} + - {'name': 'matrix_livekit_jwt_service_environment_variable_livekit_key', when: true} + - {'name': 'matrix_livekit_jwt_service_environment_variable_livekit_url', when: true} + - {'name': 'matrix_livekit_jwt_service_environment_variable_livekit_secret', when: true} diff --git a/roles/custom/matrix-livekit-jwt-service/templates/env.j2 b/roles/custom/matrix-livekit-jwt-service/templates/env.j2 new file mode 100644 index 000000000..c32da08ef --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/templates/env.j2 @@ -0,0 +1,14 @@ +{# +SPDX-FileCopyrightText: 2024 wjbeckett +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +LIVEKIT_JWT_PORT={{ matrix_livekit_jwt_service_environment_variable_livekit_jwt_port | int | to_json }} + +LIVEKIT_KEY={{ matrix_livekit_jwt_service_environment_variable_livekit_key }} +LIVEKIT_URL={{ matrix_livekit_jwt_service_environment_variable_livekit_url }} +LIVEKIT_SECRET={{ matrix_livekit_jwt_service_environment_variable_livekit_secret }} + +{{ matrix_livekit_jwt_service_environment_variables_extension }} diff --git a/roles/custom/matrix-livekit-jwt-service/templates/labels.j2 b/roles/custom/matrix-livekit-jwt-service/templates/labels.j2 new file mode 100644 index 000000000..c372cbb78 --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/templates/labels.j2 @@ -0,0 +1,55 @@ +{# +SPDX-FileCopyrightText: 2024 wjbeckett +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +{% if matrix_livekit_jwt_service_container_labels_traefik_enabled %} +traefik.enable=true + +traefik.docker.network={{ matrix_livekit_jwt_service_container_labels_traefik_docker_network }} + +traefik.http.services.matrix-livekit-jwt-service.loadbalancer.server.port={{ matrix_livekit_jwt_service_environment_variable_livekit_jwt_port }} + +{% set middlewares = [] %} + +{% if matrix_livekit_jwt_service_container_labels_traefik_path_prefix != '/' %} +traefik.http.middlewares.matrix-livekit-jwt-service-slashless-redirect.redirectregex.regex=({{ matrix_livekit_jwt_service_container_labels_traefik_path_prefix | quote }})$ +traefik.http.middlewares.matrix-livekit-jwt-service-slashless-redirect.redirectregex.replacement=${1}/ +{% set middlewares = middlewares + ['matrix-livekit-jwt-service-slashless-redirect'] %} + +traefik.http.middlewares.matrix-livekit-jwt-service-strip-prefix.stripprefix.prefixes={{ matrix_livekit_jwt_service_container_labels_traefik_path_prefix }} +{% set middlewares = middlewares + ['matrix-livekit-jwt-service-strip-prefix'] %} +{% endif %} + +{% if matrix_livekit_jwt_service_container_labels_traefik_additional_response_headers.keys() | length > 0 %} +{% for name, value in matrix_livekit_jwt_service_container_labels_traefik_additional_response_headers.items() %} +traefik.http.middlewares.matrix-livekit-jwt-service-add-headers.headers.customresponseheaders.{{ name }}={{ value }} +{% endfor %} +{% set middlewares = middlewares + ['matrix-livekit-jwt-service-add-headers'] %} +{% endif %} + +traefik.http.routers.matrix-livekit-jwt-service.rule={{ matrix_livekit_jwt_service_container_labels_traefik_rule }} + +{% if matrix_livekit_jwt_service_container_labels_traefik_priority | int > 0 %} +traefik.http.routers.matrix-livekit-jwt-service.priority={{ matrix_livekit_jwt_service_container_labels_traefik_priority }} +{% endif %} + +traefik.http.routers.matrix-livekit-jwt-service.service=matrix-livekit-jwt-service + +{% if middlewares | length > 0 %} +traefik.http.routers.matrix-livekit-jwt-service.middlewares={{ middlewares | join(',') }} +{% endif %} + +traefik.http.routers.matrix-livekit-jwt-service.entrypoints={{ matrix_livekit_jwt_service_container_labels_traefik_entrypoints }} + +traefik.http.routers.matrix-livekit-jwt-service.tls={{ matrix_livekit_jwt_service_container_labels_traefik_tls | to_json }} + +{% if matrix_livekit_jwt_service_container_labels_traefik_tls %} +traefik.http.routers.matrix-livekit-jwt-service.tls.certResolver={{ matrix_livekit_jwt_service_container_labels_traefik_tls_certResolver }} +{% endif %} + +{% endif %} + +{{ matrix_livekit_jwt_service_container_labels_additional_labels }} diff --git a/roles/custom/matrix-livekit-jwt-service/templates/systemd/matrix-livekit-jwt-service.service.j2 b/roles/custom/matrix-livekit-jwt-service/templates/systemd/matrix-livekit-jwt-service.service.j2 new file mode 100644 index 000000000..073d27e36 --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/templates/systemd/matrix-livekit-jwt-service.service.j2 @@ -0,0 +1,42 @@ +#jinja2: lstrip_blocks: "True" +[Unit] +Description=Matrix LiveKit JWT Service +{% for service in matrix_livekit_jwt_service_systemd_required_services_list %} +After={{ service }} +Requires={{ service }} +{% endfor %} + +[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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-livekit-jwt-service 2>/dev/null || true' +ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-livekit-jwt-service 2>/dev/null || true' + +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ + --rm \ + --name=matrix-livekit-jwt-service \ + --log-driver=none \ + --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ + --cap-drop=ALL \ + --network={{ matrix_livekit_jwt_service_container_network }} \ + {% if matrix_livekit_jwt_service_container_http_host_bind_port %} + -p {{ matrix_livekit_jwt_service_container_http_host_bind_port }}:{{ matrix_livekit_jwt_service_environment_variable_livekit_jwt_port }} \ + {% endif %} + --env-file={{ matrix_livekit_jwt_service_base_path }}/env \ + --label-file={{ matrix_livekit_jwt_service_base_path }}/labels \ + {{ matrix_livekit_jwt_service_container_image }} + +{% for network in matrix_livekit_jwt_service_container_additional_networks %} +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-livekit-jwt-service +{% endfor %} + +ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-livekit-jwt-service + +ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-livekit-jwt-service 2>/dev/null || true' +ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-jwt-service 2>/dev/null || true' +Restart=always +RestartSec=30 +SyslogIdentifier=matrix-livekit-jwt-service + +[Install] +WantedBy=multi-user.target diff --git a/roles/custom/matrix-livekit-jwt-service/templates/systemd/matrix-livekit-jwt-service.service.j2.license b/roles/custom/matrix-livekit-jwt-service/templates/systemd/matrix-livekit-jwt-service.service.j2.license new file mode 100644 index 000000000..085b430a3 --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/templates/systemd/matrix-livekit-jwt-service.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2024 wjbeckett +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-livekit-jwt-service/vars/main.yml b/roles/custom/matrix-livekit-jwt-service/vars/main.yml new file mode 100644 index 000000000..a6070f646 --- /dev/null +++ b/roles/custom/matrix-livekit-jwt-service/vars/main.yml @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +matrix_livekit_jwt_service_public_url: "{{ matrix_livekit_jwt_service_scheme }}://{{ matrix_livekit_jwt_service_hostname }}{{ matrix_livekit_jwt_service_path_prefix }}" diff --git a/roles/custom/matrix-ma1sd/defaults/main.yml b/roles/custom/matrix-ma1sd/defaults/main.yml index 52aff183f..05be4717e 100644 --- a/roles/custom/matrix-ma1sd/defaults/main.yml +++ b/roles/custom/matrix-ma1sd/defaults/main.yml @@ -1,3 +1,17 @@ +# SPDX-FileCopyrightText: 2020 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2020 Matt Cengia +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2021 boris runakov +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # ma1sd is a Federated Matrix Identity Server # Project source code URL: https://github.com/ma1uta/ma1sd @@ -14,8 +28,10 @@ matrix_ma1sd_container_image_self_build_branch: "{{ matrix_ma1sd_version }}" # renovate: datasource=docker depName=ma1uta/ma1sd matrix_ma1sd_version: "2.5.0" -matrix_ma1sd_docker_image: "{{ matrix_ma1sd_docker_image_name_prefix }}ma1uta/ma1sd:{{ matrix_ma1sd_version }}" -matrix_ma1sd_docker_image_name_prefix: "{{ 'localhost/' if matrix_ma1sd_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_ma1sd_docker_image: "{{ matrix_ma1sd_docker_image_registry_prefix }}ma1uta/ma1sd:{{ matrix_ma1sd_version }}" +matrix_ma1sd_docker_image_registry_prefix: "{{ 'localhost/' if matrix_ma1sd_container_image_self_build else matrix_ma1sd_docker_image_registry_prefix_upstream }}" +matrix_ma1sd_docker_image_registry_prefix_upstream: "{{ matrix_ma1sd_docker_image_registry_prefix_upstream_default }}" +matrix_ma1sd_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_ma1sd_docker_image_force_pull: "{{ matrix_ma1sd_docker_image.endswith(':latest') }}" matrix_ma1sd_base_path: "{{ matrix_base_data_path }}/ma1sd" @@ -189,7 +205,7 @@ matrix_ma1sd_self_check_validate_certificates: true # Controls ma1sd logging verbosity for troubleshooting. # -# According to: https://github.com/ma1uta/ma1sd/blob/master/docs/troubleshooting.md#increase-verbosity +# See: https://github.com/ma1uta/ma1sd/blob/master/docs/troubleshooting.md#increase-verbosity matrix_ma1sd_verbose_logging: false # Setting up support for API prefixes diff --git a/roles/custom/matrix-ma1sd/tasks/main.yml b/roles/custom/matrix-ma1sd/tasks/main.yml index 09e7114bf..5376e5ace 100644 --- a/roles/custom/matrix-ma1sd/tasks/main.yml +++ b/roles/custom/matrix-ma1sd/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-ma1sd/tasks/self_check.yml b/roles/custom/matrix-ma1sd/tasks/self_check.yml index 7ce57e1ec..d1a1714a6 100644 --- a/roles/custom/matrix-ma1sd/tasks/self_check.yml +++ b/roles/custom/matrix-ma1sd/tasks/self_check.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check ma1sd Identity Service diff --git a/roles/custom/matrix-ma1sd/tasks/setup_install.yml b/roles/custom/matrix-ma1sd/tasks/setup_install.yml index e77f2d689..93aa2f14e 100644 --- a/roles/custom/matrix-ma1sd/tasks/setup_install.yml +++ b/roles/custom/matrix-ma1sd/tasks/setup_install.yml @@ -1,3 +1,17 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2020 Matt Cengia +# SPDX-FileCopyrightText: 2020 Stuart Mumford +# SPDX-FileCopyrightText: 2022 Jim Myhrberg +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure ma1sd paths exist diff --git a/roles/custom/matrix-ma1sd/tasks/setup_uninstall.yml b/roles/custom/matrix-ma1sd/tasks/setup_uninstall.yml index b27df269e..2bfbdeeb5 100644 --- a/roles/custom/matrix-ma1sd/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-ma1sd/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 - 2024 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-ma1sd service diff --git a/roles/custom/matrix-ma1sd/tasks/validate_config.yml b/roles/custom/matrix-ma1sd/tasks/validate_config.yml index 8e4787507..14c8acb4e 100644 --- a/roles/custom/matrix-ma1sd/tasks/validate_config.yml +++ b/roles/custom/matrix-ma1sd/tasks/validate_config.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2021 boris runakov +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: (Deprecation) Warn about ma1sd variables that are not used anymore @@ -60,7 +67,7 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_ma1sd_container_expose_port', 'new': ''} @@ -68,13 +75,14 @@ - {'old': 'matrix_ma1sd_default_port', 'new': 'matrix_ma1sd_container_port'} - {'old': 'matrix_ma1sd_container_labels_matrix_client_user_directory_search_path', 'new': 'matrix_ma1sd_container_labels_matrix_client_user_directory_search_path_regexp'} - {'old': 'matrix_ma1sd_container_labels_matrix_client_3pid_registration_path', 'new': 'matrix_ma1sd_container_labels_matrix_client_3pid_registration_path_regexp'} + - {'old': 'matrix_ma1sd_docker_image_name_prefix', 'new': 'matrix_ma1sd_docker_image_registry_prefix'} - name: (Deprecation) Catch and report mxisd variables ansible.builtin.fail: msg: >- mxisd is deprecated and has been replaced with ma1sd (https://github.com/ma1uta/ma1sd), a compatible fork. The playbook will migrate your existing mxisd configuration and data automatically, but you need to adjust variable names. - Please change your configuration (vars.yml) to rename all mxisd variables (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "vars | dict2items | selectattr('key', 'match', item.old) | list | items2dict" with_items: - {'old': 'matrix_mxisd_.*', 'new': 'matrix_ma1sd_.*'} diff --git a/roles/custom/matrix-ma1sd/templates/labels.j2 b/roles/custom/matrix-ma1sd/templates/labels.j2 index 4570e3b23..b3df693e8 100644 --- a/roles/custom/matrix-ma1sd/templates/labels.j2 +++ b/roles/custom/matrix-ma1sd/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_ma1sd_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-ma1sd/templates/ma1sd.yaml.j2.license b/roles/custom/matrix-ma1sd/templates/ma1sd.yaml.j2.license new file mode 100644 index 000000000..a519212f1 --- /dev/null +++ b/roles/custom/matrix-ma1sd/templates/ma1sd.yaml.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-ma1sd/templates/systemd/matrix-ma1sd.service.j2 b/roles/custom/matrix-ma1sd/templates/systemd/matrix-ma1sd.service.j2 index 36e6a353b..7f9ec27f4 100644 --- a/roles/custom/matrix-ma1sd/templates/systemd/matrix-ma1sd.service.j2 +++ b/roles/custom/matrix-ma1sd/templates/systemd/matrix-ma1sd.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-ma1sd 2>/dev/null || true' +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-ma1sd 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-ma1sd 2>/dev/null || true' # ma1sd writes an SQLite shared library (libsqlitejdbc.so) to /tmp and executes it from there, @@ -47,7 +47,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-ma1sd -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-ma1sd 2>/dev/null || true' +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-ma1sd 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-ma1sd 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-ma1sd/templates/systemd/matrix-ma1sd.service.j2.license b/roles/custom/matrix-ma1sd/templates/systemd/matrix-ma1sd.service.j2.license new file mode 100644 index 000000000..713174173 --- /dev/null +++ b/roles/custom/matrix-ma1sd/templates/systemd/matrix-ma1sd.service.j2.license @@ -0,0 +1,7 @@ +SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2020 Marcel Partap +SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors +SPDX-FileCopyrightText: 2021 boris runakov + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-ma1sd/vars/main.yml b/roles/custom/matrix-ma1sd/vars/main.yml index 3adc735e9..944099e50 100644 --- a/roles/custom/matrix-ma1sd/vars/main.yml +++ b/roles/custom/matrix-ma1sd/vars/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Doing `|from_yaml` when the extension contains nothing yields an empty string (""). diff --git a/roles/custom/matrix-media-repo/defaults/main.yml b/roles/custom/matrix-media-repo/defaults/main.yml index f9fc4eaaf..c2485207e 100755 --- a/roles/custom/matrix-media-repo/defaults/main.yml +++ b/roles/custom/matrix-media-repo/defaults/main.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-media-repo is a highly customizable multi-domain media repository for Matrix. # Intended for medium to large environments consisting of several homeservers, this @@ -16,8 +24,10 @@ matrix_media_repo_container_image_self_build: false matrix_media_repo_container_image_self_build_repo: "https://github.com/turt2live/matrix-media-repo.git" matrix_media_repo_docker_image_path: "t2bot/matrix-media-repo" -matrix_media_repo_docker_image: "{{ matrix_media_repo_docker_image_name_prefix }}{{ matrix_media_repo_docker_image_path }}:{{ matrix_media_repo_docker_image_tag }}" -matrix_media_repo_docker_image_name_prefix: "{{ 'localhost/' if matrix_media_repo_container_image_self_build else 'ghcr.io/' }}" +matrix_media_repo_docker_image: "{{ matrix_media_repo_docker_image_registry_prefix }}{{ matrix_media_repo_docker_image_path }}:{{ matrix_media_repo_docker_image_tag }}" +matrix_media_repo_docker_image_registry_prefix: "{{ 'localhost/' if matrix_media_repo_container_image_self_build else matrix_media_repo_docker_image_registry_prefix_upstream }}" +matrix_media_repo_docker_image_registry_prefix_upstream: "{{ matrix_media_repo_docker_image_registry_prefix_upstream_default }}" +matrix_media_repo_docker_image_registry_prefix_upstream_default: "ghcr.io/" # renovate: datasource=docker depName=ghcr.io/t2bot/matrix-media-repo matrix_media_repo_docker_image_tag: "v1.3.8" matrix_media_repo_docker_image_force_pull: "{{ matrix_media_repo_docker_image.endswith(':latest') }}" diff --git a/roles/custom/matrix-media-repo/tasks/main.yml b/roles/custom/matrix-media-repo/tasks/main.yml index 4bf63251d..2ebd19ef1 100644 --- a/roles/custom/matrix-media-repo/tasks/main.yml +++ b/roles/custom/matrix-media-repo/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Michael Hollister +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-media-repo/tasks/setup_install.yml b/roles/custom/matrix-media-repo/tasks/setup_install.yml index 67bf8bec2..525df257f 100755 --- a/roles/custom/matrix-media-repo/tasks/setup_install.yml +++ b/roles/custom/matrix-media-repo/tasks/setup_install.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +# SPDX-FileCopyrightText: 2024 Daniel A. Maierhofer +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure media-repo paths exist diff --git a/roles/custom/matrix-media-repo/tasks/setup_uninstall.yml b/roles/custom/matrix-media-repo/tasks/setup_uninstall.yml index 449cd48b8..45595daee 100644 --- a/roles/custom/matrix-media-repo/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-media-repo/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Michael Hollister +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of media-repo service diff --git a/roles/custom/matrix-media-repo/tasks/validate_config.yml b/roles/custom/matrix-media-repo/tasks/validate_config.yml index 8b0ecb7cd..4d10a44ed 100644 --- a/roles/custom/matrix-media-repo/tasks/validate_config.yml +++ b/roles/custom/matrix-media-repo/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2023 Michael Hollister +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-media-repo settings not defined @@ -14,7 +20,7 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_media_repo_access_tokens', 'new': ''} @@ -34,3 +40,4 @@ - {'old': 'matrix_media_repo_container_labels_traefik_admin_path_prefix', 'new': 'matrix_media_repo_container_labels_traefik_admin_path_regexp'} - {'old': 'matrix_media_repo_container_labels_traefik_logout_federation_path_prefix', 'new': 'matrix_media_repo_container_labels_traefik_logout_federation_path_regexp'} - {'old': 'matrix_media_repo_container_labels_traefik_admin_federation_path_prefix', 'new': 'matrix_media_repo_container_labels_traefik_admin_federation_path_regexp'} + - {'old': 'matrix_media_repo_docker_image_name_prefix', 'new': 'matrix_media_repo_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-media-repo/templates/grafana/media-repo.json.license b/roles/custom/matrix-media-repo/templates/grafana/media-repo.json.license new file mode 100644 index 000000000..147b2c483 --- /dev/null +++ b/roles/custom/matrix-media-repo/templates/grafana/media-repo.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-media-repo/templates/media-repo/env.j2 b/roles/custom/matrix-media-repo/templates/media-repo/env.j2 index 8b26f77d7..e325e595d 100644 --- a/roles/custom/matrix-media-repo/templates/media-repo/env.j2 +++ b/roles/custom/matrix-media-repo/templates/media-repo/env.j2 @@ -1 +1,7 @@ +{# +SPDX-FileCopyrightText: 2023 Michael Hollister + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + REPO_CONFIG=/config/media-repo.yaml diff --git a/roles/custom/matrix-media-repo/templates/media-repo/labels.j2 b/roles/custom/matrix-media-repo/templates/media-repo/labels.j2 index 57b21d897..17eac5cc9 100755 --- a/roles/custom/matrix-media-repo/templates/media-repo/labels.j2 +++ b/roles/custom/matrix-media-repo/templates/media-repo/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_media_repo_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-media-repo/templates/media-repo/media-repo.yaml.j2 b/roles/custom/matrix-media-repo/templates/media-repo/media-repo.yaml.j2 index 6142bc95b..fa60434fa 100644 --- a/roles/custom/matrix-media-repo/templates/media-repo/media-repo.yaml.j2 +++ b/roles/custom/matrix-media-repo/templates/media-repo/media-repo.yaml.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # General repo configuration repo: bindAddress: {{ matrix_media_repo_bind_address | to_json }} diff --git a/roles/custom/matrix-media-repo/templates/media-repo/systemd/matrix-media-repo.service.j2 b/roles/custom/matrix-media-repo/templates/media-repo/systemd/matrix-media-repo.service.j2 index ea2fb125f..cb8e6a547 100755 --- a/roles/custom/matrix-media-repo/templates/media-repo/systemd/matrix-media-repo.service.j2 +++ b/roles/custom/matrix-media-repo/templates/media-repo/systemd/matrix-media-repo.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_media_repo_identifier }} 2>/dev/null || true' +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_media_repo_identifier }} 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_media_repo_identifier }} 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -46,7 +46,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach {{ matrix_media_repo_identifier }} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_media_repo_identifier }} 2>/dev/null || true' +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_media_repo_identifier }} 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_media_repo_identifier }} 2>/dev/null || true' ExecReload={{ devture_systemd_docker_base_host_command_docker }} exec {{ matrix_media_repo_identifier }} /bin/sh -c 'kill -HUP 1' Restart=always diff --git a/roles/custom/matrix-media-repo/templates/media-repo/systemd/matrix-media-repo.service.j2.license b/roles/custom/matrix-media-repo/templates/media-repo/systemd/matrix-media-repo.service.j2.license new file mode 100644 index 000000000..1c5c26f3b --- /dev/null +++ b/roles/custom/matrix-media-repo/templates/media-repo/systemd/matrix-media-repo.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Michael Hollister + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-pantalaimon/defaults/main.yml b/roles/custom/matrix-pantalaimon/defaults/main.yml index 8746519d3..1302c60f7 100644 --- a/roles/custom/matrix-pantalaimon/defaults/main.yml +++ b/roles/custom/matrix-pantalaimon/defaults/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # E2EE aware proxy daemon for Matrix clients. # Project source code URL: https://github.com/matrix-org/pantalaimon @@ -10,8 +15,10 @@ matrix_pantalaimon_container_image_self_build: false matrix_pantalaimon_container_image_self_build_repo: "https://github.com/matrix-org/pantalaimon.git" matrix_pantalaimon_container_image_self_build_repo_version: "{{ 'main' if matrix_pantalaimon_version == 'latest' else matrix_pantalaimon_version }}" -matrix_pantalaimon_docker_image: "{{ matrix_pantalaimon_docker_image_name_prefix }}matrixdotorg/pantalaimon:v{{ matrix_pantalaimon_version }}" -matrix_pantalaimon_docker_image_name_prefix: "{{ 'localhost/' if matrix_pantalaimon_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_pantalaimon_docker_image: "{{ matrix_pantalaimon_docker_image_registry_prefix }}matrixdotorg/pantalaimon:v{{ matrix_pantalaimon_version }}" +matrix_pantalaimon_docker_image_registry_prefix: "{{ 'localhost/' if matrix_pantalaimon_container_image_self_build else matrix_pantalaimon_docker_image_registry_prefix_upstream }}" +matrix_pantalaimon_docker_image_registry_prefix_upstream: "{{ matrix_pantalaimon_docker_image_registry_prefix_upstream_default }}" +matrix_pantalaimon_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_pantalaimon_docker_image_force_pull: "{{ matrix_pantalaimon_docker_image.endswith(':latest') }}" matrix_pantalaimon_base_path: "{{ matrix_base_data_path }}/pantalaimon" @@ -42,7 +49,7 @@ matrix_pantalaimon_systemd_wanted_services_list_default: [] matrix_pantalaimon_systemd_wanted_services_list_auto: [] matrix_pantalaimon_systemd_wanted_services_list_custom: [] -# Pantalaimon log level, case-insensitive (Error, Warning, Info, Debug) +# Valid values: Error, Warning, Info, Debug matrix_pantalaimon_log_level: Warning # Base URL where matrix-pantalaimon can reach your homeserver C-S API. diff --git a/roles/custom/matrix-pantalaimon/tasks/install.yml b/roles/custom/matrix-pantalaimon/tasks/install.yml index 9a9b9a38c..256aa2f83 100644 --- a/roles/custom/matrix-pantalaimon/tasks/install.yml +++ b/roles/custom/matrix-pantalaimon/tasks/install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-pantalaimon paths exist @@ -57,6 +62,7 @@ - name: Ensure pantalaimon container network is created community.general.docker_network: + enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" name: "{{ matrix_pantalaimon_container_network }}" driver: bridge driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" diff --git a/roles/custom/matrix-pantalaimon/tasks/main.yml b/roles/custom/matrix-pantalaimon/tasks/main.yml index 63cdef198..b3b670eb1 100644 --- a/roles/custom/matrix-pantalaimon/tasks/main.yml +++ b/roles/custom/matrix-pantalaimon/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-pantalaimon/tasks/uninstall.yml b/roles/custom/matrix-pantalaimon/tasks/uninstall.yml index a6c7cd5f6..eb6165405 100644 --- a/roles/custom/matrix-pantalaimon/tasks/uninstall.yml +++ b/roles/custom/matrix-pantalaimon/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-pantalaimon service diff --git a/roles/custom/matrix-pantalaimon/tasks/validate_config.yml b/roles/custom/matrix-pantalaimon/tasks/validate_config.yml index 00fc96ced..ff3116355 100644 --- a/roles/custom/matrix-pantalaimon/tasks/validate_config.yml +++ b/roles/custom/matrix-pantalaimon/tasks/validate_config.yml @@ -1,8 +1,20 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- -- name: Fail if required variables are undefined +- name: Fail if required Pantalaimon variables are undefined ansible.builtin.fail: msg: "The `{{ item }}` variable must be defined and have a non-null value." with_items: - "matrix_pantalaimon_homeserver_url" when: "vars[item] == '' or vars[item] is none" + +- name: (Deprecation) Catch and report renamed Pantalaimon variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_pantalaimon_docker_image_name_prefix', 'new': 'matrix_pantalaimon_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-pantalaimon/templates/pantalaimon.conf.j2 b/roles/custom/matrix-pantalaimon/templates/pantalaimon.conf.j2 index 9e8f6fd97..4cd01c478 100644 --- a/roles/custom/matrix-pantalaimon/templates/pantalaimon.conf.j2 +++ b/roles/custom/matrix-pantalaimon/templates/pantalaimon.conf.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + [Default] LogLevel = {{ matrix_pantalaimon_log_level }} diff --git a/roles/custom/matrix-pantalaimon/templates/systemd/matrix-pantalaimon.service.j2.license b/roles/custom/matrix-pantalaimon/templates/systemd/matrix-pantalaimon.service.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-pantalaimon/templates/systemd/matrix-pantalaimon.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/defaults/main.yml b/roles/custom/matrix-prometheus-nginxlog-exporter/defaults/main.yml index a7177861e..3cbed7a22 100644 --- a/roles/custom/matrix-prometheus-nginxlog-exporter/defaults/main.yml +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # prometheus-nginxlog-exporter exports nginx logs in a prometheus usable format on a `/metrics/ endpoint # See: https://github.com/martin-helmich/prometheus-nginxlog-exporter/ @@ -17,9 +24,11 @@ matrix_prometheus_nginxlog_exporter_container_metrics_port: '4040' matrix_prometheus_nginxlog_exporter_container_syslog_port: '6514' matrix_prometheus_nginxlog_exporter_docker_image_arch: ['amd64', 'arm64'] -matrix_prometheus_nginxlog_exporter_docker_image_name_prefix: "{{ 'ghcr.io/martin-helmich/' }}" +matrix_prometheus_nginxlog_exporter_docker_image: "{{ matrix_prometheus_nginxlog_exporter_docker_image_registry_prefix }}martin-helmich/prometheus-nginxlog-exporter/exporter:{{ matrix_prometheus_nginxlog_exporter_docker_image_tag }}" +matrix_prometheus_nginxlog_exporter_docker_image_registry_prefix: "{{ matrix_prometheus_nginxlog_exporter_docker_image_registry_prefix_upstream }}" +matrix_prometheus_nginxlog_exporter_docker_image_registry_prefix_upstream: "{{ matrix_prometheus_nginxlog_exporter_docker_image_registry_prefix_upstream_default }}" +matrix_prometheus_nginxlog_exporter_docker_image_registry_prefix_upstream_default: "ghcr.io/" matrix_prometheus_nginxlog_exporter_docker_image_tag: "{{ 'latest' if matrix_prometheus_nginxlog_exporter_version == 'master' else matrix_prometheus_nginxlog_exporter_version }}-{{ matrix_architecture }}" -matrix_prometheus_nginxlog_exporter_docker_image: "{{ matrix_prometheus_nginxlog_exporter_docker_image_name_prefix }}prometheus-nginxlog-exporter/exporter:{{ matrix_prometheus_nginxlog_exporter_docker_image_tag }}" matrix_prometheus_nginxlog_exporter_docker_image_force_pull: "{{ matrix_prometheus_nginxlog_exporter_docker_image.endswith(':latest') }}" matrix_prometheus_nginxlog_exporter_docker_image_arch_check_enabled: true diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/examples/grafana.png.license b/roles/custom/matrix-prometheus-nginxlog-exporter/examples/grafana.png.license new file mode 100644 index 000000000..bf4d752e6 --- /dev/null +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/examples/grafana.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/examples/metrics.png.license b/roles/custom/matrix-prometheus-nginxlog-exporter/examples/metrics.png.license new file mode 100644 index 000000000..bf4d752e6 --- /dev/null +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/examples/metrics.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/main.yml b/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/main.yml index 124bb61d9..5b2ea34b3 100644 --- a/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/main.yml +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/setup_install.yml b/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/setup_install.yml index f7a0ee213..702c65e3a 100644 --- a/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/setup_install.yml +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/setup_install.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-prometheus-nginxlog-exporter image is pulled diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/setup_uninstall.yml b/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/setup_uninstall.yml index 8828f4ecb..9b1e5035e 100644 --- a/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/setup_uninstall.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-prometheus-nginxlog-exporter service diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/validate_config.yml b/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/validate_config.yml index bf97f4cbc..67668dc7e 100644 --- a/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/validate_config.yml +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/tasks/validate_config.yml @@ -1,13 +1,20 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: (Deprecation) Catch and report renamed prometheus-nginxlog-exporter settings ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_prometheus_nginxlog_exporter_container_hostname', 'new': 'matrix_prometheus_nginxlog_exporter_identifier'} + - {'old': 'matrix_prometheus_nginxlog_exporter_docker_image_name_prefix', 'new': 'matrix_prometheus_nginxlog_exporter_docker_image_registry_prefix'} - name: Fail if docker image not availble for arch ansible.builtin.fail: diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/templates/grafana/nginx-proxy.json.license b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/grafana/nginx-proxy.json.license new file mode 100644 index 000000000..9c2c35bce --- /dev/null +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/grafana/nginx-proxy.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/templates/labels.j2 b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/labels.j2 index e5aa3c620..7aa35d9c6 100644 --- a/roles/custom/matrix-prometheus-nginxlog-exporter/templates/labels.j2 +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_prometheus_nginxlog_exporter_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/templates/nginx-proxy.json.license b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/nginx-proxy.json.license new file mode 100644 index 000000000..bf4d752e6 --- /dev/null +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/nginx-proxy.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/templates/prometheus-nginxlog-exporter.yaml.j2 b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/prometheus-nginxlog-exporter.yaml.j2 index 2816ec087..b4c9b94b6 100644 --- a/roles/custom/matrix-prometheus-nginxlog-exporter/templates/prometheus-nginxlog-exporter.yaml.j2 +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/prometheus-nginxlog-exporter.yaml.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + listen: port: {{ matrix_prometheus_nginxlog_exporter_container_metrics_port }} address: "0.0.0.0" diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/templates/systemd/matrix-prometheus-nginxlog-exporter.service.j2 b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/systemd/matrix-prometheus-nginxlog-exporter.service.j2 index 63ea4f1ef..027ab8ddc 100644 --- a/roles/custom/matrix-prometheus-nginxlog-exporter/templates/systemd/matrix-prometheus-nginxlog-exporter.service.j2 +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/systemd/matrix-prometheus-nginxlog-exporter.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_prometheus_nginxlog_exporter_identifier }} 2>/dev/null || true' +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_prometheus_nginxlog_exporter_identifier }} 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_prometheus_nginxlog_exporter_identifier }} 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -44,7 +44,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach {{ matrix_prometheus_nginxlog_exporter_identifier }} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_prometheus_nginxlog_exporter_identifier }} 2>/dev/null || true' +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_prometheus_nginxlog_exporter_identifier }} 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_prometheus_nginxlog_exporter_identifier }} 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-prometheus-nginxlog-exporter/templates/systemd/matrix-prometheus-nginxlog-exporter.service.j2.license b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/systemd/matrix-prometheus-nginxlog-exporter.service.j2.license new file mode 100644 index 000000000..fcdcd2e0e --- /dev/null +++ b/roles/custom/matrix-prometheus-nginxlog-exporter/templates/systemd/matrix-prometheus-nginxlog-exporter.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-prometheus-services-connect/defaults/main.yml b/roles/custom/matrix-prometheus-services-connect/defaults/main.yml index f9d12e7f4..ccbaefdb8 100644 --- a/roles/custom/matrix-prometheus-services-connect/defaults/main.yml +++ b/roles/custom/matrix-prometheus-services-connect/defaults/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-prometheus-services-connect is a role which helps integrate diff --git a/roles/custom/matrix-prometheus-services-connect/tasks/install_synapse_rules.yml b/roles/custom/matrix-prometheus-services-connect/tasks/install_synapse_rules.yml index 78b218aca..76b2d9453 100644 --- a/roles/custom/matrix-prometheus-services-connect/tasks/install_synapse_rules.yml +++ b/roles/custom/matrix-prometheus-services-connect/tasks/install_synapse_rules.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Download synapse-v2.rules diff --git a/roles/custom/matrix-prometheus-services-connect/tasks/main.yml b/roles/custom/matrix-prometheus-services-connect/tasks/main.yml index f2c22b7f4..ef698e41e 100644 --- a/roles/custom/matrix-prometheus-services-connect/tasks/main.yml +++ b/roles/custom/matrix-prometheus-services-connect/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-rageshake/defaults/main.yml b/roles/custom/matrix-rageshake/defaults/main.yml index 77caeab1b..d28636793 100644 --- a/roles/custom/matrix-rageshake/defaults/main.yml +++ b/roles/custom/matrix-rageshake/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Benjamin Kampmann +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # rageshake is a bug report collection service @@ -17,18 +24,19 @@ matrix_rageshake_path_prefix: / # There are no stable container image tags yet. # See: https://github.com/matrix-org/rageshake/issues/69 # renovate: datasource=docker depName=ghcr.io/matrix-org/rageshake -matrix_rageshake_version: 1.13.0 +matrix_rageshake_version: 1.16.2 matrix_rageshake_base_path: "{{ matrix_base_data_path }}/rageshake" matrix_rageshake_config_path: "{{ matrix_rageshake_base_path }}/config" matrix_rageshake_data_path: "{{ matrix_rageshake_base_path }}/data" matrix_rageshake_container_src_files_path: "{{ matrix_rageshake_base_path }}/container-src" -matrix_rageshake_container_image: "{{ matrix_rageshake_container_image_name_prefix }}matrix-org/rageshake:{{ matrix_rageshake_container_image_tag }}" -matrix_rageshake_container_image_name_prefix: "{{ 'localhost/' if matrix_rageshake_container_image_self_build else matrix_rageshake_container_registry_prefix }}" +matrix_rageshake_container_image: "{{ matrix_rageshake_container_image_registry_prefix }}matrix-org/rageshake:{{ matrix_rageshake_container_image_tag }}" +matrix_rageshake_container_image_registry_prefix: "{{ 'localhost/' if matrix_rageshake_container_image_self_build else matrix_rageshake_container_image_registry_prefix_upstream }}" +matrix_rageshake_container_image_registry_prefix_upstream: "{{ matrix_rageshake_container_image_registry_prefix_upstream_default }}" +matrix_rageshake_container_image_registry_prefix_upstream_default: "ghcr.io/" matrix_rageshake_container_image_force_pull: "{{ matrix_rageshake_container_image.endswith(':master') }}" matrix_rageshake_container_image_tag: "{{ matrix_rageshake_version }}" -matrix_rageshake_container_registry_prefix: ghcr.io/ matrix_rageshake_container_image_self_build: false matrix_rageshake_container_image_self_build_repo: "https://github.com/matrix-org/rageshake/" @@ -93,7 +101,7 @@ matrix_rageshake_config_api_prefix: "{{ matrix_rageshake_scheme }}://{{ matrix_r # # For a more advanced customization, you can extend the default (see `matrix_rageshake_configuration_extension_yaml`) # or completely replace this variable with your own template. -matrix_rageshake_configuration_yaml: "{{ lookup('template', 'templates/config.yml.j2') }}" +matrix_rageshake_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" matrix_rageshake_configuration_extension_yaml: | # Your custom YAML configuration for Synapse goes here. diff --git a/roles/custom/matrix-rageshake/tasks/install.yml b/roles/custom/matrix-rageshake/tasks/install.yml index 572f03f1f..796adf852 100644 --- a/roles/custom/matrix-rageshake/tasks/install.yml +++ b/roles/custom/matrix-rageshake/tasks/install.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 - 2024 lavi Pantaleev +# SPDX-FileCopyrightText: 2023 Benjamin Kampmann +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure rageshake paths exist @@ -19,7 +26,7 @@ - name: Ensure rageshake config file created ansible.builtin.copy: content: "{{ matrix_rageshake_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_rageshake_config_path }}/config.yml" + dest: "{{ matrix_rageshake_config_path }}/config.yaml" owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" mode: 0640 diff --git a/roles/custom/matrix-rageshake/tasks/main.yml b/roles/custom/matrix-rageshake/tasks/main.yml index a211296d0..d314be440 100644 --- a/roles/custom/matrix-rageshake/tasks/main.yml +++ b/roles/custom/matrix-rageshake/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Benjamin Kampmann +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-rageshake/tasks/uninstall.yml b/roles/custom/matrix-rageshake/tasks/uninstall.yml index 8f04d9894..d0f0c8a47 100644 --- a/roles/custom/matrix-rageshake/tasks/uninstall.yml +++ b/roles/custom/matrix-rageshake/tasks/uninstall.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Benjamin Kampmann +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-rageshake service diff --git a/roles/custom/matrix-rageshake/tasks/validate_config.yml b/roles/custom/matrix-rageshake/tasks/validate_config.yml index b61a486d2..80db54151 100644 --- a/roles/custom/matrix-rageshake/tasks/validate_config.yml +++ b/roles/custom/matrix-rageshake/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Benjamin Kampmann +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required rageshake settings not defined @@ -10,6 +15,14 @@ - matrix_rageshake_path_prefix - matrix_rageshake_container_network +- name: (Deprecation) Catch and report renamed rageshake variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_rageshake_docker_image_name_prefix', 'new': 'matrix_rageshake_docker_image_registry_prefix'} + - when: matrix_rageshake_container_labels_traefik_enabled | bool block: - name: Fail if required rageshake Traefik settings not defined diff --git a/roles/custom/matrix-rageshake/templates/config.yml.j2 b/roles/custom/matrix-rageshake/templates/config.yaml.j2 similarity index 53% rename from roles/custom/matrix-rageshake/templates/config.yml.j2 rename to roles/custom/matrix-rageshake/templates/config.yaml.j2 index 6790f2938..a616c5629 100644 --- a/roles/custom/matrix-rageshake/templates/config.yml.j2 +++ b/roles/custom/matrix-rageshake/templates/config.yaml.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # Default configuration for rageshake. # To extend it, use `matrix_rageshake_configuration_extension_yaml`. diff --git a/roles/custom/matrix-rageshake/templates/labels.j2 b/roles/custom/matrix-rageshake/templates/labels.j2 index 626c2fb7c..f5db88f0d 100644 --- a/roles/custom/matrix-rageshake/templates/labels.j2 +++ b/roles/custom/matrix-rageshake/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_rageshake_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-rageshake/templates/systemd/matrix-rageshake.service.j2 b/roles/custom/matrix-rageshake/templates/systemd/matrix-rageshake.service.j2 index 9abaf3db5..fc90ea1e0 100644 --- a/roles/custom/matrix-rageshake/templates/systemd/matrix-rageshake.service.j2 +++ b/roles/custom/matrix-rageshake/templates/systemd/matrix-rageshake.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-rageshake 2>/dev/null || true' +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-rageshake 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-rageshake 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -32,7 +32,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ {{ arg }} \ {% endfor %} {{ matrix_rageshake_container_image }} \ - --config /config/config.yml + --config /config/config.yaml {% for network in matrix_rageshake_container_additional_networks %} ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-rageshake @@ -40,7 +40,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-rageshake -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-rageshake 2>/dev/null || true' +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-rageshake 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-rageshake 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-rageshake/templates/systemd/matrix-rageshake.service.j2.license b/roles/custom/matrix-rageshake/templates/systemd/matrix-rageshake.service.j2.license new file mode 100644 index 000000000..2d5160f8f --- /dev/null +++ b/roles/custom/matrix-rageshake/templates/systemd/matrix-rageshake.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Benjamin Kampmann +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-registration/defaults/main.yml b/roles/custom/matrix-registration/defaults/main.yml index 9e8a350ab..40b840f84 100644 --- a/roles/custom/matrix-registration/defaults/main.yml +++ b/roles/custom/matrix-registration/defaults/main.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# 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 + --- # matrix-registration is a simple python application to have a token based Matrix registration # See: https://zeratax.github.io/matrix-registration/ @@ -25,8 +35,10 @@ matrix_registration_docker_src_files_path: "{{ matrix_registration_base_path }}/ # renovate: datasource=docker depName=zeratax/matrix-registration matrix_registration_version: "v0.7.2" -matrix_registration_docker_image: "{{ matrix_registration_docker_image_name_prefix }}zeratax/matrix-registration:{{ matrix_registration_version }}" -matrix_registration_docker_image_name_prefix: "{{ 'localhost/' if matrix_registration_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_registration_docker_image: "{{ matrix_registration_docker_image_registry_prefix }}zeratax/matrix-registration:{{ matrix_registration_version }}" +matrix_registration_docker_image_registry_prefix: "{{ 'localhost/' if matrix_registration_container_image_self_build else matrix_registration_docker_image_registry_prefix_upstream }}" +matrix_registration_docker_image_registry_prefix_upstream: "{{ matrix_registration_docker_image_registry_prefix_upstream_default }}" +matrix_registration_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_registration_docker_image_force_pull: "{{ matrix_registration_docker_image.endswith(':latest') }}" matrix_registration_container_network: "" diff --git a/roles/custom/matrix-registration/tasks/generate_token.yml b/roles/custom/matrix-registration/tasks/generate_token.yml index aa2b0111f..0a3e47258 100644 --- a/roles/custom/matrix-registration/tasks/generate_token.yml +++ b/roles/custom/matrix-registration/tasks/generate_token.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if playbook called incorrectly diff --git a/roles/custom/matrix-registration/tasks/list_tokens.yml b/roles/custom/matrix-registration/tasks/list_tokens.yml index 1001c4fa2..f5c85a04d 100644 --- a/roles/custom/matrix-registration/tasks/list_tokens.yml +++ b/roles/custom/matrix-registration/tasks/list_tokens.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Call matrix-registration list all tokens API diff --git a/roles/custom/matrix-registration/tasks/main.yml b/roles/custom/matrix-registration/tasks/main.yml index 7b5647dc0..dcae5528e 100644 --- a/roles/custom/matrix-registration/tasks/main.yml +++ b/roles/custom/matrix-registration/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-registration/tasks/setup_install.yml b/roles/custom/matrix-registration/tasks/setup_install.yml index 2358da0c4..9a97c1704 100644 --- a/roles/custom/matrix-registration/tasks/setup_install.yml +++ b/roles/custom/matrix-registration/tasks/setup_install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Stuart Mumford +# 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-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-registration/tasks/setup_uninstall.yml b/roles/custom/matrix-registration/tasks/setup_uninstall.yml index 97c144358..b8037d59d 100644 --- a/roles/custom/matrix-registration/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-registration/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# 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-registration service diff --git a/roles/custom/matrix-registration/tasks/validate_config.yml b/roles/custom/matrix-registration/tasks/validate_config.yml index 50996a7cb..dba8f7497 100644 --- a/roles/custom/matrix-registration/tasks/validate_config.yml +++ b/roles/custom/matrix-registration/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-registration settings not defined @@ -18,7 +23,7 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_registration_docker_repo', 'new': 'matrix_registration_container_image_self_build_repo'} diff --git a/roles/custom/matrix-registration/templates/config.yaml.j2 b/roles/custom/matrix-registration/templates/config.yaml.j2 index 39211b249..2884d6800 100644 --- a/roles/custom/matrix-registration/templates/config.yaml.j2 +++ b/roles/custom/matrix-registration/templates/config.yaml.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + server_location: {{ matrix_registration_server_location|to_json }} server_name: {{ matrix_registration_server_name|to_json }} shared_secret: {{ matrix_registration_shared_secret|to_json }} diff --git a/roles/custom/matrix-registration/templates/labels.j2 b/roles/custom/matrix-registration/templates/labels.j2 index 7a87d1b06..7961e84aa 100644 --- a/roles/custom/matrix-registration/templates/labels.j2 +++ b/roles/custom/matrix-registration/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_registration_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-registration/templates/systemd/matrix-registration.service.j2 b/roles/custom/matrix-registration/templates/systemd/matrix-registration.service.j2 index 0544676c1..1888a2448 100644 --- a/roles/custom/matrix-registration/templates/systemd/matrix-registration.service.j2 +++ b/roles/custom/matrix-registration/templates/systemd/matrix-registration.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-registration 2>/dev/null || true' +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-registration 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-registration 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -41,7 +41,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-registration -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-registration 2>/dev/null || true' +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-registration 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-registration 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-registration/templates/systemd/matrix-registration.service.j2.license b/roles/custom/matrix-registration/templates/systemd/matrix-registration.service.j2.license new file mode 100644 index 000000000..9d697f20f --- /dev/null +++ b/roles/custom/matrix-registration/templates/systemd/matrix-registration.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2020 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-sliding-sync/defaults/main.yml b/roles/custom/matrix-sliding-sync/defaults/main.yml index adc6312ac..6e1e2c10f 100644 --- a/roles/custom/matrix-sliding-sync/defaults/main.yml +++ b/roles/custom/matrix-sliding-sync/defaults/main.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 David Mehren +# SPDX-FileCopyrightText: 2023 Kabir Kwatra +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# SPDX-FileCopyrightText: 2024 HarHarLinks +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Sliding Sync proxy is an implementation of MSC3575 for the new sliding sync @@ -24,11 +35,12 @@ matrix_sliding_sync_container_image_self_build_repo: https://github.com/matrix-o matrix_sliding_sync_container_image_self_build_repo_version: "{{ 'main' if matrix_sliding_sync_version == 'main' else matrix_sliding_sync_version }}" matrix_sliding_sync_container_src_path: "{{ matrix_sliding_sync_base_path }}/container-src" -matrix_sliding_sync_container_image: "{{ matrix_sliding_sync_container_image_name_prefix }}matrix-org/sliding-sync:{{ matrix_sliding_sync_container_image_tag }}" -matrix_sliding_sync_container_image_name_prefix: "{{ 'localhost/' if matrix_sliding_sync_container_image_self_build else matrix_sliding_sync_container_image_registry_prefix }}" +matrix_sliding_sync_container_image: "{{ matrix_sliding_sync_container_image_registry_prefix }}matrix-org/sliding-sync:{{ matrix_sliding_sync_container_image_tag }}" +matrix_sliding_sync_container_image_registry_prefix: "{{ 'localhost/' if matrix_sliding_sync_container_image_self_build else matrix_sliding_sync_container_image_registry_prefix_upstream }}" +matrix_sliding_sync_container_image_registry_prefix_upstream: "{{ matrix_sliding_sync_container_image_registry_prefix_upstream_default }}" +matrix_sliding_sync_container_image_registry_prefix_upstream_default: "ghcr.io/" matrix_sliding_sync_container_image_tag: "{{ matrix_sliding_sync_version }}" matrix_sliding_sync_container_image_force_pull: "{{ matrix_sliding_sync_container_image.endswith(':main') }}" -matrix_sliding_sync_container_image_registry_prefix: ghcr.io/ # The base container network. It will be auto-created by this role if it doesn't exist already. matrix_sliding_sync_container_network: '' @@ -93,13 +105,13 @@ matrix_sliding_sync_container_labels_additional_labels: '' # A list of extra arguments to pass to the container matrix_sliding_sync_container_extra_arguments: [] -# List of systemd services that matrix-sliding-sync-proxy.service depends on +# List of systemd services that matrix-sliding-sync.service depends on matrix_sliding_sync_systemd_required_services_list: "{{ matrix_sliding_sync_systemd_required_services_list_default + matrix_sliding_sync_systemd_required_services_list_auto + matrix_sliding_sync_systemd_required_services_list_custom }}" matrix_sliding_sync_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" matrix_sliding_sync_systemd_required_services_list_auto: [] matrix_sliding_sync_systemd_required_services_list_custom: [] -# List of systemd services that matrix-sliding-sync-proxy.service wants +# List of systemd services that matrix-sliding-sync.service wants matrix_sliding_sync_systemd_wanted_services_list: [] # Controls the SYNCV3_SERVER environment variable diff --git a/roles/custom/matrix-sliding-sync/tasks/install.yml b/roles/custom/matrix-sliding-sync/tasks/install.yml index 3526aa644..50128b583 100644 --- a/roles/custom/matrix-sliding-sync/tasks/install.yml +++ b/roles/custom/matrix-sliding-sync/tasks/install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-sliding-sync paths exist diff --git a/roles/custom/matrix-sliding-sync/tasks/main.yml b/roles/custom/matrix-sliding-sync/tasks/main.yml index 521f16fe7..ad97616b3 100644 --- a/roles/custom/matrix-sliding-sync/tasks/main.yml +++ b/roles/custom/matrix-sliding-sync/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-sliding-sync/tasks/uninstall.yml b/roles/custom/matrix-sliding-sync/tasks/uninstall.yml index 8a559cacc..085b9c548 100644 --- a/roles/custom/matrix-sliding-sync/tasks/uninstall.yml +++ b/roles/custom/matrix-sliding-sync/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-sliding-sync service diff --git a/roles/custom/matrix-sliding-sync/tasks/validate_config.yml b/roles/custom/matrix-sliding-sync/tasks/validate_config.yml index 8b1fee201..24a29539d 100644 --- a/roles/custom/matrix-sliding-sync/tasks/validate_config.yml +++ b/roles/custom/matrix-sliding-sync/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-sliding-sync settings not defined ansible.builtin.fail: @@ -13,3 +18,11 @@ - {'name': 'matrix_sliding_sync_container_network', when: true} - {'name': 'matrix_sliding_sync_metrics_proxying_hostname', when: "{{ matrix_sliding_sync_metrics_proxying_enabled }}"} - {'name': 'matrix_sliding_sync_metrics_proxying_path_prefix', when: "{{ matrix_sliding_sync_metrics_proxying_enabled }}"} + +- name: (Deprecation) Catch and report renamed matrix-sliding-sync variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "item.old in vars" + with_items: + - {'old': 'matrix_sliding_sync_container_image_name_prefix', 'new': 'matrix_sliding_sync_container_image_registry_prefix'} diff --git a/roles/custom/matrix-sliding-sync/templates/env.j2 b/roles/custom/matrix-sliding-sync/templates/env.j2 index 352e7d958..4a3a06dd4 100644 --- a/roles/custom/matrix-sliding-sync/templates/env.j2 +++ b/roles/custom/matrix-sliding-sync/templates/env.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + SYNCV3_SERVER={{ matrix_sliding_sync_environment_variable_syncv3_server }} SYNCV3_SECRET={{ matrix_sliding_sync_environment_variable_syncv3_secret }} SYNCV3_BINDADDR=:8008 diff --git a/roles/custom/matrix-sliding-sync/templates/labels.j2 b/roles/custom/matrix-sliding-sync/templates/labels.j2 index 736a94354..e2c76c8a4 100644 --- a/roles/custom/matrix-sliding-sync/templates/labels.j2 +++ b/roles/custom/matrix-sliding-sync/templates/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_sliding_sync_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-sliding-sync/templates/systemd/matrix-sliding-sync.service.j2 b/roles/custom/matrix-sliding-sync/templates/systemd/matrix-sliding-sync.service.j2 index d3a22e1d4..20ca0edf3 100644 --- a/roles/custom/matrix-sliding-sync/templates/systemd/matrix-sliding-sync.service.j2 +++ b/roles/custom/matrix-sliding-sync/templates/systemd/matrix-sliding-sync.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-sliding-sync 2>/dev/null || true' +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-sliding-sync 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-sliding-sync 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-sliding-sync -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-sliding-sync 2>/dev/null || true' +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-sliding-sync 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-sliding-sync 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-sliding-sync/templates/systemd/matrix-sliding-sync.service.j2.license b/roles/custom/matrix-sliding-sync/templates/systemd/matrix-sliding-sync.service.j2.license new file mode 100644 index 000000000..97357d3ef --- /dev/null +++ b/roles/custom/matrix-sliding-sync/templates/systemd/matrix-sliding-sync.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-sliding-sync/vars/main.yml b/roles/custom/matrix-sliding-sync/vars/main.yml index 8ec69c087..50fc46bf1 100644 --- a/roles/custom/matrix-sliding-sync/vars/main.yml +++ b/roles/custom/matrix-sliding-sync/vars/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Public facing base URL of the Sliding Sync service. diff --git a/roles/custom/matrix-static-files/defaults/main.yml b/roles/custom/matrix-static-files/defaults/main.yml index 248062ab2..768442001 100644 --- a/roles/custom/matrix-static-files/defaults/main.yml +++ b/roles/custom/matrix-static-files/defaults/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-static-files is a role which generates and serves `/.well-known/matrix` files for the purposes of Matrix Delegation. @@ -8,13 +13,14 @@ matrix_static_files_enabled: true matrix_static_files_identifier: matrix-static-files # renovate: datasource=docker depName=joseluisq/static-web-server -matrix_static_files_version: 2.35.0 +matrix_static_files_version: 2.36.1 matrix_static_files_base_path: "{{ matrix_base_data_path }}/{{ 'static-files' if matrix_static_files_identifier == 'matrix-static-files' else matrix_static_files_identifier }}" matrix_static_files_config_path: "{{ matrix_static_files_base_path }}/config" matrix_static_files_public_path: "{{ matrix_static_files_base_path }}/public" matrix_static_files_public_well_known_path: "{{ matrix_static_files_public_path }}/.well-known" matrix_static_files_public_well_known_matrix_path: "{{ matrix_static_files_public_well_known_path }}/matrix" +matrix_static_files_public_well_known_element_path: "{{ matrix_static_files_public_well_known_path }}/element" # List of systemd services that matrix-static-files.service depends on matrix_static_files_systemd_required_services_list: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" @@ -24,7 +30,10 @@ matrix_static_files_systemd_wanted_services_list: "{{ matrix_static_files_system matrix_static_files_systemd_wanted_services_list_auto: [] matrix_static_files_systemd_wanted_services_list_custom: [] -matrix_static_files_container_image: "{{ matrix_container_global_registry_prefix }}joseluisq/static-web-server:{{ matrix_static_files_container_image_tag }}" +matrix_static_files_container_image: "{{ matrix_static_files_container_image_registry_prefix }}joseluisq/static-web-server:{{ matrix_static_files_container_image_tag }}" +matrix_static_files_container_image_registry_prefix: "{{ matrix_static_files_container_image_registry_prefix_upstream }}" +matrix_static_files_container_image_registry_prefix_upstream: "{{ matrix_static_files_container_image_registry_prefix_upstream_default }}" +matrix_static_files_container_image_registry_prefix_upstream_default: "docker.io/" matrix_static_files_container_image_tag: "{{ 'latest' if matrix_static_files_version == 'latest' else (matrix_static_files_version + '-alpine') }}" matrix_static_files_container_image_force_pull: "{{ matrix_static_files_container_image.endswith(':latest') }}" @@ -48,7 +57,7 @@ matrix_static_files_container_labels_traefik_docker_network: "{{ matrix_static_f matrix_static_files_container_labels_traefik_entrypoints: web-secure matrix_static_files_container_labels_traefik_tls_certResolver: default # noqa var-naming -# Controls whether labels will be added that expose the well-known public endpoint on the Matrix domain. +# Controls whether labels will be added that expose the `/.well-known/matrix` endpoint on the Matrix domain. matrix_static_files_container_labels_well_known_matrix_endpoint_enabled: true matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_hostname: '' matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_path_prefix: /.well-known/matrix @@ -83,7 +92,7 @@ matrix_static_files_container_labels_base_domain_traefik_tls: "{{ matrix_static_ matrix_static_files_container_labels_base_domain_traefik_tls_certResolver: "{{ matrix_static_files_container_labels_traefik_tls_certResolver }}" # noqa var-naming # Controls whether the root path (/) at the base domain would respond with a redirect to some URL. matrix_static_files_container_labels_base_domain_root_path_redirection_enabled: false -matrix_static_files_container_labels_base_domain_root_path_redirection_regex: "^{{ matrix_static_files_scheme }}://{{ matrix_static_files_container_labels_base_domain_traefik_hostname }}{{ matrix_static_files_container_labels_base_domain_traefik_path_prefix }}$" +matrix_static_files_container_labels_base_domain_root_path_redirection_regex: "^{{ matrix_static_files_scheme }}://{{ matrix_static_files_container_labels_base_domain_traefik_hostname }}{{ matrix_static_files_container_labels_base_domain_traefik_path_prefix }}(\\?.*)?$" matrix_static_files_container_labels_base_domain_root_path_redirection_url: "" # matrix_static_files_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file. @@ -203,6 +212,16 @@ matrix_static_files_file_matrix_client_property_cc_etke_synapse_admin: "{{ matri matrix_static_files_file_matrix_client_property_cc_etke_synapse_admin_auto: {} matrix_static_files_file_matrix_client_property_cc_etke_synapse_admin_custom: {} +# Controls whether `org.matrix.msc4143.rtc_foci`-related entries should be added to the client well-known. +# By default, if there are entries in `matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci`, we show them (by enabling this). +matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_enabled: "{{ matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci | default({}) | dict2items | length > 0 }}" + +# Controls the org.matrix.msc4143.rtc_foci property in the /.well-known/matrix/client file. +# See `matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_enabled` +matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci: "{{ matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_auto+ matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_custom }}" +matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_auto: [] +matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_custom: [] + # Default /.well-known/matrix/client configuration template which covers the generic use case. # You can customize it by controlling the various variables inside it. # @@ -399,10 +418,3 @@ matrix_static_files_self_check_hostname_identity: '' # As per the spec (https://matrix.org/docs/spec/client_server/r0.6.0#well-known-uri), it shouldn't be, # so we default to not following redirects as well. matrix_static_files_self_check_well_known_matrix_client_follow_redirects: none - -# TODO - review this one -# Specifies where requests for the root URI (`/`) on the `matrix.` domain should be redirected. -# If this has an empty value, they're just passed to the homeserver, which serves a static page. -# If you'd like to make `https://matrix.example.com` redirect to `https://element.example.com` (or something of that sort), specify the domain name here. -# Example value: `element.example.com` (or `{{ matrix_server_fqn_element }}`). -matrix_static_files_client_redirect_root_uri_to_domain: "" diff --git a/roles/custom/matrix-static-files/tasks/install.yml b/roles/custom/matrix-static-files/tasks/install.yml index 3cbd9d4c6..dd467a38d 100644 --- a/roles/custom/matrix-static-files/tasks/install.yml +++ b/roles/custom/matrix-static-files/tasks/install.yml @@ -1,18 +1,30 @@ +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-static-files paths exist ansible.builtin.file: - path: "{{ item }}" + path: "{{ item.path }}" state: directory mode: 0750 owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" with_items: - - "{{ matrix_static_files_base_path }}" - - "{{ matrix_static_files_config_path }}" - - "{{ matrix_static_files_public_path }}" - - "{{ matrix_static_files_public_well_known_path }}" - - "{{ matrix_static_files_public_well_known_matrix_path }}" + - {path: "{{ matrix_static_files_base_path }}", when: true} + - {path: "{{ matrix_static_files_config_path }}", when: true} + - {path: "{{ matrix_static_files_public_path }}", when: true} + - {path: "{{ matrix_static_files_public_well_known_path }}", when: true} + - {path: "{{ matrix_static_files_public_well_known_matrix_path }}", when: true} + when: "item.when | bool" + +# This is not necessary anymore, so we're cleaning it up. +- name: Ensure matrix-static-files element path doesn't exist + ansible.builtin.file: + path: "{{ matrix_static_files_public_well_known_element_path }}" + state: absent - name: Ensure matrix-static-files is configured ansible.builtin.template: diff --git a/roles/custom/matrix-static-files/tasks/main.yml b/roles/custom/matrix-static-files/tasks/main.yml index 7b5f25377..145a6952f 100644 --- a/roles/custom/matrix-static-files/tasks/main.yml +++ b/roles/custom/matrix-static-files/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-static-files/tasks/self_check_well_known.yml b/roles/custom/matrix-static-files/tasks/self_check_well_known.yml index b6b8f5494..807ffa55a 100644 --- a/roles/custom/matrix-static-files/tasks/self_check_well_known.yml +++ b/roles/custom/matrix-static-files/tasks/self_check_well_known.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2018 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2018 Aaron Raimist +# SPDX-FileCopyrightText: 2019 - 2020 Dan Arnfield +# SPDX-FileCopyrightText: 2020 Marcel Partap +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Determine well-known files to check (start with /.well-known/matrix/client) diff --git a/roles/custom/matrix-static-files/tasks/self_check_well_known_file.yml b/roles/custom/matrix-static-files/tasks/self_check_well_known_file.yml index 7dace4be2..03cd81823 100644 --- a/roles/custom/matrix-static-files/tasks/self_check_well_known_file.yml +++ b/roles/custom/matrix-static-files/tasks/self_check_well_known_file.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Dan Arnfield +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2021 Alexandros Afentoulis +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-static-files/tasks/uninstall.yml b/roles/custom/matrix-static-files/tasks/uninstall.yml index 5e5208ef6..610a33585 100644 --- a/roles/custom/matrix-static-files/tasks/uninstall.yml +++ b/roles/custom/matrix-static-files/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-static-files systemd service diff --git a/roles/custom/matrix-static-files/tasks/validate_config.yml b/roles/custom/matrix-static-files/tasks/validate_config.yml index 9a590ea06..2697fa654 100644 --- a/roles/custom/matrix-static-files/tasks/validate_config.yml +++ b/roles/custom/matrix-static-files/tasks/validate_config.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-static-files settings not defined diff --git a/roles/custom/matrix-static-files/templates/config.toml.j2.license b/roles/custom/matrix-static-files/templates/config.toml.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-static-files/templates/config.toml.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-static-files/templates/env.j2 b/roles/custom/matrix-static-files/templates/env.j2 index 23c21aa86..0dd9b6f10 100644 --- a/roles/custom/matrix-static-files/templates/env.j2 +++ b/roles/custom/matrix-static-files/templates/env.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + SERVER_PORT={{ matrix_static_files_environment_variable_server_port }} SERVER_LOG_LEVEL={{ matrix_static_files_environment_variable_server_log_level }} diff --git a/roles/custom/matrix-static-files/templates/labels.j2 b/roles/custom/matrix-static-files/templates/labels.j2 index b2fe0ccf0..9c502c694 100644 --- a/roles/custom/matrix-static-files/templates/labels.j2 +++ b/roles/custom/matrix-static-files/templates/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_static_files_container_labels_traefik_enabled %} traefik.enable=true @@ -18,27 +25,27 @@ traefik.http.services.{{ matrix_static_files_identifier }}.loadbalancer.server.p {% set well_known_matrix_endpoint_middlewares = [] %} {% if matrix_static_files_container_labels_well_known_matrix_endpoint_middleware_compress_enabled %} -traefik.http.middlewares.{{ matrix_static_files_identifier }}-well-known-compress.compress=true -traefik.http.middlewares.{{ matrix_static_files_identifier }}-well-known-compress.compress.minResponseBodyBytes={{ matrix_static_files_container_labels_well_known_matrix_endpoint_middleware_compress_minResponseBodyBytes }} -{% set well_known_matrix_endpoint_middlewares = well_known_matrix_endpoint_middlewares + [matrix_static_files_identifier + '-well-known-compress'] %} +traefik.http.middlewares.{{ matrix_static_files_identifier }}-well-known-matrix-compress.compress=true +traefik.http.middlewares.{{ matrix_static_files_identifier }}-well-known-matrix-compress.compress.minResponseBodyBytes={{ matrix_static_files_container_labels_well_known_matrix_endpoint_middleware_compress_minResponseBodyBytes }} +{% set well_known_matrix_endpoint_middlewares = well_known_matrix_endpoint_middlewares + [matrix_static_files_identifier + '-well-known-matrix-compress'] %} {% endif %} -traefik.http.routers.{{ matrix_static_files_identifier }}-well-known.rule={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_rule }} +traefik.http.routers.{{ matrix_static_files_identifier }}-well-known-matrix.rule={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_rule }} {% if well_known_matrix_endpoint_middlewares | length > 0 %} -traefik.http.routers.{{ matrix_static_files_identifier }}-well-known.middlewares={{ well_known_matrix_endpoint_middlewares | join(',') }} +traefik.http.routers.{{ matrix_static_files_identifier }}-well-known-matrix.middlewares={{ well_known_matrix_endpoint_middlewares | join(',') }} {% endif %} {% if matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_priority | int > 0 %} -traefik.http.routers.{{ matrix_static_files_identifier }}-well-known.priority={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_priority }} +traefik.http.routers.{{ matrix_static_files_identifier }}-well-known-matrix.priority={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_priority }} {% endif %} -traefik.http.routers.{{ matrix_static_files_identifier }}-well-known.service={{ matrix_static_files_identifier }} -traefik.http.routers.{{ matrix_static_files_identifier }}-well-known.entrypoints={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_entrypoints }} -traefik.http.routers.{{ matrix_static_files_identifier }}-well-known.tls={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_tls | to_json }} +traefik.http.routers.{{ matrix_static_files_identifier }}-well-known-matrix.service={{ matrix_static_files_identifier }} +traefik.http.routers.{{ matrix_static_files_identifier }}-well-known-matrix.entrypoints={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_entrypoints }} +traefik.http.routers.{{ matrix_static_files_identifier }}-well-known-matrix.tls={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_tls | to_json }} {% if matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_tls %} -traefik.http.routers.{{ matrix_static_files_identifier }}-well-known.tls.certResolver={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_tls_certResolver }} +traefik.http.routers.{{ matrix_static_files_identifier }}-well-known-matrix.tls.certResolver={{ matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_tls_certResolver }} {% endif %} ############################################################ diff --git a/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2 b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2 index 86882893a..600e8f4c7 100644 --- a/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2 +++ b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2 @@ -57,4 +57,7 @@ {% if matrix_static_files_file_matrix_client_property_cc_etke_synapse_admin_enabled %}, "cc.etke.synapse-admin": {{ matrix_static_files_file_matrix_client_property_cc_etke_synapse_admin | to_json }} {% endif %} + {% if matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_enabled %}, + "org.matrix.msc4143.rtc_foci": {{ matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci | to_json }} + {% endif %} } diff --git a/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2.license b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-static-files/templates/public/.well-known/matrix/server.j2.license b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/server.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/server.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-static-files/templates/public/.well-known/matrix/support.j2.license b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/support.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/support.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-static-files/templates/systemd/matrix-static-files.service.j2 b/roles/custom/matrix-static-files/templates/systemd/matrix-static-files.service.j2 index b1bc2dd1b..ef828c22d 100755 --- a/roles/custom/matrix-static-files/templates/systemd/matrix-static-files.service.j2 +++ b/roles/custom/matrix-static-files/templates/systemd/matrix-static-files.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-static-files 2>/dev/null || true' +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-static-files 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-static-files 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -39,7 +39,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-static-files -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-static-files 2>/dev/null || true' +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-static-files 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-static-files 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-static-files/templates/systemd/matrix-static-files.service.j2.license b/roles/custom/matrix-static-files/templates/systemd/matrix-static-files.service.j2.license new file mode 100644 index 000000000..e18b238ea --- /dev/null +++ b/roles/custom/matrix-static-files/templates/systemd/matrix-static-files.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-sygnal/defaults/main.yml b/roles/custom/matrix-sygnal/defaults/main.yml index 3f9bc77fc..540dece4e 100644 --- a/roles/custom/matrix-sygnal/defaults/main.yml +++ b/roles/custom/matrix-sygnal/defaults/main.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Sygnal is a reference Push Gateway for Matrix. @@ -27,7 +36,9 @@ matrix_sygnal_systemd_wanted_services_list: [] matrix_sygnal_docker_image: "{{ matrix_sygnal_docker_image_registry_prefix }}matrixdotorg/sygnal:{{ matrix_sygnal_docker_image_tag }}" matrix_sygnal_docker_image_tag: "{{ matrix_sygnal_version }}" -matrix_sygnal_docker_image_registry_prefix: "{{ matrix_container_global_registry_prefix }}" +matrix_sygnal_docker_image_registry_prefix: "{{ matrix_sygnal_docker_image_registry_prefix_upstream }}" +matrix_sygnal_docker_image_registry_prefix_upstream: "{{ matrix_sygnal_docker_image_registry_prefix_upstream_default }}" +matrix_sygnal_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_sygnal_docker_image_force_pull: "{{ matrix_sygnal_docker_image.endswith(':latest') }}" # The base container network. It will be auto-created by this role if it doesn't exist already. diff --git a/roles/custom/matrix-sygnal/tasks/install.yml b/roles/custom/matrix-sygnal/tasks/install.yml index 7ac656819..af6b88fe9 100644 --- a/roles/custom/matrix-sygnal/tasks/install.yml +++ b/roles/custom/matrix-sygnal/tasks/install.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# 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-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Sygnal paths exists diff --git a/roles/custom/matrix-sygnal/tasks/main.yml b/roles/custom/matrix-sygnal/tasks/main.yml index a586cbd02..c194a800f 100644 --- a/roles/custom/matrix-sygnal/tasks/main.yml +++ b/roles/custom/matrix-sygnal/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2021 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-sygnal/tasks/uninstall.yml b/roles/custom/matrix-sygnal/tasks/uninstall.yml index 5f01daf1f..cc67c59fd 100644 --- a/roles/custom/matrix-sygnal/tasks/uninstall.yml +++ b/roles/custom/matrix-sygnal/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-sygnal service diff --git a/roles/custom/matrix-sygnal/tasks/validate_config.yml b/roles/custom/matrix-sygnal/tasks/validate_config.yml index 1cdf20381..dfb806a18 100644 --- a/roles/custom/matrix-sygnal/tasks/validate_config.yml +++ b/roles/custom/matrix-sygnal/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2021 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required Sygnal settings not defined diff --git a/roles/custom/matrix-sygnal/templates/config.yaml.j2 b/roles/custom/matrix-sygnal/templates/config.yaml.j2 index bb81ea9a4..aba36a9dd 100644 --- a/roles/custom/matrix-sygnal/templates/config.yaml.j2 +++ b/roles/custom/matrix-sygnal/templates/config.yaml.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + ## # This is a configuration for Sygnal, the reference Push Gateway for Matrix # See: matrix.org diff --git a/roles/custom/matrix-sygnal/templates/labels.j2 b/roles/custom/matrix-sygnal/templates/labels.j2 index 3ef6731c3..83a415752 100644 --- a/roles/custom/matrix-sygnal/templates/labels.j2 +++ b/roles/custom/matrix-sygnal/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_sygnal_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-sygnal/templates/systemd/matrix-sygnal.service.j2 b/roles/custom/matrix-sygnal/templates/systemd/matrix-sygnal.service.j2 index 12140146a..96e6ea72e 100644 --- a/roles/custom/matrix-sygnal/templates/systemd/matrix-sygnal.service.j2 +++ b/roles/custom/matrix-sygnal/templates/systemd/matrix-sygnal.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-sygnal 2>/dev/null || true' +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-sygnal 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-sygnal 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -41,7 +41,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-sygnal -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-sygnal 2>/dev/null || true' +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-sygnal 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-sygnal 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-sygnal/templates/systemd/matrix-sygnal.service.j2.license b/roles/custom/matrix-sygnal/templates/systemd/matrix-sygnal.service.j2.license new file mode 100644 index 000000000..0e5f722c4 --- /dev/null +++ b/roles/custom/matrix-sygnal/templates/systemd/matrix-sygnal.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse-admin/defaults/main.yml b/roles/custom/matrix-synapse-admin/defaults/main.yml index 48ccb74c2..350b3b5cd 100644 --- a/roles/custom/matrix-synapse-admin/defaults/main.yml +++ b/roles/custom/matrix-synapse-admin/defaults/main.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2020 - 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Dennis Ciba +# SPDX-FileCopyrightText: 2021 - 2025 MDAD project contributors +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2022 - 2025 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-synapse-admin is a web UI for managing the Synapse Matrix server # Project source code URL: https://github.com/Awesome-Technologies/synapse-admin @@ -14,9 +25,11 @@ matrix_synapse_admin_container_image_self_build: false matrix_synapse_admin_container_image_self_build_repo: "https://github.com/etkecc/synapse-admin.git" # renovate: datasource=docker depName=ghcr.io/etkecc/synapse-admin -matrix_synapse_admin_version: v0.10.3-etke36 -matrix_synapse_admin_docker_image: "{{ matrix_synapse_admin_docker_image_name_prefix }}etkecc/synapse-admin:{{ matrix_synapse_admin_version }}" -matrix_synapse_admin_docker_image_name_prefix: "{{ 'localhost/' if matrix_synapse_admin_container_image_self_build else 'ghcr.io/' }}" +matrix_synapse_admin_version: v0.10.3-etke38 +matrix_synapse_admin_docker_image: "{{ matrix_synapse_admin_docker_image_registry_prefix }}etkecc/synapse-admin:{{ matrix_synapse_admin_version }}" +matrix_synapse_admin_docker_image_registry_prefix: "{{ 'localhost/' if matrix_synapse_admin_container_image_self_build else matrix_synapse_admin_docker_image_registry_prefix_upstream }}" +matrix_synapse_admin_docker_image_registry_prefix_upstream: "{{ matrix_synapse_admin_docker_image_registry_prefix_upstream_default }}" +matrix_synapse_admin_docker_image_registry_prefix_upstream_default: "ghcr.io/" matrix_synapse_admin_docker_image_force_pull: "{{ matrix_synapse_admin_docker_image.endswith(':latest') }}" # The base container network @@ -49,6 +62,11 @@ matrix_synapse_admin_container_labels_traefik_priority: 0 matrix_synapse_admin_container_labels_traefik_entrypoints: web-secure matrix_synapse_admin_container_labels_traefik_tls: "{{ matrix_synapse_admin_container_labels_traefik_entrypoints != 'web' }}" matrix_synapse_admin_container_labels_traefik_tls_certResolver: default # noqa var-naming +# This setting is to define a list ip addresses to allow access to synapse-admin. +# Each IP address should be in CIDR format, e.g. xxx.xxx.xxx.xxx/xx. +# For more information, see: https://doc.traefik.io/traefik/middlewares/http/ipallowlist/ +# If the list is empty, all IP addresses are allowed. +matrix_synapse_admin_container_labels_traefik_ipallowlist_sourcerange: [] # Controls which additional headers to attach to all HTTP responses. # To add your own headers, use `matrix_synapse_admin_container_labels_traefik_additional_response_headers_custom` diff --git a/roles/custom/matrix-synapse-admin/tasks/main.yml b/roles/custom/matrix-synapse-admin/tasks/main.yml index da3f2b56d..c66e9998e 100644 --- a/roles/custom/matrix-synapse-admin/tasks/main.yml +++ b/roles/custom/matrix-synapse-admin/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-synapse-admin/tasks/setup_install.yml b/roles/custom/matrix-synapse-admin/tasks/setup_install.yml index 2dcdd0cfb..1c3fb8673 100644 --- a/roles/custom/matrix-synapse-admin/tasks/setup_install.yml +++ b/roles/custom/matrix-synapse-admin/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Dennis Ciba +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-synapse-admin paths exists diff --git a/roles/custom/matrix-synapse-admin/tasks/setup_uninstall.yml b/roles/custom/matrix-synapse-admin/tasks/setup_uninstall.yml index 69820a005..5436bc82b 100644 --- a/roles/custom/matrix-synapse-admin/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-synapse-admin/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-synapse-admin service diff --git a/roles/custom/matrix-synapse-admin/tasks/validate_config.yml b/roles/custom/matrix-synapse-admin/tasks/validate_config.yml index 0fa3ce77b..d0e953d24 100644 --- a/roles/custom/matrix-synapse-admin/tasks/validate_config.yml +++ b/roles/custom/matrix-synapse-admin/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- -- name: (Deprecation) Catch and report renamed settings +- name: (Deprecation) Catch and report renamed matrix-synapse-admin settings ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_synapse_admin_docker_repo', 'new': 'matrix_synapse_admin_container_self_build_repo'} @@ -12,6 +18,7 @@ - {'old': 'matrix_synapse_admin_container_self_build_repo', 'new': 'matrix_synapse_admin_container_image_self_build_repo'} - {'old': 'matrix_synapse_admin_public_endpoint', 'new': 'matrix_synapse_admin_path_prefix'} - {'old': 'matrix_synapse_admin_nginx_proxy_integration_enabled', 'new': ''} + - {'old': 'matrix_synapse_admin_docker_image_name_prefix', 'new': 'matrix_synapse_admin_docker_image_registry_prefix'} - when: matrix_synapse_admin_container_labels_traefik_enabled | bool block: diff --git a/roles/custom/matrix-synapse-admin/templates/labels.j2 b/roles/custom/matrix-synapse-admin/templates/labels.j2 index b4e973e00..bab69cec3 100644 --- a/roles/custom/matrix-synapse-admin/templates/labels.j2 +++ b/roles/custom/matrix-synapse-admin/templates/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2025 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_synapse_admin_container_labels_traefik_enabled %} traefik.enable=true @@ -9,6 +16,11 @@ traefik.http.services.matrix-synapse-admin.loadbalancer.server.port=80 {% set middlewares = [] %} +{% if matrix_synapse_admin_container_labels_traefik_ipallowlist_sourcerange | length > 0 %} +traefik.http.middlewares.matrix-synapse-admin-ipallowlist.ipallowlist.sourcerange={{ matrix_synapse_admin_container_labels_traefik_ipallowlist_sourcerange | join(',') }} +{% set middlewares = middlewares + ['matrix-synapse-admin-ipallowlist'] %} +{% endif %} + {% if matrix_synapse_admin_container_labels_traefik_path_prefix != '/' %} traefik.http.middlewares.matrix-synapse-admin-slashless-redirect.redirectregex.regex=({{ matrix_synapse_admin_container_labels_traefik_path_prefix | quote }})$ traefik.http.middlewares.matrix-synapse-admin-slashless-redirect.redirectregex.replacement=${1}/ diff --git a/roles/custom/matrix-synapse-admin/templates/systemd/matrix-synapse-admin.service.j2 b/roles/custom/matrix-synapse-admin/templates/systemd/matrix-synapse-admin.service.j2 index ed72bef7c..dd3675fae 100644 --- a/roles/custom/matrix-synapse-admin/templates/systemd/matrix-synapse-admin.service.j2 +++ b/roles/custom/matrix-synapse-admin/templates/systemd/matrix-synapse-admin.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-synapse-admin 2>/dev/null || true' +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-synapse-admin 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-synapse-admin 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -42,7 +42,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-synapse-admin -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-synapse-admin 2>/dev/null || true' +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-synapse-admin 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-synapse-admin 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-synapse-admin/templates/systemd/matrix-synapse-admin.service.j2.license b/roles/custom/matrix-synapse-admin/templates/systemd/matrix-synapse-admin.service.j2.license new file mode 100644 index 000000000..9b305e18b --- /dev/null +++ b/roles/custom/matrix-synapse-admin/templates/systemd/matrix-synapse-admin.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 Dan Arnfield + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse-auto-compressor/defaults/main.yml b/roles/custom/matrix-synapse-auto-compressor/defaults/main.yml index e80ce35f0..c627288f1 100644 --- a/roles/custom/matrix-synapse-auto-compressor/defaults/main.yml +++ b/roles/custom/matrix-synapse-auto-compressor/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # synapse_auto_compressor tool @@ -8,11 +15,11 @@ matrix_synapse_auto_compressor_enabled: true # renovate: datasource=docker depName=registry.gitlab.com/etke.cc/rust-synapse-compress-state matrix_synapse_auto_compressor_version: v0.1.4 -# note: UID/GID better to match the UID/GID of the postgres container, but it doesn't really matter, as volumes are not used here +# note: UID/GID better to match the UID/GID of the Postgres container, but it doesn't really matter, as volumes are not used here matrix_synapse_auto_compressor_uid: '' matrix_synapse_auto_compressor_gid: '' -# note: the postgres image version doesn't matter, as it is used for a SQL script that doesn't use any specific features +# note: the Postgres image version doesn't matter, as it is used for a SQL script that doesn't use any specific features matrix_synapse_auto_compressor_postgres_image: "postgres" matrix_synapse_auto_compressor_base_path: "{{ matrix_base_data_path }}/synapse-auto-compressor" @@ -22,8 +29,10 @@ matrix_synapse_auto_compressor_container_image_self_build: false matrix_synapse_auto_compressor_container_image_self_build_repo: "https://github.com/matrix-org/rust-synapse-compress-state.git" matrix_synapse_auto_compressor_container_image_self_build_version: "{{ 'main' if matrix_synapse_auto_compressor_version == 'latest' else matrix_synapse_auto_compressor_version }}" -matrix_synapse_auto_compressor_container_image: "{{ matrix_synapse_auto_compressor_container_image_name_prefix }}etke.cc/rust-synapse-compress-state:{{ matrix_synapse_auto_compressor_version }}" -matrix_synapse_auto_compressor_container_image_name_prefix: "{{ 'localhost/' if matrix_synapse_auto_compressor_container_image_self_build else 'registry.gitlab.com/' }}" +matrix_synapse_auto_compressor_container_image: "{{ matrix_synapse_auto_compressor_container_image_registry_prefix }}etke.cc/rust-synapse-compress-state:{{ matrix_synapse_auto_compressor_version }}" +matrix_synapse_auto_compressor_container_image_registry_prefix: "{{ 'localhost/' if matrix_synapse_auto_compressor_container_image_self_build else matrix_synapse_auto_compressor_container_image_registry_prefix_upstream }}" +matrix_synapse_auto_compressor_container_image_registry_prefix_upstream: "{{ matrix_synapse_auto_compressor_container_image_registry_prefix_upstream_default }}" +matrix_synapse_auto_compressor_container_image_registry_prefix_upstream_default: "registry.gitlab.com/" matrix_synapse_auto_compressor_container_image_force_pull: "{{ matrix_synapse_auto_compressor_container_image.endswith(':latest') }}" # The base container network. It will be auto-created by this role if it doesn't exist already. @@ -55,8 +64,13 @@ matrix_synapse_auto_compressor_database_name: 'synapse' # connection string to synapse database (postgres only) matrix_synapse_auto_compressor_synapse_database: 'postgres://{{ matrix_synapse_auto_compressor_database_username | urlencode() }}:{{ matrix_synapse_auto_compressor_database_password | urlencode() }}@{{ matrix_synapse_auto_compressor_database_hostname }}:{{ matrix_synapse_auto_compressor_database_port }}/{{ matrix_synapse_auto_compressor_database_name }}' -# systemd calendar configuration for the compressor job -matrix_synapse_auto_compressor_calendar: "*-*-* 00:00:00" +# Controls the `OnCalendar` configuration for the compressor job. +# Also see: `matrix_synapse_auto_compressor_schedule_randomized_delay_sec` +matrix_synapse_auto_compressor_schedule: "*-*-* 00:00:00" + +# The `RandomizedDelaySec` delay (in seconds or as a systemd time string) to randomize the `OnCalendar` start time (`matrix_synapse_auto_compressor_schedule`) of the compressor job. +# This can be set to 0 to disable randomized delays. +matrix_synapse_auto_compressor_schedule_randomized_delay_sec: 6h # The number of state groups to work on at once. # All of the entries from state_groups_state are requested from the database for state groups that are worked on. diff --git a/roles/custom/matrix-synapse-auto-compressor/tasks/install.yml b/roles/custom/matrix-synapse-auto-compressor/tasks/install.yml index 2f51b5a0b..3e69d9f5d 100644 --- a/roles/custom/matrix-synapse-auto-compressor/tasks/install.yml +++ b/roles/custom/matrix-synapse-auto-compressor/tasks/install.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure synapse-auto-compressor paths exist diff --git a/roles/custom/matrix-synapse-auto-compressor/tasks/main.yml b/roles/custom/matrix-synapse-auto-compressor/tasks/main.yml index 5993e4f9b..746896ab3 100644 --- a/roles/custom/matrix-synapse-auto-compressor/tasks/main.yml +++ b/roles/custom/matrix-synapse-auto-compressor/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-synapse-auto-compressor/tasks/uninstall.yml b/roles/custom/matrix-synapse-auto-compressor/tasks/uninstall.yml index 075f3c101..d29e40bc3 100644 --- a/roles/custom/matrix-synapse-auto-compressor/tasks/uninstall.yml +++ b/roles/custom/matrix-synapse-auto-compressor/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-synapse-auto-compressor service ansible.builtin.stat: diff --git a/roles/custom/matrix-synapse-auto-compressor/tasks/validate_config.yml b/roles/custom/matrix-synapse-auto-compressor/tasks/validate_config.yml index b0dbfab06..ccaf4b42a 100644 --- a/roles/custom/matrix-synapse-auto-compressor/tasks/validate_config.yml +++ b/roles/custom/matrix-synapse-auto-compressor/tasks/validate_config.yml @@ -1,4 +1,20 @@ +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- +- name: (Deprecation) Catch and report renamed matrix-synapse-auto-compressor settings + 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: "item.old in vars" + with_items: + - "old": "matrix_synapse_auto_compressor_calendar" + "new": "matrix_synapse_auto_compressor_schedule" + - "old": "matrix_synapse_auto_compressor_container_image_name_prefix" + "new": "matrix_synapse_auto_compressor_container_image_registry_prefix" - name: Fail if required matrix-synapse-auto-compressor settings not defined ansible.builtin.fail: diff --git a/roles/custom/matrix-synapse-auto-compressor/templates/env.j2 b/roles/custom/matrix-synapse-auto-compressor/templates/env.j2 index 85f18066d..85b0d20cd 100644 --- a/roles/custom/matrix-synapse-auto-compressor/templates/env.j2 +++ b/roles/custom/matrix-synapse-auto-compressor/templates/env.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + POSTGRES_LOCATION={{ matrix_synapse_auto_compressor_environment_variable_postgres_location }} # PG-prefixed variables below are for the matrix-synapse-auto-compressor-fix.sh script diff --git a/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor-fix.sh.j2.license b/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor-fix.sh.j2.license new file mode 100644 index 000000000..b1840694f --- /dev/null +++ b/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor-fix.sh.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.service.j2 b/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.service.j2 index 842f33670..486579f8a 100644 --- a/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.service.j2 +++ b/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.service.j2 @@ -13,7 +13,7 @@ DefaultDependencies=no [Service] Type=oneshot 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-synapse-auto-compressor 2>/dev/null || true' +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-synapse-auto-compressor 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-synapse-auto-compressor 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} {{ matrix_synapse_auto_compressor_base_path }}/matrix-synapse-auto-compressor-fix.sh @@ -39,7 +39,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-synapse-auto-compressor -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-synapse-auto-compressor 2>/dev/null || true' +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-synapse-auto-compressor 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-synapse-auto-compressor 2>/dev/null || true' SyslogIdentifier=matrix-synapse-auto-compressor diff --git a/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.service.j2.license b/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.service.j2.license new file mode 100644 index 000000000..f86013a08 --- /dev/null +++ b/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2023 - 2025 Nikita Chernyi +SPDX-FileCopyrightText: 2023 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.timer.j2 b/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.timer.j2 index 1d7b16d33..9425b2841 100644 --- a/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.timer.j2 +++ b/roles/custom/matrix-synapse-auto-compressor/templates/matrix-synapse-auto-compressor.timer.j2 @@ -1,9 +1,17 @@ +{# +SPDX-FileCopyrightText: 2023 Nikita Chernyi +SPDX-FileCopyrightText: 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + [Unit] Description=Synapse State Auto Compressor Timer [Timer] Unit=matrix-synapse-auto-compressor.service -OnCalendar={{ matrix_synapse_auto_compressor_calendar }} +OnCalendar={{ matrix_synapse_auto_compressor_schedule }} +RandomizedDelaySec={{ matrix_synapse_auto_compressor_schedule_randomized_delay_sec }} [Install] WantedBy=timers.target diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/defaults/main.yml b/roles/custom/matrix-synapse-reverse-proxy-companion/defaults/main.yml index 192ece0a2..4caa634be 100644 --- a/roles/custom/matrix-synapse-reverse-proxy-companion/defaults/main.yml +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/defaults/main.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Dan Arnfield +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Charles Wright +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Michael Hollister +# SPDX-FileCopyrightText: 2024 - 2025 Catalan Lover +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-synapse-reverse-proxy-companion is a role which brings up a containerized nginx webserver which helps with reverse-proxying to Synapse when workers are enabled. @@ -13,7 +24,7 @@ matrix_synapse_reverse_proxy_companion_enabled: true # renovate: datasource=docker depName=nginx -matrix_synapse_reverse_proxy_companion_version: 1.27.3-alpine +matrix_synapse_reverse_proxy_companion_version: 1.27.4-alpine matrix_synapse_reverse_proxy_companion_base_path: "{{ matrix_synapse_base_path }}/reverse-proxy-companion" matrix_synapse_reverse_proxy_companion_confd_path: "{{ matrix_synapse_reverse_proxy_companion_base_path }}/conf.d" @@ -30,7 +41,11 @@ matrix_synapse_reverse_proxy_companion_systemd_wanted_services_list: ['matrix-sy # We use an official nginx image, which we fix-up to run unprivileged. # An alternative would be an `nginxinc/nginx-unprivileged` image, but # that is frequently out of date. -matrix_synapse_reverse_proxy_companion_container_image: "{{ matrix_container_global_registry_prefix }}nginx:{{ matrix_synapse_reverse_proxy_companion_version }}" +matrix_synapse_reverse_proxy_companion_container_image: "{{ matrix_synapse_reverse_proxy_companion_container_image_registry_prefix }}nginx:{{ matrix_synapse_reverse_proxy_companion_container_image_tag }}" +matrix_synapse_reverse_proxy_companion_container_image_registry_prefix: "{{ matrix_synapse_reverse_proxy_companion_container_image_registry_prefix_upstream }}" +matrix_synapse_reverse_proxy_companion_container_image_registry_prefix_upstream: "{{ matrix_synapse_reverse_proxy_companion_container_image_registry_prefix_upstream_default }}" +matrix_synapse_reverse_proxy_companion_container_image_registry_prefix_upstream_default: "docker.io/" +matrix_synapse_reverse_proxy_companion_container_image_tag: "{{ matrix_synapse_reverse_proxy_companion_version }}" matrix_synapse_reverse_proxy_companion_container_image_force_pull: "{{ matrix_synapse_reverse_proxy_companion_container_image.endswith(':latest') }}" matrix_synapse_reverse_proxy_companion_container_network: "" @@ -105,6 +120,14 @@ matrix_synapse_reverse_proxy_companion_container_labels_public_client_synapse_ad matrix_synapse_reverse_proxy_companion_container_labels_public_client_synapse_admin_api_traefik_tls: "{{ matrix_synapse_reverse_proxy_companion_container_labels_public_client_synapse_admin_api_traefik_entrypoints != 'web' }}" matrix_synapse_reverse_proxy_companion_container_labels_public_client_synapse_admin_api_traefik_tls_certResolver: "{{ matrix_synapse_reverse_proxy_companion_container_labels_traefik_tls_certResolver }}" # noqa var-naming +# Controls whether labels will be added that expose the /_synapse/admin paths on the internal Traefik entrypoint. +# This is similar to `matrix_synapse_container_labels_public_client_api_enabled`, but the entrypoint and intent is different. +matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_enabled: false +matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_path_prefix: "{{ matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_path_prefix }}" +matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_rule: "PathPrefix(`{{ matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_path_prefix }}`)" +matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_priority: 0 +matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_entrypoints: "" + # Controls whether labels will be added that expose the Server-Server API (Federation API). matrix_synapse_reverse_proxy_companion_container_labels_public_federation_api_enabled: "{{ matrix_synapse_reverse_proxy_companion_federation_api_enabled }}" matrix_synapse_reverse_proxy_companion_container_labels_public_federation_api_traefik_hostname: "{{ matrix_synapse_reverse_proxy_companion_container_labels_traefik_hostname }}" @@ -199,14 +222,26 @@ matrix_synapse_reverse_proxy_companion_hostname: "matrix-synapse-reverse-proxy-c # matrix_synapse_reverse_proxy_companion_client_api_addr specifies the address where the Client-Server API is matrix_synapse_reverse_proxy_companion_client_api_addr: 'matrix-synapse:{{ matrix_synapse_container_client_api_port }}' + +# The maximum body size for client requests to any of the endpoints on the Client-Server API. # This needs to be equal or higher than the maximum upload size accepted by Synapse. -matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb: 50 +matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb: 100 + +# The buffer size for client requests to any of the endpoints on the Client-Server API. +matrix_synapse_reverse_proxy_companion_client_api_client_body_buffer_size_mb: "{{ matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb }}" # matrix_synapse_reverse_proxy_companion_federation_api_enabled specifies whether reverse proxying for the Federation (Server-Server) API should be done matrix_synapse_reverse_proxy_companion_federation_api_enabled: true # matrix_synapse_reverse_proxy_companion_federation_api_addr specifies the address where the Federation (Server-Server) API is matrix_synapse_reverse_proxy_companion_federation_api_addr: 'matrix-synapse:{{ matrix_synapse_container_federation_api_plain_port }}' -matrix_synapse_reverse_proxy_companion_federation_api_client_max_body_size_mb: "{{ (matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb | int) * 3 }}" + +# The maximum body size for client requests to any of the endpoints on the Federation API. +# We auto-calculate this based on the Client-Server API's maximum body size, but use a minimum value to ensure we don't go to low. +matrix_synapse_reverse_proxy_companion_federation_api_client_max_body_size_mb: "{{ [matrix_synapse_reverse_proxy_companion_federation_api_client_max_body_size_mb_minimum, (matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb | int) * 3] | max }}" +matrix_synapse_reverse_proxy_companion_federation_api_client_max_body_size_mb_minimum: 100 + +# The buffer size for client requests to any of the endpoints on the Federation API. +matrix_synapse_reverse_proxy_companion_federation_api_client_body_buffer_size_mb: "{{ matrix_synapse_reverse_proxy_companion_federation_api_client_max_body_size_mb }}" # A list of strings containing additional configuration blocks to add to the nginx vhost handling the Synapse Client-Server API matrix_synapse_reverse_proxy_companion_synapse_client_api_additional_server_configuration_blocks: [] diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/main.yml b/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/main.yml index e4149cbb3..bd8c3f680 100644 --- a/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/main.yml +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/setup_install.yml b/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/setup_install.yml index edfa7c212..34ab589d8 100644 --- a/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/setup_install.yml +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/setup_install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-synapse-reverse-proxy-companion paths exist diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/setup_uninstall.yml b/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/setup_uninstall.yml index 7b820b35b..ff0686345 100644 --- a/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-synapse-reverse-proxy-companion service diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/validate_config.yml b/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/validate_config.yml index 4da323182..429c12ed2 100644 --- a/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/validate_config.yml +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/tasks/validate_config.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-synapse-reverse-proxy-companion settings not defined @@ -17,5 +21,7 @@ - {'name': 'matrix_synapse_reverse_proxy_companion_container_labels_public_federation_api_traefik_entrypoints', when: "{{ matrix_synapse_reverse_proxy_companion_container_labels_public_federation_api_enabled }}"} - {'name': 'matrix_synapse_reverse_proxy_companion_container_labels_internal_client_api_traefik_entrypoints', when: "{{ matrix_synapse_reverse_proxy_companion_container_labels_internal_client_api_enabled }}"} + - {'name': 'matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_entrypoints', when: "{{ matrix_synapse_container_labels_internal_client_synapse_admin_api_enabled }}"} + - {'name': 'matrix_synapse_reverse_proxy_companion_container_labels_traefik_compression_middleware_name', when: "{{ matrix_synapse_reverse_proxy_companion_container_labels_traefik_compression_middleware_enabled }}"} diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/labels.j2 b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/labels.j2 index 5120b10e8..642e9e9f8 100644 --- a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/labels.j2 +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 - 2025 Catalan Lover + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_synapse_reverse_proxy_companion_container_labels_traefik_enabled %} traefik.enable=true @@ -149,6 +156,29 @@ traefik.http.routers.matrix-synapse-reverse-proxy-companion-public-client-synaps ############################################################ {% endif %} +{% if matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_enabled %} +############################################################ +# # +# Internal Synapse Admin API (/_synapse/admin) # +# # +############################################################ + +traefik.http.routers.matrix-synapse-reverse-proxy-companion-internal-client-synapse-admin-api.rule={{ matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_rule }} + +{% if matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_priority | int > 0 %} +traefik.http.routers.matrix-synapse-reverse-proxy-companion-public-client-synapse-admin-api.priority={{ matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_priority }} +{% endif %} + + +traefik.http.routers.matrix-synapse-reverse-proxy-companion-internal-client-synapse-admin-api.service=matrix-synapse-reverse-proxy-companion-client-api +traefik.http.routers.matrix-synapse-reverse-proxy-companion-internal-client-synapse-admin-api.entrypoints={{ matrix_synapse_reverse_proxy_companion_container_labels_internal_client_synapse_admin_api_traefik_entrypoints }} + +############################################################ +# # +# /Internal Synapse Admin API (/_synapse/admin) # +# # +############################################################ +{% endif %} {% if matrix_synapse_reverse_proxy_companion_container_labels_public_federation_api_enabled %} ############################################################ diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/matrix-synapse-reverse-proxy-companion.conf.j2 b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/matrix-synapse-reverse-proxy-companion.conf.j2 index d278267dc..46dbb010e 100644 --- a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/matrix-synapse-reverse-proxy-companion.conf.j2 +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/matrix-synapse-reverse-proxy-companion.conf.j2 @@ -16,10 +16,18 @@ {% macro render_worker_upstream(name, workers, load_balance) %} {% if workers | length > 0 %} upstream {{ name }} { + {# + We need to use a zone so that the upstream is stored in shared memory, + otherwise we can't use `resolve` below, as reported by nginx: + > resolving names at run time requires upstream ".." in ... to be in shared memory + #} + zone {{ name }} 64k; + {{ load_balance }} keepalive {{ ((workers | length) * 2) | string }}; + resolver {{ matrix_synapse_reverse_proxy_companion_http_level_resolver }} valid=5s; {% for worker in workers %} - server "{{ worker.name }}:{{ worker.port }}"; + server "{{ worker.name }}:{{ worker.port }}" resolve; {% endfor %} } {% endif %} @@ -29,7 +37,6 @@ {% for location in locations %} location ~ {{ location }} { proxy_pass http://{{ upstream_name }}$request_uri; - proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Connection ""; } @@ -91,35 +98,30 @@ server { server_tokens off; root /dev/null; + client_max_body_size {{ matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb }}M; + client_body_buffer_size {{ matrix_synapse_reverse_proxy_companion_client_api_client_body_buffer_size_mb }}M; + + proxy_buffering on; + proxy_max_temp_file_size 0; + proxy_set_header Host $host; + {% if matrix_synapse_reverse_proxy_companion_synapse_workers_enabled %} - # Client-server overrides -- These locations must go to the main Synapse process + # Client-server overrides — These locations must go to the main Synapse process location ~ {{ matrix_synapse_reverse_proxy_companion_client_server_main_override_locations_regex }} { {# FIXME: This block was copied from the main Synapse fallback below. It would be better to have it in one place and avoid duplication. #} {# Use the embedded DNS resolver in Docker containers to discover the service #} resolver {{ matrix_synapse_reverse_proxy_companion_http_level_resolver }} valid=5s; set $backend "{{ matrix_synapse_reverse_proxy_companion_client_api_addr }}"; proxy_pass http://$backend; - - proxy_set_header Host $host; - - client_body_buffer_size 25M; - client_max_body_size {{ matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb }}M; - proxy_max_temp_file_size 0; } - # Client-server SSO overrides -- These locations must go to the main Synapse process + # Client-server SSO overrides — These locations must go to the main Synapse process location ~ {{ matrix_synapse_reverse_proxy_companion_client_server_sso_override_locations_regex }} { {# FIXME: This block was copied from the main Synapse fallback below. It would be better to have it in one place and avoid duplication. #} {# Use the embedded DNS resolver in Docker containers to discover the service #} resolver {{ matrix_synapse_reverse_proxy_companion_http_level_resolver }} valid=5s; set $backend "{{ matrix_synapse_reverse_proxy_companion_client_api_addr }}"; proxy_pass http://$backend; - - proxy_set_header Host $host; - - client_body_buffer_size 25M; - client_max_body_size {{ matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb }}M; - proxy_max_temp_file_size 0; } # QR code login (`rendezvous`) locations need to go to the same Synapse process. @@ -131,12 +133,6 @@ server { resolver {{ matrix_synapse_reverse_proxy_companion_http_level_resolver }} valid=5s; set $backend "{{ matrix_synapse_reverse_proxy_companion_client_api_addr }}"; proxy_pass http://$backend; - - proxy_set_header Host $host; - - client_body_buffer_size 25M; - client_max_body_size {{ matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb }}M; - proxy_max_temp_file_size 0; } {# Workers redirects BEGIN #} @@ -197,14 +193,8 @@ server { {% for location in matrix_synapse_reverse_proxy_companion_synapse_media_repository_locations %} location ~ {{ location }} { proxy_pass http://media_repository_workers_upstream$request_uri; - proxy_set_header Host $host; - - client_body_buffer_size 25M; - client_max_body_size {{ matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb }}M; - proxy_max_temp_file_size 0; {% if matrix_synapse_reverse_proxy_companion_synapse_cache_enabled %} - proxy_buffering on; proxy_cache {{ matrix_synapse_reverse_proxy_companion_synapse_cache_keys_zone_name }}; proxy_cache_valid any {{ matrix_synapse_reverse_proxy_companion_synapse_cache_proxy_cache_valid_time }}; proxy_force_ranges on; @@ -231,12 +221,6 @@ server { resolver {{ matrix_synapse_reverse_proxy_companion_http_level_resolver }} valid=5s; set $backend "{{ matrix_synapse_reverse_proxy_companion_client_api_addr }}"; proxy_pass http://$backend; - - proxy_set_header Host $host; - - client_body_buffer_size 25M; - client_max_body_size {{ matrix_synapse_reverse_proxy_companion_client_api_client_max_body_size_mb }}M; - proxy_max_temp_file_size 0; } } @@ -246,23 +230,23 @@ server { server_name {{ matrix_synapse_reverse_proxy_companion_hostname }}; server_tokens off; - root /dev/null; + client_max_body_size {{ matrix_synapse_reverse_proxy_companion_federation_api_client_max_body_size_mb }}M; + client_body_buffer_size {{ matrix_synapse_reverse_proxy_companion_federation_api_client_body_buffer_size_mb }}M; + + proxy_buffering on; + proxy_max_temp_file_size 0; + proxy_set_header Host $host; + {% if matrix_synapse_reverse_proxy_companion_synapse_workers_enabled %} - # Federation overrides -- These locations must go to the main Synapse process + # Federation overrides — These locations must go to the main Synapse process location ~ {{ matrix_synapse_reverse_proxy_companion_federation_override_locations_regex }} { {# FIXME: This block was copied from the fallback location below. It would be better to have it in one place and avoid duplication. #} {# Use the embedded DNS resolver in Docker containers to discover the service #} resolver {{ matrix_synapse_reverse_proxy_companion_http_level_resolver }} valid=5s; set $backend "{{ matrix_synapse_reverse_proxy_companion_federation_api_addr }}"; proxy_pass http://$backend; - - proxy_set_header Host $host; - - client_body_buffer_size 25M; - client_max_body_size {{ matrix_synapse_reverse_proxy_companion_federation_api_client_max_body_size_mb }}M; - proxy_max_temp_file_size 0; } {% if room_workers | length > 0 %} @@ -280,11 +264,6 @@ server { {% for location in matrix_synapse_reverse_proxy_companion_synapse_media_repository_locations %} location ~ {{ location }} { proxy_pass http://media_repository_workers_upstream$request_uri; - proxy_set_header Host $host; - - client_body_buffer_size 25M; - client_max_body_size {{ matrix_synapse_reverse_proxy_companion_federation_api_client_max_body_size_mb }}M; - proxy_max_temp_file_size 0; {% if matrix_synapse_reverse_proxy_companion_synapse_cache_enabled %} proxy_buffering on; @@ -321,12 +300,6 @@ server { resolver {{ matrix_synapse_reverse_proxy_companion_http_level_resolver }} valid=5s; set $backend "{{ matrix_synapse_reverse_proxy_companion_federation_api_addr }}"; proxy_pass http://$backend; - - proxy_set_header Host $host; - - client_body_buffer_size 25M; - client_max_body_size {{ matrix_synapse_reverse_proxy_companion_federation_api_client_max_body_size_mb }}M; - proxy_max_temp_file_size 0; } } {% endif %} diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/matrix-synapse-reverse-proxy-companion.conf.j2.license b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/matrix-synapse-reverse-proxy-companion.conf.j2.license new file mode 100644 index 000000000..2124bb25d --- /dev/null +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/matrix-synapse-reverse-proxy-companion.conf.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Charles Wright +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/nginx-http.conf.j2.license b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/nginx-http.conf.j2.license new file mode 100644 index 000000000..7b1e56adc --- /dev/null +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/conf.d/nginx-http.conf.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/nginx.conf.j2.license b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/nginx.conf.j2.license new file mode 100644 index 000000000..7f7a5e8fa --- /dev/null +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/nginx/nginx.conf.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/systemd/matrix-synapse-reverse-proxy-companion.service.j2 b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/systemd/matrix-synapse-reverse-proxy-companion.service.j2 index 3e1732369..0a2434061 100755 --- a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/systemd/matrix-synapse-reverse-proxy-companion.service.j2 +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/systemd/matrix-synapse-reverse-proxy-companion.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-synapse-reverse-proxy-companion 2>/dev/null || true' +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-synapse-reverse-proxy-companion 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-synapse-reverse-proxy-companion 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -48,7 +48,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-synapse-reverse-proxy-companion -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-synapse-reverse-proxy-companion 2>/dev/null || true' +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-synapse-reverse-proxy-companion 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-synapse-reverse-proxy-companion 2>/dev/null || true' ExecReload={{ devture_systemd_docker_base_host_command_docker }} exec matrix-synapse-reverse-proxy-companion /usr/sbin/nginx -s reload Restart=always diff --git a/roles/custom/matrix-synapse-reverse-proxy-companion/templates/systemd/matrix-synapse-reverse-proxy-companion.service.j2.license b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/systemd/matrix-synapse-reverse-proxy-companion.service.j2.license new file mode 100644 index 000000000..c3e289cc7 --- /dev/null +++ b/roles/custom/matrix-synapse-reverse-proxy-companion/templates/systemd/matrix-synapse-reverse-proxy-companion.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Michael Hollister + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse-usage-exporter/defaults/main.yml b/roles/custom/matrix-synapse-usage-exporter/defaults/main.yml index 71f7b7423..b4256d3bc 100644 --- a/roles/custom/matrix-synapse-usage-exporter/defaults/main.yml +++ b/roles/custom/matrix-synapse-usage-exporter/defaults/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Michael Hollister +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Synapse Usage Exporter @@ -21,8 +27,10 @@ matrix_synapse_usage_exporter_container_image_self_build: true matrix_synapse_usage_exporter_container_image_self_build_repo: "https://github.com/loelkes/synapse-usage-exporter.git" matrix_synapse_usage_exporter_container_image_path: "loelkes/synapse-usage-exporter" -matrix_synapse_usage_exporter_container_image: "{{ matrix_synapse_usage_exporter_container_image_name_prefix }}{{ matrix_synapse_usage_exporter_container_image_path }}:{{ matrix_synapse_usage_exporter_container_image_tag }}" -matrix_synapse_usage_exporter_container_image_name_prefix: "{{ 'localhost/' if matrix_synapse_usage_exporter_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_synapse_usage_exporter_container_image: "{{ matrix_synapse_usage_exporter_container_image_registry_prefix }}{{ matrix_synapse_usage_exporter_container_image_path }}:{{ matrix_synapse_usage_exporter_container_image_tag }}" +matrix_synapse_usage_exporter_container_image_registry_prefix: "{{ 'localhost/' if matrix_synapse_usage_exporter_container_image_self_build else matrix_synapse_usage_exporter_container_image_registry_prefix_upstream }}" +matrix_synapse_usage_exporter_container_image_registry_prefix_upstream: "{{ matrix_synapse_usage_exporter_container_image_registry_prefix_upstream_default }}" +matrix_synapse_usage_exporter_container_image_registry_prefix_upstream_default: "docker.io/" matrix_synapse_usage_exporter_container_image_tag: "{{ 'main' if matrix_synapse_usage_exporter_container_image_self_build else 'latest' }}" matrix_synapse_usage_exporter_container_image_force_pull: "{{ matrix_synapse_usage_exporter_container_image.endswith(':latest') }}" diff --git a/roles/custom/matrix-synapse-usage-exporter/tasks/main.yml b/roles/custom/matrix-synapse-usage-exporter/tasks/main.yml index 0ac9c1f50..892dfac01 100644 --- a/roles/custom/matrix-synapse-usage-exporter/tasks/main.yml +++ b/roles/custom/matrix-synapse-usage-exporter/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 Michael Hollister +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: @@ -6,6 +11,9 @@ - install-all - install-synapse-usage-exporter block: + - when: matrix_synapse_usage_exporter_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" + - when: matrix_synapse_usage_exporter_enabled | bool ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" diff --git a/roles/custom/matrix-synapse-usage-exporter/tasks/setup_install.yml b/roles/custom/matrix-synapse-usage-exporter/tasks/setup_install.yml index 72cdbd37c..591e377e3 100644 --- a/roles/custom/matrix-synapse-usage-exporter/tasks/setup_install.yml +++ b/roles/custom/matrix-synapse-usage-exporter/tasks/setup_install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Michael Hollister +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure synapse-usage-exporter paths exist diff --git a/roles/custom/matrix-synapse-usage-exporter/tasks/setup_uninstall.yml b/roles/custom/matrix-synapse-usage-exporter/tasks/setup_uninstall.yml index 1b1492bb4..bf085df0e 100644 --- a/roles/custom/matrix-synapse-usage-exporter/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-synapse-usage-exporter/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Michael Hollister +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of synapse-usage-exporter service diff --git a/roles/custom/matrix-synapse-usage-exporter/tasks/validate_config.yml b/roles/custom/matrix-synapse-usage-exporter/tasks/validate_config.yml new file mode 100644 index 000000000..c6fa07e23 --- /dev/null +++ b/roles/custom/matrix-synapse-usage-exporter/tasks/validate_config.yml @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: (Deprecation) Catch and report renamed matrix-synapse-usage-exporter settings + 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: "item.old in vars" + with_items: + - {'old': 'matrix_synapse_usage_exporter_docker_image_name_prefix', 'new': 'matrix_synapse_usage_exporter_container_image_registry_prefix'} diff --git a/roles/custom/matrix-synapse-usage-exporter/templates/env.j2 b/roles/custom/matrix-synapse-usage-exporter/templates/env.j2 index e3f1e814d..0420d358a 100644 --- a/roles/custom/matrix-synapse-usage-exporter/templates/env.j2 +++ b/roles/custom/matrix-synapse-usage-exporter/templates/env.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Michael Hollister + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + PROMETHEUS_MULTIPROC_DIR=/tmp/prometheus WERKZEUG_LOG_LEVEL=INFO APP_LOG_LEVEL=INFO diff --git a/roles/custom/matrix-synapse-usage-exporter/templates/grafana/synapse-usage-exporter.json.license b/roles/custom/matrix-synapse-usage-exporter/templates/grafana/synapse-usage-exporter.json.license new file mode 100644 index 000000000..2265e3041 --- /dev/null +++ b/roles/custom/matrix-synapse-usage-exporter/templates/grafana/synapse-usage-exporter.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 Michael Hollister + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse-usage-exporter/templates/labels.j2 b/roles/custom/matrix-synapse-usage-exporter/templates/labels.j2 index 7811c3372..50c3ca82f 100755 --- a/roles/custom/matrix-synapse-usage-exporter/templates/labels.j2 +++ b/roles/custom/matrix-synapse-usage-exporter/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Michael Hollister + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_synapse_usage_exporter_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-synapse-usage-exporter/templates/systemd/matrix-synapse-usage-exporter.service.j2 b/roles/custom/matrix-synapse-usage-exporter/templates/systemd/matrix-synapse-usage-exporter.service.j2 index da09078c3..1b560dc9a 100644 --- a/roles/custom/matrix-synapse-usage-exporter/templates/systemd/matrix-synapse-usage-exporter.service.j2 +++ b/roles/custom/matrix-synapse-usage-exporter/templates/systemd/matrix-synapse-usage-exporter.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_synapse_usage_exporter_identifier }} 2>/dev/null || true' +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_synapse_usage_exporter_identifier }} 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_synapse_usage_exporter_identifier }} 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -36,7 +36,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach {{ matrix_synapse_usage_exporter_identifier }} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_synapse_usage_exporter_identifier }} 2>/dev/null || true' +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_synapse_usage_exporter_identifier }} 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_synapse_usage_exporter_identifier }} 2>/dev/null || true' ExecReload={{ devture_systemd_docker_base_host_command_docker }} exec {{ matrix_synapse_usage_exporter_identifier }} /bin/sh -c 'kill -HUP 1' Restart=always diff --git a/roles/custom/matrix-synapse-usage-exporter/templates/systemd/matrix-synapse-usage-exporter.service.j2.license b/roles/custom/matrix-synapse-usage-exporter/templates/systemd/matrix-synapse-usage-exporter.service.j2.license new file mode 100644 index 000000000..eceecc820 --- /dev/null +++ b/roles/custom/matrix-synapse-usage-exporter/templates/systemd/matrix-synapse-usage-exporter.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2024 Michael Hollister +SPDX-FileCopyrightText: 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/defaults/main.yml b/roles/custom/matrix-synapse/defaults/main.yml index b45381c56..8250c0c64 100644 --- a/roles/custom/matrix-synapse/defaults/main.yml +++ b/roles/custom/matrix-synapse/defaults/main.yml @@ -16,7 +16,7 @@ matrix_synapse_enabled: true matrix_synapse_github_org_and_repo: element-hq/synapse # renovate: datasource=docker depName=ghcr.io/element-hq/synapse -matrix_synapse_version: v1.122.0 +matrix_synapse_version: v1.128.0 matrix_synapse_username: '' matrix_synapse_uid: '' @@ -84,6 +84,8 @@ matrix_synapse_container_image_customizations_templates_git_repository_keyscan_h # for building your customized Synapse image based on the original (upstream) image (`matrix_synapse_docker_image`). # A `FROM …` clause is included automatically so you don't have to. # +# For this to take effect, you need to enable customizations (`matrix_synapse_container_image_customizations_enabled: true`). +# # Example: # matrix_synapse_container_image_customizations_dockerfile_body_custom: | # RUN echo 'This is a custom step for building the customized Docker image for Synapse.' @@ -91,12 +93,13 @@ matrix_synapse_container_image_customizations_templates_git_repository_keyscan_h # RUN echo 'You do NOT need to include a FROM clause yourself.' matrix_synapse_container_image_customizations_dockerfile_body_custom: '' -matrix_synapse_docker_image: "{{ matrix_synapse_docker_image_name_prefix }}{{ matrix_synapse_docker_image_name }}:{{ matrix_synapse_docker_image_tag }}" -matrix_synapse_docker_image_name_prefix: "{{ 'localhost/' if matrix_synapse_container_image_self_build else matrix_synapse_docker_image_registry_prefix }}" +matrix_synapse_docker_image: "{{ matrix_synapse_docker_image_registry_prefix }}{{ matrix_synapse_docker_image_name }}:{{ matrix_synapse_docker_image_tag }}" matrix_synapse_docker_image_name: "{{ matrix_synapse_github_org_and_repo }}" matrix_synapse_docker_image_tag: "{{ matrix_synapse_version }}" matrix_synapse_docker_image_force_pull: "{{ matrix_synapse_docker_image.endswith(':latest') }}" -matrix_synapse_docker_image_registry_prefix: ghcr.io/ +matrix_synapse_docker_image_registry_prefix: "{{ 'localhost/' if matrix_synapse_container_image_self_build else matrix_synapse_docker_image_registry_prefix_upstream }}" +matrix_synapse_docker_image_registry_prefix_upstream: "{{ matrix_synapse_docker_image_registry_prefix_upstream_default }}" +matrix_synapse_docker_image_registry_prefix_upstream_default: "ghcr.io/" # matrix_synapse_docker_image_customized is the name of the locally built Synapse image # which adds various customizations on top of the original (upstream) Synapse image. @@ -265,6 +268,16 @@ matrix_synapse_container_labels_public_client_synapse_admin_api_traefik_entrypoi matrix_synapse_container_labels_public_client_synapse_admin_api_traefik_tls: "{{ matrix_synapse_container_labels_public_client_synapse_admin_api_traefik_entrypoints != 'web' }}" matrix_synapse_container_labels_public_client_synapse_admin_api_traefik_tls_certResolver: "{{ matrix_synapse_container_labels_traefik_tls_certResolver }}" # noqa var-naming +# Controls whether labels will be added that expose the /_synapse/admin paths on the internal Traefik entrypoint. +# Following these recommendations (https://github.com/element-hq/synapse/blob/master/docs/reverse_proxy.md), by default, we don't. +# Regardless of whether this is enabled, it may or may not take effect due to the value of other variables. + +matrix_synapse_container_labels_internal_client_synapse_admin_api_enabled: false +matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_path_prefix: /_synapse/admin +matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_rule: "PathPrefix(`{{ matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_path_prefix }}`)" +matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_priority: 0 +matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_entrypoints: "" + # Controls whether labels will be added that expose the Server-Server API (Federation API). # Regardless of whether this is enabled, it may or may not take effect due to the value of other variables. # See `matrix_synapse_container_labels_traefik_enabled` or `matrix_synapse_container_labels_matrix_related_labels_enabled` @@ -413,8 +426,8 @@ matrix_synapse_root_log_level: "WARNING" # Rate limits matrix_synapse_rc_message: - per_second: 0.2 - burst_count: 10 + per_second: 0.5 + burst_count: 30 matrix_synapse_rc_registration: per_second: 0.17 @@ -465,6 +478,13 @@ matrix_synapse_rc_federation: matrix_synapse_federation_rr_transactions_per_room_per_second: 50 +# Controls the rate limit for delayed event management. +# +# This is only applied if `matrix_synapse_experimental_features_msc4140_enabled` is set to `true`. +matrix_synapse_rc_delayed_event_mgmt: + per_second: 1 + burst_count: 20 + # Controls the templates directory setting. # # See: @@ -513,7 +533,7 @@ matrix_synapse_allow_public_rooms_without_auth: false # # For private servers, you may wish to forbid it to align yourself with upstream defaults. # However, disabling federation completely (see `matrix_synapse_federation_enabled`) is a better way to make your server private, -# instead of relying on security-by-obscurity -- federating with others, having your public rooms joinable by anyone, +# instead of relying on security-by-obscurity — federating with others, having your public rooms joinable by anyone, # but hiding them and thinking you've secured them. matrix_synapse_allow_public_rooms_over_federation: true @@ -560,6 +580,10 @@ matrix_synapse_registration_requires_token: false # A list of 3PID types which users must supply when registering (possible values: email, msisdn). matrix_synapse_registrations_require_3pid: [] +# Explicitly disable asking for MSISDNs from the registration +# flow (overrides matrix_synapse_registrations_require_3pid if MSISDNs are set as required) +matrix_synapse_disable_msisdn_registration: false + # A list of patterns 3pids must match in order to permit registration, e.g.: # - medium: email # pattern: '.*@example\.com' @@ -748,10 +772,37 @@ matrix_synapse_password_providers_enabled: false # to load message content directly from the homeserver. matrix_synapse_push_include_content: true -# If url previews should be generated. This will cause a request from Synapse to -# URLs shared by users. +# If url previews should be generated. This will cause a request from Synapse to URLs shared by users. +# Also see `matrix_synapse_url_preview_ip_range_blacklist`. matrix_synapse_url_preview_enabled: true +# List of IP address CIDR ranges that the URL preview spider is denied from accessing. +# Note: The value is ignored when an HTTP proxy is in use +# See the comment about this setting in `templates/synapse/homeserver.yaml.j2` for more details. +matrix_synapse_url_preview_ip_range_blacklist: + - '127.0.0.0/8' + - '10.0.0.0/8' + - '172.16.0.0/12' + - '192.168.0.0/16' + - '100.64.0.0/10' + - '192.0.0.0/24' + - '169.254.0.0/16' + - '192.88.99.0/24' + - '198.18.0.0/15' + - '192.0.2.0/24' + - '198.51.100.0/24' + - '203.0.113.0/24' + - '224.0.0.0/4' + - '::1/128' + - 'fe80::/10' + - 'fc00::/7' + - '2001:db8::/32' + - 'ff00::/8' + - 'fec0::/10' + +# List of IP address CIDR ranges that the URL preview spider is allowed to access even if they are specified in `matrix_synapse_url_preview_ip_range_blacklist`. +matrix_synapse_url_preview_ip_range_whitelist: [] + # A list of values for the Accept-Language HTTP header used when downloading webpages during URL preview generation matrix_url_preview_accept_language: ['en-US', 'en'] @@ -1115,12 +1166,13 @@ matrix_synapse_redis_host: "" matrix_synapse_redis_port: 6379 matrix_synapse_redis_password: "" matrix_synapse_redis_dbid: 0 +matrix_synapse_redis_use_tls: false # Controls whether Synapse starts a replication listener necessary for workers. # # If Redis is available, we prefer to use that, instead of talking over Synapse's custom replication protocol. # -# matrix_synapse_replication_listener_enabled: "{{ matrix_synapse_workers_enabled and not redis_enabled }}" +# matrix_synapse_replication_listener_enabled: "{{ matrix_synapse_workers_enabled and matrix_synapse_redis_enabled }}" # We force-enable this listener for now until we debug why communication via Redis fails. matrix_synapse_replication_listener_enabled: true @@ -1168,6 +1220,27 @@ matrix_synapse_email_invite_client_location: "https://app.element.io" # ################################################################################ +# Controls whether to enable the "send typing, presence and receipts to appservices" experimental feature. +# +# See: +# - https://github.com/matrix-org/matrix-spec-proposals/pull/2409 +# - https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html#running-with-synapse +matrix_synapse_experimental_features_msc2409_to_device_messages_enabled: false + +# Controls whether to enable the "device masquerading" for encrypted appservices experimental feature. +# +# See: +# - https://github.com/matrix-org/matrix-spec-proposals/pull/3202 +# - https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html#running-with-synapse +matrix_synapse_experimental_features_msc3202_device_masquerading_enabled: false + +# Controls whether to enable the "transaction extensions" for encrypted appservices experimental feature. +# +# See: +# - https://github.com/matrix-org/matrix-spec-proposals/pull/3202 +# - https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html#running-with-synapse +matrix_synapse_experimental_features_msc3202_transaction_extensions_enabled: false + # Controls whether to enable the "Next-generation auth for Matrix, based on OAuth 2.0/OIDC" experimental feature. # # See: @@ -1221,6 +1294,46 @@ matrix_synapse_experimental_features_msc4108_enabled: false ################################################################################ +# Controls whether to enable the "room summary API" experimental feature. +# See https://github.com/matrix-org/matrix-spec-proposals/pull/3266 +# Despite being experimental, this feature is mandatory for the next-generation Element X clients, which is why it is enabled by default: +# https://github.com/element-hq/element-x-ios/issues/3713#issuecomment-2620958291 +# If you're worried about the privacy implications of this unauthenticated API, see: +# https://github.com/deepbluev7/matrix-doc/blob/room-summaries/proposals/3266-room-summary.md#client-server-api +# Set this to false if you still want to disable to API for some reason. Note that doing so breaks Element X compatibility though. +matrix_synapse_experimental_features_msc3266_enabled: true + +# Controls whether to enable the "Delayed Events" experimental feature. +# Delayed events are required for proper call (Element Call) participation signalling. +# If disabled it is very likely that you end up with stuck calls in Matrix rooms. +# +# Related to: +# - `matrix_synapse_max_event_delay_duration` +# - `matrix_synapse_rc_delayed_event_mgmt` +# +# See https://github.com/matrix-org/matrix-spec-proposals/pull/4140 +matrix_synapse_experimental_features_msc4140_enabled: false + +# Controls the maximum allowed duration by which sent events can be delayed, as per MSC4140. +# +# See `matrix_synapse_experimental_features_msc4140_enabled`. +matrix_synapse_max_event_delay_duration: 24h + +# Controls whether to enable the MSC4133 experimental feature (Custom profile fields). +# +# This allows clients to set custom profile fields (e.g. User Time Zone in Element Web) +# +# See https://github.com/matrix-org/matrix-spec-proposals/pull/4133 +matrix_synapse_experimental_features_msc4133_enabled: false + +# Controls whether to enable the MSC4222 experimental feature (adding `state_after` to sync v2). +# +# Allow clients to opt-in to a change of the sync v2 API that allows them to correctly track the state of the room. +# This is required by Element Call to track room state reliably. +# +# See https://github.com/matrix-org/matrix-spec-proposals/pull/4222 +matrix_synapse_experimental_features_msc4222_enabled: false + # Enable this to activate the REST auth password provider module. # See: https://github.com/ma1uta/matrix-synapse-rest-password-provider matrix_synapse_ext_password_provider_rest_auth_enabled: false @@ -1269,7 +1382,8 @@ matrix_synapse_ext_spam_checker_synapse_simple_antispam_config_blocked_homeserve # See: https://github.com/matrix-org/mjolnir#synapse-module matrix_synapse_ext_spam_checker_mjolnir_antispam_enabled: false matrix_synapse_ext_spam_checker_mjolnir_antispam_git_repository_url: "https://github.com/matrix-org/mjolnir" -matrix_synapse_ext_spam_checker_mjolnir_antispam_git_version: "v1.6.4" +# renovate: datasource=docker depName=matrixdotorg/mjolnir +matrix_synapse_ext_spam_checker_mjolnir_antispam_git_version: "v1.9.2" matrix_synapse_ext_spam_checker_mjolnir_antispam_config_block_invites: true # Flag messages sent by servers/users in the ban lists as spam. Currently # this means that spammy messages will appear as empty to users. Default @@ -1381,8 +1495,10 @@ matrix_synapse_ext_media_repo_enabled: false matrix_s3_media_store_enabled: false matrix_s3_media_store_custom_endpoint_enabled: false -matrix_s3_goofys_docker_image: "{{ matrix_s3_goofys_docker_image_name_prefix }}ewoutp/goofys:latest" -matrix_s3_goofys_docker_image_name_prefix: "docker.io/" +matrix_s3_goofys_docker_image: "{{ matrix_s3_goofys_docker_image_registry_prefix }}ewoutp/goofys:latest" +matrix_s3_goofys_docker_image_registry_prefix: "{{ matrix_s3_goofys_docker_image_registry_prefix_upstream }}" +matrix_s3_goofys_docker_image_registry_prefix_upstream: "{{ matrix_s3_goofys_docker_image_registry_prefix_upstream_default }}" +matrix_s3_goofys_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_s3_goofys_docker_image_force_pull: "{{ matrix_s3_goofys_docker_image.endswith(':latest') }}" matrix_s3_media_store_custom_endpoint: "your-custom-endpoint" matrix_s3_media_store_bucket_name: "your-bucket-name" @@ -1415,6 +1531,7 @@ matrix_synapse_default_room_version: "10" # Controls whether leaving a room will automatically forget it. # The upstream default is `false`, but we try to make Synapse less wasteful of resources, so we do things differently. +# Also see: `matrix_synapse_forgotten_room_retention_period` matrix_synapse_forget_rooms_on_leave: true # Controls the Synapse `modules` list. @@ -1451,18 +1568,26 @@ matrix_synapse_encryption_enabled_by_default_for_room_type: "off" matrix_synapse_trusted_key_servers: - server_name: "matrix.org" + +# Enable the following to disable the warning that is emitted when the +# matrix_synapse_trusted_key_servers include 'matrix.org'. See above. +matrix_synapse_suppress_key_server_warning: false + matrix_synapse_redaction_retention_period: 7d # Controls how long to keep locally forgotten rooms before purging them from the DB. # Defaults to `null`, meaning it's disabled. +# Also see: `matrix_synapse_forget_rooms_on_leave` # Example value: 28d -matrix_synapse_forgotten_room_retention_period: ~ +matrix_synapse_forgotten_room_retention_period: 28d matrix_synapse_user_ips_max_age: 28d -matrix_synapse_rust_synapse_compress_state_docker_image: "{{ matrix_synapse_rust_synapse_compress_state_docker_image_name_prefix }}mb-saces/rust-synapse-tools:v0.0.1" -matrix_synapse_rust_synapse_compress_state_docker_image_name_prefix: "registry.gitlab.com/" +matrix_synapse_rust_synapse_compress_state_docker_image: "{{ matrix_synapse_rust_synapse_compress_state_docker_image_registry_prefix }}mb-saces/rust-synapse-tools:v0.0.1" +matrix_synapse_rust_synapse_compress_state_docker_image_registry_prefix: "{{ matrix_synapse_rust_synapse_compress_state_docker_image_registry_prefix_upstream }}" +matrix_synapse_rust_synapse_compress_state_docker_image_registry_prefix_upstream: "{{ matrix_synapse_rust_synapse_compress_state_docker_image_registry_prefix_upstream_default }}" +matrix_synapse_rust_synapse_compress_state_docker_image_registry_prefix_upstream_default: "registry.gitlab.com/" matrix_synapse_rust_synapse_compress_state_docker_image_force_pull: "{{ matrix_synapse_rust_synapse_compress_state_docker_image.endswith(':stable') or matrix_synapse_rust_synapse_compress_state_docker_image.endswith(':latest') }}" matrix_synapse_rust_synapse_compress_state_base_path: "{{ matrix_base_data_path }}/rust-synapse-compress-state" diff --git a/roles/custom/matrix-synapse/defaults/main.yml.license b/roles/custom/matrix-synapse/defaults/main.yml.license new file mode 100644 index 000000000..f44030cd8 --- /dev/null +++ b/roles/custom/matrix-synapse/defaults/main.yml.license @@ -0,0 +1,40 @@ +SPDX-FileCopyrightText: 2019 - 2020 Dan Arnfield +SPDX-FileCopyrightText: 2019 - 2022 Aaron Raimist +SPDX-FileCopyrightText: 2019 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Alexander Acevedo +SPDX-FileCopyrightText: 2019 Hugues Morisset +SPDX-FileCopyrightText: 2019 Lee Verberne +SPDX-FileCopyrightText: 2019 Lyubomir Popov +SPDX-FileCopyrightText: 2019 Oleg Fiksel +SPDX-FileCopyrightText: 2019 Sylvia van Os +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2020 Horvath Gergely +SPDX-FileCopyrightText: 2020 Justin Croonenberghs +SPDX-FileCopyrightText: 2020 Marcel Partap +SPDX-FileCopyrightText: 2020 Max Klenk +SPDX-FileCopyrightText: 2020 Paul Tötterman +SPDX-FileCopyrightText: 2021 Ahmad Haghighi +SPDX-FileCopyrightText: 2021 Alejo Diaz +SPDX-FileCopyrightText: 2021 Davy Landman +SPDX-FileCopyrightText: 2021 Janar Juusu +SPDX-FileCopyrightText: 2021 Pablo Montepagano +SPDX-FileCopyrightText: 2021 Toni Spets +SPDX-FileCopyrightText: 2021 boris runakov +SPDX-FileCopyrightText: 2022 - 2023 Cody Wyatt Neiman +SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +SPDX-FileCopyrightText: 2022 Benjamin Castellan +SPDX-FileCopyrightText: 2022 Joe Kappus +SPDX-FileCopyrightText: 2022 Marko Weltzer +SPDX-FileCopyrightText: 2022 Quentin Young +SPDX-FileCopyrightText: 2022 Shaleen Jain +SPDX-FileCopyrightText: 2022 Yan Minagawa +SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +SPDX-FileCopyrightText: 2023 Aeris One +SPDX-FileCopyrightText: 2023 Luke D Iremadze +SPDX-FileCopyrightText: 2023 Samuel Meenzen +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +SPDX-FileCopyrightText: 2024 Charles Wright +SPDX-FileCopyrightText: 2025 Catalan Lover + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/tasks/ext/encryption-disabler/setup_install.yml b/roles/custom/matrix-synapse/tasks/ext/encryption-disabler/setup_install.yml index b8046033b..97ee49673 100644 --- a/roles/custom/matrix-synapse/tasks/ext/encryption-disabler/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/ext/encryption-disabler/setup_install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Download matrix_encryption_disabler diff --git a/roles/custom/matrix-synapse/tasks/ext/encryption-disabler/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/ext/encryption-disabler/setup_uninstall.yml index c223f6e85..d169ad539 100644 --- a/roles/custom/matrix-synapse/tasks/ext/encryption-disabler/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/ext/encryption-disabler/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix_encryption_disabler doesn't exist diff --git a/roles/custom/matrix-synapse/tasks/ext/ldap-auth/setup_install.yml b/roles/custom/matrix-synapse/tasks/ext/ldap-auth/setup_install.yml index 6d4843771..baf0a285a 100644 --- a/roles/custom/matrix-synapse/tasks/ext/ldap-auth/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/ext/ldap-auth/setup_install.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2018 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2018 Thomas vO +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-synapse/tasks/ext/mjolnir-antispam/setup_install.yml b/roles/custom/matrix-synapse/tasks/ext/mjolnir-antispam/setup_install.yml index 0fc2a7506..ea43bb34a 100644 --- a/roles/custom/matrix-synapse/tasks/ext/mjolnir-antispam/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/ext/mjolnir-antispam/setup_install.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure git installed diff --git a/roles/custom/matrix-synapse/tasks/ext/mjolnir-antispam/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/ext/mjolnir-antispam/setup_uninstall.yml index 8211d51ae..67fff39a5 100644 --- a/roles/custom/matrix-synapse/tasks/ext/mjolnir-antispam/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/ext/mjolnir-antispam/setup_uninstall.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure mjolnir-antispam doesn't exist diff --git a/roles/custom/matrix-synapse/tasks/ext/rest-auth/setup_install.yml b/roles/custom/matrix-synapse/tasks/ext/rest-auth/setup_install.yml index 4c59a4b1f..d50a32cd9 100644 --- a/roles/custom/matrix-synapse/tasks/ext/rest-auth/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/ext/rest-auth/setup_install.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2018 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Michael Haak +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if REST Auth endpoint not configured diff --git a/roles/custom/matrix-synapse/tasks/ext/rest-auth/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/ext/rest-auth/setup_uninstall.yml index d95dd1c7c..7c094f847 100644 --- a/roles/custom/matrix-synapse/tasks/ext/rest-auth/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/ext/rest-auth/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2019 - 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-synapse-rest-auth doesn't exist diff --git a/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/setup_install.yml b/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/setup_install.yml index ede73ec9a..d3c7b8610 100644 --- a/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/setup_install.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # We install this into Synapse by making `matrix_synapse_ext_synapse_s3_storage_provider_enabled` influence other variables: diff --git a/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/setup_uninstall.yml index 83e8a0f7d..0301df667 100644 --- a/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-synapse-s3-storage-provider-migrate.service and timer don't exist diff --git a/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/validate_config.yml b/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/validate_config.yml index 406f186dc..b9e84a3d2 100644 --- a/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/validate_config.yml +++ b/roles/custom/matrix-synapse/tasks/ext/s3-storage-provider/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 Luke Moch +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required s3-storage-provider settings not defined ansible.builtin.fail: diff --git a/roles/custom/matrix-synapse/tasks/ext/setup_install.yml b/roles/custom/matrix-synapse/tasks/ext/setup_install.yml index f7be477aa..17bd5670b 100644 --- a/roles/custom/matrix-synapse/tasks/ext/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/ext/setup_install.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2019 Hugues Morisset +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # encryption-disabler diff --git a/roles/custom/matrix-synapse/tasks/ext/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/ext/setup_uninstall.yml index f584f584d..21aa141de 100644 --- a/roles/custom/matrix-synapse/tasks/ext/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/ext/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # encryption-disabler diff --git a/roles/custom/matrix-synapse/tasks/ext/shared-secret-auth/setup_install.yml b/roles/custom/matrix-synapse/tasks/ext/shared-secret-auth/setup_install.yml index ecec3e803..ac09fe46e 100644 --- a/roles/custom/matrix-synapse/tasks/ext/shared-secret-auth/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/ext/shared-secret-auth/setup_install.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Michael Haak +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if Shared Secret Auth secret not set diff --git a/roles/custom/matrix-synapse/tasks/ext/shared-secret-auth/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/ext/shared-secret-auth/setup_uninstall.yml index b2f909443..8bb39dc92 100644 --- a/roles/custom/matrix-synapse/tasks/ext/shared-secret-auth/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/ext/shared-secret-auth/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2019 - 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-synapse-shared-secret-auth doesn't exist diff --git a/roles/custom/matrix-synapse/tasks/ext/synapse-auto-accept-invite/setup_install.yml b/roles/custom/matrix-synapse/tasks/ext/synapse-auto-accept-invite/setup_install.yml index 182d42b03..9bbabdbaf 100644 --- a/roles/custom/matrix-synapse/tasks/ext/synapse-auto-accept-invite/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/ext/synapse-auto-accept-invite/setup_install.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-synapse/tasks/ext/synapse-simple-antispam/setup_install.yml b/roles/custom/matrix-synapse/tasks/ext/synapse-simple-antispam/setup_install.yml index e62c62dfe..8f2b4ac6e 100644 --- a/roles/custom/matrix-synapse/tasks/ext/synapse-simple-antispam/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/ext/synapse-simple-antispam/setup_install.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Michael Haak +# SPDX-FileCopyrightText: 2020 Christian Wolf +# SPDX-FileCopyrightText: 2022 Aaron Raimist +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if Synapse Simple Antispam blocked homeservers is not set diff --git a/roles/custom/matrix-synapse/tasks/ext/synapse-simple-antispam/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/ext/synapse-simple-antispam/setup_uninstall.yml index b1d558aa5..bcfb1d694 100644 --- a/roles/custom/matrix-synapse/tasks/ext/synapse-simple-antispam/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/ext/synapse-simple-antispam/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2019 - 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure synapse-simple-antispam doesn't exist diff --git a/roles/custom/matrix-synapse/tasks/goofys/setup_install.yml b/roles/custom/matrix-synapse/tasks/goofys/setup_install.yml index dd6d3e922..f057bcc48 100644 --- a/roles/custom/matrix-synapse/tasks/goofys/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/goofys/setup_install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.include_role: diff --git a/roles/custom/matrix-synapse/tasks/goofys/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/goofys/setup_uninstall.yml index 252877dee..3c784cfcc 100644 --- a/roles/custom/matrix-synapse/tasks/goofys/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/goofys/setup_uninstall.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2019 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-goofys service diff --git a/roles/custom/matrix-synapse/tasks/import_media_store.yml b/roles/custom/matrix-synapse/tasks/import_media_store.yml index a6c085874..f9757df39 100644 --- a/roles/custom/matrix-synapse/tasks/import_media_store.yml +++ b/roles/custom/matrix-synapse/tasks/import_media_store.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2017 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Jan Christian Grünhage +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Pre-checks diff --git a/roles/custom/matrix-synapse/tasks/import_synapse_sqlite_db.yml b/roles/custom/matrix-synapse/tasks/import_synapse_sqlite_db.yml index 92bd36b42..a8ba6f153 100644 --- a/roles/custom/matrix-synapse/tasks/import_synapse_sqlite_db.yml +++ b/roles/custom/matrix-synapse/tasks/import_synapse_sqlite_db.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if playbook called incorrectly diff --git a/roles/custom/matrix-synapse/tasks/init.yml b/roles/custom/matrix-synapse/tasks/init.yml index 341350a49..cbf204a2f 100644 --- a/roles/custom/matrix-synapse/tasks/init.yml +++ b/roles/custom/matrix-synapse/tasks/init.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2020 Horvath Gergely +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # This validation task is here, not in validate_config.yml, diff --git a/roles/custom/matrix-synapse/tasks/main.yml b/roles/custom/matrix-synapse/tasks/main.yml index 8bdf05e84..01d35eebf 100644 --- a/roles/custom/matrix-synapse/tasks/main.yml +++ b/roles/custom/matrix-synapse/tasks/main.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Lyubomir Popov +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-synapse/tasks/register_user.yml b/roles/custom/matrix-synapse/tasks/register_user.yml index 215409593..55ece72ed 100644 --- a/roles/custom/matrix-synapse/tasks/register_user.yml +++ b/roles/custom/matrix-synapse/tasks/register_user.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2017 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Jan Christian Grünhage +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if playbook called incorrectly diff --git a/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/compress_room.yml b/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/compress_room.yml index 300571059..c7235b0e9 100644 --- a/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/compress_room.yml +++ b/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/compress_room.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Béla Becker +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.debug: diff --git a/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/main.yml b/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/main.yml index efebe6e92..f691a74ba 100644 --- a/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/main.yml +++ b/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/main.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Pre-checks diff --git a/roles/custom/matrix-synapse/tasks/self_check_client_api.yml b/roles/custom/matrix-synapse/tasks/self_check_client_api.yml index 7ec3fb09b..dc0a27814 100644 --- a/roles/custom/matrix-synapse/tasks/self_check_client_api.yml +++ b/roles/custom/matrix-synapse/tasks/self_check_client_api.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2018 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 - 2020 Dan Arnfield +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check Matrix Client API diff --git a/roles/custom/matrix-synapse/tasks/self_check_federation_api.yml b/roles/custom/matrix-synapse/tasks/self_check_federation_api.yml index fde73dae0..d50098eef 100644 --- a/roles/custom/matrix-synapse/tasks/self_check_federation_api.yml +++ b/roles/custom/matrix-synapse/tasks/self_check_federation_api.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2018 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 - 2020 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Lorrin Nelson +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check Matrix Federation API diff --git a/roles/custom/matrix-synapse/tasks/setup_install.yml b/roles/custom/matrix-synapse/tasks/setup_install.yml index a2185da57..d131bd118 100644 --- a/roles/custom/matrix-synapse/tasks/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2018 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 Horvath Gergely +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2020 Max Klenk +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Quentin Young +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Synapse paths exist diff --git a/roles/custom/matrix-synapse/tasks/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/setup_uninstall.yml index 66cda3e7d..c8e24493f 100644 --- a/roles/custom/matrix-synapse/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-synapse/tasks/synapse/setup.yml b/roles/custom/matrix-synapse/tasks/synapse/setup.yml index 80f761e59..19fb2983c 100644 --- a/roles/custom/matrix-synapse/tasks/synapse/setup.yml +++ b/roles/custom/matrix-synapse/tasks/synapse/setup.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2019 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.import_tasks: "{{ role_path }}/tasks/synapse/setup_install.yml" diff --git a/roles/custom/matrix-synapse/tasks/synapse/setup_install.yml b/roles/custom/matrix-synapse/tasks/synapse/setup_install.yml index 1181fd7c8..dcc009050 100644 --- a/roles/custom/matrix-synapse/tasks/synapse/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/synapse/setup_install.yml @@ -1,3 +1,18 @@ +# SPDX-FileCopyrightText: 2018 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Jan Christian Grünhage +# SPDX-FileCopyrightText: 2019 Lyubomir Popov +# SPDX-FileCopyrightText: 2020 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 Horvath Gergely +# 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-License-Identifier: AGPL-3.0-or-later + --- # This will throw a Permission Denied error if already mounted using fuse diff --git a/roles/custom/matrix-synapse/tasks/synapse/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/synapse/setup_uninstall.yml index 6b8ae5a01..4798983c5 100644 --- a/roles/custom/matrix-synapse/tasks/synapse/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/synapse/setup_uninstall.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2019 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-synapse service diff --git a/roles/custom/matrix-synapse/tasks/synapse/workers/init.yml b/roles/custom/matrix-synapse/tasks/synapse/workers/init.yml index 8bf8201a0..2f16215e8 100644 --- a/roles/custom/matrix-synapse/tasks/synapse/workers/init.yml +++ b/roles/custom/matrix-synapse/tasks/synapse/workers/init.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2021 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Michael Hollister +# SPDX-FileCopyrightText: 2024 Charles Wright +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Below is a huge hack for dynamically building a list of workers and finally assigning it to `matrix_synapse_workers_enabled_list`. # diff --git a/roles/custom/matrix-synapse/tasks/synapse/workers/setup_install.yml b/roles/custom/matrix-synapse/tasks/synapse/workers/setup_install.yml index b474be92a..e50df3259 100644 --- a/roles/custom/matrix-synapse/tasks/synapse/workers/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/synapse/workers/setup_install.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2020 - 2021 Marcel Partap +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Determine current worker configs diff --git a/roles/custom/matrix-synapse/tasks/synapse/workers/setup_uninstall.yml b/roles/custom/matrix-synapse/tasks/synapse/workers/setup_uninstall.yml index 2b0d21df4..5677a5a89 100644 --- a/roles/custom/matrix-synapse/tasks/synapse/workers/setup_uninstall.yml +++ b/roles/custom/matrix-synapse/tasks/synapse/workers/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Populate service facts diff --git a/roles/custom/matrix-synapse/tasks/synapse/workers/util/inject_worker.yml b/roles/custom/matrix-synapse/tasks/synapse/workers/util/inject_worker.yml index c52777ebd..9338ce30b 100644 --- a/roles/custom/matrix-synapse/tasks/synapse/workers/util/inject_worker.yml +++ b/roles/custom/matrix-synapse/tasks/synapse/workers/util/inject_worker.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # The tasks below run before `validate_config.yml`. # To avoid failing with a cryptic error message, we'll do validation here. diff --git a/roles/custom/matrix-synapse/tasks/synapse/workers/util/setup_files_for_worker.yml b/roles/custom/matrix-synapse/tasks/synapse/workers/util/setup_files_for_worker.yml index 480ffba02..c09291d4a 100644 --- a/roles/custom/matrix-synapse/tasks/synapse/workers/util/setup_files_for_worker.yml +++ b/roles/custom/matrix-synapse/tasks/synapse/workers/util/setup_files_for_worker.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2024 Michael Hollister +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: diff --git a/roles/custom/matrix-synapse/tasks/update_user_password.yml b/roles/custom/matrix-synapse/tasks/update_user_password.yml index 32d24a154..cd8c44fe0 100644 --- a/roles/custom/matrix-synapse/tasks/update_user_password.yml +++ b/roles/custom/matrix-synapse/tasks/update_user_password.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Lyubomir Popov +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 Christian Wolf +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if playbook called incorrectly diff --git a/roles/custom/matrix-synapse/tasks/validate_config.yml b/roles/custom/matrix-synapse/tasks/validate_config.yml index e1e6fbe27..66f6e0296 100644 --- a/roles/custom/matrix-synapse/tasks/validate_config.yml +++ b/roles/custom/matrix-synapse/tasks/validate_config.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Charles Wright +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required Synapse settings not defined @@ -22,6 +28,7 @@ - {'name': 'matrix_synapse_container_labels_public_client_api_traefik_hostname', when: "{{ matrix_synapse_container_labels_public_client_api_enabled }}"} - {'name': 'matrix_synapse_container_labels_internal_client_api_traefik_entrypoints', when: "{{ matrix_synapse_container_labels_internal_client_api_enabled }}"} + - {'name': 'matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_entrypoints', when: "{{ matrix_synapse_container_labels_internal_client_synapse_admin_api_enabled }}"} - {'name': 'matrix_synapse_container_labels_public_client_synapse_client_api_traefik_hostname', when: "{{ matrix_synapse_container_labels_public_client_synapse_client_api_enabled }}"} - {'name': 'matrix_synapse_container_labels_public_client_synapse_admin_api_traefik_hostname', when: "{{ matrix_synapse_container_labels_public_client_synapse_admin_api_enabled }}"} @@ -41,6 +48,14 @@ - {'name': 'matrix_synapse_container_labels_traefik_compression_middleware_name', when: "{{ matrix_synapse_container_labels_traefik_compression_middleware_enabled }}"} +# If only MSC 4108 is enabled, Synapse fails with: "MSC4108 requires MSC3861 to be enabled" +- name: Fail if Synapse experimental feature QR code login (MSC4108) is enabled while Next-Gen Auth (MSC3861) is not + ansible.builtin.fail: + msg: >- + QR code login (MSC4108) requires Next-Gen Auth (MSC3861) to be enabled or Synapse will fail to start. + Enable `matrix_synapse_experimental_features_msc3861_enabled` when using `matrix_synapse_experimental_features_msc4108_enabled`. + when: "matrix_synapse_experimental_features_msc4108_enabled and not matrix_synapse_experimental_features_msc3861_enabled" + - name: Fail if asking for more than 1 instance of single-instance workers ansible.builtin.fail: msg: >- @@ -66,7 +81,7 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_synapse_email_riot_base_url', 'new': ''} @@ -102,12 +117,15 @@ - {'old': 'matrix_synapse_caches_autotuning_target_cache_memory_usage', 'new': 'matrix_synapse_cache_autotuning_target_cache_memory_usage'} - {'old': 'matrix_synapse_caches_autotuning_min_cache_ttl', 'new': 'matrix_synapse_cache_autotuning_min_cache_ttl'} - {'old': 'matrix_synapse_memtotal_kb', 'new': ''} + - {'old': 'matrix_synapse_docker_image_name_prefix', 'new': 'matrix_synapse_docker_image_registry_prefix'} + - {'old': 'matrix_s3_goofys_docker_image_name_prefix', 'new': 'matrix_s3_goofys_docker_image_registry_prefix'} + - {'old': 'matrix_synapse_rust_synapse_compress_state_docker_image_name_prefix', 'new': 'matrix_synapse_rust_synapse_compress_state_docker_image_registry_prefix'} - name: (Deprecation) Catch and report renamed settings in matrix_synapse_configuration_extension_yaml ansible.builtin.fail: msg: >- Your matrix_synapse_configuration_extension_yaml configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in matrix_synapse_configuration_extension" with_items: - {'old': 'federation_ip_range_blacklist', 'new': 'ip_range_blacklist'} diff --git a/roles/custom/matrix-synapse/templates/goofys/env-goofys.j2.license b/roles/custom/matrix-synapse/templates/goofys/env-goofys.j2.license new file mode 100644 index 000000000..72b378d97 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/goofys/env-goofys.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2018 - 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Alexander Acevedo +SPDX-FileCopyrightText: 2019 Hugues De Keyzer + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/goofys/systemd/matrix-goofys.service.j2 b/roles/custom/matrix-synapse/templates/goofys/systemd/matrix-goofys.service.j2 index 0f7a83620..8459cd723 100644 --- a/roles/custom/matrix-synapse/templates/goofys/systemd/matrix-goofys.service.j2 +++ b/roles/custom/matrix-synapse/templates/goofys/systemd/matrix-goofys.service.j2 @@ -10,7 +10,7 @@ DefaultDependencies=no [Service] Type=simple Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} %n +ExecStartPre=-{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} %n ExecStartPre=-{{ devture_systemd_docker_base_host_command_docker }} rm %n ExecStart={{ devture_systemd_docker_base_host_command_docker }} run --rm --name %n \ @@ -33,7 +33,7 @@ ExecStartPost={{ matrix_host_command_sleep }} 3 TimeoutStartSec=5min ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} stop %n -ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} %n +ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} %n ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} rm %n ExecStop=-{{ matrix_host_command_fusermount }} -u {{ matrix_s3_media_store_path }} Restart=always diff --git a/roles/custom/matrix-synapse/templates/goofys/systemd/matrix-goofys.service.j2.license b/roles/custom/matrix-synapse/templates/goofys/systemd/matrix-goofys.service.j2.license new file mode 100644 index 000000000..cf2001184 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/goofys/systemd/matrix-goofys.service.j2.license @@ -0,0 +1,7 @@ +SPDX-FileCopyrightText: 2018 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Alexander Acevedo +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2024 Jim Myhrberg + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/bin/register-user.j2.license b/roles/custom/matrix-synapse/templates/synapse/bin/register-user.j2.license new file mode 100644 index 000000000..d75acb7c2 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/bin/register-user.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2017 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2019 Julian Foad +SPDX-FileCopyrightText: 2021 boris runakov + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/customizations/Dockerfile.j2 b/roles/custom/matrix-synapse/templates/synapse/customizations/Dockerfile.j2 index d01268a4a..094a63cac 100644 --- a/roles/custom/matrix-synapse/templates/synapse/customizations/Dockerfile.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/customizations/Dockerfile.j2 @@ -1,4 +1,43 @@ #jinja2: lstrip_blocks: "True" +{% if matrix_synapse_container_image_customizations_templates_enabled %} +FROM {{ matrix_synapse_docker_image }} AS templates-builder + +{# +This ugly script below does quite a lot: + - installs git and other dependencies temporarily, just so we could do a shallow-clone + - prepare the SSH config: keyscanning (if enabled), private key (if enabled) + - performs a git shallow clone with just the branch we need + - makes sure the files are owned by the user that will actually run the container later +#} +{% set dependencies = ['git', 'ssh', 'openssh-client'] %} +{% if matrix_synapse_container_image_customizations_templates_git_repository_ssh_private_key %} +RUN echo '{{ matrix_synapse_container_image_customizations_templates_git_repository_ssh_private_key | b64encode }}' | base64 -d > /custom-templates-private-key +RUN chmod 400 /custom-templates-private-key +{% endif %} + +RUN apt-get update && apt-get install --no-install-recommends -y {{ dependencies | join(' ') }} + +{% if matrix_synapse_container_image_customizations_templates_git_repository_keyscan_enabled %} +RUN mkdir ~/.ssh +RUN chmod 700 ~/.ssh +RUN ssh-keyscan -t rsa {{ matrix_synapse_container_image_customizations_templates_git_repository_keyscan_hostname }} >> ~/.ssh/known_hosts +{% endif %} + +RUN {% if matrix_synapse_container_image_customizations_templates_git_repository_ssh_private_key %}GIT_SSH_COMMAND='ssh -i /custom-templates-private-key'{% endif %} git \ + clone \ + --branch={{ matrix_synapse_container_image_customizations_templates_git_repository_branch }} \ + --depth=1 \ + --single-branch \ + --no-tags \ + {{ matrix_synapse_container_image_customizations_templates_git_repository_url }} \ + {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }} + +RUN /bin/sh -c 'cd {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }} && git rev-parse HEAD > git-revision.txt' +RUN rm -rf {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }}/.git + +RUN chown -R {{ matrix_synapse_uid }}:{{ matrix_synapse_gid }} {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }} +{% endif %} + FROM {{ matrix_synapse_docker_image }} {% if matrix_synapse_container_image_customizations_auto_accept_invite_installation_enabled %} @@ -14,46 +53,7 @@ RUN pip install synapse-s3-storage-provider=={{ matrix_synapse_ext_synapse_s3_st {% endif %} {% if matrix_synapse_container_image_customizations_templates_enabled %} -{# -This ugly script below does quite a lot: - - installs git and other dependencies temporarily, just so we could do a shallow-clone - - prepare the SSH config: keyscanning (if enabled), private key (if enabled) - - performs a git shallow clone with just the branch we need - - makes sure the files are owned by the user that will actually run the container later - - removes the `.git` directory to save space, but keeps git revision in `git-revision.txt`, should we need it for debugging - - finally, verifies that the templates path can indeed be found within the base path (sanity check) -#} -{% set dependencies = ['git', 'ssh', 'openssh-client'] %} -RUN \ - {% if matrix_synapse_container_image_customizations_templates_git_repository_ssh_private_key %} - echo '{{ matrix_synapse_container_image_customizations_templates_git_repository_ssh_private_key | b64encode }}' | base64 -d > /custom-templates-private-key && \ - chmod 400 /custom-templates-private-key && \ - {% endif %} - apt-get update && \ - apt-get install --no-install-recommends -y {{ dependencies | join(' ') }} && \ - {% if matrix_synapse_container_image_customizations_templates_git_repository_keyscan_enabled %} - mkdir ~/.ssh && \ - chmod 700 ~/.ssh && \ - ssh-keyscan -t rsa {{ matrix_synapse_container_image_customizations_templates_git_repository_keyscan_hostname }} >> ~/.ssh/known_hosts && \ - {% endif %} - {% if matrix_synapse_container_image_customizations_templates_git_repository_ssh_private_key %}GIT_SSH_COMMAND='ssh -i /custom-templates-private-key'{% endif %} git \ - clone \ - --branch={{ matrix_synapse_container_image_customizations_templates_git_repository_branch }} \ - --depth=1 \ - --single-branch \ - --no-tags \ - {{ matrix_synapse_container_image_customizations_templates_git_repository_url }} \ - {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }} && \ - /bin/sh -c 'cd {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }} && git rev-parse HEAD > git-revision.txt' && \ - rm -rf {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }}/.git && \ - chown -R {{ matrix_synapse_uid }}:{{ matrix_synapse_gid }} {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }} && \ - apt-get autoremove -y {{ dependencies | join(' ') }} && \ - {% if matrix_synapse_container_image_customizations_templates_git_repository_ssh_private_key %} - rm /custom-templates-private-key && \ - {% endif %} - true - -RUN /bin/sh -c 'stat {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }}/{{ matrix_synapse_container_image_customizations_templates_in_container_template_files_relative_path }} || exit 1' +COPY --from=templates-builder {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }} {{ matrix_synapse_container_image_customizations_templates_in_container_base_path }} {% endif %} {{ matrix_synapse_container_image_customizations_dockerfile_body_custom }} diff --git a/roles/custom/matrix-synapse/templates/synapse/customizations/Dockerfile.j2.license b/roles/custom/matrix-synapse/templates/synapse/customizations/Dockerfile.j2.license new file mode 100644 index 000000000..183cfa51b --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/customizations/Dockerfile.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +SPDX-FileCopyrightText: 2024 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/bin/migrate.j2.license b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/bin/migrate.j2.license new file mode 100644 index 000000000..a4cf34b72 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/bin/migrate.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Cody Wyatt Neiman +SPDX-FileCopyrightText: 2024 Tiago Carrondo + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/bin/shell.j2.license b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/bin/shell.j2.license new file mode 100644 index 000000000..939a124be --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/bin/shell.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Tiago Carrondo + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/database.yaml.j2 b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/database.yaml.j2 index ed11645eb..6b9cf159b 100644 --- a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/database.yaml.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/database.yaml.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + user: {{ matrix_synapse_database_user | to_json }} password: {{ matrix_synapse_database_password | to_json }} database: {{ matrix_synapse_database_database | to_json }} diff --git a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/env.j2 b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/env.j2 index e50bf7e54..f9d8cd8f4 100644 --- a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/env.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/env.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2022 - 2023 Cody Wyatt Neiman +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if not matrix_synapse_ext_synapse_s3_storage_provider_config_ec2_instance_profile | bool %} AWS_ACCESS_KEY_ID={{ matrix_synapse_ext_synapse_s3_storage_provider_config_access_key_id }} AWS_SECRET_ACCESS_KEY={{ matrix_synapse_ext_synapse_s3_storage_provider_config_secret_access_key }} diff --git a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/media_storage_provider.yaml.j2 b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/media_storage_provider.yaml.j2 index 97387e55c..988ff9868 100644 --- a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/media_storage_provider.yaml.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/media_storage_provider.yaml.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2022 - 2023 Cody Wyatt Neiman +SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + module: s3_storage_provider.S3StorageProviderBackend store_local: {{ matrix_synapse_ext_synapse_s3_storage_provider_store_local | to_json }} store_remote: {{ matrix_synapse_ext_synapse_s3_storage_provider_store_remote | to_json }} diff --git a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/systemd/matrix-synapse-s3-storage-provider-migrate.service.j2.license b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/systemd/matrix-synapse-s3-storage-provider-migrate.service.j2.license new file mode 100644 index 000000000..7b1e56adc --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/systemd/matrix-synapse-s3-storage-provider-migrate.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/systemd/matrix-synapse-s3-storage-provider-migrate.timer.j2.license b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/systemd/matrix-synapse-s3-storage-provider-migrate.timer.j2.license new file mode 100644 index 000000000..63cfcee34 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/ext/s3-storage-provider/systemd/matrix-synapse-s3-storage-provider-migrate.timer.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2 b/roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2 index 457726774..69e6e0b01 100644 --- a/roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2 @@ -837,7 +837,7 @@ caches: # before reconnecting. Defaults to 0, which means no limit. # # 'allow_unsafe_locale' is an option specific to Postgres. Under the default behavior, Synapse will refuse to -# start if the postgres db is set to a non-C locale. You can override this behavior (which is *not* recommended) +# start if the Postgres db is set to a non-C locale. You can override this behavior (which is *not* recommended) # by setting 'allow_unsafe_locale' to true. Note that doing so may corrupt your database. You can find more information # here: https://matrix-org.github.io/synapse/latest/postgres.html#fixing-incorrect-collate-or-ctype and here: # https://wiki.postgresql.org/wiki/Locale_data_changes @@ -1131,26 +1131,9 @@ url_preview_enabled: {{ matrix_synapse_url_preview_enabled|to_json }} # # Note: The value is ignored when an HTTP proxy is in use # -url_preview_ip_range_blacklist: - - '127.0.0.0/8' - - '10.0.0.0/8' - - '172.16.0.0/12' - - '192.168.0.0/16' - - '100.64.0.0/10' - - '192.0.0.0/24' - - '169.254.0.0/16' - - '192.88.99.0/24' - - '198.18.0.0/15' - - '192.0.2.0/24' - - '198.51.100.0/24' - - '203.0.113.0/24' - - '224.0.0.0/4' - - '::1/128' - - 'fe80::/10' - - 'fc00::/7' - - '2001:db8::/32' - - 'ff00::/8' - - 'fec0::/10' +{% if matrix_synapse_url_preview_enabled %} +url_preview_ip_range_blacklist: {{ matrix_synapse_url_preview_ip_range_blacklist | to_json }} +{% endif %} # List of IP address CIDR ranges that the URL preview spider is allowed # to access even if they are specified in url_preview_ip_range_blacklist. @@ -1158,8 +1141,9 @@ url_preview_ip_range_blacklist: # target IP ranges - e.g. for enabling URL previews for a specific private # website only visible in your network. # -#url_preview_ip_range_whitelist: -# - '192.168.1.1' +{% if matrix_synapse_url_preview_enabled %} +url_preview_ip_range_whitelist: {{ matrix_synapse_url_preview_ip_range_whitelist | to_json }} +{% endif %} # Optional list of URL matches that the URL preview spider is # denied from accessing. You should use url_preview_ip_range_blacklist @@ -1377,7 +1361,7 @@ registrations_require_3pid: {{ matrix_synapse_registrations_require_3pid|to_json # Explicitly disable asking for MSISDNs from the registration # flow (overrides registrations_require_3pid if MSISDNs are set as required) # -#disable_msisdn_registration: true +disable_msisdn_registration: {{ matrix_synapse_disable_msisdn_registration|to_json }} # Mandate that users are only allowed to associate certain formats of # 3PIDs with accounts on this server. @@ -1762,7 +1746,7 @@ trusted_key_servers: {{ matrix_synapse_trusted_key_servers|to_json }} # Uncomment the following to disable the warning that is emitted when the # trusted_key_servers include 'matrix.org'. See above. # -#suppress_key_server_warning: true +suppress_key_server_warning: {{ matrix_synapse_suppress_key_server_warning|to_json }} # The signing keys to use when acting as a trusted key server. If not specified # defaults to the server signing key. @@ -2935,20 +2919,23 @@ media_instance_running_background_jobs: {{ matrix_synapse_media_instance_running redis: # Uncomment the below to enable Redis support. # - enabled: {{ matrix_synapse_redis_enabled }} + enabled: {{ matrix_synapse_redis_enabled | to_json }} # Optional host and port to use to connect to redis. Defaults to # localhost and 6379 # - host: {{ matrix_synapse_redis_host }} - port: {{ matrix_synapse_redis_port }} + host: {{ matrix_synapse_redis_host | to_json }} + port: {{ matrix_synapse_redis_port | to_json }} # Optional database ID to connect to. Defaults to 0. - dbid: {{ matrix_synapse_redis_dbid }} + dbid: {{ matrix_synapse_redis_dbid | to_json }} # Optional password if configured on the Redis instance - # - password: {{ matrix_synapse_redis_password }} + {% if matrix_synapse_redis_password %} + password: {{ matrix_synapse_redis_password | to_json }} + {% endif %} + + use_tls: {{ matrix_synapse_redis_use_tls | to_json }} ## Background Updates ## @@ -2983,6 +2970,18 @@ background_updates: #default_batch_size: 50 experimental_features: + {% if matrix_synapse_experimental_features_msc2409_to_device_messages_enabled %} + msc2409_to_device_messages_enabled: true + {% endif %} + {% if matrix_synapse_experimental_features_msc3202_device_masquerading_enabled %} + msc3202_device_masquerading: true + {% endif %} + {% if matrix_synapse_experimental_features_msc3202_transaction_extensions_enabled %} + msc3202_transaction_extensions: true + {% endif %} + {% if matrix_synapse_experimental_features_msc3266_enabled %} + msc3266_enabled: true + {% endif %} {% if matrix_synapse_experimental_features_msc3861_enabled %} msc3861: enabled: true @@ -2997,5 +2996,19 @@ experimental_features: {% if matrix_synapse_experimental_features_msc4108_enabled %} msc4108_enabled: true {% endif %} + {% if matrix_synapse_experimental_features_msc4133_enabled %} + msc4133_enabled: true + {% endif %} + {% if matrix_synapse_experimental_features_msc4140_enabled %} + msc4140_enabled: true + {% endif %} + {% if matrix_synapse_experimental_features_msc4222_enabled %} + msc4222_enabled: true + {% endif %} + +{% if matrix_synapse_experimental_features_msc4140_enabled %} +max_event_delay_duration: {{ matrix_synapse_max_event_delay_duration | to_json }} +rc_delayed_event_mgmt: {{ matrix_synapse_rc_delayed_event_mgmt | to_json }} +{% endif %} # vim:ft=yaml diff --git a/roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2.license b/roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2.license new file mode 100644 index 000000000..6cb772fc7 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2.license @@ -0,0 +1,33 @@ +SPDX-FileCopyrightText: 2018 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2018 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2018 Hugues Morisset +SPDX-FileCopyrightText: 2018 Thomas vO +SPDX-FileCopyrightText: 2019 - 2021 Marcel Partap +SPDX-FileCopyrightText: 2019 - 2022 Aaron Raimist +SPDX-FileCopyrightText: 2019 Ciaran Ainsworth +SPDX-FileCopyrightText: 2019 Dan Arnfield +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2019 Lee Verberne +SPDX-FileCopyrightText: 2019 Lyubomir Popov +SPDX-FileCopyrightText: 2019 Oleg Fiksel +SPDX-FileCopyrightText: 2019 Sylvia van Os +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2020 Justin Croonenberghs +SPDX-FileCopyrightText: 2020 Max Klenk +SPDX-FileCopyrightText: 2021 Ahmad Haghighi +SPDX-FileCopyrightText: 2021 Alejo Diaz +SPDX-FileCopyrightText: 2021 Pablo Montepagano +SPDX-FileCopyrightText: 2021 Toni Spets +SPDX-FileCopyrightText: 2021 boris runakov +SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +SPDX-FileCopyrightText: 2022 Benjamin Castellan +SPDX-FileCopyrightText: 2022 Jim Myhrberg +SPDX-FileCopyrightText: 2022 Shaleen Jain +SPDX-FileCopyrightText: 2022 Yan Minagawa +SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +SPDX-FileCopyrightText: 2023 Aeris One +SPDX-FileCopyrightText: 2023 Alexis Yushin +SPDX-FileCopyrightText: 2023 Luke D Iremadze +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/labels.j2 b/roles/custom/matrix-synapse/templates/synapse/labels.j2 index dd4d776c1..708f5916f 100644 --- a/roles/custom/matrix-synapse/templates/synapse/labels.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_synapse_container_labels_traefik_enabled %} traefik.enable=true @@ -205,6 +211,30 @@ traefik.http.routers.matrix-synapse-public-client-synapse-admin-api.tls.certReso {% endif %} +{% if matrix_synapse_container_labels_internal_client_synapse_admin_api_enabled %} +############################################################ +# # +# Internal Synapse Admin API (/_synapse/admin) # +# # +############################################################ +traefik.http.routers.matrix-synapse-internal-client-synapse-admin-api.rule={{ matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_rule }} + +{% if matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_priority | int > 0 %} +traefik.http.routers.matrix-synapse-internal-client-synapse-admin-api.priority={{ matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_priority }} +{% endif %} + + +traefik.http.routers.matrix-synapse-internal-client-synapse-admin-api.service=matrix-synapse-client-api +traefik.http.routers.matrix-synapse-internal-client-synapse-admin-api.entrypoints={{ matrix_synapse_container_labels_internal_client_synapse_admin_api_traefik_entrypoints }} + +############################################################ +# # +# /Internal Synapse Admin API (/_synapse/admin) # +# # +############################################################ +{% endif %} + + {% if matrix_synapse_container_labels_public_federation_api_enabled %} ############################################################ # # diff --git a/roles/custom/matrix-synapse/templates/synapse/prometheus/external_prometheus.yml.example.j2 b/roles/custom/matrix-synapse/templates/synapse/prometheus/external_prometheus.yml.example.j2 index de39e36fa..897c19fce 100644 --- a/roles/custom/matrix-synapse/templates/synapse/prometheus/external_prometheus.yml.example.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/prometheus/external_prometheus.yml.example.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2021 MDAD project contributors +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Kim Brose + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + global: scrape_interval: 5s diff --git a/roles/custom/matrix-synapse/templates/synapse/synapse.log.config.j2.license b/roles/custom/matrix-synapse/templates/synapse/synapse.log.config.j2.license new file mode 100644 index 000000000..17b1ad961 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/synapse.log.config.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2018 - 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2018 Aaron Raimist +SPDX-FileCopyrightText: 2019 Hugues De Keyzer + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse-worker.service.j2 b/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse-worker.service.j2 index 21b747b0e..bdd5b5742 100644 --- a/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse-worker.service.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse-worker.service.j2 @@ -37,7 +37,7 @@ Requires=matrix-synapse.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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_synapse_worker_container_name }} 2>/dev/null || true' +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_synapse_worker_container_name }} 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_synapse_worker_container_name }} 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -83,7 +83,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach {{ matrix_synapse_worker_container_name }} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_synapse_worker_container_name }} 2>/dev/null || true' +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_synapse_worker_container_name }} 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_synapse_worker_container_name }} 2>/dev/null || true' ExecReload={{ devture_systemd_docker_base_host_command_docker }} exec {{ matrix_synapse_worker_container_name }} /bin/sh -c 'kill -HUP 1' diff --git a/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse-worker.service.j2.license b/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse-worker.service.j2.license new file mode 100644 index 000000000..18a2c5037 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse-worker.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Shaleen Jain +SPDX-FileCopyrightText: 2024 Michael Hollister + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse.service.j2 b/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse.service.j2 index a22c09b1e..9fa7a1dfb 100644 --- a/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse.service.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse.service.j2 @@ -21,7 +21,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-synapse 2>/dev/null || true' +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-synapse 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-synapse 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -73,7 +73,7 @@ ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach m ExecStartPost=-{{ matrix_host_command_sleep }} {{ matrix_synapse_systemd_service_post_start_delay_seconds }} {% endif %} -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-synapse 2>/dev/null || true' +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-synapse 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-synapse 2>/dev/null || true' ExecReload={{ devture_systemd_docker_base_host_command_docker }} exec matrix-synapse /bin/sh -c 'kill -HUP 1' diff --git a/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse.service.j2.license b/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse.service.j2.license new file mode 100644 index 000000000..4ebda2856 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/systemd/matrix-synapse.service.j2.license @@ -0,0 +1,13 @@ +SPDX-FileCopyrightText: 2017 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 - 2021 MDAD project contributors +SPDX-FileCopyrightText: 2019 Aaron Raimist +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2019 Sylvia van Os +SPDX-FileCopyrightText: 2020 - 2021 Marcel Partap +SPDX-FileCopyrightText: 2020 Chris van Dijk +SPDX-FileCopyrightText: 2021 boris runakov +SPDX-FileCopyrightText: 2022 László Várady +SPDX-FileCopyrightText: 2022 Shaleen Jain +SPDX-FileCopyrightText: 2024 Michael Hollister + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/templates/synapse/worker-labels.j2 b/roles/custom/matrix-synapse/templates/synapse/worker-labels.j2 index 9cf4feaed..2fcbe4add 100644 --- a/roles/custom/matrix-synapse/templates/synapse/worker-labels.j2 +++ b/roles/custom/matrix-synapse/templates/synapse/worker-labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_synapse_worker_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-synapse/templates/synapse/worker.yaml.j2.license b/roles/custom/matrix-synapse/templates/synapse/worker.yaml.j2.license new file mode 100644 index 000000000..2ab771284 --- /dev/null +++ b/roles/custom/matrix-synapse/templates/synapse/worker.yaml.j2.license @@ -0,0 +1,8 @@ +SPDX-FileCopyrightText: 2020 Marcel Partap +SPDX-FileCopyrightText: 2020 Max Klenk +SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2021 boris runakov +SPDX-FileCopyrightText: 2022 David Mehren +SPDX-FileCopyrightText: 2024 Charles Wright + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-synapse/vars/main.yml b/roles/custom/matrix-synapse/vars/main.yml index f47a2e848..f4de30ac8 100644 --- a/roles/custom/matrix-synapse/vars/main.yml +++ b/roles/custom/matrix-synapse/vars/main.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Alexis Yushin +# SPDX-FileCopyrightText: 2024 Charles Wright +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- matrix_synapse_client_api_url_endpoint_public: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}://{{ matrix_server_fqn_matrix }}/_matrix/client/versions" diff --git a/roles/custom/matrix-user-creator/defaults/main.yml b/roles/custom/matrix-user-creator/defaults/main.yml index 20aad3d10..00642521c 100644 --- a/roles/custom/matrix-user-creator/defaults/main.yml +++ b/roles/custom/matrix-user-creator/defaults/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-user-creator is a role that aims to automate initial Matrix user account creation. diff --git a/roles/custom/matrix-user-creator/tasks/main.yml b/roles/custom/matrix-user-creator/tasks/main.yml index 2d9cc1c38..8f166bb1c 100644 --- a/roles/custom/matrix-user-creator/tasks/main.yml +++ b/roles/custom/matrix-user-creator/tasks/main.yml @@ -1,9 +1,16 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: # This role intentionally doesn't do work on a `setup-all` tag. # If it did, the initial installation (`--tags=setup-all`) would also potentially polute the database with data, # which would make importing a database dump problematic. + # + # See the variable "matrix_user_creator_users_auto" on group_vars/matrix_servers for actual values of users which running these tags can create with this role by default. - ensure-matrix-users-created - ensure-users-created block: diff --git a/roles/custom/matrix-user-creator/tasks/setup.yml b/roles/custom/matrix-user-creator/tasks/setup.yml index 55e1dedef..efb9647dc 100644 --- a/roles/custom/matrix-user-creator/tasks/setup.yml +++ b/roles/custom/matrix-user-creator/tasks/setup.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Validate Matrix users to create diff --git a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_conduit.yml b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_conduit.yml index 8bbd147b5..fa961d08f 100644 --- a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_conduit.yml +++ b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_conduit.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Conduit user registered - {{ user.username | quote }} diff --git a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_conduwuit.yml b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_conduwuit.yml index a44f982e4..a322db2f2 100644 --- a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_conduwuit.yml +++ b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_conduwuit.yml @@ -1,5 +1,10 @@ +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- -- name: Ensure Conduwuit user registered - {{ user.username | quote }} +- name: Ensure conduwuit user registered - {{ user.username | quote }} ansible.builtin.debug: - msg: "Not registering user. To register Conduwuit users, message the Conduwuit bot" + msg: "Not registering user. To register conduwuit users, message the conduwuit bot" diff --git a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_dendrite.yml b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_dendrite.yml index 2fede49f8..2db976f3e 100644 --- a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_dendrite.yml +++ b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_dendrite.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Dendrite user registered - {{ user.username | quote }} diff --git a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_matrix_authentication_service.yml b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_matrix_authentication_service.yml index ddf8eeff1..4fbeb03bf 100644 --- a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_matrix_authentication_service.yml +++ b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_matrix_authentication_service.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Matrix Authentication Service user registered - {{ user.username | quote }} diff --git a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_synapse.yml b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_synapse.yml index 00189e5c5..1ae191e21 100644 --- a/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_synapse.yml +++ b/roles/custom/matrix-user-creator/tasks/util/ensure_user_registered_synapse.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Synapse user registered - {{ user.username | quote }} diff --git a/roles/custom/matrix-user-creator/tasks/util/validate_user.yml b/roles/custom/matrix-user-creator/tasks/util/validate_user.yml index e35475d4e..d21ffd0e1 100644 --- a/roles/custom/matrix-user-creator/tasks/util/validate_user.yml +++ b/roles/custom/matrix-user-creator/tasks/util/validate_user.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if invalid username diff --git a/roles/custom/matrix-user-creator/vars/main.yml b/roles/custom/matrix-user-creator/vars/main.yml index 7bb3a1a66..e5ed50746 100644 --- a/roles/custom/matrix-user-creator/vars/main.yml +++ b/roles/custom/matrix-user-creator/vars/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix_user_creator_users holds a list of users that should be created on the Matrix homeserver. diff --git a/roles/custom/matrix-user-verification-service/defaults/main.yml b/roles/custom/matrix-user-verification-service/defaults/main.yml index d46b99194..1bc8cf60f 100644 --- a/roles/custom/matrix-user-verification-service/defaults/main.yml +++ b/roles/custom/matrix-user-verification-service/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-user-verification-service - Service to verify details of a user based on an Open ID token @@ -13,7 +20,6 @@ matrix_user_verification_service_container_image_self_build: "{{ matrix_architec matrix_user_verification_service_container_image_self_build_repo: "https://github.com/matrix-org/matrix-user-verification-service" matrix_user_verification_service_container_image_self_build_branch: "{{ 'master' if matrix_registration_version == 'latest' else matrix_user_verification_service_version }}" -# Fix version tag # renovate: datasource=docker depName=matrixdotorg/matrix-user-verification-service matrix_user_verification_service_version: "v3.0.0" @@ -24,8 +30,10 @@ matrix_user_verification_service_config_env_file: "{{ matrix_user_verification_s matrix_user_verification_service_docker_src_files_path: "{{ matrix_user_verification_service_base_path }}/docker-src" # Docker -matrix_user_verification_service_docker_image_name_prefix: "{{ matrix_container_global_registry_prefix }}" -matrix_user_verification_service_docker_image: "{{ matrix_user_verification_service_docker_image_name_prefix }}matrixdotorg/matrix-user-verification-service:{{ matrix_user_verification_service_version }}" +matrix_user_verification_service_docker_image: "{{ matrix_user_verification_service_docker_image_registry_prefix }}matrixdotorg/matrix-user-verification-service:{{ matrix_user_verification_service_version }}" +matrix_user_verification_service_docker_image_registry_prefix: "{{ 'localhost/' if matrix_user_verification_service_container_image_self_build else matrix_user_verification_service_docker_image_registry_prefix_upstream }}" +matrix_user_verification_service_docker_image_registry_prefix_upstream: "{{ matrix_user_verification_service_docker_image_registry_prefix_upstream_default }}" +matrix_user_verification_service_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_user_verification_service_docker_image_force_pull: "{{ matrix_user_verification_service_docker_image.endswith(':latest') }}" # The base container network. It will be auto-created by this role if it doesn't exist already. diff --git a/roles/custom/matrix-user-verification-service/tasks/main.yml b/roles/custom/matrix-user-verification-service/tasks/main.yml index 1b65f86a6..7f7f8616e 100644 --- a/roles/custom/matrix-user-verification-service/tasks/main.yml +++ b/roles/custom/matrix-user-verification-service/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-user-verification-service/tasks/setup_install.yml b/roles/custom/matrix-user-verification-service/tasks/setup_install.yml index 8fa4b670e..a539168b5 100644 --- a/roles/custom/matrix-user-verification-service/tasks/setup_install.yml +++ b/roles/custom/matrix-user-verification-service/tasks/setup_install.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: "Ensure Matrix User Verification Service paths exist" diff --git a/roles/custom/matrix-user-verification-service/tasks/setup_uninstall.yml b/roles/custom/matrix-user-verification-service/tasks/setup_uninstall.yml index b61f9cdd2..8ce0c0234 100644 --- a/roles/custom/matrix-user-verification-service/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-user-verification-service/tasks/setup_uninstall.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-user-verification-service service diff --git a/roles/custom/matrix-user-verification-service/tasks/validate_config.yml b/roles/custom/matrix-user-verification-service/tasks/validate_config.yml index e283ce6c3..449cad532 100644 --- a/roles/custom/matrix-user-verification-service/tasks/validate_config.yml +++ b/roles/custom/matrix-user-verification-service/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Verify homeserver_url is not empty @@ -32,3 +37,12 @@ with_items: - {'name': 'matrix_user_verification_service_uvs_homeserver_url', when: true} - {'name': 'matrix_user_verification_service_container_network', when: true} + +- name: (Deprecation) Catch and report renamed matrix-user-verification-service 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: "item.old in vars" + with_items: + - {'old': 'matrix_user_verification_service_docker_image_name_prefix', 'new': 'matrix_user_verification_service_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-user-verification-service/templates/.env.j2 b/roles/custom/matrix-user-verification-service/templates/.env.j2 index 359eed2a1..6871f2614 100644 --- a/roles/custom/matrix-user-verification-service/templates/.env.j2 +++ b/roles/custom/matrix-user-verification-service/templates/.env.j2 @@ -1,11 +1,16 @@ +{# +SPDX-FileCopyrightText: 2023 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + UVS_ACCESS_TOKEN={{ matrix_user_verification_service_uvs_access_token }} UVS_HOMESERVER_URL={{ matrix_user_verification_service_uvs_homeserver_url }} -UVS_DISABLE_IP_BLACKLIST={{ matrix_user_verification_service_uvs_disable_ip_blacklist }} +UVS_DISABLE_IP_BLACKLIST={{ matrix_user_verification_service_uvs_disable_ip_blacklist | to_json }} UVS_LOG_LEVEL={{ matrix_user_verification_service_uvs_log_level }} {% if matrix_user_verification_service_uvs_require_auth | bool %} - UVS_AUTH_TOKEN={{ matrix_user_verification_service_uvs_auth_token }} +UVS_AUTH_TOKEN={{ matrix_user_verification_service_uvs_auth_token }} {% endif %} {% if matrix_user_verification_service_uvs_pin_openid_verify_server_name | bool %} - UVS_OPENID_VERIFY_SERVER_NAME={{ matrix_user_verification_service_uvs_openid_verify_server_name }} +UVS_OPENID_VERIFY_SERVER_NAME={{ matrix_user_verification_service_uvs_openid_verify_server_name }} {% endif %} - diff --git a/roles/custom/matrix-user-verification-service/templates/systemd/matrix-user-verification-service.service.j2 b/roles/custom/matrix-user-verification-service/templates/systemd/matrix-user-verification-service.service.j2 index 19956496b..16df27a1c 100644 --- a/roles/custom/matrix-user-verification-service/templates/systemd/matrix-user-verification-service.service.j2 +++ b/roles/custom/matrix-user-verification-service/templates/systemd/matrix-user-verification-service.service.j2 @@ -13,7 +13,7 @@ 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 --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_user_verification_service_container_name }} 2>/dev/null' +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_user_verification_service_container_name }} 2>/dev/null' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_user_verification_service_container_name }} 2>/dev/null' @@ -40,7 +40,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne {% endfor %} ExecStart=/usr/bin/env docker start --attach matrix-user-verification-service -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_user_verification_service_container_name }} 2>/dev/null' +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_user_verification_service_container_name }} 2>/dev/null' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_user_verification_service_container_name }} 2>/dev/null' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-user-verification-service/templates/systemd/matrix-user-verification-service.service.j2.license b/roles/custom/matrix-user-verification-service/templates/systemd/matrix-user-verification-service.service.j2.license new file mode 100644 index 000000000..68dc46f44 --- /dev/null +++ b/roles/custom/matrix-user-verification-service/templates/systemd/matrix-user-verification-service.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix_playbook_migration/defaults/main.yml b/roles/custom/matrix_playbook_migration/defaults/main.yml index ba672d092..2cac16e45 100644 --- a/roles/custom/matrix_playbook_migration/defaults/main.yml +++ b/roles/custom/matrix_playbook_migration/defaults/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Controls if (`matrix_prometheus_node_exporter` -> `prometheus_node_exporter`) validation will run. @@ -18,6 +23,12 @@ matrix_playbook_migration_matrix_ntfy_migration_validation_enabled: true # Controls if (`matrix_redis` -> `redis`) validation will run. matrix_playbook_migration_matrix_redis_migration_validation_enabled: true +# Controls if (`redis` -> `valkey`) validation will run. +matrix_playbook_migration_redis_valkey_migration_validation_enabled: true + +# Controls if (`keydb` -> `valkey`) validation will run. +matrix_playbook_migration_keydb_valkey_migration_validation_enabled: true + # Controls if (`matrix_etherpad` -> `etherpad`) validation will run. matrix_playbook_migration_matrix_etherpad_migration_validation_enabled: true diff --git a/roles/custom/matrix_playbook_migration/tasks/cleanup_matrix_static_files_well_known.yml b/roles/custom/matrix_playbook_migration/tasks/cleanup_matrix_static_files_well_known.yml index 9e95826bd..7912d7eb4 100644 --- a/roles/custom/matrix_playbook_migration/tasks/cleanup_matrix_static_files_well_known.yml +++ b/roles/custom/matrix_playbook_migration/tasks/cleanup_matrix_static_files_well_known.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Files used to be installed by the `matrix-base` role into `/matrix/static-files/.well-known/*`. diff --git a/roles/custom/matrix_playbook_migration/tasks/cleanup_usr_local_bin.yml b/roles/custom/matrix_playbook_migration/tasks/cleanup_usr_local_bin.yml index 54e6f4646..f6c561aef 100644 --- a/roles/custom/matrix_playbook_migration/tasks/cleanup_usr_local_bin.yml +++ b/roles/custom/matrix_playbook_migration/tasks/cleanup_usr_local_bin.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 Dan Arnfield +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Find leftover Matrix scripts in /usr/local/bin diff --git a/roles/custom/matrix_playbook_migration/tasks/debian_docker_signedby_migration.yml b/roles/custom/matrix_playbook_migration/tasks/debian_docker_signedby_migration.yml index ac1c5cd13..5948ff539 100644 --- a/roles/custom/matrix_playbook_migration/tasks/debian_docker_signedby_migration.yml +++ b/roles/custom/matrix_playbook_migration/tasks/debian_docker_signedby_migration.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Remove old Docker apt repository, potentially lacking signed-by option diff --git a/roles/custom/matrix_playbook_migration/tasks/debian_docker_trusted_gpg_d_migration_migration.yml b/roles/custom/matrix_playbook_migration/tasks/debian_docker_trusted_gpg_d_migration_migration.yml index 81f396603..fc15a4a85 100644 --- a/roles/custom/matrix_playbook_migration/tasks/debian_docker_trusted_gpg_d_migration_migration.yml +++ b/roles/custom/matrix_playbook_migration/tasks/debian_docker_trusted_gpg_d_migration_migration.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check if the Docker apt repository file exists diff --git a/roles/custom/matrix_playbook_migration/tasks/devture_traefik_to_matrix_traefik.yml b/roles/custom/matrix_playbook_migration/tasks/devture_traefik_to_matrix_traefik.yml index 0b299279f..61b815e61 100644 --- a/roles/custom/matrix_playbook_migration/tasks/devture_traefik_to_matrix_traefik.yml +++ b/roles/custom/matrix_playbook_migration/tasks/devture_traefik_to_matrix_traefik.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # This migrates Traefik from the old path (`/devture-traefik`) to the new path (`/matrix/traefik`, controlled by `traefik_base_path`), diff --git a/roles/custom/matrix_playbook_migration/tasks/docker_daemon_options_file_cleanup.yml b/roles/custom/matrix_playbook_migration/tasks/docker_daemon_options_file_cleanup.yml new file mode 100644 index 000000000..e7636161e --- /dev/null +++ b/roles/custom/matrix_playbook_migration/tasks/docker_daemon_options_file_cleanup.yml @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +# ansible-role-docker creates the Docker daemon options file (`/etc/docker/daemon.json`) when options are set +# via `matrix_playbook_docker_installation_daemon_options` (which influences the `docker_daemon_options` variable of the role). +# See: https://github.com/geerlingguy/ansible-role-docker/blob/acade8d01f11bcd5efecba6d8211138d7567ce4b/tasks/main.yml#L53-L66 +# +# However, it doesn't delete the file when the options list is empty. +# +# This means that people who previously force-disabled IPv6 (and injected `{'ipv6': false}` options, etc) +# or had some other custom options had that file created for them. +# Later, when they stopped setting these options, they were stuck with the configuration file that still retained them. +# +# Here, we make the file go away of no options are set. +# Idealy, this task would be part of the `ansible-role-docker` role, but it's not (yet). +# See: https://github.com/geerlingguy/ansible-role-docker/pull/498 +- name: Ensure the Docker daemon options file is deleted when no longer needed + when: matrix_playbook_docker_installation_daemon_options.keys() | length == 0 + ansible.builtin.file: + path: "{{ matrix_playbook_docker_installation_daemon_options_file_path }}" + state: absent + notify: restart docker diff --git a/roles/custom/matrix_playbook_migration/tasks/main.yml b/roles/custom/matrix_playbook_migration/tasks/main.yml index f72e2b03c..a4ccb8e3c 100644 --- a/roles/custom/matrix_playbook_migration/tasks/main.yml +++ b/roles/custom/matrix_playbook_migration/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: @@ -24,6 +28,15 @@ block: - ansible.builtin.include_tasks: "{{ role_path }}/tasks/debian_docker_trusted_gpg_d_migration_migration.yml" +- when: matrix_playbook_docker_installation_enabled | bool + tags: + - setup-all + - install-all + - setup-docker + - install-docker + block: + - ansible.builtin.include_tasks: "{{ role_path }}/tasks/docker_daemon_options_file_cleanup.yml" + - tags: - setup-all - install-all diff --git a/roles/custom/matrix_playbook_migration/tasks/migrate_matrix_mailer.yml b/roles/custom/matrix_playbook_migration/tasks/migrate_matrix_mailer.yml index e1785774f..dae519322 100644 --- a/roles/custom/matrix_playbook_migration/tasks/migrate_matrix_mailer.yml +++ b/roles/custom/matrix_playbook_migration/tasks/migrate_matrix_mailer.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # This migrates the mailer from the old path (`/matrix/mailer`) to the new path (`/matrix/exim-relay`, controlled by `exim_relay_base_path`), diff --git a/roles/custom/matrix_playbook_migration/tasks/uninstall_matrix_nginx_proxy.yml b/roles/custom/matrix_playbook_migration/tasks/uninstall_matrix_nginx_proxy.yml index acfacddb0..76f7ac301 100644 --- a/roles/custom/matrix_playbook_migration/tasks/uninstall_matrix_nginx_proxy.yml +++ b/roles/custom/matrix_playbook_migration/tasks/uninstall_matrix_nginx_proxy.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-nginx-proxy service diff --git a/roles/custom/matrix_playbook_migration/tasks/uninstall_matrix_ssl.yml b/roles/custom/matrix_playbook_migration/tasks/uninstall_matrix_ssl.yml index ecfad1591..11b84bb47 100644 --- a/roles/custom/matrix_playbook_migration/tasks/uninstall_matrix_ssl.yml +++ b/roles/custom/matrix_playbook_migration/tasks/uninstall_matrix_ssl.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Matrix SSL-related files are deleted diff --git a/roles/custom/matrix_playbook_migration/tasks/validate_config.yml b/roles/custom/matrix_playbook_migration/tasks/validate_config.yml index b3b792a78..437d1fc69 100644 --- a/roles/custom/matrix_playbook_migration/tasks/validate_config.yml +++ b/roles/custom/matrix_playbook_migration/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 - 2025 MDAD project contributors +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: (Deprecation) Catch and report renamed Matrix playbook settings ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_vars_yml_snapshotting_enabled', 'new': 'devture_playbook_state_preserver_vars_preservation_enabled'} @@ -76,9 +82,11 @@ The matrix-postgres-backup role in the playbook has been replaced with the ansible-role-postgres-backup role (https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup). The new role is pretty much the same, but uses differently named variables. - Please change your configuration (vars.yml) to rename all `matrix_postgres`-prefixed variables (`matrix_postgres_*` -> `postgres_*`). + Please rename all `matrix_postgres`-prefixed variables (`matrix_postgres_*` -> `postgres_*`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. - The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'matrix_postgres_.*') | map (attribute='key') | join(', ') }} + The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'matrix_postgres_.*') | map(attribute='key') | join(', ') }} when: "vars | dict2items | selectattr('key', 'match', 'matrix_postgres_.*') | list | items2dict" - name: (Deprecation) Catch and report matrix_mailer_ variables @@ -87,9 +95,11 @@ The matrix-mailer role in the playbook has been replaced with the exim-relay role (https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay). The new role is pretty much the same, but uses differently named variables. - Please change your configuration (vars.yml) to rename all `matrix_mailer`-prefixed variables (`matrix_mailer_*` -> `exim_relay_*`). + Please rename all `matrix_mailer`-prefixed variables (`matrix_mailer_*` -> `exim_relay_*`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. - The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'matrix_mailer_.*') | map (attribute='key') | join(', ') }} + The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'matrix_mailer_.*') | map(attribute='key') | join(', ') }} when: "vars | dict2items | selectattr('key', 'match', 'matrix_mailer_.*') | list | items2dict" - when: matrix_playbook_migration_matrix_prometheus_node_exporter_migration_validation_enabled | bool @@ -103,8 +113,12 @@ msg: >- The matrix-prometheus-node-exporter role that used to be part of this playbook has been replaced by https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter. The new role is compatible with the old one, but uses different names for its variables. - Please change your configuration (vars.yml) to rename all variables (`matrix_prometheus_node_exporter_` -> `prometheus_node_exporter_`). - We found usage of the following variables: {{ matrix_playbook_migration_matrix_prometheus_node_exporter_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_prometheus_node_exporter_` -> `prometheus_node_exporter_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_matrix_prometheus_node_exporter_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_matrix_prometheus_node_exporter_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_prometheus_postgres_exporter_migration_validation_enabled | bool @@ -118,8 +132,12 @@ msg: >- The matrix-prometheus-postgres-exporter role that used to be part of this playbook has been replaced by https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter. The new role is compatible with the old one, but uses different names for its variables. - Please change your configuration (vars.yml) to rename all variables (`matrix_prometheus_postgres_exporter_` -> `prometheus_postgres_exporter_`). - We found usage of the following variables: {{ matrix_playbook_migration_matrix_prometheus_postgres_exporter_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_prometheus_postgres_exporter_` -> `prometheus_postgres_exporter_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_matrix_prometheus_postgres_exporter_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_matrix_prometheus_postgres_exporter_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_backup_borg_migration_validation_enabled | bool @@ -133,8 +151,12 @@ msg: >- The matrix-backup-borg role that used to be part of this playbook has been replaced by https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg. The new role is compatible with the old one, but uses different names for its variables. - Please change your configuration (vars.yml) to rename all variables (`matrix_backup_borg_` -> `backup_borg_`). - We found usage of the following variables: {{ matrix_playbook_migration_backup_borg_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_backup_borg_` -> `backup_borg_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_backup_borg_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_backup_borg_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_grafana_migration_validation_enabled | bool @@ -148,8 +170,12 @@ msg: >- The matrix-grafana role that used to be part of this playbook has been replaced by https://github.com/mother-of-all-self-hosting/ansible-role-grafana. The new role is compatible with the old one, but uses different names for its variables. - Please change your configuration (vars.yml) to rename all variables (`matrix_grafana_` -> `grafana_`). - We found usage of the following variables: {{ matrix_playbook_migration_grafana_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_grafana_` -> `grafana_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_grafana_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_grafana_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_ntfy_migration_validation_enabled | bool @@ -163,8 +189,12 @@ msg: >- The matrix-ntfy role that used to be part of this playbook has been replaced by https://github.com/mother-of-all-self-hosting/ansible-role-ntfy. The new role is compatible with the old one, but uses different names for its variables. - Please change your configuration (vars.yml) to rename all variables (`matrix_ntfy_` -> `ntfy_`). - We found usage of the following variables: {{ matrix_playbook_migration_ntfy_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_ntfy_` -> `ntfy_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_ntfy_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_ntfy_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_redis_migration_validation_enabled | bool @@ -178,10 +208,50 @@ msg: >- The matrix-redis role that used to be part of this playbook has been replaced by https://github.com/mother-of-all-self-hosting/ansible-role-redis. The new role is compatible with the old one, but uses different names for its variables. - Please change your configuration (vars.yml) to rename all variables (`matrix_redis_` -> `redis_`). - We found usage of the following variables: {{ matrix_playbook_migration_redis_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_redis_` -> `redis_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_redis_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_redis_migration_vars | length > 0" +- when: matrix_playbook_migration_redis_valkey_migration_validation_enabled | bool + block: + - ansible.builtin.set_fact: + matrix_playbook_migration_redis_migration_vars: |- + {{ vars | dict2items | selectattr('key', 'match', 'redis_.*') | list | items2dict }} + + - name: (Deprecation) Catch and report matrix_redis variables + ansible.builtin.fail: + msg: >- + The Redis role that used to be part of this playbook has been superseded by https://github.com/mother-of-all-self-hosting/ansible-role-valkey. + + Please rename all variables (`redis_` -> `valkey_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_redis_migration_vars.keys() | join(', ') }} + when: "matrix_playbook_migration_redis_migration_vars | length > 0" + +- when: matrix_playbook_migration_keydb_valkey_migration_validation_enabled | bool + block: + - ansible.builtin.set_fact: + matrix_playbook_migration_keydb_migration_vars: |- + {{ vars | dict2items | selectattr('key', 'match', 'keydb_.*') | list | items2dict }} + + - name: (Deprecation) Catch and report matrix_redis variables + ansible.builtin.fail: + msg: >- + The KeyDB role that used to be part of this playbook has been superseded by https://github.com/mother-of-all-self-hosting/ansible-role-valkey. + + Please rename all variables (`keydb_` -> `valkey_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_keydb_migration_vars.keys() | join(', ') }} + when: "matrix_playbook_migration_keydb_migration_vars | length > 0" + - when: matrix_playbook_migration_matrix_etherpad_migration_validation_enabled | bool block: - ansible.builtin.set_fact: @@ -193,8 +263,12 @@ msg: >- The matrix-etherpad role that used to be part of this playbook has been replaced by https://github.com/mother-of-all-self-hosting/ansible-role-etherpad. The new role is compatible with the old one, but uses different names for its variables. - Please change your configuration (vars.yml) to rename all variables (`matrix_etherpad_` -> `etherpad_`). - We found usage of the following variables: {{ matrix_playbook_migration_etherpad_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_etherpad_` -> `etherpad_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_etherpad_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_etherpad_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_aux_migration_validation_enabled | bool @@ -208,8 +282,12 @@ msg: >- The matrix-aux role that used to be part of this playbook has been replaced by https://github.com/mother-of-all-self-hosting/ansible-role-aux. The new role is compatible with the old one, but uses different names for its variables. - Please change your configuration (vars.yml) to rename all variables (`matrix_aux_` -> `aux_`). - We found usage of the following variables: {{ matrix_playbook_migration_aux_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_aux_` -> `aux_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_aux_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_aux_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_jitsi_migration_validation_enabled | bool @@ -223,8 +301,12 @@ msg: >- The matrix-jitsi role that used to be part of this playbook has been replaced by https://github.com/mother-of-all-self-hosting/ansible-role-jitsi. The new role is compatible with the old one, but uses different names for its variables. - Please change your configuration (vars.yml) to rename all variables (`matrix_jitsi_` -> `jitsi_`). - We found usage of the following variables: {{ matrix_playbook_migration_jitsi_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_jitsi_` -> `jitsi_`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_jitsi_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_jitsi_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_postmoogle_migration_validation_enabled | bool @@ -237,8 +319,10 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration (vars.yml) to rename all variables (`matrix_bot_postmoogle_` -> `matrix_postmoogle_`). - We found usage of the following variables: {{ matrix_playbook_migration_postmoogle_migration_vars.keys() | join(', ') }} + + Please rename all variables (`matrix_bot_postmoogle_` -> `matrix_postmoogle_`) on your configuration file (vars.yml). + + The following variables in your configuration need to be renamed: {{ matrix_playbook_migration_postmoogle_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_postmoogle_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_nginx_proxy_elimination_variable_transition_checks_enabled | bool @@ -247,7 +331,7 @@ ansible.builtin.fail: msg: >- Your configuration contains a variable, which now has a different name. - Please change your configuration to rename the variable (`{{ item.old }}` -> `{{ item.new }}`). + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). when: "item.old in vars" with_items: - {'old': 'matrix_nginx_proxy_proxy_matrix_metrics_enabled', 'new': 'matrix_metrics_exposure_enabled'} @@ -341,8 +425,10 @@ ansible.builtin.fail: msg: >- The matrix-nginx-proxy role that used to be part of this playbook has been removed. - You should remove all its variables (`matrix_nginx_proxy_*`) from your vars.yml file. - We found usage of the following variables: {{ matrix_playbook_migration_nginx_proxy_migration_vars.keys() | join(', ') }} + + You should remove all its variables (`matrix_nginx_proxy_*`) from your configuration file (vars.yml). + + The following variables in your configuration should be renamed: {{ matrix_playbook_migration_nginx_proxy_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_nginx_proxy_migration_vars | length > 0" - when: matrix_playbook_migration_matrix_ssl_leftover_variable_checks_enabled | bool @@ -355,8 +441,10 @@ ansible.builtin.fail: msg: >- The matrix-nginx-proxy role that used to be part of this playbook has been removed. - You should remove all its variables (`matrix_ssl_*`) from your vars.yml file. - We found usage of the following variables: {{ matrix_playbook_migration_ssl_migration_vars.keys() | join(', ') }} + + You should remove all its variables (`matrix_ssl_*`) from your configuration file (vars.yml). + + The following variables in your configuration should be renamed: {{ matrix_playbook_migration_ssl_migration_vars.keys() | join(', ') }} when: "matrix_playbook_migration_ssl_migration_vars | length > 0" - block: @@ -387,20 +475,24 @@ The postgres-backup role in the playbook now lives under the MASH organization (https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup). The new role is pretty much the same, but uses differently named variables. - Please change your configuration (vars.yml) to rename all `devture_postgres_backup_`-prefixed variables (`devture_postgres_backup_*` -> `postgres_backup_*`). + Please rename all `devture_postgres_backup_`-prefixed variables (`devture_postgres_backup_*` -> `postgres_backup_*`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. - The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'devture_postgres_backup_.*') | map (attribute='key') | join(', ') }} + The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'devture_postgres_backup_.*') | map(attribute='key') | join(', ') }} when: "vars | dict2items | selectattr('key', 'match', 'devture_postgres_backup_.*') | list | items2dict" - name: (Deprecation) Catch and report devture_postgres variables ansible.builtin.fail: msg: |- - The postgres role in the playbook now lives under the MASH organization (https://github.com/mother-of-all-self-hosting/ansible-role-postgres). + The Postgres role in the playbook now lives under the MASH organization (https://github.com/mother-of-all-self-hosting/ansible-role-postgres). The new role is pretty much the same, but uses differently named variables. - Please change your configuration (vars.yml) to rename all `devture_postgres_`-prefixed variables (`devture_postgres_*` -> `postgres_*`). + Please rename all `devture_postgres_`-prefixed variables (`devture_postgres_*` -> `postgres_*`) on your configuration file (vars.yml). - The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'devture_postgres_.*') | map (attribute='key') | join(', ') }} + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'devture_postgres_.*') | map(attribute='key') | join(', ') }} when: "vars | dict2items | selectattr('key', 'match', 'devture_postgres_.*') | list | items2dict" - name: (Deprecation) Catch and report traefik_certs_dumper variables @@ -409,9 +501,11 @@ The traefik-certs-dumper role in the playbook now lives under the MASH organization (https://github.com/mother-of-all-self-hosting/ansible-role-traefik-certs-dumper). The new role is pretty much the same, but uses differently named variables. - Please change your configuration (vars.yml) to rename all `devture_traefik_certs_dumper_`-prefixed variables (`devture_traefik_certs_dumper_*` -> `traefik_certs_dumper_*`). + Please rename all `devture_traefik_certs_dumper_`-prefixed variables (`devture_traefik_certs_dumper_*` -> `traefik_certs_dumper_*`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. - The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'devture_traefik_certs_dumper_.*') | map (attribute='key') | join(', ') }} + The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'devture_traefik_certs_dumper_.*') | map(attribute='key') | join(', ') }} when: "vars | dict2items | selectattr('key', 'match', 'devture_traefik_certs_dumper_.*') | list | items2dict" - name: (Deprecation) Catch and report devture_traefik variables @@ -420,7 +514,47 @@ The traefik role in the playbook now lives under the MASH organization (https://github.com/mother-of-all-self-hosting/ansible-role-traefik). The new role is pretty much the same, but uses differently named variables. - Please change your configuration (vars.yml) to rename all `devture_traefik_`-prefixed variables (`devture_traefik_*` -> `traefik_*`). + Please rename all `devture_traefik_`-prefixed variables (`devture_traefik_*` -> `traefik_*`) on your configuration file (vars.yml). - The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'devture_traefik_.*') | map (attribute='key') | join(', ') }} + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'devture_traefik_.*') | map(attribute='key') | join(', ') }} when: "vars | dict2items | selectattr('key', 'match', 'devture_traefik_.*') | list | items2dict" + +- name: (Deprecation) Catch and report devture_container_socket_proxy variables + ansible.builtin.fail: + msg: |- + The container-socket-proxy role in the playbook now lives under the MASH organization (https://github.com/mother-of-all-self-hosting/ansible-role-container-socket-proxy). + The new role is pretty much the same, but uses differently named variables. + + Please rename all `devture_container_socket_proxy_`-prefixed variables (`devture_container_socket_proxy_*` -> `container_socket_proxy_*`) on your configuration file (vars.yml). + + After renaming them, please do not forget to fetch the Ansible role. See docs/maintenance-upgrading-services.md for details about how to do so. + + The following variables in your configuration need to be renamed: {{ vars | dict2items | selectattr('key', 'match', 'devture_container_socket_proxy_.*') | map(attribute='key') | join(', ') }} + when: "vars | dict2items | selectattr('key', 'match', 'devture_container_socket_proxy_.*') | list | items2dict" + +- name: (Deprecation) Catch and report mautrix-hangouts variables + ansible.builtin.fail: + msg: |- + The Google Hangouts service was discontinued on 1st of November 2022. + The mautrix-hangouts bridge has been deprecated in the playbook since December 2024 and was completely removed from the playbook in February 2025. + + Please remove all `matrix_mautrix_hangouts_*` variables from your configuration file (vars.yml). + + You may also wish to uninstall the bridge manually. See `docs/configuring-playbook-bridge-mautrix-hangouts.md` for more information. + + The following variables in your configuration need to be removed: {{ vars | dict2items | selectattr('key', 'match', 'matrix_mautrix_hangouts_.*') | map(attribute='key') | join(', ') }} + when: "vars | dict2items | selectattr('key', 'match', 'matrix_mautrix_hangouts_.*') | list | items2dict" + +- name: (Deprecation) Catch and report Email2Matrix variables + ansible.builtin.fail: + msg: |- + The Email2Matrix service has been superseded by the Postmoogle bridge for a long time now and was completely removed from the playbook in February 2025. + + Please remove all `matrix_email2matrix_*` variables from your configuration file (vars.yml). + + You may also wish to uninstall the bridge manually. See `docs/configuring-playbook-email2matrix.md` for more information. + + The following variables in your configuration need to be removed: {{ vars | dict2items | selectattr('key', 'match', 'matrix_email2matrix_.*') | map(attribute='key') | join(', ') }} + when: "vars | dict2items | selectattr('key', 'match', 'matrix_email2matrix_.*') | list | items2dict" diff --git a/setup.yml b/setup.yml index 6cabc7962..7bf392f9b 100644 --- a/setup.yml +++ b/setup.yml @@ -47,8 +47,6 @@ - role: galaxy/postgres - - galaxy/redis - - galaxy/keydb - galaxy/valkey - role: custom/matrix-authentication-service @@ -66,7 +64,6 @@ - custom/matrix-bridge-wechat - custom/matrix-bridge-mautrix-facebook - custom/matrix-bridge-mautrix-twitter - - custom/matrix-bridge-mautrix-hangouts - custom/matrix-bridge-mautrix-googlechat - custom/matrix-bridge-mautrix-instagram - custom/matrix-bridge-mautrix-meta-messenger @@ -78,6 +75,7 @@ - custom/matrix-bridge-mautrix-wsproxy - custom/matrix-bridge-mautrix-discord - custom/matrix-bridge-mautrix-slack + - custom/matrix-bridge-mautrix-bluesky - custom/matrix-bridge-mx-puppet-discord - custom/matrix-bridge-mx-puppet-groupme - custom/matrix-bridge-mx-puppet-steam @@ -120,6 +118,7 @@ - custom/matrix-client-hydrogen - custom/matrix-client-cinny - custom/matrix-client-schildichat + - custom/matrix-client-fluffychat - galaxy/jitsi - custom/matrix-user-verification-service - custom/matrix-ldap-registration-proxy @@ -127,7 +126,6 @@ - custom/matrix-dimension - galaxy/etherpad - custom/matrix-sliding-sync - - custom/matrix-email2matrix - custom/matrix-sygnal - custom/matrix-fluffygate - galaxy/ntfy @@ -136,6 +134,10 @@ - custom/matrix-media-repo - custom/matrix-pantalaimon + - custom/matrix-element-call + - galaxy/livekit_server + - custom/matrix-livekit-jwt-service + - role: galaxy/postgres_backup - role: galaxy/backup_borg diff --git a/setup.yml.license b/setup.yml.license new file mode 100644 index 000000000..1668032ac --- /dev/null +++ b/setup.yml.license @@ -0,0 +1,36 @@ +SPDX-FileCopyrightText: 2017 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 - 2025 MDAD project contributors +SPDX-FileCopyrightText: 2019 Dan Arnfield +SPDX-FileCopyrightText: 2019 Edgars Voroboks +SPDX-FileCopyrightText: 2020 Björn Marten +SPDX-FileCopyrightText: 2020 Hugues Morisset +SPDX-FileCopyrightText: 2020 Marcel Partap +SPDX-FileCopyrightText: 2020 Max Klenk +SPDX-FileCopyrightText: 2020 Rodrigo Belem +SPDX-FileCopyrightText: 2020 Scott Crossen +SPDX-FileCopyrightText: 2020 Tulir Asokan +SPDX-FileCopyrightText: 2021 Aaron Raimist +SPDX-FileCopyrightText: 2021 Alexandar Mechev +SPDX-FileCopyrightText: 2021 Béla Becker +SPDX-FileCopyrightText: 2021 Cody Neiman +SPDX-FileCopyrightText: 2021 Marcus Proest +SPDX-FileCopyrightText: 2021 Matthew Cengia +SPDX-FileCopyrightText: 2021 Raymond Coetzee +SPDX-FileCopyrightText: 2021 Toni Spets +SPDX-FileCopyrightText: 2021 Yannick Goossens +SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +SPDX-FileCopyrightText: 2022 Charles Wright +SPDX-FileCopyrightText: 2022 Jip J. Dekker +SPDX-FileCopyrightText: 2022 Julian Foad +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 Vladimir Panteleev +SPDX-FileCopyrightText: 2022 Warren Bailey +SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +SPDX-FileCopyrightText: 2023 Antonis Christofides +SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +SPDX-FileCopyrightText: 2023 Johan Swetzén +SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later