diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 000000000..1c1da2564 --- /dev/null +++ b/.codespellrc @@ -0,0 +1,2 @@ +[codespell] +ignore-words-list = aNULL,brose,doub,Udo,re-use,re-used,registr,shema 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/.envrc b/.envrc index 8392d159f..3550a30f2 100644 --- a/.envrc +++ b/.envrc @@ -1 +1 @@ -use flake \ No newline at end of file +use flake 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.license b/.github/ISSUE_TEMPLATE/bug_report.md.license new file mode 100644 index 000000000..3e8049371 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 57488385d..98f6bad20 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- blank_issues_enabled: false contact_links: diff --git a/.github/ISSUE_TEMPLATE/feature_request.md.license b/.github/ISSUE_TEMPLATE/feature_request.md.license new file mode 100644 index 000000000..3e8049371 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/.github/ISSUE_TEMPLATE/i-need-help.md.license b/.github/ISSUE_TEMPLATE/i-need-help.md.license new file mode 100644 index 000000000..3e8049371 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/i-need-help.md.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index b9c3cd49d..dad8d2cf2 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- version: 2 updates: diff --git a/.github/renovate.json b/.github/renovate.json index e9c3ceb67..6a6a83859 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -1,12 +1,17 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:base" + "config:recommended" ], - "labels": ["dependencies"], - "regexManagers": [ + "labels": [ + "dependencies" + ], + "customManagers": [ { - "fileMatch": ["defaults/main.yml$"], + "customType": "regex", + "managerFilePatterns": [ + "/defaults/main.yml$/" + ], "matchStrings": [ "# renovate: datasource=(?[a-z-.]+?) depName=(?[^\\s]+?)(?: (?:lookupName|packageName)=(?[^\\s]+?))?(?: versioning=(?[a-z-0-9]+?))?\\s+[A-Za-z0-9_]+?(?:_version|_tag)\\s*:\\s*[\"']?(?.+?)[\"']?\\s" ] @@ -14,14 +19,15 @@ ], "packageRules": [ { - "matchSourceUrlPrefixes": [ - "https://github.com/devture/com.devture.ansible.role", - "https://github.com/mother-of-all-self-hosting" - ], - "ignoreUnstable": false + "ignoreUnstable": false, + "versioning": "loose", + "matchSourceUrls": [ + "https://github.com/devture/com.devture.ansible.role{/,}**", + "https://github.com/mother-of-all-self-hosting{/,}**" + ] } ], - "ignoreDeps": [ - "ghcr.io/matrixgpt/matrix-chatgpt-bot" - ] + "pre-commit": { + "enabled": true + } } diff --git a/.github/workflows/close-stale-issues.yml b/.github/workflows/close-stale-issues.yml index 4473c589e..78df98cf9 100644 --- a/.github/workflows/close-stale-issues.yml +++ b/.github/workflows/close-stale-issues.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- name: 'Close stale issues and PRs' on: # yamllint disable-line rule:truthy @@ -15,7 +19,7 @@ jobs: if: github.repository == 'spantaleev/matrix-docker-ansible-deploy' runs-on: ubuntu-latest steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: ###################################################################### # Issues/PRs diff --git a/.github/workflows/lock-threads.yml b/.github/workflows/lock-threads.yml new file mode 100644 index 000000000..0cee26857 --- /dev/null +++ b/.github/workflows/lock-threads.yml @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: 2017 - 2023 Armin Sebastian +# +# SPDX-License-Identifier: MIT + +--- +name: 'Lock Threads' +on: # yamllint disable-line rule:truthy + # Use this to do a dry run from a pull request + # pull_request: + schedule: + - cron: '0 * * * *' + workflow_dispatch: + +permissions: + issues: write + pull-requests: write + +concurrency: + group: lock-threads + +jobs: + action: + if: github.repository == 'spantaleev/matrix-docker-ansible-deploy' + runs-on: ubuntu-latest + steps: + - uses: dessant/lock-threads@v6 + with: + add-issue-labels: 'outdated' + process-only: 'issues, prs' diff --git a/.github/workflows/matrix.yml b/.github/workflows/matrix.yml index de1455688..2aec3199f 100644 --- a/.github/workflows/matrix.yml +++ b/.github/workflows/matrix.yml @@ -1,9 +1,13 @@ +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- name: Matrix CI -on: # yamllint disable-line rule:truthy - push: - pull_request: +on: [push, pull_request] # yamllint disable-line rule:truthy jobs: yamllint: @@ -11,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Run yamllint uses: frenck/action-yamllint@v1.5.0 ansible-lint: @@ -19,8 +23,20 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out - uses: actions/checkout@v4 + uses: actions/checkout@v6 + - name: Run ansible-lint - uses: ansible-community/ansible-lint-action@v6.17.0 + uses: ansible/ansible-lint@v26.1.0 with: - path: roles/custom + args: "roles/custom" + setup_python: "true" + working_directory: "" + requirements_file: requirements.yml + precommit: + name: Run pre-commit + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v6 + - name: Run pre-commit + uses: pre-commit/action@v3.0.1 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..9e2ae51b6 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,26 @@ +--- +default_install_hook_types: [pre-push] + +exclude: "LICENSES/" + +# See: https://pre-commit.com/hooks.html +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + # - id: check-executables-have-shebangs + - id: check-added-large-files + - id: check-case-conflict + - id: check-json + - id: check-toml + - id: trailing-whitespace + - id: end-of-file-fixer + - repo: https://github.com/codespell-project/codespell + rev: v2.4.1 + hooks: + - id: codespell + args: ["--skip=*.po,*.pot,i18n/"] + - repo: https://github.com/fsfe/reuse-tool # https://reuse.software/dev/#pre-commit-hook + rev: v6.2.0 + hooks: + - id: reuse diff --git a/CHANGELOG.md b/CHANGELOG.md index f850d47e7..d251894f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,275 @@ +# 2025-12-09 + +## Traefik Cert Dumper upgrade + +The variable `traefik_certs_dumper_ssl_dir_path` was renamed to `traefik_certs_dumper_ssl_path`. Users who use [their own webserver with Traefik](docs/configuring-playbook-own-webserver.md) may need to adjust their configuration. + +The variable `traefik_certs_dumper_dumped_certificates_dir_path` was renamed to `traefik_certs_dumper_dumped_certificates_path`. Users who use [SRV Server Delegation](docs/howto-srv-server-delegation.md) may need to adjust their configuration. + +# 2025-11-23 + +## Matrix.to support + +The playbook now supports [Matrix.to](https://github.com/matrix-org/matrix.to) — a simple URL redirection service which powers [matrix.to](https://matrix.to). + +To learn more, see our [Setting up Matrix.to](docs/configuring-playbook-matrixto.md) documentation page. + +# 2025-11-09 + +## matrix-appservice-webhooks has been removed from the playbook + +[matrix-appservice-webhooks](./docs/configuring-playbook-bridge-appservice-webhooks.md) has been removed from the playbook, as it has been deprecated since more than several years. + +The playbook will let you know if you're using any `matrix_appservice_webhooks_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bridge manually](./docs/configuring-playbook-bridge-appservice-webhooks.md#uninstalling-the-bridge-manually). + +## mautrix-facebook and mautrix-instagram have been removed from the playbook + +[mautrix-facebook](./docs/configuring-playbook-bridge-mautrix-facebook.md) and [mautrix-instagram](./docs/configuring-playbook-bridge-mautrix-instagram.md) have been removed from the playbook, as they have been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, integrated to the playbook at [2024-02-19](#2024-02-19). + +The playbook will let you know if you're using any variables for those bridges: + +- `matrix_mautrix_facebook_*` +- `matrix_mautrix_instagram_*` + +You'll need to remove them from `vars.yml` and potentially uninstall them manually. Consult pages below for details: + +- [Instruction for mautrix-facebook](./docs/configuring-playbook-bridge-mautrix-facebook.md#uninstalling-the-bridge-manually) +- [Instruction for mautrix-instagram](./docs/configuring-playbook-bridge-mautrix-instagram.md#uninstalling-the-bridge-manually) + +# 2025-11-08 + +## MatrixZulipBridge support + +Thanks to [Suguru Hirahara](https://github.com/luixxiul), the playbook now supports the [GearKite/MatrixZulipBridge](https://github.com/GearKite/MatrixZulipBridg) bridge for bridging Matrix to [Zulip](https://zulip.com/). + +To learn more, see our [Setting up Zulip bridging](docs/configuring-playbook-bridge-zulip.md) documentation page. + +# 2025-11-07 + +## The matrix-chatgpt-bot has been removed from the playbook + +The [matrix-bot-chatgpt](./docs/configuring-playbook-bot-chatgpt.md) has been removed from the playbook, as it has been deprecated since September 2024. + +The playbook will let you know if you're using any `matrix_bot_chatgpt_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bot manually](./docs/configuring-playbook-bot-chatgpt.md#uninstalling-matrix-chatgpt-bot-manually). + +# 2025-11-05 + +## The MX Puppet bridges for Discord, Instagram, Slack, and Twitter have been removed from the playbook + +The MX Puppet bridges for Discord, Instagram, Slack, and Twitter have been removed from the playbook, as they have been unmaintained for more than several years and do not support important features like authenticated media. See [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3867) for the context. + +The playbook will let you know if you're using any variables for those bridges: + +- `matrix_mx_puppet_discord_*` +- `matrix_mx_puppet_instagram_*` +- `matrix_mx_puppet_slack_*` +- `matrix_mx_puppet_twitter_*` + +You'll need to remove them from `vars.yml` and potentially uninstall them manually. Consult pages below for details: + +- [Instruction for MX Puppet Discord bridge](./docs/configuring-playbook-bridge-mx-puppet-discord.md#uninstalling-the-bridge-manually) +- [Instruction for MX Puppet Instagram bridge](./docs/configuring-playbook-bridge-mx-puppet-instagram.md#uninstalling-the-bridge-manually) +- [Instruction for MX Puppet Slack bridge](./docs/configuring-playbook-bridge-mx-puppet-slack.md#uninstalling-the-bridge-manually) +- [Instruction for MX Puppet Twitter bridge](./docs/configuring-playbook-bridge-mx-puppet-twitter.md#uninstalling-the-bridge-manually) + +# 2025-11-04 + +## The Go Skype bridge has been removed from the playbook + +The [go-skype-bridge](./docs/configuring-playbook-bridge-go-skype-bridge.md) has been removed from the playbook, as Skype has been discontinued since the May 2025. + +The playbook will let you know if you're using any `matrix_go_skype_bridge_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bridge manually](./docs/configuring-playbook-bridge-go-skype-bridge.md#uninstalling-the-bridge-manually). + +# 2025-10-02 + +## Element Admin support + +The playbook now supports [Element Admin](./docs/configuring-playbook-element-admin.md) - a new web-based administration panel for Synapse and [Matrix Authentication Service](./docs/configuring-playbook-matrix-authentication-service.md). + +Deployments based on Matrix Authentication Service may find it useful to run both Synapse Admin and Element Admin at the same time. + +Deployments that don't rely on Matrix Authentication Service are unlikely to find anything useful in Element Admin right now (it's too basic in its current form). + + +# 2025-04-26 + +## Continuwuity support + +Thanks to [Virkkunen](https://github.com/Virkkunen), we now have optional experimental [Continuwuity](./docs/configuring-playbook-continuwuity.md) homeserver support. + +Continuwuity is a fork of [conduwuit](./docs/configuring-playbook-conduwuit.md), which the playbook also supports. It appears that conduwuit has been abandoned and various forks (like Continuwuity, [Tuwunel](https://github.com/matrix-construct/tuwunel) and possibly others) are continuing in its path. + +Existing installations do **not** need to be updated. **Synapse is still the default homeserver implementation** installed by the playbook. + +People that used to run conduwuit, may wish to: + +- either [migrate from conduwuit to Continuwuity](./docs/configuring-playbook-continuwuity.md#migrating-from-conduwuit) +- or wait for some of the other forks to progress and for support for them to get added to the playbook + +**The homeserver implementation of an existing server cannot be changed** (e.g. from Synapse/Conduit/Dendrite to Continuwuity) without data loss. + + +# 2025-04-09 + +## Element Call frontend installation is now optional + +Because all Element clients (Element Web and Element X mobile) now embed and use their own Element Call frontend application (and not the one hosted via the playbook), it makes little sense for the playbook to self-host the Element Call frontend for you. Setting up the frontend requires an additional hostname (DNS setup) and it won't be used by Element clients anyway, so **we now recommend not installing the Element Call frontend**. + +💡 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). + +The playbook now lets you [Decide between Element Call vs just the Matrix RTC stack](./docs/configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack). + +If you've already installed Element Call (via `matrix_element_call_enabled: true`), you can switch to installing just the [Matrix RTC (Real-Time Communication) stack](./docs/configuring-playbook-matrix-rtc.md) (all supporting services **without the Element Call frontend**) by: + +1. Adjusting your `vars.yml` configuration like this: + +```diff +-matrix_element_call_enabled: true ++matrix_rtc_enabled: true +``` + +2. [Re-running the playbook](./docs/installing.md) with the `setup-all` Ansible tag (e.g. `just setup-all`) + +3. Getting rid of the `call.element.example.com` DNS record + + +# 2025-03-15 + +## Element Call support + +The playbook now supports [Element Call](https://github.com/element-hq/element-call) as an optional feature. Thanks to [wjbeckett](https://github.com/wjbeckett) for getting us started via [PR#3562](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3562). + +Element Call is a native Matrix video conferencing application developed by [Element](https://element.io/) that has the goal of replacing [Jitsi](./docs/configuring-playbook-jitsi.md) and the old WebRTC stack used in previous Element versions. + +💡 For now, Element Call is only supported with the [Synapse](docs/configuring-playbook-synapse.md) homeserver (with [federation](docs/configuring-playbook-federation.md) enabled) and [Element Web](docs/configuring-playbook-client-element-web.md) and Element X mobile clients. See the [Prerequisites](docs/configuring-playbook-element-call.md#prerequisites) section of the [Element Call documentation](docs/configuring-playbook-element-call.md) for more details. + +To get started, see the [Configuring Element Call](docs/configuring-playbook-element-call.md) documentation page. + + +# 2025-03-08 + +## 6️⃣ IPv6 support enablement recommended by default + +Our [default example configuration](./examples/vars.yml) and [Configuring DNS](./docs/configuring-dns.md) guides now recommend enabling [IPv6](https://en.wikipedia.org/wiki/IPv6) support. We recommend that everyone enables IPv6 support for their Matrix server, even if they don't have IPv6 connectivity yet. + +Our new [Configuring IPv6](./docs/configuring-ipv6.md) documentation page has more details about the playbook's IPv6 support. + +**Existing playbook users** will **need to do some manual work** to enable IPv6 support. This consists of: + +- enabling IPv6 support for the Docker container networks: + - add `devture_systemd_docker_base_ipv6_enabled: true` to their `vars.yml` configuration file + - 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` + +- [configuring IPv6 (`AAAA`) DNS records](./docs/configuring-ipv6.md#configuring-dns-records-for-ipv6) + +# 2025-02-26 + +## 🪦 Bye-bye, Email2Matrix + +The [Email2Matrix](./docs/configuring-playbook-email2matrix.md) service has been superseded by the [Postmoogle](./docs/configuring-playbook-bridge-postmoogle.md) bridge for a long time now and was completely removed from the playbook today. + +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 as described in the [Uninstalling Email2Matrix manually](./docs/configuring-playbook-email2matrix.md#uninstalling-email2matrix-manually) section of the documentation. The playbook will warn you if there are any `matrix_email2matrix_*` variables still remaining in your configuration. + + +# 2025-02-23 + +## The playbook defaults to exposing the Coturn STUN port (3478) over UDP once again + +Recently, we made the playbook [default to exposing the Coturn STUN port (3478) only over TCP](#the-playbook-now-defaults-to-exposing-the-coturn-stun-port-3478-only-over-tcp) to reduce the severity of DDoS amplification/reflection attacks. + +It seems like old Element clients on mobile devices only support talking to the STUN port over UDP, not TCP. +To accommodate such ancient clients, we're now **reversing this change** and **defaulting to exposing the Coturn STUN port (3478) over UDP once again**. + +In light of this new information, you have 2 options: + +1. **If you already adapted to the previous change and would like to adapt to this change one again**: + +- make sure the `3478/udp` port is whitelisted in your external firewall (if you have one) once again. + +2. **If you don't care about old Element clients and wish to reduce the severity of DDoS amplification/reflection attacks**: + +- Consider closing the STUN/UDP port with the following configuration: + + ```yaml + matrix_coturn_container_stun_plain_host_bind_port_udp: "" + ``` + +- Consider keeping `3478/udp` blocked in your external firewall (if you have one) + +# 2025-02-21 + +## Docker daemon options are no longer adjusted when IPv6 is enabled + +We landed [initial IPv6 support](#initial-work-on-ipv6-support) in the past via a `devture_systemd_docker_base_ipv6_enabled` variable that one had to toggle to `true`. + +This variable did **2 different things at once**: + +- ensured that container networks were created with IPv6 being enabled +- adjusted the Docker daemon's configuration to set `experimental: true` and `ip6tables: true` (a necessary prerequisite for creating IPv6-enabled networks) + +Since Docker 27.0.1's [changes to how it handles IPv6](https://docs.docker.com/engine/release-notes/27/#ipv6), **adjusting the Docker daemon's configuration is no longer necessary**, because: +- `ip6tables` defaults to `true` for everyone +- `ip6tables` is out of the experimental phase, so `experimental` is no longer necessary + +In light of this, we're introducing a new variable (`devture_systemd_docker_base_ipv6_daemon_options_changing_enabled`) for controlling if IPv6 should be force-enabled in the Docker daemon's configuration options. +Since most people should be on a modern enough Docker daemon version which doesn't require such changes, this variable defaults to `false`. + +This change affects you like this: + +- ✅ if you're **not explicitly enabling IPv6** (via `devture_systemd_docker_base_ipv6_enabled` in your configuration): you're unaffected +- ❓ if you're **explicitly enabling IPv6** (via `devture_systemd_docker_base_ipv6_enabled` in your configuration): + - ✅ .. and you're on a modern enough Docker version (which you most likely are): the playbook will no longer mess with your Docker daemon options. You're unaffected. + - 🔧 .. and you're on an old Docker version, you **are affected** and need to use the following configuration to restore the old behavior: + + ```yml + # Force-enable IPv6 by changing the Docker daemon's options. + # This is necessary for Docker < 27.0.1, but not for newer versions. + devture_systemd_docker_base_ipv6_daemon_options_changing_enabled: true + + # Request that individual container networks are created with IPv6 enabled. + devture_systemd_docker_base_ipv6_enabled: true + ``` + +## Support for bridging to Bluesky via mautrix-bluesky + +Thanks to [Zepmann](https://github.com/Zepmann), the playbook now supports bridging to [Bluesky](https://bsky.app/) via [mautrix-bluesky](https://github.com/mautrix/bluesky). + +To learn more, see our [Setting up mautrix-bluesky](./docs/configuring-playbook-bridge-mautrix-bluesky.md) documentation page. + + +# 2025-02-19 + +## The playbook now defaults to exposing the Coturn STUN port (3478) only over TCP + +We've previously done some work to **decrease the severity** of DDoS amplification attacks done through the [Coturn](./docs/configuring-playbook-turn.md)'s STUN port (2.8x -> 1.6x) as reported in [coturn: Lower DDoS amplification/reflection factor from 2.8 to 1.6 #2592](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2592). + +To **completely eliminate the problem** of DDoS amplification attacks done through the [Coturn](./docs/configuring-playbook-turn.md) STUN port even further (read more about this in [this article](https://stormwall.network/resources/blog/protect-against-ddos-based-on-stun-exploit)), the playbook now **disables exposure of the Coturn STUN port (`3478`) over UDP**. This is a bit heavy-handed, but is probably the only way to completely eliminate the problem. + +The playbook now **only exposes the Coturn STUN port (`3478`) over TCP by default**. + +💡 Users may wish to further remove the (now unnecessary) firewall rule allowing access to `3478/udp`. + +If you'd like the Coturn STUN port to be exposed over UDP like before, you can revert to the previous behavior by using the following configuration in your `vars.yml` file: + +```yaml +matrix_coturn_container_stun_plain_host_bind_port_udp: "3478" +``` + +> [!WARNING] +> People running Coturn directly on the `host` network (using `matrix_coturn_container_network: host`) will still have the STUN port exposed over UDP, as port exposure is done directly via Coturn and not via Docker. In such cases, the playbook cannot prevent `3478/udp` port exposure and you'd need to do it in another way (separate firewall rule, etc). + + +# 2025-02-17 + +## FluffyChat Web support + +Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook now supports [FluffyChat Web](https://github.com/krille-chan/fluffychat) as an additional Matrix client you can self-host. + +To learn more, see our [Setting up FluffyChat Web](docs/configuring-playbook-client-fluffychat-web.md) documentation page. + + # 2025-02-03 ## The mautrix-hangouts bridge has been removed from the playbook @@ -13,7 +285,7 @@ The playbook will let you know if you're using any `matrix_mautrix_hangouts_*` v ## Redis and KeyDB are no longer part of the playbook -**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. +**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 defining `redis_*` or `keydb_*` variables will need to update their configuration to use `valkey_*` variables instead. The playbook has gone through several iterations of memorystore implementations: @@ -239,8 +511,8 @@ If upstream synapse-admin picks up the pace and improves, the etke.cc fork may d 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: ```yaml -matrix_synapse_admin_docker_image: "{{ matrix_synapse_admin_docker_image_name_prefix }}awesometechnologies/synapse-admin:{{ matrix_synapse_admin_version }}" -matrix_synapse_admin_docker_image_name_prefix: "{{ 'localhost/' if matrix_synapse_admin_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_synapse_admin_docker_image: "{{ matrix_synapse_admin_docker_image_registry_prefix }}awesometechnologies/synapse-admin:{{ matrix_synapse_admin_version }}" +matrix_synapse_admin_docker_image_registry_prefix_upstream: docker.io/ matrix_synapse_admin_version: 0.10.3 @@ -566,7 +838,7 @@ For people building commercial products on top of Synapse, they may have to eith We're no lawyers and this changelog entry does not aim to give you the best legal advice, so please research on your own! -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: +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 introducing a new Ansible variable. You can do it like this: ```yaml # Switch the organization that Synapse container images (or source code for self-building) are pulled from. @@ -649,7 +921,7 @@ Despite these downsides (which the playbook manages automatically), we believe i 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. -**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. +**People running 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. 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. @@ -690,7 +962,7 @@ If you were using these values as a way to stay away from Traefik, you now have Now that `matrix-nginx-proxy` is not in the mix, it became easier to clear out some other long-overdue technical debt. -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. +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. Moving components (especially the database) into other container networks was difficult — it required changes to many other components to ensure correct connectivity. @@ -2635,7 +2907,7 @@ See our [Migrating to Element Web](docs/configuring-playbook-riot-web.md#migrati ## Steam bridging support via mx-puppet-steam -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. +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://codeberg.org/icewind/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. # 2020-07-01 @@ -2672,7 +2944,7 @@ As always, re-running the playbook is enough to get the updated bits. ## SMS bridging requires db reset -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`. +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 required var `matrix_sms_bridge_default_region`. 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. @@ -2702,12 +2974,12 @@ Until the issue gets fixed, we're making User Directory search not go to ma1sd b ## Newer IRC bridge (with potential breaking change) -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 +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 according 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 +change is necessary. `mappings` is not part of the default configuration. @@ -2867,7 +3139,7 @@ As per this [advisory blog post](https://matrix.org/blog/2019/11/09/avoiding-unw 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**. -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. +As with anything else, these new defaults can be overridden by changing the `matrix_synapse_allow_public_rooms_without_auth` and `matrix_synapse_allow_public_rooms_over_federation` variables, respectively. # 2019-10-05 @@ -3421,7 +3693,7 @@ The following changes had to be done: - 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. -- `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. +- `matrix_postgres_use_external` has been superseded 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. - 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`) @@ -3610,7 +3882,7 @@ matrix_riot_web_integrations_jitsi_widget_url: "https://dimension.t2bot.io/widge 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. -You may wish to reenable TLSv1 if you need to access Riot in older browsers. +You may wish to re-enable TLSv1 if you need to access Riot in older browsers. Note: Currently the dockerized nginx doesn't support TLSv1.3. See https://github.com/nginxinc/docker-nginx/issues/190 for more details. diff --git a/CHANGELOG.md.license b/CHANGELOG.md.license new file mode 100644 index 000000000..75cfbe6c7 --- /dev/null +++ b/CHANGELOG.md.license @@ -0,0 +1,14 @@ +SPDX-FileCopyrightText: 2018 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2018 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2018 Aaron Raimist +SPDX-FileCopyrightText: 2019 Thomas Kuehne +SPDX-FileCopyrightText: 2020 John Goerzen +SPDX-FileCopyrightText: 2020 Julian Foad +SPDX-FileCopyrightText: 2021 Agustin Ferrario +SPDX-FileCopyrightText: 2021 Dan Arnfield +SPDX-FileCopyrightText: 2022 Jost Alemann +SPDX-FileCopyrightText: 2023 Felix Stupp +SPDX-FileCopyrightText: 2023 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 000000000..0e259d42c --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 000000000..fc2cf8e6b --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,18 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO +EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Makefile b/Makefile index 3379b8fff..9ac77bb07 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + .PHONY: roles lint help: ## Show this help. diff --git a/README.md b/README.md index 4fad24e8c..8e90f577d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![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) +[![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&fetchMode=summary)](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) [![donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/s.pantaleev/donate) [![REUSE status](https://api.reuse.software/badge/github.com/spantaleev/matrix-docker-ansible-deploy)](https://api.reuse.software/info/github.com/spantaleev/matrix-docker-ansible-deploy) # Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker @@ -53,6 +53,7 @@ The homeserver is the backbone of your Matrix system. Choose one from the follow | [Synapse](https://github.com/element-hq/synapse) | ✅ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network | [Link](docs/configuring-playbook-synapse.md) | | [Conduit](https://conduit.rs) | ❌ | 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 | [Link](docs/configuring-playbook-conduit.md) | | [conduwuit](https://conduwuit.puppyirl.gay/) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit is a fork of Conduit. | [Link](docs/configuring-playbook-conduwuit.md) | +| [continuwuity](https://continuwuity.org) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. continuwuity is a continuation of conduwuit. | [Link](docs/configuring-playbook-continuwuity.md) | | [Dendrite](https://github.com/element-hq/dendrite) | ❌ | 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. | [Link](docs/configuring-playbook-dendrite.md) | ### Clients @@ -65,6 +66,7 @@ Web clients for Matrix that you can host on your own domains. | [Hydrogen](https://github.com/element-hq/hydrogen-web) | ❌ | Lightweight Matrix client with legacy and mobile browser support | [Link](docs/configuring-playbook-client-hydrogen.md) | | [Cinny](https://github.com/ajbura/cinny) | ❌ | Simple, elegant and secure web client | [Link](docs/configuring-playbook-client-cinny.md) | | [SchildiChat Web](https://schildi.chat/) | ❌ | Based on Element Web, with a more traditional instant messaging experience | [Link](docs/configuring-playbook-client-schildichat-web.md) | +| [FluffyChat Web](https://fluffychat.im/) | ❌ | The cutest messenger in Matrix | [Link](docs/configuring-playbook-client-fluffychat-web.md) | ### Server Components @@ -79,6 +81,8 @@ Services that run on the server to make the various parts of your installation w | [Exim](https://www.exim.org/) | ✅ | Mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server) | [Link](docs/configuring-playbook-email.md) | | [ma1sd](https://github.com/ma1uta/ma1sd) | ❌ | Matrix Identity Server | [Link](docs/configuring-playbook-ma1sd.md) | [ddclient](https://github.com/linuxserver/docker-ddclient) | ❌ | Dynamic DNS | [Link](docs/configuring-playbook-dynamic-dns.md) | +| [LiveKit Server](https://github.com/livekit/livekit) | ❌ | WebRTC server for audio/video calls | [Link](docs/configuring-playbook-livekit-server.md) | +| [Livekit JWT Service](https://github.com/livekit/livekit-jwt-service) | ❌ | JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md) | [Link](docs/configuring-playbook-livekit-jwt-service.md) | ### Authentication @@ -91,7 +95,7 @@ Extend and modify how users are authenticated on your homeserver. | [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3) (advanced) | ❌ | LDAP Auth password provider module | [Link](docs/configuring-playbook-ldap-auth.md) | | [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) (advanced) | ❌ | Proxy that handles Matrix registration requests and forwards them to LDAP | [Link](docs/configuring-playbook-matrix-ldap-registration-proxy.md) | | [matrix-registration](https://github.com/ZerataX/matrix-registration) | ❌ | Simple python application to have a token based Matrix registration | [Link](docs/configuring-playbook-matrix-registration.md) | -| [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) (UVS) | ❌ | Service to verify details of a user based on an Open ID token | [Link](docs/configuring-playbook-user-verification-service.md) | +| [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) | ❌ | Service to verify details of a user based on an Open ID token | [Link](docs/configuring-playbook-user-verification-service.md) | | [synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispam) (advanced) | ❌ | Spam checker module | [Link](docs/configuring-playbook-synapse-simple-antispam.md) | ### File Storage @@ -116,6 +120,7 @@ Bridges can be used to connect your Matrix installation with third-party communi | [mautrix-gmessages](https://github.com/mautrix/gmessages) | ❌ | Bridge to [Google Messages](https://messages.google.com/) | [Link](docs/configuring-playbook-bridge-mautrix-gmessages.md) | | [mautrix-whatsapp](https://github.com/mautrix/whatsapp) | ❌ | Bridge to [WhatsApp](https://www.whatsapp.com/) | [Link](docs/configuring-playbook-bridge-mautrix-whatsapp.md) | | [mautrix-wsproxy](https://github.com/mautrix/wsproxy) | ❌ | Bridge to Android SMS or Apple iMessage | [Link](docs/configuring-playbook-bridge-mautrix-wsproxy.md) | +| [mautrix-bluesky](https://github.com/mautrix/bluesky) | ❌ | Bridge to [Bluesky](https://bsky.social/) | [Link](docs/configuring-playbook-bridge-mautrix-bluesky.md) | | [mautrix-twitter](https://github.com/mautrix/twitter) | ❌ | Bridge to [Twitter](https://twitter.com/) | [Link](docs/configuring-playbook-bridge-mautrix-twitter.md) | | [mautrix-googlechat](https://github.com/mautrix/googlechat) | ❌ | Bridge to [Google Chat](https://en.wikipedia.org/wiki/Google_Chat) | [Link](docs/configuring-playbook-bridge-mautrix-googlechat.md) | | [mautrix-meta](https://github.com/mautrix/instagram) | ❌ | Bridge to [Messenger](https://messenger.com/) and [Instagram](https://instagram.com/) | Link for [Messenger](docs/configuring-playbook-bridge-mautrix-meta-messenger.md) / [Instagram](docs/configuring-playbook-bridge-mautrix-meta-instagram.md) | @@ -127,15 +132,12 @@ Bridges can be used to connect your Matrix installation with third-party communi | [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) | ❌ | Bridge to [Slack](https://slack.com/) | [Link](docs/configuring-playbook-bridge-appservice-slack.md) | | [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) | ❌ | Bridge for generic webhooks and multiple project management services, such as GitHub, GitLab, Figma, and Jira in particular | [Link](docs/configuring-playbook-bridge-hookshot.md) | | [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) | ❌ | Bridge to SMS | [Link](docs/configuring-playbook-bridge-matrix-bridge-sms.md) | +| [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) | ❌ | Bridge to [Steam](https://steampowered.com/) | [Link](docs/configuring-playbook-bridge-steam.md) | | [matrix-wechat](https://github.com/duo/matrix-wechat) | ❌ | Bridge to [WeChat](https://www.wechat.com/) | [Link](docs/configuring-playbook-bridge-wechat.md) | +| [MatrixZulipBridge](https://github.com/GearKite/MatrixZulipBridge) | ❌ | Puppeting appservice bridge for [Zulip](https://zulip.com/) | [Link](docs/configuring-playbook-bridge-zulip.md) | | [Heisenbridge](https://github.com/hifi/heisenbridge) | ❌ | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-heisenbridge.md) | -| [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) | ❌ | Bridge to [Skype](https://www.skype.com) | [Link](docs/configuring-playbook-bridge-go-skype-bridge.md) | -| [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) | ❌ | Bridge to [Slack](https://slack.com) | [Link](docs/configuring-playbook-bridge-mx-puppet-slack.md) | -| [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) | ❌ | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) | [Link](docs/configuring-playbook-bridge-mx-puppet-instagram.md) | -| [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) | [Link](docs/configuring-playbook-bridge-mx-puppet-twitter.md) | -| [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-discord.md) | | [mx-puppet-groupme](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme) | ❌ | Bridge to [GroupMe](https://groupme.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-groupme.md) | -| [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-steam.md) | +| [mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-steam.md) | | [Postmoogle](https://github.com/etkecc/postmoogle) | ❌ | Email to Matrix bridge | [Link](docs/configuring-playbook-bridge-postmoogle.md) | ### Bots @@ -177,12 +179,14 @@ Various services that don't fit any other categories. | [synapse_auto_accept_invite](https://github.com/matrix-org/synapse-auto-accept-invite) | ❌ | Synapse module to automatically accept invites | [Link](docs/configuring-playbook-synapse-auto-accept-invite.md) | | [synapse_auto_compressor](https://github.com/matrix-org/rust-synapse-compress-state/#automated-tool-synapse_auto_compressor) | ❌ | Cli tool that automatically compresses `state_groups` database table in background | [Link](docs/configuring-playbook-synapse-auto-compressor.md) | | [Matrix Corporal](https://github.com/devture/matrix-corporal) (advanced) | ❌ | Reconciliator and gateway for a managed Matrix server | [Link](docs/configuring-playbook-matrix-corporal.md) | +| [Matrix.to](https://github.com/matrix-org/matrix.to) | ❌ | Simple URL redirection service for the Matrix ecosystem | [Link](docs/configuring-playbook-matrixto.md) | | [Etherpad](https://etherpad.org) | ❌ | Open source collaborative text editor | [Link](docs/configuring-playbook-etherpad.md) | | [Jitsi](https://jitsi.org/) | ❌ | Open source video-conferencing platform | [Link](docs/configuring-playbook-jitsi.md) | | [Cactus Comments](https://cactus.chat) | ❌ | Federated comment system built on Matrix | [Link](docs/configuring-playbook-cactus-comments.md) | | [Pantalaimon](https://github.com/matrix-org/pantalaimon) | ❌ | E2EE aware proxy daemon | [Link](docs/configuring-playbook-pantalaimon.md) | | [Sygnal](https://github.com/matrix-org/sygnal) | ❌ | Push gateway | [Link](docs/configuring-playbook-sygnal.md) | | [ntfy](https://ntfy.sh) | ❌ | Push notifications server | [Link](docs/configuring-playbook-ntfy.md) | +| [Element Call](https://github.com/element-hq/element-call) | ❌ | A native Matrix video conferencing application | [Link](docs/configuring-playbook-element-call.md) | ## 🆕 Changes diff --git a/README.md.license b/README.md.license new file mode 100644 index 000000000..430773b9b --- /dev/null +++ b/README.md.license @@ -0,0 +1,34 @@ +SPDX-FileCopyrightText: 2017 - 2025 MDAD project contributors +SPDX-FileCopyrightText: 2017 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2018 - 2021 Aaron Raimist +SPDX-FileCopyrightText: 2019 - 2020 Hugues Morisset +SPDX-FileCopyrightText: 2019 Edgars Voroboks +SPDX-FileCopyrightText: 2019 Eduardo Beltrame +SPDX-FileCopyrightText: 2020 Björn Marten +SPDX-FileCopyrightText: 2020 Lee Verberne +SPDX-FileCopyrightText: 2020 Marcel Partap +SPDX-FileCopyrightText: 2020 Matthew Croughan +SPDX-FileCopyrightText: 2020 Tulir Asokan +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 Prasiddh Pooskur +SPDX-FileCopyrightText: 2021 Toni Spets +SPDX-FileCopyrightText: 2021 Yannick Goossens +SPDX-FileCopyrightText: 2022 - 2023 Cody Wyatt Neiman +SPDX-FileCopyrightText: 2022 - 2025 Nikita Chernyi +SPDX-FileCopyrightText: 2022 Andrew Morgan +SPDX-FileCopyrightText: 2022 Christos Karamolegkos +SPDX-FileCopyrightText: 2022 Dennis Ciba +SPDX-FileCopyrightText: 2022 Julian Foad +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 Kim Brose +SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister +SPDX-FileCopyrightText: 2023 Joe Kappus +SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/reuse.toml b/REUSE.toml similarity index 54% rename from reuse.toml rename to REUSE.toml index 77ad4587b..ba7d641f7 100644 --- a/reuse.toml +++ b/REUSE.toml @@ -7,9 +7,23 @@ version = 1 # Computer-generated files and other files which cannot be copyrighted [[annotations]] path = [ + ".github/renovate.json", + "collections/requirements.yml", "i18n/.gitignore", + "i18n/PUBLISHED_LANGUAGES", "i18n/requirements.txt", - "i18n/PUBLISHED_LANGUAGES" + "roles/custom/**/*.repo", + ".codespellrc", + ".editorconfig", + ".envrc", + ".gitattributes", + ".gitignore", + ".pre-commit-config.yaml", + ".yamllint", + "ansible.cfg", + "flake.lock", + "flake.nix", + "requirements.yml" ] SPDX-FileCopyrightText = "NONE" SPDX-License-Identifier = "CC0-1.0" @@ -21,5 +35,5 @@ path = [ "i18n/**/*.pot" ] precedence = "aggregate" -SPDX-FileCopyrightText = "Slavi Pantaleev, MDAD community members" +SPDX-FileCopyrightText = "2024 - 2025 Slavi Pantaleev, MDAD project contributors" SPDX-License-Identifier = "AGPL-3.0-or-later" diff --git a/YEAR-IN-REVIEW.md b/YEAR-IN-REVIEW.md index bac3d10ac..8ca6db9cb 100644 --- a/YEAR-IN-REVIEW.md +++ b/YEAR-IN-REVIEW.md @@ -1,10 +1,17 @@ + + # 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. 2023 is probably [the year of AI](https://journal.everypixel.com/2023-the-year-of-ai), with millions of people jumping aboard [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/chatgpt) train. matrix-docker-ansible-deploy is no stranger to this and 2023 began with a PR from [bertybuttface](https://github.com/bertybuttface) who added support for [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#chatgpt-support)). While OpenAI's chat GPT website was frequently overloaded in the past, their API was up which made using this bot both convenient and more reliable. -AI aside, with the playbook's focus being containers, we're **doubling down on being "container native"** and becoming more interoperable for people hosting other containers on the Matrix server. In [2022](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/YEAR-IN-REVIEW.md#2022), we've announced a few sibling Ansible playbooks, their use of [Traefik](https://doc.traefik.io/traefik/) and the possiblity of matrix-docker-ansible-deploy also switching to this reverse-proxy. This prediction materialized quickly. The **largest change** in the playbook in 2023 happened way back in February - matrix-docker-ansible-deploy [starting the switch from nginx to Traefik](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-reverse-proxy-configuration-changes-and-initial-traefik-support) and then quickly [making Treafik the default reverse-proxy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#traefik-is-the-default-reverse-proxy-now). As noted in the changelog entries, we envisioned a quick and complete elimination of `matrix-nginx-proxy`, but at the end of 2023, it hasn't happened yet. The playbook is already using Traefik as the front-most reverse-proxy, but nginx (via `matrix-nginx-proxy`) is still around - it has taken a step back and is only used internally for new setups. Work got to a stall due to: +AI aside, with the playbook's focus being containers, we're **doubling down on being "container native"** and becoming more interoperable for people hosting other containers on the Matrix server. In [2022](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/YEAR-IN-REVIEW.md#2022), we've announced a few sibling Ansible playbooks, their use of [Traefik](https://doc.traefik.io/traefik/) and the possibility of matrix-docker-ansible-deploy also switching to this reverse-proxy. This prediction materialized quickly. The **largest change** in the playbook in 2023 happened way back in February - matrix-docker-ansible-deploy [starting the switch from nginx to Traefik](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-reverse-proxy-configuration-changes-and-initial-traefik-support) and then quickly [making Treafik the default reverse-proxy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#traefik-is-the-default-reverse-proxy-now). As noted in the changelog entries, we envisioned a quick and complete elimination of `matrix-nginx-proxy`, but at the end of 2023, it hasn't happened yet. The playbook is already using Traefik as the front-most reverse-proxy, but nginx (via `matrix-nginx-proxy`) is still around - it has taken a step back and is only used internally for new setups. Work got to a stall due to: * complexity: untangling the overly large and messy `matrix-nginx-proxy` component is difficult * the current setup became "good enough" because nginx has become an internal implementation detail for those who have migrated to Traefik. Traefik is already the default public reverse-proxy and gives better possibilities to people wishing to run other web-exposed containers on their Matrix server via [Docker Compose](https://docs.docker.com/compose/), other Ansible playbooks like [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) (more about this one, below) or any other way. 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 34a660c7b..266fad593 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,15 @@ + + # Table of Contents -## ⬇️ Installaton guides +## ⬇️ Installation guides There are two installation guides available for beginners and advanced users. @@ -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) @@ -82,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 1962c83bb..fb67c3838 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/). @@ -11,10 +20,13 @@ To manually check which version of Ansible you're on, run: `ansible --version`. For the **best experience**, we recommend getting the **latest version of Ansible available**. -We're not sure what's the minimum version of Ansible that can run this playbook successfully. The lowest version that we've confirmed (on 2022-11-26) to be working fine is: `ansible-core` (`2.11.7`) combined with `ansible` (`4.10.0`). +We're not sure what's the minimum version of Ansible that can run this playbook successfully. The lowest version that we suspect (on 2025-09-03) to be working fine is: `ansible-core` (`2.15.1`). If your distro ships with an Ansible version older than this, you may run into issues. Consider [Upgrading Ansible](#upgrading-ansible) or [using Ansible via Docker](#using-ansible-via-docker). +> [!WARNING] +> One reason for the version requirement being as such is that the playbook by default installs Docker for you using [this Docker role](https://github.com/geerlingguy/ansible-role-docker) which [has a hard requirement on Ansible v2.15.1](https://github.com/geerlingguy/ansible-role-docker/commit/7f44a1d9ad8132819ea9852918bca5dab8757cd0). If you install Docker yourself another way, you can tell the playbook to skip running this role (by adding `matrix_playbook_docker_installation_enabled: false` to your `vars.yml` configuration). It may then be possible to get the playbook running on an older version of Ansible. Still, this is a complication and your mileage may vary. We recommend [upgrading Ansible](#upgrading-ansible) instead of going into uncharted territory. + ## Upgrading Ansible Depending on your distribution, you may be able to upgrade Ansible in a few different ways: @@ -29,7 +41,7 @@ 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: @@ -49,50 +61,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-2 +ghcr.io/devture/ansible:11.6.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-2 +ghcr.io/devture/ansible:11.6.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: @@ -100,11 +116,11 @@ 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 -Because you're `root` in the container running Ansible and this likely differs fom the owner (your regular user account) of the playbook directory outside of the container, certain playbook features which use `git` locally may report warnings such as: +Because you're `root` in the container running Ansible and this likely differs from the owner (your regular user account) of the playbook directory outside of the container, certain playbook features which use `git` locally may report warnings such as: > fatal: unsafe repository ('/work' is owned by someone else) > To add an exception for this directory, call: 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 eee2dd0a5..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. @@ -97,16 +105,12 @@ After configuring the playbook and potentially [adjusting your DNS records](#adj ```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-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 ee5c11700..8827f759c 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. @@ -38,7 +45,7 @@ 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 @@ -88,13 +95,13 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ## Usage -If you made it through all the steps above and your main control room was joined by a user called `@draupnir-main:example.com` you have succesfully installed Draupnir for All and can now start using it. +If you made it through all the steps above and your main control room was joined by a user called `@draupnir-main:example.com` you have successfully installed Draupnir for All and can now start using it. The installation of Draupnir for all in this playbook is very much Alpha quality. Usage-wise, Draupnir for all is almost identical to Draupnir bot mode. ### Granting Users the ability to use D4A -Draupnir for all includes several security measures like that it only allows users that are on its allow list to ask for a bot. To add a user to this list we have 2 primary options. Using the chat to tell Draupnir to do this for us or if you want to automatically do it by sending `m.policy.rule.user` events that target the subject you want to allow provisioning for with the `org.matrix.mjolnir.allow` recomendation. Using the chat is recomended. +Draupnir for all includes several security measures like that it only allows users that are on its allow list to ask for a bot. To add a user to this list we have 2 primary options. Using the chat to tell Draupnir to do this for us or if you want to automatically do it by sending `m.policy.rule.user` events that target the subject you want to allow provisioning for with the `org.matrix.mjolnir.allow` recommendation. Using the chat is recommended. The bot requires a powerlevel of 50 in the management room to control who is allowed to use the bot. The bot does currently not say anything if this is true or false. (This is considered a bug and is documented in issue [#297](https://github.com/the-draupnir-project/Draupnir/issues/297)) diff --git a/docs/configuring-playbook-backup-borg.md b/docs/configuring-playbook-backup-borg.md index 135ca8501..b21c66ad1 100644 --- a/docs/configuring-playbook-backup-borg.md +++ b/docs/configuring-playbook-backup-borg.md @@ -1,8 +1,8 @@ + # 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 a9c3d2c66..60d9bd94e 100644 --- a/docs/configuring-playbook-bot-baibot.md +++ b/docs/configuring-playbook-bot-baibot.md @@ -1,3 +1,10 @@ + + # Setting up baibot (optional)

@@ -235,7 +242,7 @@ matrix_bot_baibot_config_agents_static_definitions_openai_config_api_key: "YOUR_ # matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}" # If you'd like to use another text-generation agent, uncomment and adjust: -# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-4o +# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-4.1 ``` Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/openai`. diff --git a/docs/configuring-playbook-bot-buscarron.md b/docs/configuring-playbook-bot-buscarron.md index e2762ed94..969c1c93d 100644 --- a/docs/configuring-playbook-bot-buscarron.md +++ b/docs/configuring-playbook-bot-buscarron.md @@ -1,3 +1,11 @@ + + # Setting up Buscarron (optional) The playbook can install and configure [Buscarron](https://github.com/etkecc/buscarron) for you. diff --git a/docs/configuring-playbook-bot-chatgpt.md b/docs/configuring-playbook-bot-chatgpt.md index 2ddd72bfd..4424c3b4d 100644 --- a/docs/configuring-playbook-bot-chatgpt.md +++ b/docs/configuring-playbook-bot-chatgpt.md @@ -1,90 +1,25 @@ -# Setting up matrix-bot-chatgpt (optional, unmaintained) + -The playbook can install and configure [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) for you. +# Setting up matrix-chatgpt-bot (optional, removed) -Talk to [ChatGPT](https://openai.com/blog/chatgpt/) via your favourite Matrix client! +🪦 The playbook used to be able to install and configure [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot), but no longer includes this component. -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. +While not a 1:1 replacement, the bot'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). -## Prerequisites +## Uninstalling matrix-chatgpt-bot manually -### Obtain an OpenAI API key - -To use the bot, you'd need to obtain an API key from [https://platform.openai.com/account/api-keys](https://platform.openai.com/account/api-keys). - -### Register the bot account - -The playbook does not automatically create users for you. You **need to register the bot user manually** before setting up the bot. - -Generate a strong password for the bot. 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 matrix-chatgpt-bot 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=bot.chatgpt password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user -``` - -### Obtain an access token and create encryption keys - -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. - -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). - -## Adjusting the playbook configuration - -To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `API_KEY_HERE` with the API key retrieved [here](#obtain-an-openai-api-key) and `ACCESS_TOKEN_HERE` with the access token created [here](#obtain-an-access-token-and-create-encryption-keys), respectively. - -```yaml -matrix_bot_chatgpt_enabled: true - -matrix_bot_chatgpt_openai_api_key: 'API_KEY_HERE' - -# Uncomment and adjust this part if you'd like to use a username different than the default -# matrix_bot_chatgpt_matrix_bot_username_localpart: 'bot.chatgpt' - -matrix_bot_chatgpt_matrix_access_token: 'ACCESS_TOKEN_HERE' - -# Configuring the system promt used, needed if the bot is used for special tasks. -# More information: https://github.com/mustvlad/ChatGPT-System-Prompts -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 +systemctl disable --now matrix-bot-chatgpt.service -## 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 +rm -rf /matrix/chatgpt ``` - -**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. - -## Usage - -To use the bot, invite it to the room you specified on your `vars.yml` file (`/invite @bot.chatgpt:example.com` where `example.com` is your base domain, not the `matrix.` domain). - -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. - -## 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 965906b16..83945f8f7 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. @@ -45,11 +54,11 @@ To enable the native E2EE support, add the following configuration to your `vars ```yaml # Enables the native E2EE support -matrix_bot_draupnir_enable_experimental_rust_crypto: true +matrix_bot_draupnir_config_experimentalRustCrypto: true # 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: "CLEAN_ACCESS_TOKEN_HERE" +matrix_bot_draupnir_config_accessToken: "CLEAN_ACCESS_TOKEN_HERE" ``` ## Adjusting the playbook configuration @@ -64,13 +73,13 @@ 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" ``` ### Create and invite the bot to the management room @@ -133,9 +142,23 @@ 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 +``` + +### Enabling synapse-http-antispam support + +Certain protections in Draupnir require the [synapse-http-antispam](https://github.com/maunium/synapse-http-antispam) module and a Synapse homeserver plus homeserver admin status to function. This module can be enabled in the playbook via setting `matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled` to `true` and making sure that Draupnir admin API access is enabled. + +```yaml +# Enables the integration between Draupnir and synapse-http-antispam module. +matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled: true + +# Enables draupnir to access Synapse admin APIs. This is required for the module functionality to take full effect. +matrix_bot_draupnir_admin_api_enabled: true ``` +These protections need to be manually activated and consulting the [enabling protections](#enabling-built-in-protections) guide can be helpful or consulting upstream documentation. + + # 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. @@ -235,16 +245,12 @@ After configuring the playbook and potentially [adjusting your DNS records](#adj ```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-bot-honoroit.md b/docs/configuring-playbook-bot-honoroit.md index 82e0df2c7..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. diff --git a/docs/configuring-playbook-bot-matrix-registration-bot.md b/docs/configuring-playbook-bot-matrix-registration-bot.md index 96c9dd54a..706ea5991 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. @@ -25,6 +37,10 @@ matrix_synapse_enable_registration: true # Restrict registration to users with a token matrix_synapse_registration_requires_token: true + +# Set an optional command prefix for the bot. This can be any arbitrary string, including whitespace. +# Example: "!regbot " +matrix_bot_matrix_registration_bot_bot_prefix: "" ``` The bot account will be created automatically. @@ -65,7 +81,7 @@ Send `help` to the bot to see the available commands. You can also refer to the upstream [Usage documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands). -If you have any questions, or if you need help setting it up, read the [troublshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md) or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de). +If you have any questions, or if you need help setting it up, read the [troubleshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md) or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de). To clean the cache (session & encryption data) after you changed the bot's username, changed the login method from access_token to password etc… you can use: diff --git a/docs/configuring-playbook-bot-matrix-reminder-bot.md b/docs/configuring-playbook-bot-matrix-reminder-bot.md index ad81b0f70..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. diff --git a/docs/configuring-playbook-bot-maubot.md b/docs/configuring-playbook-bot-maubot.md index e45ca87db..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. diff --git a/docs/configuring-playbook-bot-mjolnir.md b/docs/configuring-playbook-bot-mjolnir.md index ec56f345f..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. @@ -178,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. diff --git a/docs/configuring-playbook-bridge-appservice-discord.md b/docs/configuring-playbook-bridge-appservice-discord.md index 6ea6b88db..6c4f77a73 100644 --- a/docs/configuring-playbook-bridge-appservice-discord.md +++ b/docs/configuring-playbook-bridge-appservice-discord.md @@ -1,6 +1,15 @@ + + # 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. +**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge supported by the playbook. - For using as a Bot we are recommend the Appservice Discord bridge (the one being discussed here), because it supports plumbing. - For personal use 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. @@ -43,16 +52,13 @@ 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. 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) diff --git a/docs/configuring-playbook-bridge-appservice-irc.md b/docs/configuring-playbook-bridge-appservice-irc.md index da655a77b..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. @@ -75,16 +84,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-appservice-kakaotalk.md b/docs/configuring-playbook-bridge-appservice-kakaotalk.md index c8fbb12fc..99ebc1ef0 100644 --- a/docs/configuring-playbook-bridge-appservice-kakaotalk.md +++ b/docs/configuring-playbook-bridge-appservice-kakaotalk.md @@ -1,3 +1,12 @@ + + # 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. @@ -40,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 diff --git a/docs/configuring-playbook-bridge-appservice-slack.md b/docs/configuring-playbook-bridge-appservice-slack.md index 4d602da35..dc9a579e6 100644 --- a/docs/configuring-playbook-bridge-appservice-slack.md +++ b/docs/configuring-playbook-bridge-appservice-slack.md @@ -1,7 +1,18 @@ + + # Setting up Appservice Slack bridging (optional) **Notes**: -- Bridging to [Slack](https://slack.com) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridges supported by the playbook. +- Bridging to [Slack](https://slack.com) can also happen via the [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridge supported by the playbook. - Currently (as of November, 2024) **this component is not available for new installation unless you have already created a classic Slack application** (which the bridge makes use of in order to enable bridging between Slack and Matrix), because the creation of classic Slack applications has been discontinued since June 4 2024. The author of the bridge claims [here](https://github.com/matrix-org/matrix-appservice-slack/issues/789#issuecomment-2172947787) that he plans to support the modern Slack application and until then "the best (and only) option for new installations is to use the webhook bridging". The playbook can install and configure [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) for you. @@ -83,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 diff --git a/docs/configuring-playbook-bridge-appservice-webhooks.md b/docs/configuring-playbook-bridge-appservice-webhooks.md index 1fbecfdb1..03e24af9c 100644 --- a/docs/configuring-playbook-bridge-appservice-webhooks.md +++ b/docs/configuring-playbook-bridge-appservice-webhooks.md @@ -1,106 +1,30 @@ -# Setting up Appservice Webhooks bridging (optional, deprecated) + -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. +# Setting up Appservice Webhooks bridging (optional, removed) -See the project's [documentation](https://github.com/turt2live/matrix-appservice-webhooks/blob/master/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 [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks), but no longer includes this component, as it has been deprecated since more than several years. -## Adjusting the playbook configuration +You may wish to use [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) instead. -To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +## Uninstalling the bridge manually -```yaml -matrix_appservice_webhooks_enabled: true -matrix_appservice_webhooks_api_secret: '' +If you still have matrix-appservice-webhooks 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: -# 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. -# -# matrix_synapse_configuration_extension_yaml: | -# 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 -``` - -**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. - -## Usage - -To use the bridge, you need to invite the bridge bot user to your room in either way. - -- Send `/invite @_webhook:example.com` (**Note**: Make sure you have administration permissions in your room) -- Add the bridge bot to a private channel (personal channels imply you being an administrator) - -You then need to send a message to the bridge bot to receive a private message including the webhook link: - -``` -!webhook -``` - -The JSON body for posting messages will have to look like this: - -```json -{ - "text": "Hello world!", - "format": "plain", - "displayName": "My Cool Webhook", - "avatar_url": "http://i.imgur.com/IDOBtEJ.png" -} -``` - -You can test this via curl like so: - -```sh -curl --header "Content-Type: application/json" \ ---data '{ -"text": "Hello world!", -"format": "plain", -"displayName": "My Cool Webhook", -"avatar_url": "http://i.imgur.com/IDOBtEJ.png" -}' \ - -``` - -### Setting Webhooks with Dimension integration manager - -If you're using the [Dimension integration manager](configuring-playbook-dimension.md), you can configure the Webhooks bridge with it. - -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: +systemctl disable --now matrix-appservice-webhooks.service -```yaml -# Valid values: info, verbose -matrix_appservice_webhooks_log_level: 'verbose' +rm -rf /matrix/appservice-webhooks ``` diff --git a/docs/configuring-playbook-bridge-beeper-linkedin.md b/docs/configuring-playbook-bridge-beeper-linkedin.md index 995ea6faa..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 diff --git a/docs/configuring-playbook-bridge-go-skype-bridge.md b/docs/configuring-playbook-bridge-go-skype-bridge.md index 22ec97905..c32bd20da 100644 --- a/docs/configuring-playbook-bridge-go-skype-bridge.md +++ b/docs/configuring-playbook-bridge-go-skype-bridge.md @@ -1,65 +1,26 @@ -# Setting up Go Skype Bridge bridging (optional) + -See the project's [documentation](https://github.com/kelaresg/go-skype-bridge/blob/master/README.md) to learn what it does and why it might be useful to you. +# Setting up Go Skype Bridge bridging (optional, removed) -## Prerequisite (optional) +🪦 The playbook used to be able to install and configure [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge), but no longer includes this component, as Skype has been discontinued since May 2025. -### 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 Go Skype 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 bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: - -```yaml -matrix_go_skype_bridge_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. - -**Note**: when following the guide to configure the bridge, make sure to replace `_mautrix_SERVICENAME_` in the variable names with `_go_skype_bridge_`. - -## 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` - - `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 `@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 +systemctl disable --now matrix-go-skype-bridge.service -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: +rm -rf /matrix/go-skype-bridge -```yaml -# Valid values: fatal, error, warn, info, debug -matrix_go_skype_bridge_log_level: 'info' +/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_go_skype_bridge;' ``` diff --git a/docs/configuring-playbook-bridge-heisenbridge.md b/docs/configuring-playbook-bridge-heisenbridge.md index d8f0dcde6..552a90635 100644 --- a/docs/configuring-playbook-bridge-heisenbridge.md +++ b/docs/configuring-playbook-bridge-heisenbridge.md @@ -1,3 +1,11 @@ + + # 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. @@ -57,16 +65,12 @@ After configuring the playbook and potentially [adjusting your DNS records](#adj ```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-hookshot.md b/docs/configuring-playbook-bridge-hookshot.md index 8aacefd66..021558ddc 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. @@ -6,8 +16,6 @@ Hookshot can bridge [Webhooks](https://en.wikipedia.org/wiki/Webhook) from softw See the project's [documentation](https://matrix-org.github.io/matrix-hookshot/latest/hookshot.html) to learn what it does and why it might be useful to you. -**Note**: the playbook also supports [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md), which however was deprecated by its author. - ## Prerequisites ### Download GitHub app private key (optional) @@ -25,7 +33,7 @@ matrix_hookshot_enabled: true # Uncomment to enable end-to-bridge encryption. # See: https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html -# matrix_hookshot_experimental_encryption_enabled: true +# matrix_hookshot_encryption_enabled: true # Uncomment and paste the contents of GitHub app private key to enable GitHub bridge. # Alternatively, you can use one of the other methods explained below on the "Manage GitHub Private Key with aux role" section. @@ -93,7 +101,6 @@ Unless indicated otherwise, the following endpoints are reachable on your `matri | github oauth | `/hookshot/webhooks/oauth` | `matrix_hookshot_github_oauth_endpoint` | GitHub "Callback URL" | | jira oauth | `/hookshot/webhooks/jira/oauth` | `matrix_hookshot_jira_oauth_endpoint` | Jira OAuth | | figma endpoint | `/hookshot/webhooks/figma/webhook` | `matrix_hookshot_figma_endpoint` | Figma | -| 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 | @@ -116,20 +123,12 @@ aux_file_definitions: - dest: "{{ matrix_hookshot_base_path }}/{{ matrix_hookshot_github_private_key_file }}" content: "{{ lookup('file', '/path/to/your-github-private-key.pem') }}" mode: '0400' - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" ``` For more information, see the documentation in the [default configuration of the aux role](https://github.com/mother-of-all-self-hosting/ansible-role-aux/blob/main/defaults/main.yml). -### 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`. - -### 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_'`). - ### Enable metrics The playbook can enable and configure the metrics of the service for you. @@ -162,7 +161,7 @@ To `matrix_hookshot_container_labels_metrics_middleware_basic_auth_users`, set t #### Enable Grafana (optional) -Probably you wish to enable Grafana along with Prometheus for generating graphs of the metics. +Probably you wish to enable Grafana along with Prometheus for generating graphs of the metrics. To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions. diff --git a/docs/configuring-playbook-bridge-matrix-bridge-sms.md b/docs/configuring-playbook-bridge-matrix-bridge-sms.md index c580f26c5..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. @@ -46,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 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..26ea8f778 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. 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 0a8c743bb..d53af91af 100644 --- a/docs/configuring-playbook-bridge-mautrix-discord.md +++ b/docs/configuring-playbook-bridge-mautrix-discord.md @@ -1,8 +1,20 @@ + + # 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) -**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) and [matrix-appservice-discord](configuring-playbook-bridge-appservice-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) bridge 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` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook. @@ -14,7 +26,7 @@ See the project's [documentation](https://docs.mau.fi/bridges/go/discord/index.h There are 2 ways to login to discord using this bridge, either by [scanning a QR code](#method-1-login-using-qr-code-recommended) using the Discord mobile app **or** by using a [Discord token](#method-2-login-using-discord-token-not-recommended). -If this is a dealbreaker for you, consider using one of the other Discord bridges supported by the playbook: [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) or [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md). These come with their own complexity and limitations, however, so we recommend that you proceed with this one if possible. +If this is a dealbreaker for you, consider using [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md). This comes with its own complexity and limitations, however, so we recommend that you proceed with this one if possible. ### Enable Appservice Double Puppet or Shared Secret Auth (optional) @@ -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 diff --git a/docs/configuring-playbook-bridge-mautrix-facebook.md b/docs/configuring-playbook-bridge-mautrix-facebook.md index 67d2b3d9b..02ffa57c4 100644 --- a/docs/configuring-playbook-bridge-mautrix-facebook.md +++ b/docs/configuring-playbook-bridge-mautrix-facebook.md @@ -1,92 +1,32 @@ -# Setting up Mautrix Facebook bridging (optional, deprecated) + -**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. +# Setting up Mautrix Facebook bridging (optional, removed) -The playbook can install and configure [mautrix-facebook](https://github.com/mautrix/facebook) for you. +🪦 The playbook used to be able to install and configure [mautrix-facebook](https://github.com/mautrix/facebook), but no longer includes this component, as it has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge. -See the project's [documentation](https://github.com/mautrix/facebook/blob/master/README.md) to learn what it does and why it might be useful to you. +The mautrix-meta bridge can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md). -## Prerequisite (optional) +## Uninstalling the bridge manually -### Enable Shared Secret Auth +If you still have the 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: -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. - -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 bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: - -```yaml -matrix_mautrix_facebook_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` - - `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 +systemctl disable --now matrix-mautrix-facebook.service -To use the bridge, you need to start a chat with `@facebookbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). +rm -rf /matrix/mautrix-facebook -You then need to send `login YOUR_FACEBOOK_EMAIL_ADDRESS` to the bridge bot to enable bridging for your Facebook Messenger account. - -If you run into trouble, check the [Troubleshooting](#troubleshooting) section below. - -## 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. - -If you happen to run into this problem while [setting up bridging](#usage), try to first get a successful session up by logging in to Facebook through the Matrix server's IP address. - -The easiest way to do this may be to use [sshuttle](https://sshuttle.readthedocs.io/) to proxy your traffic through the Matrix server. - -Example command for proxying your traffic through the Matrix server: - -```sh -sshuttle -r root@matrix.example.com:22 0/0 +/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mautrix_facebook;' ``` - -Once connected, you should be able to verify that you're browsing the web through the Matrix server's IP by checking [icanhazip](https://icanhazip.com/). - -Then proceed to log in to [Facebook/Messenger](https://www.facebook.com/). - -Once logged in, proceed to [set up bridging](#usage). - -If that doesn't work, enable 2FA (see: [Facebook help page on enabling 2FA](https://www.facebook.com/help/148233965247823)) and try to login again with a new password, and entering the 2FA code when prompted, it may take more then one try, in between attempts, check facebook.com to see if they are requiring another password change diff --git a/docs/configuring-playbook-bridge-mautrix-gmessages.md b/docs/configuring-playbook-bridge-mautrix-gmessages.md index 658b8eb95..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 diff --git a/docs/configuring-playbook-bridge-mautrix-googlechat.md b/docs/configuring-playbook-bridge-mautrix-googlechat.md index a2e3dff61..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,7 +59,7 @@ 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 diff --git a/docs/configuring-playbook-bridge-mautrix-hangouts.md b/docs/configuring-playbook-bridge-mautrix-hangouts.md index c12283d0c..ce655cf58 100644 --- a/docs/configuring-playbook-bridge-mautrix-hangouts.md +++ b/docs/configuring-playbook-bridge-mautrix-hangouts.md @@ -1,4 +1,14 @@ -# Setting up Mautrix Hangouts bridging (optional, deprecated) + + +# Setting up Mautrix Hangouts bridging (optional, removed) 🪦 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. diff --git a/docs/configuring-playbook-bridge-mautrix-instagram.md b/docs/configuring-playbook-bridge-mautrix-instagram.md index 4bacb9ebd..6828dedd1 100644 --- a/docs/configuring-playbook-bridge-mautrix-instagram.md +++ b/docs/configuring-playbook-bridge-mautrix-instagram.md @@ -1,58 +1,33 @@ -# Setting up Mautrix Instagram bridging (optional, deprecated) + -**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. +# Setting up Mautrix Instagram bridging (optional, removed) -The playbook can install and configure [mautrix-instagram](https://github.com/mautrix/instagram) for you. +🪦 The playbook used to be able to install and configure [mautrix-instagram](https://github.com/mautrix/instagram), but no longer includes this component, as it has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge. -See the project's [documentation](https://github.com/mautrix/instagram/blob/master/README.md) to learn what it does and why it might be useful to you. +The mautrix-meta bridge can be [installed using this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md). -## Adjusting the playbook configuration +## Uninstalling the bridge manually -To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +If you still have the 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: -```yaml -matrix_mautrix_instagram_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` - - `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 `@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 +systemctl disable --now matrix-mautrix-instagram.service -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: +rm -rf /matrix/mautrix-instagram -```yaml -matrix_mautrix_instagram_logging_level: DEBUG +/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mautrix_instagram;' ``` diff --git a/docs/configuring-playbook-bridge-mautrix-meta-instagram.md b/docs/configuring-playbook-bridge-mautrix-meta-instagram.md index 26c34f8d9..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 diff --git a/docs/configuring-playbook-bridge-mautrix-meta-messenger.md b/docs/configuring-playbook-bridge-mautrix-meta-messenger.md index 51b1a40ca..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) @@ -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 diff --git a/docs/configuring-playbook-bridge-mautrix-signal.md b/docs/configuring-playbook-bridge-mautrix-signal.md index d156c7b0a..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 diff --git a/docs/configuring-playbook-bridge-mautrix-slack.md b/docs/configuring-playbook-bridge-mautrix-slack.md index 6ead5487d..c1f46de6f 100644 --- a/docs/configuring-playbook-bridge-mautrix-slack.md +++ b/docs/configuring-playbook-bridge-mautrix-slack.md @@ -1,8 +1,17 @@ + + # 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) -**Note**: bridging to [Slack](https://slack.com/) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) bridges supported by the playbook. +**Note**: bridging to [Slack](https://slack.com/) can also happen via the [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) bridge supported by the playbook. - For using as a Bot we recommend the [Appservice Slack](configuring-playbook-bridge-appservice-slack.md), because it supports plumbing. Note that it 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. - For personal use with a slack account we recommend the `mautrix-slack` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Slack bridges supported by the playbook. @@ -36,8 +45,7 @@ matrix_mautrix_slack_enabled: true 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. +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 @@ -45,16 +53,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-telegram.md b/docs/configuring-playbook-bridge-mautrix-telegram.md index 77f92a1dc..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 diff --git a/docs/configuring-playbook-bridge-mautrix-twitter.md b/docs/configuring-playbook-bridge-mautrix-twitter.md index b24264a6c..1a51dfbd6 100644 --- a/docs/configuring-playbook-bridge-mautrix-twitter.md +++ b/docs/configuring-playbook-bridge-mautrix-twitter.md @@ -1,9 +1,16 @@ + + # 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) -**Note**: bridging to [Twitter](https://twitter.com/) can also happen via the [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) bridge supported by the playbook. - The playbook can install and configure [mautrix-twitter](https://github.com/mautrix/twitter) for you. See the project's [documentation](https://github.com/mautrix/twitter/blob/master/README.md) to learn what it does and why it might be useful to you. @@ -37,16 +44,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,7 +57,7 @@ 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 diff --git a/docs/configuring-playbook-bridge-mautrix-whatsapp.md b/docs/configuring-playbook-bridge-mautrix-whatsapp.md index b9d23652e..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 diff --git a/docs/configuring-playbook-bridge-mautrix-wsproxy.md b/docs/configuring-playbook-bridge-mautrix-wsproxy.md index b761e71d9..a0d95d68b 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) @@ -53,20 +61,16 @@ After configuring the playbook and potentially [adjusting your DNS records](#adj ```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 -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). +Follow the [mautrix-imessage documentation](https://docs.mau.fi/bridges/go/imessage/index.html) for running `android-sms` and/or `matrix-imessage` on your device(s). ## Troubleshooting diff --git a/docs/configuring-playbook-bridge-mx-puppet-discord.md b/docs/configuring-playbook-bridge-mx-puppet-discord.md index cbc61c068..0613cd260 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-discord.md +++ b/docs/configuring-playbook-bridge-mx-puppet-discord.md @@ -1,46 +1,31 @@ -# Setting up MX Puppet Discord bridging (optional) + -The playbook can install and configure [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) for you. +# Setting up MX Puppet Discord bridging (optional, removed) -See the project's [documentation](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/blob/master/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 [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord), but no longer includes this component, as it has been unmaintained for a long time. -## Adjusting the playbook configuration +You may wish to use the [Mautrix Discord bridge](https://github.com/mautrix/discord) instead. -To enable the [Discord](https://discordapp.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +## Uninstalling the bridge manually -```yaml -matrix_mx_puppet_discord_enabled: true -``` - -## Installing +If you still have the MX Puppet Discord 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: -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-mx-puppet-discord.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/mx-puppet-discord -## Usage - -To use the bridge, you need to start a chat with `Discord Puppet Bridge` with the handle `@_discordpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). - -Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-discord [documentation](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) for more information about how to configure the bridge. - -Once logged in, send `list` to the bot user to list the available rooms. - -Clicking rooms in the list will result in you receiving an invitation to the bridged room. - -Send `help` to the bot to see the available commands. +/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mx_puppet_discord;' +``` 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..946a7af84 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-instagram.md +++ b/docs/configuring-playbook-bridge-mx-puppet-instagram.md @@ -1,48 +1,30 @@ -# Setting up MX Puppet Instagram bridging (optional) + -This allows you to bridge Instagram DirectMessages into Matrix. +# Setting up MX Puppet Instagram bridging (optional, removed) -## Adjusting the playbook configuration +🪦 The playbook used to be able to install and configure [mx-puppet-instagram](https://gitlab.com/mx-puppet/instagram/mx-puppet-instagram), but no longer includes this component, as it has been unmaintained for a long time. -To enable the [Instagram](https://www.instagram.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: +You may wish to use the [Mautrix Meta](https://github.com/mautrix/meta) Messenger/Instagram bridge instead. -```yaml -matrix_mx_puppet_instagram_enabled: true -``` - -## Installing +## Uninstalling the bridge manually -After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: +If you still have the MX Puppet Instagram 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: - ```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` - - `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. +systemctl disable --now matrix-mx-puppet-instagram.service -## Usage +rm -rf /matrix/mx-puppet-instagram -To use the bridge, you need to start a chat with `Instagram Puppet Bridge` with the handle `@_instagrampuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). - -Send `link ` to the bridge bot to link your instagram account. - -The `list` commands shows which accounts are linked and which `puppetId` is associated. - -For double-puppeting, you probably want to issue these commands: - -- `settype $puppetId puppet` to enable puppeting for the link (instead of relaying) -- `setautoinvite $puppetId 1` to automatically invite you to chats -- `setmatrixtoken $accessToken` to set the access token to enable puppeting from the other side (the "double" in double puppeting) - -If you are linking only one Instagram account, your `$puppetId` is probably 1, but use the `list` command find out. - -Send `help` to the bot to see the available commands. At the time of writing, not every command is fully implemented. +/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mx_puppet_instagram;' +``` diff --git a/docs/configuring-playbook-bridge-mx-puppet-skype.md b/docs/configuring-playbook-bridge-mx-puppet-skype.md index 6bbfb7aa5..c570c47f5 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. -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. +The playbook used to be able to install and configure [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) as alternative to this bridge, but no longer includes this component, because Skype has been discontinued since May 2025. diff --git a/docs/configuring-playbook-bridge-mx-puppet-slack.md b/docs/configuring-playbook-bridge-mx-puppet-slack.md index b8e8971b6..bfd5819ee 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-slack.md +++ b/docs/configuring-playbook-bridge-mx-puppet-slack.md @@ -1,51 +1,33 @@ -# Setting up MX Puppet Slack bridging (optional) + -The playbook can install and configure [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) for you. +# Setting up MX Puppet Slack bridging (optional, removed) -See the project's [documentation](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/blob/master/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 [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack), but no longer includes this component, as it has been unmaintained for a long time. -## Prerequisite +You may wish to use the [Mautrix Slack bridge](https://github.com/mautrix/slack) instead. -Follow the [OAuth credentials](https://gitlab.com/mx-puppet/slack/mx-puppet-slack#option-2-oauth) instructions to create a new Slack app, setting the redirect URL to `https://matrix.example.com/slack/oauth`. +## Uninstalling the bridge manually -## Adjusting the playbook configuration +If you still have the MX Puppet Slack 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: -To enable the [Slack](https://slack.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: - -```yaml -matrix_mx_puppet_slack_enabled: true -# Client ID must be quoted so YAML does not parse it as a float. -matrix_mx_puppet_slack_oauth_client_id: "" -matrix_mx_puppet_slack_oauth_client_secret: "" -``` - -## 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. +systemctl disable --now matrix-mx-puppet-slack.service -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +rm -rf /matrix/mx-puppet-slack - `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 `Slack Puppet Bridge` with the handle `@_slackpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). - -Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-slack [documentation](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) for more information about how to configure the bridge. - -Once logged in, send `list` to the bot user to list the available rooms. - -Clicking rooms in the list will result in you receiving an invitation to the bridged room. - -Send `help` to the bot to see the available commands. +/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mx_puppet_slack;' +``` diff --git a/docs/configuring-playbook-bridge-mx-puppet-steam.md b/docs/configuring-playbook-bridge-mx-puppet-steam.md index 18ea7ad22..6c662561f 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-steam.md +++ b/docs/configuring-playbook-bridge-mx-puppet-steam.md @@ -1,8 +1,19 @@ -# Setting up MX Puppet Steam bridging (optional) + -See the project's [documentation](https://github.com/icewind1991/mx-puppet-steam/blob/master/README.md) to learn what it does and why it might be useful to you. +# Setting up MX Puppet Steam bridging (optional, deprecated) + +**Note**: This bridge has been deprecated in favor of the [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) bridge for Steam, which can be [installed using this playbook](configuring-playbook-bridge-steam.md). Consider using that bridge instead of this one. + +The playbook can install and configure [mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam) for you. + +See the project's [documentation](https://codeberg.org/icewind/mx-puppet-steam/blob/master/README.md) to learn what it does and why it might be useful to you. ## Adjusting the playbook configuration @@ -18,22 +29,18 @@ 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 `Steam Puppet Bridge` with the handle `@_steampuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). -Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-steam [documentation](https://github.com/icewind1991/mx-puppet-steam) for more information about how to configure the bridge. +Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-steam [documentation](https://codeberg.org/icewind/mx-puppet-steam) for more information about how to configure the bridge. Once logged in, send `list` to the bot user to list the available rooms. diff --git a/docs/configuring-playbook-bridge-mx-puppet-twitter.md b/docs/configuring-playbook-bridge-mx-puppet-twitter.md index be0df2305..0ea17cff0 100644 --- a/docs/configuring-playbook-bridge-mx-puppet-twitter.md +++ b/docs/configuring-playbook-bridge-mx-puppet-twitter.md @@ -1,53 +1,29 @@ -# Setting up MX Puppet Twitter bridging (optional) + -The playbook can install and configure [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) for you. +# Setting up MX Puppet Twitter bridging (optional, removed) -See the project's [documentation](https://github.com/Sorunome/mx-puppet-twitter/blob/master/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 [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter), but no longer includes this component, as it has been unmaintained for a long time. -## Prerequisite +You may wish to use the [Mautrix Twitter bridge](https://github.com/mautrix/twitter) instead. -Make an app on [developer.twitter.com](https://developer.twitter.com/en/apps). +## Uninstalling the bridge manually -## Adjusting the playbook configuration +If you still have the MX Puppet Twitter 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: -To enable the [Twitter](https://twitter.com) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: - -```yaml -matrix_mx_puppet_twitter_enabled: true -matrix_mx_puppet_twitter_consumer_key: '' -matrix_mx_puppet_twitter_consumer_secret: '' -matrix_mx_puppet_twitter_access_token: '' -matrix_mx_puppet_twitter_access_token_secret: '' -matrix_mx_puppet_twitter_environment: '' -``` - -## 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. +systemctl disable --now matrix-mx-puppet-twitter.service -- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` +rm -rf /matrix/mx-puppet-twitter - `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 `Twitter Puppet Bridge` with the handle `@_twitterpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). - -To log in, use `link` and click the link. - -Once logged in, send `list` to the bot user to list the available rooms. - -Clicking rooms in the list will result in you receiving an invitation to the bridged room. - -Send `help` to the bot to see the available commands. +/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mx_puppet_twitter;' +``` diff --git a/docs/configuring-playbook-bridge-postmoogle.md b/docs/configuring-playbook-bridge-postmoogle.md index eff5b62e3..6a21043a7 100644 --- a/docs/configuring-playbook-bridge-postmoogle.md +++ b/docs/configuring-playbook-bridge-postmoogle.md @@ -1,3 +1,12 @@ + + # Setting up Postmoogle email bridging (optional) The playbook can install and configure [Postmoogle](https://github.com/etkecc/postmoogle) for you. diff --git a/docs/configuring-playbook-bridge-steam.md b/docs/configuring-playbook-bridge-steam.md new file mode 100644 index 000000000..6cdf7353e --- /dev/null +++ b/docs/configuring-playbook-bridge-steam.md @@ -0,0 +1,48 @@ + + +# Setting up Steam bridging (optional) + +The playbook can install and configure [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) for you. + +See the project's [documentation](https://github.com/jasonlaguidice/matrix-steam-bridge/blob/main/README.md) to learn what it does and why it might be useful to you. + +## Adjusting the playbook configuration + +To enable the [Steam](https://steampowered.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_steam_bridge_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` and `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. + +The tag for `just` commands for this bridge is `matrix-steam-bridge` - for example: `just install-service matrix-steam-bridge` + +## Usage + +To use the bridge, you need to start a chat with `Steam bridge bot` with the handle `@steambot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). + +The bridge supports QR code and password-based login as well as SteamGuard codes via app, SMS, or e-mail. See matrix-steam-bridge [documentation](https://github.com/jasonlaguidice/matrix-steam-bridge) for more information about how to configure the bridge. + +To login, send `login [flow ID]` where possible flow IDs are `password` or `qr` + +Once logged in, send `search [name]` to search through recognized Steam friends. You can send a user name, display name, or all forms of Steam ID. Send `start-chat [identifier]` to request the bridge bot to open a chat room with a user. + +Chat rooms will automatically be opened as new messages are received. + +Send `help` to the bot to see the available commands. diff --git a/docs/configuring-playbook-bridge-wechat.md b/docs/configuring-playbook-bridge-wechat.md index 0ae3fe21f..2c7590b40 100644 --- a/docs/configuring-playbook-bridge-wechat.md +++ b/docs/configuring-playbook-bridge-wechat.md @@ -1,3 +1,10 @@ + + # 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/). diff --git a/docs/configuring-playbook-bridge-zulip.md b/docs/configuring-playbook-bridge-zulip.md new file mode 100644 index 000000000..7529271cb --- /dev/null +++ b/docs/configuring-playbook-bridge-zulip.md @@ -0,0 +1,83 @@ + + +# Setting up a Zulip bridge (optional) + +The playbook can install and configure [MatrixZulipBridge](https://github.com/GearKite/MatrixZulipBridge) for you. + +See the project's [documentation](https://github.com/GearKite/MatrixZulipBridge/blob/main/README.md) to learn what it does and why it might be useful to you. + +## Adjusting DNS records (optional) + +By default, this playbook installs the Zulip bridge on the `matrix.` subdomain, at the `/zulip` path (https://matrix.example.com/zulip). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section. + +If you wish to adjust it, see the section [below](#adjusting-the-zulip-bridge-url-optional) for details about DNS configuration. + +## Adjusting the playbook configuration + +To enable the Zulip bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_zulip_bridge_enabled: true + +# Uncomment to add one or more admins to this bridge: +# +# matrix_zulip_bridge_owner: +# - '@yourAdminAccount:{{ matrix_domain }}' +# +# … unless you've made yourself an admin of all bots/bridges like this: +# +# matrix_admin: '@yourAdminAccount:{{ matrix_domain }}' +``` + +### Adjusting the Zulip bridge URL (optional) + +By tweaking the `matrix_zulip_bridge_hostname` and `matrix_zulip_bridge_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 +# Change the default hostname and path prefix +matrix_zulip_bridge_hostname: zulip.example.com +matrix_zulip_bridge_path_prefix: / +``` + +If you've changed the default hostname, you may need to create a CNAME record for the Zulip bridge domain (`zulip.example.com`), which targets `matrix.example.com`. + +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-zulip/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,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 + +To use the bridge, you need to start a chat with `@zulipbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). If the bridge ignores you and a DM is not accepted then the owner setting may be wrong. + +If you encounter issues or feel lost you can join the project room at [#matrixzulipbridge:shema.lv](https://matrix.to/#/#matrixzulipbridge:shema.lv) 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-bridge-zulip`. diff --git a/docs/configuring-playbook-cactus-comments.md b/docs/configuring-playbook-cactus-comments.md index f6b704133..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. @@ -77,16 +86,12 @@ After configuring the playbook and potentially [adjusting your DNS records](#adj ```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-client-cinny.md b/docs/configuring-playbook-client-cinny.md index 2ba895eb9..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. diff --git a/docs/configuring-playbook-client-element-web.md b/docs/configuring-playbook-client-element-web.md index 071be15ee..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. diff --git a/docs/configuring-playbook-client-fluffychat-web.md b/docs/configuring-playbook-client-fluffychat-web.md new file mode 100644 index 000000000..d28298b42 --- /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://fluffy.chat/) 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 cf9b30335..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. diff --git a/docs/configuring-playbook-client-schildichat-web.md b/docs/configuring-playbook-client-schildichat-web.md index ec34b2be7..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. diff --git a/docs/configuring-playbook-conduit.md b/docs/configuring-playbook-conduit.md index 51cfb8e64..70029a7a4 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. @@ -58,6 +65,7 @@ Find the `registration.yaml` in the `/matrix` directory, for example `/matrix/ma ``` as_token: de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true hs_token: id: signal namespaces: diff --git a/docs/configuring-playbook-conduwuit.md b/docs/configuring-playbook-conduwuit.md index b198dd814..dae349561 100644 --- a/docs/configuring-playbook-conduwuit.md +++ b/docs/configuring-playbook-conduwuit.md @@ -1,3 +1,10 @@ + + # Configuring conduwuit (optional) The playbook can install and configure the [conduwuit](https://conduwuit.puppyirl.gay/) Matrix server for you. @@ -11,6 +18,7 @@ By default, the playbook installs [Synapse](https://github.com/element-hq/synaps > [!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 +> - **the Conduwuit project appears to have been abandoned**. You may wish to install [Conduit](./configuring-playbook-conduit.md), or one of the Conduwuit successors (like [Continuwuity](configuring-playbook-continuwuity.md)) ## Adjusting the playbook configuration @@ -76,6 +84,7 @@ Then, send its content to the existing admin room: ``` as_token: de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true hs_token: id: signal namespaces: diff --git a/docs/configuring-playbook-continuwuity.md b/docs/configuring-playbook-continuwuity.md new file mode 100644 index 000000000..13d30707e --- /dev/null +++ b/docs/configuring-playbook-continuwuity.md @@ -0,0 +1,117 @@ + + +# Configuring Continuwuity (optional) + +The playbook can install and configure the [Continuwuity](https://continuwuity.org) Matrix server for you. + +See the project's [documentation](https://continuwuity.org) to learn what it does and why it might be useful to you. + +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**: continuwuity is a fork of [conduwuit](./configuring-playbook-conduwuit.md), which the playbook also supports. + +> [!WARNING] +> - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Continuwuity). 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 Continuwuity, 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: continuwuity + +# Registering users can only happen via the API, +# so it makes sense to enable it, at least initially. +matrix_continuwuity_config_allow_registration: true + +# Generate a strong registration token to protect the registration endpoint from abuse. +# You can create one with a command like `pwgen -s 64 1`. +matrix_continuwuity_config_registration_token: '' +``` + +### Extending the configuration + +There are some additional things you may wish to configure about the server. + +Take a look at: + +- `roles/custom/matrix-continuwuity/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-continuwuity/templates/continuwuity.toml.j2` for the server's default configuration + +There are various Ansible variables that control settings in the `continuwuity.toml` file. + +If a specific setting you'd like to change does not have a dedicated Ansible variable, you can either submit a PR to us to add it, or you can [override the setting using an environment variable](https://continuwuity.org/configuration#environment-variables) using `matrix_continuwuity_environment_variables_extension`. For example: + +```yaml +matrix_continuwuity_environment_variables_extension: | + CONTINUWUITY_MAX_REQUEST_SIZE=50000000 + CONTINUWUITY_REQUEST_TIMEOUT=60 +``` + +## Creating the first user account + +Unlike other homeserver implementations (like Synapse and Dendrite), continuwuity 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. + +This should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users. + +The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**. + + +## Configuring bridges / appservices + +For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver. + +For continuwuity, you will have to manually register appservices using the [`!admin appservices register` command](https://continuwuity.org/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 `@continuwuity:example.com`!) due to continuwuity'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`. + +Then, send its content to the existing admin room: + + !admin appservices register + + ``` + as_token: + de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + hs_token: + id: signal + namespaces: + aliases: + - exclusive: true + regex: ^#signal_.+:example\.org$ + users: + - exclusive: true + regex: ^@signal_.+:example\.org$ + - exclusive: true + regex: ^@signalbot:example\.org$ + rate_limited: false + sender_localpart: _bot_signalbot + url: http://matrix-mautrix-signal:29328 + ``` + +## Migrating from conduwuit + +Since Continuwuity is a drop-in replacement for [conduwuit](configuring-playbook-conduwuit.md), migration is possible. + +1. Make sure that Continuwuity is properly set up on your `vars.yml` as described above + +2. Make sure that Conduwuit references are removed from your `vars.yml` file + +3. Run the installation in a way that installs new services and uninstalls old ones (e.g. `just setup-all`) + +4. Run the playbook with the `continuwuity-migrate-from-conduwuit` tag (e.g. `just run-tags continuwuity-migrate-from-conduwuit`). This migrates data from `/matrix/conduwuit` to `/matrix/continuwuity` + +## 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-continuwuity`. diff --git a/docs/configuring-playbook-dendrite.md b/docs/configuring-playbook-dendrite.md index ac5671dbf..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. diff --git a/docs/configuring-playbook-dimension.md b/docs/configuring-playbook-dimension.md index 5bc709c12..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**: diff --git a/docs/configuring-playbook-dynamic-dns.md b/docs/configuring-playbook-dynamic-dns.md index 6db0e941d..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,8 @@ 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. @@ -49,7 +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`. +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-admin.md b/docs/configuring-playbook-element-admin.md new file mode 100644 index 000000000..a0785853b --- /dev/null +++ b/docs/configuring-playbook-element-admin.md @@ -0,0 +1,67 @@ + + +# Setting up Element Admin (optional) + +The playbook can install and configure [Element Admin](https://github.com/element-hq/element-admin) for you. + +Element Admin is a web-based administration panel for Synapse and [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md). + +See the project's [documentation](https://github.com/element-hq/element-admin) to learn more. + +💡 **Note**: This project is still very young and doesn't have many features. For now, it's recommended to use [Synapse Admin](./configuring-playbook-synapse-admin.md) instead. Deployments that use [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) can use Element Admin for user-management (something that Synapse Admin can't do), while continuing to use Synapse Admin for all other purposes. + +## Prerequisites + +- A [Synapse](configuring-playbook-synapse.md) homeserver with its Admin API enabled (the playbook automatically enables it for you when you enable Element Admin) +- [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) with its Admin API enabled (the playbook automatically enables it for you when you enable Element Admin) + +## Decide on a domain and path + +By default, the Element Admin is configured to be served on the `admin.element.example.com` domain. + +If you'd like to run Element Admin on another hostname, see the [Adjusting the Element Admin URL](#adjusting-the-element-admin-url-optional) section below. + +## Adjusting DNS records (optional) + +By default, this playbook installs Element Admin on the `admin.element.` subdomain (`admin.element.example.com`) and requires you to create a `CNAME` record for `admin.element`, which targets `matrix.example.com`. + +When setting these values, replace `example.com` with your own. + +## Adjusting the playbook configuration + +Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_element_admin_enabled: true +``` + +### Adjusting the Element Admin URL (optional) + +By tweaking the `matrix_element_admin_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_admin_hostname: element-admin.example.com +``` + +> [!WARNING] +> A `matrix_element_admin_path_prefix` variable is also available and mean to let you configure a path prefix for the Element Admin service, but **Element Admin does not support running under a sub-path yet**. + +## 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. diff --git a/docs/configuring-playbook-element-call.md b/docs/configuring-playbook-element-call.md new file mode 100644 index 000000000..fed49ade9 --- /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 distinction 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 e3713c142..5fcc4d820 100644 --- a/docs/configuring-playbook-email.md +++ b/docs/configuring-playbook-email.md @@ -1,61 +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). + +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. ## Adjusting the playbook configuration -### Relaying email through another SMTP server +### 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. + +### Relaying email through another SMTP server (optional) -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): +**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. + +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. + +### Disable mail service (optional) + +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: "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: "PASSWORD_FOR_THE_RELAY_HERE" +exim_relay_enabled: false ``` -**Note**: only the secure submission protocol (using `STARTTLS`, usually on port `587`) is supported. **SMTPS** (encrypted SMTP, usually on port `465`) **is not supported**. +Note that disabling exim-relay will stop email-notifications and other similar functions from working. -### Sending emails using Sendgrid +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. -An easy and free SMTP service to set up is [Sendgrid](https://sendgrid.com/). Its free tier allows for up to 100 emails per day to be sent. +## Installing -To set it up, add the following configuration to your `vars.yml` file (adapt to your needs): +After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below: -```yaml -exim_relay_sender_address: "example@example.org" -exim_relay_relay_use: true -exim_relay_relay_host_name: "smtp.sendgrid.net" -exim_relay_relay_host_port: 587 -exim_relay_relay_auth: true - -# This needs to be literally the string "apikey". It is always the same for Sendgrid. -exim_relay_relay_auth_username: "apikey" - -# You can generate the API key password at this URL: https://app.sendgrid.com/settings/api_keys -# The password looks something like `SG.955oW1mLSfwds7i9Yd6IA5Q.q8GTaB8q9kGDzasegdG6u95fQ-6zkdwrPP8bOeuI`. -exim_relay_relay_auth_password: "YOUR_API_KEY_PASSWORD_HERE" + +```sh +ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ``` -## Troubleshooting +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. -If you're having trouble with email not being delivered, it may be useful to inspect the mailer logs. +## Troubleshooting -To do so, log in to the server with SSH and run `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 ec91658bb..20d807b85 100644 --- a/docs/configuring-playbook-email2matrix.md +++ b/docs/configuring-playbook-email2matrix.md @@ -1,138 +1,26 @@ -# Setting up Email2Matrix (optional, deprecated) + -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 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: -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): - -```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 - -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). - -### Extending the configuration - -There are some additional things you may wish to configure about the component. - -Take a look at: - -- `roles/custom/matrix-email2matrix/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 -``` - -**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. - -## 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-email2matrix`. - -### Increase logging verbosity - -If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook: +systemctl disable --now matrix-email2matrix.service -```yaml -matrix_email2matrix_misc_debug: true +rm -rf /matrix/email2matrix ``` diff --git a/docs/configuring-playbook-etherpad.md b/docs/configuring-playbook-etherpad.md index 0f151d3db..bc6783b81 100644 --- a/docs/configuring-playbook-etherpad.md +++ b/docs/configuring-playbook-etherpad.md @@ -1,6 +1,6 @@ ```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` - - `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. +The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` -- 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 @@ -120,16 +109,4 @@ To integrate a standalone Etherpad in a room, create your pad by visiting `https ## 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-etherpad`. - -### 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 -etherpad_configuration_extension_json: | - { - "loglevel": "DEBUG", - } -``` +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 ca49d985c..f860f4413 100644 --- a/docs/configuring-playbook-external-postgres.md +++ b/docs/configuring-playbook-external-postgres.md @@ -1,3 +1,10 @@ + + # 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. diff --git a/docs/configuring-playbook-federation.md b/docs/configuring-playbook-federation.md index e87d10e79..c06928748 100644 --- a/docs/configuring-playbook-federation.md +++ b/docs/configuring-playbook-federation.md @@ -1,3 +1,11 @@ + + # 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. diff --git a/docs/configuring-playbook-jitsi.md b/docs/configuring-playbook-jitsi.md index 48c7516c7..6c035dee4 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,125 +43,42 @@ 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. - -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. +######################################################################## +# # +# jitsi # +# # +######################################################################## -To enable authentication with Matrix OpenID, add the following configuration to your `vars.yml` file: - -```yaml -jitsi_enable_auth: true -jitsi_auth_type: matrix -matrix_user_verification_service_enabled: true -``` - -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): +jitsi_enabled: true -```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 +######################################################################## +# # +# /jitsi # +# # +######################################################################## ``` -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. +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. -### Configure `JVB_ADVERTISE_IPS` for running behind NAT or on a LAN environment (optional) +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. -When running Jitsi in a LAN environment, or on the public Internet via NAT, the `JVB_ADVERTISE_IPS` enviornment variable should be set. +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)). -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. +### Enable authentication and guests mode (optional) -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. +By default the Jitsi Meet instance **does not require for anyone to log in, and is open to use without an account**. -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. +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. -```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)](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 @@ -153,67 +87,6 @@ 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). - -### Extending the configuration - -There are some additional things you may wish to configure about the component. - -Take a look at: - -- [Jitsi role](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi)'s [`defaults/main.yml`](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/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 these variables: - - `jitsi_web_custom_interface_config_extension`: custom configuration to be appended to `interface_config.js`, passed to Jitsi Web - - `jitsi_web_custom_config_extension`: custom configuration to be injected into `custom-config.js`, passed to Jitsi Web - - `jitsi_jvb_custom_config_extension`: custom configuration to be injected into `custom-sip-communicator.properties`, passed to Jitsi JVB - -### 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) -``` - ## 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: @@ -233,176 +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: +- **directly (without any Matrix integration)**. Just go to `https://jitsi.example.com`, and you can start a videoconference. -```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. - -#### Set colibri WebSocket port - -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. +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. -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 -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-jitsi-web` -- `journalctl -fu matrix-jitsi-prosody` -- `journalctl -fu matrix-jitsi-jicofo` -- `journalctl -fu matrix-jitsi-jvb` - -### `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..eaf3be171 --- /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. diff --git a/docs/configuring-playbook-livekit-server.md b/docs/configuring-playbook-livekit-server.md new file mode 100644 index 000000000..3579feb56 --- /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). diff --git a/docs/configuring-playbook-ma1sd.md b/docs/configuring-playbook-ma1sd.md index ced162b8c..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. diff --git a/docs/configuring-playbook-matrix-authentication-service.md b/docs/configuring-playbook-matrix-authentication-service.md index ce5c7aa5d..eff0d9e8f 100644 --- a/docs/configuring-playbook-matrix-authentication-service.md +++ b/docs/configuring-playbook-matrix-authentication-service.md @@ -1,3 +1,10 @@ + + # 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/). @@ -34,7 +41,7 @@ Below, we'll try to **highlight some potential reasons for switching** to Matrix ## Prerequisites -- ⚠️ 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. +- ⚠️ 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 with Matrix Authentication Service yet. - ❌ **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. @@ -44,22 +51,21 @@ This section details what you can expect when switching to the Matrix Authentica - ❌ **Synapse password providers will need to be disabled**. You can no longer use [shared-secret-auth](./configuring-playbook-shared-secret-auth.md), [rest-auth](./configuring-playbook-rest-auth.md), [LDAP auth](./configuring-playbook-ldap-auth.md), etc. When the authentication flow is handled by MAS (not by Synapse anymore), it doesn't make sense to extend the Synapse authentication flow with additional modules. Many bridges used to rely on shared-secret-auth for doing double-puppeting (impersonating other users), but most (at least the mautrix bridges) nowadays use [Appservice Double Puppet](./configuring-playbook-appservice-double-puppet.md) as a better alternative. Older/maintained bridges may still rely on shared-secret-auth, as do other services like [matrix-corporal](./configuring-playbook-matrix-corporal.md). -- ❌ Certain **tools like [synapse-admin](./configuring-playbook-synapse-admin.md) do not have full compatibility with MAS yet**. synapse-admin already supports [login with access token](https://github.com/etkecc/synapse-admin/pull/58), browsing users (which Synapse will internally fetch from MAS) and updating user avatars. However, editing users (passwords, etc.) now needs to happen directly against MAS using the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html), which synapse-admin cannot interact with yet. +- ❌ Certain **tools like [Synapse Admin](./configuring-playbook-synapse-admin.md) do not have full compatibility with MAS yet**. Synapse Admin already supports OIDC auth, browsing users (which Synapse will internally fetch from MAS) and updating user avatars. However, editing users (passwords, etc.) now needs to happen directly against MAS using the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html), which Synapse Admin cannot interact with yet. You may be interested in using [Element Admin](./configuring-playbook-element-admin.md) for these purposes. - ❌ **Some services experience issues when authenticating via MAS**: + - [Reminder bot](configuring-playbook-bot-matrix-reminder-bot.md) seems to be losing some of its state on each restart and may reschedule old reminders once again + - [Postmoogle](./configuring-playbook-bridge-postmoogle.md) works the first time around, but it consistently fails after restarting: > 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). - ⚠️ [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. -- ⚠️ 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. +- ⚠️ Delegating user authentication to MAS causes **your Synapse server to be completely dependent 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). @@ -83,7 +89,7 @@ For new homeservers (which don't have any users in their Synapse database yet), ### Existing homeserver -Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating wtih Matrix Authentication Service yet. +Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating with Matrix Authentication Service yet. For existing Synapse homeservers: @@ -155,6 +161,10 @@ matrix_authentication_service_config_upstream_oauth2_providers: - # A unique identifier for the provider # Must be a valid ULID id: 01HFVBY12TMNTYTBV8W921M5FA + # This can be set if you're migrating an existing (legacy) Synapse OIDC configuration. + # The value used here would most likely be "oidc" or "oidc-provider". + # See: https://element-hq.github.io/matrix-authentication-service/setup/migration.html#map-any-upstream-sso-providers + synapse_idp_id: null # The issuer URL, which will be used to discover the provider's configuration. # If discovery is enabled, this *must* exactly match the `issuer` field # advertised in `/.well-known/openid-configuration`. @@ -242,7 +252,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. @@ -302,7 +312,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start Our migration guide is loosely based on the upstream [Migrating an existing homeserver](https://element-hq.github.io/matrix-authentication-service/setup/migration.html) guide. -Migration is done via a tool called `syn2mas`, which the playbook could run for you (in a container). +Migration is done via a sub-command called `syn2mas`, which the playbook could run for you (in a container). The installation + migration steps are like this: @@ -318,7 +328,7 @@ The installation + migration steps are like this: - The `matrix-user-creator` role would be suppressed, so that it doesn't automatically attempt to create users (for bots, etc.) in the MAS database. These user accounts likely already exist in Synapse's user database and could be migrated over (via syn2mas, as per the steps below), so creating them in the MAS database would have been unnecessary and potentially problematic (conflicts during the syn2mas migration). -3. Consider taking a full [backup of your Postgres database](./maintenance-postgres.md#backing-up-postgresql). This is done just in case. The **syn2mas migration tool does not delete any data**, so it should be possible to revert to your previous setup by merely disabling MAS and re-running the playbook (no need to restore a Postgres backup). However, do note that 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. +3. Consider taking a full [backup of your Postgres database](./maintenance-postgres.md#backing-up-postgresql). This is done just in case. The **syn2mas migration command does not delete any data**, so it should be possible to revert to your previous setup by merely disabling MAS and re-running the playbook (no need to restore a Postgres backup). However, do note that 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. 4. [Migrate your data from Synapse to Matrix Authentication Service using syn2mas](#migrate-your-data-from-synapse-to-matrix-authentication-service-using-syn2mas) @@ -338,9 +348,7 @@ The installation + migration steps are like this: ### Migrate your data from Synapse to Matrix Authentication Service using syn2mas -We **don't** ask you to [run the `syn2mas` migration advisor command](https://element-hq.github.io/matrix-authentication-service/setup/migration.html#run-the-migration-advisor), because it only gives you the green light if your Synapse configuration (`homeserver.yaml`) is configured in a way that's compatible with MAS (delegating authentication to MAS; disabling Synapse's password config; etc.). Until we migrate your data with the `syn2mas` tool, we intentionally avoid doing these changes to allow existing user sessions to work. - -You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration). +You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-mas-cli-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration). #### Configuring syn2mas @@ -352,26 +360,9 @@ When you're done with potentially configuring `syn2mas`, proceed to doing a [dry ##### Configuring upstream OIDC provider mapping for syn2mas -If you have existing OIDC users in your Synapse user database (which will be the case if when using [OIDC with Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on)), you may need to pass an additional `--upstreamProviderMapping` argument to the `syn2mas` tool to tell it which provider (on the Synapse side) maps to which other provider on the MAS side. - -If you don't do this, `syn2mas` would report errors like this one: - -> [FATAL] migrate - [Failed to import external id 4264b0f0-4f11-4ddd-aedb-b500e4d07c25 with oidc-keycloak for user @alice:example.com: Error: Unknown upstream provider oidc-keycloak] +Since Matrix Authentication Service v0.16.0 (which replaced the standalone `syn2mas` tool with a `mas-cli syn2mas` sub-command), OIDC configuration (mapping from your old OIDC configuration to your new one, etc) is meant to be configured in the Matrix Authentication Service configuration (via `matrix_authentication_service_config_upstream_oauth2_providers`) as a `synapse_idp_id` property for each provider. -Below is an example situation and a guide for how to solve it. - -If in `matrix_synapse_oidc_providers` your provider `idp_id` is (was) named `keycloak`, in the Synapse database users would be associated with the `oidc-keycloak` provider (note the `oidc-` prefix that was added automatically by Synapse to your `idp_id` value). - -The same OIDC provider may have an `id` of `01HFVBY12TMNTYTBV8W921M5FA` on the MAS side, as defined in `matrix_authentication_service_config_upstream_oauth2_providers` (see the [Upstream OAuth2 configuration](#upstream-oauth2-configuration) section above). - -To tell `syn2mas` how the Synapse-configured OIDC provider maps to the new MAS-configured OIDC provider, add this additional configuration to your `vars.yml` file: - -```yaml -# Adjust the mapping below to match your provider IDs on the Synapse side and the MAS side. -# Don't forget that Synapse automatically adds an `oidc-` prefix to provider ids defined in its configuration. -matrix_authentication_service_syn2mas_process_extra_arguments: - - "--upstreamProviderMapping oidc-keycloak:01HFVBY12TMNTYTBV8W921M5FA" -``` +You can refer to the [Map any upstream SSO providers](https://element-hq.github.io/matrix-authentication-service/setup/migration.html#map-any-upstream-sso-providers) section of the MAS documentation for figuring out how to set the `synapse_idp_id` value in `matrix_authentication_service_config_upstream_oauth2_providers` correctly. #### Performing a syn2mas dry-run @@ -382,7 +373,7 @@ A dry-run would not cause downtime, because it avoids stopping Synapse. To perform a dry-run, run: ```sh -just run-tags matrix-authentication-service-syn2mas -e matrix_authentication_service_syn2mas_dry_run=true +just run-tags matrix-authentication-service-mas-cli-syn2mas -e matrix_authentication_service_syn2mas_migrate_dry_run=true ``` Observe the command output (especially the last line of the the syn2mas output). If you are confident that the migration will work out as expected, you can proceed with a [real migration](#performing-a-real-syn2mas-migration). @@ -401,13 +392,13 @@ Before performing a real migration make sure: - you've performed a [syn2mas dry-run](#performing-a-syn2mas-dry-run) and don't see any issues in its output -To perform a real migration, run the `matrix-authentication-service-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_dry_run` variable: +To perform a real migration, run the `matrix-authentication-service-mas-cli-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_migrate_dry_run` variable: ```sh -just run-tags matrix-authentication-service-syn2mas +just run-tags matrix-authentication-service-mas-cli-syn2mas ``` -Having performed a `syn2mas` migration once, trying to do it again will report errors for users that were already migrated (e.g. "Error: Unknown upstream provider oauth-delegated"). +Having performed a `syn2mas` migration once, trying to do it again will report errors (e.g. "Error: The MAS database is not empty: rows found in at least `users`. Please drop and recreate the database, then try again."). ## Verify that Matrix Authentication Service is installed correctly diff --git a/docs/configuring-playbook-matrix-corporal.md b/docs/configuring-playbook-matrix-corporal.md index 946a0209d..8f3438292 100644 --- a/docs/configuring-playbook-matrix-corporal.md +++ b/docs/configuring-playbook-matrix-corporal.md @@ -1,3 +1,11 @@ + + # Setting up Matrix Corporal (optional, advanced) > [!WARNING] @@ -5,7 +13,7 @@ The playbook can install and configure [matrix-corporal](https://github.com/devture/matrix-corporal) for you. -In short, it's a sort of automation and firewalling service, which is helpful if you're instaling Matrix services in a controlled corporate environment. +In short, it's a sort of automation and firewalling service, which is helpful if you're installing Matrix services in a controlled corporate environment. See the project's [documentation](https://github.com/devture/matrix-corporal/blob/main/README.md) to learn what it does and why it might be useful to you. diff --git a/docs/configuring-playbook-matrix-ldap-registration-proxy.md b/docs/configuring-playbook-matrix-ldap-registration-proxy.md index 29e825a92..489bb6d74 100644 --- a/docs/configuring-playbook-matrix-ldap-registration-proxy.md +++ b/docs/configuring-playbook-matrix-ldap-registration-proxy.md @@ -1,3 +1,11 @@ + + # 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. diff --git a/docs/configuring-playbook-matrix-media-repo.md b/docs/configuring-playbook-matrix-media-repo.md index 33dd5ce1a..acadf8cf2 100644 --- a/docs/configuring-playbook-matrix-media-repo.md +++ b/docs/configuring-playbook-matrix-media-repo.md @@ -1,3 +1,12 @@ + + # Storing Matrix media files using matrix-media-repo (optional) The playbook can install and configure [matrix-media-repo](https://docs.t2bot.io/matrix-media-repo/) (often abbreviated "MMR") for you. @@ -51,7 +60,7 @@ To `matrix_media_repo_container_labels_traefik_metrics_middleware_basic_auth_use #### Enable Grafana (optional) -Probably you wish to enable Grafana along with Prometheus for generating graphs of the metics. +Probably you wish to enable Grafana along with Prometheus for generating graphs of the metrics. To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions. diff --git a/docs/configuring-playbook-matrix-registration.md b/docs/configuring-playbook-matrix-registration.md index 2a08fa681..441c85973 100644 --- a/docs/configuring-playbook-matrix-registration.md +++ b/docs/configuring-playbook-matrix-registration.md @@ -1,3 +1,11 @@ + + # Setting up matrix-registration (optional) > [!WARNING] diff --git a/docs/configuring-playbook-matrix-rtc.md b/docs/configuring-playbook-matrix-rtc.md new file mode 100644 index 000000000..92a522a01 --- /dev/null +++ b/docs/configuring-playbook-matrix-rtc.md @@ -0,0 +1,58 @@ + + +# 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) +- 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. diff --git a/docs/configuring-playbook-matrixto.md b/docs/configuring-playbook-matrixto.md new file mode 100644 index 000000000..f8cc60e47 --- /dev/null +++ b/docs/configuring-playbook-matrixto.md @@ -0,0 +1,68 @@ + + +# Setting up Matrix.to (optional) + +The playbook can install and configure the [Matrix.to](https://github.com/matrix-org/matrix.to) URL redirection service for you. + +See the project's [documentation](https://github.com/matrix-org/matrix.to/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 Matrix.to on the `mt.` subdomain (`mt.example.com`) and requires you to create a CNAME record for `mt`, which targets `matrix.example.com`. + +When setting, replace `example.com` with your own. + +## Adjusting the playbook configuration + +To enable Matrix.to, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: + +```yaml +matrix_matrixto_enabled: true +``` + +### Adjusting the Matrix.to URL (optional) + +By tweaking the `matrix_matrixto_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 +matrix_matrixto_hostname: t.example.com +``` + +After changing the domain, **you may need to adjust your DNS** records to point the Matrix.to domain to the Matrix server. + +### Extending the configuration + +There are some additional things you may wish to configure about the server. + +Take a look at: + +- `roles/custom/matrix-matrixto/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,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 + +Refer to the project's [documentation](https://github.com/matrix-org/matrix.to/blob/main/README.md) for available parameters, 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-matrixto`. 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 cbf67c7c3..872385ca8 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,16 +51,28 @@ 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 # +# # +######################################################################## + ntfy_enabled: true -# Uncomment to enable the ntfy web app (disabled by default) -# ntfy_web_root: app # defaults to "disable" +######################################################################## +# # +# /ntfy # +# # +######################################################################## ``` +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. + +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) By tweaking the `ntfy_hostname` variable, you can easily make the service available at a **different hostname** than the default one. @@ -39,15 +86,19 @@ 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. -### Extending the configuration +### 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. -There are some additional things you may wish to configure about the component. +**Note**: subscribing to a topic is not necessary for using the nfty server as the Push Server for UnifiedPush. -Take a look at: +To enable the web app, add the following configuration to your `vars.yml` file: -- [ntfy role](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy)'s [`defaults/main.yml`](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy/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 `ntfy_configuration_extension_yaml` variable +```yaml +ntfy_web_root: app +``` -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 official documentation](https://docs.ntfy.sh/subscribe/web/) for details about how to use it. ## Installing @@ -64,72 +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. - -### Setting up the `ntfy` Android app +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 Distributor, **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 notifications are "distributed" from it. -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`. +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. -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. +⚠️ 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. -### Setting up a UnifiedPush-compatible Matrix app +### Setting up a UnifiedPush-compatible Matrix client -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. +Having configured the ntfy Android app, you can configure a UnifiedPush-compatible Matrix client on the same device. -Steps needed for specific Matrix apps: +Steps needed for specific Matrix clients: -* FluffyChat-android: - - Should auto-detect and use it. No manual settings. +* FluffyChat-Android: this should auto-detect and use the app. No manual settings required. -* 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 client 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). - -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 -### Check a client application +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. -First check that the Matrix client app you are using supports UnifiedPush. There may well be different variants of the app. +### Check the Matrix client -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. +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 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 -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-ntfy`. - -#### 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 -ntfy_configuration_extension_yaml: | - log_level: DEBUG -``` +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 e49c454ae..91c79c9c6 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. @@ -33,7 +51,7 @@ matrix_playbook_reverse_proxy_type: other-traefik-container # Adjust to point to your Traefik container matrix_playbook_reverse_proxy_hostname: name-of-your-traefik-container -traefik_certs_dumper_ssl_dir_path: "/path/to/your/traefiks/acme.json/directory" +traefik_certs_dumper_ssl_path: "/path/to/your/traefiks/acme.json/directory" # Uncomment and adjust the variable below if the name of your federation entrypoint is different # than the default value (matrix-federation). diff --git a/docs/configuring-playbook-pantalaimon.md b/docs/configuring-playbook-pantalaimon.md index 4341a07f4..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. diff --git a/docs/configuring-playbook-postgres-backup.md b/docs/configuring-playbook-postgres-backup.md index 27aafd1ae..d5bd0fc87 100644 --- a/docs/configuring-playbook-postgres-backup.md +++ b/docs/configuring-playbook-postgres-backup.md @@ -1,6 +1,6 @@ + # Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server (optional) 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 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. +> 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` 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. +> 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 @@ -245,4 +258,4 @@ As with all other services, you can find the logs in [systemd-journald](https:// - [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) +- [The PostgreSQL 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 e52c8cdef..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. 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 b967b6b6b..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. diff --git a/docs/configuring-playbook-s3-goofys.md b/docs/configuring-playbook-s3-goofys.md index 2efdac86e..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 diff --git a/docs/configuring-playbook-s3.md b/docs/configuring-playbook-s3.md index 3679b6add..b7a5e6bed 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. @@ -14,13 +22,11 @@ Finally, [set up S3 storage for Synapse](#setting-up) (with [Goofys](configuring ## Choosing an Object Storage provider -You can create [Amazon S3](https://aws.amazon.com/s3/) or another S3-compatible object storage like [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html), [Storj](https://storj.io), [Wasabi](https://wasabi.com), [Digital Ocean Spaces](https://www.digitalocean.com/products/spaces), etc. - -Amazon S3, Backblaze B2, and Storj are pay-as-you with no minimum charges for storing too little data. +You can create [Amazon S3](https://aws.amazon.com/s3/) or another S3-compatible object storage like [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html), [Wasabi](https://wasabi.com), [Digital Ocean Spaces](https://www.digitalocean.com/products/spaces), [Storj](https://storj.io), etc. -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. +Amazon S3 and Backblaze B2 are pay-as-you with no minimum charges for storing too little data. Note that 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). +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). Though Storj does not set minimum amount of data to be stored, it also charges $5 minimum monthly usage fee since July 1, 2025, if your monthly usage (storage, bandwidth, and segments) totals less than $5. Here are some of the important aspects of choosing the right provider: @@ -89,9 +95,9 @@ For configuring [Goofys](configuring-playbook-s3-goofys.md) or [s3-synapse-stora ## 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 0e72bffaa..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**. diff --git a/docs/configuring-playbook-ssl-certificates.md b/docs/configuring-playbook-ssl-certificates.md index 94c4d58c5..277d29f8b 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 expiration 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 9db6ee290..b746d2c62 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. @@ -42,8 +49,8 @@ aux_file_definitions: content here mode: '0600' - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" ``` Configuring [GCM/FCM](https://firebase.google.com/docs/cloud-messaging/) is easier, as it only requires that you provide some config values. diff --git a/docs/configuring-playbook-synapse-admin.md b/docs/configuring-playbook-synapse-admin.md index bd07a8bb9..7abf4c696 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. @@ -6,6 +18,8 @@ synapse-admin is a web UI tool you can use to **administrate users, rooms, media 💡 **Note**: the latest version of synapse-admin is hosted by [etke.cc](https://etke.cc/) at [admin.etke.cc](https://admin.etke.cc/). If you only need this service occasionally and trust giving your admin credentials to a 3rd party Single Page Application, you can consider using it from there and avoiding the (small) overhead of self-hosting. +💡 **Note**: The playbook also supports an alternative management UI in the shape of [Element Admin](./configuring-playbook-element-admin.md). However, it's currently less feature-rich than Synapse Admin and has a dependency on [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md). + ## Adjusting DNS records (optional) By default, this playbook installs Synapse Admin on the `matrix.` subdomain, at the `/synapse-admin` path (https://matrix.example.com/synapse-admin). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section. @@ -27,9 +41,6 @@ matrix_synapse_admin_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. -> [!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) By tweaking the `matrix_synapse_admin_hostname` and `matrix_synapse_admin_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one. 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 988be65c3..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. @@ -16,12 +24,15 @@ matrix_synapse_auto_compressor_enabled: true ### Edit the schedule (optional) -By default the task will run 0 a.m. every day based on the `matrix_synapse_auto_compressor_schedule` variable. It is defined in the format of systemd timer calendar. +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 diff --git a/docs/configuring-playbook-synapse-s3-storage-provider.md b/docs/configuring-playbook-synapse-s3-storage-provider.md index efe3a5a82..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. -An alternative (which has worse performance) is to use [Goofys to mount the S3 store to the local filesystem](configuring-playbook-s3-goofys.md). +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. + +**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? @@ -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/…`): diff --git a/docs/configuring-playbook-synapse-simple-antispam.md b/docs/configuring-playbook-synapse-simple-antispam.md index 069b26d2f..75a81bd8a 100644 --- a/docs/configuring-playbook-synapse-simple-antispam.md +++ b/docs/configuring-playbook-synapse-simple-antispam.md @@ -1,8 +1,15 @@ + + # 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. -It lets you fight invite-spam by automatically blocking invitiations from a list of servers specified by you (blacklisting). +It lets you fight invite-spam by automatically blocking invitations from a list of servers specified by you (blacklisting). See the project's [documentation](https://github.com/t2bot/synapse-simple-antispam/blob/master/README.md) to learn what it does and why it might be useful to 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 6c3e9629d..cb66cdffe 100644 --- a/docs/configuring-playbook-synapse-usage-exporter.md +++ b/docs/configuring-playbook-synapse-usage-exporter.md @@ -1,3 +1,11 @@ + + # Enabling synapse-usage-exporter for Synapse usage statistics (optional) The playbook can install and configure [synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) for you. diff --git a/docs/configuring-playbook-synapse.md b/docs/configuring-playbook-synapse.md index 72666042c..dbb6ef0d6 100644 --- a/docs/configuring-playbook-synapse.md +++ b/docs/configuring-playbook-synapse.md @@ -1,3 +1,14 @@ + + # 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. @@ -42,7 +53,7 @@ You may also consider [tweaking the number of workers of each type](#controlling ##### 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 requester's IP address, specialized load-balancing routes to **4 different types of specialized workers** based on **smarter criteria** — the access token (username) of the requester and/or on the resource (room, etc.) being requested. The playbook supports these **4 types** of specialized workers: 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 489d2e8df..46b236580 100644 --- a/docs/configuring-playbook-traefik.md +++ b/docs/configuring-playbook-traefik.md @@ -1,3 +1,12 @@ + + # 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 for you. If that's okay, you can skip this document. diff --git a/docs/configuring-playbook-turn.md b/docs/configuring-playbook-turn.md index 56858d886..0cce596e5 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. @@ -39,6 +49,23 @@ Regardless of the selected authentication method, the playbook generates secrets If [Jitsi](configuring-playbook-jitsi.md) is installed, note that switching to `lt-cred-mech` will disable the integration between Jitsi and your coturn server, as Jitsi seems to support the `auth-secret` authentication method only. +### Customize the Coturn hostname (optional) + +By default, Coturn uses the same hostname as your Matrix homeserver (the value of `matrix_server_fqn_matrix`, which is typically `matrix.example.com`). + +If you'd like to use a custom subdomain for Coturn (e.g., `turn.example.com` or `t.matrix.example.com`), add the following configuration to your `vars.yml` file: + +```yaml +matrix_coturn_hostname: turn.example.com +``` + +The playbook will automatically: +- Configure Coturn to use this hostname +- Obtain an SSL certificate for the custom domain via Traefik +- Update all TURN URIs to point to the custom domain + +**Note**: Make sure the custom hostname resolves to your server's IP address via DNS before running the playbook. + ### Use your own external coturn server (optional) If you'd like to use another TURN server (be it coturn or some other one), add the following configuration to your `vars.yml` file. Make sure to replace `HOSTNAME_OR_IP` with your own. diff --git a/docs/configuring-playbook-user-verification-service.md b/docs/configuring-playbook-user-verification-service.md index 8e09d61ef..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. diff --git a/docs/configuring-playbook.md b/docs/configuring-playbook.md index 31d443616..31fd9e63d 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). @@ -37,6 +53,8 @@ For a more custom setup, see the [Other configuration options](#other-configurat - [Configuring conduwuit](configuring-playbook-conduwuit.md), if you've switched to the [conduwuit](https://conduwuit.puppyirl.gay/) homeserver implementation + - [Configuring continuwuity](configuring-playbook-continuwuity.md), if you've switched to the [continuwuity](https://continuwuity.org) homeserver implementation + - [Configuring Dendrite](configuring-playbook-dendrite.md), if you've switched to the [Dendrite](https://matrix-org.github.io/dendrite) homeserver implementation - Server components: @@ -61,6 +79,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 +93,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,11 +124,13 @@ 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 @@ -113,6 +138,8 @@ Bridges can be used to connect your Matrix installation with third-party communi - [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) - [Setting up Mautrix Telegram bridging](configuring-playbook-bridge-mautrix-telegram.md) @@ -147,19 +174,11 @@ Bridges can be used to connect your Matrix installation with third-party communi - [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) - -- [Setting up MX Puppet Instagram bridging](configuring-playbook-bridge-mx-puppet-instagram.md) - -- [Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md) - -- [Setting up MX Puppet Discord bridging](configuring-playbook-bridge-mx-puppet-discord.md) - - [Setting up MX Puppet GroupMe bridging](configuring-playbook-bridge-mx-puppet-groupme.md) -- [Setting up MX Puppet Steam bridging](configuring-playbook-bridge-mx-puppet-steam.md) +- [Setting up Steam bridging](configuring-playbook-bridge-steam.md) -- [Setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md) +- [Setting up MX Puppet Steam bridging](configuring-playbook-bridge-mx-puppet-steam.md) - [Setting up Postmoogle email bridging](configuring-playbook-bridge-postmoogle.md) @@ -169,6 +188,8 @@ Bridges can be used to connect your Matrix installation with third-party communi - [Setting up WeChat bridging](configuring-playbook-bridge-wechat.md) +- [Setting up Zulip bridging](configuring-playbook-bridge-zulip.md) + ### Bots Bots provide various additional functionality to your installation. @@ -212,12 +233,22 @@ Services that help you in administrating and monitoring your Matrix installation 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 - [Setting up Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced) +- [Setting up Matrix.to](configuring-playbook-matrixto.md) + - [Setting up Etherpad](configuring-playbook-etherpad.md) - [Setting up the Jitsi video-conferencing platform](configuring-playbook-jitsi.md) @@ -236,18 +267,28 @@ 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 Email2Matrix](configuring-playbook-email2matrix.md) (unmaintained; 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 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 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 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 Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md) (removed; Skype has been discontinued since May 2025) -- [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 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 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)) +- [Setting up MX Puppet Discord bridging](configuring-playbook-bridge-mx-puppet-discord.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Discord bridging](configuring-playbook-bridge-mautrix-discord.md)) + +- [Setting up MX Puppet Instagram bridging](configuring-playbook-bridge-mx-puppet-instagram.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md)) + - [Setting up MX Puppet Skype bridging](configuring-playbook-bridge-mx-puppet-skype.md) (removed; this component has been broken for a long time, so it has been removed from the playbook. Consider [setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md)) + +- [Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Slack bridging](configuring-playbook-bridge-mautrix-slack.md)) + +- [Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md)) diff --git a/docs/configuring-well-known.md b/docs/configuring-well-known.md index cd387bc00..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. diff --git a/docs/container-images.md b/docs/container-images.md index fbafe02e0..cd38e917c 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. @@ -11,6 +28,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. | +| [continuwuity](configuring-playbook-continuwuity.md) | [continuwuation/continuwuity](https://forgejo.ellis.link/continuwuation/continuwuity) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. continuwuity is a continuation of conduwuit. | | [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 @@ -37,6 +55,8 @@ Services that run on the server to make the various parts of your installation w | [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 @@ -49,7 +69,7 @@ Extend and modify how users are authenticated on your homeserver. | [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) | ❌ | 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) (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 | +| [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 @@ -68,6 +88,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/) | @@ -86,13 +107,10 @@ Bridges can be used to connect your Matrix installation with third-party communi | [matrix-hookshot](configuring-playbook-bridge-hookshot.md) | [halfshot/matrix-hookshot](https://hub.docker.com/r/halfshot/matrix-hookshot) | ❌ | Bridge for generic webhooks and multiple project management services, such as GitHub, GitLab, Figma, and Jira in particular | | [matrix-sms-bridge](configuring-playbook-bridge-matrix-bridge-sms.md) | [folivonet/matrix-sms-bridge](https://hub.docker.com/repository/docker/folivonet/matrix-sms-bridge) | ❌ | Bridge to SMS | | [matrix-wechat](configuring-playbook-bridge-wechat.md) | [lxduo/matrix-wechat](https://hub.docker.com/r/lxduo/matrix-wechat) | ❌ | Bridge to [WeChat](https://www.wechat.com/) | +| [MatrixZulipBridge](configuring-playbook-bridge-zulip.md) | [GearKite/MatrixZulipBridge](https://ghcr.io/gearkite/matrixzulipbridge) | ❌ | Puppeting appservice bridge for [Zulip](https://zulip.com/) | | [Heisenbridge](configuring-playbook-bridge-heisenbridge.md) | [hif1/heisenbridge](https://hub.docker.com/r/hif1/heisenbridge) | ❌ | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | -| [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) | [nodefyme/go-skype-bridge](https://hub.docker.com/r/nodefyme/go-skype-bridge) | ❌ | Bridge to [Skype](https://www.skype.com) | -| [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) | [mx-puppet/slack/mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/container_registry) | ❌ | Bridge to [Slack](https://slack.com) | -| [mx-puppet-instagram](configuring-playbook-bridge-mx-puppet-instagram.md) | [sorunome/mx-puppet-instagram](https://hub.docker.com/r/sorunome/mx-puppet-instagram) | ❌ | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) | -| [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) | [sorunome/mx-puppet-twitter](https://hub.docker.com/r/sorunome/mx-puppet-twitter) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) | -| [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/) | +| [matrix-steam-bridge](configuring-playbook-bridge-steam.md) | [jasonlaguidice/matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge/pkgs/container/matrix-steam-bridge) | ❌ | Bridge to [Steam](https://steampowered.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/) | | [Postmoogle](configuring-playbook-bridge-postmoogle.md) | [etke.cc/postmoogle](https://github.com/etkecc/postmoogle/container_registry) | ❌ | Email to Matrix bridge | @@ -137,7 +155,7 @@ Various services that don't fit any other categories. | ------- | --------------- | -------- | ----------- | | [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) | ❌ | 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 | +| [synapse_auto_compressor](configuring-playbook-synapse-auto-compressor.md) | [mb-saces/rust-synapse-tools](https://gitlab.com/mb-saces/rust-synapse-tools/container_registry) | ❌ | Cli tool that automatically compresses Synapse's `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/) | ❌ | 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 | @@ -149,6 +167,7 @@ Various services that don't fit any other categories. | [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 @@ -156,10 +175,14 @@ 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) | ❌ | 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-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.) | | [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-instagram](configuring-playbook-bridge-mautrix-instagram.md) | [mautrix/instagram](https://mau.dev/mautrix/instagram/container_registry) | ❌ | Bridge to [Instagram](https://instagram.com/) | +| [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-instagram](configuring-playbook-bridge-mx-puppet-instagram.md) | [sorunome/mx-puppet-instagram](https://hub.docker.com/r/sorunome/mx-puppet-instagram) | ❌ | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) | +| [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) | [mx-puppet/slack/mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/container_registry) | ❌ | Bridge to [Slack](https://slack.com) | +| [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) | [sorunome/mx-puppet-twitter](https://hub.docker.com/r/sorunome/mx-puppet-twitter) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) | diff --git a/docs/faq.md b/docs/faq.md index c7e4cd2fb..3e7c9767d 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)). @@ -223,7 +235,7 @@ Running Matrix on a server with 1GB of memory is possible (especially if you dis **We recommend starting with a server having at least 2GB of memory** and even then using it sparingly. If you know for sure you'll be joining various large rooms, etc., then going for 4GB of memory or more is a good idea. -Besides the regular Matrix stuff, we also support things like video-conferencing using [Jitsi](configuring-playbook-jitsi.md) and other additional services which (when installed) may use up a lot of memory. Things do add up. Besides the Synapse Matrix server, Jitsi is especially notorious for consuming a lot of resources. If you plan on running Jitsi, we recommend a server with at least 2GB of memory (preferrably more). See our [Jitsi documentation page](configuring-playbook-jitsi.md) to learn how to optimize its memory/CPU usage. +Besides the regular Matrix stuff, we also support things like video-conferencing using [Jitsi](configuring-playbook-jitsi.md) and other additional services which (when installed) may use up a lot of memory. Things do add up. Besides the Synapse Matrix server, Jitsi is especially notorious for consuming a lot of resources. If you plan on running Jitsi, we recommend a server with at least 2GB of memory (preferably more). See our [Jitsi documentation page](configuring-playbook-jitsi.md) to learn how to optimize its memory/CPU usage. ### Can I run this in an LXC container? @@ -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 @@ -353,7 +362,7 @@ Configuration variables are defined in multiple places in this playbook and are You can discover the variables you can override in each role (`roles/*/*/defaults/main.yml`). -As described in [How is the effective configuration determined?](#how-is-the-effective-configuration-determined), these role-defaults may be overriden by values defined in `group_vars/matrix_servers`. +As described in [How is the effective configuration determined?](#how-is-the-effective-configuration-determined), these role-defaults may be overridden by values defined in `group_vars/matrix_servers`. Refer to both of these for inspiration. Still, as mentioned in [Configuring the playbook](configuring-playbook.md), you're only ever supposed to edit your own `inventory/host_vars/matrix.example.com/vars.yml` file and nothing else inside the playbook (unless you're meaning to contribute new features). @@ -431,6 +440,19 @@ To prevent double-logging, Docker logging is disabled by explicitly passing `--l 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. +### The server fails to start due to the `Unable to start service matrix-coturn.service` error. Why and how to solve it? + +The error is most likely because Traefik cannot obtain SSL certificates due to certain reasons such as wrong domain name configuration or port 80 being unavailable due to other services. + +If Traefik fails to obtain an SSL certificate for domain names such as `matrix.`, Traefik Certs Dumper cannot extract the SSL certificate out of there, and coturn cannot be started and the error occurs. Refer to these comments for details: + +- +- + +If you are not sure what the problem is, at first make sure that you have set the "base domain" (`example.com`, **not `matrix.example.com`**) to `matrix_domain`. You should be able to find it at the top of your `vars.yml`. + +If it is correctly specified, look Traefik's logs (`journalctl -fu matrix-traefik.service`) for errors by Let's Encrypt for troubleshooting. + ## Miscellaneous ### I would like to see this favorite service of mine integrated and become available on my Matrix server. How can I request it? 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 602fda481..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. diff --git a/docs/howto-srv-server-delegation.md b/docs/howto-srv-server-delegation.md index 4512dfca8..95e724436 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), [continuwuity](./configuring-playbook-continuwuity.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. @@ -34,7 +42,7 @@ This is because with SRV federation, some servers / tools (one of which being th ### Tell Traefik which certificate to serve for the federation endpoint -Now that the federation endpoint is not bound to a domain anymore we need to explicitely tell Traefik to use a wildcard certificate in addition to one containing the base name. +Now that the federation endpoint is not bound to a domain anymore we need to explicitly tell Traefik to use a wildcard certificate in addition to one containing the base name. This is because the Matrix specification expects the federation endpoint to be served using a certificate compatible with the base domain, however, the other resources on the endpoint still need a valid certificate to work. @@ -71,8 +79,8 @@ traefik_configuration_extension_yaml: | - "8.8.8.8:53" 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: | +# 2. Configure the environment variables needed by Traefik to automate the ACME DNS Challenge (example for Cloudflare) +traefik_environment_variables: | CF_API_EMAIL=redacted CF_ZONE_API_TOKEN=redacted CF_DNS_API_TOKEN=redacted @@ -104,12 +112,12 @@ matrix_coturn_container_additional_volumes: | ( [ { - 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/certificate.crt'), + 'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/certificate.crt'), 'dst': '/certificate.crt', 'options': 'ro', }, { - 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/privatekey.key'), + 'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/privatekey.key'), 'dst': '/privatekey.key', 'options': 'ro', }, @@ -150,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 @@ -165,12 +173,12 @@ matrix_coturn_container_additional_volumes: | ( [ { - 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/certificate.crt'), + 'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/certificate.crt'), 'dst': '/certificate.crt', 'options': 'ro', }, { - 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/privatekey.key'), + 'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/privatekey.key'), 'dst': '/privatekey.key', 'options': 'ro', }, diff --git a/docs/importing-postgres.md b/docs/importing-postgres.md index 1113caf1e..a27c7d6d5 100644 --- a/docs/importing-postgres.md +++ b/docs/importing-postgres.md @@ -1,3 +1,12 @@ + + # Importing an existing Postgres database from another installation (optional) You can manually import your database from a previous default installation of Synapse. diff --git a/docs/importing-synapse-media-store.md b/docs/importing-synapse-media-store.md index 69c8b0ef6..08993f952 100644 --- a/docs/importing-synapse-media-store.md +++ b/docs/importing-synapse-media-store.md @@ -1,3 +1,10 @@ + + # Importing `media_store` data files from an existing Synapse installation (optional) You can manually import your `media_store` files from a previous installation of Synapse. diff --git a/docs/importing-synapse-sqlite.md b/docs/importing-synapse-sqlite.md index 0fe0ec84e..f3ce1d2f4 100644 --- a/docs/importing-synapse-sqlite.md +++ b/docs/importing-synapse-sqlite.md @@ -1,3 +1,11 @@ + + # Importing an existing SQLite database from another Synapse installation (optional) You can manually import your database from a previous default installation of Synapse. diff --git a/docs/installing.md b/docs/installing.md index 860e8d9bf..7b6dc33ef 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. @@ -120,9 +134,11 @@ 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-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.) @@ -133,7 +149,7 @@ After finilizing the installation, you can: * 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**. @@ -141,7 +157,9 @@ 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) +Also, do not forget to update your system regularly. While this playbook may install basic services, such as Docker, it will not interfere further with system maintenance. Keeping the system itself up-to-date is out of scope for this playbook. + +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 153a20f1e..c12743b74 100644 --- a/docs/just.md +++ b/docs/just.md @@ -1,3 +1,10 @@ + + # 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. @@ -6,7 +13,7 @@ In addition, we have added support for running commands via [`just`](https://git 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: diff --git a/docs/maintenance-and-troubleshooting.md b/docs/maintenance-and-troubleshooting.md index 99205697e..bd3e4b84c 100644 --- a/docs/maintenance-and-troubleshooting.md +++ b/docs/maintenance-and-troubleshooting.md @@ -1,3 +1,14 @@ + + # Maintenance and Troubleshooting ## Maintenance diff --git a/docs/maintenance-migrating.md b/docs/maintenance-migrating.md index 2aa2e5a86..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**. diff --git a/docs/maintenance-postgres.md b/docs/maintenance-postgres.md index 569d5fd4d..8c26669e0 100644 --- a/docs/maintenance-postgres.md +++ b/docs/maintenance-postgres.md @@ -1,3 +1,15 @@ + + # PostgreSQL maintenance This document shows you how to perform various maintenance tasks related to the Postgres database server used by Matrix. @@ -11,7 +23,7 @@ Table of contents: ## 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. @@ -47,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 \ @@ -86,18 +98,18 @@ 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 PostgreSQL can be [tuned](https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server) to make it run faster. This is done by passing extra arguments to the Postgres process. -The [Postgres Ansible role](https://github.com/mother-of-all-self-hosting/ansible-role-postgres) **already does some tuning by default**, which matches the [tuning logic](https://github.com/le0pard/pgtune/blob/master/src/features/configuration/configurationSlice.js) done by websites like https://pgtune.leopard.in.ua/. You can manually influence some of the tuning variables. These parameters (variables) are injected via the `postgres_postgres_process_extra_arguments_auto` variable. +The [Postgres Ansible role](https://github.com/mother-of-all-self-hosting/ansible-role-postgres) **already does some tuning by default**, which matches the [tuning logic](https://github.com/le0pard/pgtune/blob/master/src/features/configuration/configurationSlice.js) done by websites like https://pgtune.leopard.in.ua/. You can manually influence some of the tuning variables. These parameters (variables) are injected via the `postgres_postgres_process_extra_arguments_default` variable. Most users should be fine with the automatically-done tuning. However, you may wish to: -- **adjust the automatically-determined tuning parameters manually**: change the values for the tuning variables defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) (see `postgres_max_connections`, `postgres_data_storage` etc). These variables are ultimately passed to Postgres via a `postgres_postgres_process_extra_arguments_auto` variable +- **adjust the automatically-determined tuning parameters manually**: change the values for the tuning variables defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) (see `postgres_max_connections`, `postgres_data_storage` etc). These variables are ultimately passed to Postgres via a `postgres_postgres_process_extra_arguments_default` variable -- **turn automatically-performed tuning off**: override it like this: `postgres_postgres_process_extra_arguments_auto: []` +- **turn automatically-performed tuning off**: override it like this: `postgres_postgres_process_extra_arguments_default: []` -- **add additional tuning parameters**: define your additional Postgres configuration parameters in `postgres_postgres_process_extra_arguments_custom`. See `postgres_postgres_process_extra_arguments_auto` defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) for inspiration +- **add additional tuning parameters**: define your additional Postgres configuration parameters in `postgres_postgres_process_extra_arguments_custom`. See `postgres_postgres_process_extra_arguments_default` defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) for inspiration diff --git a/docs/maintenance-synapse.md b/docs/maintenance-synapse.md index e7cb17c9d..15b6eb62b 100644 --- a/docs/maintenance-synapse.md +++ b/docs/maintenance-synapse.md @@ -1,3 +1,14 @@ + + # Synapse maintenance This document shows you how to perform various maintenance tasks related to the Synapse chat server. 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 3466f1a4e..c72f5840c 100644 --- a/docs/obtaining-access-tokens.md +++ b/docs/obtaining-access-tokens.md @@ -1,3 +1,12 @@ + + # 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. diff --git a/docs/playbook-tags.md b/docs/playbook-tags.md index 02da3ea7e..e7b9682c0 100644 --- a/docs/playbook-tags.md +++ b/docs/playbook-tags.md @@ -1,8 +1,17 @@ + + # 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: @@ -18,7 +27,7 @@ Here are some playbook tags that you should be familiar with: - `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..bd0ad4316 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. @@ -38,7 +49,7 @@ We will be using `example.com` as the domain in the following instruction. Pleas - [Python](https://www.python.org/). Most distributions install Python by default, but some don't (e.g. Ubuntu 18.04) and require manual installation (something like `apt-get install python3`). On some distros, Ansible may incorrectly [detect the Python version](https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html) (2 vs 3) and you may need to explicitly specify the interpreter path in `inventory/hosts` during installation (e.g. `ansible_python_interpreter=/usr/bin/python3`) -- [sudo](https://www.sudo.ws/), even when you've configured Ansible to log in as `root`. Some distributions, like a minimal Debian net install, do not include the `sudo` package by default. +- [sudo](https://www.sudo.ws/), even when you've configured Ansible to log in as `root`, because this Ansible playbook sometimes uses the Ansible [become](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_privilege_escalation.html) module to perform tasks as another user (e.g. `matrix`) and the `become` module's default implementation uses `sudo`. Some distributions, like a minimal Debian net install, do not include the `sudo` package by default. - An HTTPS-capable web server at the base domain name (`example.com`) which is capable of serving static files. Unless you decide to [Serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md) or alternatively, to use DNS SRV records for [Server Delegation](howto-server-delegation.md). @@ -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 UDP (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 fbb579f61..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. @@ -151,6 +161,6 @@ You can then proceed to run the query above. ### Adding/Removing Administrator privileges to an existing user in Matrix Authentication Service -Promoting/demoting a user in Matrix Authentication Service cannot currently (2024-10-19) be done via the [`mas-cli` Management tool](./configuring-playbook-matrix-authentication-service.md#management). +Promoting/demoting a user in Matrix Authentication Service can be done using the [`mas-cli`](./configuring-playbook-matrix-authentication-service.md#management) management tool's [`manage promote-admin`](https://element-hq.github.io/matrix-authentication-service/reference/cli/manage.html#manage-promote-admin) and [`manage demote-admin`](https://element-hq.github.io/matrix-authentication-service/reference/cli/manage.html#manage-demote-admin) commands. For example: `/matrix/matrix-authentication-service/bin/mas-cli manage promote-admin some.username`. -You can do it via the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html)'s `POST /api/admin/v1/users/{id}/set-admin` endpoint. +You can also do it via the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html)'s `POST /api/admin/v1/users/{id}/set-admin` endpoint. diff --git a/docs/self-building.md b/docs/self-building.md index 543065d89..74252dbb2 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.** @@ -25,9 +39,7 @@ Possibly outdated list of roles where self-building the Docker image is currentl - `matrix-bridge-hookshot` - `matrix-bridge-appservice-irc` - `matrix-bridge-appservice-slack` -- `matrix-bridge-appservice-webhooks` - `matrix-bridge-beeper-linkedin` -- `matrix-bridge-mautrix-facebook` - `matrix-bridge-mautrix-googlechat` - `matrix-bridge-mautrix-telegram` - `matrix-bridge-mautrix-signal` @@ -38,7 +50,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 4c70082f5..1a0f3f6ef 100644 --- a/docs/uninstalling.md +++ b/docs/uninstalling.md @@ -1,3 +1,11 @@ + + # Uninstalling > [!WARNING] diff --git a/docs/updating-users-passwords.md b/docs/updating-users-passwords.md index 87a844bb8..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): 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..185fc8bb4 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 @@ -27,6 +33,12 @@ ProxyRequests Off ProxyVia On RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} + ProxyTimeout 86400 + + RewriteEngine On + RewriteCond %{HTTP:Connection} Upgrade [NC] + RewriteCond %{HTTP:Upgrade} websocket [NC] + RewriteRule /(.*) ws://127.0.0.1:81/$1 [P,L] AllowEncodedSlashes NoDecode ProxyPass / http://127.0.0.1:81/ retry=0 nocanon 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..1047ed615 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. @@ -14,7 +23,7 @@ If Matrix federation is enabled, then you will need to make changes to [NPM's Do You'll need to create two proxy hosts in NPM for Matrix web and federation traffic. -Open the 'Proxy Hosts' page in the NPM web interface and select `Add Proxy Host`, the first being for Matrix web traffic. Apply the proxys configuration like this: +Open the 'Proxy Hosts' page in the NPM web interface and select `Add Proxy Host`, the first being for Matrix web traffic. Apply the proxy's configuration like this: ```md # Details @@ -35,7 +44,7 @@ Custom Nginx Configuration: client_max_body_size 50M; ``` -Again, under the 'Proxy Hosts' page select `Add Proxy Host`, this time for your federation traffic. Apply the proxys configuration like this: +Again, under the 'Proxy Hosts' page select `Add Proxy Host`, this time for your federation traffic. Apply the proxy's configuration like this: ```md # Details 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 7d2459543..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; diff --git a/examples/vars.yml b/examples/vars.yml index cc6aa8333..b5e0b0a35 100644 --- a/examples/vars.yml +++ b/examples/vars.yml @@ -28,10 +28,29 @@ matrix_homeserver_generic_secret_key: '' # For alternatives, see `docs/configuring-playbook-own-webserver.md`. matrix_playbook_reverse_proxy_type: playbook-managed-traefik +# 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 + # 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 516fd6d83..06ccd0952 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. @@ -62,11 +73,11 @@ matrix_federation_traefik_entrypoint_tls: "{{ traefik_config_entrypoint_web_secu # # ######################################################################## -aux_directory_default_owner: "{{ matrix_user_username }}" -aux_directory_default_group: "{{ matrix_user_groupname }}" +aux_directory_default_owner: "{{ matrix_user_name }}" +aux_directory_default_group: "{{ matrix_group_name }}" -aux_file_default_owner: "{{ matrix_user_username }}" -aux_file_default_group: "{{ matrix_user_groupname }}" +aux_file_default_owner: "{{ matrix_user_name }}" +aux_file_default_group: "{{ matrix_group_name }}" ######################################################################## # # @@ -95,28 +106,24 @@ matrix_homeserver_container_extra_arguments_auto: | + (['--mount type=bind,src=' + matrix_appservice_slack_config_path + '/slack-registration.yaml,dst=/matrix-appservice-slack-registration.yaml,ro'] if matrix_appservice_slack_enabled else []) + - (['--mount type=bind,src=' + matrix_appservice_webhooks_config_path + '/webhooks-registration.yaml,dst=/matrix-appservice-webhooks-registration.yaml,ro'] if matrix_appservice_webhooks_enabled else []) - + (['--mount type=bind,src=' + matrix_beeper_linkedin_config_path + '/registration.yaml,dst=/matrix-beeper-linkedin-registration.yaml,ro'] if matrix_beeper_linkedin_enabled else []) + - (['--mount type=bind,src=' + matrix_go_skype_bridge_config_path + '/registration.yaml,dst=/matrix-go-skype-bridge-registration.yaml,ro'] if matrix_go_skype_bridge_enabled else []) - + (['--mount type=bind,src=' + matrix_wechat_config_path + '/registration.yaml,dst=/matrix-wechat-registration.yaml,ro'] if matrix_wechat_enabled else []) + (['--mount type=bind,src=' + matrix_heisenbridge_base_path + '/registration.yaml,dst=/heisenbridge-registration.yaml,ro'] if matrix_heisenbridge_enabled else []) + (['--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_zulip_bridge_base_path + '/registration.yaml,dst=/matrixzulipbridge-registration.yaml,ro'] if matrix_zulip_bridge_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 []) + - (['--mount type=bind,src=' + matrix_mautrix_facebook_config_path + '/registration.yaml,dst=/matrix-mautrix-facebook-registration.yaml,ro'] if matrix_mautrix_facebook_enabled else []) - + (['--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_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 []) + (['--mount type=bind,src=' + matrix_mautrix_meta_messenger_config_path + '/registration.yaml,dst=/matrix-mautrix-meta-messenger-registration.yaml,ro'] if matrix_mautrix_meta_messenger_enabled else []) @@ -135,20 +142,14 @@ matrix_homeserver_container_extra_arguments_auto: | + (['--mount type=bind,src=' + matrix_mautrix_wsproxy_config_path + '/imessage-registration.yaml,dst=/matrix-mautrix-imessage-registration.yaml,ro'] if matrix_mautrix_wsproxy_enabled else []) + - (['--mount type=bind,src=' + matrix_mx_puppet_discord_config_path + '/registration.yaml,dst=/matrix-mx-puppet-discord-registration.yaml,ro'] if matrix_mx_puppet_discord_enabled else []) - + (['--mount type=bind,src=' + matrix_mx_puppet_groupme_config_path + '/registration.yaml,dst=/matrix-mx-puppet-groupme-registration.yaml,ro'] if matrix_mx_puppet_groupme_enabled else []) + - (['--mount type=bind,src=' + matrix_mx_puppet_instagram_config_path + '/registration.yaml,dst=/matrix-mx-puppet-instagram-registration.yaml,ro'] if matrix_mx_puppet_instagram_enabled else []) - + - (['--mount type=bind,src=' + matrix_mx_puppet_slack_config_path + '/registration.yaml,dst=/matrix-mx-puppet-slack-registration.yaml,ro'] if matrix_mx_puppet_slack_enabled else []) - + (['--mount type=bind,src=' + matrix_mx_puppet_steam_config_path + '/registration.yaml,dst=/matrix-mx-puppet-steam-registration.yaml,ro'] if matrix_mx_puppet_steam_enabled else []) + - (['--mount type=bind,src=' + matrix_mx_puppet_twitter_config_path + '/registration.yaml,dst=/matrix-mx-puppet-twitter-registration.yaml,ro'] if matrix_mx_puppet_twitter_enabled else []) - + (['--mount type=bind,src=' + matrix_sms_bridge_config_path + '/registration.yaml,dst=/matrix-sms-bridge-registration.yaml,ro'] if matrix_sms_bridge_enabled else []) + + (['--mount type=bind,src=' + matrix_steam_bridge_config_path + '/registration.yaml,dst=/matrix-steam-bridge-registration.yaml,ro'] if matrix_steam_bridge_enabled else []) + + (['--mount type=bind,src=' + matrix_cactus_comments_app_service_config_file + ',dst=/matrix-cactus-comments.yaml,ro'] if matrix_cactus_comments_enabled else []) }} @@ -166,28 +167,24 @@ matrix_homeserver_app_service_config_files_auto: | + (['/matrix-appservice-slack-registration.yaml'] if matrix_appservice_slack_enabled else []) + - (['/matrix-appservice-webhooks-registration.yaml'] if matrix_appservice_webhooks_enabled else []) - + (['/matrix-beeper-linkedin-registration.yaml'] if matrix_beeper_linkedin_enabled else []) + - (['/matrix-go-skype-bridge-registration.yaml'] if matrix_go_skype_bridge_enabled else []) - + (['/matrix-wechat-registration.yaml'] if matrix_wechat_enabled else []) + (['/heisenbridge-registration.yaml'] if matrix_heisenbridge_enabled else []) + (['/hookshot-registration.yml'] if matrix_hookshot_enabled else []) + + (['/matrixzulipbridge-registration.yaml'] if matrix_zulip_bridge_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 []) + - (['/matrix-mautrix-facebook-registration.yaml'] if matrix_mautrix_facebook_enabled else []) - + (['/matrix-mautrix-googlechat-registration.yaml'] if matrix_mautrix_googlechat_enabled else []) + - (['/matrix-mautrix-instagram-registration.yaml'] if matrix_mautrix_instagram_enabled else []) - + (['/matrix-mautrix-signal-registration.yaml'] if matrix_mautrix_signal_enabled else []) + (['/matrix-mautrix-meta-messenger-registration.yaml'] if matrix_mautrix_meta_messenger_enabled else []) @@ -206,21 +203,15 @@ matrix_homeserver_app_service_config_files_auto: | + (['/matrix-mautrix-imessage-registration.yaml'] if matrix_mautrix_wsproxy_enabled else []) + - (['/matrix-mx-puppet-discord-registration.yaml'] if matrix_mx_puppet_discord_enabled else []) - + (['/matrix-mx-puppet-groupme-registration.yaml'] if matrix_mx_puppet_groupme_enabled else []) + - (['/matrix-mx-puppet-instagram-registration.yaml'] if matrix_mx_puppet_instagram_enabled else []) - + - (['/matrix-mx-puppet-slack-registration.yaml'] if matrix_mx_puppet_slack_enabled else []) - + (['/matrix-mx-puppet-steam-registration.yaml'] if matrix_mx_puppet_steam_enabled else []) + - (['/matrix-mx-puppet-twitter-registration.yaml'] if matrix_mx_puppet_twitter_enabled else []) - + (['/matrix-sms-bridge-registration.yaml'] if matrix_sms_bridge_enabled else []) + (['/matrix-cactus-comments.yaml'] if matrix_cactus_comments_enabled else []) + + + (['/matrix-steam-bridge-registration.yaml'] if matrix_steam_bridge_enabled else []) }} matrix_addons_homeserver_container_network: "{{ matrix_playbook_reverse_proxy_container_network if matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled else matrix_homeserver_container_network }}" @@ -228,7 +219,7 @@ matrix_addons_homeserver_client_api_url: "{{ ('http://' + matrix_playbook_revers matrix_addons_homeserver_systemd_services_list: "{{ ([traefik_identifier + '.service'] if matrix_playbook_reverse_proxy_type == 'playbook-managed-traefik' else []) if matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled else matrix_homeserver_systemd_services_list }}" # Starting from version `0.6.0` Conduit natively supports some sync v3 (sliding-sync) features. -matrix_homeserver_sliding_sync_url: "{{ matrix_sliding_sync_base_url if matrix_sliding_sync_enabled else (matrix_homeserver_url if matrix_homeserver_implementation in ['conduit', 'conduwuit'] else '') }}" +matrix_homeserver_sliding_sync_url: "{{ matrix_sliding_sync_base_url if matrix_sliding_sync_enabled else (matrix_homeserver_url if matrix_homeserver_implementation in ['conduit', 'conduwuit', 'continuwuity'] else '') }}" ######################################################################## # # @@ -292,8 +283,6 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-bot-draupnir.service', 'priority': 4000, 'groups': ['matrix', 'bots', 'draupnir', 'bot-draupnir']}] if matrix_bot_draupnir_enabled else []) + - ([{'name': 'matrix-bot-chatgpt.service', 'priority': 2200, 'groups': ['matrix', 'bots', 'chatgpt', 'bot-chatgpt']}] if matrix_bot_chatgpt_enabled else []) - + ([{'name': 'matrix-appservice-discord.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'appservice-discord']}] if matrix_appservice_discord_enabled else []) + ([{'name': 'matrix-appservice-draupnir-for-all.service', 'priority': 4000, 'groups': ['matrix', 'bridges', 'draupnir-for-all', 'appservice-draupnir-for-all']}] if matrix_appservice_draupnir_for_all_enabled else []) @@ -306,12 +295,8 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-appservice-slack.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'appservice-slack']}] if matrix_appservice_slack_enabled else []) + - ([{'name': 'matrix-appservice-webhooks.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'appservice-webhooks']}] if matrix_appservice_webhooks_enabled else []) - + ([{'name': 'matrix-beeper-linkedin.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'beeper-linkedin']}] if matrix_beeper_linkedin_enabled else []) + - ([{'name': 'matrix-go-skype-bridge.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'go-skype']}] if matrix_go_skype_bridge_enabled else []) - + ([{'name': 'matrix-wechat.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'wechat']}] if matrix_wechat_enabled else []) + ([{'name': 'matrix-wechat-agent.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'wechat']}] if matrix_wechat_enabled else []) @@ -320,16 +305,16 @@ 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-zulip-bridge.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'zulip']}] if matrix_zulip_bridge_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 []) + - ([{'name': 'matrix-mautrix-facebook.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-facebook']}] if matrix_mautrix_facebook_enabled else []) - + ([{'name': 'matrix-mautrix-googlechat.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-googlechat']}] if matrix_mautrix_googlechat_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 []) + ([{'name': (matrix_mautrix_meta_messenger_identifier + '.service'), 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-meta', 'mautrix-meta-messenger']}] if matrix_mautrix_meta_messenger_enabled else []) @@ -348,22 +333,16 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-mautrix-wsproxy-syncproxy.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-wsproxy-syncproxy']}] if matrix_mautrix_wsproxy_enabled else []) + - ([{'name': 'matrix-mx-puppet-discord.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-discord']}] if matrix_mx_puppet_discord_enabled else []) - + ([{'name': 'matrix-mx-puppet-groupme.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-groupme']}] if matrix_mx_puppet_groupme_enabled else []) + - ([{'name': 'matrix-mx-puppet-instagram.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-instagram']}] if matrix_mx_puppet_instagram_enabled else []) - + - ([{'name': 'matrix-mx-puppet-slack.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-slack']}] if matrix_mx_puppet_slack_enabled else []) - + ([{'name': 'matrix-mx-puppet-steam.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-steam']}] if matrix_mx_puppet_steam_enabled else []) + - ([{'name': 'matrix-mx-puppet-twitter.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-twitter']}] if matrix_mx_puppet_twitter_enabled else []) - + ([{'name': 'matrix-postmoogle.service', 'priority': 2200, 'groups': ['matrix', 'bridges', 'postmoogle']}] if matrix_postmoogle_enabled else []) + ([{'name': 'matrix-sms-bridge.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'sms']}] if matrix_sms_bridge_enabled else []) + + ([{'name': 'matrix-steam-bridge.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'matrix-steam-bridge']}] if matrix_steam_bridge_enabled else []) + + ([{'name': 'matrix-cactus-comments.service', 'priority': 2000, 'groups': ['matrix', 'cactus-comments']}] if matrix_cactus_comments_enabled else []) + ([{'name': 'matrix-cactus-comments-client.service', 'priority': 2000, 'groups': ['matrix', 'cactus-comments-client']}] if matrix_cactus_comments_client_enabled else []) @@ -376,12 +355,16 @@ 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 []) + ([{'name': 'matrix-coturn.service', 'priority': (900 if devture_systemd_service_manager_service_restart_mode == 'clean-stop-start' else 1500), 'groups': ['matrix', 'coturn']}] if matrix_coturn_enabled else []) + + ([{'name': 'matrix-matrixto.service', 'priority': 4000, 'groups': ['matrix', 'matrixto']}] if matrix_matrixto_enabled else []) + + ([{'name': 'matrix-rageshake.service', 'priority': 4000, 'groups': ['matrix', 'rageshake']}] if matrix_rageshake_enabled else []) + ([{'name': 'matrix-coturn-reload.timer', 'priority': 5000, 'groups': ['matrix', 'coturn']}] if (matrix_coturn_enabled and matrix_coturn_tls_enabled) else []) @@ -390,8 +373,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 []) @@ -430,6 +411,14 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-pantalaimon.service', 'priority': 4000, 'groups': ['matrix', 'pantalaimon']}] if matrix_pantalaimon_enabled else []) + + ([{'name': 'matrix-element-admin.service', 'priority': 4000, 'groups': ['matrix', 'element-admin']}] if matrix_element_admin_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 []) @@ -452,7 +441,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 []) + @@ -544,6 +533,7 @@ matrix_homeserver_container_client_api_endpoint: |- 'dendrite': ('matrix-dendrite:' + matrix_dendrite_http_bind_port | default('8008') | string), 'conduit': ('matrix-conduit:' + matrix_conduit_port_number | default('8008') | string), 'conduwuit': ('matrix-conduwuit:' + matrix_conduwuit_config_port_number | default('8008') | string), + 'continuwuity': ('matrix-continuwuity:' + matrix_continuwuity_config_port_number | default('8008') | string), }[matrix_homeserver_implementation] }} @@ -554,6 +544,7 @@ matrix_homeserver_container_federation_api_endpoint: |- 'dendrite': ('matrix-dendrite:' + matrix_dendrite_http_bind_port | default('8008') | string), 'conduit': ('matrix-conduit:' + matrix_conduit_port_number | default('8008') | string), 'conduwuit': ('matrix-conduwuit:' + matrix_conduwuit_config_port_number | default('8008') | string), + 'continuwuity': ('matrix-continuwuity:' + matrix_continuwuity_config_port_number | default('8008') | string), }[matrix_homeserver_implementation] }} @@ -576,6 +567,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 }}" @@ -639,26 +632,20 @@ matrix_authentication_service_config_passwords_schemes: - version: 1 secret: "{{ matrix_synapse_password_config_pepper }}" algorithm: bcrypt + unicode_normalization: true - version: 2 algorithm: argon2id -matrix_authentication_service_config_clients_auto: |- - {{ - ([ - { - 'client_id': matrix_synapse_experimental_features_msc3861_client_id, - 'client_auth_method': matrix_synapse_experimental_features_msc3861_client_auth_method, - 'client_secret': matrix_synapse_experimental_features_msc3861_client_secret, - } - ] if matrix_synapse_experimental_features_msc3861_enabled else []) - }} - matrix_authentication_service_config_email_transport: "{{ 'smtp' if exim_relay_enabled else 'blackhole' }}" matrix_authentication_service_config_email_hostname: "{{ exim_relay_identifier if exim_relay_enabled else '' }}" matrix_authentication_service_config_email_port: "{{ 8025 if exim_relay_enabled else 587 }}" 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_admin_api_enabled: "{{ matrix_element_admin_enabled }}" + +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_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" matrix_authentication_service_container_network: "{{ matrix_homeserver_container_network }}" @@ -731,6 +718,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 }}" @@ -763,57 +752,6 @@ matrix_appservice_discord_database_password: "{{ '%s' | format(matrix_homeserver # ###################################################################### - -###################################################################### -# -# matrix-appservice-webhooks -# -###################################################################### - -# We don't enable bridges by default. -matrix_appservice_webhooks_enabled: false - -matrix_appservice_webhooks_hostname: "{{ matrix_server_fqn_matrix }}" - -matrix_appservice_webhooks_systemd_required_services_list_auto: | - {{ - matrix_addons_homeserver_systemd_services_list - }} - -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 '' }}" - -matrix_appservice_webhooks_container_network: "{{ matrix_addons_container_network }}" - -matrix_appservice_webhooks_container_additional_networks_auto: |- - {{ - ( - ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) - + - ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_appservice_webhooks_container_labels_traefik_enabled) else []) - ) | unique - }} - -matrix_appservice_webhooks_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" -matrix_appservice_webhooks_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" -matrix_appservice_webhooks_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" -matrix_appservice_webhooks_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" - -matrix_appservice_webhooks_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'webhook.as.token', rounds=655555) | to_uuid }}" - -matrix_appservice_webhooks_homeserver_url: "{{ matrix_addons_homeserver_client_api_url }}" -matrix_appservice_webhooks_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'webhook.hs.token', rounds=655555) | to_uuid }}" - -matrix_appservice_webhooks_id_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'webhook.id.token', rounds=655555) | to_uuid }}" - -###################################################################### -# -# /matrix-appservice-webhooks -# -###################################################################### - - ###################################################################### # # matrix-appservice-slack @@ -832,6 +770,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 '' }}" @@ -889,6 +829,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 '' }}" @@ -940,6 +882,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: |- @@ -956,6 +902,8 @@ matrix_appservice_kakaotalk_appservice_token: "{{ '%s' | format(matrix_homeserve matrix_appservice_kakaotalk_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_appservice_kakaotalk_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'as.kakao.hs', rounds=655555) | to_uuid }}" +matrix_appservice_kakaotalk_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_appservice_kakaotalk_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_appservice_kakaotalk_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" @@ -985,6 +933,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 }}" @@ -1003,6 +953,8 @@ matrix_beeper_linkedin_appservice_token: "{{ '%s' | format(matrix_homeserver_gen matrix_beeper_linkedin_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_beeper_linkedin_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'linked.hs.token', rounds=655555) | to_uuid }}" +matrix_beeper_linkedin_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_beeper_linkedin_bridge_login_shared_secret_map_auto: |- {{ ({ @@ -1027,55 +979,80 @@ matrix_beeper_linkedin_database_password: "{{ '%s' | format(matrix_homeserver_ge # ###################################################################### - ###################################################################### # -# matrix-bridge-go-skype-bridge +# matrix-bridge-mautrix-bluesky # ###################################################################### # We don't enable bridges by default. -matrix_go_skype_bridge_enabled: false +matrix_mautrix_bluesky_enabled: false -matrix_go_skype_bridge_systemd_required_services_list_auto: | +matrix_mautrix_bluesky_systemd_required_services_list_auto: | {{ matrix_addons_homeserver_systemd_services_list + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_go_skype_bridge_database_hostname == postgres_connection_hostname) else []) + ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_bluesky_database_hostname == postgres_connection_hostname) else []) }} -matrix_go_skype_bridge_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" +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_go_skype_bridge_container_network: "{{ matrix_addons_container_network }}" +matrix_mautrix_bluesky_container_network: "{{ matrix_addons_container_network }}" -matrix_go_skype_bridge_container_additional_networks_auto: |- +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_go_skype_bridge_database_hostname == postgres_connection_hostname and matrix_go_skype_bridge_container_network != postgres_container_network) else []) + ([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_go_skype_bridge_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'skype.as.token', rounds=655555) | to_uuid }}" +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_go_skype_bridge_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" -matrix_go_skype_bridge_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'skype.hs.token', rounds=655555) | to_uuid }}" +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_go_skype_bridge_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_bluesky_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'bsky.as.token', rounds=655555) | to_uuid }}" -# Postgres is the default, except if not using internal Postgres server -matrix_go_skype_bridge_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" -matrix_go_skype_bridge_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" -matrix_go_skype_bridge_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'goskype.db', 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_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + +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-go-skype-bridge +# /matrix-bridge-mautrix-bluesky # ###################################################################### - ###################################################################### # # matrix-bridge-mautrix-discord @@ -1085,6 +1062,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 }}" @@ -1094,7 +1073,7 @@ matrix_mautrix_discord_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_facebook_database_hostname == postgres_connection_hostname else []) + ([postgres_container_network] if postgres_enabled and matrix_mautrix_discord_database_hostname == postgres_connection_hostname else []) + ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_mautrix_discord_container_labels_traefik_enabled) else []) ) | unique @@ -1117,6 +1096,8 @@ matrix_mautrix_discord_appservice_token: "{{ '%s' | format(matrix_homeserver_gen matrix_mautrix_discord_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_mautrix_discord_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'maudisc.hs.tok', rounds=655555) | to_uuid }}" +matrix_mautrix_discord_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_mautrix_discord_bridge_avatar_proxy_key: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'maudisc.avatar', rounds=655555) | to_uuid }}" matrix_mautrix_discord_hostname: "{{ matrix_server_fqn_matrix }}" @@ -1163,6 +1144,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 }}" @@ -1181,6 +1164,8 @@ matrix_mautrix_slack_appservice_token: "{{ '%s' | format(matrix_homeserver_gener matrix_mautrix_slack_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_mautrix_slack_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mauslack.hs.tok', rounds=655555) | to_uuid }}" +matrix_mautrix_slack_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_mautrix_slack_double_puppet_secrets_auto: |- {{ { @@ -1204,81 +1189,6 @@ matrix_mautrix_slack_public_media_signing_key: "{{ '%s' | format(matrix_homeserv # ###################################################################### - -###################################################################### -# -# matrix-bridge-mautrix-facebook -# -###################################################################### - -# We don't enable bridges by default. -matrix_mautrix_facebook_enabled: false - -matrix_mautrix_facebook_systemd_required_services_list_auto: | - {{ - matrix_addons_homeserver_systemd_services_list - + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_facebook_database_hostname == postgres_connection_hostname) else []) - }} - -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 '' }}" - -matrix_mautrix_facebook_container_network: "{{ matrix_addons_container_network }}" - -matrix_mautrix_facebook_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_facebook_database_hostname == postgres_connection_hostname and matrix_mautrix_facebook_container_network != postgres_container_network) else []) - + - ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_mautrix_facebook_container_labels_traefik_enabled) else []) - ) | unique - }} - -matrix_mautrix_facebook_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" -matrix_mautrix_facebook_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" -matrix_mautrix_facebook_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" -matrix_mautrix_facebook_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" - -matrix_mautrix_facebook_container_labels_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}" -matrix_mautrix_facebook_container_labels_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}" - -matrix_mautrix_facebook_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'fb.as.token', rounds=655555) | to_uuid }}" - -matrix_mautrix_facebook_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" - -matrix_mautrix_facebook_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'fb.hs.token', rounds=655555) | to_uuid }}" - -matrix_mautrix_facebook_appservice_public_enabled: true -matrix_mautrix_facebook_appservice_public_hostname: "{{ matrix_server_fqn_matrix }}" -matrix_mautrix_facebook_appservice_public_prefix: "/{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'facebook', rounds=655555) | to_uuid }}" - -matrix_mautrix_facebook_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_facebook_bridge_presence: "{{ (matrix_synapse_presence_enabled if matrix_synapse_enabled else true) if matrix_homeserver_implementation == 'synapse' else true }}" - -matrix_mautrix_facebook_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}" - -matrix_mautrix_facebook_metrics_proxying_enabled: "{{ matrix_mautrix_facebook_metrics_enabled and matrix_metrics_exposure_enabled }}" -matrix_mautrix_facebook_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}" -matrix_mautrix_facebook_metrics_proxying_path_prefix: "{{ matrix_metrics_exposure_path_prefix }}/mautrix-facebook" - -# We'd like to force-set people with external Postgres to SQLite, so the bridge role can complain -# and point them to a migration path. -matrix_mautrix_facebook_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" -matrix_mautrix_facebook_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" -matrix_mautrix_facebook_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mau.fb.db', rounds=655555) | to_uuid }}" - -###################################################################### -# -# /matrix-bridge-mautrix-facebook -# -###################################################################### - - ###################################################################### # # matrix-bridge-mautrix-googlechat @@ -1295,6 +1205,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 '' }}" @@ -1355,74 +1267,6 @@ matrix_mautrix_googlechat_database_password: "{{ '%s' | format(matrix_homeserver # ###################################################################### - - -###################################################################### -# -# matrix-bridge-mautrix-instagram -# -###################################################################### - -# We don't enable bridges by default. -matrix_mautrix_instagram_enabled: false - -matrix_mautrix_instagram_systemd_required_services_list_auto: | - {{ - matrix_addons_homeserver_systemd_services_list - + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_instagram_database_hostname == postgres_connection_hostname) else []) - }} - -matrix_mautrix_instagram_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" - -matrix_mautrix_instagram_container_network: "{{ matrix_addons_container_network }}" - -matrix_mautrix_instagram_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_instagram_database_hostname == postgres_connection_hostname and matrix_mautrix_instagram_container_network != postgres_container_network) else []) - + - ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network and matrix_mautrix_instagram_container_labels_traefik_enabled else []) - ) | unique - }} - -matrix_mautrix_instagram_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" -matrix_mautrix_instagram_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" -matrix_mautrix_instagram_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" -matrix_mautrix_instagram_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" - -matrix_mautrix_instagram_container_labels_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}" -matrix_mautrix_instagram_container_labels_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}" - -matrix_mautrix_instagram_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'ig.as.token', rounds=655555) | to_uuid }}" - -matrix_mautrix_instagram_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" -matrix_mautrix_instagram_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'ig.hs.token', rounds=655555) | to_uuid }}" - -matrix_mautrix_instagram_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_instagram_bridge_presence: "{{ (matrix_synapse_presence_enabled if matrix_synapse_enabled else true) if matrix_homeserver_implementation == 'synapse' else true }}" - -matrix_mautrix_instagram_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}" - -matrix_mautrix_instagram_metrics_proxying_enabled: "{{ matrix_mautrix_instagram_metrics_enabled and matrix_metrics_exposure_enabled }}" -matrix_mautrix_instagram_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}" -matrix_mautrix_instagram_metrics_proxying_path_prefix: "{{ matrix_metrics_exposure_path_prefix }}/mautrix-instagram" - -# We'd like to force-set people with external Postgres to SQLite, so the bridge role can complain -# and point them to a migration path. -matrix_mautrix_instagram_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" -matrix_mautrix_instagram_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" -matrix_mautrix_instagram_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mau.ig.db', rounds=655555) | to_uuid }}" - -###################################################################### -# -# /matrix-bridge-mautrix-instagram -# -###################################################################### - ###################################################################### # # matrix-bridge-mautrix-signal @@ -1439,6 +1283,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 }}" @@ -1466,6 +1312,8 @@ matrix_mautrix_signal_homeserver_domain: '{{ matrix_domain }}' matrix_mautrix_signal_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_mautrix_signal_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'si.hs.token', rounds=655555) | to_uuid }}" +matrix_mautrix_signal_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_mautrix_signal_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'si.as.token', rounds=655555) | to_uuid }}" matrix_mautrix_signal_double_puppet_secrets_auto: |- @@ -1513,6 +1361,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 }}" @@ -1542,6 +1392,8 @@ matrix_mautrix_meta_messenger_homeserver_address: "{{ matrix_addons_homeserver_c matrix_mautrix_meta_messenger_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mau.meta.fb.hs', rounds=655555) | to_uuid }}" +matrix_mautrix_meta_messenger_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_mautrix_meta_messenger_double_puppet_secrets_auto: |- {{ { @@ -1587,6 +1439,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 }}" @@ -1616,6 +1470,8 @@ matrix_mautrix_meta_instagram_homeserver_address: "{{ matrix_addons_homeserver_c matrix_mautrix_meta_instagram_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mau.meta.ig.hs', rounds=655555) | to_uuid }}" +matrix_mautrix_meta_instagram_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_mautrix_meta_instagram_double_puppet_secrets_auto: |- {{ { @@ -1663,10 +1519,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 '' }}" @@ -1697,6 +1557,8 @@ matrix_mautrix_telegram_homeserver_domain: "{{ matrix_domain }}" matrix_mautrix_telegram_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_mautrix_telegram_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'telegr.hs.token', rounds=655555) | to_uuid }}" +matrix_mautrix_telegram_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_mautrix_telegram_bridge_login_shared_secret_map_auto: |- {{ ({ @@ -1743,6 +1605,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 }}" @@ -1771,6 +1635,8 @@ matrix_mautrix_twitter_appservice_token: "{{ '%s' | format(matrix_homeserver_gen matrix_mautrix_twitter_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_mautrix_twitter_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'twt.hs.token', rounds=655555) | to_uuid }}" +matrix_mautrix_twitter_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_mautrix_twitter_provisioning_shared_secret: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mau.twit.prov', rounds=655555) | to_uuid }}" matrix_mautrix_twitter_double_puppet_secrets_auto: |- @@ -1810,9 +1676,11 @@ matrix_mautrix_gmessages_systemd_required_services_list_auto: | {{ matrix_addons_homeserver_systemd_services_list + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_facebook_database_hostname == postgres_connection_hostname) else []) + ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_gmessages_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 }}" @@ -1841,6 +1709,8 @@ matrix_mautrix_gmessages_appservice_token: "{{ '%s' | format(matrix_homeserver_g matrix_mautrix_gmessages_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_mautrix_gmessages_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'gmessa.hs.token', rounds=655555) | to_uuid }}" +matrix_mautrix_gmessages_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_mautrix_gmessages_double_puppet_secrets_auto: |- {{ { @@ -1890,6 +1760,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: | @@ -1933,6 +1805,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'] }}" @@ -1953,6 +1829,8 @@ matrix_wechat_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secr matrix_wechat_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_wechat_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'wechat.hs.token', rounds=655555) | to_uuid }}" +matrix_wechat_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_wechat_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_wechat_bridge_listen_secret: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'wechat.lstn', rounds=655555) | to_uuid }}" @@ -1977,6 +1855,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 }}" @@ -2012,6 +1892,8 @@ matrix_mautrix_whatsapp_appservice_token: "{{ '%s' | format(matrix_homeserver_ge matrix_mautrix_whatsapp_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" matrix_mautrix_whatsapp_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'whats.hs.token', rounds=655555) | to_uuid }}" +matrix_mautrix_whatsapp_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + matrix_mautrix_whatsapp_double_puppet_secrets_auto: |- {{ { @@ -2050,10 +1932,10 @@ matrix_sms_bridge_enabled: false matrix_sms_bridge_systemd_required_services_list_auto: | {{ matrix_addons_homeserver_systemd_services_list - + - ([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: |- @@ -2089,6 +1971,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: |- @@ -2126,6 +2010,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 }}" @@ -2163,7 +2049,6 @@ matrix_hookshot_container_http_host_bind_ports_defaultmapping: - "{{ matrix_playbook_service_host_bind_interface_prefix }}{{ matrix_hookshot_appservice_port }}:{{ matrix_hookshot_appservice_port }}" - "{{ matrix_playbook_service_host_bind_interface_prefix }}{{ matrix_hookshot_metrics_port }}:{{ matrix_hookshot_metrics_port }}" - "{{ matrix_playbook_service_host_bind_interface_prefix }}{{ matrix_hookshot_webhook_port }}:{{ matrix_hookshot_webhook_port }}" - - "{{ matrix_playbook_service_host_bind_interface_prefix }}{{ matrix_hookshot_provisioning_port }}:{{ matrix_hookshot_provisioning_port }}" matrix_hookshot_container_http_host_bind_ports: "{{ matrix_hookshot_container_http_host_bind_ports_defaultmapping if matrix_playbook_service_host_bind_interface_prefix else [] }}" @@ -2172,8 +2057,6 @@ matrix_hookshot_container_labels_traefik_docker_network: "{{ matrix_playbook_rev matrix_hookshot_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" matrix_hookshot_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" -matrix_hookshot_provisioning_enabled: "{{ matrix_hookshot_provisioning_secret and matrix_dimension_enabled }}" - matrix_hookshot_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}" matrix_hookshot_metrics_proxying_enabled: "{{ matrix_hookshot_metrics_enabled and matrix_metrics_exposure_enabled }}" @@ -2191,291 +2074,126 @@ matrix_hookshot_public_hostname: "{{ matrix_server_fqn_matrix }}" # ###################################################################### - ###################################################################### # -# matrix-bridge-mx-puppet-slack +# matrix-bridge-zulip # ###################################################################### # We don't enable bridges by default. -matrix_mx_puppet_slack_enabled: false +matrix_zulip_bridge_enabled: false -matrix_mx_puppet_slack_hostname: "{{ matrix_server_fqn_matrix }}" +matrix_zulip_bridge_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" -matrix_mx_puppet_slack_systemd_required_services_list_auto: | +# Set this to your Matrix ID if you want to enforce the owner, otherwise first _local_ user becomes one +matrix_zulip_bridge_owner: "{{ matrix_admin if matrix_admin else '' }}" + +matrix_zulip_bridge_systemd_required_services_list_auto: | {{ matrix_addons_homeserver_systemd_services_list - + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_slack_database_hostname == postgres_connection_hostname) else []) }} -matrix_mx_puppet_slack_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" +matrix_zulip_bridge_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_zulip_bridge_docker_image_registry_prefix_upstream_default }}" -matrix_mx_puppet_slack_container_network: "{{ matrix_addons_container_network }}" +matrix_zulip_bridge_container_network: "{{ matrix_addons_container_network }}" -matrix_mx_puppet_slack_container_additional_networks_auto: |- +matrix_zulip_bridge_container_additional_networks_auto: |- {{ ( ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) + - ([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_slack_database_hostname == postgres_connection_hostname and matrix_mx_puppet_slack_container_network != postgres_container_network) else []) - + - ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_mx_puppet_slack_container_labels_traefik_enabled) else []) + [matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_zulip_bridge_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else [] ) | unique }} -matrix_mx_puppet_slack_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" -matrix_mx_puppet_slack_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" -matrix_mx_puppet_slack_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" -matrix_mx_puppet_slack_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" - -matrix_mx_puppet_slack_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxslk.as.tok', rounds=655555) | to_uuid }}" +matrix_zulip_bridge_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +matrix_zulip_bridge_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_zulip_bridge_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_zulip_bridge_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" -matrix_mx_puppet_slack_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" -matrix_mx_puppet_slack_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxslk.hs.tok', rounds=655555) | to_uuid }}" +matrix_zulip_bridge_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'zulip.as.tok', rounds=655555) | to_uuid }}" -matrix_mx_puppet_slack_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_zulip_bridge_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'zulip.hs.tok', rounds=655555) | to_uuid }}" -matrix_mx_puppet_slack_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}" - -# Postgres is the default, except if not using internal Postgres server -matrix_mx_puppet_slack_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" -matrix_mx_puppet_slack_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" -matrix_mx_puppet_slack_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.slack.db', rounds=655555) | to_uuid }}" +matrix_zulip_bridge_homeserver_url: "{{ matrix_addons_homeserver_client_api_url }}" ###################################################################### # -# /matrix-bridge-mx-puppet-slack +# /matrix-bridge-zulip # ###################################################################### ###################################################################### # -# matrix-bridge-mx-puppet-twitter +# matrix-bridge-mx-puppet-steam # ###################################################################### # We don't enable bridges by default. -matrix_mx_puppet_twitter_enabled: false - -matrix_mx_puppet_twitter_hostname: "{{ matrix_server_fqn_matrix }}" +matrix_mx_puppet_steam_enabled: false -matrix_mx_puppet_twitter_systemd_required_services_list_auto: | +matrix_mx_puppet_steam_systemd_required_services_list_auto: | {{ matrix_addons_homeserver_systemd_services_list + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_twitter_database_hostname == postgres_connection_hostname) else []) + ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_steam_database_hostname == postgres_connection_hostname) else []) }} -matrix_mx_puppet_twitter_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" +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_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 '' }}" +matrix_mx_puppet_steam_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" -matrix_mx_puppet_twitter_container_network: "{{ matrix_addons_container_network }}" +matrix_mx_puppet_steam_container_network: "{{ matrix_addons_container_network }}" -matrix_mx_puppet_twitter_container_additional_networks_auto: |- +matrix_mx_puppet_steam_container_additional_networks_auto: |- {{ ( ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) + - ([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_twitter_database_hostname == postgres_connection_hostname and matrix_mx_puppet_twitter_container_network != postgres_container_network) else []) - + - ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_mx_puppet_twitter_container_labels_traefik_enabled) else []) + ([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_steam_database_hostname == postgres_connection_hostname and matrix_mx_puppet_steam_container_network != postgres_container_network) else []) ) | unique }} -matrix_mx_puppet_twitter_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" -matrix_mx_puppet_twitter_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" -matrix_mx_puppet_twitter_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" -matrix_mx_puppet_twitter_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" - -matrix_mx_puppet_twitter_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxtwt.as.tok', rounds=655555) | to_uuid }}" +matrix_mx_puppet_steam_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxste.as.tok', rounds=655555) | to_uuid }}" -matrix_mx_puppet_twitter_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" -matrix_mx_puppet_twitter_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxtwt.hs.tok', rounds=655555) | to_uuid }}" +matrix_mx_puppet_steam_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" +matrix_mx_puppet_steam_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxste.hs.tok', rounds=655555) | to_uuid }}" -matrix_mx_puppet_twitter_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_mx_puppet_steam_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_mx_puppet_twitter_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}" +matrix_mx_puppet_steam_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}" # Postgres is the default, except if not using internal Postgres server -matrix_mx_puppet_twitter_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" -matrix_mx_puppet_twitter_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" -matrix_mx_puppet_twitter_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.twitter.db', rounds=655555) | to_uuid }}" +matrix_mx_puppet_steam_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" +matrix_mx_puppet_steam_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" +matrix_mx_puppet_steam_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.steam.db', rounds=655555) | to_uuid }}" ###################################################################### # -# /matrix-bridge-mx-puppet-twitter +# /matrix-bridge-mx-puppet-steam # ###################################################################### ###################################################################### # -# matrix-bridge-mx-puppet-instagram +# matrix-bridge-mx-puppet-groupme # ###################################################################### # We don't enable bridges by default. -matrix_mx_puppet_instagram_enabled: false +matrix_mx_puppet_groupme_enabled: false -matrix_mx_puppet_instagram_systemd_required_services_list_auto: | +matrix_mx_puppet_groupme_systemd_required_services_list_auto: | {{ matrix_addons_homeserver_systemd_services_list + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_instagram_database_hostname == postgres_connection_hostname) else []) + ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_groupme_database_hostname == postgres_connection_hostname) else []) }} -matrix_mx_puppet_instagram_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" +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_instagram_container_network: "{{ matrix_addons_container_network }}" - -matrix_mx_puppet_instagram_container_additional_networks_auto: |- - {{ - ( - ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) - + - ([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_instagram_database_hostname == postgres_connection_hostname and matrix_mx_puppet_instagram_container_network != postgres_container_network) else []) - ) | unique - }} - -matrix_mx_puppet_instagram_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxig.as.tok', rounds=655555) | to_uuid }}" - -matrix_mx_puppet_instagram_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" -matrix_mx_puppet_instagram_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxig.hs.tok', rounds=655555) | to_uuid }}" - -matrix_mx_puppet_instagram_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_mx_puppet_instagram_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}" - -# Postgres is the default, except if not using internal Postgres server -matrix_mx_puppet_instagram_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" -matrix_mx_puppet_instagram_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" -matrix_mx_puppet_instagram_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.ig.db', rounds=655555) | to_uuid }}" - -###################################################################### -# -# /matrix-bridge-mx-puppet-instagram -# -###################################################################### - -###################################################################### -# -# matrix-bridge-mx-puppet-discord -# -###################################################################### - -# We don't enable bridges by default. -matrix_mx_puppet_discord_enabled: false - -matrix_mx_puppet_discord_systemd_required_services_list_auto: | - {{ - matrix_addons_homeserver_systemd_services_list - + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_discord_database_hostname == postgres_connection_hostname) else []) - }} - -matrix_mx_puppet_discord_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" - -matrix_mx_puppet_discord_container_network: "{{ matrix_addons_container_network }}" - -matrix_mx_puppet_discord_container_additional_networks_auto: |- - {{ - ( - ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) - + - ([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_discord_database_hostname == postgres_connection_hostname and matrix_mx_puppet_discord_container_network != postgres_container_network) else []) - ) | unique - }} - -matrix_mx_puppet_discord_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxdsc.as.tok', rounds=655555) | to_uuid }}" - -matrix_mx_puppet_discord_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" -matrix_mx_puppet_discord_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxdsc.hs.tok', rounds=655555) | to_uuid }}" - -matrix_mx_puppet_discord_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_mx_puppet_discord_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}" - -# Postgres is the default, except if not using internal Postgres server -matrix_mx_puppet_discord_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" -matrix_mx_puppet_discord_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" -matrix_mx_puppet_discord_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.dsc.db', rounds=655555) | to_uuid }}" - -###################################################################### -# -# /matrix-bridge-mx-puppet-discord -# -###################################################################### - -###################################################################### -# -# matrix-bridge-mx-puppet-steam -# -###################################################################### - -# We don't enable bridges by default. -matrix_mx_puppet_steam_enabled: false - -matrix_mx_puppet_steam_systemd_required_services_list_auto: | - {{ - matrix_addons_homeserver_systemd_services_list - + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_steam_database_hostname == postgres_connection_hostname) else []) - }} - -matrix_mx_puppet_steam_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" - -matrix_mx_puppet_steam_container_network: "{{ matrix_addons_container_network }}" - -matrix_mx_puppet_steam_container_additional_networks_auto: |- - {{ - ( - ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) - + - ([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_steam_database_hostname == postgres_connection_hostname and matrix_mx_puppet_steam_container_network != postgres_container_network) else []) - ) | unique - }} - -matrix_mx_puppet_steam_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxste.as.tok', rounds=655555) | to_uuid }}" - -matrix_mx_puppet_steam_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" -matrix_mx_puppet_steam_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxste.hs.tok', rounds=655555) | to_uuid }}" - -matrix_mx_puppet_steam_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_mx_puppet_steam_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}" - -# Postgres is the default, except if not using internal Postgres server -matrix_mx_puppet_steam_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}" -matrix_mx_puppet_steam_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" -matrix_mx_puppet_steam_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.steam.db', rounds=655555) | to_uuid }}" - -###################################################################### -# -# /matrix-bridge-mx-puppet-steam -# -###################################################################### - - -###################################################################### -# -# matrix-bridge-mx-puppet-groupme -# -###################################################################### - -# We don't enable bridges by default. -matrix_mx_puppet_groupme_enabled: false - -matrix_mx_puppet_groupme_systemd_required_services_list_auto: | - {{ - matrix_addons_homeserver_systemd_services_list - + - ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_groupme_database_hostname == postgres_connection_hostname) else []) - }} - -matrix_mx_puppet_groupme_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" +matrix_mx_puppet_groupme_container_image_self_build: "{{ matrix_architecture != 'amd64' }}" matrix_mx_puppet_groupme_container_network: "{{ matrix_addons_container_network }}" @@ -2517,13 +2235,15 @@ 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: |- {{ { - 'playbook-managed-traefik': (traefik_certs_dumper_dumped_certificates_dir_path if traefik_certs_dumper_enabled else ''), - 'other-traefik-container': (traefik_certs_dumper_dumped_certificates_dir_path if traefik_certs_dumper_enabled else ''), + 'playbook-managed-traefik': (traefik_certs_dumper_dumped_certificates_path if traefik_certs_dumper_enabled else ''), + 'other-traefik-container': (traefik_certs_dumper_dumped_certificates_path if traefik_certs_dumper_enabled else ''), 'none': '', }[matrix_playbook_reverse_proxy_type] }} @@ -2584,6 +2304,82 @@ matrix_postmoogle_container_additional_networks_auto: |- # ###################################################################### +###################################################################### +# +# matrix-bridge-steam +# +###################################################################### + +# We don't enable bridges by default. +matrix_steam_bridge_enabled: false + +matrix_steam_bridge_systemd_required_services_list_auto: | + {{ + matrix_addons_homeserver_systemd_services_list + + + ([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_steam_bridge_database_hostname == postgres_connection_hostname) else []) + }} + +matrix_steam_bridge_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_steam_bridge_docker_image_registry_prefix_upstream_default }}" + +matrix_steam_bridge_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" + +matrix_steam_bridge_container_network: "{{ matrix_addons_container_network }}" + +matrix_steam_bridge_container_additional_networks_auto: |- + {{ + ( + ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) + + + ([postgres_container_network] if (postgres_enabled and matrix_steam_bridge_database_hostname == postgres_connection_hostname and matrix_steam_bridge_container_network != postgres_container_network) else []) + + + ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network and matrix_steam_bridge_container_labels_traefik_enabled else []) + ) | unique + }} + +matrix_steam_bridge_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +matrix_steam_bridge_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_steam_bridge_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_steam_bridge_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +matrix_steam_bridge_container_labels_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}" +matrix_steam_bridge_container_labels_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}" + +matrix_steam_bridge_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'steam.as.token', rounds=655555) | to_uuid }}" + +matrix_steam_bridge_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}" +matrix_steam_bridge_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'steam.hs.token', rounds=655555) | to_uuid }}" + +matrix_steam_bridge_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}" + +matrix_steam_bridge_public_media_signing_key: "{{ ('%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'steam.pub.key', rounds=655555) | to_uuid) if matrix_steam_bridge_public_media_enabled else '' }}" + +matrix_steam_bridge_provisioning_shared_secret: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'steam.prov', rounds=655555) | to_uuid }}" + +matrix_steam_bridge_double_puppet_secrets_auto: |- + {{ + ({ + matrix_steam_bridge_homeserver_domain: ("as_token:" + matrix_appservice_double_puppet_registration_as_token) + }) + if matrix_appservice_double_puppet_enabled + else {} + }} + +matrix_steam_bridge_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}" + +matrix_steam_bridge_metrics_proxying_enabled: "{{ matrix_steam_bridge_metrics_enabled and matrix_metrics_exposure_enabled }}" +matrix_steam_bridge_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}" +matrix_steam_bridge_metrics_proxying_path_prefix: "{{ matrix_metrics_exposure_path_prefix }}/matrix-steam-bridge" + +matrix_steam_bridge_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" +matrix_steam_bridge_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-steam +# +###################################################################### + ###################################################################### # # matrix-bot-matrix-reminder-bot @@ -2600,6 +2396,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 }}" @@ -2645,6 +2443,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 }}" @@ -2692,6 +2492,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 '' }}" @@ -2748,6 +2550,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: | @@ -2802,6 +2606,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 }}" @@ -2845,6 +2651,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: | @@ -2869,31 +2677,6 @@ matrix_bot_baibot_container_additional_networks_auto: |- # ###################################################################### -###################################################################### -# -# matrix-bot-chatgpt -# -###################################################################### - -# We don't enable bots by default. -matrix_bot_chatgpt_enabled: false - -matrix_bot_chatgpt_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" - -matrix_bot_chatgpt_container_network: "{{ matrix_addons_container_network }}" -matrix_bot_chatgpt_container_additional_networks_auto: "{{ [] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network] }}" - -matrix_bot_chatgpt_matrix_homeserver_url: "{{ matrix_addons_homeserver_client_api_url }}" - -matrix_bot_chatgpt_systemd_required_services_list_auto: "{{ matrix_addons_homeserver_systemd_services_list }}" - -###################################################################### -# -# /matrix-bot-chatgpt -# -###################################################################### - - ###################################################################### # # matrix-bot-go-neb @@ -2912,6 +2695,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 }}" @@ -2953,6 +2738,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 }}" @@ -2989,6 +2776,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 }}" @@ -3006,13 +2795,16 @@ 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 }}" +matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +#The salt is size restricted here as a maximum salt size of 16 characters exists due to the functions used. +matrix_bot_draupnir_config_web_synapseHTTPAntispam_authorization: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'draupnir.httpmod', rounds=655555) | to_uuid }}" # noqa var-naming ###################################################################### # @@ -3037,6 +2829,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 }}" @@ -3094,6 +2888,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'] }}" @@ -3120,10 +2916,12 @@ backup_borg_storage_archive_name_format: matrix-{now:%Y-%m-%d-%H%M%S} backup_borg_base_path: "{{ matrix_base_data_path }}/backup-borg" -backup_borg_username: "{{ matrix_user_username }}" +backup_borg_username: "{{ matrix_user_name }}" 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 '' }}" @@ -3135,14 +2933,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 []) }} @@ -3174,6 +2972,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 }}" @@ -3204,6 +3004,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: |- @@ -3237,7 +3039,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 '' }}" @@ -3275,6 +3079,38 @@ matrix_corporal_matrix_registration_shared_secret: "{{ matrix_synapse_registrati # ###################################################################### +###################################################################### +# +# matrix-matrixto +# +###################################################################### + +# We don't enable matrixto by default. +matrix_matrixto_enabled: false + +matrix_matrixto_base_path: "{{ matrix_base_data_path }}/matrixto" + +# The container image is not provided at https://github.com/matrix-org/matrix.to +matrix_matrixto_container_image_self_build: true + +matrix_matrixto_hostname: "{{ matrix_server_fqn_matrixto }}" + +matrix_matrixto_container_network: matrix-matrixto + +matrix_matrixto_container_additional_networks: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [] }}" + +matrix_matrixto_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '5000') if matrix_playbook_service_host_bind_interface_prefix else '' }}" + +matrix_matrixto_container_labels_traefik_enabled: "{{ matrix_playbook_traefik_labels_enabled }}" +matrix_matrixto_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_matrixto_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_matrixto_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +###################################################################### +# +# /matrix-matrixto +# +###################################################################### ###################################################################### # @@ -3289,6 +3125,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 [] }}" @@ -3314,6 +3152,10 @@ matrix_rageshake_container_labels_traefik_tls_certResolver: "{{ traefik_certReso matrix_coturn_enabled: true +matrix_coturn_hostname: "{{ matrix_server_fqn_matrix }}" + +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. @@ -3351,12 +3193,12 @@ matrix_coturn_container_additional_volumes: | ( [ { - 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + matrix_server_fqn_matrix + '/certificate.crt'), + 'src': (traefik_certs_dumper_dumped_certificates_path + '/' + matrix_coturn_hostname + '/certificate.crt'), 'dst': '/certificate.crt', 'options': 'ro', }, { - 'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + matrix_server_fqn_matrix + '/privatekey.key'), + 'src': (traefik_certs_dumper_dumped_certificates_path + '/' + matrix_coturn_hostname + '/privatekey.key'), 'dst': '/privatekey.key', 'options': 'ro', }, @@ -3364,11 +3206,9 @@ 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 []) + ([traefik_certs_dumper_identifier + '-wait-for-domain@' + matrix_coturn_hostname + '.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 []) }} ###################################################################### @@ -3385,11 +3225,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`, @@ -3446,7 +3288,7 @@ matrix_dimension_database_password: "{{ '%s' | format(matrix_homeserver_generic_ ###################################################################### # -# etke/etherpad +# etherpad # ###################################################################### @@ -3462,13 +3304,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 []) @@ -3482,21 +3326,19 @@ 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 []) }} -etherpad_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" +etherpad_database_postgres_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}" etherpad_database_name: matrix_etherpad -etherpad_database_username: matrix_etherpad -etherpad_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'etherpad.db', rounds=655555) | to_uuid }}" +etherpad_database_postgres_username: matrix_etherpad +etherpad_database_postgres_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'etherpad.db', rounds=655555) | to_uuid }}" ###################################################################### # -# /etke/etherpad +# /etherpad # ###################################################################### @@ -3508,6 +3350,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 ###################################################################### @@ -3516,34 +3360,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 @@ -3563,7 +3379,9 @@ jitsi_base_path: "{{ matrix_base_data_path }}/jitsi" jitsi_uid: "{{ matrix_user_uid }}" jitsi_gid: "{{ matrix_user_gid }}" -jitsi_user_username: "{{ matrix_user_username }}" +jitsi_user_username: "{{ matrix_user_name }}" + +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 '' }}" @@ -3572,6 +3390,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: | @@ -3579,6 +3399,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: | @@ -3586,6 +3408,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 }}" @@ -3613,8 +3437,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. @@ -3659,6 +3483,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: |- @@ -3699,12 +3525,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 # @@ -3732,6 +3560,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 '' }}" @@ -3806,6 +3636,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: | @@ -3905,6 +3737,8 @@ postgres_base_path: "{{ matrix_base_data_path }}/postgres" postgres_uid: "{{ matrix_user_uid }}" postgres_gid: "{{ matrix_user_gid }}" +postgres_allowed_versions_auto: "{{ backup_borg_supported_postgres_versions | map('int') if backup_borg_enabled | default(false) and backup_borg_postgresql_enabled | default(false) else [] }}" + postgres_connection_username: matrix postgres_db_name: matrix @@ -3912,6 +3746,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: | {{ ([{ @@ -4048,12 +3886,6 @@ postgres_managed_databases_auto: | 'password': matrix_beeper_linkedin_database_password, }] if (matrix_beeper_linkedin_enabled and matrix_beeper_linkedin_database_engine == 'postgres' and matrix_beeper_linkedin_database_hostname == postgres_connection_hostname) else []) + - ([{ - 'name': matrix_go_skype_bridge_database_name, - 'username': matrix_go_skype_bridge_database_username, - 'password': matrix_go_skype_bridge_database_password, - }] if (matrix_go_skype_bridge_enabled and matrix_go_skype_bridge_database_engine == 'postgres' and matrix_go_skype_bridge_database_hostname == postgres_connection_hostname) else []) - + ([{ 'name': matrix_wechat_database_name, 'username': matrix_wechat_database_username, @@ -4061,10 +3893,10 @@ postgres_managed_databases_auto: | }] if (matrix_wechat_enabled and matrix_wechat_database_engine == 'postgres' and matrix_wechat_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_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_googlechat_database_name, @@ -4072,12 +3904,6 @@ postgres_managed_databases_auto: | 'password': matrix_mautrix_googlechat_database_password, }] if (matrix_mautrix_googlechat_enabled and matrix_mautrix_googlechat_database_engine == 'postgres' and matrix_mautrix_googlechat_database_hostname == postgres_connection_hostname) else []) + - ([{ - 'name': matrix_mautrix_instagram_database_name, - 'username': matrix_mautrix_instagram_database_username, - 'password': matrix_mautrix_instagram_database_password, - }] if (matrix_mautrix_instagram_enabled and matrix_mautrix_instagram_database_engine == 'postgres' and matrix_mautrix_instagram_database_hostname == postgres_connection_hostname) else []) - + ([{ 'name': matrix_mautrix_signal_database_name, 'username': matrix_mautrix_signal_database_username, @@ -4138,30 +3964,6 @@ postgres_managed_databases_auto: | 'password': matrix_mautrix_slack_database_password, }] if (matrix_mautrix_slack_enabled and matrix_mautrix_slack_database_engine == 'postgres' and matrix_mautrix_slack_database_hostname == postgres_connection_hostname) else []) + - ([{ - 'name': matrix_mx_puppet_slack_database_name, - 'username': matrix_mx_puppet_slack_database_username, - 'password': matrix_mx_puppet_slack_database_password, - }] if (matrix_mx_puppet_slack_enabled and matrix_mx_puppet_slack_database_engine == 'postgres' and matrix_mx_puppet_slack_database_hostname == postgres_connection_hostname) else []) - + - ([{ - 'name': matrix_mx_puppet_twitter_database_name, - 'username': matrix_mx_puppet_twitter_database_username, - 'password': matrix_mx_puppet_twitter_database_password, - }] if (matrix_mx_puppet_twitter_enabled and matrix_mx_puppet_twitter_database_engine == 'postgres' and matrix_mx_puppet_twitter_database_hostname == postgres_connection_hostname) else []) - + - ([{ - 'name': matrix_mx_puppet_instagram_database_name, - 'username': matrix_mx_puppet_instagram_database_username, - 'password': matrix_mx_puppet_instagram_database_password, - }] if (matrix_mx_puppet_instagram_enabled and matrix_mx_puppet_instagram_database_engine == 'postgres' and matrix_mx_puppet_instagram_database_hostname == postgres_connection_hostname) else []) - + - ([{ - 'name': matrix_mx_puppet_discord_database_name, - 'username': matrix_mx_puppet_discord_database_username, - 'password': matrix_mx_puppet_discord_database_password, - }] if (matrix_mx_puppet_discord_enabled and matrix_mx_puppet_discord_database_engine == 'postgres' and matrix_mx_puppet_discord_database_hostname == postgres_connection_hostname) else []) - + ([{ 'name': matrix_mx_puppet_steam_database_name, 'username': matrix_mx_puppet_steam_database_username, @@ -4174,6 +3976,12 @@ postgres_managed_databases_auto: | 'password': matrix_mx_puppet_groupme_database_password, }] if (matrix_mx_puppet_groupme_enabled and matrix_mx_puppet_groupme_database_engine == 'postgres' and matrix_mx_puppet_groupme_database_hostname == postgres_connection_hostname) else []) + + ([{ + 'name': matrix_steam_bridge_database_name, + 'username': matrix_steam_bridge_database_username, + 'password': matrix_steam_bridge_database_password, + }] if (matrix_steam_bridge_enabled and matrix_steam_bridge_database_engine == 'postgres' and matrix_steam_bridge_database_hostname == postgres_connection_hostname) else []) + + ([{ 'name': matrix_dimension_database_name, 'username': matrix_dimension_database_username, @@ -4182,9 +3990,9 @@ postgres_managed_databases_auto: | + ([{ 'name': etherpad_database_name, - 'username': etherpad_database_username, - 'password': etherpad_database_password, - }] if (etherpad_enabled and etherpad_database_engine == 'postgres' and etherpad_database_hostname == postgres_connection_hostname) else []) + 'username': etherpad_database_postgres_username, + 'password': etherpad_database_postgres_password, + }] if (etherpad_enabled and etherpad_database_type == 'postgres' and etherpad_database_postgres_hostname == postgres_connection_hostname) else []) + ([{ 'name': prometheus_postgres_exporter_database_name, @@ -4226,6 +4034,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: |- @@ -4244,7 +4054,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 [] }}" ######################################################################## # # @@ -4266,6 +4076,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 [] }}" @@ -4285,7 +4097,7 @@ matrix_sygnal_container_labels_traefik_tls_certResolver: "{{ traefik_certResolve ###################################################################### # -# etke/ntfy +# ntfy # ###################################################################### @@ -4300,7 +4112,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 '' }}" @@ -4316,7 +4130,7 @@ ntfy_visitor_request_limit_exempt_hosts_hostnames_auto: | ###################################################################### # -# /etky/ntfy +# /ntfy # ###################################################################### @@ -4338,6 +4152,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 @@ -4357,6 +4173,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 '' }}" @@ -4395,6 +4213,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 @@ -4409,6 +4235,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 '' }}" @@ -4445,6 +4273,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 '' }}" @@ -4483,6 +4313,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 '' }}" @@ -4505,22 +4337,55 @@ matrix_client_schildichat_integrations_rest_url: "{{ matrix_dimension_integratio matrix_client_schildichat_integrations_widgets_urls: "{{ matrix_dimension_integrations_widgets_urls if matrix_dimension_enabled else ['https://scalar.vector.im/api'] }}" matrix_client_schildichat_integrations_jitsi_widget_url: "{{ matrix_dimension_integrations_jitsi_widget_url if matrix_dimension_enabled else 'https://scalar.vector.im/api/widgets/jitsi.html' }}" -matrix_client_schildichat_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabled }}" +matrix_client_schildichat_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabled }}" + +matrix_client_schildichat_registration_enabled: "{{ matrix_synapse_enable_registration }}" + +matrix_client_schildichat_enable_presence_by_hs_url: |- + {{ + none + if matrix_synapse_presence_enabled + else {matrix_client_schildichat_default_hs_url: false} + }} + +matrix_client_schildichat_jitsi_preferred_domain: "{{ matrix_server_fqn_jitsi if jitsi_enabled else '' }}" + +###################################################################### +# +# /matrix-client-schildichat +# +###################################################################### + +###################################################################### +# +# 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_schildichat_registration_enabled: "{{ matrix_synapse_enable_registration }}" +matrix_client_fluffychat_container_network: "{{ matrix_addons_container_network }}" -matrix_client_schildichat_enable_presence_by_hs_url: |- - {{ - none - if matrix_synapse_presence_enabled - else {matrix_client_schildichat_default_hs_url: false} - }} +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_schildichat_jitsi_preferred_domain: "{{ matrix_server_fqn_jitsi if jitsi_enabled 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-schildichat +# /matrix-client-fluffychat # ###################################################################### @@ -4532,12 +4397,18 @@ matrix_client_schildichat_jitsi_preferred_domain: "{{ matrix_server_fqn_jitsi if matrix_synapse_enabled: "{{ matrix_homeserver_implementation == 'synapse' }}" -matrix_synapse_username: "{{ matrix_user_username }}" +matrix_synapse_username: "{{ matrix_user_name }}" matrix_synapse_uid: "{{ matrix_user_uid }}" 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) }}" @@ -4568,6 +4439,8 @@ matrix_synapse_container_additional_networks_auto: | ([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 []) + ([matrix_ma1sd_container_network] if (matrix_ma1sd_enabled and matrix_synapse_account_threepid_delegates_msisdn == matrix_synapse_account_threepid_delegates_msisdn_mas1sd_url and matrix_synapse_container_network != matrix_ma1sd_container_network) else []) + + + ([matrix_bot_draupnir_container_network] if (matrix_synapse_ext_synapse_http_antispam_enabled and matrix_synapse_ext_synapse_http_antispam_config_base_url == matrix_bot_draupnir_synapse_http_antispam_config_base_url and matrix_bot_draupnir_container_network != matrix_synapse_container_network) else []) ) | unique }} @@ -4585,7 +4458,9 @@ matrix_synapse_container_labels_matrix_labels_enabled: "{{ not matrix_synapse_wo matrix_synapse_container_labels_public_client_root_redirection_enabled: "{{ matrix_synapse_container_labels_public_client_root_redirection_url != '' }}" 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_public_client_synapse_admin_api_enabled: "{{ matrix_synapse_admin_enabled or matrix_element_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 }}" @@ -4611,7 +4486,7 @@ matrix_synapse_tls_federation_listener_enabled: false matrix_synapse_tls_certificate_path: ~ matrix_synapse_tls_private_key_path: ~ -matrix_synapse_federation_port_openid_resource_required: "{{ not matrix_synapse_federation_enabled and (matrix_dimension_enabled or matrix_ma1sd_enabled or matrix_user_verification_service_enabled) }}" +matrix_synapse_federation_port_openid_resource_required: "{{ not matrix_synapse_federation_enabled and (matrix_dimension_enabled or matrix_ma1sd_enabled or matrix_user_verification_service_enabled or matrix_livekit_jwt_service_enabled) }}" matrix_synapse_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}" @@ -4625,19 +4500,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 '' }}" @@ -4652,7 +4515,7 @@ matrix_synapse_systemd_required_services_list_auto: | + (['matrix-goofys.service'] if matrix_s3_media_store_enabled else []) + - (['matrix-authentication-service.service'] if (matrix_authentication_service_enabled and matrix_synapse_experimental_features_msc3861_enabled) else []) + (['matrix-authentication-service.service'] if (matrix_synapse_matrix_authentication_service_enabled and matrix_synapse_matrix_authentication_service_endpoint == matrix_authentication_service_http_base_container_url) else []) }} matrix_synapse_systemd_wanted_services_list_auto: | @@ -4673,23 +4536,34 @@ matrix_synapse_app_service_config_files_auto: "{{ matrix_homeserver_app_service_ # Disable creation of media repository Synapse worker when using media-repo matrix_synapse_ext_media_repo_enabled: "{{ matrix_media_repo_enabled }}" +matrix_synapse_ext_synapse_http_antispam_enabled: "{{ matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled }}" +matrix_synapse_ext_synapse_http_antispam_config_base_url: "{{ matrix_bot_draupnir_synapse_http_antispam_config_base_url if matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled else '' }}" +matrix_synapse_ext_synapse_http_antispam_config_authorization: "{{ matrix_bot_draupnir_config_web_synapseHTTPAntispam_authorization if matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled else '' }}" +matrix_synapse_ext_synapse_http_antispam_config_enabled_callbacks: "{{ matrix_bot_draupnir_synapse_http_antispam_config_enabled_callbacks if matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled else [] }}" +matrix_synapse_ext_synapse_http_antispam_config_fail_open: "{{ matrix_bot_draupnir_synapse_http_antispam_config_fail_open if matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled else {} }}" +matrix_synapse_ext_synapse_http_antispam_config_async: "{{ matrix_bot_draupnir_synapse_http_antispam_config_async if matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled else {} }}" + # 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_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 '' }}" -matrix_synapse_experimental_features_msc3861_client_secret: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'syn.ngauth.cs', rounds=655555) | to_uuid }}" -matrix_synapse_experimental_features_msc3861_admin_token: "{{ matrix_authentication_service_config_matrix_secret if matrix_authentication_service_enabled else '' }}" -matrix_synapse_experimental_features_msc3861_account_management_url: "{{ matrix_authentication_service_account_management_url if matrix_authentication_service_enabled else '' }}" +matrix_synapse_experimental_features_msc3266_enabled: "{{ matrix_rtc_enabled }}" + +matrix_synapse_matrix_authentication_service_enabled: "{{ matrix_authentication_service_enabled }}" +matrix_synapse_matrix_authentication_service_endpoint: "{{ matrix_authentication_service_http_base_container_url if matrix_authentication_service_enabled else '' }}" +matrix_synapse_matrix_authentication_service_secret: "{{ matrix_authentication_service_config_matrix_secret if matrix_authentication_service_enabled else '' }}" 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': # > Password auth cannot be enabled when OAuth delegation is enabled -matrix_synapse_password_config_enabled: "{{ not matrix_synapse_experimental_features_msc3861_enabled }}" +matrix_synapse_password_config_enabled: "{{ not matrix_synapse_matrix_authentication_service_enabled }}" matrix_synapse_register_user_script_matrix_authentication_service_path: "{{ matrix_authentication_service_bin_path }}/register-user" @@ -4714,7 +4588,9 @@ 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_self_build: "{{ matrix_architecture not in ['amd64'] }}" +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 ['arm64', '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') }}" @@ -4744,6 +4620,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: | @@ -4774,6 +4652,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 }}" @@ -4814,6 +4695,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'] }}" @@ -4827,6 +4710,8 @@ matrix_synapse_admin_container_labels_traefik_docker_network: "{{ matrix_playboo matrix_synapse_admin_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" matrix_synapse_admin_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" +matrix_synapse_admin_config_externalAuthProvider: "{{ matrix_authentication_service_enabled | default(false) or matrix_synapse_ext_password_provider_ldap_enabled | default(false) }}" + matrix_synapse_admin_config_asManagedUsers_auto: | {{ ([ @@ -4849,10 +4734,6 @@ matrix_synapse_admin_config_asManagedUsers_auto: | '^@'+(matrix_bot_draupnir_login | default('') | regex_escape) +':'+(matrix_domain | regex_escape)+'$', ] if matrix_bot_draupnir_enabled else []) + - ([ - '^@'+(matrix_bot_chatgpt_matrix_bot_username_localpart | default('') | regex_escape) +':'+(matrix_domain | regex_escape)+'$', - ] if matrix_bot_chatgpt_enabled else []) - + ([ '^@'+(matrix_bot_honoroit_login | default('') | regex_escape) +':'+(matrix_domain | regex_escape)+'$', ] if matrix_bot_honoroit_enabled else []) @@ -4882,26 +4763,21 @@ matrix_synapse_admin_config_asManagedUsers_auto: | '^@'+(matrix_appservice_slack_user_prefix | default('') | regex_escape)+'[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_appservice_slack_enabled else []) + - ([ - '^@'+(matrix_appservice_webhooks_bot_name | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', - '^@'+(matrix_appservice_webhooks_user_prefix | default('') | regex_escape)+'[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', - ] if matrix_appservice_webhooks_enabled else []) - + ([ '^@'+(matrix_beeper_linkedin_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', '^@linkedin_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_beeper_linkedin_enabled else []) + - ([ - '^@'+(matrix_go_skype_bridge_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', - '^@skype_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', - ] if matrix_go_skype_bridge_enabled else []) - + ([ '^@heisenbridge:'+(matrix_domain | regex_escape)+'$', '^@hbirc_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_heisenbridge_enabled else []) + + ([ + '^@zulipbot:'+(matrix_domain | regex_escape)+'$', + '^@zulip_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', + ] if matrix_zulip_bridge_enabled else []) + + ([ '^@hookshot:'+(matrix_domain | regex_escape)+'$', '^@_github_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', @@ -4910,16 +4786,16 @@ 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)+'$', ] if matrix_mautrix_discord_enabled else []) + - ([ - '^@'+(matrix_mautrix_facebook_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', - '^@facebook_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', - ] if matrix_mautrix_facebook_enabled else []) - + ([ '^@'+(matrix_mautrix_gmessages_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', '^@gmessages_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', @@ -4930,11 +4806,6 @@ matrix_synapse_admin_config_asManagedUsers_auto: | '^@googlechat_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_mautrix_googlechat_enabled else []) + - ([ - '^@'+(matrix_mautrix_instagram_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', - '^@instagram_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', - ] if matrix_mautrix_instagram_enabled else []) - + ([ '^@'+(matrix_mautrix_meta_instagram_appservice_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', '^@'+(matrix_mautrix_meta_instagram_bridge_username_prefix | default('') | regex_escape)+'[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', @@ -4957,7 +4828,7 @@ matrix_synapse_admin_config_asManagedUsers_auto: | + ([ '^@'+(matrix_mautrix_telegram_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', - '^@telegram_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', + '^@'+(matrix_mautrix_telegram_username_template | regex_escape | replace('{userid}', '.+'))+':'+(matrix_domain | regex_escape)+'$', ] if matrix_mautrix_telegram_enabled else []) + ([ @@ -4975,31 +4846,14 @@ matrix_synapse_admin_config_asManagedUsers_auto: | '^@imessage_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_mautrix_wsproxy_enabled else []) + - ([ - '^@_discordpuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', - ] if matrix_mx_puppet_discord_enabled else []) - + ([ '^@_groupmepuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_mx_puppet_groupme_enabled else []) + - ([ - '^@_instagrampuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', - ] if matrix_mx_puppet_instagram_enabled else []) - + - ([ - '^@_slackpuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', - ] if matrix_mx_puppet_slack_enabled else []) - + ([ '^@_steampuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_mx_puppet_steam_enabled else []) + - ([ - '^@'+(matrix_mx_puppet_twitter_bot_localpart | default('') | regex_escape)+':'+ (matrix_domain | regex_escape)+'$', - '^@'+(matrix_mx_puppet_twitter_namespace_prefix | default('') | regex_escape)+'[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', - ] if matrix_mx_puppet_twitter_enabled else []) - + ([ '^@smsbot:'+(matrix_domain | regex_escape)+'$', '^@sms_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', @@ -5009,6 +4863,11 @@ matrix_synapse_admin_config_asManagedUsers_auto: | '^@'+(matrix_wechat_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', '^@_wechat_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', ] if matrix_wechat_enabled else []) + + + ([ + '^@'+(matrix_steam_bridge_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$', + '^@steam_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$', + ] if matrix_steam_bridge_enabled else []) }} ###################################################################### @@ -5025,6 +4884,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 [] }}" @@ -5042,7 +4903,7 @@ matrix_synapse_usage_exporter_container_labels_traefik_tls_certResolver: "{{ tra ###################################################################### # -# etke/prometheus_node_exporter +# prometheus_node_exporter # ###################################################################### @@ -5057,9 +4918,11 @@ prometheus_node_exporter_gid: "{{ matrix_user_gid }}" prometheus_node_exporter_hostname: "{{ matrix_server_fqn_matrix }}" +prometheus_node_exporter_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else prometheus_node_exporter_container_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 }}" @@ -5071,14 +4934,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 # ###################################################################### @@ -5093,6 +4956,8 @@ prometheus_postgres_exporter_gid: "{{ matrix_user_gid }}" prometheus_postgres_exporter_hostname: "{{ matrix_server_fqn_matrix }}" +prometheus_postgres_exporter_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else prometheus_postgres_exporter_container_image_registry_prefix_upstream_default }}" + prometheus_postgres_exporter_container_network: "{{ matrix_monitoring_container_network }}" prometheus_postgres_exporter_container_additional_networks: | @@ -5122,7 +4987,7 @@ prometheus_postgres_exporter_systemd_required_services_list_auto: | ###################################################################### # -# /etke/prometheus_postgres_exporter +# /prometheus_postgres_exporter # ###################################################################### @@ -5139,6 +5004,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: |- @@ -5181,6 +5048,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: | @@ -5275,7 +5144,7 @@ matrix_prometheus_services_connect_scraper_synapse_usage_exporter_static_configs ###################################################################### # -# etke/grafana +# grafana # ###################################################################### @@ -5290,6 +5159,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: | @@ -5308,7 +5179,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'), @@ -5351,12 +5222,13 @@ grafana_default_home_dashboard_path: |- 'dendrite': ('/etc/grafana/dashboards/node-exporter-full.json' if prometheus_node_exporter_enabled else ''), 'conduit': ('/etc/grafana/dashboards/node-exporter-full.json' if prometheus_node_exporter_enabled else ''), 'conduwuit': ('/etc/grafana/dashboards/node-exporter-full.json' if prometheus_node_exporter_enabled else ''), + 'continuwuity': ('/etc/grafana/dashboards/node-exporter-full.json' if prometheus_node_exporter_enabled else ''), }[matrix_homeserver_implementation] }} ###################################################################### # -# /etke/grafana +# /grafana # ###################################################################### @@ -5378,6 +5250,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 '' }}" @@ -5389,7 +5263,7 @@ matrix_registration_container_additional_networks_auto: |- ( ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) + - ([postgres_container_network] if (postgres_enabled and matrix_registration_database_hostname == postgres_connection_hostname and matrix_mautrix_facebook_container_network != postgres_container_network) else []) + ([postgres_container_network] if (postgres_enabled and matrix_registration_database_hostname == postgres_connection_hostname and matrix_registration_container_network != postgres_container_network) else []) + ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_registration_container_labels_traefik_enabled) else []) ) | unique @@ -5409,6 +5283,7 @@ matrix_registration_shared_secret: |- 'dendrite': matrix_dendrite_client_api_registration_shared_secret | default (''), 'conduit': '', 'conduwuit': '', + 'continuwuity': '', }[matrix_homeserver_implementation] }} @@ -5443,6 +5318,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 }}" @@ -5504,6 +5381,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: | @@ -5547,20 +5426,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 '' }}" @@ -5605,6 +5471,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: | @@ -5629,19 +5497,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 '' }}" @@ -5665,6 +5521,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: | @@ -5689,19 +5547,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 '' }}" @@ -5715,6 +5561,58 @@ matrix_conduwuit_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabl ###################################################################### +###################################################################### +# +# matrix-continuwuity +# +###################################################################### + +matrix_continuwuity_enabled: "{{ matrix_homeserver_implementation == 'continuwuity' }}" + +matrix_continuwuity_hostname: "{{ matrix_server_fqn_matrix }}" + +matrix_continuwuity_config_allow_federation: "{{ matrix_homeserver_federation_enabled }}" + +matrix_continuwuity_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_continuwuity_docker_image_registry_prefix_upstream_default }}" + +matrix_continuwuity_container_network: "{{ matrix_homeserver_container_network }}" + +matrix_continuwuity_container_additional_networks_auto: | + {{ + ( + ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_continuwuity_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network else []) + ) | unique + }} + +matrix_continuwuity_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and not matrix_synapse_workers_enabled }}" +matrix_continuwuity_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_continuwuity_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_continuwuity_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +matrix_continuwuity_container_labels_public_client_root_redirection_enabled: "{{ matrix_continuwuity_container_labels_public_client_root_redirection_url != '' }}" +matrix_continuwuity_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_continuwuity_container_labels_public_federation_api_traefik_hostname: "{{ matrix_server_fqn_matrix_federation }}" +matrix_continuwuity_container_labels_public_federation_api_traefik_entrypoints: "{{ matrix_federation_traefik_entrypoint_name }}" +matrix_continuwuity_container_labels_public_federation_api_traefik_tls: "{{ matrix_federation_traefik_entrypoint_tls }}" + +matrix_continuwuity_container_labels_internal_client_api_enabled: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled }}" +matrix_continuwuity_container_labels_internal_client_api_traefik_entrypoints: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name }}" + +matrix_continuwuity_config_turn_uris: "{{ matrix_coturn_turn_uris if matrix_coturn_enabled else [] }}" +matrix_continuwuity_config_turn_secret: "{{ matrix_coturn_turn_static_auth_secret if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'auth-secret') else '' }}" +matrix_continuwuity_config_turn_username: "{{ matrix_coturn_lt_cred_mech_username if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" +matrix_continuwuity_config_turn_password: "{{ matrix_coturn_lt_cred_mech_password if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" + +matrix_continuwuity_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabled }}" + +###################################################################### +# +# /matrix-continuwuity +# +###################################################################### + + ###################################################################### # # matrix-user-creator @@ -5735,12 +5633,6 @@ matrix_user_creator_users_auto: | 'initial_type': 'bot', }] if matrix_bot_baibot_enabled else []) + - ([{ - 'username': matrix_bot_chatgpt_matrix_bot_username_localpart, - 'initial_password': matrix_bot_chatgpt_matrix_bot_password, - 'initial_type': 'bot', - }] if matrix_bot_chatgpt_enabled and matrix_bot_chatgpt_matrix_bot_password | length > 0 else []) - + ([{ 'username': matrix_bot_matrix_reminder_bot_matrix_user_id_localpart, 'initial_password': matrix_bot_matrix_reminder_bot_matrix_user_password, @@ -5774,7 +5666,7 @@ matrix_user_creator_users_auto: | ([{ 'username': matrix_bot_draupnir_login, 'initial_password': matrix_bot_draupnir_password, - 'initial_type': 'bot', + 'initial_type': ('admin' if matrix_bot_draupnir_admin_api_enabled else 'bot'), }] if matrix_bot_draupnir_enabled and matrix_bot_draupnir_password else []) }} @@ -5800,6 +5692,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: | @@ -5823,7 +5717,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 }}" @@ -5842,6 +5736,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 }}" @@ -5857,7 +5753,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 '' }}" @@ -5865,7 +5761,7 @@ matrix_static_files_file_matrix_client_property_org_matrix_msc3575_proxy_url: "{ matrix_static_files_file_matrix_client_property_org_matrix_msc2965_authentication_enabled: "{{ matrix_authentication_service_enabled }}" matrix_static_files_file_matrix_client_property_org_matrix_msc2965_authentication_issuer: "{{ matrix_authentication_service_config_http_issuer if matrix_authentication_service_enabled else '' }}" -matrix_static_files_file_matrix_client_property_org_matrix_msc2965_authentication_account: "{{ matrix_authentication_service_account_management_url }}" +matrix_static_files_file_matrix_client_property_org_matrix_msc2965_authentication_account: "{{ matrix_authentication_service_account_management_url if matrix_authentication_service_enabled else '' }}" matrix_static_files_file_matrix_client_property_m_tile_server_entries_enabled: "{{ matrix_client_element_location_sharing_enabled }}" matrix_static_files_file_matrix_client_property_m_tile_server_map_style_url: "{{ ('https://' if matrix_playbook_ssl_enabled else 'http://') + matrix_server_fqn_element }}/map_style.json" @@ -5874,6 +5770,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' }}" @@ -5890,25 +5794,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 # # # ######################################################################## @@ -5932,6 +5838,20 @@ traefik_gid: "{{ matrix_user_gid }}" # This override (for the `web` entrypoint) also cascades to overriding the `web-secure` entrypoint and the `matrix-federation` entrypoint. traefik_config_entrypoint_web_transport_respondingTimeouts_readTimeout: 300s +# Traefik v3.6.3+ blocks encoded characters in request paths by default for security. +# Matrix API endpoints require encoded slashes (e.g., in room keys URLs) and encoded hashes (e.g., in room directory URLs). +# Ref: +# - https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4798 +# - https://doc.traefik.io/traefik/migrate/v3/#v364 +traefik_config_entrypoint_web_secure_http_encodedCharacters_enabled: true +traefik_config_entrypoint_web_secure_http_encodedCharacters_allowEncodedSlash: true +traefik_config_entrypoint_web_secure_http_encodedCharacters_allowEncodedHash: true +# Doing the same for the `web` entrypoint, for people who disable SSL for the playbook +# and actually go through this entrypoint. +traefik_config_entrypoint_web_http_encodedCharacters_enabled: "{{ not matrix_playbook_ssl_enabled }}" +traefik_config_entrypoint_web_http_encodedCharacters_allowEncodedSlash: "{{ not matrix_playbook_ssl_enabled }}" +traefik_config_entrypoint_web_http_encodedCharacters_allowEncodedHash: "{{ not matrix_playbook_ssl_enabled }}" + traefik_additional_entrypoints_auto: | {{ ([matrix_playbook_public_matrix_federation_api_traefik_entrypoint_definition] if matrix_playbook_public_matrix_federation_api_traefik_entrypoint_enabled else []) @@ -5939,18 +5859,25 @@ 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 []) + }} + +traefik_additional_domains_to_obtain_certificates_for_auto: | + {{ + ([matrix_coturn_hostname] if (matrix_coturn_enabled and matrix_coturn_tls_enabled and matrix_coturn_hostname != matrix_server_fqn_matrix) else []) }} ######################################################################## @@ -5975,10 +5902,243 @@ traefik_certs_dumper_base_path: "{{ matrix_base_data_path }}/traefik-certs-dumpe traefik_certs_dumper_uid: "{{ matrix_user_uid }}" traefik_certs_dumper_gid: "{{ matrix_user_gid }}" -traefik_certs_dumper_ssl_dir_path: "{{ traefik_ssl_dir_path if traefik_enabled else '' }}" +traefik_certs_dumper_ssl_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-admin # +# # +######################################################################## + +# We don't enable this by default. +matrix_element_admin_enabled: false + +matrix_element_admin_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" + +matrix_element_admin_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_element_admin_container_image_registry_prefix_upstream_default }}" + +matrix_element_admin_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}" + +matrix_element_admin_container_network: "{{ matrix_addons_container_network }}" + +matrix_element_admin_container_additional_networks_auto: |- + {{ + ( + ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) + + + ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_element_admin_container_labels_traefik_enabled) else []) + ) | unique + }} + +matrix_element_admin_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +matrix_element_admin_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_element_admin_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_element_admin_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +matrix_element_admin_systemd_required_services_list_auto: "{{ matrix_addons_homeserver_systemd_services_list }}" + +###################################################################### +# # +# /matrix-element-admin # +# # +###################################################################### + + +######################################################################## +# # +# 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_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_element_call_container_image_registry_prefix_upstream_default }}" + +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_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else livekit_server_container_image_registry_prefix_upstream_default }}" + +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_path + '/' + livekit_server_config_turn_domain + '/certificate.crt'), + 'dst': livekit_server_config_turn_cert_file, + 'options': 'ro', + }, + { + 'src': (traefik_certs_dumper_dumped_certificates_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 {} + ) + }} + +# We only wish for matrix-livekit-jwt-service to create rooms, only for users on trusted homeservers. +# See `matrix_livekit_jwt_service_environment_variable_livekit_full_access_homeservers`. +# +# Ref: +# - https://github.com/element-hq/lk-jwt-service/releases/tag/v0.3.0 +# - https://github.com/livekit/livekit/blob/5e483e7554e5afbf254acf84e3ec0aa6e108e758/config-sample.yaml#L168-L170 +# - https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server/commit/2a1b04552634097bdd26d472502a8f5bf1b8528f +livekit_server_config_room_auto_create: false + +# 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_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_livekit_jwt_service_container_image_registry_prefix_upstream_default }}" + +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_environment_variable_livekit_full_access_homeservers_list: ["{{ matrix_domain }}"] + +######################################################################## +# # +# /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/README.md b/i18n/README.md index 94cf013e4..b0934b3ef 100644 --- a/i18n/README.md +++ b/i18n/README.md @@ -20,7 +20,7 @@ Currently, we support translation of: Organization of this `i18n` directory is as follows: - [PUBLISHED_LANGUAGES](PUBLISHED_LANGUAGES): a list of languages that we publish translations for (in the [translations/](translations/) directory) -- [.gitignore](.gitignore): a list of files and directories to ignore in the `i18n` directory. We intentionaly ignore translated results (`translations/` directories) for languages taht are still in progress. We only [publish translations in a new language](#publish-translations-in-a-new-language) when the translation progresses beyond a certain threshold. +- [.gitignore](.gitignore): a list of files and directories to ignore in the `i18n` directory. We intentionally ignore translated results (`translations/` directories) for languages that are still in progress. We only [publish translations in a new language](#publish-translations-in-a-new-language) when the translation progresses beyond a certain threshold. - [justfile](justfile): a list of recipes for [just](https://github.com/casey/just) command runner - [requirements.txt](requirements.txt): a list of Python packages required to work with translations - [translation-templates/](translation-templates/): a list of English translation templates - strings extracted from Markdown files 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/docs/configuring-playbook-continuwuity.po b/i18n/locales/bg/LC_MESSAGES/docs/configuring-playbook-continuwuity.po new file mode 100644 index 000000000..8e5129018 --- /dev/null +++ b/i18n/locales/bg/LC_MESSAGES/docs/configuring-playbook-continuwuity.po @@ -0,0 +1,134 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community +# members +# This file is distributed under the same license as the +# matrix-docker-ansible-deploy package. +# FIRST AUTHOR , 2025. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \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" +"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" +"Generated-By: Babel 2.16.0\n" + +#: ../../../docs/configuring-playbook-continuwuity.md:1 +msgid "Configuring continuwuity (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:3 +msgid "The playbook can install and configure the [continuwuity](https://continuwuity.org/) Matrix server for you." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:5 +msgid "See the project's [documentation](https://continuwuity.org/) to learn what it does and why it might be useful to you." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:7 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:9 +msgid "💡 **Note**: continuwuity is a fork of [conduwuit](./configuring-playbook-conduwuit.md), which the playbook also supports." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:11 +msgid "⚠️ **Warnings**:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:13 +msgid "**You can't switch an existing Matrix server's implementation** (e.g. Synapse -> continuwuity). 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." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:15 +msgid "**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" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:17 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:19 +msgid "To use continuwuity, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:33 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:35 +msgid "There are some additional things you may wish to configure about the server." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:37 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:39 +msgid "`roles/custom/matrix-continuwuity/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:40 +msgid "`roles/custom/matrix-continuwuity/templates/continuwuity.toml.j2` for the server's default configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:42 +msgid "There are various Ansible variables that control settings in the `continuwuity.toml` file." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:44 +msgid "If a specific setting you'd like to change does not have a dedicated Ansible variable, you can either submit a PR to us to add it, or you can [override the setting using an environment variable](https://continuwuity.org/configuration#environment-variables) using `matrix_continuwuity_environment_variables_extension`. For example:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:52 +msgid "Creating the first user account" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:54 +msgid "Unlike other homeserver implementations (like Synapse and Dendrite), continuwuity does not support creating users via the command line or via the playbook." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:56 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:58 +msgid "This should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:60 +msgid "The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:63 +msgid "Configuring bridges / appservices" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:65 +msgid "For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:67 +msgid "For continuwuity, you will have to manually register appservices using the [`!admin appservices register` command](https://continuwuity.org/appservices#set-up-the-appservice---general-instructions) sent to the server bot account." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:69 +msgid "The server's bot account has a Matrix ID of `@conduit:example.com` (not `@continuwuity:example.com`!) due to continuwuity's historical legacy. Your first user account would already have been invited to an admin room with this bot." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:72 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:74 +msgid "Then, send its content to the existing admin room:" +msgstr "" diff --git a/i18n/locales/bg/LC_MESSAGES/docs/configuring-playbook-matrix-authentication-service.po b/i18n/locales/bg/LC_MESSAGES/docs/configuring-playbook-matrix-authentication-service.po index 0b1dda626..554766af6 100644 --- a/i18n/locales/bg/LC_MESSAGES/docs/configuring-playbook-matrix-authentication-service.po +++ b/i18n/locales/bg/LC_MESSAGES/docs/configuring-playbook-matrix-authentication-service.po @@ -435,7 +435,7 @@ msgid "We **don't** ask you to [run the `syn2mas` migration advisor command](htt msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:340 -msgid "You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration)." +msgid "You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-mas-cli-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration)." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:342 @@ -535,7 +535,7 @@ msgid "you've performed a [syn2mas dry-run](#performing-a-syn2mas-dry-run) and d msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:401 -msgid "To perform a real migration, run the `matrix-authentication-service-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_dry_run` variable:" +msgid "To perform a real migration, run the `matrix-authentication-service-mas-cli-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_migrate_dry_run` variable:" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:407 diff --git a/i18n/locales/jp/LC_MESSAGES/docs/configuring-playbook-matrix-authentication-service.po b/i18n/locales/jp/LC_MESSAGES/docs/configuring-playbook-matrix-authentication-service.po index 776945591..84baf5f02 100644 --- a/i18n/locales/jp/LC_MESSAGES/docs/configuring-playbook-matrix-authentication-service.po +++ b/i18n/locales/jp/LC_MESSAGES/docs/configuring-playbook-matrix-authentication-service.po @@ -434,7 +434,7 @@ msgid "We **don't** ask you to [run the `syn2mas` migration advisor command](htt msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:340 -msgid "You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration)." +msgid "You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-mas-cli-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration)." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:342 @@ -534,7 +534,7 @@ msgid "you've performed a [syn2mas dry-run](#performing-a-syn2mas-dry-run) and d msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:401 -msgid "To perform a real migration, run the `matrix-authentication-service-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_dry_run` variable:" +msgid "To perform a real migration, run the `matrix-authentication-service-mas-cli-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_migrate_dry_run` variable:" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:407 diff --git a/i18n/requirements.txt b/i18n/requirements.txt index 9a2b21645..a58d6eeae 100644 --- a/i18n/requirements.txt +++ b/i18n/requirements.txt @@ -1,27 +1,27 @@ alabaster==1.0.0 babel==2.17.0 -certifi==2025.1.31 -charset-normalizer==3.4.1 -click==8.1.8 -docutils==0.21.2 -idna==3.10 +certifi==2026.1.4 +charset-normalizer==3.4.4 +click==8.3.1 +docutils==0.22.4 +idna==3.11 imagesize==1.4.1 -Jinja2==3.1.5 +Jinja2==3.1.6 linkify-it-py==2.0.3 -markdown-it-py==3.0.0 -MarkupSafe==3.0.2 -mdit-py-plugins==0.4.2 +markdown-it-py==4.0.0 +MarkupSafe==3.0.3 +mdit-py-plugins==0.5.0 mdurl==0.1.2 myst-parser==4.0.1 -packaging==24.2 -Pygments==2.19.1 -PyYAML==6.0.2 -requests==2.32.3 -setuptools==75.8.0 -snowballstemmer==2.2.0 -Sphinx==8.1.3 -sphinx-intl==2.3.1 -sphinx-markdown-builder==0.6.8 +packaging==25.0 +Pygments==2.19.2 +PyYAML==6.0.3 +requests==2.32.5 +setuptools==80.9.0 +snowballstemmer==3.0.1 +Sphinx==9.1.0 +sphinx-intl==2.3.2 +sphinx-markdown-builder==0.6.9 sphinxcontrib-applehelp==2.0.0 sphinxcontrib-devhelp==2.0.0 sphinxcontrib-htmlhelp==2.1.0 @@ -30,4 +30,4 @@ sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 tabulate==0.9.0 uc-micro-py==1.0.3 -urllib3==2.3.0 +urllib3==2.6.3 diff --git a/i18n/translation-templates/CHANGELOG.pot b/i18n/translation-templates/CHANGELOG.pot index 471062749..8370ca998 100644 --- a/i18n/translation-templates/CHANGELOG.pot +++ b/i18n/translation-templates/CHANGELOG.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7063 +17,7484 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: ../../../CHANGELOG.md:1 -msgid "2025-01-27" +msgid "2025-11-05" msgstr "" #: ../../../CHANGELOG.md:3 -msgid "Redis and KeyDB are no longer part of the playbook" +msgid "The MX Puppet bridges for Discord, Instagram, Slack, and Twitter have been removed from the playbook" msgstr "" #: ../../../CHANGELOG.md:5 -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." +msgid "The MX Puppet bridges for Discord, Instagram, Slack, and Twitter have been removed from the playbook, as they have been unmaintained for more than several years and do not support important features like authenticated media. See [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3867) for the context." msgstr "" #: ../../../CHANGELOG.md:7 -msgid "The playbook has gone through several iterations of memorystore implementations:" +msgid "The playbook will let you know if you're using any variables for those bridges:" msgstr "" #: ../../../CHANGELOG.md:9 -msgid "It initially used Redis, auto-installing it when needed by features/services" +msgid "`matrix_mx_puppet_discord_*`" 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" +msgid "`matrix_mx_puppet_instagram_*`" msgstr "" #: ../../../CHANGELOG.md:11 +msgid "`matrix_mx_puppet_slack_*`" +msgstr "" + +#: ../../../CHANGELOG.md:12 +msgid "`matrix_mx_puppet_twitter_*`" +msgstr "" + +#: ../../../CHANGELOG.md:14 +msgid "You'll need to remove them from `vars.yml` and potentially uninstall them manually. Consult pages below for details:" +msgstr "" + +#: ../../../CHANGELOG.md:16 +msgid "[Instruction for MX Puppet Discord bridge](./docs/configuring-playbook-bridge-mx-puppet-discord.md#uninstalling-the-bridge-manually)" +msgstr "" + +#: ../../../CHANGELOG.md:17 +msgid "[Instruction for MX Puppet Instagram bridge](./docs/configuring-playbook-bridge-mx-puppet-instagram.md#uninstalling-the-bridge-manually)" +msgstr "" + +#: ../../../CHANGELOG.md:18 +msgid "[Instruction for MX Puppet Slack bridge](./docs/configuring-playbook-bridge-mx-puppet-slack.md#uninstalling-the-bridge-manually)" +msgstr "" + +#: ../../../CHANGELOG.md:19 +msgid "[Instruction for MX Puppet Twitter bridge](./docs/configuring-playbook-bridge-mx-puppet-twitter.md#uninstalling-the-bridge-manually)" +msgstr "" + +#: ../../../CHANGELOG.md:21 +msgid "2025-11-04" +msgstr "" + +#: ../../../CHANGELOG.md:23 +msgid "The Go Skype bridge has been removed from the playbook" +msgstr "" + +#: ../../../CHANGELOG.md:25 +msgid "The [go-skype-bridge](./docs/configuring-playbook-bridge-go-skype-bridge.md) has been removed from the playbook, as Skype has been discontinued since the May 2025." +msgstr "" + +#: ../../../CHANGELOG.md:27 +msgid "The playbook will let you know if you're using any `matrix_go_skype_bridge_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bridge manually](./docs/configuring-playbook-bridge-go-skype-bridge.md#uninstalling-the-bridge-manually)." +msgstr "" + +#: ../../../CHANGELOG.md:29 +msgid "2025-10-02" +msgstr "" + +#: ../../../CHANGELOG.md:31 +msgid "Element Admin support" +msgstr "" + +#: ../../../CHANGELOG.md:33 +msgid "The playbook now supports [Element Admin](./docs/configuring-playbook-element-admin.md) - a new web-based administration panel for Synapse and [Matrix Authentication Service](./docs/configuring-playbook-matrix-authentication-service.md)." +msgstr "" + +#: ../../../CHANGELOG.md:35 +msgid "Deployments based on Matrix Authentication Service may find it useful to run both Synapse Admin and Element Admin at the same time." +msgstr "" + +#: ../../../CHANGELOG.md:37 +msgid "Deployments that don't rely on Matrix Authentication Service are unlikely to find anything useful in Element Admin right now (it's too basic in its current form)." +msgstr "" + +#: ../../../CHANGELOG.md:40 +msgid "2025-04-26" +msgstr "" + +#: ../../../CHANGELOG.md:42 +msgid "Continuwuity support" +msgstr "" + +#: ../../../CHANGELOG.md:44 +msgid "Thanks to [Virkkunen](https://github.com/Virkkunen), we now have optional experimental [Continuwuity](./docs/configuring-playbook-continuwuity.md) homeserver support." +msgstr "" + +#: ../../../CHANGELOG.md:46 +msgid "Continuwuity is a fork of [conduwuit](./docs/configuring-playbook-conduwuit.md), which the playbook also supports. It appears that conduwuit has been abandoned and various forks (like Continuwuity, [Tuwunel](https://github.com/matrix-construct/tuwunel) and possibly others) are continuing in its path." +msgstr "" + +#: ../../../CHANGELOG.md:48 +#: ../../../CHANGELOG.md:261 +msgid "Existing installations do **not** need to be updated. **Synapse is still the default homeserver implementation** installed by the playbook." +msgstr "" + +#: ../../../CHANGELOG.md:50 +msgid "People that used to run conduwuit, may wish to:" +msgstr "" + +#: ../../../CHANGELOG.md:52 +msgid "either [migrate from conduwuit to Continuwuity](./docs/configuring-playbook-continuwuity.md#migrating-from-conduwuit)" +msgstr "" + +#: ../../../CHANGELOG.md:53 +msgid "or wait for some of the other forks to progress and for support for them to get added to the playbook" +msgstr "" + +#: ../../../CHANGELOG.md:55 +msgid "**The homeserver implementation of an existing server cannot be changed** (e.g. from Synapse/Conduit/Dendrite to Continuwuity) without data loss." +msgstr "" + +#: ../../../CHANGELOG.md:58 +msgid "2025-04-09" +msgstr "" + +#: ../../../CHANGELOG.md:60 +msgid "Element Call frontend installation is now optional" +msgstr "" + +#: ../../../CHANGELOG.md:62 +msgid "Because all Element clients (Element Web and Element X mobile) now embed and use their own Element Call frontend application (and not the one hosted via the playbook), it makes little sense for the playbook to self-host the Element Call frontend for you. Setting up the frontend requires an additional hostname (DNS setup) and it won't be used by Element clients anyway, so **we now recommend not installing the Element Call frontend**." +msgstr "" + +#: ../../../CHANGELOG.md:64 +msgid "💡 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)." +msgstr "" + +#: ../../../CHANGELOG.md:66 +msgid "The playbook now lets you [Decide between Element Call vs just the Matrix RTC stack](./docs/configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack)." +msgstr "" + +#: ../../../CHANGELOG.md:68 +msgid "If you've already installed Element Call (via `matrix_element_call_enabled: true`), you can switch to installing just the [Matrix RTC (Real-Time Communication) stack](./docs/configuring-playbook-matrix-rtc.md) (all supporting services **without the Element Call frontend**) by:" +msgstr "" + +#: ../../../CHANGELOG.md:70 +msgid "Adjusting your `vars.yml` configuration like this:" +msgstr "" + +#: ../../../CHANGELOG.md:77 +msgid "[Re-running the playbook](./docs/installing.md) with the `setup-all` Ansible tag (e.g. `just setup-all`)" +msgstr "" + +#: ../../../CHANGELOG.md:79 +msgid "Getting rid of the `call.element.example.com` DNS record" +msgstr "" + +#: ../../../CHANGELOG.md:82 +msgid "2025-03-15" +msgstr "" + +#: ../../../CHANGELOG.md:84 +msgid "Element Call support" +msgstr "" + +#: ../../../CHANGELOG.md:86 +msgid "The playbook now supports [Element Call](https://github.com/element-hq/element-call) as an optional feature. Thanks to [wjbeckett](https://github.com/wjbeckett) for getting us started via [PR#3562](https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3562)." +msgstr "" + +#: ../../../CHANGELOG.md:88 +msgid "Element Call is a native Matrix video conferencing application developed by [Element](https://element.io/) that has the goal of replacing [Jitsi](./docs/configuring-playbook-jitsi.md) and the old WebRTC stack used in previous Element versions." +msgstr "" + +#: ../../../CHANGELOG.md:90 +msgid "💡 For now, Element Call is only supported with the [Synapse](docs/configuring-playbook-synapse.md) homeserver (with [federation](docs/configuring-playbook-federation.md) enabled) and [Element Web](docs/configuring-playbook-client-element-web.md) and Element X mobile clients. See the [Prerequisites](docs/configuring-playbook-element-call.md#prerequisites) section of the [Element Call documentation](docs/configuring-playbook-element-call.md) for more details." +msgstr "" + +#: ../../../CHANGELOG.md:92 +msgid "To get started, see the [Configuring Element Call](docs/configuring-playbook-element-call.md) documentation page." +msgstr "" + +#: ../../../CHANGELOG.md:95 +msgid "2025-03-08" +msgstr "" + +#: ../../../CHANGELOG.md:97 +msgid "6️⃣ IPv6 support enablement recommended by default" +msgstr "" + +#: ../../../CHANGELOG.md:99 +msgid "Our [default example configuration](./examples/vars.yml) and [Configuring DNS](./docs/configuring-dns.md) guides now recommend enabling [IPv6](https://en.wikipedia.org/wiki/IPv6) support. We recommend that everyone enables IPv6 support for their Matrix server, even if they don't have IPv6 connectivity yet." +msgstr "" + +#: ../../../CHANGELOG.md:101 +msgid "Our new [Configuring IPv6](./docs/configuring-ipv6.md) documentation page has more details about the playbook's IPv6 support." +msgstr "" + +#: ../../../CHANGELOG.md:103 +msgid "**Existing playbook users** will **need to do some manual work** to enable IPv6 support. This consists of:" +msgstr "" + +#: ../../../CHANGELOG.md:105 +msgid "enabling IPv6 support for the Docker container networks:" +msgstr "" + +#: ../../../CHANGELOG.md:106 +msgid "add `devture_systemd_docker_base_ipv6_enabled: true` to their `vars.yml` configuration file" +msgstr "" + +#: ../../../CHANGELOG.md:107 +msgid "stop all services (`just stop-all`)" +msgstr "" + +#: ../../../CHANGELOG.md:108 +msgid "delete all container networks on the server: `docker network rm $(docker network ls -q)`" +msgstr "" + +#: ../../../CHANGELOG.md:109 +msgid "re-run the playbook fully: `just install-all`" +msgstr "" + +#: ../../../CHANGELOG.md:111 +msgid "[configuring IPv6 (`AAAA`) DNS records](./docs/configuring-ipv6.md#configuring-dns-records-for-ipv6)" +msgstr "" + +#: ../../../CHANGELOG.md:113 +msgid "2025-02-26" +msgstr "" + +#: ../../../CHANGELOG.md:115 +msgid "🪦 Bye-bye, Email2Matrix" +msgstr "" + +#: ../../../CHANGELOG.md:117 +msgid "The [Email2Matrix](./docs/configuring-playbook-email2matrix.md) service has been superseded by the [Postmoogle](./docs/configuring-playbook-bridge-postmoogle.md) bridge for a long time now and was completely removed from the playbook today." +msgstr "" + +#: ../../../CHANGELOG.md:119 +msgid "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 as described in the [Uninstalling Email2Matrix manually](./docs/configuring-playbook-email2matrix.md#uninstalling-email2matrix-manually) section of the documentation. The playbook will warn you if there are any `matrix_email2matrix_*` variables still remaining in your configuration." +msgstr "" + +#: ../../../CHANGELOG.md:122 +msgid "2025-02-23" +msgstr "" + +#: ../../../CHANGELOG.md:124 +msgid "The playbook defaults to exposing the Coturn STUN port (3478) over UDP once again" +msgstr "" + +#: ../../../CHANGELOG.md:126 +msgid "Recently, we made the playbook [default to exposing the Coturn STUN port (3478) only over TCP](#the-playbook-now-defaults-to-exposing-the-coturn-stun-port-3478-only-over-tcp) to reduce the severity of DDoS amplification/reflection attacks." +msgstr "" + +#: ../../../CHANGELOG.md:128 +msgid "It seems like old Element clients on mobile devices only support talking to the STUN port over UDP, not TCP. To accommodate such ancient clients, we're now **reversing this change** and **defaulting to exposing the Coturn STUN port (3478) over UDP once again**." +msgstr "" + +#: ../../../CHANGELOG.md:131 +msgid "In light of this new information, you have 2 options:" +msgstr "" + +#: ../../../CHANGELOG.md:133 +msgid "**If you already adapted to the previous change and would like to adapt to this change one again**:" +msgstr "" + +#: ../../../CHANGELOG.md:135 +msgid "make sure the `3478/udp` port is whitelisted in your external firewall (if you have one) once again." +msgstr "" + +#: ../../../CHANGELOG.md:137 +msgid "**If you don't care about old Element clients and wish to reduce the severity of DDoS amplification/reflection attacks**:" +msgstr "" + +#: ../../../CHANGELOG.md:139 +msgid "Consider closing the STUN/UDP port with the following configuration:" +msgstr "" + +#: ../../../CHANGELOG.md:145 +msgid "Consider keeping `3478/udp` blocked in your external firewall (if you have one)" +msgstr "" + +#: ../../../CHANGELOG.md:147 +msgid "2025-02-21" +msgstr "" + +#: ../../../CHANGELOG.md:149 +msgid "Docker daemon options are no longer adjusted when IPv6 is enabled" +msgstr "" + +#: ../../../CHANGELOG.md:151 +msgid "We landed [initial IPv6 support](#initial-work-on-ipv6-support) in the past via a `devture_systemd_docker_base_ipv6_enabled` variable that one had to toggle to `true`." +msgstr "" + +#: ../../../CHANGELOG.md:153 +msgid "This variable did **2 different things at once**:" +msgstr "" + +#: ../../../CHANGELOG.md:155 +msgid "ensured that container networks were created with IPv6 being enabled" +msgstr "" + +#: ../../../CHANGELOG.md:156 +msgid "adjusted the Docker daemon's configuration to set `experimental: true` and `ip6tables: true` (a necessary prerequisite for creating IPv6-enabled networks)" +msgstr "" + +#: ../../../CHANGELOG.md:158 +msgid "Since Docker 27.0.1's [changes to how it handles IPv6](https://docs.docker.com/engine/release-notes/27/#ipv6), **adjusting the Docker daemon's configuration is no longer necessary**, because:" +msgstr "" + +#: ../../../CHANGELOG.md:159 +msgid "`ip6tables` defaults to `true` for everyone" +msgstr "" + +#: ../../../CHANGELOG.md:160 +msgid "`ip6tables` is out of the experimental phase, so `experimental` is no longer necessary" +msgstr "" + +#: ../../../CHANGELOG.md:162 +msgid "In light of this, we're introducing a new variable (`devture_systemd_docker_base_ipv6_daemon_options_changing_enabled`) for controlling if IPv6 should be force-enabled in the Docker daemon's configuration options. Since most people should be on a modern enough Docker daemon version which doesn't require such changes, this variable defaults to `false`." +msgstr "" + +#: ../../../CHANGELOG.md:165 +msgid "This change affects you like this:" +msgstr "" + +#: ../../../CHANGELOG.md:167 +msgid "✅ if you're **not explicitly enabling IPv6** (via `devture_systemd_docker_base_ipv6_enabled` in your configuration): you're unaffected" +msgstr "" + +#: ../../../CHANGELOG.md:168 +msgid "❓ if you're **explicitly enabling IPv6** (via `devture_systemd_docker_base_ipv6_enabled` in your configuration):" +msgstr "" + +#: ../../../CHANGELOG.md:169 +msgid "✅ .. and you're on a modern enough Docker version (which you most likely are): the playbook will no longer mess with your Docker daemon options. You're unaffected." +msgstr "" + +#: ../../../CHANGELOG.md:170 +msgid "🔧 .. and you're on an old Docker version, you **are affected** and need to use the following configuration to restore the old behavior:" +msgstr "" + +#: ../../../CHANGELOG.md:181 +msgid "Support for bridging to Bluesky via mautrix-bluesky" +msgstr "" + +#: ../../../CHANGELOG.md:183 +msgid "Thanks to [Zepmann](https://github.com/Zepmann), the playbook now supports bridging to [Bluesky](https://bsky.app/) via [mautrix-bluesky](https://github.com/mautrix/bluesky)." +msgstr "" + +#: ../../../CHANGELOG.md:185 +msgid "To learn more, see our [Setting up mautrix-bluesky](./docs/configuring-playbook-bridge-mautrix-bluesky.md) documentation page." +msgstr "" + +#: ../../../CHANGELOG.md:188 +msgid "2025-02-19" +msgstr "" + +#: ../../../CHANGELOG.md:190 +msgid "The playbook now defaults to exposing the Coturn STUN port (3478) only over TCP" +msgstr "" + +#: ../../../CHANGELOG.md:192 +msgid "We've previously done some work to **decrease the severity** of DDoS amplification attacks done through the [Coturn](./docs/configuring-playbook-turn.md)'s STUN port (2.8x -> 1.6x) as reported in [coturn: Lower DDoS amplification/reflection factor from 2.8 to 1.6 #2592](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2592)." +msgstr "" + +#: ../../../CHANGELOG.md:194 +msgid "To **completely eliminate the problem** of DDoS amplification attacks done through the [Coturn](./docs/configuring-playbook-turn.md) STUN port even further (read more about this in [this article](https://stormwall.network/resources/blog/protect-against-ddos-based-on-stun-exploit)), the playbook now **disables exposure of the Coturn STUN port (`3478`) over UDP**. This is a bit heavy-handed, but is probably the only way to completely eliminate the problem." +msgstr "" + +#: ../../../CHANGELOG.md:196 +msgid "The playbook now **only exposes the Coturn STUN port (`3478`) over TCP by default**." +msgstr "" + +#: ../../../CHANGELOG.md:198 +msgid "💡 Users may wish to further remove the (now unnecessary) firewall rule allowing access to `3478/udp`." +msgstr "" + +#: ../../../CHANGELOG.md:200 +msgid "If you'd like the Coturn STUN port to be exposed over UDP like before, you can revert to the previous behavior by using the following configuration in your `vars.yml` file:" +msgstr "" + +#: ../../../CHANGELOG.md:206 +msgid "[!WARNING] People running Coturn directly on the `host` network (using `matrix_coturn_container_network: host`) will still have the STUN port exposed over UDP, as port exposure is done directly via Coturn and not via Docker. In such cases, the playbook cannot prevent `3478/udp` port exposure and you'd need to do it in another way (separate firewall rule, etc)." +msgstr "" + +#: ../../../CHANGELOG.md:210 +msgid "2025-02-17" +msgstr "" + +#: ../../../CHANGELOG.md:212 +msgid "FluffyChat Web support" +msgstr "" + +#: ../../../CHANGELOG.md:214 +msgid "Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook now supports [FluffyChat Web](https://github.com/krille-chan/fluffychat) as an additional Matrix client you can self-host." +msgstr "" + +#: ../../../CHANGELOG.md:216 +msgid "To learn more, see our [Setting up FluffyChat Web](docs/configuring-playbook-client-fluffychat-web.md) documentation page." +msgstr "" + +#: ../../../CHANGELOG.md:219 +msgid "2025-02-03" +msgstr "" + +#: ../../../CHANGELOG.md:221 +msgid "The mautrix-hangouts bridge has been removed from the playbook" +msgstr "" + +#: ../../../CHANGELOG.md:223 +msgid "The [mautrix-hangouts](./docs/configuring-playbook-bridge-mautrix-hangouts.md) bridge has been deprecated in the playbook since December 2024 and finally got completely removed from the playbook in February 2025." +msgstr "" + +#: ../../../CHANGELOG.md:225 +msgid "This is because Google Hangouts has been discontinued since the 1st of November 2022." +msgstr "" + +#: ../../../CHANGELOG.md:227 +msgid "The playbook will let you know if you're using any `matrix_mautrix_hangouts_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bridge manually](./docs/configuring-playbook-bridge-mautrix-hangouts.md#uninstalling-the-bridge-manually)." +msgstr "" + +#: ../../../CHANGELOG.md:230 +msgid "2025-01-27" +msgstr "" + +#: ../../../CHANGELOG.md:232 +msgid "Redis and KeyDB are no longer part of the playbook" +msgstr "" + +#: ../../../CHANGELOG.md:234 +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 defining `redis_*` or `keydb_*` variables will need to update their configuration to use `valkey_*` variables instead." +msgstr "" + +#: ../../../CHANGELOG.md:236 +msgid "The playbook has gone through several iterations of memorystore implementations:" +msgstr "" + +#: ../../../CHANGELOG.md:238 +msgid "It initially used Redis, auto-installing it when needed by features/services" +msgstr "" + +#: ../../../CHANGELOG.md:239 +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:240 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 +#: ../../../CHANGELOG.md:242 msgid "To reduce configuration complexity and maintenance overhead, we are now:" msgstr "" -#: ../../../CHANGELOG.md:15 +#: ../../../CHANGELOG.md:244 msgid "removing Redis and KeyDB support entirely" msgstr "" -#: ../../../CHANGELOG.md:16 +#: ../../../CHANGELOG.md:245 msgid "using Valkey as the sole Redis-compatible memorystore implementation" msgstr "" -#: ../../../CHANGELOG.md:18 +#: ../../../CHANGELOG.md:247 msgid "To update your configuration:" msgstr "" -#: ../../../CHANGELOG.md:20 +#: ../../../CHANGELOG.md:249 msgid "**Most users** don't need to do anything" msgstr "" -#: ../../../CHANGELOG.md:21 +#: ../../../CHANGELOG.md:250 msgid "**Users that were explicitly sticking to Redis/KeyDB** need to update their `vars.yml` to use `valkey_*` variables instead" msgstr "" -#: ../../../CHANGELOG.md:24 +#: ../../../CHANGELOG.md:253 msgid "2025-01-19" msgstr "" -#: ../../../CHANGELOG.md:26 +#: ../../../CHANGELOG.md:255 msgid "conduwuit support" msgstr "" -#: ../../../CHANGELOG.md:28 +#: ../../../CHANGELOG.md:257 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 +#: ../../../CHANGELOG.md:259 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 "Existing installations do **not** need to be updated. **Synapse is still the default homeserver implementation** installed by the playbook." -msgstr "" - -#: ../../../CHANGELOG.md:34 +#: ../../../CHANGELOG.md:263 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 +#: ../../../CHANGELOG.md:265 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 +#: ../../../CHANGELOG.md:268 msgid "2025-01-14" msgstr "" -#: ../../../CHANGELOG.md:41 +#: ../../../CHANGELOG.md:270 msgid "(Backward Compatibility Break) Synapse v1.122.0 requires Postgres v13" msgstr "" -#: ../../../CHANGELOG.md:43 +#: ../../../CHANGELOG.md:272 msgid "The Synapse homeserver [requires Postgres v13 or newer](https://github.com/element-hq/synapse/issues/18034)." msgstr "" -#: ../../../CHANGELOG.md:45 +#: ../../../CHANGELOG.md:274 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 +#: ../../../CHANGELOG.md:276 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 +#: ../../../CHANGELOG.md:278 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 +#: ../../../CHANGELOG.md:280 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 +#: ../../../CHANGELOG.md:288 msgid "2024-11-26" msgstr "" -#: ../../../CHANGELOG.md:61 +#: ../../../CHANGELOG.md:290 msgid "(Backward Compatibility Break) Synapse now defaults to enabling authenticated media" msgstr "" -#: ../../../CHANGELOG.md:63 +#: ../../../CHANGELOG.md:292 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 +#: ../../../CHANGELOG.md:294 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 +#: ../../../CHANGELOG.md:296 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 +#: ../../../CHANGELOG.md:298 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 +#: ../../../CHANGELOG.md:300 msgid "We're changing the playbook configuration for authenticated media to keep up with upstream defaults changing." msgstr "" -#: ../../../CHANGELOG.md:73 +#: ../../../CHANGELOG.md:302 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 +#: ../../../CHANGELOG.md:304 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 +#: ../../../CHANGELOG.md:307 msgid "2024-11-23" msgstr "" -#: ../../../CHANGELOG.md:80 +#: ../../../CHANGELOG.md:309 msgid "(Backward Compatibility Break) The playbook now defaults to Valkey, instead of KeyDB" msgstr "" -#: ../../../CHANGELOG.md:82 +#: ../../../CHANGELOG.md:311 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 +#: ../../../CHANGELOG.md:313 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 +#: ../../../CHANGELOG.md:315 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 +#: ../../../CHANGELOG.md:317 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 +#: ../../../CHANGELOG.md:319 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 +#: ../../../CHANGELOG.md:321 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 +#: ../../../CHANGELOG.md:323 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:96 -#: ../../../CHANGELOG.md:436 +#: ../../../CHANGELOG.md:325 +#: ../../../CHANGELOG.md:665 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:107 +#: ../../../CHANGELOG.md:336 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:117 +#: ../../../CHANGELOG.md:346 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:120 +#: ../../../CHANGELOG.md:349 msgid "2024-11-14" msgstr "" -#: ../../../CHANGELOG.md:122 +#: ../../../CHANGELOG.md:351 msgid "HTTP-compression support for Traefik-based setups" msgstr "" -#: ../../../CHANGELOG.md:124 +#: ../../../CHANGELOG.md:353 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:126 +#: ../../../CHANGELOG.md:355 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:128 +#: ../../../CHANGELOG.md:357 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:130 +#: ../../../CHANGELOG.md:359 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:132 +#: ../../../CHANGELOG.md:361 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:134 +#: ../../../CHANGELOG.md:363 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:135 +#: ../../../CHANGELOG.md:364 msgid "setting `matrix_playbook_reverse_proxy_traefik_middleware_compression_enabled` to `true`" msgstr "" -#: ../../../CHANGELOG.md:136 +#: ../../../CHANGELOG.md:365 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:138 +#: ../../../CHANGELOG.md:367 msgid "Timeout adjustments for Traefik-based setups" msgstr "" -#: ../../../CHANGELOG.md:140 +#: ../../../CHANGELOG.md:369 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:142 +#: ../../../CHANGELOG.md:371 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:144 +#: ../../../CHANGELOG.md:373 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:146 +#: ../../../CHANGELOG.md:375 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:148 +#: ../../../CHANGELOG.md:377 msgid "Example of the default timeout values used by the playbook:" msgstr "" -#: ../../../CHANGELOG.md:159 +#: ../../../CHANGELOG.md:388 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:162 +#: ../../../CHANGELOG.md:391 msgid "2024-11-08" msgstr "" -#: ../../../CHANGELOG.md:164 +#: ../../../CHANGELOG.md:393 msgid "Support for synapse-admin auto-configuration via /.well-known/matrix/client" msgstr "" -#: ../../../CHANGELOG.md:166 +#: ../../../CHANGELOG.md:395 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:168 +#: ../../../CHANGELOG.md:397 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:170 +#: ../../../CHANGELOG.md:399 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:173 +#: ../../../CHANGELOG.md:402 msgid "2024-10-28" msgstr "" -#: ../../../CHANGELOG.md:175 +#: ../../../CHANGELOG.md:404 msgid "(BC Break) Postmoogle's variable names need adjustments" msgstr "" -#: ../../../CHANGELOG.md:177 +#: ../../../CHANGELOG.md:406 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:179 +#: ../../../CHANGELOG.md:408 msgid "2024-10-19" msgstr "" -#: ../../../CHANGELOG.md:181 +#: ../../../CHANGELOG.md:410 msgid "Support for Matrix Authentication Service" msgstr "" -#: ../../../CHANGELOG.md:183 +#: ../../../CHANGELOG.md:412 msgid "The playbook now supports installing and configuring [Matrix Authentication Service](./docs/configuring-playbook-matrix-authentication-service.md) (MAS)." msgstr "" -#: ../../../CHANGELOG.md:185 +#: ../../../CHANGELOG.md:414 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:187 +#: ../../../CHANGELOG.md:416 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:189 +#: ../../../CHANGELOG.md:418 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:192 +#: ../../../CHANGELOG.md:421 msgid "2024-09-27" msgstr "" -#: ../../../CHANGELOG.md:194 +#: ../../../CHANGELOG.md:423 msgid "(BC Break) Postgres & Traefik roles have been relocated and variable names need adjustments" msgstr "" -#: ../../../CHANGELOG.md:196 +#: ../../../CHANGELOG.md:425 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:198 +#: ../../../CHANGELOG.md:427 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:200 +#: ../../../CHANGELOG.md:429 msgid "You need to do the following replacements:" msgstr "" -#: ../../../CHANGELOG.md:202 +#: ../../../CHANGELOG.md:431 msgid "`devture_postgres_` -> `postgres_`" msgstr "" -#: ../../../CHANGELOG.md:203 +#: ../../../CHANGELOG.md:432 msgid "`devture_traefik_` -> `traefik_`" msgstr "" -#: ../../../CHANGELOG.md:205 +#: ../../../CHANGELOG.md:434 msgid "As always, the playbook would let you know about this and point out any variables you may have missed." msgstr "" -#: ../../../CHANGELOG.md:208 +#: ../../../CHANGELOG.md:437 msgid "2024-09-12" msgstr "" -#: ../../../CHANGELOG.md:210 +#: ../../../CHANGELOG.md:439 msgid "Support for baibot" msgstr "" -#: ../../../CHANGELOG.md:212 +#: ../../../CHANGELOG.md:441 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:214 +#: ../../../CHANGELOG.md:443 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:216 +#: ../../../CHANGELOG.md:445 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:218 +#: ../../../CHANGELOG.md:447 msgid "To get started, see the [Setting up baibot](./docs/configuring-playbook-bot-baibot.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:220 +#: ../../../CHANGELOG.md:449 msgid "Switching synapse-admin to etke.cc's fork" msgstr "" -#: ../../../CHANGELOG.md:222 +#: ../../../CHANGELOG.md:451 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:224 +#: ../../../CHANGELOG.md:453 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:226 +#: ../../../CHANGELOG.md:455 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:228 +#: ../../../CHANGELOG.md:457 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:241 +#: ../../../CHANGELOG.md:470 msgid "2024-08-17" msgstr "" -#: ../../../CHANGELOG.md:243 +#: ../../../CHANGELOG.md:472 msgid "New appservice-double-puppet service for better double-puppeting" msgstr "" -#: ../../../CHANGELOG.md:245 +#: ../../../CHANGELOG.md:474 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:247 +#: ../../../CHANGELOG.md:476 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:249 +#: ../../../CHANGELOG.md:478 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:251 +#: ../../../CHANGELOG.md:480 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:253 +#: ../../../CHANGELOG.md:482 msgid "We recommend **enabling double-puppeting via the new Appservice method** by adding the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../CHANGELOG.md:259 +#: ../../../CHANGELOG.md:488 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:261 +#: ../../../CHANGELOG.md:490 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:264 +#: ../../../CHANGELOG.md:493 msgid "2024-08-15" msgstr "" -#: ../../../CHANGELOG.md:266 +#: ../../../CHANGELOG.md:495 msgid "matrix-media-repo now configured for Authenticated Media" msgstr "" -#: ../../../CHANGELOG.md:268 +#: ../../../CHANGELOG.md:497 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:270 +#: ../../../CHANGELOG.md:499 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:272 +#: ../../../CHANGELOG.md:501 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:274 +#: ../../../CHANGELOG.md:503 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:277 +#: ../../../CHANGELOG.md:506 msgid "2024-08-08" msgstr "" -#: ../../../CHANGELOG.md:279 +#: ../../../CHANGELOG.md:508 msgid "(Backward Compatibility Break) matrix-corporal has been upgraded to v3" msgstr "" -#: ../../../CHANGELOG.md:281 +#: ../../../CHANGELOG.md:510 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:283 +#: ../../../CHANGELOG.md:512 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:285 +#: ../../../CHANGELOG.md:514 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:291 +#: ../../../CHANGELOG.md:520 msgid "2024-07-25" msgstr "" -#: ../../../CHANGELOG.md:293 +#: ../../../CHANGELOG.md:522 msgid "synapse-usage-exporter support" msgstr "" -#: ../../../CHANGELOG.md:295 +#: ../../../CHANGELOG.md:524 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:297 +#: ../../../CHANGELOG.md:526 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:300 +#: ../../../CHANGELOG.md:529 msgid "2024-07-06" msgstr "" -#: ../../../CHANGELOG.md:302 +#: ../../../CHANGELOG.md:531 msgid "matrix-alertmanager-receiver support" msgstr "" -#: ../../../CHANGELOG.md:304 +#: ../../../CHANGELOG.md:533 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:306 +#: ../../../CHANGELOG.md:535 msgid "See [Setting up Prometheus Alertmanager integration via matrix-alertmanager-receiver](./docs/configuring-playbook-alertmanager-receiver.md) for more details." msgstr "" -#: ../../../CHANGELOG.md:308 +#: ../../../CHANGELOG.md:537 msgid "Traefik v3 and HTTP/3 are here now" msgstr "" -#: ../../../CHANGELOG.md:310 +#: ../../../CHANGELOG.md:539 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:312 +#: ../../../CHANGELOG.md:541 msgid "Traefik v3" msgstr "" -#: ../../../CHANGELOG.md:314 +#: ../../../CHANGELOG.md:543 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:316 +#: ../../../CHANGELOG.md:545 msgid "We have **updated the playbook to Traefik v3** (make sure to run `just roles` / `make roles` to get it)." msgstr "" -#: ../../../CHANGELOG.md:318 +#: ../../../CHANGELOG.md:547 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:320 +#: ../../../CHANGELOG.md:549 msgid "**Most people using the playbook should not have to do any changes**." msgstr "" -#: ../../../CHANGELOG.md:322 +#: ../../../CHANGELOG.md:551 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:324 +#: ../../../CHANGELOG.md:553 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:326 +#: ../../../CHANGELOG.md:555 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:328 +#: ../../../CHANGELOG.md:557 msgid "HTTP/3 is enabled by default" msgstr "" -#: ../../../CHANGELOG.md:330 +#: ../../../CHANGELOG.md:559 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:332 +#: ../../../CHANGELOG.md:561 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:334 +#: ../../../CHANGELOG.md:563 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:336 +#: ../../../CHANGELOG.md:565 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:338 +#: ../../../CHANGELOG.md:567 msgid "To **disable HTTP/3**, you can use the following configuration:" msgstr "" -#: ../../../CHANGELOG.md:352 +#: ../../../CHANGELOG.md:581 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:365 +#: ../../../CHANGELOG.md:594 msgid "2024-07-01" msgstr "" -#: ../../../CHANGELOG.md:367 +#: ../../../CHANGELOG.md:596 msgid "synapse-admin is now restricted to your homeserver's URL by default" msgstr "" -#: ../../../CHANGELOG.md:369 +#: ../../../CHANGELOG.md:598 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:371 +#: ../../../CHANGELOG.md:600 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:373 +#: ../../../CHANGELOG.md:602 msgid "If you'd like **to go back to the old unrestricted behavior**, use the following configuration:" msgstr "" -#: ../../../CHANGELOG.md:381 +#: ../../../CHANGELOG.md:610 msgid "2024-06-25" msgstr "" -#: ../../../CHANGELOG.md:383 +#: ../../../CHANGELOG.md:612 msgid "The URL-prefix for Hookshot generic webhooks has changed" msgstr "" -#: ../../../CHANGELOG.md:385 +#: ../../../CHANGELOG.md:614 msgid "Until now, generic Hookshot webhook URLs looked like this: `https://matrix.example.com/hookshot/webhooks/:hookId`." msgstr "" -#: ../../../CHANGELOG.md:387 +#: ../../../CHANGELOG.md:616 msgid "The `/hookshot/webhooks` common prefix gets stripped by Traefik automatically, so Hookshot only sees the part that comes after (`/:hookId`)." msgstr "" -#: ../../../CHANGELOG.md:389 +#: ../../../CHANGELOG.md:618 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:391 +#: ../../../CHANGELOG.md:620 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:393 +#: ../../../CHANGELOG.md:622 msgid "When generating new webhooks, you should start seeing the new URLs being used." msgstr "" -#: ../../../CHANGELOG.md:395 +#: ../../../CHANGELOG.md:624 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:397 +#: ../../../CHANGELOG.md:626 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:400 +#: ../../../CHANGELOG.md:629 msgid "2024-06-22" msgstr "" -#: ../../../CHANGELOG.md:402 +#: ../../../CHANGELOG.md:631 msgid "The maubot user is now managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:404 +#: ../../../CHANGELOG.md:633 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:406 +#: ../../../CHANGELOG.md:635 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:408 +#: ../../../CHANGELOG.md:637 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:411 +#: ../../../CHANGELOG.md:640 msgid "2024-06-03" msgstr "" -#: ../../../CHANGELOG.md:413 +#: ../../../CHANGELOG.md:642 msgid "WeChat bridging support" msgstr "" -#: ../../../CHANGELOG.md:415 +#: ../../../CHANGELOG.md:644 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:417 +#: ../../../CHANGELOG.md:646 msgid "See our [Setting up WeChat bridging](docs/configuring-playbook-bridge-wechat.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:420 +#: ../../../CHANGELOG.md:649 msgid "2024-03-26" msgstr "" -#: ../../../CHANGELOG.md:422 +#: ../../../CHANGELOG.md:651 msgid "(Backward Compatibility Break) The playbook now defaults to KeyDB, instead of Redis" msgstr "" -#: ../../../CHANGELOG.md:424 +#: ../../../CHANGELOG.md:653 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:426 +#: ../../../CHANGELOG.md:655 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:428 +#: ../../../CHANGELOG.md:657 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:430 +#: ../../../CHANGELOG.md:659 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:432 +#: ../../../CHANGELOG.md:661 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:434 +#: ../../../CHANGELOG.md:663 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:445 +#: ../../../CHANGELOG.md:674 msgid "2024-03-24" msgstr "" -#: ../../../CHANGELOG.md:447 +#: ../../../CHANGELOG.md:676 msgid "Initial work on IPv6 support" msgstr "" -#: ../../../CHANGELOG.md:449 +#: ../../../CHANGELOG.md:678 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:451 +#: ../../../CHANGELOG.md:680 msgid "It should be noted that:" msgstr "" -#: ../../../CHANGELOG.md:453 +#: ../../../CHANGELOG.md:682 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:454 +#: ../../../CHANGELOG.md:683 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:455 +#: ../../../CHANGELOG.md:684 msgid "this is all very new and untested" msgstr "" -#: ../../../CHANGELOG.md:457 +#: ../../../CHANGELOG.md:686 msgid "Pantalaimon support" msgstr "" -#: ../../../CHANGELOG.md:459 +#: ../../../CHANGELOG.md:688 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:461 +#: ../../../CHANGELOG.md:690 msgid "See our [Setting up Pantalaimon](docs/configuring-playbook-pantalaimon.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:464 +#: ../../../CHANGELOG.md:693 msgid "2024-03-05" msgstr "" -#: ../../../CHANGELOG.md:466 +#: ../../../CHANGELOG.md:695 msgid "Support for Draupnir-for-all" msgstr "" -#: ../../../CHANGELOG.md:468 +#: ../../../CHANGELOG.md:697 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:470 +#: ../../../CHANGELOG.md:699 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:472 +#: ../../../CHANGELOG.md:701 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:475 +#: ../../../CHANGELOG.md:704 msgid "2024-02-19" msgstr "" -#: ../../../CHANGELOG.md:477 +#: ../../../CHANGELOG.md:706 msgid "Support for bridging to Facebook/Messenger via the new mautrix-meta bridge" msgstr "" -#: ../../../CHANGELOG.md:479 +#: ../../../CHANGELOG.md:708 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:481 +#: ../../../CHANGELOG.md:710 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:483 +#: ../../../CHANGELOG.md:712 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:485 +#: ../../../CHANGELOG.md:714 msgid "[Setting up Instagram bridging via Mautrix Meta](docs/configuring-playbook-bridge-mautrix-meta-instagram.md)" msgstr "" -#: ../../../CHANGELOG.md:487 +#: ../../../CHANGELOG.md:716 msgid "[Setting up Messenger bridging via Mautrix Meta](docs/configuring-playbook-bridge-mautrix-meta-messenger.md)" msgstr "" -#: ../../../CHANGELOG.md:489 +#: ../../../CHANGELOG.md:718 msgid "The documentation pages contain more information on how to migrate." msgstr "" -#: ../../../CHANGELOG.md:492 +#: ../../../CHANGELOG.md:721 msgid "2024-02-14" msgstr "" -#: ../../../CHANGELOG.md:494 +#: ../../../CHANGELOG.md:723 msgid "Much larger Synapse caches and cache auto-tuning enabled by default" msgstr "" -#: ../../../CHANGELOG.md:496 +#: ../../../CHANGELOG.md:725 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:498 +#: ../../../CHANGELOG.md:727 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:500 +#: ../../../CHANGELOG.md:729 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:502 +#: ../../../CHANGELOG.md:731 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:503 +#: ../../../CHANGELOG.md:732 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:504 +#: ../../../CHANGELOG.md:733 msgid "`matrix_synapse_cache_autotuning_min_cache_ttl` — defaults to `30s`" msgstr "" -#: ../../../CHANGELOG.md:506 +#: ../../../CHANGELOG.md:735 msgid "These values should be good defaults for most servers, but may change over time as we experiment further." msgstr "" -#: ../../../CHANGELOG.md:508 +#: ../../../CHANGELOG.md:737 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:511 +#: ../../../CHANGELOG.md:740 msgid "2024-01-31" msgstr "" -#: ../../../CHANGELOG.md:513 +#: ../../../CHANGELOG.md:742 msgid "(Backward-compatibility break) Minor changes necessary for some people serving a static website at the base domain" msgstr "" -#: ../../../CHANGELOG.md:515 +#: ../../../CHANGELOG.md:744 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:517 +#: ../../../CHANGELOG.md:746 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:519 +#: ../../../CHANGELOG.md:748 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:522 +#: ../../../CHANGELOG.md:751 msgid "2024-01-20" msgstr "" -#: ../../../CHANGELOG.md:524 +#: ../../../CHANGELOG.md:753 msgid "Support for more efficient (specialized) Synapse workers" msgstr "" -#: ../../../CHANGELOG.md:526 +#: ../../../CHANGELOG.md:755 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:528 +#: ../../../CHANGELOG.md:757 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:530 +#: ../../../CHANGELOG.md:759 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:532 +#: ../../../CHANGELOG.md:761 msgid "To get started, refer to our [Specialized workers](./docs/configuring-playbook-synapse.md#specialized-workers) documentation section." msgstr "" -#: ../../../CHANGELOG.md:535 +#: ../../../CHANGELOG.md:764 msgid "2024-01-17" msgstr "" -#: ../../../CHANGELOG.md:537 +#: ../../../CHANGELOG.md:766 msgid "Switching to Element's AGPLv3-licensed Synapse release" msgstr "" -#: ../../../CHANGELOG.md:539 +#: ../../../CHANGELOG.md:768 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:541 +#: ../../../CHANGELOG.md:770 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:542 +#: ../../../CHANGELOG.md:771 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:544 +#: ../../../CHANGELOG.md:773 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:546 +#: ../../../CHANGELOG.md:775 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:548 +#: ../../../CHANGELOG.md:777 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:550 +#: ../../../CHANGELOG.md:779 msgid "**What does this mean to you?**" msgstr "" -#: ../../../CHANGELOG.md:552 +#: ../../../CHANGELOG.md:781 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:554 +#: ../../../CHANGELOG.md:783 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:556 +#: ../../../CHANGELOG.md:785 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: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:" +#: ../../../CHANGELOG.md:787 +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 introducing a new Ansible variable. You can do it like this:" msgstr "" -#: ../../../CHANGELOG.md:570 +#: ../../../CHANGELOG.md:799 msgid "Notes:" msgstr "" -#: ../../../CHANGELOG.md:572 +#: ../../../CHANGELOG.md:801 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:574 +#: ../../../CHANGELOG.md:803 msgid "running an outdated homeserver exposes you to security issues and incompatibilities. Only consider doing this as a short-term solution." msgstr "" -#: ../../../CHANGELOG.md:576 +#: ../../../CHANGELOG.md:805 msgid "2024-01-16" msgstr "" -#: ../../../CHANGELOG.md:578 +#: ../../../CHANGELOG.md:807 msgid "`Draupnir` has been relicensed to AFL-3.0" msgstr "" -#: ../../../CHANGELOG.md:580 +#: ../../../CHANGELOG.md:809 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:582 +#: ../../../CHANGELOG.md:811 msgid "2024-01-15" msgstr "" -#: ../../../CHANGELOG.md:584 +#: ../../../CHANGELOG.md:813 msgid "Goodbye, `matrix-nginx-proxy` 🪦" msgstr "" -#: ../../../CHANGELOG.md:586 +#: ../../../CHANGELOG.md:815 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:588 +#: ../../../CHANGELOG.md:817 msgid "Backstory on `matrix-nginx-proxy`" msgstr "" -#: ../../../CHANGELOG.md:590 +#: ../../../CHANGELOG.md:819 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:592 +#: ../../../CHANGELOG.md:821 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:594 +#: ../../../CHANGELOG.md:823 msgid "To us, `matrix-nginx-proxy` was:" msgstr "" -#: ../../../CHANGELOG.md:596 +#: ../../../CHANGELOG.md:825 msgid "an [nginx](https://nginx.org/)-based reverse-proxy" msgstr "" -#: ../../../CHANGELOG.md:597 +#: ../../../CHANGELOG.md:826 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:598 +#: ../../../CHANGELOG.md:827 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:599 +#: ../../../CHANGELOG.md:828 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:600 +#: ../../../CHANGELOG.md:829 msgid "a webserver for serving the `/.well-known/matrix` static files (generated by the `matrix-base` role until now)" msgstr "" -#: ../../../CHANGELOG.md:601 +#: ../../../CHANGELOG.md:830 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:602 +#: ../../../CHANGELOG.md:831 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:604 +#: ../../../CHANGELOG.md:833 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:606 +#: ../../../CHANGELOG.md:835 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:608 +#: ../../../CHANGELOG.md:837 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:610 +#: ../../../CHANGELOG.md:839 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:612 +#: ../../../CHANGELOG.md:841 msgid "Going Traefik-native and cutting out all middlemen" msgstr "" -#: ../../../CHANGELOG.md:614 +#: ../../../CHANGELOG.md:843 msgid "In our new setup, you'll see the bare minimum number of reverse-proxies." msgstr "" -#: ../../../CHANGELOG.md:616 +#: ../../../CHANGELOG.md:845 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:618 +#: ../../../CHANGELOG.md:847 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:620 +#: ../../../CHANGELOG.md:849 msgid "Traefik now has an extra job" msgstr "" -#: ../../../CHANGELOG.md:622 +#: ../../../CHANGELOG.md:851 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:624 +#: ../../../CHANGELOG.md:853 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:626 +#: ../../../CHANGELOG.md:855 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:628 +#: ../../../CHANGELOG.md:857 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:630 +#: ../../../CHANGELOG.md:859 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:632 +#: ../../../CHANGELOG.md:861 msgid "Traefik serving this second purpose has a few downsides:" msgstr "" -#: ../../../CHANGELOG.md:634 +#: ../../../CHANGELOG.md:863 msgid "Traefik becomes a runtime dependency for all homeserver-dependant container services" msgstr "" -#: ../../../CHANGELOG.md:635 +#: ../../../CHANGELOG.md:864 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:637 +#: ../../../CHANGELOG.md:866 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:639 +#: ../../../CHANGELOG.md:868 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: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." +#: ../../../CHANGELOG.md:870 +msgid "**People running 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:643 +#: ../../../CHANGELOG.md:872 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:645 +#: ../../../CHANGELOG.md:874 msgid "People managing their own Traefik instance need to do minor changes" msgstr "" -#: ../../../CHANGELOG.md:647 +#: ../../../CHANGELOG.md:876 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:649 +#: ../../../CHANGELOG.md:878 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:651 +#: ../../../CHANGELOG.md:880 msgid "People fronting Traefik with another reverse proxy need to do minor changes" msgstr "" -#: ../../../CHANGELOG.md:653 +#: ../../../CHANGELOG.md:882 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:655 +#: ../../../CHANGELOG.md:884 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:657 +#: ../../../CHANGELOG.md:886 msgid "Supported reverse proxy types are now fewer" msgstr "" -#: ../../../CHANGELOG.md:659 +#: ../../../CHANGELOG.md:888 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:661 +#: ../../../CHANGELOG.md:890 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:663 +#: ../../../CHANGELOG.md:892 msgid "The complexity of this is too high, so we only support 3 values right now:" msgstr "" -#: ../../../CHANGELOG.md:665 +#: ../../../CHANGELOG.md:894 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:666 +#: ../../../CHANGELOG.md:895 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:667 +#: ../../../CHANGELOG.md:896 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:669 +#: ../../../CHANGELOG.md:898 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:671 +#: ../../../CHANGELOG.md:900 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:673 +#: ../../../CHANGELOG.md:902 msgid "If you were using these values as a way to stay away from Traefik, you now have 2 options:" msgstr "" -#: ../../../CHANGELOG.md:675 +#: ../../../CHANGELOG.md:904 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:676 +#: ../../../CHANGELOG.md:905 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:678 +#: ../../../CHANGELOG.md:907 msgid "Container networking changes" msgstr "" -#: ../../../CHANGELOG.md:680 +#: ../../../CHANGELOG.md:909 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: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." +#: ../../../CHANGELOG.md:911 +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:684 +#: ../../../CHANGELOG.md:913 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:686 +#: ../../../CHANGELOG.md:915 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:688 +#: ../../../CHANGELOG.md:917 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:690 +#: ../../../CHANGELOG.md:919 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:692 +#: ../../../CHANGELOG.md:921 msgid "Metrics exposure changes" msgstr "" -#: ../../../CHANGELOG.md:694 +#: ../../../CHANGELOG.md:923 msgid "This section is for people who are exposing monitoring metrics publicly, to be consumed by an external Prometheus server." msgstr "" -#: ../../../CHANGELOG.md:696 +#: ../../../CHANGELOG.md:925 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:698 +#: ../../../CHANGELOG.md:927 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:700 +#: ../../../CHANGELOG.md:929 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:702 +#: ../../../CHANGELOG.md:931 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:704 +#: ../../../CHANGELOG.md:933 msgid "Matrix static files" msgstr "" -#: ../../../CHANGELOG.md:706 +#: ../../../CHANGELOG.md:935 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:708 +#: ../../../CHANGELOG.md:937 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:710 +#: ../../../CHANGELOG.md:939 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:712 +#: ../../../CHANGELOG.md:941 msgid "A note on performance" msgstr "" -#: ../../../CHANGELOG.md:714 +#: ../../../CHANGELOG.md:943 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:716 +#: ../../../CHANGELOG.md:945 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:718 +#: ../../../CHANGELOG.md:947 msgid "We believe that using Traefik provides way too many benefits to worry about this minor performance impairment." msgstr "" -#: ../../../CHANGELOG.md:720 +#: ../../../CHANGELOG.md:949 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:722 +#: ../../../CHANGELOG.md:951 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:724 +#: ../../../CHANGELOG.md:953 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:726 +#: ../../../CHANGELOG.md:955 msgid "Migration procedure" msgstr "" -#: ../../../CHANGELOG.md:728 +#: ../../../CHANGELOG.md:957 msgid "The updated playbook will automatically perform some migration tasks for you:" msgstr "" -#: ../../../CHANGELOG.md:730 +#: ../../../CHANGELOG.md:959 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:732 +#: ../../../CHANGELOG.md:961 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:734 +#: ../../../CHANGELOG.md:963 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:736 +#: ../../../CHANGELOG.md:965 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:738 +#: ../../../CHANGELOG.md:967 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:740 +#: ../../../CHANGELOG.md:969 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:742 +#: ../../../CHANGELOG.md:971 msgid "We don't recommend changing these variables and suppressing warnings, unless you know what you're doing." msgstr "" -#: ../../../CHANGELOG.md:744 +#: ../../../CHANGELOG.md:973 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:746 +#: ../../../CHANGELOG.md:975 msgid "Conclusion" msgstr "" -#: ../../../CHANGELOG.md:748 +#: ../../../CHANGELOG.md:977 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:750 +#: ../../../CHANGELOG.md:979 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:753 +#: ../../../CHANGELOG.md:982 msgid "2024-01-14" msgstr "" -#: ../../../CHANGELOG.md:755 +#: ../../../CHANGELOG.md:984 msgid "(Backward Compatibility) Configuration changes required for people fronting the integrated reverse-proxy webserver with another reverse-proxy" msgstr "" -#: ../../../CHANGELOG.md:757 +#: ../../../CHANGELOG.md:986 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:759 +#: ../../../CHANGELOG.md:988 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:761 +#: ../../../CHANGELOG.md:990 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:763 +#: ../../../CHANGELOG.md:992 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:765 +#: ../../../CHANGELOG.md:994 msgid "Adapt your configuration as seen below:" msgstr "" -#: ../../../CHANGELOG.md:798 +#: ../../../CHANGELOG.md:1027 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:801 +#: ../../../CHANGELOG.md:1030 msgid "2024-01-13" msgstr "" -#: ../../../CHANGELOG.md:803 +#: ../../../CHANGELOG.md:1032 msgid "matrix-reminder-bot update with more secure (backward-incompatible) default settings" msgstr "" -#: ../../../CHANGELOG.md:805 +#: ../../../CHANGELOG.md:1034 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:807 +#: ../../../CHANGELOG.md:1036 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:809 +#: ../../../CHANGELOG.md:1038 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:811 +#: ../../../CHANGELOG.md:1040 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:813 +#: ../../../CHANGELOG.md:1042 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:815 +#: ../../../CHANGELOG.md:1044 msgid "If you need **to undo or tweak these security improvements**, you can change your `vars.yml` file to:" msgstr "" -#: ../../../CHANGELOG.md:817 +#: ../../../CHANGELOG.md:1046 msgid "disable the allowlist (`matrix_bot_matrix_reminder_bot_allowlist_enabled: false`), making the bot allow usage by anyone, anywhere" msgstr "" -#: ../../../CHANGELOG.md:819 +#: ../../../CHANGELOG.md:1048 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:821 +#: ../../../CHANGELOG.md:1050 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:824 +#: ../../../CHANGELOG.md:1053 msgid "2024-01-05" msgstr "" -#: ../../../CHANGELOG.md:826 +#: ../../../CHANGELOG.md:1055 msgid "matrix-mailer has been replaced by the exim-relay external role" msgstr "" -#: ../../../CHANGELOG.md:828 -#: ../../../CHANGELOG.md:1468 +#: ../../../CHANGELOG.md:1057 +#: ../../../CHANGELOG.md:1695 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:830 +#: ../../../CHANGELOG.md:1059 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:832 +#: ../../../CHANGELOG.md:1061 msgid "To migrate:" msgstr "" -#: ../../../CHANGELOG.md:834 +#: ../../../CHANGELOG.md:1063 msgid "pull the playbook changes, as usual" msgstr "" -#: ../../../CHANGELOG.md:835 +#: ../../../CHANGELOG.md:1064 msgid "update your roles (run `just roles` or `make roles`)" msgstr "" -#: ../../../CHANGELOG.md:836 +#: ../../../CHANGELOG.md:1065 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:837 +#: ../../../CHANGELOG.md:1066 msgid "re-run the playbook (`install-all` or `setup-all`)" msgstr "" -#: ../../../CHANGELOG.md:839 +#: ../../../CHANGELOG.md:1068 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:842 +#: ../../../CHANGELOG.md:1071 msgid "2024-01-02" msgstr "" -#: ../../../CHANGELOG.md:844 +#: ../../../CHANGELOG.md:1073 msgid "mautrix-signal now powered by the new Go-based bridge" msgstr "" -#: ../../../CHANGELOG.md:846 +#: ../../../CHANGELOG.md:1075 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:848 +#: ../../../CHANGELOG.md:1077 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:850 +#: ../../../CHANGELOG.md:1079 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:853 +#: ../../../CHANGELOG.md:1082 msgid "2023-10-23" msgstr "" -#: ../../../CHANGELOG.md:855 +#: ../../../CHANGELOG.md:1084 msgid "Enabling `allow_public_rooms_over_federation` by default for Synapse" msgstr "" -#: ../../../CHANGELOG.md:857 +#: ../../../CHANGELOG.md:1086 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:859 +#: ../../../CHANGELOG.md:1088 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:861 +#: ../../../CHANGELOG.md:1090 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:863 +#: ../../../CHANGELOG.md:1092 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:865 +#: ../../../CHANGELOG.md:1094 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:867 +#: ../../../CHANGELOG.md:1096 msgid "The **historical reasoning** behind this change is as follows:" msgstr "" -#: ../../../CHANGELOG.md:869 +#: ../../../CHANGELOG.md:1098 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:871 +#: ../../../CHANGELOG.md:1100 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:873 +#: ../../../CHANGELOG.md:1102 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:875 +#: ../../../CHANGELOG.md:1104 msgid "Here are **actions you may wish to take** as a result of this change:" msgstr "" -#: ../../../CHANGELOG.md:877 +#: ../../../CHANGELOG.md:1106 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:879 +#: ../../../CHANGELOG.md:1108 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:881 +#: ../../../CHANGELOG.md:1110 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:884 +#: ../../../CHANGELOG.md:1113 msgid "2023-10-18" msgstr "" -#: ../../../CHANGELOG.md:886 +#: ../../../CHANGELOG.md:1115 msgid "Postgres parameters are automatically tuned now" msgstr "" -#: ../../../CHANGELOG.md:888 +#: ../../../CHANGELOG.md:1117 msgid "The playbook has provided some hints about [Tuning PostgreSQL](docs/maintenance-postgres.md#tuning-postgresql) for quite a while now." msgstr "" -#: ../../../CHANGELOG.md:890 +#: ../../../CHANGELOG.md:1119 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:892 +#: ../../../CHANGELOG.md:1121 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:894 +#: ../../../CHANGELOG.md:1123 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:897 +#: ../../../CHANGELOG.md:1126 msgid "2023-08-31" msgstr "" -#: ../../../CHANGELOG.md:899 +#: ../../../CHANGELOG.md:1128 msgid "SchildiChat Web support" msgstr "" -#: ../../../CHANGELOG.md:901 +#: ../../../CHANGELOG.md:1130 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:903 +#: ../../../CHANGELOG.md:1132 msgid "See our [Configuring SchildiChat Web](docs/configuring-playbook-client-schildichat-web.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:906 +#: ../../../CHANGELOG.md:1135 msgid "2023-08-23" msgstr "" -#: ../../../CHANGELOG.md:908 +#: ../../../CHANGELOG.md:1137 msgid "mautrix-wsproxy support" msgstr "" -#: ../../../CHANGELOG.md:910 +#: ../../../CHANGELOG.md:1139 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:912 +#: ../../../CHANGELOG.md:1141 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:915 +#: ../../../CHANGELOG.md:1144 msgid "2023-07-24" msgstr "" -#: ../../../CHANGELOG.md:917 +#: ../../../CHANGELOG.md:1146 msgid "matrix-registration-bot usage changed" msgstr "" -#: ../../../CHANGELOG.md:919 +#: ../../../CHANGELOG.md:1148 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:921 +#: ../../../CHANGELOG.md:1150 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:923 +#: ../../../CHANGELOG.md:1152 msgid "`matrix_bot_matrix_registration_bot_bot_access_token`" msgstr "" -#: ../../../CHANGELOG.md:924 +#: ../../../CHANGELOG.md:1153 msgid "`matrix_bot_matrix_registration_bot_api_token`" msgstr "" -#: ../../../CHANGELOG.md:927 +#: ../../../CHANGELOG.md:1156 msgid "2023-07-21" msgstr "" -#: ../../../CHANGELOG.md:929 +#: ../../../CHANGELOG.md:1158 msgid "mautrix-gmessages support" msgstr "" -#: ../../../CHANGELOG.md:931 +#: ../../../CHANGELOG.md:1160 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:934 +#: ../../../CHANGELOG.md:1163 msgid "2023-07-17" msgstr "" -#: ../../../CHANGELOG.md:936 +#: ../../../CHANGELOG.md:1165 msgid "matrix-media-repo support" msgstr "" -#: ../../../CHANGELOG.md:938 +#: ../../../CHANGELOG.md:1167 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:940 +#: ../../../CHANGELOG.md:1169 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:943 +#: ../../../CHANGELOG.md:1172 msgid "2023-05-25" msgstr "" -#: ../../../CHANGELOG.md:945 +#: ../../../CHANGELOG.md:1174 msgid "Enabling `forget_rooms_on_leave` by default for Synapse" msgstr "" -#: ../../../CHANGELOG.md:947 +#: ../../../CHANGELOG.md:1176 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:949 +#: ../../../CHANGELOG.md:1178 msgid "The upstream Synapse default is `false` (disabled), so that you must forget rooms manually after leaving." msgstr "" -#: ../../../CHANGELOG.md:951 +#: ../../../CHANGELOG.md:1180 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:953 +#: ../../../CHANGELOG.md:1182 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:956 +#: ../../../CHANGELOG.md:1185 msgid "2023-04-03" msgstr "" -#: ../../../CHANGELOG.md:958 +#: ../../../CHANGELOG.md:1187 msgid "The matrix-jitsi role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:960 +#: ../../../CHANGELOG.md:1189 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:962 +#: ../../../CHANGELOG.md:1191 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:964 +#: ../../../CHANGELOG.md:1193 msgid "As part of the extraction process of this role out of the Matrix playbook, a few other things improved:" msgstr "" -#: ../../../CHANGELOG.md:966 +#: ../../../CHANGELOG.md:1195 msgid "**native Traefik support** has been added" msgstr "" -#: ../../../CHANGELOG.md:967 +#: ../../../CHANGELOG.md:1196 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:969 +#: ../../../CHANGELOG.md:1198 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're using Jitsi or not." msgstr "" -#: ../../../CHANGELOG.md:971 +#: ../../../CHANGELOG.md:1200 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:973 +#: ../../../CHANGELOG.md:1202 msgid "`matrix_jitsi_*_docker_image_` -> `matrix_jitsi_*_container_image_`" msgstr "" -#: ../../../CHANGELOG.md:974 +#: ../../../CHANGELOG.md:1203 msgid "`matrix_jitsi_` -> `jitsi_`" msgstr "" -#: ../../../CHANGELOG.md:975 -#: ../../../CHANGELOG.md:1002 +#: ../../../CHANGELOG.md:1204 +#: ../../../CHANGELOG.md:1231 msgid "some other internal variables have changed, but the playbook will tell you about them" msgstr "" -#: ../../../CHANGELOG.md:977 +#: ../../../CHANGELOG.md:1206 msgid "2023-03-22" msgstr "" -#: ../../../CHANGELOG.md:979 +#: ../../../CHANGELOG.md:1208 msgid "ntfy Web App is disabled by default" msgstr "" -#: ../../../CHANGELOG.md:981 +#: ../../../CHANGELOG.md:1210 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:983 +#: ../../../CHANGELOG.md:1212 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:986 +#: ../../../CHANGELOG.md:1215 msgid "2023-03-21" msgstr "" -#: ../../../CHANGELOG.md:988 +#: ../../../CHANGELOG.md:1217 msgid "The matrix-prometheus role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:990 +#: ../../../CHANGELOG.md:1219 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:992 +#: ../../../CHANGELOG.md:1221 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:994 +#: ../../../CHANGELOG.md:1223 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:996 +#: ../../../CHANGELOG.md:1225 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're using Prometheus or not." msgstr "" -#: ../../../CHANGELOG.md:998 +#: ../../../CHANGELOG.md:1227 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:1000 +#: ../../../CHANGELOG.md:1229 msgid "`matrix_prometheus_docker_image_` -> `matrix_prometheus_container_image_`" msgstr "" -#: ../../../CHANGELOG.md:1001 +#: ../../../CHANGELOG.md:1230 msgid "`matrix_prometheus_` -> `prometheus_`" msgstr "" -#: ../../../CHANGELOG.md:1005 +#: ../../../CHANGELOG.md:1234 msgid "2023-03-12" msgstr "" -#: ../../../CHANGELOG.md:1007 +#: ../../../CHANGELOG.md:1236 msgid "synapse-auto-compressor support" msgstr "" -#: ../../../CHANGELOG.md:1009 +#: ../../../CHANGELOG.md:1238 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:1011 +#: ../../../CHANGELOG.md:1240 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:1013 +#: ../../../CHANGELOG.md:1242 msgid "it runs on a more up-to-date version of `rust-synapse-compress-state`" msgstr "" -#: ../../../CHANGELOG.md:1014 +#: ../../../CHANGELOG.md:1243 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:1016 +#: ../../../CHANGELOG.md:1245 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:1018 +#: ../../../CHANGELOG.md:1247 msgid "See our [Setting up synapse-auto-compressor](docs/configuring-playbook-synapse-auto-compressor.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1021 +#: ../../../CHANGELOG.md:1250 msgid "2023-03-07" msgstr "" -#: ../../../CHANGELOG.md:1023 +#: ../../../CHANGELOG.md:1252 msgid "Sliding Sync proxy (Element X) support" msgstr "" -#: ../../../CHANGELOG.md:1025 +#: ../../../CHANGELOG.md:1254 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:1027 +#: ../../../CHANGELOG.md:1256 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:1029 +#: ../../../CHANGELOG.md:1258 msgid "To get started, see our [Setting up the Sliding Sync proxy](docs/configuring-playbook-sliding-sync-proxy.md) documentation page." msgstr "" -#: ../../../CHANGELOG.md:1032 +#: ../../../CHANGELOG.md:1261 msgid "2023-03-02" msgstr "" -#: ../../../CHANGELOG.md:1034 +#: ../../../CHANGELOG.md:1263 msgid "The matrix-etherpad role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1036 +#: ../../../CHANGELOG.md:1265 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:1038 +#: ../../../CHANGELOG.md:1267 msgid "You need to **update your roles** (`just roles` or `make roles`) regardless of whether you're using Etherpad or not." msgstr "" -#: ../../../CHANGELOG.md:1040 +#: ../../../CHANGELOG.md:1269 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:1042 +#: ../../../CHANGELOG.md:1271 msgid "Rename `matrix_etherpad_public_endpoint` to `etherpad_path_prefix`" msgstr "" -#: ../../../CHANGELOG.md:1044 +#: ../../../CHANGELOG.md:1273 msgid "Replace `matrix_etherpad_mode: dimension` with:" msgstr "" -#: ../../../CHANGELOG.md:1045 +#: ../../../CHANGELOG.md:1274 msgid "for `matrix-nginx-proxy` users:" msgstr "" -#: ../../../CHANGELOG.md:1046 +#: ../../../CHANGELOG.md:1275 msgid "`etherpad_nginx_proxy_dimension_integration_enabled: true`" msgstr "" -#: ../../../CHANGELOG.md:1047 +#: ../../../CHANGELOG.md:1276 msgid "`etherpad_hostname: \"{{ matrix_server_fqn_dimension }}\"`" msgstr "" -#: ../../../CHANGELOG.md:1048 +#: ../../../CHANGELOG.md:1277 msgid "for Traefik users:" msgstr "" -#: ../../../CHANGELOG.md:1049 +#: ../../../CHANGELOG.md:1278 msgid "define your own `etherpad_hostname` and `etherpad_path_prefix` as you see fit" msgstr "" -#: ../../../CHANGELOG.md:1051 +#: ../../../CHANGELOG.md:1280 msgid "Rename all other variables:" msgstr "" -#: ../../../CHANGELOG.md:1052 +#: ../../../CHANGELOG.md:1281 msgid "`matrix_etherpad_docker_image_` -> `matrix_etherpad_container_image_`" msgstr "" -#: ../../../CHANGELOG.md:1053 +#: ../../../CHANGELOG.md:1282 msgid "`matrix_etherpad_` -> `etherpad_`" msgstr "" -#: ../../../CHANGELOG.md:1055 +#: ../../../CHANGELOG.md:1284 msgid "Along with this relocation, the new role also:" msgstr "" -#: ../../../CHANGELOG.md:1057 +#: ../../../CHANGELOG.md:1286 msgid "supports [self-building](docs/self-building.md), so it should work on `arm32` and `arm64` architectures" msgstr "" -#: ../../../CHANGELOG.md:1058 +#: ../../../CHANGELOG.md:1287 msgid "has native Traefik reverse-proxy support (Etherpad requests no longer go through `matrix-nginx-proxy` when using Traefik)" msgstr "" -#: ../../../CHANGELOG.md:1061 +#: ../../../CHANGELOG.md:1290 msgid "2023-02-26" msgstr "" -#: ../../../CHANGELOG.md:1063 +#: ../../../CHANGELOG.md:1292 msgid "Traefik is the default reverse-proxy now" msgstr "" -#: ../../../CHANGELOG.md:1065 +#: ../../../CHANGELOG.md:1294 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:1067 +#: ../../../CHANGELOG.md:1296 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:1069 +#: ../../../CHANGELOG.md:1298 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:1071 +#: ../../../CHANGELOG.md:1300 msgid "Traefik managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:1072 +#: ../../../CHANGELOG.md:1301 msgid "Traefik managed by the user in another way" msgstr "" -#: ../../../CHANGELOG.md:1073 +#: ../../../CHANGELOG.md:1302 msgid "another reverse-proxy on the same host (`127.0.0.1` port exposure)" msgstr "" -#: ../../../CHANGELOG.md:1074 +#: ../../../CHANGELOG.md:1303 msgid "another reverse-proxy on another host (`0.0.0.0` port exposure)" msgstr "" -#: ../../../CHANGELOG.md:1075 +#: ../../../CHANGELOG.md:1304 msgid "`matrix-nginx-proxy` — an `nginx` container managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:1076 +#: ../../../CHANGELOG.md:1305 msgid "`nginx` webserver operated by the user, running without a container on the same server" msgstr "" -#: ../../../CHANGELOG.md:1078 +#: ../../../CHANGELOG.md:1307 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:1080 +#: ../../../CHANGELOG.md:1309 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:1082 +#: ../../../CHANGELOG.md:1311 msgid "It's time for the **next step in our migration process** to Traefik and elimination of `matrix-nginx-proxy`:" msgstr "" -#: ../../../CHANGELOG.md:1084 +#: ../../../CHANGELOG.md:1313 msgid "Traefik is now the default reverse-proxy for new installations" msgstr "" -#: ../../../CHANGELOG.md:1085 +#: ../../../CHANGELOG.md:1314 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:1087 +#: ../../../CHANGELOG.md:1316 msgid "How do I switch my existing setup to Traefik?" msgstr "" -#: ../../../CHANGELOG.md:1089 +#: ../../../CHANGELOG.md:1318 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:1091 +#: ../../../CHANGELOG.md:1320 msgid "If you experience trouble:" msgstr "" -#: ../../../CHANGELOG.md:1093 +#: ../../../CHANGELOG.md:1322 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:1094 +#: ../../../CHANGELOG.md:1323 msgid "Ask for help in our [support channels](README.md#support)" msgstr "" -#: ../../../CHANGELOG.md:1095 +#: ../../../CHANGELOG.md:1324 msgid "Try switching to Traefik again later" msgstr "" -#: ../../../CHANGELOG.md:1097 +#: ../../../CHANGELOG.md:1326 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:1099 +#: ../../../CHANGELOG.md:1328 msgid "I already use my own Traefik server. How do I plug that in?" msgstr "" -#: ../../../CHANGELOG.md:1101 +#: ../../../CHANGELOG.md:1330 msgid "See the [Traefik managed by the playbook](docs/configuring-playbook-own-webserver.md#traefik-managed-by-the-playbook) section." msgstr "" -#: ../../../CHANGELOG.md:1103 +#: ../../../CHANGELOG.md:1332 msgid "Why is matrix-nginx-proxy used even after switching to Traefik?" msgstr "" -#: ../../../CHANGELOG.md:1105 +#: ../../../CHANGELOG.md:1334 msgid "This playbook manages many different services. All these services were initially integrated with `matrix-nginx-proxy`." msgstr "" -#: ../../../CHANGELOG.md:1107 +#: ../../../CHANGELOG.md:1336 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:1109 +#: ../../../CHANGELOG.md:1338 msgid "How do I remain on matrix-nginx-proxy?" msgstr "" -#: ../../../CHANGELOG.md:1111 +#: ../../../CHANGELOG.md:1340 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:1113 +#: ../../../CHANGELOG.md:1342 msgid "To proceed regardless of this warning, add `matrix_playbook_reverse_proxy_type: playbook-managed-nginx` to your configuration." msgstr "" -#: ../../../CHANGELOG.md:1115 +#: ../../../CHANGELOG.md:1344 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:1117 +#: ../../../CHANGELOG.md:1346 msgid "How do I keep using my own other reverse-proxy?" msgstr "" -#: ../../../CHANGELOG.md:1119 +#: ../../../CHANGELOG.md:1348 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:1122 +#: ../../../CHANGELOG.md:1351 msgid "2023-02-25" msgstr "" -#: ../../../CHANGELOG.md:1124 +#: ../../../CHANGELOG.md:1353 msgid "rageshake support" msgstr "" -#: ../../../CHANGELOG.md:1126 +#: ../../../CHANGELOG.md:1355 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:1128 +#: ../../../CHANGELOG.md:1357 msgid "Additional details are available in [Setting up rageshake](docs/configuring-playbook-rageshake.md)." msgstr "" -#: ../../../CHANGELOG.md:1131 +#: ../../../CHANGELOG.md:1360 msgid "2023-02-17" msgstr "" -#: ../../../CHANGELOG.md:1133 +#: ../../../CHANGELOG.md:1362 msgid "Synapse templates customization support" msgstr "" -#: ../../../CHANGELOG.md:1135 +#: ../../../CHANGELOG.md:1364 msgid "The playbook can now help you customize Synapse's templates." msgstr "" -#: ../../../CHANGELOG.md:1137 +#: ../../../CHANGELOG.md:1366 msgid "Additional details are available in the [Customizing templates](docs/configuring-playbook-synapse.md#customizing-templates) section of our Synapse documentation." msgstr "" -#: ../../../CHANGELOG.md:1139 +#: ../../../CHANGELOG.md:1368 msgid "The matrix-redis role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1141 +#: ../../../CHANGELOG.md:1370 msgid "**TLDR**: the `matrix-redis` role is now included from another repository. Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1143 +#: ../../../CHANGELOG.md:1372 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:1145 +#: ../../../CHANGELOG.md:1374 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:1147 +#: ../../../CHANGELOG.md:1376 msgid "The matrix-ntfy role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1149 +#: ../../../CHANGELOG.md:1378 msgid "**TLDR**: the `matrix-ntfy` role is now included from another repository. Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1151 +#: ../../../CHANGELOG.md:1380 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:1153 +#: ../../../CHANGELOG.md:1382 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:1156 +#: ../../../CHANGELOG.md:1385 msgid "2023-02-15" msgstr "" -#: ../../../CHANGELOG.md:1158 +#: ../../../CHANGELOG.md:1387 msgid "The matrix-grafana role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1160 +#: ../../../CHANGELOG.md:1389 msgid "**TLDR**: the `matrix-grafana` role is now included from another repository. Some variables have been renamed. All functionality remains intact." msgstr "" -#: ../../../CHANGELOG.md:1162 +#: ../../../CHANGELOG.md:1391 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:1164 +#: ../../../CHANGELOG.md:1393 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:1167 +#: ../../../CHANGELOG.md:1396 msgid "2023-02-13" msgstr "" -#: ../../../CHANGELOG.md:1169 +#: ../../../CHANGELOG.md:1398 msgid "The matrix-backup-borg role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1171 +#: ../../../CHANGELOG.md:1400 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:1173 +#: ../../../CHANGELOG.md:1402 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:1175 +#: ../../../CHANGELOG.md:1404 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:1178 +#: ../../../CHANGELOG.md:1407 msgid "2023-02-12" msgstr "" -#: ../../../CHANGELOG.md:1180 +#: ../../../CHANGELOG.md:1409 msgid "(Backward Compatibility) Reverse-proxy configuration changes and initial Traefik support" msgstr "" -#: ../../../CHANGELOG.md:1182 +#: ../../../CHANGELOG.md:1411 msgid "**TLDR**:" msgstr "" -#: ../../../CHANGELOG.md:1184 +#: ../../../CHANGELOG.md:1413 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:1185 +#: ../../../CHANGELOG.md:1414 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:1186 +#: ../../../CHANGELOG.md:1415 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:1187 +#: ../../../CHANGELOG.md:1416 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:1188 +#: ../../../CHANGELOG.md:1417 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:1190 +#: ../../../CHANGELOG.md:1419 msgid "Motivation for redoing our reverse-proxy setup" msgstr "" -#: ../../../CHANGELOG.md:1192 +#: ../../../CHANGELOG.md:1421 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:1194 +#: ../../../CHANGELOG.md:1423 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:1196 +#: ../../../CHANGELOG.md:1425 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:1198 +#: ../../../CHANGELOG.md:1427 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:1200 +#: ../../../CHANGELOG.md:1429 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:1202 +#: ../../../CHANGELOG.md:1431 msgid "*either* relying on `matrix_nginx_proxy_enabled: false` as well, combined with exposing services manually (setting `_bind_port` variables)" msgstr "" -#: ../../../CHANGELOG.md:1203 +#: ../../../CHANGELOG.md:1432 msgid "*or* better yet, they were keeping `matrix-nginx-proxy` enabled, but in `http`-only mode (no SSL certificate retrieval)." msgstr "" -#: ../../../CHANGELOG.md:1205 +#: ../../../CHANGELOG.md:1434 msgid "Despite this operational complexity, things worked and were reasonably flexible to adapt to all these situations." msgstr "" -#: ../../../CHANGELOG.md:1207 +#: ../../../CHANGELOG.md:1436 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:1209 +#: ../../../CHANGELOG.md:1438 msgid "The next problem is one of **efficiency, interoperability and cost-saving**. We're working on other playbooks:" msgstr "" -#: ../../../CHANGELOG.md:1211 +#: ../../../CHANGELOG.md:1440 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:1212 +#: ../../../CHANGELOG.md:1441 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:1213 +#: ../../../CHANGELOG.md:1442 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:1215 +#: ../../../CHANGELOG.md:1444 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:1217 +#: ../../../CHANGELOG.md:1446 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:1219 +#: ../../../CHANGELOG.md:1448 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:1221 +#: ../../../CHANGELOG.md:1450 msgid "How do these changes fix all these problems?" msgstr "" -#: ../../../CHANGELOG.md:1223 +#: ../../../CHANGELOG.md:1452 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:1225 +#: ../../../CHANGELOG.md:1454 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:1227 +#: ../../../CHANGELOG.md:1456 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:1229 +#: ../../../CHANGELOG.md:1458 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:1231 +#: ../../../CHANGELOG.md:1460 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:1233 +#: ../../../CHANGELOG.md:1462 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:1235 +#: ../../../CHANGELOG.md:1464 msgid "Where we're at right now?" msgstr "" -#: ../../../CHANGELOG.md:1237 +#: ../../../CHANGELOG.md:1466 msgid "`matrix_playbook_reverse_proxy_type` still defaults to a value of `playbook-managed-nginx`." msgstr "" -#: ../../../CHANGELOG.md:1239 +#: ../../../CHANGELOG.md:1468 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:1241 +#: ../../../CHANGELOG.md:1470 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:1243 +#: ../../../CHANGELOG.md:1472 msgid "How do I explicitly switch to Traefik right now?" msgstr "" -#: ../../../CHANGELOG.md:1245 +#: ../../../CHANGELOG.md:1474 msgid "**Users who wish to migrate to Traefik** today, can do so by **adding** this to their configuration:" msgstr "" -#: ../../../CHANGELOG.md:1253 +#: ../../../CHANGELOG.md:1480 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:1255 +#: ../../../CHANGELOG.md:1482 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:1257 +#: ../../../CHANGELOG.md:1484 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:1259 +#: ../../../CHANGELOG.md:1486 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:1261 +#: ../../../CHANGELOG.md:1488 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:1263 +#: ../../../CHANGELOG.md:1490 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:1265 +#: ../../../CHANGELOG.md:1492 msgid "Where we're going in the near future?" msgstr "" -#: ../../../CHANGELOG.md:1267 +#: ../../../CHANGELOG.md:1494 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:1269 +#: ../../../CHANGELOG.md:1496 msgid "For now, `matrix-nginx-proxy` will stay around." msgstr "" -#: ../../../CHANGELOG.md:1271 +#: ../../../CHANGELOG.md:1498 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:1273 +#: ../../../CHANGELOG.md:1500 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:1275 +#: ../../../CHANGELOG.md:1502 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:1276 +#: ../../../CHANGELOG.md:1503 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:1278 +#: ../../../CHANGELOG.md:1505 msgid "How do I help?" msgstr "" -#: ../../../CHANGELOG.md:1280 +#: ../../../CHANGELOG.md:1507 msgid "You can help by:" msgstr "" -#: ../../../CHANGELOG.md:1282 +#: ../../../CHANGELOG.md:1509 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:1284 +#: ../../../CHANGELOG.md:1511 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:1286 +#: ../../../CHANGELOG.md:1513 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:1289 +#: ../../../CHANGELOG.md:1516 msgid "2023-02-10" msgstr "" -#: ../../../CHANGELOG.md:1291 +#: ../../../CHANGELOG.md:1518 msgid "Matrix Authentication Support for Jitsi" msgstr "" -#: ../../../CHANGELOG.md:1293 +#: ../../../CHANGELOG.md:1520 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:1295 +#: ../../../CHANGELOG.md:1522 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:1297 +#: ../../../CHANGELOG.md:1524 msgid "Draupnir moderation tool (bot) support" msgstr "" -#: ../../../CHANGELOG.md:1299 +#: ../../../CHANGELOG.md:1526 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:1301 +#: ../../../CHANGELOG.md:1528 msgid "Additional details are available in [Setting up Draupnir](docs/configuring-playbook-bot-draupnir.md)." msgstr "" -#: ../../../CHANGELOG.md:1304 +#: ../../../CHANGELOG.md:1531 msgid "2023-02-05" msgstr "" -#: ../../../CHANGELOG.md:1306 +#: ../../../CHANGELOG.md:1533 msgid "The matrix-prometheus-postgres-exporter role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1308 +#: ../../../CHANGELOG.md:1535 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:1310 +#: ../../../CHANGELOG.md:1537 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:1312 +#: ../../../CHANGELOG.md:1539 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:1314 +#: ../../../CHANGELOG.md:1541 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:1316 -#: ../../../CHANGELOG.md:1358 +#: ../../../CHANGELOG.md:1543 +#: ../../../CHANGELOG.md:1585 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:1319 +#: ../../../CHANGELOG.md:1546 msgid "2023-01-26" msgstr "" -#: ../../../CHANGELOG.md:1321 +#: ../../../CHANGELOG.md:1548 msgid "coturn can now use host-networking" msgstr "" -#: ../../../CHANGELOG.md:1323 +#: ../../../CHANGELOG.md:1550 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:1325 +#: ../../../CHANGELOG.md:1552 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:1331 +#: ../../../CHANGELOG.md:1558 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:1333 +#: ../../../CHANGELOG.md:1560 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:1335 +#: ../../../CHANGELOG.md:1562 msgid "(Backward Compatibility) Tightening coturn security can lead to connectivity issues" msgstr "" -#: ../../../CHANGELOG.md:1337 +#: ../../../CHANGELOG.md:1564 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:1339 +#: ../../../CHANGELOG.md:1566 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:1341 +#: ../../../CHANGELOG.md:1568 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:1343 +#: ../../../CHANGELOG.md:1570 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:1346 +#: ../../../CHANGELOG.md:1573 msgid "2023-01-21" msgstr "" -#: ../../../CHANGELOG.md:1348 +#: ../../../CHANGELOG.md:1575 msgid "The matrix-prometheus-node-exporter role lives independently now" msgstr "" -#: ../../../CHANGELOG.md:1350 +#: ../../../CHANGELOG.md:1577 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:1352 +#: ../../../CHANGELOG.md:1579 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:1354 +#: ../../../CHANGELOG.md:1581 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:1356 +#: ../../../CHANGELOG.md:1583 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:1361 +#: ../../../CHANGELOG.md:1588 msgid "2023-01-13" msgstr "" -#: ../../../CHANGELOG.md:1363 +#: ../../../CHANGELOG.md:1590 msgid "Support for running commands via just" msgstr "" -#: ../../../CHANGELOG.md:1365 +#: ../../../CHANGELOG.md:1592 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:1367 +#: ../../../CHANGELOG.md:1594 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:1369 +#: ../../../CHANGELOG.md:1596 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:1371 +#: ../../../CHANGELOG.md:1598 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:1372 +#: ../../../CHANGELOG.md:1599 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:1373 +#: ../../../CHANGELOG.md:1600 msgid "`just run-tags install-mautrix-slack,start` — to run specific playbook tags" msgstr "" -#: ../../../CHANGELOG.md:1374 +#: ../../../CHANGELOG.md:1601 msgid "`just start-all` — (re-)starts all services" msgstr "" -#: ../../../CHANGELOG.md:1375 +#: ../../../CHANGELOG.md:1602 msgid "`just stop-group postgres` — to stop only the Postgres service" msgstr "" -#: ../../../CHANGELOG.md:1376 +#: ../../../CHANGELOG.md:1603 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:1378 +#: ../../../CHANGELOG.md:1605 msgid "Additional helpful commands and shortcuts may be defined in the future." msgstr "" -#: ../../../CHANGELOG.md:1380 +#: ../../../CHANGELOG.md:1607 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:1383 +#: ../../../CHANGELOG.md:1610 msgid "2023-01-11" msgstr "" -#: ../../../CHANGELOG.md:1385 +#: ../../../CHANGELOG.md:1612 msgid "mautrix-slack support" msgstr "" -#: ../../../CHANGELOG.md:1387 +#: ../../../CHANGELOG.md:1614 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:1389 +#: ../../../CHANGELOG.md:1616 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:1392 +#: ../../../CHANGELOG.md:1619 msgid "2023-01-10" msgstr "" -#: ../../../CHANGELOG.md:1394 +#: ../../../CHANGELOG.md:1621 msgid "ChatGPT support" msgstr "" -#: ../../../CHANGELOG.md:1396 +#: ../../../CHANGELOG.md:1623 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:1398 +#: ../../../CHANGELOG.md:1625 msgid "See our [Setting up matrix-bot-chatgpt](docs/configuring-playbook-bot-chatgpt.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1401 +#: ../../../CHANGELOG.md:1628 msgid "2022-11-30" msgstr "" -#: ../../../CHANGELOG.md:1403 +#: ../../../CHANGELOG.md:1630 msgid "matrix-postgres-backup has been replaced by the ansible-role-postgres-backup external role" msgstr "" -#: ../../../CHANGELOG.md:1405 +#: ../../../CHANGELOG.md:1632 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:1407 +#: ../../../CHANGELOG.md:1634 msgid "You'll need to rename your `matrix_postgres_backup`-prefixed variables such that they use a `postgres_backup` prefix." msgstr "" -#: ../../../CHANGELOG.md:1410 +#: ../../../CHANGELOG.md:1637 msgid "2022-11-28" msgstr "" -#: ../../../CHANGELOG.md:1412 +#: ../../../CHANGELOG.md:1639 msgid "matrix-postgres has been replaced by the ansible-role-postgres external role" msgstr "" -#: ../../../CHANGELOG.md:1414 +#: ../../../CHANGELOG.md:1641 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:1416 +#: ../../../CHANGELOG.md:1643 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:1418 +#: ../../../CHANGELOG.md:1645 msgid "The new role is an upgraded version of the old `matrix-postgres` role with these notable differences:" msgstr "" -#: ../../../CHANGELOG.md:1420 +#: ../../../CHANGELOG.md:1647 msgid "it uses different names for its variables (`matrix_postgres` -> `devture_postgres`)" msgstr "" -#: ../../../CHANGELOG.md:1421 +#: ../../../CHANGELOG.md:1648 msgid "when [Vacuuming PostgreSQL](docs/maintenance-postgres.md#vacuuming-postgresql), it will vacuum all your databases, not just the Synapse one" msgstr "" -#: ../../../CHANGELOG.md:1423 +#: ../../../CHANGELOG.md:1650 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:1425 +#: ../../../CHANGELOG.md:1652 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:1427 +#: ../../../CHANGELOG.md:1654 msgid "The playbook no longer installs scripts to /usr/local/bin" msgstr "" -#: ../../../CHANGELOG.md:1429 +#: ../../../CHANGELOG.md:1656 msgid "The locations of various scripts installed by the playbook have changed." msgstr "" -#: ../../../CHANGELOG.md:1431 +#: ../../../CHANGELOG.md:1658 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:1433 +#: ../../../CHANGELOG.md:1660 msgid "`/usr/local/bin/matrix-remove-all` -> `/matrix/bin/remove-all`" msgstr "" -#: ../../../CHANGELOG.md:1434 +#: ../../../CHANGELOG.md:1661 msgid "`/usr/local/bin/matrix-postgres-cli` -> `/matrix/postgres/bin/cli`" msgstr "" -#: ../../../CHANGELOG.md:1435 +#: ../../../CHANGELOG.md:1662 msgid "`/usr/local/bin/matrix-ssl-lets-encrypt-certificates-renew` -> `/matrix/ssl/bin/lets-encrypt-certificates-renew`" msgstr "" -#: ../../../CHANGELOG.md:1436 +#: ../../../CHANGELOG.md:1663 msgid "`/usr/local/bin/matrix-synapse-register-user` -> `/matrix/synapse/bin/register-user`" msgstr "" -#: ../../../CHANGELOG.md:1439 +#: ../../../CHANGELOG.md:1666 msgid "2022-11-25" msgstr "" -#: ../../../CHANGELOG.md:1441 +#: ../../../CHANGELOG.md:1668 msgid "2x-5x performance improvements in playbook runtime" msgstr "" -#: ../../../CHANGELOG.md:1443 +#: ../../../CHANGELOG.md:1670 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:1445 +#: ../../../CHANGELOG.md:1672 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:1447 +#: ../../../CHANGELOG.md:1674 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:1449 +#: ../../../CHANGELOG.md:1676 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:1451 +#: ../../../CHANGELOG.md:1678 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:1453 +#: ../../../CHANGELOG.md:1680 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:1455 +#: ../../../CHANGELOG.md:1682 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:1457 +#: ../../../CHANGELOG.md:1684 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:1460 +#: ../../../CHANGELOG.md:1687 msgid "2022-11-22" msgstr "" -#: ../../../CHANGELOG.md:1462 +#: ../../../CHANGELOG.md:1689 msgid "Automatic `matrix_architecture` determination" msgstr "" -#: ../../../CHANGELOG.md:1464 +#: ../../../CHANGELOG.md:1691 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:1466 +#: ../../../CHANGELOG.md:1693 msgid "Docker and the Docker SDK for Python are now installed via external roles" msgstr "" -#: ../../../CHANGELOG.md:1470 +#: ../../../CHANGELOG.md:1697 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:1472 +#: ../../../CHANGELOG.md:1699 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:1474 +#: ../../../CHANGELOG.md:1701 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:1476 +#: ../../../CHANGELOG.md:1703 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:1479 +#: ../../../CHANGELOG.md:1706 msgid "2022-11-20" msgstr "" -#: ../../../CHANGELOG.md:1481 +#: ../../../CHANGELOG.md:1708 msgid "(Backward Compatibility Break) Changing how reverse-proxying to Synapse works — now via a `matrix-synapse-reverse-proxy-companion` service" msgstr "" -#: ../../../CHANGELOG.md:1483 +#: ../../../CHANGELOG.md:1710 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:1485 +#: ../../../CHANGELOG.md:1712 msgid "Background" msgstr "" -#: ../../../CHANGELOG.md:1487 +#: ../../../CHANGELOG.md:1714 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:1489 +#: ../../../CHANGELOG.md:1716 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:1491 +#: ../../../CHANGELOG.md:1718 msgid "Solution" msgstr "" -#: ../../../CHANGELOG.md:1493 +#: ../../../CHANGELOG.md:1720 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:1495 +#: ../../../CHANGELOG.md:1722 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:1497 +#: ../../../CHANGELOG.md:1724 msgid "provide a unified container address for reaching Synapse (no matter if workers are enabled or not)" msgstr "" -#: ../../../CHANGELOG.md:1498 +#: ../../../CHANGELOG.md:1725 msgid "`matrix-synapse-reverse-proxy-companion:8008` for Synapse Client-Server API traffic" msgstr "" -#: ../../../CHANGELOG.md:1499 +#: ../../../CHANGELOG.md:1726 msgid "`matrix-synapse-reverse-proxy-companion:8048` for Synapse Server-Server (Federation) API traffic" msgstr "" -#: ../../../CHANGELOG.md:1501 +#: ../../../CHANGELOG.md:1728 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:1503 +#: ../../../CHANGELOG.md:1730 msgid "allow reverse-proxying to Synapse, even if `matrix-nginx-proxy` is disabled" msgstr "" -#: ../../../CHANGELOG.md:1505 +#: ../../../CHANGELOG.md:1732 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:1507 +#: ../../../CHANGELOG.md:1734 msgid "(`matrix-nginx-proxy` -> `matrix-synapse-reverse-proxy-companion` -> (`matrix-synapse` or some Synapse worker))." msgstr "" -#: ../../../CHANGELOG.md:1509 +#: ../../../CHANGELOG.md:1736 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:1511 +#: ../../../CHANGELOG.md:1738 msgid "Webserver configuration" msgstr "" -#: ../../../CHANGELOG.md:1513 +#: ../../../CHANGELOG.md:1740 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:1515 +#: ../../../CHANGELOG.md:1742 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:1517 +#: ../../../CHANGELOG.md:1744 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:1519 +#: ../../../CHANGELOG.md:1746 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:1521 +#: ../../../CHANGELOG.md:1748 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:1524 +#: ../../../CHANGELOG.md:1751 msgid "2022-11-05" msgstr "" -#: ../../../CHANGELOG.md:1526 +#: ../../../CHANGELOG.md:1753 msgid "(Backward Compatibility Break) A new default standalone mode for Etherpad" msgstr "" -#: ../../../CHANGELOG.md:1528 +#: ../../../CHANGELOG.md:1755 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:1530 +#: ../../../CHANGELOG.md:1757 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:1532 +#: ../../../CHANGELOG.md:1759 msgid "If you've already got both Etherpad and Dimension in use you could:" msgstr "" -#: ../../../CHANGELOG.md:1534 +#: ../../../CHANGELOG.md:1761 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:1536 +#: ../../../CHANGELOG.md:1763 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:1539 +#: ../../../CHANGELOG.md:1766 msgid "2022-11-04" msgstr "" -#: ../../../CHANGELOG.md:1541 +#: ../../../CHANGELOG.md:1768 msgid "The playbook now uses external roles for some things" msgstr "" -#: ../../../CHANGELOG.md:1543 +#: ../../../CHANGELOG.md:1770 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:1545 +#: ../../../CHANGELOG.md:1772 msgid "We're in the process of trimming the playbook and making it reuse Ansible roles." msgstr "" -#: ../../../CHANGELOG.md:1547 +#: ../../../CHANGELOG.md:1774 msgid "Starting now, the playbook is composed of 2 types of Ansible roles:" msgstr "" -#: ../../../CHANGELOG.md:1549 +#: ../../../CHANGELOG.md:1776 msgid "those that live within the playbook itself (`roles/custom/*`)" msgstr "" -#: ../../../CHANGELOG.md:1551 +#: ../../../CHANGELOG.md:1778 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:1553 +#: ../../../CHANGELOG.md:1780 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:1555 +#: ../../../CHANGELOG.md:1782 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:1557 +#: ../../../CHANGELOG.md:1784 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:1560 +#: ../../../CHANGELOG.md:1787 msgid "2022-10-14" msgstr "" -#: ../../../CHANGELOG.md:1562 +#: ../../../CHANGELOG.md:1789 msgid "synapse-s3-storage-provider support" msgstr "" -#: ../../../CHANGELOG.md:1564 +#: ../../../CHANGELOG.md:1791 msgid "**`synapse-s3-storage-provider` support is very new and still relatively untested. Using it may cause data loss.**" msgstr "" -#: ../../../CHANGELOG.md:1566 +#: ../../../CHANGELOG.md:1793 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:1568 +#: ../../../CHANGELOG.md:1795 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:1570 +#: ../../../CHANGELOG.md:1797 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:1572 +#: ../../../CHANGELOG.md:1799 msgid "Synapse container image customization support" msgstr "" -#: ../../../CHANGELOG.md:1574 +#: ../../../CHANGELOG.md:1801 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:1576 +#: ../../../CHANGELOG.md:1803 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:1578 +#: ../../../CHANGELOG.md:1805 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:1589 +#: ../../../CHANGELOG.md:1816 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:1591 +#: ../../../CHANGELOG.md:1818 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:1594 +#: ../../../CHANGELOG.md:1821 msgid "2022-10-02" msgstr "" -#: ../../../CHANGELOG.md:1596 +#: ../../../CHANGELOG.md:1823 msgid "matrix-ldap-registration-proxy support" msgstr "" -#: ../../../CHANGELOG.md:1598 +#: ../../../CHANGELOG.md:1825 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:1600 +#: ../../../CHANGELOG.md:1827 msgid "See our [Setting up matrix-ldap-registration-proxy](docs/configuring-playbook-matrix-ldap-registration-proxy.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1603 +#: ../../../CHANGELOG.md:1830 msgid "2022-09-15" msgstr "" -#: ../../../CHANGELOG.md:1605 +#: ../../../CHANGELOG.md:1832 msgid "(Potential Backward Compatibility Break) Major improvements to Synapse workers" msgstr "" -#: ../../../CHANGELOG.md:1607 +#: ../../../CHANGELOG.md:1834 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:1609 +#: ../../../CHANGELOG.md:1836 msgid "we've added support for [Stream writers](#stream-writers-support)" msgstr "" -#: ../../../CHANGELOG.md:1610 +#: ../../../CHANGELOG.md:1837 msgid "we've added support for [multiple federation sender workers](#multiple-federation-sender-workers-support)" msgstr "" -#: ../../../CHANGELOG.md:1611 +#: ../../../CHANGELOG.md:1838 msgid "we've added support for [multiple pusher workers](#multiple-pusher-workers-support)" msgstr "" -#: ../../../CHANGELOG.md:1612 +#: ../../../CHANGELOG.md:1839 msgid "we've added support for [running background tasks on a worker](#background-tasks-can-run-on-a-worker)" msgstr "" -#: ../../../CHANGELOG.md:1613 +#: ../../../CHANGELOG.md:1840 msgid "we've restored support for [`appservice` workers](#appservice-worker-support-is-back)" msgstr "" -#: ../../../CHANGELOG.md:1614 +#: ../../../CHANGELOG.md:1841 msgid "we've restored support for [`user_dir` workers](#user-directory-worker-support-is-back)" msgstr "" -#: ../../../CHANGELOG.md:1615 +#: ../../../CHANGELOG.md:1842 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:1616 +#: ../../../CHANGELOG.md:1843 msgid "see the [Potential Backward Incompatibilities after these Synapse worker changes](#potential-backward-incompatibilities-after-these-synapse-worker-changes)" msgstr "" -#: ../../../CHANGELOG.md:1618 +#: ../../../CHANGELOG.md:1845 msgid "Stream writers support" msgstr "" -#: ../../../CHANGELOG.md:1620 +#: ../../../CHANGELOG.md:1847 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:1622 +#: ../../../CHANGELOG.md:1849 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:1624 +#: ../../../CHANGELOG.md:1851 msgid "If you'd like to customize the number of workers we also make that possible using these variables:" msgstr "" -#: ../../../CHANGELOG.md:1637 +#: ../../../CHANGELOG.md:1864 msgid "Multiple federation sender workers support" msgstr "" -#: ../../../CHANGELOG.md:1639 +#: ../../../CHANGELOG.md:1866 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:1641 +#: ../../../CHANGELOG.md:1868 msgid "Multiple pusher workers support" msgstr "" -#: ../../../CHANGELOG.md:1643 +#: ../../../CHANGELOG.md:1870 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:1645 +#: ../../../CHANGELOG.md:1872 msgid "Background tasks can run on a worker" msgstr "" -#: ../../../CHANGELOG.md:1647 +#: ../../../CHANGELOG.md:1874 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:1649 +#: ../../../CHANGELOG.md:1876 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:1651 +#: ../../../CHANGELOG.md:1878 msgid "Appservice worker support is back" msgstr "" -#: ../../../CHANGELOG.md:1653 +#: ../../../CHANGELOG.md:1880 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:1655 +#: ../../../CHANGELOG.md:1882 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:1657 +#: ../../../CHANGELOG.md:1884 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:1659 +#: ../../../CHANGELOG.md:1886 msgid "User Directory worker support is back" msgstr "" -#: ../../../CHANGELOG.md:1661 +#: ../../../CHANGELOG.md:1888 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:1663 +#: ../../../CHANGELOG.md:1890 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:1665 +#: ../../../CHANGELOG.md:1892 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:1667 +#: ../../../CHANGELOG.md:1894 msgid "Using more than 1 media repository worker is now more reliable" msgstr "" -#: ../../../CHANGELOG.md:1669 +#: ../../../CHANGELOG.md:1896 msgid "With `matrix_synapse_workers_preset: one-of-each`, we only launch one `media_repository` worker." msgstr "" -#: ../../../CHANGELOG.md:1671 +#: ../../../CHANGELOG.md:1898 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:1673 +#: ../../../CHANGELOG.md:1900 msgid "Potential Backward Incompatibilities after these Synapse worker changes" msgstr "" -#: ../../../CHANGELOG.md:1675 +#: ../../../CHANGELOG.md:1902 msgid "Below we'll discuss **potential backward incompatibilities**." msgstr "" -#: ../../../CHANGELOG.md:1677 +#: ../../../CHANGELOG.md:1904 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:1679 +#: ../../../CHANGELOG.md:1906 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:1681 +#: ../../../CHANGELOG.md:1908 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:1683 +#: ../../../CHANGELOG.md:1910 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:1686 +#: ../../../CHANGELOG.md:1913 msgid "2022-09-09" msgstr "" -#: ../../../CHANGELOG.md:1688 +#: ../../../CHANGELOG.md:1915 msgid "Cactus Comments support" msgstr "" -#: ../../../CHANGELOG.md:1690 +#: ../../../CHANGELOG.md:1917 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:1692 +#: ../../../CHANGELOG.md:1919 msgid "See our [Setting up Cactus Comments](docs/configuring-playbook-cactus-comments.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1695 +#: ../../../CHANGELOG.md:1922 msgid "2022-08-23" msgstr "" -#: ../../../CHANGELOG.md:1697 +#: ../../../CHANGELOG.md:1924 msgid "Postmoogle email bridge support" msgstr "" -#: ../../../CHANGELOG.md:1699 +#: ../../../CHANGELOG.md:1926 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:1701 +#: ../../../CHANGELOG.md:1928 msgid "See our [Setting up Postmoogle email bridging](docs/configuring-playbook-bridge-postmoogle.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1704 +#: ../../../CHANGELOG.md:1931 msgid "2022-08-10" msgstr "" -#: ../../../CHANGELOG.md:1706 +#: ../../../CHANGELOG.md:1933 msgid "mautrix-whatsapp default configuration changes" msgstr "" -#: ../../../CHANGELOG.md:1708 +#: ../../../CHANGELOG.md:1935 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:1710 +#: ../../../CHANGELOG.md:1937 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:1712 +#: ../../../CHANGELOG.md:1939 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:1715 +#: ../../../CHANGELOG.md:1942 msgid "2022-08-09" msgstr "" -#: ../../../CHANGELOG.md:1717 +#: ../../../CHANGELOG.md:1944 msgid "Conduit support" msgstr "" -#: ../../../CHANGELOG.md:1719 +#: ../../../CHANGELOG.md:1946 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:1721 +#: ../../../CHANGELOG.md:1948 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:1723 +#: ../../../CHANGELOG.md:1950 msgid "To try out Conduit, we recommend that you **use a new server** and the following `vars.yml` configuration:" msgstr "" -#: ../../../CHANGELOG.md:1729 +#: ../../../CHANGELOG.md:1956 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:1732 +#: ../../../CHANGELOG.md:1959 msgid "2022-07-29" msgstr "" -#: ../../../CHANGELOG.md:1734 +#: ../../../CHANGELOG.md:1961 msgid "mautrix-discord support" msgstr "" -#: ../../../CHANGELOG.md:1736 +#: ../../../CHANGELOG.md:1963 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:1738 +#: ../../../CHANGELOG.md:1965 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:1741 +#: ../../../CHANGELOG.md:1968 msgid "2022-07-27" msgstr "" -#: ../../../CHANGELOG.md:1743 +#: ../../../CHANGELOG.md:1970 msgid "matrix-appservice-kakaotalk support" msgstr "" -#: ../../../CHANGELOG.md:1745 +#: ../../../CHANGELOG.md:1972 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:1747 +#: ../../../CHANGELOG.md:1974 msgid "See our [Setting up Appservice Kakaotalk bridging](docs/configuring-playbook-bridge-appservice-kakaotalk.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1750 +#: ../../../CHANGELOG.md:1977 msgid "2022-07-20" msgstr "" -#: ../../../CHANGELOG.md:1752 +#: ../../../CHANGELOG.md:1979 msgid "maubot support" msgstr "" -#: ../../../CHANGELOG.md:1754 +#: ../../../CHANGELOG.md:1981 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:1756 +#: ../../../CHANGELOG.md:1983 msgid "See our [Setting up maubot](docs/configuring-playbook-bot-maubot.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1759 +#: ../../../CHANGELOG.md:1986 msgid "2022-07-14" msgstr "" -#: ../../../CHANGELOG.md:1761 +#: ../../../CHANGELOG.md:1988 msgid "mx-puppet-skype removal" msgstr "" -#: ../../../CHANGELOG.md:1763 +#: ../../../CHANGELOG.md:1990 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:1765 +#: ../../../CHANGELOG.md:1992 msgid "To completely clean up your server from `mx-puppet-skype`'s presence on it:" msgstr "" -#: ../../../CHANGELOG.md:1767 +#: ../../../CHANGELOG.md:1994 msgid "ensure your Ansible configuration (`vars.yml` file) no longer contains `matrix_mx_puppet_skype_*` references" msgstr "" -#: ../../../CHANGELOG.md:1768 +#: ../../../CHANGELOG.md:1995 msgid "stop and disable the systemd service (run `systemctl disable --now matrix-mx-puppet-skype` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1769 +#: ../../../CHANGELOG.md:1996 msgid "delete the systemd service (run `rm /etc/systemd/system/matrix-mx-puppet-skype.service` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1770 +#: ../../../CHANGELOG.md:1997 msgid "delete `/matrix/mx-puppet-skype` (run `rm -rf /matrix/mx-puppet-skype` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1771 +#: ../../../CHANGELOG.md:1998 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:1773 +#: ../../../CHANGELOG.md:2000 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:1775 +#: ../../../CHANGELOG.md:2002 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:1777 +#: ../../../CHANGELOG.md:2004 msgid "signald (0.19.0+) upgrade requires data migration" msgstr "" -#: ../../../CHANGELOG.md:1779 +#: ../../../CHANGELOG.md:2006 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:1781 +#: ../../../CHANGELOG.md:2008 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:1783 +#: ../../../CHANGELOG.md:2010 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:1785 +#: ../../../CHANGELOG.md:2012 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:1787 +#: ../../../CHANGELOG.md:2014 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:1790 +#: ../../../CHANGELOG.md:2017 msgid "2022-07-05" msgstr "" -#: ../../../CHANGELOG.md:1792 +#: ../../../CHANGELOG.md:2019 msgid "Ntfy push notifications support" msgstr "" -#: ../../../CHANGELOG.md:1794 +#: ../../../CHANGELOG.md:2021 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:1796 +#: ../../../CHANGELOG.md:2023 msgid "See our [Setting up the ntfy push notifications server](docs/configuring-playbook-ntfy.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1799 +#: ../../../CHANGELOG.md:2026 msgid "2022-06-23" msgstr "" -#: ../../../CHANGELOG.md:1801 +#: ../../../CHANGELOG.md:2028 msgid "(Potential Backward Compatibility Break) Changes around metrics collection" msgstr "" -#: ../../../CHANGELOG.md:1803 +#: ../../../CHANGELOG.md:2030 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:1805 +#: ../../../CHANGELOG.md:2032 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:1807 +#: ../../../CHANGELOG.md:2034 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:1809 +#: ../../../CHANGELOG.md:2036 msgid "**If you are using the [Hookshot bridge](docs/configuring-playbook-bridge-hookshot.md)**, you may find that:" msgstr "" -#: ../../../CHANGELOG.md:1810 +#: ../../../CHANGELOG.md:2037 msgid "**Metrics may not be enabled by default anymore**:" msgstr "" -#: ../../../CHANGELOG.md:1811 +#: ../../../CHANGELOG.md:2038 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:1812 +#: ../../../CHANGELOG.md:2039 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:1813 +#: ../../../CHANGELOG.md:2040 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:1814 +#: ../../../CHANGELOG.md:2041 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:1816 +#: ../../../CHANGELOG.md:2043 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: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`." +#: ../../../CHANGELOG.md:2045 +msgid "**If you're using [postgres-exporter](docs/configuring-playbook-prometheus-grafana.md#enable-metrics-and-graphs-for-postgres-optional)** (`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:1820 +#: ../../../CHANGELOG.md:2047 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:1822 +#: ../../../CHANGELOG.md:2049 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:1823 +#: ../../../CHANGELOG.md:2050 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:1824 +#: ../../../CHANGELOG.md:2051 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:1825 +#: ../../../CHANGELOG.md:2052 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:1827 +#: ../../../CHANGELOG.md:2054 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:1829 +#: ../../../CHANGELOG.md:2056 msgid "2022-06-13" msgstr "" -#: ../../../CHANGELOG.md:1831 +#: ../../../CHANGELOG.md:2058 msgid "go-skype-bridge bridging support" msgstr "" -#: ../../../CHANGELOG.md:1833 +#: ../../../CHANGELOG.md:2060 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:1835 +#: ../../../CHANGELOG.md:2062 msgid "See our [Setting up Go Skype Bridge bridging](docs/configuring-playbook-bridge-go-skype-bridge.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1837 +#: ../../../CHANGELOG.md:2064 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:1840 +#: ../../../CHANGELOG.md:2067 msgid "2022-06-09" msgstr "" -#: ../../../CHANGELOG.md:1842 +#: ../../../CHANGELOG.md:2069 msgid "Running Ansible in a container can now happen on the Matrix server itself" msgstr "" -#: ../../../CHANGELOG.md:1844 +#: ../../../CHANGELOG.md:2071 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:1847 +#: ../../../CHANGELOG.md:2074 msgid "2022-05-31" msgstr "" -#: ../../../CHANGELOG.md:1849 +#: ../../../CHANGELOG.md:2076 msgid "Synapse v1.60 upgrade may cause trouble and require manual intervention" msgstr "" -#: ../../../CHANGELOG.md:1851 +#: ../../../CHANGELOG.md:2078 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:1853 +#: ../../../CHANGELOG.md:2080 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:1855 +#: ../../../CHANGELOG.md:2082 msgid "**If Synapse fails to start** after your next playbook run, you'll need to:" msgstr "" -#: ../../../CHANGELOG.md:1857 +#: ../../../CHANGELOG.md:2084 msgid "SSH into the Matrix server" msgstr "" -#: ../../../CHANGELOG.md:1858 +#: ../../../CHANGELOG.md:2085 msgid "launch `/usr/local/bin/matrix-postgres-cli`" msgstr "" -#: ../../../CHANGELOG.md:1859 +#: ../../../CHANGELOG.md:2086 msgid "switch to the `synapse` database: `\\c synapse`" msgstr "" -#: ../../../CHANGELOG.md:1860 +#: ../../../CHANGELOG.md:2087 msgid "run the following SQL query:" msgstr "" -#: ../../../CHANGELOG.md:1879 +#: ../../../CHANGELOG.md:2106 msgid "You could then restart services: `ansible-playbook -i inventory/hosts setup.yml --tags=start`" msgstr "" -#: ../../../CHANGELOG.md:1882 +#: ../../../CHANGELOG.md:2109 msgid "2022-04-25" msgstr "" -#: ../../../CHANGELOG.md:1884 +#: ../../../CHANGELOG.md:2111 msgid "Buscarron bot support" msgstr "" -#: ../../../CHANGELOG.md:1886 +#: ../../../CHANGELOG.md:2113 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:1888 +#: ../../../CHANGELOG.md:2115 msgid "See our [Setting up Buscarron](docs/configuring-playbook-bot-buscarron.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1891 +#: ../../../CHANGELOG.md:2118 msgid "2022-04-21" msgstr "" -#: ../../../CHANGELOG.md:1893 +#: ../../../CHANGELOG.md:2120 msgid "matrix-registration-bot support" msgstr "" -#: ../../../CHANGELOG.md:1895 +#: ../../../CHANGELOG.md:2122 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:1897 +#: ../../../CHANGELOG.md:2124 msgid "See our [Setting up matrix-registration-bot](docs/configuring-playbook-bot-matrix-registration-bot.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1900 +#: ../../../CHANGELOG.md:2127 msgid "2022-04-19" msgstr "" -#: ../../../CHANGELOG.md:1902 +#: ../../../CHANGELOG.md:2129 msgid "BorgBackup support" msgstr "" -#: ../../../CHANGELOG.md:1904 +#: ../../../CHANGELOG.md:2131 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:1906 +#: ../../../CHANGELOG.md:2133 msgid "See our [Setting up BorgBackup](docs/configuring-playbook-backup-borg.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:1908 +#: ../../../CHANGELOG.md:2135 msgid "(Compatibility Break) Upgrading to Synapse v1.57 on setups using workers may require manual action" msgstr "" -#: ../../../CHANGELOG.md:1910 +#: ../../../CHANGELOG.md:2137 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:1912 +#: ../../../CHANGELOG.md:2139 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:1914 +#: ../../../CHANGELOG.md:2141 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:1916 +#: ../../../CHANGELOG.md:2143 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:1918 +#: ../../../CHANGELOG.md:2145 msgid "Pull the latest playbook changes" msgstr "" -#: ../../../CHANGELOG.md:1919 +#: ../../../CHANGELOG.md:2146 msgid "Stop all services (`ansible-playbook -i inventory/hosts setup.yml --tags=stop`)" msgstr "" -#: ../../../CHANGELOG.md:1920 +#: ../../../CHANGELOG.md:2147 msgid "Re-run the playbook (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-all`)" msgstr "" -#: ../../../CHANGELOG.md:1921 +#: ../../../CHANGELOG.md:2148 msgid "Start Postgres (`systemctl start matrix-postgres` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1922 +#: ../../../CHANGELOG.md:2149 msgid "Start the main Synapse process (`systemctl start matrix-synapse` on the server)" msgstr "" -#: ../../../CHANGELOG.md:1923 +#: ../../../CHANGELOG.md:2150 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:1924 +#: ../../../CHANGELOG.md:2151 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:1927 +#: ../../../CHANGELOG.md:2154 msgid "2022-04-14" msgstr "" -#: ../../../CHANGELOG.md:1929 +#: ../../../CHANGELOG.md:2156 msgid "(Compatibility Break) Changes to `docker-src` permissions necessitating manual action" msgstr "" -#: ../../../CHANGELOG.md:1931 +#: ../../../CHANGELOG.md:2158 msgid "Users who build container images from source will need to manually correct file permissions of some directories on the server." msgstr "" -#: ../../../CHANGELOG.md:1933 +#: ../../../CHANGELOG.md:2160 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:1935 +#: ../../../CHANGELOG.md:2162 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:1937 +#: ../../../CHANGELOG.md:2164 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:1940 +#: ../../../CHANGELOG.md:2167 msgid "2022-03-17" msgstr "" -#: ../../../CHANGELOG.md:1942 +#: ../../../CHANGELOG.md:2169 msgid "(Compatibility Break) ma1sd identity server no longer installed by default" msgstr "" -#: ../../../CHANGELOG.md:1944 +#: ../../../CHANGELOG.md:2171 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:1946 +#: ../../../CHANGELOG.md:2173 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:1948 +#: ../../../CHANGELOG.md:2175 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:1950 +#: ../../../CHANGELOG.md:2177 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:1957 +#: ../../../CHANGELOG.md:2184 msgid "2022-02-12" msgstr "" -#: ../../../CHANGELOG.md:1959 +#: ../../../CHANGELOG.md:2186 msgid "matrix_encryption_disabler support" msgstr "" -#: ../../../CHANGELOG.md:1961 +#: ../../../CHANGELOG.md:2188 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:1963 +#: ../../../CHANGELOG.md:2190 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:1966 +#: ../../../CHANGELOG.md:2193 msgid "2022-02-01" msgstr "" -#: ../../../CHANGELOG.md:1968 +#: ../../../CHANGELOG.md:2195 msgid "matrix-hookshot bridging support" msgstr "" -#: ../../../CHANGELOG.md:1970 +#: ../../../CHANGELOG.md:2197 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:1973 +#: ../../../CHANGELOG.md:2200 msgid "2022-01-31" msgstr "" -#: ../../../CHANGELOG.md:1975 +#: ../../../CHANGELOG.md:2202 msgid "ARM support for matrix-corporal" msgstr "" -#: ../../../CHANGELOG.md:1977 +#: ../../../CHANGELOG.md:2204 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:1980 +#: ../../../CHANGELOG.md:2207 msgid "2022-01-07" msgstr "" -#: ../../../CHANGELOG.md:1982 +#: ../../../CHANGELOG.md:2209 msgid "Dendrite support" msgstr "" -#: ../../../CHANGELOG.md:1984 +#: ../../../CHANGELOG.md:2211 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:1986 +#: ../../../CHANGELOG.md:2213 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:1988 +#: ../../../CHANGELOG.md:2215 msgid "We believe that 2022 will be the year of the non-Synapse Matrix server!" msgstr "" -#: ../../../CHANGELOG.md:1990 +#: ../../../CHANGELOG.md:2217 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:1992 +#: ../../../CHANGELOG.md:2219 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:1994 +#: ../../../CHANGELOG.md:2221 msgid "Adapting the configuration for existing Synapse installations" msgstr "" -#: ../../../CHANGELOG.md:1996 +#: ../../../CHANGELOG.md:2223 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:1998 +#: ../../../CHANGELOG.md:2225 msgid "The `vars.yml` file for **existing installations will need to be updated** by adding this **additional configuration**:" msgstr "" -#: ../../../CHANGELOG.md:2010 +#: ../../../CHANGELOG.md:2237 msgid "Trying out Dendrite" msgstr "" -#: ../../../CHANGELOG.md:2012 +#: ../../../CHANGELOG.md:2239 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:2018 +#: ../../../CHANGELOG.md:2245 msgid "**The homeserver implementation of an existing server cannot be changed** (e.g. from Synapse to Dendrite) without data loss." msgstr "" -#: ../../../CHANGELOG.md:2020 +#: ../../../CHANGELOG.md:2247 msgid "We're excited to gain support for other homeserver implementations, like [Conduit](https://conduit.rs/), etc!" msgstr "" -#: ../../../CHANGELOG.md:2022 +#: ../../../CHANGELOG.md:2249 msgid "Honoroit bot support" msgstr "" -#: ../../../CHANGELOG.md:2024 +#: ../../../CHANGELOG.md:2251 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:2026 +#: ../../../CHANGELOG.md:2253 msgid "See our [Setting up Honoroit](docs/configuring-playbook-bot-honoroit.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:2029 +#: ../../../CHANGELOG.md:2256 msgid "2022-01-06" msgstr "" -#: ../../../CHANGELOG.md:2031 +#: ../../../CHANGELOG.md:2258 msgid "Cinny support" msgstr "" -#: ../../../CHANGELOG.md:2033 +#: ../../../CHANGELOG.md:2260 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:2035 +#: ../../../CHANGELOG.md:2262 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:2037 +#: ../../../CHANGELOG.md:2264 msgid "Additional details are available in [Setting up Cinny](docs/configuring-playbook-client-cinny.md)." msgstr "" -#: ../../../CHANGELOG.md:2040 +#: ../../../CHANGELOG.md:2267 msgid "2021-12-22" msgstr "" -#: ../../../CHANGELOG.md:2042 +#: ../../../CHANGELOG.md:2269 msgid "Twitter bridging support via mautrix-twitter" msgstr "" -#: ../../../CHANGELOG.md:2044 +#: ../../../CHANGELOG.md:2271 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:2047 +#: ../../../CHANGELOG.md:2274 msgid "2021-12-14" msgstr "" -#: ../../../CHANGELOG.md:2049 +#: ../../../CHANGELOG.md:2276 msgid "(Security) Users of the Signal bridge may wish to upgrade it to work around log4j vulnerability" msgstr "" -#: ../../../CHANGELOG.md:2051 +#: ../../../CHANGELOG.md:2278 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:2053 +#: ../../../CHANGELOG.md:2280 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:2056 +#: ../../../CHANGELOG.md:2283 msgid "2021-11-11" msgstr "" -#: ../../../CHANGELOG.md:2058 +#: ../../../CHANGELOG.md:2285 msgid "Dropped support for Postgres v9.6" msgstr "" -#: ../../../CHANGELOG.md:2060 +#: ../../../CHANGELOG.md:2287 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:2062 +#: ../../../CHANGELOG.md:2289 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:2065 +#: ../../../CHANGELOG.md:2292 msgid "2021-10-23" msgstr "" -#: ../../../CHANGELOG.md:2067 +#: ../../../CHANGELOG.md:2294 msgid "Hangouts bridge no longer updated, superseded by a Googlechat bridge" msgstr "" -#: ../../../CHANGELOG.md:2069 +#: ../../../CHANGELOG.md:2296 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:2071 +#: ../../../CHANGELOG.md:2298 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:2074 +#: ../../../CHANGELOG.md:2301 msgid "2021-08-23" msgstr "" -#: ../../../CHANGELOG.md:2076 +#: ../../../CHANGELOG.md:2303 msgid "LinkedIn bridging support via beeper-linkedin" msgstr "" -#: ../../../CHANGELOG.md:2078 +#: ../../../CHANGELOG.md:2305 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:2080 +#: ../../../CHANGELOG.md:2307 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:2082 +#: ../../../CHANGELOG.md:2309 msgid "To get started with bridging to LinkedIn, see [Setting up Beeper LinkedIn bridging](docs/configuring-playbook-bridge-beeper-linkedin.md)." msgstr "" -#: ../../../CHANGELOG.md:2085 +#: ../../../CHANGELOG.md:2312 msgid "2021-08-20" msgstr "" -#: ../../../CHANGELOG.md:2087 +#: ../../../CHANGELOG.md:2314 msgid "Sygnal upgraded — ARM support and no longer requires a database" msgstr "" -#: ../../../CHANGELOG.md:2089 +#: ../../../CHANGELOG.md:2316 msgid "The [Sygnal](docs/configuring-playbook-sygnal.md) push gateway has been upgraded from `v0.9.0` to `v0.10.1`." msgstr "" -#: ../../../CHANGELOG.md:2091 +#: ../../../CHANGELOG.md:2318 msgid "This is an optional component for the playbook, so most of our users wouldn't care about this announcement." msgstr "" -#: ../../../CHANGELOG.md:2093 +#: ../../../CHANGELOG.md:2320 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:2095 +#: ../../../CHANGELOG.md:2322 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:2098 +#: ../../../CHANGELOG.md:2325 msgid "2021-05-21" msgstr "" -#: ../../../CHANGELOG.md:2100 +#: ../../../CHANGELOG.md:2327 msgid "Hydrogen support" msgstr "" -#: ../../../CHANGELOG.md:2102 +#: ../../../CHANGELOG.md:2329 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:2104 +#: ../../../CHANGELOG.md:2331 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:2106 +#: ../../../CHANGELOG.md:2333 msgid "Additional details are available in [Setting up Hydrogen](docs/configuring-playbook-client-hydrogen.md)." msgstr "" -#: ../../../CHANGELOG.md:2109 +#: ../../../CHANGELOG.md:2336 msgid "2021-05-19" msgstr "" -#: ../../../CHANGELOG.md:2111 +#: ../../../CHANGELOG.md:2338 msgid "Heisenbridge support" msgstr "" -#: ../../../CHANGELOG.md:2113 +#: ../../../CHANGELOG.md:2340 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:2115 +#: ../../../CHANGELOG.md:2342 msgid "Additional details are available in [Setting up Heisenbridge bouncer-style IRC bridging](docs/configuring-playbook-bridge-heisenbridge.md)." msgstr "" -#: ../../../CHANGELOG.md:2118 +#: ../../../CHANGELOG.md:2345 msgid "2021-04-16" msgstr "" -#: ../../../CHANGELOG.md:2120 +#: ../../../CHANGELOG.md:2347 msgid "Disabling TLSv1 and TLSv1.1 for coturn" msgstr "" -#: ../../../CHANGELOG.md:2122 +#: ../../../CHANGELOG.md:2349 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:2124 +#: ../../../CHANGELOG.md:2351 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:2132 +#: ../../../CHANGELOG.md:2359 msgid "2021-04-05" msgstr "" -#: ../../../CHANGELOG.md:2134 +#: ../../../CHANGELOG.md:2361 msgid "Automated local Postgres backup support" msgstr "" -#: ../../../CHANGELOG.md:2136 +#: ../../../CHANGELOG.md:2363 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:2138 -msgid "Additional details are available in [Setting up postgres backup](docs/configuring-playbook-postgres-backup.md)." +#: ../../../CHANGELOG.md:2365 +msgid "Additional details are available in [Setting up Postgres backup](docs/configuring-playbook-postgres-backup.md)." msgstr "" -#: ../../../CHANGELOG.md:2141 +#: ../../../CHANGELOG.md:2368 msgid "2021-04-03" msgstr "" -#: ../../../CHANGELOG.md:2143 +#: ../../../CHANGELOG.md:2370 msgid "Mjolnir moderation tool (bot) support" msgstr "" -#: ../../../CHANGELOG.md:2145 +#: ../../../CHANGELOG.md:2372 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:2147 +#: ../../../CHANGELOG.md:2374 msgid "Additional details are available in [Setting up Mjolnir](docs/configuring-playbook-bot-mjolnir.md)." msgstr "" -#: ../../../CHANGELOG.md:2150 +#: ../../../CHANGELOG.md:2377 msgid "2021-03-20" msgstr "" -#: ../../../CHANGELOG.md:2152 +#: ../../../CHANGELOG.md:2379 msgid "Sygnal push gateway support" msgstr "" -#: ../../../CHANGELOG.md:2154 +#: ../../../CHANGELOG.md:2381 msgid "The playbook can now install the [Sygnal](https://github.com/matrix-org/sygnal) push gateway for you." msgstr "" -#: ../../../CHANGELOG.md:2156 +#: ../../../CHANGELOG.md:2383 msgid "This is only useful to people who develop/build their own Matrix client applications." msgstr "" -#: ../../../CHANGELOG.md:2158 +#: ../../../CHANGELOG.md:2385 msgid "Additional details are available in our [Setting up the Sygnal push gateway](docs/configuring-playbook-sygnal.md) docs." msgstr "" -#: ../../../CHANGELOG.md:2161 +#: ../../../CHANGELOG.md:2388 msgid "2021-03-16" msgstr "" -#: ../../../CHANGELOG.md:2163 +#: ../../../CHANGELOG.md:2390 msgid "Go-NEB support" msgstr "" -#: ../../../CHANGELOG.md:2165 +#: ../../../CHANGELOG.md:2392 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:2167 +#: ../../../CHANGELOG.md:2394 msgid "Additional details are available in [Setting up Go-NEB](docs/configuring-playbook-bot-go-neb.md)." msgstr "" -#: ../../../CHANGELOG.md:2170 +#: ../../../CHANGELOG.md:2397 msgid "2021-02-19" msgstr "" -#: ../../../CHANGELOG.md:2172 +#: ../../../CHANGELOG.md:2399 msgid "GroupMe bridging support via mx-puppet-groupme" msgstr "" -#: ../../../CHANGELOG.md:2174 +#: ../../../CHANGELOG.md:2401 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:2176 +#: ../../../CHANGELOG.md:2403 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:2178 +#: ../../../CHANGELOG.md:2405 msgid "To get started, follow our [Setting up MX Puppet GroupMe](docs/configuring-playbook-bridge-mx-puppet-groupme.md) docs." msgstr "" -#: ../../../CHANGELOG.md:2180 +#: ../../../CHANGELOG.md:2407 msgid "Mautrix Instagram bridging support" msgstr "" -#: ../../../CHANGELOG.md:2182 +#: ../../../CHANGELOG.md:2409 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:2184 +#: ../../../CHANGELOG.md:2411 msgid "Additional details are available in [Setting up Mautrix Instagram bridging](docs/configuring-playbook-bridge-mautrix-instagram.md)." msgstr "" -#: ../../../CHANGELOG.md:2186 +#: ../../../CHANGELOG.md:2413 msgid "Synapse workers support" msgstr "" -#: ../../../CHANGELOG.md:2188 +#: ../../../CHANGELOG.md:2415 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:2190 +#: ../../../CHANGELOG.md:2417 msgid "Having support for workers makes the playbook suitable for larger homeserver deployments." msgstr "" -#: ../../../CHANGELOG.md:2192 +#: ../../../CHANGELOG.md:2419 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:2194 +#: ../../../CHANGELOG.md:2421 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:2196 +#: ../../../CHANGELOG.md:2423 msgid "To enable Synapse workers, follow our [Load balancing with workers](docs/configuring-playbook-synapse.md#load-balancing-with-workers) documentation." msgstr "" -#: ../../../CHANGELOG.md:2199 +#: ../../../CHANGELOG.md:2426 msgid "2021-02-12" msgstr "" -#: ../../../CHANGELOG.md:2201 +#: ../../../CHANGELOG.md:2428 msgid "(Potential Breaking Change) Monitoring/metrics support using Prometheus and Grafana" msgstr "" -#: ../../../CHANGELOG.md:2203 +#: ../../../CHANGELOG.md:2430 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:2205 +#: ../../../CHANGELOG.md:2432 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:2207 +#: ../../../CHANGELOG.md:2434 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:2210 +#: ../../../CHANGELOG.md:2437 msgid "2021-01-31" msgstr "" -#: ../../../CHANGELOG.md:2212 +#: ../../../CHANGELOG.md:2439 msgid "Etherpad support" msgstr "" -#: ../../../CHANGELOG.md:2214 +#: ../../../CHANGELOG.md:2441 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:2216 +#: ../../../CHANGELOG.md:2443 msgid "To get it installed, follow [our Etherpad docs page](docs/configuring-playbook-etherpad.md)." msgstr "" -#: ../../../CHANGELOG.md:2219 +#: ../../../CHANGELOG.md:2446 msgid "2021-01-22" msgstr "" -#: ../../../CHANGELOG.md:2221 +#: ../../../CHANGELOG.md:2448 msgid "(Breaking Change) Postgres changes that require manual intervention" msgstr "" -#: ../../../CHANGELOG.md:2223 +#: ../../../CHANGELOG.md:2450 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:2225 +#: ../../../CHANGELOG.md:2452 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:2227 +#: ../../../CHANGELOG.md:2454 msgid "Why?" msgstr "" -#: ../../../CHANGELOG.md:2229 +#: ../../../CHANGELOG.md:2456 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:2230 +#: ../../../CHANGELOG.md:2457 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:2231 +#: ../../../CHANGELOG.md:2458 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:2232 +#: ../../../CHANGELOG.md:2459 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:2233 +#: ../../../CHANGELOG.md:2460 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:2234 +#: ../../../CHANGELOG.md:2461 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:2236 +#: ../../../CHANGELOG.md:2463 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:2238 +#: ../../../CHANGELOG.md:2465 msgid "What has really changed?" msgstr "" -#: ../../../CHANGELOG.md:2240 +#: ../../../CHANGELOG.md:2467 msgid "the default superuser Postgres username is now `matrix` (used to be `synapse`)" msgstr "" -#: ../../../CHANGELOG.md:2241 +#: ../../../CHANGELOG.md:2468 msgid "the default Postgres database is now `matrix` (used to be `homeserver`)" msgstr "" -#: ../../../CHANGELOG.md:2242 +#: ../../../CHANGELOG.md:2469 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:2243 +#: ../../../CHANGELOG.md:2470 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:2245 +#: ../../../CHANGELOG.md:2472 msgid "What do I do if I'm using the integrated Postgres server (default)?" msgstr "" -#: ../../../CHANGELOG.md:2247 +#: ../../../CHANGELOG.md:2474 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:2249 +#: ../../../CHANGELOG.md:2476 msgid "To migrate to the new setup, expect a few minutes of downtime, while you follow these steps:" msgstr "" -#: ../../../CHANGELOG.md:2251 +#: ../../../CHANGELOG.md:2478 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:2253 +#: ../../../CHANGELOG.md:2480 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:2255 +#: ../../../CHANGELOG.md:2482 msgid "Update your playbook's `inventory/host_vars/matrix.example.com/vars.yml` file, adding a line like this:" msgstr "" -#: ../../../CHANGELOG.md:2260 -#: ../../../CHANGELOG.md:2272 +#: ../../../CHANGELOG.md:2487 +#: ../../../CHANGELOG.md:2499 msgid "… where `YOUR_POSTGRES_PASSWORD_HERE` is to be replaced with the password you generated during step #2." msgstr "" -#: ../../../CHANGELOG.md:2262 +#: ../../../CHANGELOG.md:2489 msgid "Stop all services: `ansible-playbook -i inventory/hosts setup.yml --tags=stop`" msgstr "" -#: ../../../CHANGELOG.md:2263 +#: ../../../CHANGELOG.md:2490 msgid "Log in to the server via SSH. The next commands will be performed there." msgstr "" -#: ../../../CHANGELOG.md:2264 +#: ../../../CHANGELOG.md:2491 msgid "Start the Postgres database server: `systemctl start matrix-postgres`" msgstr "" -#: ../../../CHANGELOG.md:2265 +#: ../../../CHANGELOG.md:2492 msgid "Open a Postgres shell: `/usr/local/bin/matrix-postgres-cli`" msgstr "" -#: ../../../CHANGELOG.md:2266 +#: ../../../CHANGELOG.md:2493 msgid "Execute the following query, while making sure to **change the password inside** (**don't forget the ending `;`**):" msgstr "" -#: ../../../CHANGELOG.md:2274 +#: ../../../CHANGELOG.md:2501 msgid "Execute the following queries as you see them (no modifications necessary, so you can just **paste them all at once**):" msgstr "" -#: ../../../CHANGELOG.md:2292 +#: ../../../CHANGELOG.md:2519 msgid "You may need to press *Enter* after pasting the lines above." msgstr "" -#: ../../../CHANGELOG.md:2294 +#: ../../../CHANGELOG.md:2521 msgid "Re-run the playbook normally: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`" msgstr "" -#: ../../../CHANGELOG.md:2296 +#: ../../../CHANGELOG.md:2523 msgid "What do I do if I'm using an external Postgres server?" msgstr "" -#: ../../../CHANGELOG.md:2298 +#: ../../../CHANGELOG.md:2525 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:2300 +#: ../../../CHANGELOG.md:2527 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:2303 +#: ../../../CHANGELOG.md:2530 msgid "2021-01-20" msgstr "" -#: ../../../CHANGELOG.md:2305 +#: ../../../CHANGELOG.md:2532 msgid "(Breaking Change) The mautrix-facebook bridge now requires a Postgres database" msgstr "" -#: ../../../CHANGELOG.md:2307 +#: ../../../CHANGELOG.md:2534 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:2309 +#: ../../../CHANGELOG.md:2536 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:2311 +#: ../../../CHANGELOG.md:2538 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:2313 +#: ../../../CHANGELOG.md:2540 msgid "Whether this change requires your intervention depends mostly on:" msgstr "" -#: ../../../CHANGELOG.md:2314 +#: ../../../CHANGELOG.md:2541 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:2315 +#: ../../../CHANGELOG.md:2542 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:2317 +#: ../../../CHANGELOG.md:2544 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:2319 +#: ../../../CHANGELOG.md:2546 msgid "Upgrade path for people NOT running an external Postgres server (default for the playbook)" msgstr "" -#: ../../../CHANGELOG.md:2321 +#: ../../../CHANGELOG.md:2548 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:2323 +#: ../../../CHANGELOG.md:2550 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:2325 +#: ../../../CHANGELOG.md:2552 msgid "Alternatively, [you can stay on SQLite for a little longer](#staying-on-sqlite-for-a-little-longer-temporary-solution)." msgstr "" -#: ../../../CHANGELOG.md:2327 +#: ../../../CHANGELOG.md:2554 msgid "Upgrade path for people running an external Postgres server" msgstr "" -#: ../../../CHANGELOG.md:2329 +#: ../../../CHANGELOG.md:2556 msgid "For people using the internal Postgres server (the default for the playbook):" msgstr "" -#: ../../../CHANGELOG.md:2330 +#: ../../../CHANGELOG.md:2557 msgid "we automatically create an additional `matrix_mautrix_facebook` Postgres database and credentials to access it" msgstr "" -#: ../../../CHANGELOG.md:2331 +#: ../../../CHANGELOG.md:2558 msgid "we automatically adjust the bridge's `matrix_mautrix_facebook_database_*` variables to point the bridge to that Postgres database" msgstr "" -#: ../../../CHANGELOG.md:2332 +#: ../../../CHANGELOG.md:2559 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:2334 +#: ../../../CHANGELOG.md:2561 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:2336 +#: ../../../CHANGELOG.md:2563 msgid "You have 3 ways to proceed:" msgstr "" -#: ../../../CHANGELOG.md:2338 +#: ../../../CHANGELOG.md:2565 msgid "contribute to the playbook to make this possible (difficult)" msgstr "" -#: ../../../CHANGELOG.md:2339 +#: ../../../CHANGELOG.md:2566 msgid "or, do the migration \"steps\" manually:" msgstr "" -#: ../../../CHANGELOG.md:2340 +#: ../../../CHANGELOG.md:2567 msgid "stop the bridge (`systemctl stop matrix-mautrix-facebook`)" msgstr "" -#: ../../../CHANGELOG.md:2341 +#: ../../../CHANGELOG.md:2568 msgid "create a new `matrix_mautrix_facebook` Postgres database for it" msgstr "" -#: ../../../CHANGELOG.md:2342 +#: ../../../CHANGELOG.md:2569 msgid "run [pgloader](https://pgloader.io/) manually (we import this bridge's data using default settings and it works well)" msgstr "" -#: ../../../CHANGELOG.md:2343 +#: ../../../CHANGELOG.md:2570 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:2344 +#: ../../../CHANGELOG.md:2571 msgid "switch the bridge to Postgres (`matrix_mautrix_facebook_database_engine: 'postgres'` in your `vars.yml` file)" msgstr "" -#: ../../../CHANGELOG.md:2345 +#: ../../../CHANGELOG.md:2572 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:2346 +#: ../../../CHANGELOG.md:2573 msgid "send a `login` message to the Facebook bridge bot again" msgstr "" -#: ../../../CHANGELOG.md:2347 +#: ../../../CHANGELOG.md:2574 msgid "or, [stay on SQLite for a little longer (temporary solution)](#staying-on-sqlite-for-a-little-longer-temporary-solution)" msgstr "" -#: ../../../CHANGELOG.md:2349 +#: ../../../CHANGELOG.md:2576 msgid "Staying on SQLite for a little longer (temporary solution)" msgstr "" -#: ../../../CHANGELOG.md:2351 +#: ../../../CHANGELOG.md:2578 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:2361 +#: ../../../CHANGELOG.md:2588 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:2364 +#: ../../../CHANGELOG.md:2591 msgid "2021-01-17" msgstr "" -#: ../../../CHANGELOG.md:2366 +#: ../../../CHANGELOG.md:2593 msgid "matrix-corporal goes 2.0" msgstr "" -#: ../../../CHANGELOG.md:2368 +#: ../../../CHANGELOG.md:2595 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:2370 +#: ../../../CHANGELOG.md:2597 msgid "No manual intervention is required in the common case." msgstr "" -#: ../../../CHANGELOG.md:2372 +#: ../../../CHANGELOG.md:2599 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:2375 +#: ../../../CHANGELOG.md:2602 msgid "2021-01-14" msgstr "" -#: ../../../CHANGELOG.md:2377 +#: ../../../CHANGELOG.md:2604 msgid "Moving from cronjobs to systemd timers" msgstr "" -#: ../../../CHANGELOG.md:2379 +#: ../../../CHANGELOG.md:2606 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:2381 +#: ../../../CHANGELOG.md:2608 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:2383 +#: ../../../CHANGELOG.md:2610 msgid "The playbook will migrate you from cronjobs to systemd timers automatically. This is just a heads up." msgstr "" -#: ../../../CHANGELOG.md:2386 +#: ../../../CHANGELOG.md:2613 msgid "2021-01-08" msgstr "" -#: ../../../CHANGELOG.md:2388 +#: ../../../CHANGELOG.md:2615 msgid "(Breaking Change) New SSL configuration" msgstr "" -#: ../../../CHANGELOG.md:2390 +#: ../../../CHANGELOG.md:2617 msgid "SSL configuration (protocols, ciphers) can now be more easily controlled thanks to us making use of configuration presets." msgstr "" -#: ../../../CHANGELOG.md:2392 +#: ../../../CHANGELOG.md:2619 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:2394 +#: ../../../CHANGELOG.md:2621 msgid "A new variable `matrix_nginx_proxy_ssl_preset` controls which preset is used (defaults to `\"intermediate\"`)." msgstr "" -#: ../../../CHANGELOG.md:2396 +#: ../../../CHANGELOG.md:2623 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:2398 +#: ../../../CHANGELOG.md:2625 msgid "To revert to the old behaviour, set the following variables:" msgstr "" -#: ../../../CHANGELOG.md:2405 +#: ../../../CHANGELOG.md:2632 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:2408 +#: ../../../CHANGELOG.md:2635 msgid "2021-01-03" msgstr "" -#: ../../../CHANGELOG.md:2410 +#: ../../../CHANGELOG.md:2637 msgid "Signal bridging support via mautrix-signal" msgstr "" -#: ../../../CHANGELOG.md:2412 +#: ../../../CHANGELOG.md:2639 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:2414 +#: ../../../CHANGELOG.md:2641 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:2417 +#: ../../../CHANGELOG.md:2644 msgid "2020-12-23" msgstr "" -#: ../../../CHANGELOG.md:2419 +#: ../../../CHANGELOG.md:2646 msgid "The big move to all-on-Postgres (potentially dangerous)" msgstr "" -#: ../../../CHANGELOG.md:2421 +#: ../../../CHANGELOG.md:2648 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:2423 +#: ../../../CHANGELOG.md:2650 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:2425 +#: ../../../CHANGELOG.md:2652 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:2427 +#: ../../../CHANGELOG.md:2654 msgid "Moving all services to Postgres brings a few **benefits** to us:" msgstr "" -#: ../../../CHANGELOG.md:2429 +#: ../../../CHANGELOG.md:2656 msgid "**improved performance**" msgstr "" -#: ../../../CHANGELOG.md:2430 +#: ../../../CHANGELOG.md:2657 msgid "**improved compatibility**. Most bridges are deprecating SQLite/nedb support or offer less features when not on Postgres." msgstr "" -#: ../../../CHANGELOG.md:2431 +#: ../../../CHANGELOG.md:2658 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:2432 +#: ../../../CHANGELOG.md:2659 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:2434 +#: ../../../CHANGELOG.md:2661 msgid "Key takeway" msgstr "" -#: ../../../CHANGELOG.md:2436 +#: ../../../CHANGELOG.md:2663 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:2438 +#: ../../../CHANGELOG.md:2665 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:2440 +#: ../../../CHANGELOG.md:2667 msgid "Opting-out of the Postgres migration" msgstr "" -#: ../../../CHANGELOG.md:2442 +#: ../../../CHANGELOG.md:2669 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:2444 +#: ../../../CHANGELOG.md:2671 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:2446 +#: ../../../CHANGELOG.md:2673 msgid "Some services (like `appservice-irc` and `appservice-slack`) don't use SQLite, so use `nedb`, instead of `sqlite` for them." msgstr "" -#: ../../../CHANGELOG.md:2448 +#: ../../../CHANGELOG.md:2675 msgid "Going back to SQLite/nedb if things went wrong" msgstr "" -#: ../../../CHANGELOG.md:2450 +#: ../../../CHANGELOG.md:2677 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:2452 +#: ../../../CHANGELOG.md:2679 msgid "stop all services (`ansible-playbook -i inventory/hosts setup.yml --tags=stop`)" msgstr "" -#: ../../../CHANGELOG.md:2453 +#: ../../../CHANGELOG.md:2680 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:2454 +#: ../../../CHANGELOG.md:2681 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:2455 +#: ../../../CHANGELOG.md:2682 msgid "re-run the playbook (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`)" msgstr "" -#: ../../../CHANGELOG.md:2456 +#: ../../../CHANGELOG.md:2683 msgid "[get in touch](README.md#support) with us" msgstr "" -#: ../../../CHANGELOG.md:2458 +#: ../../../CHANGELOG.md:2685 msgid "2020-12-11" msgstr "" -#: ../../../CHANGELOG.md:2460 +#: ../../../CHANGELOG.md:2687 msgid "synapse-janitor support removed" msgstr "" -#: ../../../CHANGELOG.md:2462 +#: ../../../CHANGELOG.md:2689 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:2464 +#: ../../../CHANGELOG.md:2691 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:2466 +#: ../../../CHANGELOG.md:2693 msgid "Docker 20.10 is here" msgstr "" -#: ../../../CHANGELOG.md:2468 +#: ../../../CHANGELOG.md:2695 msgid "(No need to do anything special in relation to this. Just something to keep in mind)" msgstr "" -#: ../../../CHANGELOG.md:2470 +#: ../../../CHANGELOG.md:2697 msgid "Docker 20.10 got released recently and your server will likely get it the next time you update." msgstr "" -#: ../../../CHANGELOG.md:2472 +#: ../../../CHANGELOG.md:2699 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:2475 +#: ../../../CHANGELOG.md:2702 msgid "2020-12-08" msgstr "" -#: ../../../CHANGELOG.md:2477 +#: ../../../CHANGELOG.md:2704 msgid "openid APIs exposed by default on the federation port when federation disabled" msgstr "" -#: ../../../CHANGELOG.md:2479 +#: ../../../CHANGELOG.md:2706 msgid "We've changed some defaults. People running with our default configuration (federation enabled), are not affected at all." msgstr "" -#: ../../../CHANGELOG.md:2481 +#: ../../../CHANGELOG.md:2708 msgid "If you are running an unfederated server (`matrix_synapse_federation_enabled: false`), this may be of interest to you." msgstr "" -#: ../../../CHANGELOG.md:2483 +#: ../../../CHANGELOG.md:2710 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:2486 +#: ../../../CHANGELOG.md:2713 msgid "2020-11-27" msgstr "" -#: ../../../CHANGELOG.md:2488 +#: ../../../CHANGELOG.md:2715 msgid "Recent Jitsi updates may require configuration changes" msgstr "" -#: ../../../CHANGELOG.md:2490 +#: ../../../CHANGELOG.md:2717 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:2492 +#: ../../../CHANGELOG.md:2719 msgid "**If you use our default Jitsi settings, you won't have to do anything.**" msgstr "" -#: ../../../CHANGELOG.md:2494 +#: ../../../CHANGELOG.md:2721 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:2496 +#: ../../../CHANGELOG.md:2723 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:2498 +#: ../../../CHANGELOG.md:2725 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:2501 +#: ../../../CHANGELOG.md:2728 msgid "2020-11-23" msgstr "" -#: ../../../CHANGELOG.md:2503 -#: ../../../CHANGELOG.md:2511 +#: ../../../CHANGELOG.md:2730 +#: ../../../CHANGELOG.md:2738 msgid "Breaking change matrix-sms-bridge" msgstr "" -#: ../../../CHANGELOG.md:2505 +#: ../../../CHANGELOG.md:2732 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:2507 +#: ../../../CHANGELOG.md:2734 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:2509 +#: ../../../CHANGELOG.md:2736 msgid "2020-11-13" msgstr "" -#: ../../../CHANGELOG.md:2513 +#: ../../../CHANGELOG.md:2740 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:2515 +#: ../../../CHANGELOG.md:2742 msgid "Add the following to your `vars.yml` file: `matrix_sms_bridge_container_extra_arguments=['--env SPRING_PROFILES_ACTIVE=initialsync']`" msgstr "" -#: ../../../CHANGELOG.md:2516 +#: ../../../CHANGELOG.md:2743 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:2517 +#: ../../../CHANGELOG.md:2744 msgid "Run `ansible-playbook -i inventory/hosts setup.yml --tags=setup-matrix-sms-bridge,start`" msgstr "" -#: ../../../CHANGELOG.md:2518 +#: ../../../CHANGELOG.md:2745 msgid "Login to your host shell and check the logs with `journalctl -u matrix-sms-bridge` until the sync finished." msgstr "" -#: ../../../CHANGELOG.md:2519 +#: ../../../CHANGELOG.md:2746 msgid "Remove the var from the first step." msgstr "" -#: ../../../CHANGELOG.md:2520 +#: ../../../CHANGELOG.md:2747 msgid "Run `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`." msgstr "" -#: ../../../CHANGELOG.md:2522 +#: ../../../CHANGELOG.md:2749 msgid "2020-11-10" msgstr "" -#: ../../../CHANGELOG.md:2524 +#: ../../../CHANGELOG.md:2751 msgid "Dynamic DNS support" msgstr "" -#: ../../../CHANGELOG.md:2526 +#: ../../../CHANGELOG.md:2753 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:2528 +#: ../../../CHANGELOG.md:2755 msgid "To learn more, follow our [Dynamic DNS docs page](docs/configuring-playbook-dynamic-dns.md)." msgstr "" -#: ../../../CHANGELOG.md:2531 +#: ../../../CHANGELOG.md:2758 msgid "2020-10-28" msgstr "" -#: ../../../CHANGELOG.md:2533 +#: ../../../CHANGELOG.md:2760 msgid "(Compatibility Break) https://matrix.example.com/ now redirects to https://element.example.com/" msgstr "" -#: ../../../CHANGELOG.md:2535 +#: ../../../CHANGELOG.md:2762 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:2537 +#: ../../../CHANGELOG.md:2764 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:2539 +#: ../../../CHANGELOG.md:2766 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:2541 +#: ../../../CHANGELOG.md:2768 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:2544 +#: ../../../CHANGELOG.md:2771 msgid "2020-10-26" msgstr "" -#: ../../../CHANGELOG.md:2546 +#: ../../../CHANGELOG.md:2773 msgid "(Compatibility Break) /_synapse/admin is no longer publicly exposed by default" msgstr "" -#: ../../../CHANGELOG.md:2548 +#: ../../../CHANGELOG.md:2775 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:2550 +#: ../../../CHANGELOG.md:2777 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:2552 +#: ../../../CHANGELOG.md:2779 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:2559 +#: ../../../CHANGELOG.md:2786 msgid "2020-10-02" msgstr "" -#: ../../../CHANGELOG.md:2561 +#: ../../../CHANGELOG.md:2788 msgid "Minimum Ansible version raised to v2.7.0" msgstr "" -#: ../../../CHANGELOG.md:2563 +#: ../../../CHANGELOG.md:2790 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:2565 +#: ../../../CHANGELOG.md:2792 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:2567 +#: ../../../CHANGELOG.md:2794 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:2570 +#: ../../../CHANGELOG.md:2797 msgid "2020-10-01" msgstr "" -#: ../../../CHANGELOG.md:2572 +#: ../../../CHANGELOG.md:2799 msgid "Postgres 13 support" msgstr "" -#: ../../../CHANGELOG.md:2574 +#: ../../../CHANGELOG.md:2801 msgid "The playbook now installs [Postgres 13](https://www.postgresql.org/about/news/postgresql-13-released-2077/) by default." msgstr "" -#: ../../../CHANGELOG.md:2576 +#: ../../../CHANGELOG.md:2803 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:2578 +#: ../../../CHANGELOG.md:2805 msgid "2020-09-01" msgstr "" -#: ../../../CHANGELOG.md:2580 +#: ../../../CHANGELOG.md:2807 msgid "matrix-registration support" msgstr "" -#: ../../../CHANGELOG.md:2582 +#: ../../../CHANGELOG.md:2809 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:2584 +#: ../../../CHANGELOG.md:2811 msgid "See our [Setting up matrix-registration](docs/configuring-playbook-matrix-registration.md) documentation page to get started." msgstr "" -#: ../../../CHANGELOG.md:2587 +#: ../../../CHANGELOG.md:2814 msgid "2020-08-21" msgstr "" -#: ../../../CHANGELOG.md:2589 +#: ../../../CHANGELOG.md:2816 msgid "rust-synapse-compress-state support" msgstr "" -#: ../../../CHANGELOG.md:2591 +#: ../../../CHANGELOG.md:2818 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:2593 +#: ../../../CHANGELOG.md:2820 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:2596 +#: ../../../CHANGELOG.md:2823 msgid "2020-07-22" msgstr "" -#: ../../../CHANGELOG.md:2598 +#: ../../../CHANGELOG.md:2825 msgid "Synapse Admin support" msgstr "" -#: ../../../CHANGELOG.md:2600 +#: ../../../CHANGELOG.md:2827 msgid "The playbook can now help you set up [synapse-admin](https://github.com/Awesome-Technologies/synapse-admin)." msgstr "" -#: ../../../CHANGELOG.md:2602 +#: ../../../CHANGELOG.md:2829 msgid "See our [Setting up Synapse Admin](docs/configuring-playbook-synapse-admin.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:2605 +#: ../../../CHANGELOG.md:2832 msgid "2020-07-20" msgstr "" -#: ../../../CHANGELOG.md:2607 +#: ../../../CHANGELOG.md:2834 msgid "matrix-reminder-bot support" msgstr "" -#: ../../../CHANGELOG.md:2609 +#: ../../../CHANGELOG.md:2836 msgid "The playbook can now help you set up [matrix-reminder-bot](https://github.com/anoadragon453/matrix-reminder-bot)." msgstr "" -#: ../../../CHANGELOG.md:2611 +#: ../../../CHANGELOG.md:2838 msgid "See our [Setting up matrix-reminder-bot](docs/configuring-playbook-bot-matrix-reminder-bot.md) documentation to get started." msgstr "" -#: ../../../CHANGELOG.md:2614 +#: ../../../CHANGELOG.md:2841 msgid "2020-07-17" msgstr "" -#: ../../../CHANGELOG.md:2616 +#: ../../../CHANGELOG.md:2843 msgid "(Compatibility Break) Riot is now Element" msgstr "" -#: ../../../CHANGELOG.md:2618 +#: ../../../CHANGELOG.md:2845 msgid "As per the official announcement, [Riot has been rebraned to Element](https://element.io/blog/welcome-to-element/)." msgstr "" -#: ../../../CHANGELOG.md:2620 +#: ../../../CHANGELOG.md:2847 msgid "The playbook follows suit. Existing installations have a few options for how to handle this." msgstr "" -#: ../../../CHANGELOG.md:2622 +#: ../../../CHANGELOG.md:2849 msgid "See our [Migrating to Element Web](docs/configuring-playbook-riot-web.md#migrating-to-element) documentation page for more details." msgstr "" -#: ../../../CHANGELOG.md:2625 +#: ../../../CHANGELOG.md:2852 msgid "2020-07-03" msgstr "" -#: ../../../CHANGELOG.md:2627 +#: ../../../CHANGELOG.md:2854 msgid "Steam bridging support via mx-puppet-steam" msgstr "" -#: ../../../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." +#: ../../../CHANGELOG.md:2856 +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://codeberg.org/icewind/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:2632 +#: ../../../CHANGELOG.md:2859 msgid "2020-07-01" msgstr "" -#: ../../../CHANGELOG.md:2634 +#: ../../../CHANGELOG.md:2861 msgid "Discord bridging support via mx-puppet-discord" msgstr "" -#: ../../../CHANGELOG.md:2636 +#: ../../../CHANGELOG.md:2863 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:2638 +#: ../../../CHANGELOG.md:2865 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:2641 +#: ../../../CHANGELOG.md:2868 msgid "2020-06-30" msgstr "" -#: ../../../CHANGELOG.md:2643 +#: ../../../CHANGELOG.md:2870 msgid "Instagram and Twitter bridging support" msgstr "" -#: ../../../CHANGELOG.md:2645 +#: ../../../CHANGELOG.md:2872 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:2647 +#: ../../../CHANGELOG.md:2874 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:2650 +#: ../../../CHANGELOG.md:2877 msgid "2020-06-28" msgstr "" -#: ../../../CHANGELOG.md:2652 +#: ../../../CHANGELOG.md:2879 msgid "(Post Mortem / fixed Security Issue) Re-enabling User Directory search powered by the ma1sd Identity Server" msgstr "" -#: ../../../CHANGELOG.md:2654 -#: ../../../CHANGELOG.md:2683 +#: ../../../CHANGELOG.md:2881 +#: ../../../CHANGELOG.md:2910 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:2656 +#: ../../../CHANGELOG.md:2883 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:2658 +#: ../../../CHANGELOG.md:2885 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:2660 +#: ../../../CHANGELOG.md:2887 msgid "As always, re-running the playbook is enough to get the updated bits." msgstr "" -#: ../../../CHANGELOG.md:2662 +#: ../../../CHANGELOG.md:2889 msgid "2020-06-11" msgstr "" -#: ../../../CHANGELOG.md:2664 +#: ../../../CHANGELOG.md:2891 msgid "SMS bridging requires db reset" msgstr "" -#: ../../../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`." +#: ../../../CHANGELOG.md:2893 +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 required var `matrix_sms_bridge_default_region`." msgstr "" -#: ../../../CHANGELOG.md:2668 +#: ../../../CHANGELOG.md:2895 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:2670 +#: ../../../CHANGELOG.md:2897 msgid "2020-06-05" msgstr "" -#: ../../../CHANGELOG.md:2672 +#: ../../../CHANGELOG.md:2899 msgid "SMS bridging support" msgstr "" -#: ../../../CHANGELOG.md:2674 +#: ../../../CHANGELOG.md:2901 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:2676 +#: ../../../CHANGELOG.md:2903 msgid "See our [Setting up Matrix SMS bridging](docs/configuring-playbook-bridge-matrix-bridge-sms.md) documentation page for getting started." msgstr "" -#: ../../../CHANGELOG.md:2679 +#: ../../../CHANGELOG.md:2906 msgid "2020-05-19" msgstr "" -#: ../../../CHANGELOG.md:2681 +#: ../../../CHANGELOG.md:2908 msgid "(Compatibility Break / Security Issue) Disabling User Directory search powered by the ma1sd Identity Server" msgstr "" -#: ../../../CHANGELOG.md:2685 +#: ../../../CHANGELOG.md:2912 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:2687 +#: ../../../CHANGELOG.md:2914 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:2689 +#: ../../../CHANGELOG.md:2916 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:2692 +#: ../../../CHANGELOG.md:2919 msgid "2020-04-28" msgstr "" -#: ../../../CHANGELOG.md:2694 +#: ../../../CHANGELOG.md:2921 msgid "Newer IRC bridge (with potential breaking change)" msgstr "" -#: ../../../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." +#: ../../../CHANGELOG.md:2923 +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 according 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:2705 +#: ../../../CHANGELOG.md:2932 msgid "2020-04-23" msgstr "" -#: ../../../CHANGELOG.md:2707 -#: ../../../CHANGELOG.md:2938 +#: ../../../CHANGELOG.md:2934 +#: ../../../CHANGELOG.md:3165 msgid "Slack bridging support" msgstr "" -#: ../../../CHANGELOG.md:2709 +#: ../../../CHANGELOG.md:2936 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:2711 +#: ../../../CHANGELOG.md:2938 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:2714 +#: ../../../CHANGELOG.md:2941 msgid "2020-04-09" msgstr "" -#: ../../../CHANGELOG.md:2716 +#: ../../../CHANGELOG.md:2943 msgid "Skype bridging support" msgstr "" -#: ../../../CHANGELOG.md:2718 +#: ../../../CHANGELOG.md:2945 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:2720 +#: ../../../CHANGELOG.md:2947 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:2723 +#: ../../../CHANGELOG.md:2950 msgid "2020-04-05" msgstr "" -#: ../../../CHANGELOG.md:2725 +#: ../../../CHANGELOG.md:2952 msgid "Private Jitsi support" msgstr "" -#: ../../../CHANGELOG.md:2727 +#: ../../../CHANGELOG.md:2954 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:2729 +#: ../../../CHANGELOG.md:2956 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:2731 +#: ../../../CHANGELOG.md:2958 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:2734 +#: ../../../CHANGELOG.md:2961 msgid "2020-04-03" msgstr "" -#: ../../../CHANGELOG.md:2736 +#: ../../../CHANGELOG.md:2963 msgid "(Potential Backward Compatibility Break) ma1sd replaces mxisd" msgstr "" -#: ../../../CHANGELOG.md:2738 +#: ../../../CHANGELOG.md:2965 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:2740 +#: ../../../CHANGELOG.md:2967 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:2742 +#: ../../../CHANGELOG.md:2969 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:2745 +#: ../../../CHANGELOG.md:2972 msgid "2020-03-29" msgstr "" -#: ../../../CHANGELOG.md:2747 +#: ../../../CHANGELOG.md:2974 msgid "Archlinux support" msgstr "" -#: ../../../CHANGELOG.md:2749 +#: ../../../CHANGELOG.md:2976 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:2752 +#: ../../../CHANGELOG.md:2979 msgid "2020-03-24" msgstr "" -#: ../../../CHANGELOG.md:2754 +#: ../../../CHANGELOG.md:2981 msgid "Jitsi support" msgstr "" -#: ../../../CHANGELOG.md:2756 +#: ../../../CHANGELOG.md:2983 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:2758 +#: ../../../CHANGELOG.md:2985 msgid "See our [Jitsi documentation page](docs/configuring-playbook-jitsi.md) to get started." msgstr "" -#: ../../../CHANGELOG.md:2761 +#: ../../../CHANGELOG.md:2988 msgid "2020-03-15" msgstr "" -#: ../../../CHANGELOG.md:2763 +#: ../../../CHANGELOG.md:2990 msgid "Raspberry Pi support" msgstr "" -#: ../../../CHANGELOG.md:2765 +#: ../../../CHANGELOG.md:2992 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:2767 +#: ../../../CHANGELOG.md:2994 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:2770 +#: ../../../CHANGELOG.md:2997 msgid "2020-02-26" msgstr "" -#: ../../../CHANGELOG.md:2772 +#: ../../../CHANGELOG.md:2999 msgid "Riot-web themes are here" msgstr "" -#: ../../../CHANGELOG.md:2774 +#: ../../../CHANGELOG.md:3001 msgid "The playbook now makes it easy to install custom riot-web themes." msgstr "" -#: ../../../CHANGELOG.md:2776 +#: ../../../CHANGELOG.md:3003 msgid "To learn more, take a look at our [riot-web documentation on Themes](docs/configuring-playbook-riot-web.md#themes)." msgstr "" -#: ../../../CHANGELOG.md:2779 +#: ../../../CHANGELOG.md:3006 msgid "2020-02-24" msgstr "" -#: ../../../CHANGELOG.md:2781 +#: ../../../CHANGELOG.md:3008 msgid "Customize the server name in Riot's login page" msgstr "" -#: ../../../CHANGELOG.md:2783 +#: ../../../CHANGELOG.md:3010 msgid "You can now customize the server name string that Riot-web displays in its login page." msgstr "" -#: ../../../CHANGELOG.md:2785 +#: ../../../CHANGELOG.md:3012 msgid "These playbook variables, with these default values, have been added:" msgstr "" -#: ../../../CHANGELOG.md:2791 +#: ../../../CHANGELOG.md:3018 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:2793 +#: ../../../CHANGELOG.md:3020 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:2796 +#: ../../../CHANGELOG.md:3023 msgid "2020-01-30" msgstr "" -#: ../../../CHANGELOG.md:2798 +#: ../../../CHANGELOG.md:3025 msgid "Disabling TLSv1.1" msgstr "" -#: ../../../CHANGELOG.md:2800 +#: ../../../CHANGELOG.md:3027 msgid "To improve security, we've removed TLSv1.1 support from our default matrix-nginx-proxy configuration." msgstr "" -#: ../../../CHANGELOG.md:2802 +#: ../../../CHANGELOG.md:3029 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:2805 +#: ../../../CHANGELOG.md:3032 msgid "2020-01-21" msgstr "" -#: ../../../CHANGELOG.md:2807 +#: ../../../CHANGELOG.md:3034 msgid "Postgres collation changes (action required!)" msgstr "" -#: ../../../CHANGELOG.md:2809 +#: ../../../CHANGELOG.md:3036 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:2811 +#: ../../../CHANGELOG.md:3038 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:2813 +#: ../../../CHANGELOG.md:3040 msgid "To avoid future problems, we recommend that you run the following command:" msgstr "" -#: ../../../CHANGELOG.md:2819 +#: ../../../CHANGELOG.md:3046 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:2822 +#: ../../../CHANGELOG.md:3049 msgid "2020-01-14" msgstr "" -#: ../../../CHANGELOG.md:2824 +#: ../../../CHANGELOG.md:3051 msgid "Added support for Appservice Webhooks" msgstr "" -#: ../../../CHANGELOG.md:2826 +#: ../../../CHANGELOG.md:3053 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:2828 +#: ../../../CHANGELOG.md:3055 msgid "Learn more in [Setting up Appservice Webhooks bridging](docs/configuring-playbook-bridge-appservice-webhooks.md)." msgstr "" -#: ../../../CHANGELOG.md:2831 +#: ../../../CHANGELOG.md:3058 msgid "2020-01-12" msgstr "" -#: ../../../CHANGELOG.md:2833 +#: ../../../CHANGELOG.md:3060 msgid "Added support for automatic Double Puppeting for all Mautrix bridges" msgstr "" -#: ../../../CHANGELOG.md:2835 +#: ../../../CHANGELOG.md:3062 msgid "Double Puppeting can now be easily enabled for all Mautrix bridges supported by the playbook (Facebook, Hangouts, Whatsapp, Telegram)." msgstr "" -#: ../../../CHANGELOG.md:2837 +#: ../../../CHANGELOG.md:3064 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:2839 +#: ../../../CHANGELOG.md:3066 msgid "To get started, following the playbook's documentation for the bridge you'd like to configure." msgstr "" -#: ../../../CHANGELOG.md:2842 +#: ../../../CHANGELOG.md:3069 msgid "2019-12-06" msgstr "" -#: ../../../CHANGELOG.md:2844 +#: ../../../CHANGELOG.md:3071 msgid "Added support for an alternative method for using another webserver" msgstr "" -#: ../../../CHANGELOG.md:2846 +#: ../../../CHANGELOG.md:3073 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:2848 +#: ../../../CHANGELOG.md:3075 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:2850 +#: ../../../CHANGELOG.md:3077 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:2853 +#: ../../../CHANGELOG.md:3080 msgid "2019-11-10" msgstr "" -#: ../../../CHANGELOG.md:2855 +#: ../../../CHANGELOG.md:3082 msgid "Tightened security around room directory publishing" msgstr "" -#: ../../../CHANGELOG.md:2857 +#: ../../../CHANGELOG.md:3084 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:2859 +#: ../../../CHANGELOG.md:3086 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: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." +#: ../../../CHANGELOG.md:3088 +msgid "As with anything else, these new defaults can be overridden by changing the `matrix_synapse_allow_public_rooms_without_auth` and `matrix_synapse_allow_public_rooms_over_federation` variables, respectively." msgstr "" -#: ../../../CHANGELOG.md:2864 +#: ../../../CHANGELOG.md:3091 msgid "2019-10-05" msgstr "" -#: ../../../CHANGELOG.md:2866 +#: ../../../CHANGELOG.md:3093 msgid "Improved Postgres upgrading/importing" msgstr "" -#: ../../../CHANGELOG.md:2868 +#: ../../../CHANGELOG.md:3095 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:2870 +#: ../../../CHANGELOG.md:3097 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:2872 +#: ../../../CHANGELOG.md:3099 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:2874 +#: ../../../CHANGELOG.md:3101 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:2877 +#: ../../../CHANGELOG.md:3104 msgid "2019-10-04" msgstr "" -#: ../../../CHANGELOG.md:2879 +#: ../../../CHANGELOG.md:3106 msgid "Postgres 12 support" msgstr "" -#: ../../../CHANGELOG.md:2881 +#: ../../../CHANGELOG.md:3108 msgid "The playbook now installs [Postgres 12](https://www.postgresql.org/about/news/1976/) by default." msgstr "" -#: ../../../CHANGELOG.md:2883 +#: ../../../CHANGELOG.md:3110 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:2886 +#: ../../../CHANGELOG.md:3113 msgid "2019-10-03" msgstr "" -#: ../../../CHANGELOG.md:2888 +#: ../../../CHANGELOG.md:3115 msgid "Synapse 1.4.0" msgstr "" -#: ../../../CHANGELOG.md:2890 +#: ../../../CHANGELOG.md:3117 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:2892 +#: ../../../CHANGELOG.md:3119 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:2894 +#: ../../../CHANGELOG.md:3121 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:2896 +#: ../../../CHANGELOG.md:3123 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:2899 +#: ../../../CHANGELOG.md:3126 msgid "2019-09-09" msgstr "" -#: ../../../CHANGELOG.md:2901 +#: ../../../CHANGELOG.md:3128 msgid "Synapse Simple Antispam support" msgstr "" -#: ../../../CHANGELOG.md:2903 +#: ../../../CHANGELOG.md:3130 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:2905 +#: ../../../CHANGELOG.md:3132 msgid "From now on, you can easily install and configure this spam checker module through the playbook." msgstr "" -#: ../../../CHANGELOG.md:2907 +#: ../../../CHANGELOG.md:3134 msgid "Learn more in [Setting up Synapse Simple Antispam](docs/configuring-playbook-synapse-simple-antispam.md)." msgstr "" -#: ../../../CHANGELOG.md:2910 +#: ../../../CHANGELOG.md:3137 msgid "2019-08-25" msgstr "" -#: ../../../CHANGELOG.md:2912 +#: ../../../CHANGELOG.md:3139 msgid "Extensible Riot-web configuration" msgstr "" -#: ../../../CHANGELOG.md:2914 +#: ../../../CHANGELOG.md:3141 msgid "Similarly to [Extensible Synapse configuration](#extensible-synapse-configuration) (below), Riot-web configuration is also extensible now." msgstr "" -#: ../../../CHANGELOG.md:2916 +#: ../../../CHANGELOG.md:3143 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:2918 +#: ../../../CHANGELOG.md:3145 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:2920 +#: ../../../CHANGELOG.md:3147 msgid "Learn more in [Configuring Riot-web](docs/configuring-playbook-riot-web.md)." msgstr "" -#: ../../../CHANGELOG.md:2923 +#: ../../../CHANGELOG.md:3150 msgid "2019-08-22" msgstr "" -#: ../../../CHANGELOG.md:2925 +#: ../../../CHANGELOG.md:3152 msgid "Extensible Synapse configuration" msgstr "" -#: ../../../CHANGELOG.md:2927 +#: ../../../CHANGELOG.md:3154 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:2929 +#: ../../../CHANGELOG.md:3156 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:2931 +#: ../../../CHANGELOG.md:3158 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:2933 +#: ../../../CHANGELOG.md:3160 msgid "Learn more here in [Configuring Synapse](docs/configuring-playbook-synapse.md)." msgstr "" -#: ../../../CHANGELOG.md:2936 +#: ../../../CHANGELOG.md:3163 msgid "2019-08-21" msgstr "" -#: ../../../CHANGELOG.md:2940 +#: ../../../CHANGELOG.md:3167 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:2942 +#: ../../../CHANGELOG.md:3169 msgid "Additional details are available in [Setting up Appservice Slack bridging](docs/configuring-playbook-bridge-appservice-slack.md)." msgstr "" -#: ../../../CHANGELOG.md:2944 +#: ../../../CHANGELOG.md:3171 msgid "Google Hangouts bridging support" msgstr "" -#: ../../../CHANGELOG.md:2946 +#: ../../../CHANGELOG.md:3173 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:2948 +#: ../../../CHANGELOG.md:3175 msgid "Additional details are available in [Setting up Mautrix Hangouts bridging](docs/configuring-playbook-bridge-mautrix-hangouts.md)." msgstr "" -#: ../../../CHANGELOG.md:2951 +#: ../../../CHANGELOG.md:3178 msgid "2019-08-05" msgstr "" -#: ../../../CHANGELOG.md:2953 +#: ../../../CHANGELOG.md:3180 msgid "Email2Matrix support" msgstr "" -#: ../../../CHANGELOG.md:2955 +#: ../../../CHANGELOG.md:3182 msgid "Support for [Email2Matrix](https://github.com/devture/email2matrix) has been added." msgstr "" -#: ../../../CHANGELOG.md:2957 +#: ../../../CHANGELOG.md:3184 msgid "It's an optional feature that you can enable via the playbook." msgstr "" -#: ../../../CHANGELOG.md:2959 +#: ../../../CHANGELOG.md:3186 msgid "To learn more, see the [playbook's documentation on Email2Matrix](./docs/configuring-playbook-email2matrix.md)." msgstr "" -#: ../../../CHANGELOG.md:2962 +#: ../../../CHANGELOG.md:3189 msgid "2019-08-03" msgstr "" -#: ../../../CHANGELOG.md:2964 +#: ../../../CHANGELOG.md:3191 msgid "Synapse logging level has been reduced to WARNING" msgstr "" -#: ../../../CHANGELOG.md:2966 +#: ../../../CHANGELOG.md:3193 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:2968 +#: ../../../CHANGELOG.md:3195 msgid "This greatly reduces the number of log messages that are being logged, leading to:" msgstr "" -#: ../../../CHANGELOG.md:2970 +#: ../../../CHANGELOG.md:3197 msgid "much less disk space dedicated to Synapse and thus, logs kept for longer" msgstr "" -#: ../../../CHANGELOG.md:2971 +#: ../../../CHANGELOG.md:3198 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:2973 +#: ../../../CHANGELOG.md:3200 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:2976 +#: ../../../CHANGELOG.md:3203 msgid "2019-07-08" msgstr "" -#: ../../../CHANGELOG.md:2978 +#: ../../../CHANGELOG.md:3205 msgid "Synapse Maintenance docs and synapse-janitor support are available" msgstr "" -#: ../../../CHANGELOG.md:2980 +#: ../../../CHANGELOG.md:3207 msgid "The playbook can now help you with Synapse's maintenance." msgstr "" -#: ../../../CHANGELOG.md:2982 +#: ../../../CHANGELOG.md:3209 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:2984 +#: ../../../CHANGELOG.md:3211 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:2986 +#: ../../../CHANGELOG.md:3213 msgid "(BC Break) Rename run control variables" msgstr "" -#: ../../../CHANGELOG.md:2988 +#: ../../../CHANGELOG.md:3215 msgid "Some internal playbook control variables have been renamed." msgstr "" -#: ../../../CHANGELOG.md:2990 +#: ../../../CHANGELOG.md:3217 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:2992 +#: ../../../CHANGELOG.md:3219 msgid "The following variables have been renamed:" msgstr "" -#: ../../../CHANGELOG.md:2994 +#: ../../../CHANGELOG.md:3221 msgid "from `run_import_postgres` to `run_postgres_import`" msgstr "" -#: ../../../CHANGELOG.md:2995 +#: ../../../CHANGELOG.md:3222 msgid "from `run_import_sqlite_db` to `run_postgres_import_sqlite_db`" msgstr "" -#: ../../../CHANGELOG.md:2996 +#: ../../../CHANGELOG.md:3223 msgid "from `run_upgrade_postgres` to `run_postgres_upgrade`" msgstr "" -#: ../../../CHANGELOG.md:2997 +#: ../../../CHANGELOG.md:3224 msgid "from `run_import_media_store` to `run_synapse_import_media_store`" msgstr "" -#: ../../../CHANGELOG.md:2998 +#: ../../../CHANGELOG.md:3225 msgid "from `run_register_user` to `run_synapse_register_user`" msgstr "" -#: ../../../CHANGELOG.md:2999 +#: ../../../CHANGELOG.md:3226 msgid "from `run_update_user_password` to `run_synapse_update_user_password`" msgstr "" -#: ../../../CHANGELOG.md:3002 +#: ../../../CHANGELOG.md:3229 msgid "2019-07-04" msgstr "" -#: ../../../CHANGELOG.md:3004 +#: ../../../CHANGELOG.md:3231 msgid "Synapse no longer logs to text files" msgstr "" -#: ../../../CHANGELOG.md:3006 +#: ../../../CHANGELOG.md:3233 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:3008 +#: ../../../CHANGELOG.md:3235 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:3010 +#: ../../../CHANGELOG.md:3237 msgid "Because of this, the following variables have become obsolete and were removed:" msgstr "" -#: ../../../CHANGELOG.md:3012 +#: ../../../CHANGELOG.md:3239 msgid "`matrix_synapse_max_log_file_size_mb`" msgstr "" -#: ../../../CHANGELOG.md:3013 +#: ../../../CHANGELOG.md:3240 msgid "`matrix_synapse_max_log_files_count`" msgstr "" -#: ../../../CHANGELOG.md:3015 +#: ../../../CHANGELOG.md:3242 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:3017 +#: ../../../CHANGELOG.md:3244 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:3020 +#: ../../../CHANGELOG.md:3247 msgid "2019-06-27" msgstr "" -#: ../../../CHANGELOG.md:3022 +#: ../../../CHANGELOG.md:3249 msgid "(BC Break) Discord bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:3024 +#: ../../../CHANGELOG.md:3251 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:3026 +#: ../../../CHANGELOG.md:3253 msgid "From now on, the playbook will keep both configuration files sync for you." msgstr "" -#: ../../../CHANGELOG.md:3028 +#: ../../../CHANGELOG.md:3255 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:3030 +#: ../../../CHANGELOG.md:3257 msgid "The bridge now stores configuration in a subdirectory (`/matrix/appservice-discord/config`)." msgstr "" -#: ../../../CHANGELOG.md:3032 +#: ../../../CHANGELOG.md:3259 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:3034 +#: ../../../CHANGELOG.md:3261 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:3036 +#: ../../../CHANGELOG.md:3263 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:3039 +#: ../../../CHANGELOG.md:3266 msgid "2019-06-24" msgstr "" -#: ../../../CHANGELOG.md:3041 +#: ../../../CHANGELOG.md:3268 msgid "(BC Break) WhatsApp bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:3043 +#: ../../../CHANGELOG.md:3270 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:3045 -#: ../../../CHANGELOG.md:3062 -#: ../../../CHANGELOG.md:3081 -#: ../../../CHANGELOG.md:3120 +#: ../../../CHANGELOG.md:3272 +#: ../../../CHANGELOG.md:3289 +#: ../../../CHANGELOG.md:3308 +#: ../../../CHANGELOG.md:3347 msgid "From now on, the playbook will keep the configuration in sync for you." msgstr "" -#: ../../../CHANGELOG.md:3047 +#: ../../../CHANGELOG.md:3274 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:3049 +#: ../../../CHANGELOG.md:3276 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:3051 +#: ../../../CHANGELOG.md:3278 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:3053 +#: ../../../CHANGELOG.md:3280 msgid "We're now following the default configuration for the WhatsApp bridge." msgstr "" -#: ../../../CHANGELOG.md:3056 +#: ../../../CHANGELOG.md:3283 msgid "2019-06-20" msgstr "" -#: ../../../CHANGELOG.md:3058 +#: ../../../CHANGELOG.md:3285 msgid "(BC Break) IRC bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:3060 +#: ../../../CHANGELOG.md:3287 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:3064 +#: ../../../CHANGELOG.md:3291 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:3066 +#: ../../../CHANGELOG.md:3293 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:3068 +#: ../../../CHANGELOG.md:3295 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:3070 +#: ../../../CHANGELOG.md:3297 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:3072 +#: ../../../CHANGELOG.md:3299 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:3075 +#: ../../../CHANGELOG.md:3302 msgid "2019-06-15" msgstr "" -#: ../../../CHANGELOG.md:3077 +#: ../../../CHANGELOG.md:3304 msgid "(BC Break) Telegram bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:3079 +#: ../../../CHANGELOG.md:3306 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:3083 +#: ../../../CHANGELOG.md:3310 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:3085 +#: ../../../CHANGELOG.md:3312 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:3087 +#: ../../../CHANGELOG.md:3314 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:3089 +#: ../../../CHANGELOG.md:3316 msgid "Also, we're now following the default configuration for the Telegram bridge, so some default configuration values are different:" msgstr "" -#: ../../../CHANGELOG.md:3091 +#: ../../../CHANGELOG.md:3318 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:3092 +#: ../../../CHANGELOG.md:3319 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:3093 +#: ../../../CHANGELOG.md:3320 msgid "`authless_portals` (used to be `false`, now `true`) — creating portals from the Telegram side is now possible" msgstr "" -#: ../../../CHANGELOG.md:3094 +#: ../../../CHANGELOG.md:3321 msgid "`whitelist_group_admins` (used to be `false`, now `true`) — allows Telegram group admins to use the bot commands" msgstr "" -#: ../../../CHANGELOG.md:3096 +#: ../../../CHANGELOG.md:3323 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:3099 +#: ../../../CHANGELOG.md:3326 msgid "2019-06-12" msgstr "" -#: ../../../CHANGELOG.md:3101 +#: ../../../CHANGELOG.md:3328 msgid "Synapse v1.0" msgstr "" -#: ../../../CHANGELOG.md:3103 +#: ../../../CHANGELOG.md:3330 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:3105 +#: ../../../CHANGELOG.md:3332 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:3107 +#: ../../../CHANGELOG.md:3334 msgid "**Note**: don't confuse the `_matrix._tcp` and `_matrix-identity._tcp` DNS SRV records. The latter, **must not** be removed." msgstr "" -#: ../../../CHANGELOG.md:3109 +#: ../../../CHANGELOG.md:3336 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:3111 +#: ../../../CHANGELOG.md:3338 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:3114 +#: ../../../CHANGELOG.md:3341 msgid "2019-06-07" msgstr "" -#: ../../../CHANGELOG.md:3116 +#: ../../../CHANGELOG.md:3343 msgid "(BC Break) Facebook bridge configuration is now entirely managed by the playbook" msgstr "" -#: ../../../CHANGELOG.md:3118 +#: ../../../CHANGELOG.md:3345 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:3122 +#: ../../../CHANGELOG.md:3349 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:3124 +#: ../../../CHANGELOG.md:3351 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:3126 +#: ../../../CHANGELOG.md:3353 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:3129 +#: ../../../CHANGELOG.md:3356 msgid "2019-05-25" msgstr "" -#: ../../../CHANGELOG.md:3131 +#: ../../../CHANGELOG.md:3358 msgid "Support for exposing container ports publicly (not just to the host)" msgstr "" -#: ../../../CHANGELOG.md:3133 +#: ../../../CHANGELOG.md:3360 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:3135 +#: ../../../CHANGELOG.md:3362 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:3137 +#: ../../../CHANGELOG.md:3364 msgid "All such variables have been superseded by a better (more flexible) way to do it." msgstr "" -#: ../../../CHANGELOG.md:3139 +#: ../../../CHANGELOG.md:3366 msgid "**Most** people (including those not using `matrix-nginx-proxy`), **don't need** to bother with this." msgstr "" -#: ../../../CHANGELOG.md:3141 +#: ../../../CHANGELOG.md:3368 msgid "Porting examples follow for people having more customized setups:" msgstr "" -#: ../../../CHANGELOG.md:3143 +#: ../../../CHANGELOG.md:3370 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:3145 +#: ../../../CHANGELOG.md:3372 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:3147 +#: ../../../CHANGELOG.md:3374 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:3149 +#: ../../../CHANGELOG.md:3376 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:3151 +#: ../../../CHANGELOG.md:3378 msgid "**from** `matrix_mxisd_container_expose_port: true` **to** `matrix_mxisd_container_http_host_bind_port: '127.0.0.1:8090'`" msgstr "" -#: ../../../CHANGELOG.md:3153 +#: ../../../CHANGELOG.md:3380 msgid "**from** `matrix_dimension_container_expose_port: true` **to** `matrix_dimension_container_http_host_bind_port: '127.0.0.1:8184'`" msgstr "" -#: ../../../CHANGELOG.md:3155 +#: ../../../CHANGELOG.md:3382 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:3157 +#: ../../../CHANGELOG.md:3384 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:3159 +#: ../../../CHANGELOG.md:3386 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:3161 +#: ../../../CHANGELOG.md:3388 msgid "As always, if you forget to remove usage of some outdated variable, the playbook will warn you." msgstr "" -#: ../../../CHANGELOG.md:3164 +#: ../../../CHANGELOG.md:3391 msgid "2019-05-23" msgstr "" -#: ../../../CHANGELOG.md:3166 +#: ../../../CHANGELOG.md:3393 msgid "(BC Break) Ansible 2.8 compatibility" msgstr "" -#: ../../../CHANGELOG.md:3168 +#: ../../../CHANGELOG.md:3395 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:3170 +#: ../../../CHANGELOG.md:3397 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:3172 +#: ../../../CHANGELOG.md:3399 msgid "To avoid doing it manually, run this:" msgstr "" -#: ../../../CHANGELOG.md:3173 +#: ../../../CHANGELOG.md:3400 msgid "Linux: `sed -i 's/matrix-servers/matrix_servers/g' inventory/hosts`" msgstr "" -#: ../../../CHANGELOG.md:3174 +#: ../../../CHANGELOG.md:3401 msgid "Mac: `sed -i '' 's/matrix-servers/matrix_servers/g' inventory/hosts`" msgstr "" -#: ../../../CHANGELOG.md:3177 +#: ../../../CHANGELOG.md:3404 msgid "2019-05-21" msgstr "" -#: ../../../CHANGELOG.md:3179 +#: ../../../CHANGELOG.md:3406 msgid "Synapse no longer required" msgstr "" -#: ../../../CHANGELOG.md:3181 +#: ../../../CHANGELOG.md:3408 msgid "The playbook no longer insists on installing [Synapse](https://github.com/element-hq/synapse) via the `matrix-synapse` role." msgstr "" -#: ../../../CHANGELOG.md:3183 +#: ../../../CHANGELOG.md:3410 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:3185 +#: ../../../CHANGELOG.md:3412 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:3187 +#: ../../../CHANGELOG.md:3414 msgid "Having Synapse not be a required component potentially opens the door for installing alternative Matrix homeservers." msgstr "" -#: ../../../CHANGELOG.md:3189 +#: ../../../CHANGELOG.md:3416 msgid "Bridges are now separate from the Synapse role" msgstr "" -#: ../../../CHANGELOG.md:3191 +#: ../../../CHANGELOG.md:3418 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:3193 +#: ../../../CHANGELOG.md:3420 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:3195 +#: ../../../CHANGELOG.md:3422 msgid "Renaming inconsistently-named Synapse variables" msgstr "" -#: ../../../CHANGELOG.md:3197 +#: ../../../CHANGELOG.md:3424 msgid "For better consistency, the following variables have been renamed:" msgstr "" -#: ../../../CHANGELOG.md:3199 +#: ../../../CHANGELOG.md:3426 msgid "`matrix_enable_room_list_search` was renamed to `matrix_synapse_enable_room_list_search`" msgstr "" -#: ../../../CHANGELOG.md:3200 +#: ../../../CHANGELOG.md:3427 msgid "`matrix_alias_creation_rules` was renamed to `matrix_synapse_alias_creation_rules`" msgstr "" -#: ../../../CHANGELOG.md:3201 +#: ../../../CHANGELOG.md:3428 msgid "`matrix_nginx_proxy_matrix_room_list_publication_rulesdata_path` was renamed to `matrix_synapse_room_list_publication_rules`" msgstr "" -#: ../../../CHANGELOG.md:3204 +#: ../../../CHANGELOG.md:3431 msgid "2019-05-09" msgstr "" -#: ../../../CHANGELOG.md:3206 +#: ../../../CHANGELOG.md:3433 msgid "Besides a myriad of bug fixes and minor improvements, here are the more notable (bigger) features we can announce today." msgstr "" -#: ../../../CHANGELOG.md:3208 +#: ../../../CHANGELOG.md:3435 msgid "Mautrix Facebook/Messenger bridging support" msgstr "" -#: ../../../CHANGELOG.md:3210 +#: ../../../CHANGELOG.md:3437 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:3212 +#: ../../../CHANGELOG.md:3439 msgid "Additional details are available in [Setting up Mautrix Facebook bridging](docs/configuring-playbook-bridge-mautrix-facebook.md)." msgstr "" -#: ../../../CHANGELOG.md:3214 +#: ../../../CHANGELOG.md:3441 msgid "mxisd Registration feature integration" msgstr "" -#: ../../../CHANGELOG.md:3216 +#: ../../../CHANGELOG.md:3443 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:3218 +#: ../../../CHANGELOG.md:3445 msgid "Learn more in [mxisd-controlled Registration](docs/configuring-playbook-mxisd.md#mxisd-controlled-registration)." msgstr "" -#: ../../../CHANGELOG.md:3221 +#: ../../../CHANGELOG.md:3448 msgid "2019-04-16" msgstr "" -#: ../../../CHANGELOG.md:3223 +#: ../../../CHANGELOG.md:3450 msgid "Caddy webserver examples" msgstr "" -#: ../../../CHANGELOG.md:3225 +#: ../../../CHANGELOG.md:3452 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:3227 +#: ../../../CHANGELOG.md:3454 msgid "2019-04-10" msgstr "" -#: ../../../CHANGELOG.md:3229 +#: ../../../CHANGELOG.md:3456 msgid "Goofys support for other S3-compatible object stores" msgstr "" -#: ../../../CHANGELOG.md:3231 +#: ../../../CHANGELOG.md:3458 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:3234 +#: ../../../CHANGELOG.md:3461 msgid "2019-04-03" msgstr "" -#: ../../../CHANGELOG.md:3236 +#: ../../../CHANGELOG.md:3463 msgid "Ansible >= 2.5 is required" msgstr "" -#: ../../../CHANGELOG.md:3238 +#: ../../../CHANGELOG.md:3465 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:3240 +#: ../../../CHANGELOG.md:3467 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:3243 +#: ../../../CHANGELOG.md:3470 msgid "2019-03-19" msgstr "" -#: ../../../CHANGELOG.md:3245 +#: ../../../CHANGELOG.md:3472 msgid "TLS support for coturn" msgstr "" -#: ../../../CHANGELOG.md:3247 +#: ../../../CHANGELOG.md:3474 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:3249 +#: ../../../CHANGELOG.md:3476 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:3255 +#: ../../../CHANGELOG.md:3482 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:3257 +#: ../../../CHANGELOG.md:3484 msgid "People who build their own custom playbook from our roles should be aware that:" msgstr "" -#: ../../../CHANGELOG.md:3259 +#: ../../../CHANGELOG.md:3486 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:3261 +#: ../../../CHANGELOG.md:3488 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:3264 +#: ../../../CHANGELOG.md:3491 msgid "2019-03-12" msgstr "" -#: ../../../CHANGELOG.md:3266 +#: ../../../CHANGELOG.md:3493 msgid "matrix-nginx-proxy support for serving the base domain" msgstr "" -#: ../../../CHANGELOG.md:3268 +#: ../../../CHANGELOG.md:3495 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:3270 +#: ../../../CHANGELOG.md:3497 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:3272 +#: ../../../CHANGELOG.md:3499 msgid "(BC break) matrix-nginx-proxy data variable renamed" msgstr "" -#: ../../../CHANGELOG.md:3274 +#: ../../../CHANGELOG.md:3501 msgid "`matrix_nginx_proxy_data_path` was renamed to `matrix_nginx_proxy_base_path`." msgstr "" -#: ../../../CHANGELOG.md:3276 +#: ../../../CHANGELOG.md:3503 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:3279 +#: ../../../CHANGELOG.md:3506 msgid "2019-03-10" msgstr "" -#: ../../../CHANGELOG.md:3281 +#: ../../../CHANGELOG.md:3508 msgid "Dimension integration manager support" msgstr "" -#: ../../../CHANGELOG.md:3283 +#: ../../../CHANGELOG.md:3510 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:3286 +#: ../../../CHANGELOG.md:3513 msgid "2019-03-07" msgstr "" -#: ../../../CHANGELOG.md:3288 +#: ../../../CHANGELOG.md:3515 msgid "Ability to customize mxisd's email templates" msgstr "" -#: ../../../CHANGELOG.md:3290 +#: ../../../CHANGELOG.md:3517 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:3293 +#: ../../../CHANGELOG.md:3520 msgid "2019-03-05" msgstr "" -#: ../../../CHANGELOG.md:3295 +#: ../../../CHANGELOG.md:3522 msgid "Discord bridging support" msgstr "" -#: ../../../CHANGELOG.md:3297 +#: ../../../CHANGELOG.md:3524 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:3300 +#: ../../../CHANGELOG.md:3527 msgid "2019-02-19" msgstr "" -#: ../../../CHANGELOG.md:3302 +#: ../../../CHANGELOG.md:3529 msgid "Renaming variables" msgstr "" -#: ../../../CHANGELOG.md:3304 -#: ../../../CHANGELOG.md:3621 -#: ../../../CHANGELOG.md:3706 -#: ../../../CHANGELOG.md:3826 +#: ../../../CHANGELOG.md:3531 +#: ../../../CHANGELOG.md:3848 +#: ../../../CHANGELOG.md:3933 +#: ../../../CHANGELOG.md:4053 msgid "The following playbook variables were renamed:" msgstr "" -#: ../../../CHANGELOG.md:3306 +#: ../../../CHANGELOG.md:3533 msgid "from `host_specific_hostname_identity` to `matrix_domain`" msgstr "" -#: ../../../CHANGELOG.md:3307 +#: ../../../CHANGELOG.md:3534 msgid "from `hostname_identity` to `matrix_domain`" msgstr "" -#: ../../../CHANGELOG.md:3308 +#: ../../../CHANGELOG.md:3535 msgid "from `hostname_matrix` to `matrix_server_fqn_matrix`" msgstr "" -#: ../../../CHANGELOG.md:3309 +#: ../../../CHANGELOG.md:3536 msgid "from `hostname_riot` to `matrix_server_fqn_riot`" msgstr "" -#: ../../../CHANGELOG.md:3310 +#: ../../../CHANGELOG.md:3537 msgid "from `host_specific_matrix_ssl_lets_encrypt_support_email` to `matrix_ssl_lets_encrypt_support_email`" msgstr "" -#: ../../../CHANGELOG.md:3312 +#: ../../../CHANGELOG.md:3539 msgid "Doing that, we've simplified things, made names less confusing (hopefully) and moved all variable names under the `matrix_` prefix." msgstr "" -#: ../../../CHANGELOG.md:3315 +#: ../../../CHANGELOG.md:3542 msgid "2019-02-16" msgstr "" -#: ../../../CHANGELOG.md:3317 +#: ../../../CHANGELOG.md:3544 msgid "Riot v1.0.1 support" msgstr "" -#: ../../../CHANGELOG.md:3319 +#: ../../../CHANGELOG.md:3546 msgid "You can now use the brand new and redesigned Riot." msgstr "" -#: ../../../CHANGELOG.md:3321 +#: ../../../CHANGELOG.md:3548 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:3323 +#: ../../../CHANGELOG.md:3550 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:3326 +#: ../../../CHANGELOG.md:3553 msgid "2019-02-14" msgstr "" -#: ../../../CHANGELOG.md:3328 +#: ../../../CHANGELOG.md:3555 msgid "Synapse v0.99.1" msgstr "" -#: ../../../CHANGELOG.md:3330 +#: ../../../CHANGELOG.md:3557 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:3332 +#: ../../../CHANGELOG.md:3559 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:3335 +#: ../../../CHANGELOG.md:3562 msgid "2019-02-06" msgstr "" -#: ../../../CHANGELOG.md:3337 +#: ../../../CHANGELOG.md:3564 msgid "Synapse v0.99 support and preparation for Synapse v1.0" msgstr "" -#: ../../../CHANGELOG.md:3339 +#: ../../../CHANGELOG.md:3566 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:3341 +#: ../../../CHANGELOG.md:3568 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:3343 +#: ../../../CHANGELOG.md:3570 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:3345 +#: ../../../CHANGELOG.md:3572 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: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." +#: ../../../CHANGELOG.md:3574 +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-and-troubleshooting.md#how-to-check-if-services-work), 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:3349 +#: ../../../CHANGELOG.md:3576 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:3352 +#: ../../../CHANGELOG.md:3579 msgid "2019-02-01" msgstr "" -#: ../../../CHANGELOG.md:3354 +#: ../../../CHANGELOG.md:3581 msgid "TLS v1.3 support" msgstr "" -#: ../../../CHANGELOG.md:3356 +#: ../../../CHANGELOG.md:3583 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:3358 +#: ../../../CHANGELOG.md:3585 msgid "When using:" msgstr "" -#: ../../../CHANGELOG.md:3360 +#: ../../../CHANGELOG.md:3587 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:3362 +#: ../../../CHANGELOG.md:3589 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:3364 +#: ../../../CHANGELOG.md:3591 msgid "**another web server**: you don't need to do anything to accommodate this change" msgstr "" -#: ../../../CHANGELOG.md:3367 +#: ../../../CHANGELOG.md:3594 msgid "2019-01-31" msgstr "" -#: ../../../CHANGELOG.md:3369 +#: ../../../CHANGELOG.md:3596 msgid "IRC bridging support" msgstr "" -#: ../../../CHANGELOG.md:3371 +#: ../../../CHANGELOG.md:3598 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:3374 +#: ../../../CHANGELOG.md:3601 msgid "2019-01-29" msgstr "" -#: ../../../CHANGELOG.md:3376 +#: ../../../CHANGELOG.md:3603 msgid "Running container processes as non-root, without capabilities and read-only" msgstr "" -#: ../../../CHANGELOG.md:3378 +#: ../../../CHANGELOG.md:3605 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:3380 +#: ../../../CHANGELOG.md:3607 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:3382 +#: ../../../CHANGELOG.md:3609 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:3384 +#: ../../../CHANGELOG.md:3611 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:3386 +#: ../../../CHANGELOG.md:3613 msgid "matrix-mailer is now based on Exim, not Postfix" msgstr "" -#: ../../../CHANGELOG.md:3388 +#: ../../../CHANGELOG.md:3615 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:3390 +#: ../../../CHANGELOG.md:3617 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:3392 +#: ../../../CHANGELOG.md:3619 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:3395 +#: ../../../CHANGELOG.md:3622 msgid "2019-01-17" msgstr "" -#: ../../../CHANGELOG.md:3397 +#: ../../../CHANGELOG.md:3624 msgid "(BC Break) Making the playbook's roles more independent of one another" msgstr "" -#: ../../../CHANGELOG.md:3399 +#: ../../../CHANGELOG.md:3626 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:3402 +#: ../../../CHANGELOG.md:3629 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:3404 +#: ../../../CHANGELOG.md:3631 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:3406 +#: ../../../CHANGELOG.md:3633 msgid "In addition, the following components can now be completely disabled (for those who want/need to):" msgstr "" -#: ../../../CHANGELOG.md:3407 +#: ../../../CHANGELOG.md:3634 msgid "`matrix-coturn` by using `matrix_coturn_enabled: false`" msgstr "" -#: ../../../CHANGELOG.md:3408 +#: ../../../CHANGELOG.md:3635 msgid "`matrix-mailer` by using `matrix_mailer_enabled: false`" msgstr "" -#: ../../../CHANGELOG.md:3409 +#: ../../../CHANGELOG.md:3636 msgid "`matrix-postgres` by using `matrix_postgres_enabled: false`" msgstr "" -#: ../../../CHANGELOG.md:3411 +#: ../../../CHANGELOG.md:3638 msgid "The following changes had to be done:" msgstr "" -#: ../../../CHANGELOG.md:3413 +#: ../../../CHANGELOG.md:3640 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: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." +#: ../../../CHANGELOG.md:3642 +msgid "`matrix_postgres_use_external` has been superseded 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:3417 +#: ../../../CHANGELOG.md:3644 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:3419 +#: ../../../CHANGELOG.md:3646 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:3422 +#: ../../../CHANGELOG.md:3649 msgid "2019-01-16" msgstr "" -#: ../../../CHANGELOG.md:3424 +#: ../../../CHANGELOG.md:3651 msgid "Splitting the playbook into multiple roles" msgstr "" -#: ../../../CHANGELOG.md:3426 +#: ../../../CHANGELOG.md:3653 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:3429 +#: ../../../CHANGELOG.md:3656 msgid "To keep the filesystem more consistent with this separation, the **Postgres data had to be relocated**." msgstr "" -#: ../../../CHANGELOG.md:3431 +#: ../../../CHANGELOG.md:3658 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:3434 +#: ../../../CHANGELOG.md:3661 msgid "2019-01-11" msgstr "" -#: ../../../CHANGELOG.md:3436 +#: ../../../CHANGELOG.md:3663 msgid "(BC Break) mxisd configuration changes" msgstr "" -#: ../../../CHANGELOG.md:3438 +#: ../../../CHANGELOG.md:3665 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:3441 +#: ../../../CHANGELOG.md:3668 msgid "The following variables are no longer supported by this playbook:" msgstr "" -#: ../../../CHANGELOG.md:3443 +#: ../../../CHANGELOG.md:3670 msgid "`matrix_mxisd_ldap_enabled`" msgstr "" -#: ../../../CHANGELOG.md:3444 +#: ../../../CHANGELOG.md:3671 msgid "`matrix_mxisd_ldap_connection_host`" msgstr "" -#: ../../../CHANGELOG.md:3445 +#: ../../../CHANGELOG.md:3672 msgid "`matrix_mxisd_ldap_connection_tls`" msgstr "" -#: ../../../CHANGELOG.md:3446 +#: ../../../CHANGELOG.md:3673 msgid "`matrix_mxisd_ldap_connection_port`" msgstr "" -#: ../../../CHANGELOG.md:3447 +#: ../../../CHANGELOG.md:3674 msgid "`matrix_mxisd_ldap_connection_baseDn`" msgstr "" -#: ../../../CHANGELOG.md:3448 +#: ../../../CHANGELOG.md:3675 msgid "`matrix_mxisd_ldap_connection_baseDns`" msgstr "" -#: ../../../CHANGELOG.md:3449 -#: ../../../CHANGELOG.md:3450 +#: ../../../CHANGELOG.md:3676 +#: ../../../CHANGELOG.md:3677 msgid "`matrix_mxisd_ldap_connection_bindDn`" msgstr "" -#: ../../../CHANGELOG.md:3451 -#: ../../../CHANGELOG.md:3455 +#: ../../../CHANGELOG.md:3678 +#: ../../../CHANGELOG.md:3682 msgid "`matrix_mxisd_ldap_connection_bindPassword`" msgstr "" -#: ../../../CHANGELOG.md:3452 +#: ../../../CHANGELOG.md:3679 msgid "`matrix_mxisd_ldap_filter`" msgstr "" -#: ../../../CHANGELOG.md:3453 +#: ../../../CHANGELOG.md:3680 msgid "`matrix_mxisd_ldap_attribute_uid_type`" msgstr "" -#: ../../../CHANGELOG.md:3454 +#: ../../../CHANGELOG.md:3681 msgid "`matrix_mxisd_ldap_attribute_uid_value`" msgstr "" -#: ../../../CHANGELOG.md:3456 +#: ../../../CHANGELOG.md:3683 msgid "`matrix_mxisd_ldap_attribute_name`" msgstr "" -#: ../../../CHANGELOG.md:3457 +#: ../../../CHANGELOG.md:3684 msgid "`matrix_mxisd_ldap_attribute_threepid_email`" msgstr "" -#: ../../../CHANGELOG.md:3458 +#: ../../../CHANGELOG.md:3685 msgid "`matrix_mxisd_ldap_attribute_threepid_msisdn`" msgstr "" -#: ../../../CHANGELOG.md:3459 +#: ../../../CHANGELOG.md:3686 msgid "`matrix_mxisd_ldap_identity_filter`" msgstr "" -#: ../../../CHANGELOG.md:3460 +#: ../../../CHANGELOG.md:3687 msgid "`matrix_mxisd_ldap_identity_medium`" msgstr "" -#: ../../../CHANGELOG.md:3461 +#: ../../../CHANGELOG.md:3688 msgid "`matrix_mxisd_ldap_auth_filter`" msgstr "" -#: ../../../CHANGELOG.md:3462 +#: ../../../CHANGELOG.md:3689 msgid "`matrix_mxisd_ldap_directory_filter`" msgstr "" -#: ../../../CHANGELOG.md:3463 +#: ../../../CHANGELOG.md:3690 msgid "`matrix_mxisd_template_config`" msgstr "" -#: ../../../CHANGELOG.md:3465 +#: ../../../CHANGELOG.md:3692 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:3467 +#: ../../../CHANGELOG.md:3694 msgid "This new way of configuring mxisd is beneficial because:" msgstr "" -#: ../../../CHANGELOG.md:3469 +#: ../../../CHANGELOG.md:3696 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:3470 +#: ../../../CHANGELOG.md:3697 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:3473 +#: ../../../CHANGELOG.md:3700 msgid "2019-01-08" msgstr "" -#: ../../../CHANGELOG.md:3475 +#: ../../../CHANGELOG.md:3702 msgid "(BC Break) Cronjob schedule no longer configurable" msgstr "" -#: ../../../CHANGELOG.md:3477 +#: ../../../CHANGELOG.md:3704 msgid "Due to the way we manage cronjobs now, you can no longer configure the schedule they're invoked at." msgstr "" -#: ../../../CHANGELOG.md:3479 +#: ../../../CHANGELOG.md:3706 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:3482 +#: ../../../CHANGELOG.md:3709 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:3485 +#: ../../../CHANGELOG.md:3712 msgid "2018-12-23" msgstr "" -#: ../../../CHANGELOG.md:3487 +#: ../../../CHANGELOG.md:3714 msgid "(BC Break) More SSL certificate retrieval methods" msgstr "" -#: ../../../CHANGELOG.md:3489 +#: ../../../CHANGELOG.md:3716 msgid "The playbook now lets you decide between 3 different SSL certificate retrieval methods:" msgstr "" -#: ../../../CHANGELOG.md:3490 +#: ../../../CHANGELOG.md:3717 msgid "(default) obtaining free SSL certificates from Let's Encrypt" msgstr "" -#: ../../../CHANGELOG.md:3491 +#: ../../../CHANGELOG.md:3718 msgid "generating self-signed SSL certificates" msgstr "" -#: ../../../CHANGELOG.md:3492 +#: ../../../CHANGELOG.md:3719 msgid "managing SSL certificates manually" msgstr "" -#: ../../../CHANGELOG.md:3494 +#: ../../../CHANGELOG.md:3721 msgid "Learn more in [Adjusting SSL certificate retrieval](docs/configuring-playbook-ssl-certificates.md)." msgstr "" -#: ../../../CHANGELOG.md:3496 +#: ../../../CHANGELOG.md:3723 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:3498 +#: ../../../CHANGELOG.md:3725 msgid "before: `host_specific_matrix_ssl_support_email`" msgstr "" -#: ../../../CHANGELOG.md:3499 +#: ../../../CHANGELOG.md:3726 msgid "after: `host_specific_matrix_ssl_lets_encrypt_support_email`" msgstr "" -#: ../../../CHANGELOG.md:3501 +#: ../../../CHANGELOG.md:3728 msgid "(BC Break) mxisd upgrade with multiple base DN support" msgstr "" -#: ../../../CHANGELOG.md:3503 +#: ../../../CHANGELOG.md:3730 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:3505 +#: ../../../CHANGELOG.md:3732 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:3507 +#: ../../../CHANGELOG.md:3734 msgid "Example change:" msgstr "" -#: ../../../CHANGELOG.md:3509 +#: ../../../CHANGELOG.md:3736 msgid "before: `matrix_mxisd_ldap_connection_baseDn: OU=Users,DC=example,DC=org`" msgstr "" -#: ../../../CHANGELOG.md:3510 +#: ../../../CHANGELOG.md:3737 msgid "after: `matrix_mxisd_ldap_connection_baseDns: ['OU=Users,DC=example,DC=org']`" msgstr "" -#: ../../../CHANGELOG.md:3513 +#: ../../../CHANGELOG.md:3740 msgid "2018-12-21" msgstr "" -#: ../../../CHANGELOG.md:3515 +#: ../../../CHANGELOG.md:3742 msgid "Synapse 0.34.0 and Python 3" msgstr "" -#: ../../../CHANGELOG.md:3517 +#: ../../../CHANGELOG.md:3744 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:3520 +#: ../../../CHANGELOG.md:3747 msgid "2018-12-12" msgstr "" -#: ../../../CHANGELOG.md:3522 +#: ../../../CHANGELOG.md:3749 msgid "Riot homepage customization" msgstr "" -#: ../../../CHANGELOG.md:3524 +#: ../../../CHANGELOG.md:3751 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:3527 +#: ../../../CHANGELOG.md:3754 msgid "2018-12-04" msgstr "" -#: ../../../CHANGELOG.md:3529 +#: ../../../CHANGELOG.md:3756 msgid "mxisd extensibility" msgstr "" -#: ../../../CHANGELOG.md:3531 +#: ../../../CHANGELOG.md:3758 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:3534 +#: ../../../CHANGELOG.md:3761 msgid "2018-11-28" msgstr "" -#: ../../../CHANGELOG.md:3536 +#: ../../../CHANGELOG.md:3763 msgid "More scripts" msgstr "" -#: ../../../CHANGELOG.md:3538 +#: ../../../CHANGELOG.md:3765 msgid "matrix-remove-all allows to uninstall everything with a single command" msgstr "" -#: ../../../CHANGELOG.md:3539 +#: ../../../CHANGELOG.md:3766 msgid "matrix-make-user-admin allows to upgrade a user's privileges" msgstr "" -#: ../../../CHANGELOG.md:3541 +#: ../../../CHANGELOG.md:3768 msgid "LDAP auth support via matrix-synapse-ldap3" msgstr "" -#: ../../../CHANGELOG.md:3543 +#: ../../../CHANGELOG.md:3770 msgid "The playbook can now install and configure [LDAP auth support](https://github.com/matrix-org/matrix-synapse-ldap3) for you." msgstr "" -#: ../../../CHANGELOG.md:3545 +#: ../../../CHANGELOG.md:3772 msgid "Additional details are available in [Setting up the LDAP authentication password provider module](docs/configuring-playbook-ldap-auth.md)." msgstr "" -#: ../../../CHANGELOG.md:3548 +#: ../../../CHANGELOG.md:3775 msgid "2018-11-23" msgstr "" -#: ../../../CHANGELOG.md:3550 +#: ../../../CHANGELOG.md:3777 msgid "Support for controlling public registration and room auto-join" msgstr "" -#: ../../../CHANGELOG.md:3552 +#: ../../../CHANGELOG.md:3779 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:3554 +#: ../../../CHANGELOG.md:3781 msgid "You can also make people automatically get auto-joined to rooms (controlled via `matrix_synapse_auto_join_rooms`)." msgstr "" -#: ../../../CHANGELOG.md:3556 +#: ../../../CHANGELOG.md:3783 msgid "Support for changing the welcome user ID (welcome bot)" msgstr "" -#: ../../../CHANGELOG.md:3558 +#: ../../../CHANGELOG.md:3785 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:3561 +#: ../../../CHANGELOG.md:3788 msgid "2018-11-14" msgstr "" -#: ../../../CHANGELOG.md:3563 +#: ../../../CHANGELOG.md:3790 msgid "Ability to set Synapse log levels" msgstr "" -#: ../../../CHANGELOG.md:3565 +#: ../../../CHANGELOG.md:3792 msgid "The playbook now allows you to set the log levels used by Synapse. The default logging levels remain the same." msgstr "" -#: ../../../CHANGELOG.md:3567 +#: ../../../CHANGELOG.md:3794 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:3576 +#: ../../../CHANGELOG.md:3803 msgid "2018-11-03" msgstr "" -#: ../../../CHANGELOG.md:3578 +#: ../../../CHANGELOG.md:3805 msgid "Customize parts of Riot's config" msgstr "" -#: ../../../CHANGELOG.md:3580 +#: ../../../CHANGELOG.md:3807 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:3591 +#: ../../../CHANGELOG.md:3818 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:3600 +#: ../../../CHANGELOG.md:3827 msgid "SSL protocols used to serve Riot and Synapse" msgstr "" -#: ../../../CHANGELOG.md:3602 +#: ../../../CHANGELOG.md:3829 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:3604 -msgid "You may wish to reenable TLSv1 if you need to access Riot in older browsers." +#: ../../../CHANGELOG.md:3831 +msgid "You may wish to re-enable TLSv1 if you need to access Riot in older browsers." msgstr "" -#: ../../../CHANGELOG.md:3606 +#: ../../../CHANGELOG.md:3833 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:3609 +#: ../../../CHANGELOG.md:3836 msgid "2018-11-01" msgstr "" -#: ../../../CHANGELOG.md:3611 +#: ../../../CHANGELOG.md:3838 msgid "Postgres 11 support" msgstr "" -#: ../../../CHANGELOG.md:3613 +#: ../../../CHANGELOG.md:3840 msgid "The playbook now installs [Postgres 11](https://www.postgresql.org/about/news/1894/) by default." msgstr "" -#: ../../../CHANGELOG.md:3615 +#: ../../../CHANGELOG.md:3842 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:3617 -#: ../../../CHANGELOG.md:3704 -#: ../../../CHANGELOG.md:3824 +#: ../../../CHANGELOG.md:3844 +#: ../../../CHANGELOG.md:3931 +#: ../../../CHANGELOG.md:4051 msgid "(BC Break) Renaming playbook variables" msgstr "" -#: ../../../CHANGELOG.md:3619 +#: ../../../CHANGELOG.md:3846 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:3623 +#: ../../../CHANGELOG.md:3850 msgid "from `matrix_docker_image_mxisd` to `matrix_mxisd_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3624 +#: ../../../CHANGELOG.md:3851 msgid "from `matrix_docker_image_mautrix_telegram` to `matrix_mautrix_telegram_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3625 +#: ../../../CHANGELOG.md:3852 msgid "from `matrix_docker_image_mautrix_whatsapp` to `matrix_mautrix_whatsapp_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3626 +#: ../../../CHANGELOG.md:3853 msgid "from `matrix_docker_image_mailer` to `matrix_mailer_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3627 +#: ../../../CHANGELOG.md:3854 msgid "from `matrix_docker_image_coturn` to `matrix_coturn_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3628 +#: ../../../CHANGELOG.md:3855 msgid "from `matrix_docker_image_goofys` to `matrix_s3_goofys_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3629 +#: ../../../CHANGELOG.md:3856 msgid "from `matrix_docker_image_riot` to `matrix_riot_web_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3630 +#: ../../../CHANGELOG.md:3857 msgid "from `matrix_docker_image_nginx` to `matrix_nginx_proxy_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3631 +#: ../../../CHANGELOG.md:3858 msgid "from `matrix_docker_image_synapse` to `matrix_synapse_docker_image`" msgstr "" -#: ../../../CHANGELOG.md:3632 +#: ../../../CHANGELOG.md:3859 msgid "from `matrix_docker_image_postgres_v9` to `matrix_postgres_docker_image_v9`" msgstr "" -#: ../../../CHANGELOG.md:3633 +#: ../../../CHANGELOG.md:3860 msgid "from `matrix_docker_image_postgres_v10` to `matrix_postgres_docker_image_v10`" msgstr "" -#: ../../../CHANGELOG.md:3634 +#: ../../../CHANGELOG.md:3861 msgid "from `matrix_docker_image_postgres_latest` to `matrix_postgres_docker_image_latest`" msgstr "" -#: ../../../CHANGELOG.md:3637 +#: ../../../CHANGELOG.md:3864 msgid "2018-10-26" msgstr "" -#: ../../../CHANGELOG.md:3639 +#: ../../../CHANGELOG.md:3866 msgid "Mautrix Whatsapp bridging support" msgstr "" -#: ../../../CHANGELOG.md:3641 +#: ../../../CHANGELOG.md:3868 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:3643 +#: ../../../CHANGELOG.md:3870 msgid "Additional details are available in [Setting up Mautrix Whatsapp bridging](docs/configuring-playbook-bridge-mautrix-whatsapp.md)." msgstr "" -#: ../../../CHANGELOG.md:3646 +#: ../../../CHANGELOG.md:3873 msgid "2018-10-25" msgstr "" -#: ../../../CHANGELOG.md:3648 +#: ../../../CHANGELOG.md:3875 msgid "Support for controlling Matrix federation" msgstr "" -#: ../../../CHANGELOG.md:3650 +#: ../../../CHANGELOG.md:3877 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:3653 +#: ../../../CHANGELOG.md:3880 msgid "2018-10-24" msgstr "" -#: ../../../CHANGELOG.md:3655 +#: ../../../CHANGELOG.md:3882 msgid "Disabling riot-web guests" msgstr "" -#: ../../../CHANGELOG.md:3657 +#: ../../../CHANGELOG.md:3884 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:3660 +#: ../../../CHANGELOG.md:3887 msgid "2018-10-21" msgstr "" -#: ../../../CHANGELOG.md:3662 +#: ../../../CHANGELOG.md:3889 msgid "Self-check maintenance command" msgstr "" -#: ../../../CHANGELOG.md:3664 -msgid "The playbook can now [check if services are configured correctly](docs/maintenance-checking-services.md)." +#: ../../../CHANGELOG.md:3891 +msgid "The playbook can now [check if services are configured correctly](docs/maintenance-and-troubleshooting.md#how-to-check-if-services-work)." msgstr "" -#: ../../../CHANGELOG.md:3667 +#: ../../../CHANGELOG.md:3894 msgid "2018-10-05" msgstr "" -#: ../../../CHANGELOG.md:3669 +#: ../../../CHANGELOG.md:3896 msgid "Presence tracking made configurable" msgstr "" -#: ../../../CHANGELOG.md:3671 +#: ../../../CHANGELOG.md:3898 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:3673 +#: ../../../CHANGELOG.md:3900 msgid "If users participate in large rooms with many other servers, disabling presence will decrease server load significantly." msgstr "" -#: ../../../CHANGELOG.md:3676 +#: ../../../CHANGELOG.md:3903 msgid "2018-09-27" msgstr "" -#: ../../../CHANGELOG.md:3678 +#: ../../../CHANGELOG.md:3905 msgid "Synapse Cache Factor made configurable" msgstr "" -#: ../../../CHANGELOG.md:3680 +#: ../../../CHANGELOG.md:3907 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:3682 +#: ../../../CHANGELOG.md:3909 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:3685 +#: ../../../CHANGELOG.md:3912 msgid "2018-09-26" msgstr "" -#: ../../../CHANGELOG.md:3687 +#: ../../../CHANGELOG.md:3914 msgid "Disabling Docker container logging" msgstr "" -#: ../../../CHANGELOG.md:3689 +#: ../../../CHANGELOG.md:3916 msgid "`--log-driver=none` is used for all Docker containers now." msgstr "" -#: ../../../CHANGELOG.md:3691 +#: ../../../CHANGELOG.md:3918 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:3693 +#: ../../../CHANGELOG.md:3920 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:3696 +#: ../../../CHANGELOG.md:3923 msgid "2018-09-17" msgstr "" -#: ../../../CHANGELOG.md:3698 +#: ../../../CHANGELOG.md:3925 msgid "Service discovery support" msgstr "" -#: ../../../CHANGELOG.md:3700 +#: ../../../CHANGELOG.md:3927 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:3702 +#: ../../../CHANGELOG.md:3929 msgid "Additional details are available in [Configuring service discovery via .well-known](docs/configuring-well-known.md)." msgstr "" -#: ../../../CHANGELOG.md:3708 +#: ../../../CHANGELOG.md:3935 msgid "from `matrix_nginx_riot_web_data_path` to `matrix_riot_web_data_path`" msgstr "" -#: ../../../CHANGELOG.md:3709 +#: ../../../CHANGELOG.md:3936 msgid "from `matrix_riot_web_default_identity_server_url` to `matrix_identity_server_url`" msgstr "" -#: ../../../CHANGELOG.md:3712 +#: ../../../CHANGELOG.md:3939 msgid "2018-09-07" msgstr "" -#: ../../../CHANGELOG.md:3714 +#: ../../../CHANGELOG.md:3941 msgid "Mautrix Telegram bridging support" msgstr "" -#: ../../../CHANGELOG.md:3716 +#: ../../../CHANGELOG.md:3943 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:3718 +#: ../../../CHANGELOG.md:3945 msgid "Additional details are available in [Setting up Mautrix Telegram bridging](docs/configuring-playbook-bridge-mautrix-telegram.md)." msgstr "" -#: ../../../CHANGELOG.md:3720 +#: ../../../CHANGELOG.md:3947 msgid "Events cache size increase and configurability for Matrix Synapse" msgstr "" -#: ../../../CHANGELOG.md:3722 +#: ../../../CHANGELOG.md:3949 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:3724 +#: ../../../CHANGELOG.md:3951 msgid "Previously, this value was hardcoded to `\"10K\"`. From now on, a more reasonable default of `\"100K\"` is used." msgstr "" -#: ../../../CHANGELOG.md:3726 +#: ../../../CHANGELOG.md:3953 msgid "Password-peppering support for Matrix Synapse" msgstr "" -#: ../../../CHANGELOG.md:3728 +#: ../../../CHANGELOG.md:3955 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:3730 +#: ../../../CHANGELOG.md:3957 msgid "Statistics-reporting support for Matrix Synapse" msgstr "" -#: ../../../CHANGELOG.md:3732 +#: ../../../CHANGELOG.md:3959 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:3734 +#: ../../../CHANGELOG.md:3961 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:3737 +#: ../../../CHANGELOG.md:3964 msgid "2018-08-29" msgstr "" -#: ../../../CHANGELOG.md:3739 +#: ../../../CHANGELOG.md:3966 msgid "Changing the way SSL certificates are retrieved" msgstr "" -#: ../../../CHANGELOG.md:3741 +#: ../../../CHANGELOG.md:3968 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:3743 +#: ../../../CHANGELOG.md:3970 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:3745 +#: ../../../CHANGELOG.md:3972 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:3747 +#: ../../../CHANGELOG.md:3974 msgid "`systemctl stop 'matrix*'`" msgstr "" -#: ../../../CHANGELOG.md:3748 +#: ../../../CHANGELOG.md:3975 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:3749 +#: ../../../CHANGELOG.md:3976 msgid "`mv /matrix/ssl /matrix/ssl-acmetool-delete-later`" msgstr "" -#: ../../../CHANGELOG.md:3750 +#: ../../../CHANGELOG.md:3977 msgid "re-run the playbook's [installation](docs/installing.md)" msgstr "" -#: ../../../CHANGELOG.md:3751 +#: ../../../CHANGELOG.md:3978 msgid "possibly delete `/matrix/ssl-acmetool-delete-later`" msgstr "" -#: ../../../CHANGELOG.md:3754 +#: ../../../CHANGELOG.md:3981 msgid "2018-08-21" msgstr "" -#: ../../../CHANGELOG.md:3756 +#: ../../../CHANGELOG.md:3983 msgid "Matrix Corporal support" msgstr "" -#: ../../../CHANGELOG.md:3758 +#: ../../../CHANGELOG.md:3985 msgid "The playbook can now install and configure [matrix-corporal](https://github.com/devture/matrix-corporal) for you." msgstr "" -#: ../../../CHANGELOG.md:3760 +#: ../../../CHANGELOG.md:3987 msgid "Additional details are available in [Setting up Matrix Corporal](docs/configuring-playbook-matrix-corporal.md)." msgstr "" -#: ../../../CHANGELOG.md:3763 +#: ../../../CHANGELOG.md:3990 msgid "2018-08-20" msgstr "" -#: ../../../CHANGELOG.md:3765 +#: ../../../CHANGELOG.md:3992 msgid "Matrix Synapse rate limit control variables" msgstr "" -#: ../../../CHANGELOG.md:3767 +#: ../../../CHANGELOG.md:3994 msgid "The following new variables can now be configured to control Matrix Synapse's rate-limiting (default values are shown below)." msgstr "" -#: ../../../CHANGELOG.md:3774 +#: ../../../CHANGELOG.md:4001 msgid "Shared Secret Auth support via matrix-synapse-shared-secret-auth" msgstr "" -#: ../../../CHANGELOG.md:3776 +#: ../../../CHANGELOG.md:4003 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:3778 +#: ../../../CHANGELOG.md:4005 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:3781 +#: ../../../CHANGELOG.md:4008 msgid "2018-08-17" msgstr "" -#: ../../../CHANGELOG.md:3783 +#: ../../../CHANGELOG.md:4010 msgid "REST auth support via matrix-synapse-rest-auth" msgstr "" -#: ../../../CHANGELOG.md:3785 +#: ../../../CHANGELOG.md:4012 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:3787 +#: ../../../CHANGELOG.md:4014 msgid "Additional details are available in [Setting up the REST authentication password provider module](docs/configuring-playbook-rest-auth.md)." msgstr "" -#: ../../../CHANGELOG.md:3789 +#: ../../../CHANGELOG.md:4016 msgid "Compression improvements" msgstr "" -#: ../../../CHANGELOG.md:3791 +#: ../../../CHANGELOG.md:4018 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:3794 +#: ../../../CHANGELOG.md:4021 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:3797 +#: ../../../CHANGELOG.md:4024 msgid "Disabling some unnecessary Synapse services" msgstr "" -#: ../../../CHANGELOG.md:3799 +#: ../../../CHANGELOG.md:4026 msgid "The following services are not necessary, so they have been disabled:" msgstr "" -#: ../../../CHANGELOG.md:3800 +#: ../../../CHANGELOG.md:4027 msgid "on the federation port (8448): the `client` service" msgstr "" -#: ../../../CHANGELOG.md:3801 +#: ../../../CHANGELOG.md:4028 msgid "on the http port (8008, exposed over 443): the old Angular `webclient` and the `federation` service" msgstr "" -#: ../../../CHANGELOG.md:3803 +#: ../../../CHANGELOG.md:4030 msgid "Federation runs only on the federation port (8448) now. The Client APIs run only on the http port (8008) now." msgstr "" -#: ../../../CHANGELOG.md:3806 +#: ../../../CHANGELOG.md:4033 msgid "2018-08-15" msgstr "" -#: ../../../CHANGELOG.md:3808 +#: ../../../CHANGELOG.md:4035 msgid "mxisd Identity Server support" msgstr "" -#: ../../../CHANGELOG.md:3810 +#: ../../../CHANGELOG.md:4037 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:3813 +#: ../../../CHANGELOG.md:4040 msgid "2018-08-14" msgstr "" -#: ../../../CHANGELOG.md:3815 +#: ../../../CHANGELOG.md:4042 msgid "Email-sending support" msgstr "" -#: ../../../CHANGELOG.md:3817 +#: ../../../CHANGELOG.md:4044 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:3819 +#: ../../../CHANGELOG.md:4046 msgid "With this, Matrix Synapse is able to send email notifications for missed messages, etc." msgstr "" -#: ../../../CHANGELOG.md:3822 +#: ../../../CHANGELOG.md:4049 msgid "2018-08-08" msgstr "" -#: ../../../CHANGELOG.md:3828 +#: ../../../CHANGELOG.md:4055 msgid "from `matrix_max_upload_size_mb` to `matrix_synapse_max_upload_size_mb`" msgstr "" -#: ../../../CHANGELOG.md:3829 +#: ../../../CHANGELOG.md:4056 msgid "from `matrix_max_log_file_size_mb` to `matrix_synapse_max_log_file_size_mb`" msgstr "" -#: ../../../CHANGELOG.md:3830 +#: ../../../CHANGELOG.md:4057 msgid "from `matrix_max_log_files_count` to `matrix_synapse_max_log_files_count`" msgstr "" -#: ../../../CHANGELOG.md:3831 +#: ../../../CHANGELOG.md:4058 msgid "from `docker_matrix_image` to `matrix_docker_image_synapse`" msgstr "" -#: ../../../CHANGELOG.md:3832 +#: ../../../CHANGELOG.md:4059 msgid "from `docker_nginx_image` to `matrix_docker_image_nginx`" msgstr "" -#: ../../../CHANGELOG.md:3833 +#: ../../../CHANGELOG.md:4060 msgid "from `docker_riot_image` to `matrix_docker_image_riot`" msgstr "" -#: ../../../CHANGELOG.md:3834 +#: ../../../CHANGELOG.md:4061 msgid "from `docker_goofys_image` to `matrix_docker_image_goofys`" msgstr "" -#: ../../../CHANGELOG.md:3835 +#: ../../../CHANGELOG.md:4062 msgid "from `docker_coturn_image` to `matrix_docker_image_coturn`" msgstr "" -#: ../../../CHANGELOG.md:3837 +#: ../../../CHANGELOG.md:4064 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:3839 +#: ../../../CHANGELOG.md:4066 msgid "Renaming Ansible playbook tag" msgstr "" -#: ../../../CHANGELOG.md:3841 +#: ../../../CHANGELOG.md:4068 msgid "The command for executing the whole playbook has changed. The `setup-main` tag got renamed to `setup-all`." msgstr "" -#: ../../../CHANGELOG.md:3843 +#: ../../../CHANGELOG.md:4070 msgid "Docker container linking" msgstr "" -#: ../../../CHANGELOG.md:3845 +#: ../../../CHANGELOG.md:4072 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/translation-templates/README.pot b/i18n/translation-templates/README.pot index 43bd0d07c..027456baf 100644 --- a/i18n/translation-templates/README.pot +++ b/i18n/translation-templates/README.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\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)" +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&fetchMode=summary)](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) [![donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/s.pantaleev/donate) [![REUSE status](https://api.reuse.software/badge/github.com/spantaleev/matrix-docker-ansible-deploy)](https://api.reuse.software/info/github.com/spantaleev/matrix-docker-ansible-deploy)" msgstr "" #: ../../../README.md:1 @@ -28,6 +28,10 @@ msgstr "" msgid "donate" msgstr "" +#: ../../../README.md:1 +msgid "REUSE status" +msgstr "" + #: ../../../README.md:3 msgid "Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker" msgstr "" @@ -184,6 +188,18 @@ msgstr "" msgid "[Link](docs/configuring-playbook-conduwuit.md)" msgstr "" +#: ../../../README.md:0 +msgid "[continuwuity](https://continuwuity.org)" +msgstr "" + +#: ../../../README.md:0 +msgid "Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. continuwuity is a continuation of conduwuit." +msgstr "" + +#: ../../../README.md:0 +msgid "[Link](docs/configuring-playbook-continuwuity.md)" +msgstr "" + #: ../../../README.md:0 msgid "[Dendrite](https://github.com/element-hq/dendrite)" msgstr "" @@ -196,11 +212,11 @@ msgstr "" msgid "[Link](docs/configuring-playbook-dendrite.md)" msgstr "" -#: ../../../README.md:58 +#: ../../../README.md:59 msgid "Clients" msgstr "" -#: ../../../README.md:60 +#: ../../../README.md:61 msgid "Web clients for Matrix that you can host on your own domains." msgstr "" @@ -252,11 +268,23 @@ msgstr "" msgid "[Link](docs/configuring-playbook-client-schildichat-web.md)" msgstr "" -#: ../../../README.md:69 -msgid "Server Components" +#: ../../../README.md:0 +msgid "[FluffyChat Web](https://fluffychat.im/)" +msgstr "" + +#: ../../../README.md:0 +msgid "The cutest messenger in Matrix" +msgstr "" + +#: ../../../README.md:0 +msgid "[Link](docs/configuring-playbook-client-fluffychat-web.md)" msgstr "" #: ../../../README.md:71 +msgid "Server Components" +msgstr "" + +#: ../../../README.md:73 msgid "Services that run on the server to make the various parts of your installation work." msgstr "" @@ -289,7 +317,7 @@ msgid "[Traefik](https://doc.traefik.io/traefik/)" msgstr "" #: ../../../README.md:0 -msgid "Web server, listening on ports 80, 443 and 8448 - standing in front of all the other services. Using your own webserver [is possible](docs/configuring-playbook-own-webserver.md)" +msgid "Web server, listening on ports 80, 443 and 8448 - standing in front of all the other services. [Using your own webserver](docs/configuring-playbook-own-webserver.md) is also possible." msgstr "" #: ../../../README.md:0 @@ -344,11 +372,35 @@ msgstr "" msgid "[Link](docs/configuring-playbook-dynamic-dns.md)" msgstr "" -#: ../../../README.md:83 +#: ../../../README.md:0 +msgid "[LiveKit Server](https://github.com/livekit/livekit)" +msgstr "" + +#: ../../../README.md:0 +msgid "WebRTC server for audio/video calls" +msgstr "" + +#: ../../../README.md:0 +msgid "[Link](docs/configuring-playbook-livekit-server.md)" +msgstr "" + +#: ../../../README.md:0 +msgid "[Livekit JWT Service](https://github.com/livekit/livekit-jwt-service)" +msgstr "" + +#: ../../../README.md:0 +msgid "JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md)" +msgstr "" + +#: ../../../README.md:0 +msgid "[Link](docs/configuring-playbook-livekit-jwt-service.md)" +msgstr "" + +#: ../../../README.md:87 msgid "Authentication" msgstr "" -#: ../../../README.md:85 +#: ../../../README.md:89 msgid "Extend and modify how users are authenticated on your homeserver." msgstr "" @@ -393,7 +445,7 @@ msgid "[matrix-ldap-registration-proxy](https://gitlab.com/activism.internationa msgstr "" #: ../../../README.md:0 -msgid "A proxy that handles Matrix registration requests and forwards them to LDAP." +msgid "Proxy that handles Matrix registration requests and forwards them to LDAP" msgstr "" #: ../../../README.md:0 @@ -405,7 +457,7 @@ msgid "[matrix-registration](https://github.com/ZerataX/matrix-registration)" msgstr "" #: ../../../README.md:0 -msgid "A simple python application to have a token based Matrix registration" +msgid "Simple python application to have a token based Matrix registration" msgstr "" #: ../../../README.md:0 @@ -413,7 +465,7 @@ msgid "[Link](docs/configuring-playbook-matrix-registration.md)" msgstr "" #: ../../../README.md:0 -msgid "[Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) (UVS)" +msgid "[Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service)" msgstr "" #: ../../../README.md:0 @@ -429,18 +481,18 @@ msgid "[synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispa msgstr "" #: ../../../README.md:0 -msgid "A spam checker module" +msgid "Spam checker module" msgstr "" #: ../../../README.md:0 msgid "[Link](docs/configuring-playbook-synapse-simple-antispam.md)" msgstr "" -#: ../../../README.md:97 +#: ../../../README.md:101 msgid "File Storage" msgstr "" -#: ../../../README.md:99 +#: ../../../README.md:103 msgid "Use alternative file storage to the default `media_store` folder." msgstr "" @@ -469,18 +521,18 @@ msgid "[matrix-media-repo](https://github.com/turt2live/matrix-media-repo)" msgstr "" #: ../../../README.md:0 -msgid "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." +msgid "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." msgstr "" #: ../../../README.md:0 msgid "[Link](docs/configuring-playbook-matrix-media-repo.md)" msgstr "" -#: ../../../README.md:107 +#: ../../../README.md:111 msgid "Bridges" msgstr "" -#: ../../../README.md:109 +#: ../../../README.md:113 msgid "Bridges can be used to connect your Matrix installation with third-party communication networks." msgstr "" @@ -556,6 +608,18 @@ msgstr "" msgid "[Link](docs/configuring-playbook-bridge-mautrix-wsproxy.md)" msgstr "" +#: ../../../README.md:0 +msgid "[mautrix-bluesky](https://github.com/mautrix/bluesky)" +msgstr "" + +#: ../../../README.md:0 +msgid "Bridge to [Bluesky](https://bsky.social/)" +msgstr "" + +#: ../../../README.md:0 +msgid "[Link](docs/configuring-playbook-bridge-mautrix-bluesky.md)" +msgstr "" + #: ../../../README.md:0 msgid "[mautrix-twitter](https://github.com/mautrix/twitter)" msgstr "" @@ -685,83 +749,39 @@ msgid "[Link](docs/configuring-playbook-bridge-matrix-bridge-sms.md)" msgstr "" #: ../../../README.md:0 -msgid "[matrix-wechat](https://github.com/duo/matrix-wechat)" -msgstr "" - -#: ../../../README.md:0 -msgid "Bridge to [WeChat](https://www.wechat.com/)" -msgstr "" - -#: ../../../README.md:0 -msgid "[Link](docs/configuring-playbook-bridge-wechat.md)" -msgstr "" - -#: ../../../README.md:0 -msgid "[Heisenbridge](https://github.com/hifi/heisenbridge)" -msgstr "" - -#: ../../../README.md:0 -msgid "Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat)" -msgstr "" - -#: ../../../README.md:0 -msgid "[Link](docs/configuring-playbook-bridge-heisenbridge.md)" -msgstr "" - -#: ../../../README.md:0 -msgid "[go-skype-bridge](https://github.com/kelaresg/go-skype-bridge)" -msgstr "" - -#: ../../../README.md:0 -msgid "Bridge to [Skype](https://www.skype.com)" -msgstr "" - -#: ../../../README.md:0 -msgid "[Link](docs/configuring-playbook-bridge-go-skype-bridge.md)" +msgid "[matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge)" msgstr "" #: ../../../README.md:0 -msgid "[mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack)" +msgid "Bridge to [Steam](https://steampowered.com/)" msgstr "" #: ../../../README.md:0 -msgid "Bridge to [Slack](https://slack.com)" +msgid "[Link](docs/configuring-playbook-bridge-steam.md)" msgstr "" #: ../../../README.md:0 -msgid "[Link](docs/configuring-playbook-bridge-mx-puppet-slack.md)" -msgstr "" - -#: ../../../README.md:0 -msgid "[mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram)" -msgstr "" - -#: ../../../README.md:0 -msgid "Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/))" -msgstr "" - -#: ../../../README.md:0 -msgid "[Link](docs/configuring-playbook-bridge-mx-puppet-instagram.md)" +msgid "[matrix-wechat](https://github.com/duo/matrix-wechat)" msgstr "" #: ../../../README.md:0 -msgid "[mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter)" +msgid "Bridge to [WeChat](https://www.wechat.com/)" msgstr "" #: ../../../README.md:0 -msgid "Bridge for Twitter-DMs ([Twitter](https://twitter.com/))" +msgid "[Link](docs/configuring-playbook-bridge-wechat.md)" msgstr "" #: ../../../README.md:0 -msgid "[Link](docs/configuring-playbook-bridge-mx-puppet-twitter.md)" +msgid "[Heisenbridge](https://github.com/hifi/heisenbridge)" msgstr "" #: ../../../README.md:0 -msgid "[mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord)" +msgid "Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat)" msgstr "" #: ../../../README.md:0 -msgid "[Link](docs/configuring-playbook-bridge-mx-puppet-discord.md)" +msgid "[Link](docs/configuring-playbook-bridge-heisenbridge.md)" msgstr "" #: ../../../README.md:0 @@ -777,7 +797,7 @@ msgid "[Link](docs/configuring-playbook-bridge-mx-puppet-groupme.md)" msgstr "" #: ../../../README.md:0 -msgid "[mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam)" +msgid "[mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam)" msgstr "" #: ../../../README.md:0 @@ -800,11 +820,11 @@ msgstr "" msgid "[Link](docs/configuring-playbook-bridge-postmoogle.md)" msgstr "" -#: ../../../README.md:141 +#: ../../../README.md:142 msgid "Bots" msgstr "" -#: ../../../README.md:143 +#: ../../../README.md:144 msgid "Bots provide various additional functionality to your installation." msgstr "" @@ -813,7 +833,7 @@ msgid "[baibot](https://github.com/etkecc/baibot)" msgstr "" #: ../../../README.md:0 -msgid "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" +msgid "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" msgstr "" #: ../../../README.md:0 @@ -849,7 +869,7 @@ msgid "[maubot](https://github.com/maubot/maubot)" msgstr "" #: ../../../README.md:0 -msgid "A plugin-based Matrix bot system" +msgid "Plugin-based Matrix bot system" msgstr "" #: ../../../README.md:0 @@ -861,7 +881,7 @@ msgid "[Honoroit](https://github.com/etkecc/honoroit)" msgstr "" #: ../../../README.md:0 -msgid "A helpdesk bot" +msgid "Helpdesk bot" msgstr "" #: ../../../README.md:0 @@ -873,7 +893,7 @@ msgid "[Mjolnir](https://github.com/matrix-org/mjolnir)" msgstr "" #: ../../../README.md:0 -msgid "A moderation tool for Matrix" +msgid "Moderation tool for Matrix" msgstr "" #: ../../../README.md:0 @@ -885,7 +905,7 @@ msgid "[Draupnir](https://github.com/the-draupnir-project/Draupnir)" msgstr "" #: ../../../README.md:0 -msgid "A moderation tool for Matrix (Fork of Mjolnir)" +msgid "Moderation tool for Matrix (Fork of Mjolnir)" msgstr "" #: ../../../README.md:0 @@ -904,11 +924,11 @@ msgstr "" msgid "[Link](docs/configuring-playbook-bot-buscarron.md)" msgstr "" -#: ../../../README.md:156 +#: ../../../README.md:157 msgid "Administration" msgstr "" -#: ../../../README.md:158 +#: ../../../README.md:159 msgid "Services that help you in administrating and monitoring your Matrix installation." msgstr "" @@ -941,7 +961,7 @@ msgid "[synapse-admin](https://github.com/etkecc/synapse-admin)" msgstr "" #: ../../../README.md:0 -msgid "A web UI tool for administrating users and rooms on your Matrix server" +msgid "Web UI tool for administrating users and rooms on your Matrix server" msgstr "" #: ../../../README.md:0 @@ -957,7 +977,7 @@ msgid "Consists of the [Prometheus](https://prometheus.io) time-series database msgstr "" #: ../../../README.md:0 -msgid "[Link](docs/configuring-playbook-prometheus-grafana.md) (for [prometheus-nginxlog-exporter](docs/configuring-playbook-prometheus-nginxlog.md))" +msgid "[Link](docs/configuring-playbook-prometheus-grafana.md) (for [prometheus-nginxlog-exporter](docs/configuring-playbook-prometheus-grafana.md#enable-metrics-and-graphs-for-nginx-logs-optional))" msgstr "" #: ../../../README.md:0 @@ -996,11 +1016,11 @@ msgstr "" msgid "[Link](docs/configuring-playbook-synapse-usage-exporter.md)" msgstr "" -#: ../../../README.md:170 +#: ../../../README.md:171 msgid "Misc" msgstr "" -#: ../../../README.md:172 +#: ../../../README.md:173 msgid "Various services that don't fit any other categories." msgstr "" @@ -1021,7 +1041,7 @@ msgid "[synapse_auto_accept_invite](https://github.com/matrix-org/synapse-auto-a msgstr "" #: ../../../README.md:0 -msgid "A Synapse module to automatically accept invites." +msgid "Synapse module to automatically accept invites" msgstr "" #: ../../../README.md:0 @@ -1033,7 +1053,7 @@ msgid "[synapse_auto_compressor](https://github.com/matrix-org/rust-synapse-comp msgstr "" #: ../../../README.md:0 -msgid "A cli tool that automatically compresses `state_groups` database table in background." +msgid "Cli tool that automatically compresses `state_groups` database table in background" msgstr "" #: ../../../README.md:0 @@ -1057,7 +1077,7 @@ msgid "[Etherpad](https://etherpad.org)" msgstr "" #: ../../../README.md:0 -msgid "An open source collaborative text editor" +msgid "Open source collaborative text editor" msgstr "" #: ../../../README.md:0 @@ -1069,7 +1089,7 @@ msgid "[Jitsi](https://jitsi.org/)" msgstr "" #: ../../../README.md:0 -msgid "An open source video-conferencing platform" +msgid "Open source video-conferencing platform" msgstr "" #: ../../../README.md:0 @@ -1081,7 +1101,7 @@ msgid "[Cactus Comments](https://cactus.chat)" msgstr "" #: ../../../README.md:0 -msgid "A federated comment system built on Matrix" +msgid "Federated comment system built on Matrix" msgstr "" #: ../../../README.md:0 @@ -1093,7 +1113,7 @@ msgid "[Pantalaimon](https://github.com/matrix-org/pantalaimon)" msgstr "" #: ../../../README.md:0 -msgid "An E2EE aware proxy daemon" +msgid "E2EE aware proxy daemon" msgstr "" #: ../../../README.md:0 @@ -1124,54 +1144,66 @@ msgstr "" msgid "[Link](docs/configuring-playbook-ntfy.md)" msgstr "" -#: ../../../README.md:187 -msgid "🆕 Changes" +#: ../../../README.md:0 +msgid "[Element Call](https://github.com/element-hq/element-call)" +msgstr "" + +#: ../../../README.md:0 +msgid "A native Matrix video conferencing application" +msgstr "" + +#: ../../../README.md:0 +msgid "[Link](docs/configuring-playbook-element-call.md)" msgstr "" #: ../../../README.md:189 -msgid "This playbook evolves over time, sometimes with backward-incompatible changes." +msgid "🆕 Changes" msgstr "" #: ../../../README.md:191 -msgid "When updating the playbook, refer to [the changelog](CHANGELOG.md) to catch up with what's new." +msgid "This playbook evolves over time, sometimes with backward-incompatible changes." msgstr "" #: ../../../README.md:193 -msgid "🆘 Support" +msgid "When updating the playbook, refer to [the changelog](CHANGELOG.md) to catch up with what's new." msgstr "" #: ../../../README.md:195 -msgid "Matrix room: [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com)" +msgid "🆘 Support" msgstr "" #: ../../../README.md:197 -msgid "IRC channel: `#matrix-docker-ansible-deploy` on the [Libera Chat](https://libera.chat/) IRC network (irc.libera.chat:6697)" +msgid "Matrix room: [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com)" msgstr "" #: ../../../README.md:199 -msgid "GitHub issues: [spantaleev/matrix-docker-ansible-deploy/issues](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues)" +msgid "IRC channel: `#matrix-docker-ansible-deploy` on the [Libera Chat](https://libera.chat/) IRC network (irc.libera.chat:6697)" msgstr "" #: ../../../README.md:201 -msgid "🌐 Translation" +msgid "GitHub issues: [spantaleev/matrix-docker-ansible-deploy/issues](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues)" msgstr "" #: ../../../README.md:203 -msgid "See the [i18n/README.md](i18n/README.md) file for more information about translation." +msgid "🌐 Translation" msgstr "" #: ../../../README.md:205 -msgid "Translations are still work in progress." +msgid "See the [i18n/README.md](i18n/README.md) file for more information about translation." msgstr "" #: ../../../README.md:207 -msgid "🤝 Related" +msgid "Translations are still work in progress." msgstr "" #: ../../../README.md:209 -msgid "You may also be interested in [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) - another Ansible playbook for self-hosting non-Matrix services (see its [List of supported services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md))." +msgid "🤝 Related" msgstr "" #: ../../../README.md:211 +msgid "You may also be interested in [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) - another Ansible playbook for self-hosting non-Matrix services (see its [List of supported services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md))." +msgstr "" + +#: ../../../README.md:213 msgid "mash-playbook also makes use of [Traefik](./docs/configuring-playbook-traefik.md) as its reverse-proxy, so with minor [interoperability adjustments](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/interoperability.md), you can make matrix-docker-ansible-deploy and mash-playbook co-exist and host Matrix and non-Matrix services on the same server." msgstr "" diff --git a/i18n/translation-templates/YEAR-IN-REVIEW.pot b/i18n/translation-templates/YEAR-IN-REVIEW.pot index e17e16d39..bdcca3feb 100644 --- a/i18n/translation-templates/YEAR-IN-REVIEW.pot +++ b/i18n/translation-templates/YEAR-IN-REVIEW.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,274 +16,274 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../YEAR-IN-REVIEW.md:1 +#: ../../../YEAR-IN-REVIEW.md:8 msgid "2023" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:3 +#: ../../../YEAR-IN-REVIEW.md:10 msgid "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." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:5 +#: ../../../YEAR-IN-REVIEW.md:12 msgid "2023 is probably [the year of AI](https://journal.everypixel.com/2023-the-year-of-ai), with millions of people jumping aboard [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/chatgpt) train. matrix-docker-ansible-deploy is no stranger to this and 2023 began with a PR from [bertybuttface](https://github.com/bertybuttface) who added support for [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#chatgpt-support)). While OpenAI's chat GPT website was frequently overloaded in the past, their API was up which made using this bot both convenient and more reliable." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:7 -msgid "AI aside, with the playbook's focus being containers, we're **doubling down on being \"container native\"** and becoming more interoperable for people hosting other containers on the Matrix server. In [2022](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/YEAR-IN-REVIEW.md#2022), we've announced a few sibling Ansible playbooks, their use of [Traefik](https://doc.traefik.io/traefik/) and the possiblity of matrix-docker-ansible-deploy also switching to this reverse-proxy. This prediction materialized quickly. The **largest change** in the playbook in 2023 happened way back in February - matrix-docker-ansible-deploy [starting the switch from nginx to Traefik](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-reverse-proxy-configuration-changes-and-initial-traefik-support) and then quickly [making Treafik the default reverse-proxy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#traefik-is-the-default-reverse-proxy-now). As noted in the changelog entries, we envisioned a quick and complete elimination of `matrix-nginx-proxy`, but at the end of 2023, it hasn't happened yet. The playbook is already using Traefik as the front-most reverse-proxy, but nginx (via `matrix-nginx-proxy`) is still around - it has taken a step back and is only used internally for new setups. Work got to a stall due to:" +#: ../../../YEAR-IN-REVIEW.md:14 +msgid "AI aside, with the playbook's focus being containers, we're **doubling down on being \"container native\"** and becoming more interoperable for people hosting other containers on the Matrix server. In [2022](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/YEAR-IN-REVIEW.md#2022), we've announced a few sibling Ansible playbooks, their use of [Traefik](https://doc.traefik.io/traefik/) and the possibility of matrix-docker-ansible-deploy also switching to this reverse-proxy. This prediction materialized quickly. The **largest change** in the playbook in 2023 happened way back in February - matrix-docker-ansible-deploy [starting the switch from nginx to Traefik](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-reverse-proxy-configuration-changes-and-initial-traefik-support) and then quickly [making Treafik the default reverse-proxy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#traefik-is-the-default-reverse-proxy-now). As noted in the changelog entries, we envisioned a quick and complete elimination of `matrix-nginx-proxy`, but at the end of 2023, it hasn't happened yet. The playbook is already using Traefik as the front-most reverse-proxy, but nginx (via `matrix-nginx-proxy`) is still around - it has taken a step back and is only used internally for new setups. Work got to a stall due to:" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:9 +#: ../../../YEAR-IN-REVIEW.md:16 msgid "complexity: untangling the overly large and messy `matrix-nginx-proxy` component is difficult" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:10 +#: ../../../YEAR-IN-REVIEW.md:17 msgid "the current setup became \"good enough\" because nginx has become an internal implementation detail for those who have migrated to Traefik. Traefik is already the default public reverse-proxy and gives better possibilities to people wishing to run other web-exposed containers on their Matrix server via [Docker Compose](https://docs.docker.com/compose/), other Ansible playbooks like [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) (more about this one, below) or any other way." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:12 +#: ../../../YEAR-IN-REVIEW.md:19 msgid "`matrix-nginx-proxy` is no longer in the way of us being interoperable, but its ugly internal details are still there. It is one more proxy in the long chain of reverse-proxies we have and we'd like to cut it out. This would both make things simpler and also boost performance." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:14 +#: ../../../YEAR-IN-REVIEW.md:21 msgid "The delay in eliminating `matrix-nginx-proxy` has probably been welcome by many existing users who decided to postpone the Traefik migration a bit longer. In 2024, work on eliminating `matrix-nginx-proxy` will continue with rapid pace. People who are still using `matrix-nginx-proxy` as their front-most reverse-proxy will need to rework their setup. About a year of putting it off has been long enough." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:16 +#: ../../../YEAR-IN-REVIEW.md:23 msgid "This large Traefik reverse-proxy change was also accompanied by another internal change which began in 2022, but continued in 2023 - **moving non-Matrix-related roles from being internal to the playbook to living their own life outside of it**. Various roles were made more decoupled and moved outside of the playbook, so that other projects (like the [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) Ansible playbook or other Ansible playbooks) could benefit from them. This led to the **death of a few sibling playbooks** ([gitea-docker-ansible-deploy](https://github.com/spantaleev/gitea-docker-ansible-deploy), [nextcloud-docker-ansible-deploy](https://github.com/spantaleev/nextcloud-docker-ansible-deploy), [peertube-docker-ansible-deploy](https://github.com/spantaleev/peertube-docker-ansible-deploy), [vaultwarden-docker-ansible-deploy](https://github.com/spantaleev/vaultwarden-docker-ansible-deploy)), but brought life to something better, which supports all these services and more." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:18 +#: ../../../YEAR-IN-REVIEW.md:25 msgid "[mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) is a new Ansible playbook that a few of us (matrix-docker-ansible-deploy contributors) have launched in 2023. It has quickly grown to supports [60+ services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md) and aims to do the same for [FOSS](https://en.wikipedia.org/wiki/Free_and_open-source_software) service hosting, as matrix-docker-ansible-deploy has done for Matrix - providing a clean and secure way to run a bunch of services in containers on a regular server (that is to say, without Kubernetes, etc.). Thanks to Traefik and Ansible role reuse, it's easy to host both mash-playbook services and matrix-docker-ansible-deploy services on the same server - see mash-playbook's [interoperability](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/interoperability.md) documentation page. If you've been looking for a holiday project or your New Year's Resolutions list contains \"self-hosting more services\", then you're welcome to give this new playbook a try and join its Matrix room ([#mash-playbook:devture.com](https://matrix.to/#/#mash-playbook:devture.com))." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:20 +#: ../../../YEAR-IN-REVIEW.md:27 msgid "Because many of the roles are now external to this playbook (defined in the [requirements.yml](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/da27655ef34999fa924bc0a5e641dbd9ba06f133/requirements.yml) file), running `make roles` (or better yet `just roles` via the [just tool](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#support-for-running-commands-via-just)) becomes a necessity each time one pulls playbook updates (`git pull`). Pulling external roles happens via the [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) command-line tool, but if available, the playbook would also use the much faster [agru](https://github.com/etkecc/agru) tool (developed by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) this year)." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:22 +#: ../../../YEAR-IN-REVIEW.md:29 msgid "With the internal (but important) details out of the way, we can now talk more about **new features that landed in matrix-docker-ansible-deploy in 2023**." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:24 +#: ../../../YEAR-IN-REVIEW.md:31 msgid "The following **new** **bridges** were added to the playbook in 2023:" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:26 +#: ../../../YEAR-IN-REVIEW.md:33 msgid "(2023-01-11) [mautrix-slack](https://mau.dev/mautrix/slack), thanks to a PR by [Cody Neiman](https://github.com/xangelix) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#mautrix-slack-support))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:27 +#: ../../../YEAR-IN-REVIEW.md:34 msgid "(2023-07-21) [mautrix-gmessages](https://github.com/mautrix/gmessages), thanks to a PR by [Shreyas Ajjarapu](https://github.com/shreyasajj) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#mautrix-gmessages-support))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:28 +#: ../../../YEAR-IN-REVIEW.md:35 msgid "(2023-08-23) [mautrix-wsproxy](https://github.com/mautrix/wsproxy) for Apple iMessage bridging (when combined with the [mautrix-imessage](https://github.com/mautrix/imessage) bridge running on your Mac or Android phone), thanks to a PR by [Johan Swetzén](https://github.com/jswetzen)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:30 +#: ../../../YEAR-IN-REVIEW.md:37 msgid "This brings the total number of **[bridges that the playbook supports](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/docs/configuring-playbook.md#bridging-other-networks) up to 30**. There are alternative bridge implementations for various networks and protocols, so the number of \"unique bridged networks\" is surely much smaller." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:32 +#: ../../../YEAR-IN-REVIEW.md:39 msgid "A few other **major components and changes** landed in 2023:" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:34 +#: ../../../YEAR-IN-REVIEW.md:41 msgid "(2023-02-10) The [Draupnir](https://github.com/the-draupnir-project/Draupnir) moderation tool (successor to [Mjolnir](https://github.com/matrix-org/mjolnir)), thanks to a PR by [FSG-Cat](https://github.com/FSG-Cat) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#draupnir-moderation-tool-bot-support))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:35 +#: ../../../YEAR-IN-REVIEW.md:42 msgid "(2023-02-10) [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) to add Matrix Authentication Support to our Jitsi setup, thanks to a PR by [Jakob S.](https://github.com/jakicoll) from [zakk gGmbH](https://github.com/zakk-it) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#matrix-authentication-support-for-jitsi))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:36 +#: ../../../YEAR-IN-REVIEW.md:43 msgid "(2023-02-25) The [rageshake](https://github.com/matrix-org/rageshake) bug report server, thanks to a PR by [Benjamin Kampmann](https://github.com/gnunicorn) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#rageshake-support))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:37 +#: ../../../YEAR-IN-REVIEW.md:44 msgid "(2023-03-07) [Sliding Sync proxy](https://github.com/matrix-org/sliding-sync) (currently a necessary component for [Element X](https://element.io/labs/element-x) to work), thanks to: [Benjamin Kampmann](https://github.com/gnunicorn) and [FSG-Cat](https://github.com/FSG-Cat) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#sliding-sync-proxy-element-x-support))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:38 +#: ../../../YEAR-IN-REVIEW.md:45 msgid "(2023-03-12) synapse-auto-compressor to periodically and automatically run [rust-synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state), thanks to a PR by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#synapse-auto-compressor-support))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:39 +#: ../../../YEAR-IN-REVIEW.md:46 msgid "(2023-07-17) [matrix-media-repo](https://github.com/turt2live/matrix-media-repo),  thanks to a PR by [Michael Hollister](https://github.com/Michael-Hollister) from [FUTO](https://www.futo.org/), the creators of the [Circles app](https://circu.li/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#matrix-media-repo-support))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:40 +#: ../../../YEAR-IN-REVIEW.md:47 msgid "(2023-08-31) [SchildiChat Web](https://github.com/SchildiChat/schildichat-desktop) client app (fork of [Element Web)](https://github.com/element-hq/element-web), thanks to a PR by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#schildichat-support))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:41 +#: ../../../YEAR-IN-REVIEW.md:48 msgid "(2023-10-18) Postgres parameters auto-tuning, thanks to a PR by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#postgres-parameters-are-automatically-tuned-now))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:42 +#: ../../../YEAR-IN-REVIEW.md:49 msgid "(2023-10-23) Enabling federation of the room directory for Synapse (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#enabling-allow_public_rooms_over_federation-by-default-for-synapse))" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:44 +#: ../../../YEAR-IN-REVIEW.md:51 msgid "The most recent change in the list above (Enabling federation of the room directory for Synapse) has been somewhat **controversial** as it goes against upstream defaults for Synapse. Nevertheless, we believe it **promotes the well-being of the Matrix Federation by improving room discovery**." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:46 +#: ../../../YEAR-IN-REVIEW.md:53 msgid "**Matrix Federation Stats** (containing the percentage of servers publishing their room directory publicly) are posted to [TWIM](https://matrix.org/category/this-week-in-matrix/) each week by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/). The number of servers which [currently published their room directory publicly](https://matrix.org/blog/2023/12/2/this-week-in-matrix-2023-12-22/#matrix-federation-stats) stands at `26.6%`, which is:" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:48 +#: ../../../YEAR-IN-REVIEW.md:55 msgid "**2.4% more** than when it was when [first published to TWIM](https://matrix.org/blog/2023/11/03/this-week-in-matrix-2023-11-03/#matrix-federation-stats) (1 month earlier, in November)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:49 +#: ../../../YEAR-IN-REVIEW.md:56 msgid "likely about **15+% more** than from before we flipped the switch (in October)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:51 +#: ../../../YEAR-IN-REVIEW.md:58 msgid "Hopefully, Synapse defaults would also change the same way and we'd see the number of servers publicly listing their room directory grow faster." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:53 +#: ../../../YEAR-IN-REVIEW.md:60 msgid "With this configuration change in place, projects like [MatrixRooms.info](https://matrixrooms.info/) (made by [etke.cc](https://etke.cc/)) and potentially others in the future, can discover, index the metadata (room address, title, topic, number of users, etc.) and make public rooms browsable & searchable across the whole Matrix Federation. It'd be great if users joining Matrix could more easily find interesting communities that match their interests!" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:55 +#: ../../../YEAR-IN-REVIEW.md:62 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 +#: ../../../YEAR-IN-REVIEW.md:64 msgid "[Element Call](https://github.com/element-hq/element-call) seems to have become a nice and polished product lately (as proclaimed in [The Matrix Holiday Update 2023](https://matrix.org/blog/2023/12/25/the-matrix-holiday-update-2023/)), so 2024 is likely the year we'll see support for it in the playbook. Element Call depends on the [LiveKit](https://livekit.io/) streaming server (which is also useful to developers even by itself), so the first step is likely to see LiveKit support in mash-playbook via a reusable Ansible role. Such a LiveKit Ansible role could later easily land in matrix-docker-ansible-deploy and an Element Call static website could be hooked to it." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:59 +#: ../../../YEAR-IN-REVIEW.md:66 msgid "Besides these highlights, there were many other relatively large changes announced in our [CHANGELOG](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md) and hundreds of other more minor (but still important) playbook changes that didn't get a mention." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:61 +#: ../../../YEAR-IN-REVIEW.md:68 msgid "We have **hundreds of contributors to thank for their hard work** on making Matrix self-hosting better for all of us! It should be noted that **support comes in many shapes**, not only in raw code commits and financial help (via [donations](https://liberapay.com/s.pantaleev) or using the [etke.cc managed Matrix hosting service](https://etke.cc/) which is based on matrix-docker-ansible-deploy). It also comes in the shape of code reviews, helping others with [issues](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues), reporting new issues, participating in our support room on Matrix ([#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com)), etc. To everyone who has been there to make matrix-docker-ansible-deploy better in 2023, thank you! 🙇‍♂️" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:64 +#: ../../../YEAR-IN-REVIEW.md:71 msgid "2022" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:66 +#: ../../../YEAR-IN-REVIEW.md:73 msgid "For [matrix-docker-ansible-deploy](https://github.com/spantaleev/matrix-docker-ansible-deploy/), 2022 started with **breaking the** [**Synapse**](https://github.com/element-hq/synapse) **monopoly** by [adding support](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#dendrite-support) for the [Dendrite](https://github.com/matrix-org/dendrite) Matrix homeserver in early January. This required various internal changes so that the [Ansible](https://www.ansible.com/) playbook would not be Synapse-centric anymore. This groundwork paved the way for continuing in this direction and we [added support](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#conduit-support) for [Conduit](https://conduit.rs/) in August." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:68 +#: ../../../YEAR-IN-REVIEW.md:75 msgid "When it comes to the `matrix-docker-ansible-deploy` Ansible playbook, 2022 was the year of the non-Synapse homeserver implementation. In practice, none of these homeserver implementations seem ready for prime-time yet and there is no migration path when coming from Synapse. Having done our job of adding support for these alternative homeserver implementations, we can say that we're not getting in the way of future progress. It's time for the Dendrite developers to push harder (development-wise) and for the Synapse developers to take a well-deserved long (infinite) break, and we may get to see more people migrating away from Synapse in the next year(s)." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:70 +#: ../../../YEAR-IN-REVIEW.md:77 msgid "Support for the following new **bridges** was added:" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:72 +#: ../../../YEAR-IN-REVIEW.md:79 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 +#: ../../../YEAR-IN-REVIEW.md:80 msgid "[mautrix-discord](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#mautrix-discord-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:74 +#: ../../../YEAR-IN-REVIEW.md:81 msgid "[go-skype-bridge](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#go-skype-bridge-bridging-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:75 +#: ../../../YEAR-IN-REVIEW.md:82 msgid "[matrix-appservice-kakaotalk](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#matrix-appservice-kakaotalk-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:77 +#: ../../../YEAR-IN-REVIEW.md:84 msgid "Support for the following new **bots** was added:" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:79 +#: ../../../YEAR-IN-REVIEW.md:86 msgid "[buscarron bot](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#buscarron-bot-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:80 +#: ../../../YEAR-IN-REVIEW.md:87 msgid "[Honoroit bot](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#honoroit-bot-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:81 +#: ../../../YEAR-IN-REVIEW.md:88 msgid "[matrix-registration-bot](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#matrix-registration-bot-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:82 +#: ../../../YEAR-IN-REVIEW.md:89 msgid "[matrix-hookshot](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#matrix-hookshot-bridging-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:83 +#: ../../../YEAR-IN-REVIEW.md:90 msgid "[maubot](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#maubot-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:85 +#: ../../../YEAR-IN-REVIEW.md:92 msgid "Support for the following new **components and services** was added:" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:87 +#: ../../../YEAR-IN-REVIEW.md:94 msgid "[BorgBackup](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#borg-backup-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:88 +#: ../../../YEAR-IN-REVIEW.md:95 msgid "[Cactus Comments](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#cactus-comments-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:89 +#: ../../../YEAR-IN-REVIEW.md:96 msgid "[Cinny](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#cinny-support) client support" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:90 +#: ../../../YEAR-IN-REVIEW.md:97 msgid "[ntfy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#ntfy-push-notifications-support) notifications" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:91 +#: ../../../YEAR-IN-REVIEW.md:98 msgid "[matrix-ldap-registration-proxy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#matrix-ldap-registration-proxy-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:92 +#: ../../../YEAR-IN-REVIEW.md:99 msgid "[matrix\\_encryption\\_disabler support](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#matrix_encryption_disabler-support)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:93 +#: ../../../YEAR-IN-REVIEW.md:100 msgid "[synapse-s3-storage-provider](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#synapse-s3-storage-provider-support) to stop the Synapse media store from being a scalability problem. This brought along [another feature](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#synapse-container-image-customization-support) - an easier way to customize the Synapse container image without having to fork and self-build all of it from scratch" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:95 +#: ../../../YEAR-IN-REVIEW.md:102 msgid "Besides these major user-visible changes, a lot of work also happened **under the hood**:" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:97 +#: ../../../YEAR-IN-REVIEW.md:104 msgid "we made [major improvements to Synapse workers](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#potential-backward-compatibility-break-major-improvements-to-synapse-workers) - adding support for stream writers and for running multiple workers of various kinds (federation senders, pushers, background task processing workers, etc.)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:98 +#: ../../../YEAR-IN-REVIEW.md:105 msgid "we [improved the compatibility of (Synapse + workers) with the rest of the playbook](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#backward-compatibility-break-changing-how-reverse-proxying-to-synapse-works---now-via-a-matrix-synapse-reverse-proxy-companion-service) by introducing a new `matrix-synapse-reverse-proxy-companion-service` service" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:99 +#: ../../../YEAR-IN-REVIEW.md:106 msgid "we started [splitting various Ansible roles out of the Matrix playbook and into independent roles](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#the-playbook-now-uses-external-roles-for-some-things) (e.g. `matrix-postgres` -> [ansible-role-postgres](https://github.com/mother-of-all-self-hosting/ansible-role-postgres)), which could be included in other Ansible playbooks. In fact, these roles already power a few **interesting other sibling playbooks**:" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:100 +#: ../../../YEAR-IN-REVIEW.md:107 msgid "[gitea-docker-ansible-deploy](https://github.com/spantaleev/gitea-docker-ansible-deploy), for deploying a [Gitea](https://gitea.io/) (self-hosted [Git](https://git-scm.com/) service) server" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:101 +#: ../../../YEAR-IN-REVIEW.md:108 msgid "[nextcloud-docker-ansible-deploy](https://github.com/spantaleev/nextcloud-docker-ansible-deploy), for deploying a [Nextcloud](https://nextcloud.com/) groupware server" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:102 +#: ../../../YEAR-IN-REVIEW.md:109 msgid "[vaultwarden-docker-ansible-deploy](https://github.com/spantaleev/vaultwarden-docker-ansible-deploy), for deploying a [Vaultwarden](https://github.com/dani-garcia/vaultwarden) password manager server (unofficial [Bitwarden](https://bitwarden.com/) compatible server)" msgstr "" -#: ../../../YEAR-IN-REVIEW.md:104 +#: ../../../YEAR-IN-REVIEW.md:111 msgid "These sibling playbooks co-exist nicely with one another due to using [Traefik](https://traefik.io/) for reverse-proxying, instead of trying to overtake the whole server by running their own [nginx](https://nginx.org/) reverse-proxy. Hopefully soon, the Matrix playbook will follow suit and be powered by Traefik by default." msgstr "" -#: ../../../YEAR-IN-REVIEW.md:106 +#: ../../../YEAR-IN-REVIEW.md:113 msgid "Last, but not least, to optimize our [etke.cc managed Matrix hosting service](https://etke.cc/)'s performance (but also individual Ansible playbook runs for people self-hosting by themselves using the playbook), we've [improved playbook runtime 2-5x](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) by employing various Ansible tricks." msgstr "" diff --git a/i18n/translation-templates/docs/README.pot b/i18n/translation-templates/docs/README.pot index 0acbd653e..c09bd197c 100644 --- a/i18n/translation-templates/docs/README.pot +++ b/i18n/translation-templates/docs/README.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,154 +16,154 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/README.md:1 +#: ../../../docs/README.md:10 msgid "Table of Contents" msgstr "" -#: ../../../docs/README.md:3 -msgid "⬇️ Installaton guides " +#: ../../../docs/README.md:12 +msgid "⬇️ Installation guides " msgstr "" -#: ../../../docs/README.md:5 +#: ../../../docs/README.md:14 msgid "There are two installation guides available for beginners and advanced users." msgstr "" -#: ../../../docs/README.md:7 +#: ../../../docs/README.md:16 msgid "⚡ **[Quick start](quick-start.md) (for beginners)**: this is recommended for those who do not have an existing Matrix server and want to start quickly with \"opinionated defaults\"." msgstr "" -#: ../../../docs/README.md:9 +#: ../../../docs/README.md:18 msgid "**Full installation guide (for advanced users)**: if you need to import an existing Matrix server's data into the new server or want to learn more while setting up the server, follow this guide." msgstr "" -#: ../../../docs/README.md:11 +#: ../../../docs/README.md:20 msgid "[Prerequisites](prerequisites.md)" msgstr "" -#: ../../../docs/README.md:13 -msgid "[Configuring your DNS settings](configuring-dns.md)" +#: ../../../docs/README.md:22 +msgid "[Configuring DNS settings](configuring-dns.md)" msgstr "" -#: ../../../docs/README.md:15 +#: ../../../docs/README.md:24 msgid "[Getting the playbook](getting-the-playbook.md)" msgstr "" -#: ../../../docs/README.md:17 +#: ../../../docs/README.md:26 msgid "[Configuring the playbook](configuring-playbook.md)" msgstr "" -#: ../../../docs/README.md:19 +#: ../../../docs/README.md:28 msgid "[Installing](installing.md)" msgstr "" -#: ../../../docs/README.md:21 +#: ../../../docs/README.md:30 msgid "🛠️ Configuration options" msgstr "" -#: ../../../docs/README.md:28 +#: ../../../docs/README.md:37 msgid "You can check useful documentation for configuring components here: [Configuring the playbook](configuring-playbook.md)" msgstr "" -#: ../../../docs/README.md:30 +#: ../../../docs/README.md:39 msgid "[Administration](configuring-playbook.md#administration) — services that help you in administrating and monitoring your Matrix installation" msgstr "" -#: ../../../docs/README.md:32 +#: ../../../docs/README.md:41 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 +#: ../../../docs/README.md:43 msgid "[Bots](configuring-playbook.md#bots) — bots provide various additional functionality to your installation" msgstr "" -#: ../../../docs/README.md:36 +#: ../../../docs/README.md:45 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 +#: ../../../docs/README.md:47 msgid "[Clients](configuring-playbook.md#clients) — web clients for Matrix that you can host on your own domains" msgstr "" -#: ../../../docs/README.md:40 +#: ../../../docs/README.md:49 msgid "[Core service adjustments](configuring-playbook.md#core-service-adjustments) — backbone of your Matrix system" msgstr "" -#: ../../../docs/README.md:42 +#: ../../../docs/README.md:51 msgid "[File Storage](configuring-playbook.md#file-storage) — use alternative file storage to the default `media_store` folder" msgstr "" -#: ../../../docs/README.md:46 +#: ../../../docs/README.md:55 msgid "[Other specialized services](configuring-playbook.md#other-specialized-services) — various services that don't fit any other categories" msgstr "" -#: ../../../docs/README.md:48 +#: ../../../docs/README.md:57 msgid "👨‍🔧 Maintenance" msgstr "" -#: ../../../docs/README.md:50 +#: ../../../docs/README.md:59 msgid "If your server and services experience issues, feel free to come to [our support room](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) and ask for help." msgstr "" -#: ../../../docs/README.md:54 -msgid "[Checking if services work](maintenance-checking-services.md)" -msgstr "" - -#: ../../../docs/README.md:56 +#: ../../../docs/README.md:63 msgid "[Maintenance and Troubleshooting](maintenance-and-troubleshooting.md)" msgstr "" -#: ../../../docs/README.md:58 +#: ../../../docs/README.md:65 msgid "[PostgreSQL maintenance](maintenance-postgres.md)" msgstr "" -#: ../../../docs/README.md:60 +#: ../../../docs/README.md:67 msgid "[Synapse maintenance](maintenance-synapse.md)" msgstr "" -#: ../../../docs/README.md:62 +#: ../../../docs/README.md:69 msgid "[Upgrading services](maintenance-upgrading-services.md)" msgstr "" -#: ../../../docs/README.md:64 +#: ../../../docs/README.md:71 msgid "Other documentation pages " msgstr "" -#: ../../../docs/README.md:66 +#: ../../../docs/README.md:73 msgid "ℹ️ **[FAQ](faq.md)** — various Frequently Asked Questions about Matrix, with a focus on this Ansible playbook" msgstr "" -#: ../../../docs/README.md:70 +#: ../../../docs/README.md:77 msgid "[Alternative architectures](alternative-architectures.md)" msgstr "" -#: ../../../docs/README.md:72 +#: ../../../docs/README.md:79 msgid "[Container images used by the playbook](container-images.md)" msgstr "" -#: ../../../docs/README.md:74 +#: ../../../docs/README.md:81 msgid "[Obtaining an Access Token](obtaining-access-tokens.md)" msgstr "" -#: ../../../docs/README.md:76 +#: ../../../docs/README.md:83 msgid "[Playbook tags](playbook-tags.md)" msgstr "" -#: ../../../docs/README.md:78 +#: ../../../docs/README.md:85 msgid "[Registering users](registering-users.md)" msgstr "" -#: ../../../docs/README.md:80 +#: ../../../docs/README.md:87 msgid "[Running `just` commands](just.md)" msgstr "" -#: ../../../docs/README.md:82 +#: ../../../docs/README.md:89 msgid "[Self-building](self-building.md)" msgstr "" -#: ../../../docs/README.md:84 +#: ../../../docs/README.md:91 msgid "[Uninstalling](uninstalling.md)" msgstr "" -#: ../../../docs/README.md:86 +#: ../../../docs/README.md:93 msgid "[Updating users passwords](updating-users-passwords.md)" msgstr "" + +#: ../../../docs/README.md:95 +msgid "[Using Ansible for the playbook](ansible.md)" +msgstr "" diff --git a/i18n/translation-templates/docs/alternative-architectures.pot b/i18n/translation-templates/docs/alternative-architectures.pot index efb512f68..ea089be09 100644 --- a/i18n/translation-templates/docs/alternative-architectures.pot +++ b/i18n/translation-templates/docs/alternative-architectures.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,42 +16,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/alternative-architectures.md:1 +#: ../../../docs/alternative-architectures.md:9 msgid "Alternative architectures" msgstr "" -#: ../../../docs/alternative-architectures.md:3 +#: ../../../docs/alternative-architectures.md:11 msgid "As stated in the [Prerequisites](prerequisites.md), currently only `amd64` (`x86_64`) is fully supported." msgstr "" -#: ../../../docs/alternative-architectures.md:5 +#: ../../../docs/alternative-architectures.md:13 msgid "The playbook automatically determines the target server's architecture (the `matrix_architecture` variable) to be one of the following:" msgstr "" -#: ../../../docs/alternative-architectures.md:7 +#: ../../../docs/alternative-architectures.md:15 msgid "`amd64` (`x86_64`)" msgstr "" -#: ../../../docs/alternative-architectures.md:8 +#: ../../../docs/alternative-architectures.md:16 msgid "`arm32`" msgstr "" -#: ../../../docs/alternative-architectures.md:9 +#: ../../../docs/alternative-architectures.md:17 msgid "`arm64`" msgstr "" -#: ../../../docs/alternative-architectures.md:11 +#: ../../../docs/alternative-architectures.md:19 msgid "Some tools and container images can be built on the host or other measures can be used to install on that architecture." msgstr "" -#: ../../../docs/alternative-architectures.md:13 +#: ../../../docs/alternative-architectures.md:21 msgid "Implementation details" msgstr "" -#: ../../../docs/alternative-architectures.md:15 +#: ../../../docs/alternative-architectures.md:23 msgid "For `amd64`, prebuilt container images (see the [container images we use](container-images.md)) are used for all components (except [Hydrogen](configuring-playbook-client-hydrogen.md), which goes through self-building)." msgstr "" -#: ../../../docs/alternative-architectures.md:17 +#: ../../../docs/alternative-architectures.md:25 msgid "For other architecture (`arm64`, `arm32`), components which have a prebuilt image make use of it. If the component is not available for the specific architecture, [self-building](self-building.md) will be used. Not all components support self-building though, so your mileage may vary." msgstr "" diff --git a/i18n/translation-templates/docs/ansible.pot b/i18n/translation-templates/docs/ansible.pot index dec504ce5..678e3bec5 100644 --- a/i18n/translation-templates/docs/ansible.pot +++ b/i18n/translation-templates/docs/ansible.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,165 +16,177 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/ansible.md:2 -msgid "Running this playbook" +#: ../../../docs/ansible.md:11 +msgid "Using Ansible for the playbook" msgstr "" -#: ../../../docs/ansible.md:4 +#: ../../../docs/ansible.md:13 msgid "This playbook is meant to be run using [Ansible](https://www.ansible.com/)." msgstr "" -#: ../../../docs/ansible.md:6 +#: ../../../docs/ansible.md:15 msgid "Ansible typically runs on your local computer and carries out tasks on a remote server. If your local computer cannot run Ansible, you can also run Ansible on some server somewhere (including the server you wish to install to)." msgstr "" -#: ../../../docs/ansible.md:8 +#: ../../../docs/ansible.md:17 msgid "Supported Ansible versions" msgstr "" -#: ../../../docs/ansible.md:10 +#: ../../../docs/ansible.md:19 msgid "To manually check which version of Ansible you're on, run: `ansible --version`." msgstr "" -#: ../../../docs/ansible.md:12 +#: ../../../docs/ansible.md:21 msgid "For the **best experience**, we recommend getting the **latest version of Ansible available**." msgstr "" -#: ../../../docs/ansible.md:14 -msgid "We're not sure what's the minimum version of Ansible that can run this playbook successfully. The lowest version that we've confirmed (on 2022-11-26) to be working fine is: `ansible-core` (`2.11.7`) combined with `ansible` (`4.10.0`)." +#: ../../../docs/ansible.md:23 +msgid "We're not sure what's the minimum version of Ansible that can run this playbook successfully. The lowest version that we suspect (on 2025-09-03) to be working fine is: `ansible-core` (`2.15.1`)." msgstr "" -#: ../../../docs/ansible.md:16 +#: ../../../docs/ansible.md:25 msgid "If your distro ships with an Ansible version older than this, you may run into issues. Consider [Upgrading Ansible](#upgrading-ansible) or [using Ansible via Docker](#using-ansible-via-docker)." msgstr "" -#: ../../../docs/ansible.md:18 +#: ../../../docs/ansible.md:27 +msgid "[!WARNING] One reason for the version requirement being as such is that the playbook by default installs Docker for you using [this Docker role](https://github.com/geerlingguy/ansible-role-docker) which [has a hard requirement on Ansible v2.15.1](https://github.com/geerlingguy/ansible-role-docker/commit/7f44a1d9ad8132819ea9852918bca5dab8757cd0). If you install Docker yourself another way, you can tell the playbook to skip running this role (by adding `matrix_playbook_docker_installation_enabled: false` to your `vars.yml` configuration). It may then be possible to get the playbook running on an older version of Ansible. Still, this is a complication and your mileage may vary. We recommend [upgrading Ansible](#upgrading-ansible) instead of going into uncharted territory." +msgstr "" + +#: ../../../docs/ansible.md:30 msgid "Upgrading Ansible" msgstr "" -#: ../../../docs/ansible.md:20 +#: ../../../docs/ansible.md:32 msgid "Depending on your distribution, you may be able to upgrade Ansible in a few different ways:" msgstr "" -#: ../../../docs/ansible.md:22 +#: ../../../docs/ansible.md:34 msgid "by using an additional repository (PPA, etc.), which provides newer Ansible versions. See instructions for [CentOS](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#installing-ansible-on-rhel-centos-or-fedora), [Debian](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#installing-ansible-on-debian), or [Ubuntu](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#installing-ansible-on-ubuntu) on the Ansible website." msgstr "" -#: ../../../docs/ansible.md:24 +#: ../../../docs/ansible.md:36 msgid "by removing the Ansible package (`yum remove ansible` or `apt-get remove ansible`) and installing via [pip](https://pip.pypa.io/en/stable/installation/) (`pip install ansible`)." msgstr "" -#: ../../../docs/ansible.md:26 +#: ../../../docs/ansible.md:38 msgid "If using the `pip` method, do note that the `ansible-playbook` binary may not be on the `$PATH` (https://linuxconfig.org/linux-path-environment-variable), but in some more special location like `/usr/local/bin/ansible-playbook`. You may need to invoke it using the full path." msgstr "" -#: ../../../docs/ansible.md:28 +#: ../../../docs/ansible.md:40 msgid "**Note**: Both of the above methods are a bad way to run system software such as Ansible. If you find yourself needing to resort to such hacks, please consider reporting a bug to your distribution and/or switching to a sane distribution, which provides up-to-date software." msgstr "" -#: ../../../docs/ansible.md:30 +#: ../../../docs/ansible.md:42 msgid "Using Ansible via Docker" msgstr "" -#: ../../../docs/ansible.md:32 -msgid "Alternatively, you can run Ansible inside a Docker container (powered by the [devture/ansible](https://hub.docker.com/r/devture/ansible/) Docker image)." +#: ../../../docs/ansible.md:44 +msgid "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)." msgstr "" -#: ../../../docs/ansible.md:34 -msgid "This ensures that you're using a very recent Ansible version, which is less likely to be incompatible with the playbook." +#: ../../../docs/ansible.md:46 +msgid "This ensures that:" msgstr "" -#: ../../../docs/ansible.md:36 +#: ../../../docs/ansible.md:48 +msgid "you're using a very recent Ansible version, which is less likely to be incompatible with the playbook" +msgstr "" + +#: ../../../docs/ansible.md:49 +msgid "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`" +msgstr "" + +#: ../../../docs/ansible.md:51 msgid "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)." msgstr "" -#: ../../../docs/ansible.md:38 +#: ../../../docs/ansible.md:53 msgid "Running Ansible in a container on the Matrix server itself" msgstr "" -#: ../../../docs/ansible.md:40 +#: ../../../docs/ansible.md:55 msgid "To run Ansible in a (Docker) container on the Matrix server itself, you need to have a working Docker installation. Docker is normally installed by the playbook, so this may be a bit of a chicken and egg problem. To solve it:" msgstr "" -#: ../../../docs/ansible.md:42 +#: ../../../docs/ansible.md:57 msgid "you **either** need to install Docker manually first. Follow [the upstream instructions](https://docs.docker.com/engine/install/) for your distribution and consider setting `matrix_playbook_docker_installation_enabled: false` in your `vars.yml` file, to prevent the playbook from installing Docker" msgstr "" -#: ../../../docs/ansible.md:43 +#: ../../../docs/ansible.md:58 msgid "**or** you need to run the playbook in another way (e.g. [Running Ansible in a container on another computer (not the Matrix server)](#running-ansible-in-a-container-on-another-computer-not-the-matrix-server)) at least the first time around" msgstr "" -#: ../../../docs/ansible.md:45 +#: ../../../docs/ansible.md:60 msgid "Once you have a working Docker installation on the server, **clone the playbook** somewhere on the server and configure it as per usual (`inventory/hosts`, `inventory/host_vars/…`, etc.), as described in [configuring the playbook](configuring-playbook.md)." msgstr "" -#: ../../../docs/ansible.md:47 +#: ../../../docs/ansible.md:62 msgid "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." msgstr "" -#: ../../../docs/ansible.md:49 -msgid "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 …`" +#: ../../../docs/ansible.md:64 +msgid "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 …`)." msgstr "" -#: ../../../docs/ansible.md:51 -#: ../../../docs/ansible.md:71 +#: ../../../docs/ansible.md:66 +#: ../../../docs/ansible.md:88 msgid "Run this from the playbook's directory:" msgstr "" -#: ../../../docs/ansible.md:63 -#: ../../../docs/ansible.md:84 +#: ../../../docs/ansible.md:80 +#: ../../../docs/ansible.md:103 msgid "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." msgstr "" -#: ../../../docs/ansible.md:65 -#: ../../../docs/ansible.md:86 +#: ../../../docs/ansible.md:82 +#: ../../../docs/ansible.md:105 msgid "First, consider running `git config --global --add safe.directory /work` to [resolve directory ownership issues](#resolve-directory-ownership-issues)." msgstr "" -#: ../../../docs/ansible.md:67 -msgid "Finally, you can execute `ansible-playbook …` (or `ansible-playbook --connection=community.docker.nsenter …`) commands as per normal now." +#: ../../../docs/ansible.md:84 +msgid "Finally, you can execute `just` or `ansible-playbook …` (e.g. `ansible-playbook --connection=community.docker.nsenter …`) commands as per normal now." msgstr "" -#: ../../../docs/ansible.md:69 +#: ../../../docs/ansible.md:86 msgid "Running Ansible in a container on another computer (not the Matrix server)" msgstr "" -#: ../../../docs/ansible.md:82 -msgid "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." +#: ../../../docs/ansible.md:101 +msgid "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." msgstr "" -#: ../../../docs/ansible.md:88 -msgid "Finally, you execute `ansible-playbook …` commands as per normal now." +#: ../../../docs/ansible.md:107 +msgid "Finally, you execute `just` or `ansible-playbook …` commands as per normal now." msgstr "" -#: ../../../docs/ansible.md:90 +#: ../../../docs/ansible.md:109 msgid "If you don't use SSH keys for authentication" msgstr "" -#: ../../../docs/ansible.md:92 -msgid "If you don't use SSH keys for authentication, simply remove that whole line (`-v $HOME/.ssh/id_rsa:/root/.ssh/id_rsa:ro`)." +#: ../../../docs/ansible.md:111 +msgid "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`)." msgstr "" -#: ../../../docs/ansible.md:94 +#: ../../../docs/ansible.md:113 msgid "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:" msgstr "" -#: ../../../docs/ansible.md:100 -msgid "Then, to be asked for the password whenever running an `ansible-playbook` command add `--ask-pass` to the arguments of the command." +#: ../../../docs/ansible.md:119 +msgid "Then, to be asked for the password whenever running an `ansible-playbook` command add `--ask-pass` to the arguments of the command." msgstr "" -#: ../../../docs/ansible.md:102 +#: ../../../docs/ansible.md:121 msgid "Resolve directory ownership issues" msgstr "" -#: ../../../docs/ansible.md:104 -msgid "Because you're `root` in the container running Ansible and this likely differs fom the owner (your regular user account) of the playbook directory outside of the container, certain playbook features which use `git` locally may report warnings such as:" +#: ../../../docs/ansible.md:123 +msgid "Because you're `root` in the container running Ansible and this likely differs from the owner (your regular user account) of the playbook directory outside of the container, certain playbook features which use `git` locally may report warnings such as:" msgstr "" -#: ../../../docs/ansible.md:106 +#: ../../../docs/ansible.md:125 msgid "fatal: unsafe repository ('/work' is owned by someone else) To add an exception for this directory, call: git config --global --add safe.directory /work" msgstr "" -#: ../../../docs/ansible.md:110 +#: ../../../docs/ansible.md:129 msgid "These errors can be resolved by making `git` trust the playbook directory by running `git config --global --add safe.directory /work`" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-captcha.pot b/i18n/translation-templates/docs/configuring-captcha.pot index a652f8838..53c1aab0a 100644 --- a/i18n/translation-templates/docs/configuring-captcha.pot +++ b/i18n/translation-templates/docs/configuring-captcha.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,60 +16,60 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-captcha.md:1 +#: ../../../docs/configuring-captcha.md:10 msgid "(Adapted from the [upstream project](https://github.com/element-hq/synapse/blob/develop/docs/CAPTCHA_SETUP.md))" msgstr "" -#: ../../../docs/configuring-captcha.md:3 +#: ../../../docs/configuring-captcha.md:12 msgid "Overview" msgstr "" -#: ../../../docs/configuring-captcha.md:5 +#: ../../../docs/configuring-captcha.md:14 msgid "Captcha can be enabled for this home server. This file explains how to do that." msgstr "" -#: ../../../docs/configuring-captcha.md:7 +#: ../../../docs/configuring-captcha.md:16 msgid "The captcha mechanism used is Google's [ReCaptcha](https://www.google.com/recaptcha/). This requires API keys from Google. If your homeserver is Dendrite then [hCapcha](https://www.hcaptcha.com) can be used instead." msgstr "" -#: ../../../docs/configuring-captcha.md:9 +#: ../../../docs/configuring-captcha.md:18 msgid "ReCaptcha" msgstr "" -#: ../../../docs/configuring-captcha.md:11 -#: ../../../docs/configuring-captcha.md:37 +#: ../../../docs/configuring-captcha.md:20 +#: ../../../docs/configuring-captcha.md:46 msgid "Getting keys" msgstr "" -#: ../../../docs/configuring-captcha.md:13 -#: ../../../docs/configuring-captcha.md:39 +#: ../../../docs/configuring-captcha.md:22 +#: ../../../docs/configuring-captcha.md:48 msgid "Requires a site/secret key pair from:" msgstr "" -#: ../../../docs/configuring-captcha.md:15 +#: ../../../docs/configuring-captcha.md:24 msgid "" msgstr "" -#: ../../../docs/configuring-captcha.md:17 +#: ../../../docs/configuring-captcha.md:26 msgid "Must be a reCAPTCHA **v2** key using the \"I'm not a robot\" Checkbox option" msgstr "" -#: ../../../docs/configuring-captcha.md:19 +#: ../../../docs/configuring-captcha.md:28 msgid "Setting ReCaptcha keys" msgstr "" -#: ../../../docs/configuring-captcha.md:21 +#: ../../../docs/configuring-captcha.md:30 msgid "Once registered as above, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-captcha.md:35 +#: ../../../docs/configuring-captcha.md:44 msgid "hCaptcha" msgstr "" -#: ../../../docs/configuring-captcha.md:41 +#: ../../../docs/configuring-captcha.md:50 msgid "" msgstr "" -#: ../../../docs/configuring-captcha.md:43 +#: ../../../docs/configuring-captcha.md:52 msgid "Setting hCaptcha keys" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-dns.pot b/i18n/translation-templates/docs/configuring-dns.pot index 5cbb56f35..579ce4883 100644 --- a/i18n/translation-templates/docs/configuring-dns.pot +++ b/i18n/translation-templates/docs/configuring-dns.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,23 +16,23 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-dns.md:1 -msgid "Configuring your DNS settings" +#: ../../../docs/configuring-dns.md:18 +msgid "Configuring DNS settings" msgstr "" -#: ../../../docs/configuring-dns.md:3 -msgid "[Prerequisites](prerequisites.md) > Configuring your DNS settings > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md)" +#: ../../../docs/configuring-dns.md:20 +msgid "[Prerequisites](prerequisites.md) > Configuring DNS settings > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md)" msgstr "" -#: ../../../docs/configuring-dns.md:5 +#: ../../../docs/configuring-dns.md:22 msgid "To set up Matrix on your domain, you'd need to do some DNS configuration." msgstr "" -#: ../../../docs/configuring-dns.md:7 +#: ../../../docs/configuring-dns.md:24 msgid "DNS settings for services enabled by default" msgstr "" -#: ../../../docs/configuring-dns.md:9 +#: ../../../docs/configuring-dns.md:26 msgid "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." msgstr "" @@ -73,7 +73,15 @@ msgid "-" msgstr "" #: ../../../docs/configuring-dns.md:0 -msgid "`matrix-server-IP`" +msgid "`matrix-server-IPv4`" +msgstr "" + +#: ../../../docs/configuring-dns.md:0 +msgid "AAAA" +msgstr "" + +#: ../../../docs/configuring-dns.md:0 +msgid "`matrix-server-IPv6`" msgstr "" #: ../../../docs/configuring-dns.md:0 @@ -88,58 +96,62 @@ msgstr "" msgid "`matrix.example.com`" msgstr "" -#: ../../../docs/configuring-dns.md:16 -msgid "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)." +#: ../../../docs/configuring-dns.md:34 +msgid "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." msgstr "" -#: ../../../docs/configuring-dns.md:18 +#: ../../../docs/configuring-dns.md:36 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-dns.md:38 msgid "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." msgstr "" -#: ../../../docs/configuring-dns.md:20 +#: ../../../docs/configuring-dns.md:40 msgid "Be mindful as to how long it will take for the DNS records to propagate." msgstr "" -#: ../../../docs/configuring-dns.md:22 +#: ../../../docs/configuring-dns.md:42 msgid "**Note**: if you are using Cloudflare DNS, make sure to disable the proxy and set all records to \"DNS only\". Otherwise, fetching certificates will fail." msgstr "" -#: ../../../docs/configuring-dns.md:24 +#: ../../../docs/configuring-dns.md:44 msgid "DNS setting for server delegation (optional)" msgstr "" -#: ../../../docs/configuring-dns.md:26 +#: ../../../docs/configuring-dns.md:46 msgid "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`." msgstr "" -#: ../../../docs/configuring-dns.md:28 +#: ../../../docs/configuring-dns.md:48 msgid "To use such an ID, you don't need to install anything on the actual `example.com` server. Instead, you need to instruct the Matrix network that Matrix services for `example.com` are redirected over to `matrix.example.com`. This redirection is also known as \"delegation\"." msgstr "" -#: ../../../docs/configuring-dns.md:30 +#: ../../../docs/configuring-dns.md:50 msgid "As we discuss in [Server Delegation](howto-server-delegation.md), server delegation can be configured in either of these ways:" msgstr "" -#: ../../../docs/configuring-dns.md:32 +#: ../../../docs/configuring-dns.md:52 msgid "Setting up a `/.well-known/matrix/server` file on the base domain (`example.com`)" msgstr "" -#: ../../../docs/configuring-dns.md:33 +#: ../../../docs/configuring-dns.md:53 msgid "Setting up a `_matrix._tcp` DNS SRV record" msgstr "" -#: ../../../docs/configuring-dns.md:35 +#: ../../../docs/configuring-dns.md:55 msgid "For simplicity reasons, this playbook recommends you to set up server delegation via a `/.well-known/matrix/server` file, instead of using a DNS SRV record." msgstr "" -#: ../../../docs/configuring-dns.md:37 +#: ../../../docs/configuring-dns.md:57 msgid "If you choose the recommended method (file-based delegation), you do not need to configure the DNS record to enable server delegation. You will need to add a necessary configuration later, when you [finalize the installation](installing.md#finalize-the-installation) after installing and starting Matrix services." msgstr "" -#: ../../../docs/configuring-dns.md:39 +#: ../../../docs/configuring-dns.md:59 msgid "On the other hand, if you choose this method (setting up a DNS SRV record), you need to configure the additional DNS record as well as adjust SSL certificate handling. Take a look at this documentation for more information: [Server Delegation via a DNS SRV record (advanced)](howto-server-delegation.md#server-delegation-via-a-dns-srv-record-advanced)" msgstr "" -#: ../../../docs/configuring-dns.md:43 +#: ../../../docs/configuring-dns.md:63 msgid "[▶️](getting-the-playbook.md) When you're done with the DNS configuration and ready to proceed, continue with [Getting the playbook](getting-the-playbook.md)." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-ipv6.pot b/i18n/translation-templates/docs/configuring-ipv6.pot new file mode 100644 index 000000000..f77fe6c4c --- /dev/null +++ b/i18n/translation-templates/docs/configuring-ipv6.pot @@ -0,0 +1,361 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-ipv6.md:6 +msgid "Configuring IPv6" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:8 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:10 +msgid "**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:" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:12 +msgid "📥 incoming IPv6 connectivity to the server via the server's IPv6 address/addresses (containers won't have their own individual publicly accessible IPs)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:13 +msgid "📤 outgoing IPv6 connectivity from the server via the server's IPv6 address/addresses (containers won't exit via their own individual IPv6 address)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:14 +msgid "🔄 IPv6 connectivity for cross-container communication" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:16 +msgid "**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)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:18 +msgid "As such, **we recommend that you follow the default example configuration and leave IPv6 support for Docker enabled in all cases**." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:20 +msgid "Enabling IPv6 consists of 2 steps:" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:22 +msgid "[Enabling IPv6 support for the playbook](#enabling-ipv6-support-for-the-playbook)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:23 +msgid "[Configuring DNS records for IPv6](#configuring-dns-records-for-ipv6)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:25 +msgid "💡 If you've followed a recent version of our documentation, you would have already done these steps, so there's nothing else to do." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:27 +msgid "Enabling IPv6 support for the playbook" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:29 +msgid "You can enable IPv6 support for all components' Docker container networks by using the following `vars.yml` configuration:" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:50 +msgid "Doing this:" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:52 +msgid "all container networks will be IPv6-enabled" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:54 +msgid "NAT66 will be used, so that:" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:55 +msgid "containers will get [Unique Local Addresses (ULA)](https://en.wikipedia.org/wiki/Unique_local_address)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:56 +msgid "the outgoing IPv6 address for containers will be the same as the one on the server" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:57 +msgid "traffic destined for the IPv6 address of the server will be forwarded to the containers that handle (and publish) that specific port" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:59 +msgid "[!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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:63 +msgid "To confirm connectivity, see the following other resources:" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:65 +msgid "[How do I check if my server has IPv6 connectivity?](#how-do-i-check-if-my-server-has-ipv6-connectivity)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:66 +msgid "[How do I check outgoing IPv6 connectivity for containers?](#how-do-i-check-outgoing-ipv6-connectivity-for-containers)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:67 +msgid "[How do I check incoming IPv6 connectivity for containers?](#how-do-i-check-incoming-ipv6-connectivity-for-containers)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:68 +msgid "[How do I confirm if my container networks are IPv6-enabled?](#how-do-i-confirm-if-my-container-networks-are-ipv6-enabled)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:69 +msgid "Ensure that the [Federation Tester](https://federationtester.matrix.org/) reports that your server is reachable over IPv6." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:71 +msgid "Configuring DNS records for IPv6" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:73 +msgid "[Enabling IPv6 support for the playbook](#enabling-ipv6-support-for-the-playbook) tells you how to prepare for IPv6 on the container (Docker) side." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:75 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:77 +msgid "Also see the [Configuring DNS settings](configuring-dns.md) documentation page for more details." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:79 +msgid "A note about old Docker" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:81 +msgid "With our [default example configuration](../examples/vars.yml), the playbook manages Docker for you and installs a modern-enough version." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:83 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:85 +msgid "**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:" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:87 +msgid "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`" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:89 +msgid "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`)." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:91 +msgid "Frequently Asked Questions" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:93 +msgid "How do I check if my server has IPv6 connectivity?" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:95 +msgid "With curl" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:97 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:99 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:101 +msgid "With other network utilities" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:103 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:105 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:107 +msgid "What does the `devture_systemd_docker_base_ipv6_enabled` setting actually do?" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:109 +msgid "The `devture_systemd_docker_base_ipv6_enabled` setting controls whether container networks will be created with IPv6 support." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:111 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:114 +msgid "I've changed the `devture_systemd_docker_base_ipv6_enabled` setting, but it doesn't seem to have any effect." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:116 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:118 +msgid "If you've previously installed with one `devture_systemd_docker_base_ipv6_enabled` value and then changed it to another, you need to:" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:120 +msgid "stop all services (`just stop-all`)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:121 +msgid "delete all container networks on the server: `docker network rm $(docker network ls -q)`" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:122 +msgid "re-run the playbook fully: `just install-all`" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:124 +msgid "How do I confirm if my container networks are IPv6-enabled?" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:126 +msgid "You can list container networks by running `docker network ls` on the server." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:128 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:130 +msgid "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)" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:132 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:135 +msgid "How do I check outgoing IPv6 connectivity for containers?" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:141 +msgid "💡 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" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:143 +msgid "✅ If this command returns an IPv6 address, you're all good." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:145 +msgid "❌ If this command doesn't return an IPv6 address, it may be that:" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:147 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:149 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:151 +msgid "How do I check incoming IPv6 connectivity for containers?" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:153 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:155 +msgid "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))." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:157 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:159 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:161 +msgid "💡 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)." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:163 +msgid "Why enable IPv6 if my network doesn't support it yet?" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:165 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:167 +msgid "Can I use a custom subnet for IPv6?" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:169 +msgid "Not easily." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:171 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:173 +msgid "There's no support for passing a custom subnet for IPv4 and IPv6. We let Docker auto-generate the subnets for us." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:175 +msgid "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`)." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:177 +msgid "Can I use Global Unicast Addresses (GUA) for IPv6?" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:179 +msgid "No. You cannot have GUA addresses where each container is individually addressable over the public internet." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:181 +msgid "The playbook only supports NAT66, which should be good enough for most use cases." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:183 +msgid "Having containers get IPv6 addresses from your own GUA subnet requires complex configuration (ndp-proxy, etc.) and is not supported." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:185 +msgid "You may find [this Reddit post](https://www.reddit.com/r/ipv6/comments/1alpzmb/comment/kphpw11/) interesting." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:187 +msgid "Is there a performance penalty to enabling IPv6 if the server/network doesn't support IPv6 connectivity?" +msgstr "" + +#: ../../../docs/configuring-ipv6.md:189 +msgid "Probably a tiny one, as services may try to make (unsuccessful) outgoing requests over IPv6." +msgstr "" + +#: ../../../docs/configuring-ipv6.md:191 +msgid "In practice, it's probably negligible." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-alertmanager-receiver.pot b/i18n/translation-templates/docs/configuring-playbook-alertmanager-receiver.pot index b0324d65a..b4a7d552f 100644 --- a/i18n/translation-templates/docs/configuring-playbook-alertmanager-receiver.pot +++ b/i18n/translation-templates/docs/configuring-playbook-alertmanager-receiver.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,182 +16,174 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:1 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:9 msgid "Setting up Prometheus Alertmanager integration via matrix-alertmanager-receiver (optional)" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:3 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:11 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:5 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:13 msgid "See the project's [documentation](https://github.com/metio/matrix-alertmanager-receiver/blob/main/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:7 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:15 msgid "This service is meant to be used with an external [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) instance. It's **not** meant to be integrated with the [Prometheus & Grafana stack](./configuring-playbook-prometheus-grafana.md) installed by this playbook, because the Alertmanager component is not installed by it." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:9 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:17 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:11 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:19 msgid "Register the bot account" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:13 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:21 msgid "This service uses a bot (with a username specified in `matrix_alertmanager_receiver_config_matrix_user_id_localpart`) for delivering messages." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:15 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:23 msgid "The playbook does not automatically create users for you. You **need to register the bot user manually** before setting up the bot." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:17 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:25 msgid "Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:19 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:27 msgid "You can use the playbook to [register a new user](registering-users.md):" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:25 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:33 msgid "Obtain an access token" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:27 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:35 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:29 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:37 msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:32 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:40 msgid "Join to rooms as the bot manually" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:34 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:42 msgid "ℹ️ **This bot does not accept room invitations automatically**. To deliver messages to rooms, the bot must be joined to all rooms manually." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:36 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:44 msgid "For each new room you would like the bot to deliver alerts to, invite the bot to the room." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:38 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:46 msgid "Then, log in as the bot using any Matrix client of your choosing, accept the room invitation from the bot's account, and log out." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:40 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:48 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:42 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:50 msgid "By default, this playbook installs matrix-alertmanager-receiver on the `matrix.` subdomain, at the `/matrix-alertmanager-receiver` path (https://matrix.example.com/matrix-alertmanager-receiver). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:44 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:52 msgid "If you wish to adjust it, see the section [below](#adjusting-the-matrix-alertmanager-receiver-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:46 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:54 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:48 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:56 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `ACCESS_TOKEN_HERE` with the one created [above](#obtain-an-access-token)." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:69 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:77 msgid "Adjusting the matrix-alertmanager-receiver URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:71 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:79 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:73 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:81 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:81 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:89 msgid "If you've changed the default hostname, you may need to create a CNAME record for the matrix-alertmanager-receiver domain (`alertmanager.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:83 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:91 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:85 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:93 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:87 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:95 msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:89 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:97 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:91 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:99 msgid "`roles/custom/matrix-alertmanager-receiver/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:92 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:100 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:94 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:102 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:96 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:104 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:103 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:105 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:107 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:111 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:109 -msgid "`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." +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:113 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:111 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:115 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:113 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:117 msgid "Configure your Prometheus Alertmanager with configuration like this:" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:132 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:136 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:134 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:138 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:136 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:140 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:138 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:142 msgid "Increase logging verbosity" msgstr "" -#: ../../../docs/configuring-playbook-alertmanager-receiver.md:140 +#: ../../../docs/configuring-playbook-alertmanager-receiver.md:144 msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-appservice-double-puppet.pot b/i18n/translation-templates/docs/configuring-playbook-appservice-double-puppet.pot index afd8b9282..ba0e360b4 100644 --- a/i18n/translation-templates/docs/configuring-playbook-appservice-double-puppet.pot +++ b/i18n/translation-templates/docs/configuring-playbook-appservice-double-puppet.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,74 +16,66 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:1 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:8 msgid "Setting up Appservice Double Puppet (optional)" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:3 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:10 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:5 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:12 msgid "This is useful for performing [double-puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) via the appservice method. The service is an implementation of this approach." msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:7 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:14 msgid "Previously, bridges supported performing double-puppeting with the help of the [Shared Secret Auth password provider module](./configuring-playbook-shared-secret-auth.md), but this old and hacky solution has been superseded by this Appservice Double Puppet method." msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:9 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:16 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:11 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:18 msgid "To enable the Appservice Double Puppet service, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:17 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:24 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:19 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:26 msgid "There are some additional things you may wish to configure about the service." msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:21 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:28 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:23 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:30 msgid "`roles/custom/matrix-appservice-double-puppet/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_double_puppet_registration_configuration_extension_yaml` variable" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:25 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:32 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:27 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - #: ../../../docs/configuring-playbook-appservice-double-puppet.md:34 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:36 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:38 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:41 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:40 -msgid "`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." +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:43 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:42 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:45 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-appservice-double-puppet.md:44 +#: ../../../docs/configuring-playbook-appservice-double-puppet.md:47 msgid "Installing the service will automatically enable double puppeting for all bridges that support double puppeting via the appservice method." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-appservice-draupnir-for-all.pot b/i18n/translation-templates/docs/configuring-playbook-appservice-draupnir-for-all.pot index e050f2b2a..73a043577 100644 --- a/i18n/translation-templates/docs/configuring-playbook-appservice-draupnir-for-all.pot +++ b/i18n/translation-templates/docs/configuring-playbook-appservice-draupnir-for-all.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,167 +16,167 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:1 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:8 msgid "Setting up Draupnir for All/D4A (optional)" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:3 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:10 msgid "The playbook can install and configure the [Draupnir](https://github.com/the-draupnir-project/Draupnir) moderation tool for you in appservice mode." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:5 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:12 msgid "Appservice mode can be used together with the regular [Draupnir bot](configuring-playbook-bot-draupnir.md) or independently. Details about the differences between the 2 modes are described below." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:7 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:14 msgid "Draupnir Appservice mode compared to Draupnir bot mode" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:9 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:16 msgid "The administrative functions for managing the appservice are alpha quality and very limited. However, the experience of using an appservice-provisioned Draupnir is on par with the experience of using Draupnir from bot mode except in the case of avatar customisation as described later on in this document." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:11 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:18 msgid "Draupnir for all is the way to go if you need more than 1 Draupnir instance, but you don't need access to Synapse Admin features as they are not accessible through Draupnir for All (Even though the commands do show up in help)." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:13 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:20 msgid "Draupnir for all in the playbook is rate-limit-exempt automatically as its appservice configuration file does not specify any rate limits." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:15 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:22 msgid "Normal Draupnir does come with the benefit of access to Synapse Admin features. You are also able to more easily customise your normal Draupnir than D4A as D4A even on the branch with the Avatar command (To be Upstreamed to Mainline Draupnir) that command is clunky as it requires the use of things like Element Web devtools. In normal Draupnir this is a quick operation where you login to Draupnir with a normal client and set Avatar and Display name normally." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:17 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:24 msgid "Draupnir for all does not support external tooling like [MRU](https://mru.rory.gay) as it can't access Draupnir's user account." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:19 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:26 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:21 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:28 msgid "Create a main management room" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:23 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:30 msgid "The playbook does not create a management room for your Main Draupnir. You **need to create the room manually** before setting up the bot." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:25 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:32 msgid "Note that the room must be unencrypted." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:27 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:34 msgid "The management room has to be given an alias, and your bot has to be invited to the room." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:29 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:36 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:31 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:38 msgid "[!WARNING] Anyone in this room can control the bot so it is important that you only invite trusted users to this room." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:34 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:41 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:36 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:43 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `MANAGEMENT_ROOM_ALIAS_HERE`." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:44 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:51 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:46 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:53 msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:48 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:55 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:50 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:57 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:52 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:59 msgid "For example, to change Draupnir's `protectAllJoinedRooms` option to `true`, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:66 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:73 msgid "You can refer to the upstream [documentation](https://github.com/the-draupnir-project/Draupnir) for more configuration documentation." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:68 -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:83 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:75 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:90 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:70 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:77 msgid "The playbook ships a full copy of the example config that does transfer to provisioned Draupnirs in the production-bots.yaml.j2 file in the template directory of the role." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:72 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:79 msgid "Config extension does not affect the appservices config as this config is not extensible in current Draupnir anyway. It instead touches the config passed to the Draupnirs that your Appservice creates. So the example above (`protectAllJoinedRooms: true`) makes all provisioned Draupnirs protect all joined rooms." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:74 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:81 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:76 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:83 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:85 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:92 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:87 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:94 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:89 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:96 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:91 -msgid "If you made it through all the steps above and your main control room was joined by a user called `@draupnir-main:example.com` you have succesfully installed Draupnir for All and can now start using it." +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:98 +msgid "If you made it through all the steps above and your main control room was joined by a user called `@draupnir-main:example.com` you have successfully installed Draupnir for All and can now start using it." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:93 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:100 msgid "The installation of Draupnir for all in this playbook is very much Alpha quality. Usage-wise, Draupnir for all is almost identical to Draupnir bot mode." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:95 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:102 msgid "Granting Users the ability to use D4A" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:97 -msgid "Draupnir for all includes several security measures like that it only allows users that are on its allow list to ask for a bot. To add a user to this list we have 2 primary options. Using the chat to tell Draupnir to do this for us or if you want to automatically do it by sending `m.policy.rule.user` events that target the subject you want to allow provisioning for with the `org.matrix.mjolnir.allow` recomendation. Using the chat is recomended." +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:104 +msgid "Draupnir for all includes several security measures like that it only allows users that are on its allow list to ask for a bot. To add a user to this list we have 2 primary options. Using the chat to tell Draupnir to do this for us or if you want to automatically do it by sending `m.policy.rule.user` events that target the subject you want to allow provisioning for with the `org.matrix.mjolnir.allow` recommendation. Using the chat is recommended." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:99 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:106 msgid "The bot requires a powerlevel of 50 in the management room to control who is allowed to use the bot. The bot does currently not say anything if this is true or false. (This is considered a bug and is documented in issue [#297](https://github.com/the-draupnir-project/Draupnir/issues/297))" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:101 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:108 msgid "To allow users or whole homeservers you type /plain !admin allow `target` and target can be either a MXID or a wildcard like `@*:example.com` to allow all users on example.com to register. We use /plain to force the client to not attempt to mess with this command as it can break Wildcard commands especially." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:103 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:110 msgid "How to provision a D4A once you are allowed to" msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:105 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:112 msgid "To provision a D4A, you need to start a chat with `@draupnir-main:example.com`. The bot will reject this invite and you will shortly get invited to the Draupnir control room for your newly provisioned Draupnir. From here its just a normal Draupnir experience." msgstr "" -#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:107 +#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:114 msgid "Congratulations if you made it all the way here because you now have a fully working Draupnir for all deployment." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-backup-borg.pot b/i18n/translation-templates/docs/configuring-playbook-backup-borg.pot index ca89549cf..f11f64dc8 100644 --- a/i18n/translation-templates/docs/configuring-playbook-backup-borg.pot +++ b/i18n/translation-templates/docs/configuring-playbook-backup-borg.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,174 +16,26 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-backup-borg.md:1 -msgid "Setting up BorgBackup (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:3 -msgid "The playbook can install and configure [BorgBackup](https://www.borgbackup.org/) (short: Borg) with [borgmatic](https://torsion.org/borgmatic/) for you." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:5 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:7 -msgid "Prerequisites" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:9 -msgid "Set up a remote server for storing backups" -msgstr "" - #: ../../../docs/configuring-playbook-backup-borg.md:11 -msgid "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)." +msgid "Setting up BorgBackup (optional)" msgstr "" #: ../../../docs/configuring-playbook-backup-borg.md:13 -msgid "Check the Postgres version" +msgid "The playbook can install and configure [BorgBackup](https://www.borgbackup.org/) (short: Borg) with [borgmatic](https://torsion.org/borgmatic/) for you." msgstr "" #: ../../../docs/configuring-playbook-backup-borg.md:15 -msgid "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." +msgid "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." msgstr "" #: ../../../docs/configuring-playbook-backup-borg.md:17 -msgid "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)." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:19 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:21 -msgid "Create a new SSH key" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:23 -msgid "Run the command below on any machine to create a new SSH key:" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:29 -msgid "You don't need to place the key in the `.ssh` folder." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:31 -msgid "Add the public key" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:33 -msgid "Next, add the **public** part of this SSH key (the `matrix-borg-backup.pub` file) to your BorgBackup provider/server." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:35 -msgid "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:" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:45 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:47 -msgid "Adjusting the playbook configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:49 -msgid "To enable BorgBackup, add the following configuration to your `vars.yml` file (adapt to your needs):" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:76 -msgid "**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." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:78 -msgid "Set backup archive name (optional)" +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-backup-borg.md:80 -msgid "You can specify the backup archive name format. To set it, add the following configuration to your `vars.yml` file (adapt to your needs):" +#: ../../../docs/configuring-playbook-backup-borg.md:18 +msgid "🌐 [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" msgstr "" -#: ../../../docs/configuring-playbook-backup-borg.md:86 -msgid "Configure retention policy (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:88 -msgid "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):" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:98 -msgid "Edit the backup schedule (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:100 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:102 -msgid "To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:108 -msgid "**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." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:110 -msgid "Set include and/or exclude directories (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:112 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:114 -msgid "You might also want to exclude certain directories or file patterns from the backup using the `backup_borg_location_exclude_patterns` variable." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:116 -msgid "Extending the configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:118 -msgid "There are some additional things you may wish to configure about the component." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:120 -msgid "Take a look at:" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:122 -msgid "[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" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:124 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:126 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:133 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:135 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:137 -msgid "Manually start a backup" -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:139 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:141 -msgid "If you want to run it immediately, log in to the server with SSH and run `systemctl start matrix-backup-borg`." -msgstr "" - -#: ../../../docs/configuring-playbook-backup-borg.md:143 -msgid "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." +#: ../../../docs/configuring-playbook-backup-borg.md:19 +msgid "📁 `roles/galaxy/backup_borg/docs/configuring-backup-borg.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-base-domain-serving.pot b/i18n/translation-templates/docs/configuring-playbook-base-domain-serving.pot index 8fa55d07a..6700fdd01 100644 --- a/i18n/translation-templates/docs/configuring-playbook-base-domain-serving.pot +++ b/i18n/translation-templates/docs/configuring-playbook-base-domain-serving.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,142 +16,142 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-base-domain-serving.md:1 +#: ../../../docs/configuring-playbook-base-domain-serving.md:8 msgid "Serving the base domain (optional)" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:3 +#: ../../../docs/configuring-playbook-base-domain-serving.md:10 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:5 +#: ../../../docs/configuring-playbook-base-domain-serving.md:12 msgid "As we discuss in [Server Delegation](howto-server-delegation.md), server delegation / redirection can be configured in either of these ways:" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:7 +#: ../../../docs/configuring-playbook-base-domain-serving.md:14 msgid "Setting up a `/.well-known/matrix/server` file on the base domain (`example.com`)" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:8 +#: ../../../docs/configuring-playbook-base-domain-serving.md:15 msgid "Setting up a `_matrix._tcp` DNS SRV record" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:10 +#: ../../../docs/configuring-playbook-base-domain-serving.md:17 msgid "For simplicity reasons, this playbook recommends you to set up server delegation via a `/.well-known/matrix/server` file." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:12 +#: ../../../docs/configuring-playbook-base-domain-serving.md:19 msgid "However, those who don't have a separate server to dedicate to the base domain have trouble arranging this." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:14 +#: ../../../docs/configuring-playbook-base-domain-serving.md:21 msgid "Usually, there are 2 options:" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:16 +#: ../../../docs/configuring-playbook-base-domain-serving.md:23 msgid "either get a separate server for the base domain, just for serving the files necessary for [Server Delegation via a well-known file](howto-server-delegation.md#server-delegation-via-a-well-known-file)" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:18 +#: ../../../docs/configuring-playbook-base-domain-serving.md:25 msgid "or, arrange for the Matrix server to serve the base domain. This either involves you [using your own webserver](configuring-playbook-own-webserver.md) or making the integrated webserver serve the base domain for you." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:20 +#: ../../../docs/configuring-playbook-base-domain-serving.md:27 msgid "This documentation page tells you how to do the latter. With some easy changes, we make it possible to serve the base domain from the Matrix server via the integrated webserver." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:22 +#: ../../../docs/configuring-playbook-base-domain-serving.md:29 msgid "Just [**adjust your DNS records**](configuring-dns.md), so that your base domain is pointed to the Matrix server's IP address (using a DNS `A` record) **and then add the following configuration** to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:28 +#: ../../../docs/configuring-playbook-base-domain-serving.md:35 msgid "Doing this, the playbook will:" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:30 +#: ../../../docs/configuring-playbook-base-domain-serving.md:37 msgid "obtain an SSL certificate for the base domain, just like it does for all other domains (see [how we handle SSL certificates](configuring-playbook-ssl-certificates.md))" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:32 +#: ../../../docs/configuring-playbook-base-domain-serving.md:39 msgid "serve the `/.well-known/matrix/*` files which are necessary for [Federation Server Discovery](configuring-well-known.md#federation-server-discovery) (also see [Server Delegation](howto-server-delegation.md)) and [Client-Server discovery](configuring-well-known.md#client-server-discovery)" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:34 +#: ../../../docs/configuring-playbook-base-domain-serving.md:41 msgid "serve a simple homepage at `https://example.com` with content `Hello from example.com` (configurable via the `matrix_static_files_file_index_html_template` variable). You can also [serve a more complicated static website](#serving-a-static-website-at-the-base-domain)." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:36 +#: ../../../docs/configuring-playbook-base-domain-serving.md:43 msgid "Serving a static website at the base domain" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:38 +#: ../../../docs/configuring-playbook-base-domain-serving.md:45 msgid "By default, when \"serving the base domain\" is enabled, the playbook hosts a simple `index.html` webpage at `/matrix/static-files/public/index.html`. The content of this page is taken from the `matrix_static_files_file_index_html_template` variable." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:40 +#: ../../../docs/configuring-playbook-base-domain-serving.md:47 msgid "If you'd like to host your own static website (more than a single `index.html` page) at the base domain, you can disable the creation of this default `index.html` page like this:" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:54 +#: ../../../docs/configuring-playbook-base-domain-serving.md:61 msgid "With this configuration, Ansible will no longer mess around with the `/matrix/static-files/public/index.html` file." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:56 +#: ../../../docs/configuring-playbook-base-domain-serving.md:63 msgid "You are then free to upload any static website files to `/matrix/static-files/public` and they will get served at the base domain. You can do so manually or by using the [ansible-role-aux](https://github.com/mother-of-all-self-hosting/ansible-role-aux) Ansible role, which is part of this playbook already." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:58 +#: ../../../docs/configuring-playbook-base-domain-serving.md:65 msgid "Serving a more complicated website at the base domain" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:60 +#: ../../../docs/configuring-playbook-base-domain-serving.md:67 msgid "If you'd like to serve an even more complicated (dynamic) website from the Matrix server, relying on the playbook to serve the base domain is not the best choice." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:62 +#: ../../../docs/configuring-playbook-base-domain-serving.md:69 msgid "You have 2 options." msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:64 +#: ../../../docs/configuring-playbook-base-domain-serving.md:71 msgid "**One way is to host your base domain elsewhere**. This involves:" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:65 +#: ../../../docs/configuring-playbook-base-domain-serving.md:72 msgid "you stopping to serve it from the Matrix server: remove `matrix_static_files_container_labels_base_domain_enabled` from your configuration" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:66 +#: ../../../docs/configuring-playbook-base-domain-serving.md:73 msgid "[configuring Matrix Delegation via well-known](./configuring-well-known.md)" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:68 +#: ../../../docs/configuring-playbook-base-domain-serving.md:75 msgid "**Another way is to serve the base domain from another (your own) container on the Matrix server**. This involves:" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:69 +#: ../../../docs/configuring-playbook-base-domain-serving.md:76 msgid "telling the playbook to only serve `example.com/.well-known/matrix` files by adjusting your `vars.yml` configuration like this:" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:70 +#: ../../../docs/configuring-playbook-base-domain-serving.md:77 msgid "keep `matrix_static_files_container_labels_base_domain_enabled: true`" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:71 +#: ../../../docs/configuring-playbook-base-domain-serving.md:78 msgid "add an extra: `matrix_static_files_container_labels_base_domain_traefik_path_prefix: /.well-known/matrix`" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:72 +#: ../../../docs/configuring-playbook-base-domain-serving.md:79 msgid "building and running a new container on the Matrix server:" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:73 +#: ../../../docs/configuring-playbook-base-domain-serving.md:80 msgid "it should be connected to the `traefik` network, so that Traefik can reverse-proxy to it" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:74 +#: ../../../docs/configuring-playbook-base-domain-serving.md:81 msgid "it should have appropriate [container labels](https://docs.docker.com/config/labels-custom-metadata/), which instruct Traefik to reverse-proxy to it" msgstr "" -#: ../../../docs/configuring-playbook-base-domain-serving.md:76 +#: ../../../docs/configuring-playbook-base-domain-serving.md:83 msgid "How you'll be managing building and running this container is up-to-you. You may use of the primitives from [ansible-role-aux](https://github.com/mother-of-all-self-hosting/ansible-role-aux) Ansible role to organize it yourself, or you can set it up in another way." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-baibot.pot b/i18n/translation-templates/docs/configuring-playbook-bot-baibot.pot index f6b6bb6a5..1a765faed 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-baibot.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-baibot.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,429 +16,433 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-baibot.md:1 +#: ../../../docs/configuring-playbook-bot-baibot.md:8 msgid "Setting up baibot (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:8 +#: ../../../docs/configuring-playbook-bot-baibot.md:15 msgid "🤖 [baibot](https://github.com/etkecc/baibot) (pronounced bye-bot) is 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 "" -#: ../../../docs/configuring-playbook-bot-baibot.md:10 +#: ../../../docs/configuring-playbook-bot-baibot.md:17 msgid "It supports [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) models, as many well as other [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:12 +#: ../../../docs/configuring-playbook-bot-baibot.md:19 msgid "It's designed as a more private and [✨ featureful](https://github.com/etkecc/baibot/?tab=readme-ov-file#-features) alternative to [matrix-chatgpt-bot](./configuring-playbook-bot-chatgpt.md). See the [baibot](https://github.com/etkecc/baibot) project and its documentation for more information." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:14 +#: ../../../docs/configuring-playbook-bot-baibot.md:21 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:16 +#: ../../../docs/configuring-playbook-bot-baibot.md:23 msgid "API access to one or more LLM [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:18 +#: ../../../docs/configuring-playbook-bot-baibot.md:25 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:20 +#: ../../../docs/configuring-playbook-bot-baibot.md:27 msgid "There are **a lot of configuration options** (some required, some possibly required, some optional), so they're **split into multiple sections below**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:23 +#: ../../../docs/configuring-playbook-bot-baibot.md:30 msgid "[Base configuration](#base-configuration)" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:24 +#: ../../../docs/configuring-playbook-bot-baibot.md:31 msgid "[👮‍♂️ Administrator configuration](#️-administrator-configuration)" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:25 +#: ../../../docs/configuring-playbook-bot-baibot.md:32 msgid "[👥 Initial users configuration](#-initial-users-configuration)" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:26 +#: ../../../docs/configuring-playbook-bot-baibot.md:33 msgid "[🤖 Configuring agents via Ansible](#-configuring-agents-via-ansible)" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:27 +#: ../../../docs/configuring-playbook-bot-baibot.md:34 msgid "[🤝 Configuring initial default handlers](#-configuring-initial-default-handlers)" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:29 +#: ../../../docs/configuring-playbook-bot-baibot.md:36 msgid "Depending on your current `vars.yml` file and desired configuration, **you may require more than just the [base configuration](#base-configuration)**." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:31 +#: ../../../docs/configuring-playbook-bot-baibot.md:38 msgid "Base configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:33 +#: ../../../docs/configuring-playbook-bot-baibot.md:40 msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:71 +#: ../../../docs/configuring-playbook-bot-baibot.md:78 msgid "As mentioned above, **this may not be enough**. Continue with the configuration sections below." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:73 +#: ../../../docs/configuring-playbook-bot-baibot.md:80 msgid "👮‍♂️ Administrator configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:75 -#: ../../../docs/configuring-playbook-bot-baibot.md:99 +#: ../../../docs/configuring-playbook-bot-baibot.md:82 +#: ../../../docs/configuring-playbook-bot-baibot.md:106 msgid "This is an addition to the [base configuration](#base-configuration)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:77 +#: ../../../docs/configuring-playbook-bot-baibot.md:84 msgid "To specify who is considered a bot [👮‍♂️ Administrator](https://github.com/etkecc/baibot/blob/main/docs/access.md#administrators), you either need to specify `matrix_bot_baibot_config_access_admin_patterns` or `matrix_admin`. The latter is a single variable which affects all bridges and bots." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:79 +#: ../../../docs/configuring-playbook-bot-baibot.md:86 msgid "If `matrix_admin` is already configured in your `vars.yml` configuration, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:81 -#: ../../../docs/configuring-playbook-bot-baibot.md:110 +#: ../../../docs/configuring-playbook-bot-baibot.md:88 +#: ../../../docs/configuring-playbook-bot-baibot.md:117 msgid "**If necessary**, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:95 +#: ../../../docs/configuring-playbook-bot-baibot.md:102 msgid "👥 Initial users configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:97 +#: ../../../docs/configuring-playbook-bot-baibot.md:104 msgid "By default, **all users on your homeserver are considered allowed users**. If that's OK, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:101 +#: ../../../docs/configuring-playbook-bot-baibot.md:108 msgid "To specify who is considered a bot [👥 User](https://github.com/etkecc/baibot/blob/main/docs/access.md#user), you may:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:103 +#: ../../../docs/configuring-playbook-bot-baibot.md:110 msgid "define an **initial** value for `matrix_bot_baibot_config_initial_global_config_user_patterns` Ansible variable, as shown below" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:104 +#: ../../../docs/configuring-playbook-bot-baibot.md:111 msgid "configure the list at runtime via the bot's `!bai access set-users SPACE_SEPARATED_PATTERNS` command" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:106 +#: ../../../docs/configuring-playbook-bot-baibot.md:113 msgid "Configuring `matrix_bot_baibot_config_initial_global_config_user_patterns` is optional, but it can be useful to pre-configure the bot with a list of users who should have access to the bot's features." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:108 +#: ../../../docs/configuring-playbook-bot-baibot.md:115 msgid "**Note**: Once initially configured, the allowed users list **cannot be managed via Ansible anymore**. It can only be managed subsequently via bot commands." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:122 +#: ../../../docs/configuring-playbook-bot-baibot.md:129 msgid "🤖 Configuring agents via Ansible" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:124 +#: ../../../docs/configuring-playbook-bot-baibot.md:131 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:126 +#: ../../../docs/configuring-playbook-bot-baibot.md:133 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:128 +#: ../../../docs/configuring-playbook-bot-baibot.md:135 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:130 +#: ../../../docs/configuring-playbook-bot-baibot.md:137 msgid "Besides the presets, the Ansible role also includes support for configuring additional statically-defined agents via the `matrix_bot_baibot_config_agents_static_definitions_custom` Ansible variable." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:132 +#: ../../../docs/configuring-playbook-bot-baibot.md:139 msgid "Agents defined statically and those created dynamically (via chat) are named differently, so **conflict cannot arise**." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:134 +#: ../../../docs/configuring-playbook-bot-baibot.md:141 msgid "Depending on your propensity for [GitOps](https://en.wikipedia.org/wiki/DevOps#GitOps), you may prefer to define agents statically via Ansible, or you may wish to do it dynamically via chat." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:136 +#: ../../../docs/configuring-playbook-bot-baibot.md:143 msgid "Before proceeding, we recommend reading the upstream documentation on [How to choose a provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#how-to-choose-a-provider). In short, it's probably best to go with [OpenAI](#openai)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:138 +#: ../../../docs/configuring-playbook-bot-baibot.md:145 msgid "Anthropic" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:140 +#: ../../../docs/configuring-playbook-bot-baibot.md:147 msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [Anthropic provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#anthropic) with the help of the playbook's preset variables." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:142 -#: ../../../docs/configuring-playbook-bot-baibot.md:166 -#: ../../../docs/configuring-playbook-bot-baibot.md:197 -#: ../../../docs/configuring-playbook-bot-baibot.md:225 +#: ../../../docs/configuring-playbook-bot-baibot.md:149 +#: ../../../docs/configuring-playbook-bot-baibot.md:173 +#: ../../../docs/configuring-playbook-bot-baibot.md:204 +#: ../../../docs/configuring-playbook-bot-baibot.md:232 msgid "Here's an example **addition** to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:158 -#: ../../../docs/configuring-playbook-bot-baibot.md:189 -#: ../../../docs/configuring-playbook-bot-baibot.md:215 -#: ../../../docs/configuring-playbook-bot-baibot.md:243 +#: ../../../docs/configuring-playbook-bot-baibot.md:165 +#: ../../../docs/configuring-playbook-bot-baibot.md:196 +#: ../../../docs/configuring-playbook-bot-baibot.md:222 +#: ../../../docs/configuring-playbook-bot-baibot.md:250 msgid "If you'd like to use more than one model, take a look at the [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset) section below." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:160 -#: ../../../docs/configuring-playbook-bot-baibot.md:191 -#: ../../../docs/configuring-playbook-bot-baibot.md:217 -#: ../../../docs/configuring-playbook-bot-baibot.md:245 +#: ../../../docs/configuring-playbook-bot-baibot.md:167 +#: ../../../docs/configuring-playbook-bot-baibot.md:198 +#: ../../../docs/configuring-playbook-bot-baibot.md:224 +#: ../../../docs/configuring-playbook-bot-baibot.md:252 msgid "💡 You may also wish to use this new agent for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:162 +#: ../../../docs/configuring-playbook-bot-baibot.md:169 msgid "Groq" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:164 +#: ../../../docs/configuring-playbook-bot-baibot.md:171 msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [Groq provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#groq) with the help of the playbook's preset variables." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:187 +#: ../../../docs/configuring-playbook-bot-baibot.md:194 msgid "Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/groq`." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:193 +#: ../../../docs/configuring-playbook-bot-baibot.md:200 msgid "Mistral" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:195 +#: ../../../docs/configuring-playbook-bot-baibot.md:202 msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [🇫🇷 Mistral provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#mistral) with the help of the playbook's preset variables." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:213 +#: ../../../docs/configuring-playbook-bot-baibot.md:220 msgid "Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/mistral`." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:219 +#: ../../../docs/configuring-playbook-bot-baibot.md:226 msgid "OpenAI" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:221 +#: ../../../docs/configuring-playbook-bot-baibot.md:228 msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [OpenAI provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openai) with the help of the playbook's preset variables." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:223 +#: ../../../docs/configuring-playbook-bot-baibot.md:230 msgid "The OpenAI provider is **only meant to be used with OpenAI's official API** and compatibility with other services (which do not fully adhere to the OpenAI API spec completely) is limited. **If you're targeting an OpenAI-compatible service**, use the [OpenAI Compatible](#openai-compatible) provider instead." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:241 +#: ../../../docs/configuring-playbook-bot-baibot.md:248 msgid "Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/openai`." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:247 +#: ../../../docs/configuring-playbook-bot-baibot.md:254 msgid "OpenAI Compatible" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:249 +#: ../../../docs/configuring-playbook-bot-baibot.md:256 msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [OpenAI Compatible provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openai-compatible) with the help of the playbook's preset variables." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:251 +#: ../../../docs/configuring-playbook-bot-baibot.md:258 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:253 +#: ../../../docs/configuring-playbook-bot-baibot.md:260 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:255 +#: ../../../docs/configuring-playbook-bot-baibot.md:262 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:257 +#: ../../../docs/configuring-playbook-bot-baibot.md:264 msgid "Configuring additional agents (without a preset)" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:259 +#: ../../../docs/configuring-playbook-bot-baibot.md:266 msgid "The Ansible role may be lacking preset variables for some [☁️ provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md), or you may wish to statically-define an agent on the same provider twice (or more) with different configuration." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:261 +#: ../../../docs/configuring-playbook-bot-baibot.md:268 msgid "It's possible to inject your own agent configuration using the `matrix_bot_baibot_config_agents_static_definitions_custom` Ansible variable." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:263 +#: ../../../docs/configuring-playbook-bot-baibot.md:270 msgid "You can also define providers at runtime, by chatting with the bot, so using Ansible is not a requirement." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:265 +#: ../../../docs/configuring-playbook-bot-baibot.md:272 msgid "Below is an an **example** demonstrating **statically-defining agents via Ansible without using presets**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:304 +#: ../../../docs/configuring-playbook-bot-baibot.md:311 msgid "Because these are [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agents, they will be given a `static/` ID prefix and will be named `static/my-openai-gpt-3.5-turbo-agent` and `static/my-ollama-agent`, respectively." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:306 +#: ../../../docs/configuring-playbook-bot-baibot.md:313 msgid "💡 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**." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:308 +#: ../../../docs/configuring-playbook-bot-baibot.md:315 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:310 +#: ../../../docs/configuring-playbook-bot-baibot.md:317 msgid "💡 You may also wish to use these new agents for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:312 +#: ../../../docs/configuring-playbook-bot-baibot.md:319 msgid "🤝 Configuring initial default handlers" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:314 +#: ../../../docs/configuring-playbook-bot-baibot.md:321 msgid "This section is only useful if you're [🤖 Configuring agents via Ansible](#-configuring-agents-via-ansible), as it lets you put these agents to use as soon as the bot starts (by adjusting the bot's **initial global configuration**)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:316 +#: ../../../docs/configuring-playbook-bot-baibot.md:323 msgid "If you're not configuring agents via Ansible, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:318 +#: ../../../docs/configuring-playbook-bot-baibot.md:325 msgid "This section is only useful the first time around. **Once initially configured the global configuration cannot be managed Ansible**, but only via bot commands." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:320 +#: ../../../docs/configuring-playbook-bot-baibot.md:327 msgid "baibot supports [various purposes](https://github.com/etkecc/baibot/blob/main/docs/features.md):" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:322 +#: ../../../docs/configuring-playbook-bot-baibot.md:329 msgid "[💬 text-generation](https://github.com/etkecc/baibot/blob/main/docs/features.md#-text-generation): communicating with you via text" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:324 +#: ../../../docs/configuring-playbook-bot-baibot.md:331 msgid "[🦻 speech-to-text](https://github.com/etkecc/baibot/blob/main/docs/features.md#-speech-to-text): turning your voice messages into text" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:326 +#: ../../../docs/configuring-playbook-bot-baibot.md:333 msgid "[🗣️ text-to-speech](https://github.com/etkecc/baibot/blob/main/docs/features.md#-text-to-speech): turning bot or users text messages into voice messages" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:328 +#: ../../../docs/configuring-playbook-bot-baibot.md:335 msgid "[🖌️ image-generation](https://github.com/etkecc/baibot/blob/main/docs/features.md#-image-generation): generating images based on instructions" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:330 +#: ../../../docs/configuring-playbook-bot-baibot.md:337 msgid "❓ catch-all: special purposes, indicating use as a fallback (when no specific handler is configured)" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:332 +#: ../../../docs/configuring-playbook-bot-baibot.md:339 msgid "[Mixing & matching models](https://github.com/etkecc/baibot/blob/main/docs/features.md#mixing--matching-models) is made possible by the bot's ability to have different [🤝 handlers](https://github.com/etkecc/baibot/blob/main/docs/configuration/handlers.md) configured for different purposes." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:334 +#: ../../../docs/configuring-playbook-bot-baibot.md:341 msgid "This configuration can be done as a global fallback, or per-room. Both of these [🛠️ configurations](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md) are managed at runtime (viat chat), but **the global configuration can have some initial defaults configured via Ansible**." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:336 +#: ../../../docs/configuring-playbook-bot-baibot.md:343 msgid "You can configure the **initial values** for these via Ansible, via the `matrix_bot_baibot_config_initial_global_config_handler_*` variables." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:338 +#: ../../../docs/configuring-playbook-bot-baibot.md:345 msgid "Example **additional** `vars.yml` configuration:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:355 +#: ../../../docs/configuring-playbook-bot-baibot.md:362 msgid "**Note**: these are initial defaults for the bot's global configuration. As such, changing any of these values subsequently has no effect on the bot's behavior. **Once initially configured the global configuration cannot be managed Ansible**, but only via bot commands." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:357 +#: ../../../docs/configuring-playbook-bot-baibot.md:364 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:359 +#: ../../../docs/configuring-playbook-bot-baibot.md:366 msgid "There are some additional things you may wish to configure about the bot." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:361 +#: ../../../docs/configuring-playbook-bot-baibot.md:368 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:363 +#: ../../../docs/configuring-playbook-bot-baibot.md:370 msgid "`roles/custom/matrix-bot-baibot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:364 +#: ../../../docs/configuring-playbook-bot-baibot.md:371 msgid "`roles/custom/matrix-bot-baibot/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_baibot_configuration_extension_yaml` variable" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:366 +#: ../../../docs/configuring-playbook-bot-baibot.md:373 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:368 +#: ../../../docs/configuring-playbook-bot-baibot.md:375 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:375 +#: ../../../docs/configuring-playbook-bot-baibot.md:382 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:377 +#: ../../../docs/configuring-playbook-bot-baibot.md:384 msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:379 +#: ../../../docs/configuring-playbook-bot-baibot.md:386 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:381 +#: ../../../docs/configuring-playbook-bot-baibot.md:388 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:383 +#: ../../../docs/configuring-playbook-bot-baibot.md:390 msgid "If you change the bot password (`matrix_bot_baibot_config_user_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_baibot_config_user_password` to let the bot know its new password." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:385 +#: ../../../docs/configuring-playbook-bot-baibot.md:392 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:387 +#: ../../../docs/configuring-playbook-bot-baibot.md:394 msgid "To use the bot, invite it to any existing Matrix room (`/invite @baibot:example.com` where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:389 +#: ../../../docs/configuring-playbook-bot-baibot.md:396 msgid "If you're an allowed bot [👥 user](https://github.com/etkecc/baibot/blob/main/docs/access.md#user) (see [👥 Initial users configuration](#-initial-users-configuration)), the bot will accept your invitation and join the room." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:391 +#: ../../../docs/configuring-playbook-bot-baibot.md:398 msgid "After joining, the bot will introduce itself and show information about the [✨ features](https://github.com/etkecc/baibot/blob/main/docs/features.md) that are enabled for it." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:393 +#: ../../../docs/configuring-playbook-bot-baibot.md:400 msgid "If you've [🤖 configured one or more agents via Ansible](#-configuring-agents-via-ansible) and have [🤝 configured initial default handlers](#configuring-initial-default-handlers), the bot will immediately be able to make use of these agents for this new room. Otherwise, you will need to configure agents and/or handlers via chat commands." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:395 +#: ../../../docs/configuring-playbook-bot-baibot.md:402 msgid "Send `!bai help` to the bot in the room to see the available commands." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:397 +#: ../../../docs/configuring-playbook-bot-baibot.md:404 msgid "You can also refer to the upstream [baibot](https://github.com/etkecc/baibot) project's documentation." msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:399 +#: ../../../docs/configuring-playbook-bot-baibot.md:406 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:401 -msgid "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`" +#: ../../../docs/configuring-playbook-bot-baibot.md:408 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-baibot.md:410 +msgid "Increase logging verbosity" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:403 -msgid "The default logging level for this service is `info`, but you can increase it to `debug` (or even `trace`) with the following additional configuration:" +#: ../../../docs/configuring-playbook-bot-baibot.md:412 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-bot-baibot.md:417 +#: ../../../docs/configuring-playbook-bot-baibot.md:426 msgid "**Alternatively**, you can use a single variable to set the logging level for all of the above (bot + all libraries):" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-buscarron.pot b/i18n/translation-templates/docs/configuring-playbook-bot-buscarron.pot index f2330ca77..62418f3c7 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-buscarron.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-buscarron.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,154 +16,154 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-buscarron.md:1 +#: ../../../docs/configuring-playbook-bot-buscarron.md:9 msgid "Setting up Buscarron (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:3 +#: ../../../docs/configuring-playbook-bot-buscarron.md:11 msgid "The playbook can install and configure [Buscarron](https://github.com/etkecc/buscarron) for you." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:5 +#: ../../../docs/configuring-playbook-bot-buscarron.md:13 msgid "Buscarron is bot that receives HTTP POST submissions of web forms and forwards them to a Matrix room." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:7 +#: ../../../docs/configuring-playbook-bot-buscarron.md:15 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:9 +#: ../../../docs/configuring-playbook-bot-buscarron.md:17 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:11 +#: ../../../docs/configuring-playbook-bot-buscarron.md:19 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:13 +#: ../../../docs/configuring-playbook-bot-buscarron.md:21 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:15 +#: ../../../docs/configuring-playbook-bot-buscarron.md:23 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:17 +#: ../../../docs/configuring-playbook-bot-buscarron.md:25 msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:40 +#: ../../../docs/configuring-playbook-bot-buscarron.md:48 msgid "Adjusting the Buscarron URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:42 +#: ../../../docs/configuring-playbook-bot-buscarron.md:50 msgid "By tweaking the `matrix_bot_buscarron_hostname` and `matrix_bot_buscarron_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:44 +#: ../../../docs/configuring-playbook-bot-buscarron.md:52 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:55 +#: ../../../docs/configuring-playbook-bot-buscarron.md:63 msgid "After changing the domain, **you may need to adjust your DNS** records to point the Buscarron domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:57 +#: ../../../docs/configuring-playbook-bot-buscarron.md:65 msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:59 +#: ../../../docs/configuring-playbook-bot-buscarron.md:67 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:61 +#: ../../../docs/configuring-playbook-bot-buscarron.md:69 msgid "There are some additional things you may wish to configure about the bot." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:63 +#: ../../../docs/configuring-playbook-bot-buscarron.md:71 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:65 +#: ../../../docs/configuring-playbook-bot-buscarron.md:73 msgid "`roles/custom/matrix-bot-buscarron/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:67 +#: ../../../docs/configuring-playbook-bot-buscarron.md:75 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:69 +#: ../../../docs/configuring-playbook-bot-buscarron.md:77 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:76 +#: ../../../docs/configuring-playbook-bot-buscarron.md:84 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:78 +#: ../../../docs/configuring-playbook-bot-buscarron.md:86 msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:80 +#: ../../../docs/configuring-playbook-bot-buscarron.md:88 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:82 +#: ../../../docs/configuring-playbook-bot-buscarron.md:90 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:84 +#: ../../../docs/configuring-playbook-bot-buscarron.md:92 msgid "If you change the bot password (`matrix_bot_buscarron_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_buscarron_password` to let the bot know its new password." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:86 +#: ../../../docs/configuring-playbook-bot-buscarron.md:94 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:88 +#: ../../../docs/configuring-playbook-bot-buscarron.md:96 msgid "To use the bot, invite it to the room you specified on your `vars.yml` file (`/invite @bot.buscarron:example.com` where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:90 +#: ../../../docs/configuring-playbook-bot-buscarron.md:98 msgid "After the bot joins the room, anyone can call the web form via HTTP POST method." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:92 +#: ../../../docs/configuring-playbook-bot-buscarron.md:100 msgid "Here is an example for the `contact` form:" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:100 +#: ../../../docs/configuring-playbook-bot-buscarron.md:108 msgid "**Note**: to fight against spam, Buscarron is **very aggressive when it comes to banning** and will ban you if:" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:102 +#: ../../../docs/configuring-playbook-bot-buscarron.md:110 msgid "you hit the homepage (HTTP `GET` request to `/`)" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:103 +#: ../../../docs/configuring-playbook-bot-buscarron.md:111 msgid "you submit a form to the wrong URL (`POST` request to `/non-existing-form`)" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:104 +#: ../../../docs/configuring-playbook-bot-buscarron.md:112 msgid "`hasemail` is enabled for the form (like in the example above) and you don't submit an `email` field" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:106 +#: ../../../docs/configuring-playbook-bot-buscarron.md:114 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:108 +#: ../../../docs/configuring-playbook-bot-buscarron.md:116 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:110 +#: ../../../docs/configuring-playbook-bot-buscarron.md:118 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:112 +#: ../../../docs/configuring-playbook-bot-buscarron.md:120 msgid "Increase logging verbosity" msgstr "" -#: ../../../docs/configuring-playbook-bot-buscarron.md:114 +#: ../../../docs/configuring-playbook-bot-buscarron.md:122 msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-chatgpt.pot b/i18n/translation-templates/docs/configuring-playbook-bot-chatgpt.pot index 19354a2fa..07b66f52d 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-chatgpt.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-chatgpt.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,110 +16,134 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:1 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:9 msgid "Setting up matrix-bot-chatgpt (optional, unmaintained)" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:3 -msgid "**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." +#: ../../../docs/configuring-playbook-bot-chatgpt.md:11 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:5 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:13 msgid "The playbook can install and configure [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) for you." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:7 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:15 msgid "Talk to [ChatGPT](https://openai.com/blog/chatgpt/) via your favourite Matrix client!" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:9 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:17 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-chatgpt.md:19 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:11 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:21 msgid "Obtain an OpenAI API key" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:13 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:23 msgid "To use the bot, you'd need to obtain an API key from [https://platform.openai.com/account/api-keys](https://platform.openai.com/account/api-keys)." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:15 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:25 msgid "Register the bot account" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:17 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:27 msgid "The playbook does not automatically create users for you. You **need to register the bot user manually** before setting up the bot." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:19 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:29 msgid "Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:21 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:31 msgid "You can use the playbook to [register a new user](registering-users.md):" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:27 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:37 msgid "Obtain an access token and create encryption keys" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:29 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:39 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:31 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:41 msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:34 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:44 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:36 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:46 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:38 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:48 msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `API_KEY_HERE` with the API key retrieved [here](#obtain-an-openai-api-key) and `ACCESS_TOKEN_HERE` with the access token created [here](#obtain-an-access-token-and-create-encryption-keys), respectively." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:55 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:65 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-chatgpt.md:67 +msgid "There are some additional things you may wish to configure about the bot." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-chatgpt.md:69 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-chatgpt.md:71 +msgid "`roles/custom/matrix-bot-chatgpt/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-chatgpt.md:73 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:57 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:75 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:64 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:82 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:66 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:84 msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:68 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:86 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:70 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:88 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:72 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:90 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:74 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:92 msgid "To use the bot, invite it to the room you specified on your `vars.yml` file (`/invite @bot.chatgpt:example.com` where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:76 +#: ../../../docs/configuring-playbook-bot-chatgpt.md:94 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-chatgpt.md:78 -msgid "You can also refer to the upstream [documentation](https://github.com/matrixgpt/matrix-chatgpt-bot)." +#: ../../../docs/configuring-playbook-bot-chatgpt.md:96 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-chatgpt.md:98 +msgid "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`." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-draupnir.pot b/i18n/translation-templates/docs/configuring-playbook-bot-draupnir.pot index 1ebffdc1f..02149ef4b 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-draupnir.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-draupnir.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,390 +16,419 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-draupnir.md:1 +#: ../../../docs/configuring-playbook-bot-draupnir.md:10 msgid "Setting up Draupnir (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:3 +#: ../../../docs/configuring-playbook-bot-draupnir.md:12 msgid "The playbook can install and configure the [Draupnir](https://github.com/the-draupnir-project/Draupnir) moderation bot for you." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:5 +#: ../../../docs/configuring-playbook-bot-draupnir.md:14 msgid "See the project's [documentation](https://the-draupnir-project.github.io/draupnir-documentation/) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:7 +#: ../../../docs/configuring-playbook-bot-draupnir.md:16 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:9 +#: ../../../docs/configuring-playbook-bot-draupnir.md:18 msgid "If your migrating from [Mjolnir](configuring-playbook-bot-mjolnir.md), skip to [this section](#migrating-from-mjolnir-only-required-if-migrating)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:11 +#: ../../../docs/configuring-playbook-bot-draupnir.md:20 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:13 +#: ../../../docs/configuring-playbook-bot-draupnir.md:22 msgid "Create a management room" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:15 +#: ../../../docs/configuring-playbook-bot-draupnir.md:24 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:17 +#: ../../../docs/configuring-playbook-bot-draupnir.md:26 msgid "[!WARNING] Anyone in this room can control the bot so it is important that you only invite trusted users to this room." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:20 +#: ../../../docs/configuring-playbook-bot-draupnir.md:29 msgid "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))." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:22 +#: ../../../docs/configuring-playbook-bot-draupnir.md:31 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:24 +#: ../../../docs/configuring-playbook-bot-draupnir.md:33 msgid "End-to-End Encryption support" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:26 +#: ../../../docs/configuring-playbook-bot-draupnir.md:35 msgid "Decide whether you want to support having an encrypted management room or not. Draupnir can still protect encrypted rooms without encryption support enabled." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:28 +#: ../../../docs/configuring-playbook-bot-draupnir.md:37 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:30 +#: ../../../docs/configuring-playbook-bot-draupnir.md:39 msgid "Disable Pantalaimon for Draupnir (since v2.0.0; optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:32 +#: ../../../docs/configuring-playbook-bot-draupnir.md:41 msgid "It is known that running Draupnir along with Pantalaimon breaks all workflows that involve answering prompts with reactions." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:34 +#: ../../../docs/configuring-playbook-bot-draupnir.md:43 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:36 +#: ../../../docs/configuring-playbook-bot-draupnir.md:45 msgid "**Note**: because the management room is still encrypted, disabling it without enabling the native E2EE support will break the management room." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:38 +#: ../../../docs/configuring-playbook-bot-draupnir.md:47 msgid "Native E2EE support" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:40 +#: ../../../docs/configuring-playbook-bot-draupnir.md:49 msgid "To enable the native E2EE support, you need to obtain an access token for Draupnir and set it on your `vars.yml` file." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:42 +#: ../../../docs/configuring-playbook-bot-draupnir.md:51 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:44 +#: ../../../docs/configuring-playbook-bot-draupnir.md:53 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:55 +#: ../../../docs/configuring-playbook-bot-draupnir.md:64 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:57 +#: ../../../docs/configuring-playbook-bot-draupnir.md:66 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:76 +#: ../../../docs/configuring-playbook-bot-draupnir.md:85 msgid "Create and invite the bot to the management room" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:78 +#: ../../../docs/configuring-playbook-bot-draupnir.md:87 msgid "Before proceeding to the next step, run the playbook with the following command to create the bot user." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:84 +#: ../../../docs/configuring-playbook-bot-draupnir.md:93 msgid "**Note**: the `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:86 +#: ../../../docs/configuring-playbook-bot-draupnir.md:95 msgid "Then, invite the bot (`@bot.draupnir:example.com`) to its management room which you have created earlier." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:88 +#: ../../../docs/configuring-playbook-bot-draupnir.md:97 msgid "Make sure the account is free from rate limiting (optional, recommended)" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:90 +#: ../../../docs/configuring-playbook-bot-draupnir.md:99 msgid "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.**" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:92 +#: ../../../docs/configuring-playbook-bot-draupnir.md:101 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:94 +#: ../../../docs/configuring-playbook-bot-draupnir.md:103 msgid "**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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:96 +#: ../../../docs/configuring-playbook-bot-draupnir.md:105 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:98 +#: ../../../docs/configuring-playbook-bot-draupnir.md:107 msgid "Add the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:100 +#: ../../../docs/configuring-playbook-bot-draupnir.md:109 msgid "To expose the APIs publicly, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:106 +#: ../../../docs/configuring-playbook-bot-draupnir.md:115 msgid "Obtain an access token for admin account" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:108 +#: ../../../docs/configuring-playbook-bot-draupnir.md:117 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:110 +#: ../../../docs/configuring-playbook-bot-draupnir.md:119 msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:113 +#: ../../../docs/configuring-playbook-bot-draupnir.md:122 msgid "Run the `curl` command" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:115 +#: ../../../docs/configuring-playbook-bot-draupnir.md:124 msgid "To disable rate limiting, run the following command on systems that ship curl. Before running it, make sure to replace:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:117 +#: ../../../docs/configuring-playbook-bot-draupnir.md:126 msgid "`ADMIN_ACCESS_TOKEN_HERE` with the access token of the admin account" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:118 +#: ../../../docs/configuring-playbook-bot-draupnir.md:127 msgid "`example.com` with your base domain" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:119 +#: ../../../docs/configuring-playbook-bot-draupnir.md:128 msgid "`@bot.draupnir:example.com` with the MXID of your Draupnir bot user" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:125 +#: ../../../docs/configuring-playbook-bot-draupnir.md:134 +#: ../../../docs/configuring-playbook-bot-draupnir.md:207 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:126 +#: ../../../docs/configuring-playbook-bot-draupnir.md:135 msgid "This does not work on outdated Windows 10 as curl is not available there." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:127 +#: ../../../docs/configuring-playbook-bot-draupnir.md:136 msgid "Even if the APIs are not exposed to the internet, you should still be able to run the command on the homeserver locally." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:129 +#: ../../../docs/configuring-playbook-bot-draupnir.md:138 msgid "Abuse Reports" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:131 +#: ../../../docs/configuring-playbook-bot-draupnir.md:140 msgid "Draupnir can receive reports in the management room." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:133 +#: ../../../docs/configuring-playbook-bot-draupnir.md:142 msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:145 +#: ../../../docs/configuring-playbook-bot-draupnir.md:148 +msgid "Enabling synapse-http-antispam support" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-draupnir.md:150 +msgid "Certain protections in Draupnir require the [synapse-http-antispam](https://github.com/maunium/synapse-http-antispam) module and a Synapse homeserver plus homeserver admin status to function. This module can be enabled in the playbook via setting `matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled` to `true` and making sure that Draupnir admin API access is enabled." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-draupnir.md:160 +msgid "These protections need to be manually activated and consulting the [enabling protections](#enabling-built-in-protections) guide can be helpful or consulting upstream documentation." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-draupnir.md:168 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:147 +#: ../../../docs/configuring-playbook-bot-draupnir.md:170 msgid "There are some additional things you may wish to configure about the bot." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:149 +#: ../../../docs/configuring-playbook-bot-draupnir.md:172 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:151 +#: ../../../docs/configuring-playbook-bot-draupnir.md:174 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:153 +#: ../../../docs/configuring-playbook-bot-draupnir.md:176 msgid "For example, to change Draupnir's `acceptInvitesFromSpace` option to `!qporfwt:example.com`, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:167 +#: ../../../docs/configuring-playbook-bot-draupnir.md:190 msgid "Migrating from Mjolnir (Only required if migrating)" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:169 +#: ../../../docs/configuring-playbook-bot-draupnir.md:192 msgid "Replace your `matrix_bot_mjolnir` config with `matrix_bot_draupnir` config. Also disable Mjolnir if you're doing migration." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:171 +#: ../../../docs/configuring-playbook-bot-draupnir.md:194 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:173 +#: ../../../docs/configuring-playbook-bot-draupnir.md:196 msgid "That is all you need to do due to that Draupnir can complete migration on its own." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:175 +#: ../../../docs/configuring-playbook-bot-draupnir.md:198 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:177 +#: ../../../docs/configuring-playbook-bot-draupnir.md:200 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:184 +#: ../../../docs/configuring-playbook-bot-draupnir.md:209 +msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-draupnir.md:211 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:186 +#: ../../../docs/configuring-playbook-bot-draupnir.md:213 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:188 +#: ../../../docs/configuring-playbook-bot-draupnir.md:215 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-draupnir.md:217 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:190 +#: ../../../docs/configuring-playbook-bot-draupnir.md:219 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:192 +#: ../../../docs/configuring-playbook-bot-draupnir.md:221 msgid "Below is a **non-exhaustive quick-start guide** for the impatient." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:194 +#: ../../../docs/configuring-playbook-bot-draupnir.md:223 msgid "Making Draupnir join and protect a room" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:196 +#: ../../../docs/configuring-playbook-bot-draupnir.md:225 msgid "Draupnir can be told to self-join public rooms, but it's better to follow this flow which works well for all kinds of rooms:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:198 +#: ../../../docs/configuring-playbook-bot-draupnir.md:227 msgid "Invite the bot to the room manually ([inviting Draupnir to rooms](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-protected-rooms#inviting-draupnir-to-rooms)). Before joining, the bot *may* ask for confirmation in the Management Room" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:200 +#: ../../../docs/configuring-playbook-bot-draupnir.md:229 msgid "[Give the bot permissions to do its job](#giving-draupnir-permissions-to-do-its-job)" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:202 +#: ../../../docs/configuring-playbook-bot-draupnir.md:231 msgid "Tell it to protect the room (using the [rooms command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-protected-rooms#using-the-draupnir-rooms-command)) by sending the following command to the Management Room: `!draupnir rooms add !qporfwt:example.com`" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:204 +#: ../../../docs/configuring-playbook-bot-draupnir.md:233 msgid "To have Draupnir provide useful room protection, you need do to a bit more work (at least the first time around). You may wish to [Subscribe to a public policy list](#subscribing-to-a-public-policy-list), [Create your own own policy and rules](#creating-your-own-policy-lists-and-rules) and [Enabling built-in protections](#enabling-built-in-protections)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:206 +#: ../../../docs/configuring-playbook-bot-draupnir.md:235 msgid "Giving Draupnir permissions to do its job" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:208 +#: ../../../docs/configuring-playbook-bot-draupnir.md:237 msgid "For Draupnir to do its job, you need to [give it permissions](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-protected-rooms#giving-draupnir-permissions) in rooms it's protecting. This involves **giving it an Administrator power level**." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:210 +#: ../../../docs/configuring-playbook-bot-draupnir.md:239 msgid "**We recommend setting this power level as soon as the bot joins your room** (and before you create new rules), so that it can apply rules as soon as they are available. If the bot is under-privileged, it may fail to apply protections and may not retry for a while (or until your restart it)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:212 +#: ../../../docs/configuring-playbook-bot-draupnir.md:241 msgid "Subscribing to a public policy list" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:214 +#: ../../../docs/configuring-playbook-bot-draupnir.md:243 msgid "We recommend **subscribing to a public [policy list](https://the-draupnir-project.github.io/draupnir-documentation/concepts/policy-lists)** using the [watch command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-policy-lists#using-draupnirs-watch-command-to-subscribe-to-policy-rooms)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:216 -msgid "Polcy lists are maintained in Matrix rooms. A popular policy list is maintained in the public `#community-moderation-effort-bl:neko.dev` room." +#: ../../../docs/configuring-playbook-bot-draupnir.md:245 +msgid "Policy lists are maintained in Matrix rooms. Popular ones maintained in the public are:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:218 -msgid "You can tell Draupnir to subscribe to it by sending the following command to the Management Room: `!draupnir watch #community-moderation-effort-bl:neko.dev`" +#: ../../../docs/configuring-playbook-bot-draupnir.md:247 +msgid "`#community-moderation-effort-bl:neko.dev`" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:220 +#: ../../../docs/configuring-playbook-bot-draupnir.md:248 +msgid "`#huginn-muninn-active-threats:feline.support`" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-draupnir.md:250 +msgid "You can tell Draupnir to subscribe to each of these by sending the following command to the Management Room: `!draupnir watch POLICY_LIST_ADDRESS_HERE` (e.g. `!draupnir watch #community-moderation-effort-bl:neko.dev`)" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-draupnir.md:252 msgid "Creating your own policy lists and rules" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:222 +#: ../../../docs/configuring-playbook-bot-draupnir.md:254 msgid "We also recommend **creating your own policy lists** with the [list create](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-policy-lists#using-draupnirs-list-create-command-to-create-a-policy-room) command." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:224 +#: ../../../docs/configuring-playbook-bot-draupnir.md:256 msgid "You can do so by sending the following command to the Management Room: `!draupnir list create my-bans my-bans-bl`. This will create a policy list having a name (shortcode) of `my-bans` and stored in a public `#my-bans-bl:example.com` room on your server. As soon as you run this command, the bot will invite you to the policy list room." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:226 +#: ../../../docs/configuring-playbook-bot-draupnir.md:258 msgid "A policy list does nothing by itself, so the next step is **adding some rules to your policy list**. Policies target a so-called `entity` (one of: `user`, `room` or `server`). These entities are mentioned on the [policy lists](https://the-draupnir-project.github.io/draupnir-documentation/concepts/policy-lists) documentation page and in the Matrix Spec [here](https://spec.matrix.org/v1.11/client-server-api/#mban-recommendation)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:228 +#: ../../../docs/configuring-playbook-bot-draupnir.md:260 msgid "The simplest and most useful entity to target is `user`. Below are a few examples using the [ban command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-users#the-ban-command) and targeting users." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:230 +#: ../../../docs/configuring-playbook-bot-draupnir.md:262 msgid "To create rules, you run commands in the Management Room (**not** in the policy list room)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:232 +#: ../../../docs/configuring-playbook-bot-draupnir.md:264 msgid "(ban a single user on a given homeserver): `!draupnir ban @charles:example.com my-bans Rude to others`" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:233 -msgid "(ban all users on a given homeserver by using a [wildcard](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-users#wildcards)): `!draupnir ban @*:example.org my-bans Spam server - all users are fake`" +#: ../../../docs/configuring-playbook-bot-draupnir.md:265 +msgid "(ban all users on a given homeserver by using a [wildcard](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-users#wildcards)): `!draupnir ban @*:example.org my-bans Spam server, all users are fake`" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:235 +#: ../../../docs/configuring-playbook-bot-draupnir.md:267 msgid "As a result of running these commands, you may observe:" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:237 +#: ../../../docs/configuring-playbook-bot-draupnir.md:269 msgid "Draupnir creating `m.policy.rule.user` state events in the `#my-bans-bl:example.com` room on your server" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:238 +#: ../../../docs/configuring-playbook-bot-draupnir.md:270 msgid "applying these rules against all rooms that Draupnir is an Administrator in" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:240 +#: ../../../docs/configuring-playbook-bot-draupnir.md:272 msgid "You can undo bans with the [unban command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-users#the-unban-command)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:242 +#: ../../../docs/configuring-playbook-bot-draupnir.md:274 msgid "Enabling built-in protections" msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:244 -msgid "You can also **turn on various built-in [protections](https://the-draupnir-project.github.io/draupnir-documentation/protections)** like `JoinWaveShortCircuit` (\"If X amount of users join in Y time, set the room to invite-only\")." +#: ../../../docs/configuring-playbook-bot-draupnir.md:276 +msgid "You can also **turn on various built-in [protections](https://the-draupnir-project.github.io/draupnir-documentation/protections)** like `JoinWaveShortCircuitProtection` (\"If X amount of users join in Y time, set the room to invite-only\")." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:246 +#: ../../../docs/configuring-playbook-bot-draupnir.md:278 msgid "To **see which protections are available and which are enabled**, send a `!draupnir protections` command to the Management Room." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:248 -msgid "To **see the configuration options for a given protection**, send a `!draupnir protections show PROTECTION_NAME` (e.g. `!draupnir protections show JoinWaveShortCircuit`)." +#: ../../../docs/configuring-playbook-bot-draupnir.md:280 +msgid "To [**see the configuration options for a given protection**](https://the-draupnir-project.github.io/draupnir-documentation/protections/configuring-protections#displaying-the-protection-settings), send a `!draupnir protections show PROTECTION_NAME` (e.g. `!draupnir protections show JoinWaveShortCircuitProtection`)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:250 -msgid "To **set a specific option for a given protection**, send a command like this: `!draupnir config set PROTECTION_NAME.OPTION VALUE` (e.g. `!draupnir config set JoinWaveShortCircuit.timescaleMinutes 30`)." +#: ../../../docs/configuring-playbook-bot-draupnir.md:282 +msgid "To [**set a specific option for a given protection**](https://the-draupnir-project.github.io/draupnir-documentation/protections/configuring-protections#changing-protection-settings), send a command like this: `!draupnir protections config set PROTECTION_NAME OPTION VALUE` (e.g. `!draupnir protections config set JoinWaveShortCircuitProtection timescaleMinutes 30`)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:252 -msgid "To **enable a given protection**, send a command like this: `!draupnir enable PROTECTION_NAME` (e.g. `!draupnir enable JoinWaveShortCircuit`)." +#: ../../../docs/configuring-playbook-bot-draupnir.md:284 +msgid "To [**enable a given protection**](https://the-draupnir-project.github.io/draupnir-documentation/protections/block-invitations-on-server-protection#enabling-the-protection), send a command like this: `!draupnir protections enable PROTECTION_NAME` (e.g. `!draupnir protections enable JoinWaveShortCircuitProtection`)." msgstr "" -#: ../../../docs/configuring-playbook-bot-draupnir.md:254 -msgid "To **disable a given protection**, send a command like this: `!draupnir disable PROTECTION_NAME` (e.g. `!draupnir disable JoinWaveShortCircuit`)." +#: ../../../docs/configuring-playbook-bot-draupnir.md:286 +msgid "To **disable a given protection**, send a command like this: `!draupnir protections disable PROTECTION_NAME` (e.g. `!draupnir protections disable JoinWaveShortCircuitProtection`)." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-go-neb.pot b/i18n/translation-templates/docs/configuring-playbook-bot-go-neb.pot index 652820c16..f619c5313 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-go-neb.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-go-neb.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,138 +16,158 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-go-neb.md:1 +#: ../../../docs/configuring-playbook-bot-go-neb.md:11 msgid "Setting up Go-NEB (optional, unmaintained)" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:3 -msgid "**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." +#: ../../../docs/configuring-playbook-bot-go-neb.md:13 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:5 +#: ../../../docs/configuring-playbook-bot-go-neb.md:15 msgid "The playbook can install and configure [Go-NEB](https://github.com/matrix-org/go-neb) for you." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:7 +#: ../../../docs/configuring-playbook-bot-go-neb.md:17 msgid "Go-NEB is a Matrix bot written in Go. It is the successor to Matrix-NEB, the original Matrix bot written in Python." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:9 +#: ../../../docs/configuring-playbook-bot-go-neb.md:19 msgid "See the project's [documentation](https://github.com/matrix-org/go-neb/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:11 +#: ../../../docs/configuring-playbook-bot-go-neb.md:21 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:13 +#: ../../../docs/configuring-playbook-bot-go-neb.md:23 msgid "Register the bot account" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:15 +#: ../../../docs/configuring-playbook-bot-go-neb.md:25 msgid "The playbook does not automatically create users for you. You **need to register the bot user manually** before setting up the bot." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:17 +#: ../../../docs/configuring-playbook-bot-go-neb.md:27 msgid "Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:19 +#: ../../../docs/configuring-playbook-bot-go-neb.md:29 msgid "You can use the playbook to [register a new user](registering-users.md):" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:25 +#: ../../../docs/configuring-playbook-bot-go-neb.md:35 msgid "Obtain an access token" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:27 +#: ../../../docs/configuring-playbook-bot-go-neb.md:37 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:29 +#: ../../../docs/configuring-playbook-bot-go-neb.md:39 msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:32 +#: ../../../docs/configuring-playbook-bot-go-neb.md:42 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:34 +#: ../../../docs/configuring-playbook-bot-go-neb.md:44 msgid "By default, this playbook installs Go-NEB on the `goneb.` subdomain (`goneb.example.com`) and requires you to create a CNAME record for `goneb`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:36 +#: ../../../docs/configuring-playbook-bot-go-neb.md:46 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:38 +#: ../../../docs/configuring-playbook-bot-go-neb.md:48 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:40 +#: ../../../docs/configuring-playbook-bot-go-neb.md:50 msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `ACCESS_TOKEN_FOR_GONEB_HERE` and `ACCESS_TOKEN_FOR_ANOTHER_GONEB_HERE` with the ones created [above](#obtain-an-access-token)." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:204 +#: ../../../docs/configuring-playbook-bot-go-neb.md:214 msgid "Adjusting the Go-NEB URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:206 +#: ../../../docs/configuring-playbook-bot-go-neb.md:216 msgid "By tweaking the `matrix_bot_go_neb_hostname` and `matrix_bot_go_neb_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:208 +#: ../../../docs/configuring-playbook-bot-go-neb.md:218 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:219 +#: ../../../docs/configuring-playbook-bot-go-neb.md:229 msgid "After changing the domain, **you may need to adjust your DNS** records to point the Go-NEB domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:221 +#: ../../../docs/configuring-playbook-bot-go-neb.md:231 msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:223 -msgid "Installing" +#: ../../../docs/configuring-playbook-bot-go-neb.md:233 +msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:225 -msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" +#: ../../../docs/configuring-playbook-bot-go-neb.md:235 +msgid "There are some additional things you may wish to configure about the bot." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:232 -msgid "**Notes**:" +#: ../../../docs/configuring-playbook-bot-go-neb.md:237 +msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:234 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +#: ../../../docs/configuring-playbook-bot-go-neb.md:239 +msgid "`roles/custom/matrix-bot-go-neb/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:236 +#: ../../../docs/configuring-playbook-bot-go-neb.md:240 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-go-neb.md:242 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-go-neb.md:244 +msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-go-neb.md:251 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:238 -msgid "`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." +#: ../../../docs/configuring-playbook-bot-go-neb.md:253 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:240 +#: ../../../docs/configuring-playbook-bot-go-neb.md:255 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:242 +#: ../../../docs/configuring-playbook-bot-go-neb.md:257 msgid "To use the bot, invite it to any existing Matrix room (`/invite @bot.go-neb:example.com` where `example.com` is your base domain, not the `matrix.` domain). Make sure you are granted with the sufficient permission if you are not the room owner." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:244 +#: ../../../docs/configuring-playbook-bot-go-neb.md:259 msgid "Basic usage is like this: `!echo hi` or `!imgur puppies` or `!giphy matrix`" msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:246 +#: ../../../docs/configuring-playbook-bot-go-neb.md:261 msgid "If you enabled the github_cmd service, send `!github help` to the bot in the room to see the available commands." msgstr "" -#: ../../../docs/configuring-playbook-bot-go-neb.md:248 +#: ../../../docs/configuring-playbook-bot-go-neb.md:263 msgid "You can also refer to the upstream [Documentation](https://github.com/matrix-org/go-neb)." msgstr "" + +#: ../../../docs/configuring-playbook-bot-go-neb.md:265 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-go-neb.md:267 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-honoroit.pot b/i18n/translation-templates/docs/configuring-playbook-bot-honoroit.pot index e8b7a4e0e..bdcd6d1ba 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-honoroit.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-honoroit.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,106 +16,138 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-honoroit.md:1 +#: ../../../docs/configuring-playbook-bot-honoroit.md:9 msgid "Setting up Honoroit (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:3 +#: ../../../docs/configuring-playbook-bot-honoroit.md:11 msgid "The playbook can install and configure [Honoroit](https://github.com/etkecc/honoroit) for you." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:5 +#: ../../../docs/configuring-playbook-bot-honoroit.md:13 msgid "It's a bot you can use to setup **your own helpdesk on matrix**" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:7 +#: ../../../docs/configuring-playbook-bot-honoroit.md:15 msgid "See the project's [documentation](https://github.com/etkecc/honoroit/blob/main/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:9 +#: ../../../docs/configuring-playbook-bot-honoroit.md:17 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:11 +#: ../../../docs/configuring-playbook-bot-honoroit.md:19 msgid "By default, this playbook installs Honoroit on the `matrix.` subdomain, at the `/honoroit` path (https://matrix.example.com/honoroit). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:13 +#: ../../../docs/configuring-playbook-bot-honoroit.md:21 msgid "If you wish to adjust it, see the section [below](#adjusting-the-honoroit-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:15 +#: ../../../docs/configuring-playbook-bot-honoroit.md:23 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:17 +#: ../../../docs/configuring-playbook-bot-honoroit.md:25 msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:32 +#: ../../../docs/configuring-playbook-bot-honoroit.md:40 msgid "Adjusting the Honoroit URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:34 +#: ../../../docs/configuring-playbook-bot-honoroit.md:42 msgid "By tweaking the `matrix_bot_honoroit_hostname` and `matrix_bot_honoroit_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:36 +#: ../../../docs/configuring-playbook-bot-honoroit.md:44 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:44 +#: ../../../docs/configuring-playbook-bot-honoroit.md:52 msgid "If you've changed the default hostname, you may need to create a CNAME record for the Honoroit domain (`honoroit.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:46 +#: ../../../docs/configuring-playbook-bot-honoroit.md:54 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:48 +#: ../../../docs/configuring-playbook-bot-honoroit.md:56 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-honoroit.md:58 +msgid "There are some additional things you may wish to configure about the bot." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-honoroit.md:60 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-honoroit.md:62 +msgid "`roles/custom/matrix-bot-honoroit/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-honoroit.md:64 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:50 +#: ../../../docs/configuring-playbook-bot-honoroit.md:66 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:57 +#: ../../../docs/configuring-playbook-bot-honoroit.md:73 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:59 +#: ../../../docs/configuring-playbook-bot-honoroit.md:75 msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:61 +#: ../../../docs/configuring-playbook-bot-honoroit.md:77 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:63 +#: ../../../docs/configuring-playbook-bot-honoroit.md:79 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:65 +#: ../../../docs/configuring-playbook-bot-honoroit.md:81 msgid "If you change the bot password (`matrix_bot_honoroit_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_honoroit_password` to let the bot know its new password." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:67 +#: ../../../docs/configuring-playbook-bot-honoroit.md:83 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:69 +#: ../../../docs/configuring-playbook-bot-honoroit.md:85 msgid "To use the bot, invite it to the room you specified on your `vars.yml` file (`/invite @honoroit:example.com` where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:71 +#: ../../../docs/configuring-playbook-bot-honoroit.md:87 msgid "After the bot joins the room, any Matrix user can send a message to it to start a new thread in that room." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:73 +#: ../../../docs/configuring-playbook-bot-honoroit.md:89 msgid "Send `!ho help` to the bot in the room to see the available commands." msgstr "" -#: ../../../docs/configuring-playbook-bot-honoroit.md:75 +#: ../../../docs/configuring-playbook-bot-honoroit.md:91 msgid "You can also refer to the upstream [documentation](https://github.com/etkecc/honoroit#features)." msgstr "" + +#: ../../../docs/configuring-playbook-bot-honoroit.md:93 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-honoroit.md:95 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-honoroit.md:97 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-honoroit.md:99 +msgid "If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-matrix-registration-bot.pot b/i18n/translation-templates/docs/configuring-playbook-bot-matrix-registration-bot.pot index cd5df4bf3..3670682ea 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-matrix-registration-bot.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-matrix-registration-bot.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,82 +16,118 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:1 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:13 msgid "Setting up matrix-registration-bot (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:3 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:15 msgid "The playbook can install and configure [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) for you." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:5 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:17 msgid "The bot allows you to easily **create and manage registration tokens** aka. invitation codes. It can be used for an invitation-based server, where you invite someone by sending them a registration token (tokens look like this: `rbalQ0zkaDSRQCOp`). They can register as per normal but have to provide a valid registration token in the final step of the registration process." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:7 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:19 msgid "See the project's [documentation](https://github.com/moan0s/matrix-registration-bot/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:9 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:21 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:11 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:23 msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:30 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:46 msgid "The bot account will be created automatically." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:32 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:48 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:50 +msgid "There are some additional things you may wish to configure about the bot." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:52 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:54 +msgid "`roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:55 +msgid "`roles/custom/matrix-bot-matrix-registration-bot/templates/config.yaml.j2` for the bridge's default configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:57 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:34 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:59 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:41 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:66 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:43 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:68 msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:45 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:70 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:47 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:72 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:49 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:74 msgid "If you change the bot password (`matrix_bot_matrix_registration_bot_bot_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_matrix_registration_bot_bot_password` to let the bot know its new password." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:51 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:76 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:53 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:78 msgid "To use the bot, start a chat with `@bot.matrix-registration-bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:55 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:80 msgid "Send `help` to the bot to see the available commands." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:57 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:82 msgid "You can also refer to the upstream [Usage documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands)." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:59 -msgid "If you have any questions, or if you need help setting it up, read the [troublshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md) or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de)." +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:84 +msgid "If you have any questions, or if you need help setting it up, read the [troubleshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md) or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de)." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:61 +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:86 msgid "To clean the cache (session & encryption data) after you changed the bot's username, changed the login method from access_token to password etc… you can use:" msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:92 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:94 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:96 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:98 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-matrix-reminder-bot.pot b/i18n/translation-templates/docs/configuring-playbook-bot-matrix-reminder-bot.pot index 4ef1131c8..9c0e43ec2 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-matrix-reminder-bot.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-matrix-reminder-bot.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,78 +16,114 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:1 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:9 msgid "Setting up matrix-reminder-bot (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:3 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:11 msgid "The playbook can install and configure [matrix-reminder-bot](https://github.com/anoadragon453/matrix-reminder-bot) for you." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:5 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:13 msgid "It's a bot you can use to **schedule one-off & recurring reminders and alarms**." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:7 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:15 msgid "See the project's [documentation](https://github.com/anoadragon453/matrix-reminder-bot/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:9 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:17 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:11 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:19 msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:26 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:34 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:36 +msgid "There are some additional things you may wish to configure about the bot." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:38 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:40 +msgid "`roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:41 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:43 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:28 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:45 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:35 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:52 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:37 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:54 msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:39 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:56 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:41 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:58 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:43 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:60 msgid "If you change the bot password (`matrix_bot_matrix_reminder_bot_matrix_user_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_matrix_reminder_bot_matrix_user_password` to let the bot know its new password." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:45 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:62 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:47 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:64 msgid "To use the bot, start a chat with `@bot.matrix-reminder-bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:49 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:66 msgid "You can also add the bot to any existing Matrix room (`/invite @bot.matrix-reminder-bot:example.com`)." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:51 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:68 msgid "Basic usage is like this: `!remindme in 2 minutes; This is a test`" msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:53 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:70 msgid "Send `!help reminders` to the room to see the bot's help menu for additional commands." msgstr "" -#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:55 +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:72 msgid "You can also refer to the upstream [Usage documentation](https://github.com/anoadragon453/matrix-reminder-bot#usage)." msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:74 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:76 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:78 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-matrix-reminder-bot.md:80 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-maubot.pot b/i18n/translation-templates/docs/configuring-playbook-bot-maubot.pot index 67e480d6b..d3475cd15 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-maubot.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-maubot.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,147 +16,183 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-maubot.md:1 +#: ../../../docs/configuring-playbook-bot-maubot.md:12 msgid "Setting up maubot (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:3 +#: ../../../docs/configuring-playbook-bot-maubot.md:14 msgid "The playbook can install and configure [maubot](https://github.com/maubot/maubot) for you." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:5 +#: ../../../docs/configuring-playbook-bot-maubot.md:16 msgid "After setting up maubot, you can use the web management interface to make it do things. The default location of the management interface is `matrix.example.com/_matrix/maubot/`" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:7 +#: ../../../docs/configuring-playbook-bot-maubot.md:18 msgid "See the project's [documentation](https://docs.mau.fi/maubot/usage/basic.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:9 +#: ../../../docs/configuring-playbook-bot-maubot.md:20 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:11 +#: ../../../docs/configuring-playbook-bot-maubot.md:22 msgid "By default, this playbook installs maubot on the `matrix.` subdomain, at the `/_matrix/maubot/` path (https://matrix.example.com/_matrix/maubot/). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:13 +#: ../../../docs/configuring-playbook-bot-maubot.md:24 msgid "If you wish to adjust it, see the section [below](#adjusting-the-maubot-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:15 +#: ../../../docs/configuring-playbook-bot-maubot.md:26 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:17 +#: ../../../docs/configuring-playbook-bot-maubot.md:28 msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:32 +#: ../../../docs/configuring-playbook-bot-maubot.md:43 msgid "You can add multiple admins. The admin accounts are only used to access the maubot administration interface." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:34 +#: ../../../docs/configuring-playbook-bot-maubot.md:45 msgid "Adjusting the maubot URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:36 +#: ../../../docs/configuring-playbook-bot-maubot.md:47 msgid "By tweaking the `matrix_bot_maubot_hostname` and `matrix_bot_maubot_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:38 -#: ../../../docs/configuring-playbook-bot-maubot.md:56 +#: ../../../docs/configuring-playbook-bot-maubot.md:49 +#: ../../../docs/configuring-playbook-bot-maubot.md:76 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:46 +#: ../../../docs/configuring-playbook-bot-maubot.md:57 msgid "If you've changed the default hostname, you may need to create a CNAME record for the maubot domain (`maubot.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:48 +#: ../../../docs/configuring-playbook-bot-maubot.md:59 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:50 +#: ../../../docs/configuring-playbook-bot-maubot.md:61 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-maubot.md:63 +msgid "There are some additional things you may wish to configure about the bot." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-maubot.md:65 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-maubot.md:67 +msgid "`roles/custom/matrix-bot-maubot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-maubot.md:68 +msgid "`roles/custom/matrix-bot-maubot/templates/config.yaml.j2` for the bot's default configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-maubot.md:70 msgid "Customizing the maubot container image" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:52 +#: ../../../docs/configuring-playbook-bot-maubot.md:72 msgid "Certain [maubot plugins](https://plugins.mau.bot/) require additional dependencies to be installed." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:54 +#: ../../../docs/configuring-playbook-bot-maubot.md:74 msgid "You can customize the default maubot container image and install your own dependencies." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:67 +#: ../../../docs/configuring-playbook-bot-maubot.md:87 msgid "Consult the [Dockerfile reference](https://docs.docker.com/reference/dockerfile/) for more information about the syntax." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:69 +#: ../../../docs/configuring-playbook-bot-maubot.md:89 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:71 +#: ../../../docs/configuring-playbook-bot-maubot.md:91 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:78 +#: ../../../docs/configuring-playbook-bot-maubot.md:98 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:80 +#: ../../../docs/configuring-playbook-bot-maubot.md:100 msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:82 +#: ../../../docs/configuring-playbook-bot-maubot.md:102 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:84 +#: ../../../docs/configuring-playbook-bot-maubot.md:104 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:86 +#: ../../../docs/configuring-playbook-bot-maubot.md:106 msgid "If you change the bot password (`matrix_bot_maubot_initial_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_maubot_initial_password` to let the bot know its new password." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:88 +#: ../../../docs/configuring-playbook-bot-maubot.md:108 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:90 +#: ../../../docs/configuring-playbook-bot-maubot.md:110 msgid "By default, you can visit `matrix.example.com/_matrix/maubot/` to manage your available plugins, clients and instances." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:92 +#: ../../../docs/configuring-playbook-bot-maubot.md:112 msgid "You should start in the following order" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:93 +#: ../../../docs/configuring-playbook-bot-maubot.md:113 msgid "**Create one or more clients**: A client is a Matrix account which the bot will use to message. By default, the playbook creates a `bot.maubot` account (as per the configuration above). You only need to [obtain an access token](#obtaining-an-access-token) for it" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:94 +#: ../../../docs/configuring-playbook-bot-maubot.md:114 msgid "**Upload some Plugins**: Plugins can be obtained from [here](https://github.com/maubot/maubot#plugins) or any other source." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:95 +#: ../../../docs/configuring-playbook-bot-maubot.md:115 msgid "**Create an instance**: An instance is the actual bot. You have to specify a client which the bot instance will use and the plugin (how the bot will behave)" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:97 +#: ../../../docs/configuring-playbook-bot-maubot.md:117 msgid "Obtain an access token" msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:99 +#: ../../../docs/configuring-playbook-bot-maubot.md:119 msgid "This can be done via `mbc login` then `mbc auth` (see the [maubot documentation](https://docs.mau.fi/maubot/usage/cli/auth.html)). To run these commands, you'll first need to `exec` into the maubot container with `docker exec -it matrix-bot-maubot sh`." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:101 +#: ../../../docs/configuring-playbook-bot-maubot.md:121 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-maubot.md:103 +#: ../../../docs/configuring-playbook-bot-maubot.md:123 msgid "[!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." msgstr "" + +#: ../../../docs/configuring-playbook-bot-maubot.md:126 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-maubot.md:128 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-maubot.md:130 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-maubot.md:132 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bot-mjolnir.pot b/i18n/translation-templates/docs/configuring-playbook-bot-mjolnir.pot index de2d13482..07bc87438 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bot-mjolnir.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bot-mjolnir.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,252 +16,264 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:1 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:12 msgid "Setting up Mjolnir (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:3 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:14 msgid "The playbook can install and configure the [Mjolnir](https://github.com/matrix-org/mjolnir) moderation bot for you." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:5 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:16 msgid "See the project's [documentation](https://github.com/matrix-org/mjolnir/blob/main/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:7 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:18 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:9 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:20 msgid "Register the bot account" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:11 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:22 msgid "The playbook does not automatically create users for you. You **need to register the bot user manually** before setting up the bot." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:13 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:24 msgid "Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:15 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:26 msgid "You can use the playbook to [register a new user](registering-users.md):" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:21 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:32 msgid "If you would like Mjolnir to be able to deactivate users, move aliases, shutdown rooms, etc then it must be a server admin so you need to change `admin=no` to `admin=yes` in the command above." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:23 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:34 msgid "Obtain an access token" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:25 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:36 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:27 -#: ../../../docs/configuring-playbook-bot-mjolnir.md:52 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:38 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:63 msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:30 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:41 msgid "Make sure the account is free from rate limiting" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:32 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:43 msgid "If your homeserver's implementation is Synapse, you will need to prevent it from rate limiting the bot's account. **This is a required step. If you do not configure it, Mjolnir will crash.**" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:34 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:45 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:36 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:47 msgid "**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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:38 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:49 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:40 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:51 msgid "Add the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:42 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:53 msgid "To expose the APIs publicly, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:48 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:59 msgid "Obtain an access token for admin account" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:50 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:61 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:55 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:66 msgid "Run the `curl` command" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:57 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:68 msgid "To disable rate limiting, run the following command on systems that ship curl. Before running it, make sure to replace:" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:59 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:70 msgid "`ADMIN_ACCESS_TOKEN_HERE` with the access token of the admin account" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:60 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:71 msgid "`example.com` with your base domain" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:61 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:72 msgid "`@bot.mjolnir:example.com` with the MXID of your Mjolnir bot user" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:67 -#: ../../../docs/configuring-playbook-bot-mjolnir.md:184 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:78 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:195 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:68 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:79 msgid "This does not work on outdated Windows 10 as curl is not available there." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:69 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:80 msgid "Even if the APIs are not exposed to the internet, you should still be able to run the command on the homeserver locally." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:71 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:82 msgid "Create a management room" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:73 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:84 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:75 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:86 msgid "[!WARNING] Anyone in this room can control the bot so it is important that you only invite trusted users to this room." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:78 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:89 msgid "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))." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:80 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:91 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:82 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:93 msgid "Finally invite the `@bot.mjolnir:example.com` account you created earlier into the room." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:84 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:95 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:86 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:97 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:95 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:106 msgid "End-to-End Encryption support" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:97 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:108 msgid "Decide whether you want Mjolnir to be capable of operating in end-to-end encrypted (E2EE) rooms. This includes the management room and the moderated rooms." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:99 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:110 msgid "To support E2EE, Mjolnir needs to [use Pantalaimon](configuring-playbook-pantalaimon.md)." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:101 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:112 msgid "Configuration with E2EE support" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:103 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:114 msgid "When using Pantalaimon, Mjolnir will log in to its bot account itself through Pantalaimon, so configure its username and password." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:105 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:116 msgid "Add the following configuration to your `vars.yml` file (adapt to your needs):" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:119 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:130 msgid "The playbook's `group_vars` will configure other required settings. If using this role separately without the playbook, you also need to configure the two URLs that Mjolnir uses to reach the homeserver, one through Pantalaimon and one \"raw\". This example is taken from the playbook's `group_vars`:" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:131 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:142 msgid "Configuration without E2EE support" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:133 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:144 msgid "When NOT using Pantalaimon, Mjolnir does not log in by itself and you must give it an access token for its bot account." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:135 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:146 msgid "Add the following configuration to your `vars.yml` file. Make sure to replace `ACCESS_TOKEN_HERE` with the one created [above](#obtain-an-access-token)." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:141 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:152 msgid "Adding Mjolnir synapse antispam module (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:143 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:154 msgid "To enable Mjolnir synapse antispam module, add the following configuration to your `vars.yml` file (adapt to your needs):" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:153 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:164 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:155 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:166 msgid "There are some additional things you may wish to configure about the bot." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:157 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:168 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:159 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:170 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:161 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:172 msgid "For example, to change Mjolnir's `recordIgnoredInvites` option to `true`, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:175 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:186 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:177 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:188 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:186 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bot-mjolnir.md:188 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:197 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:190 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:199 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:192 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:201 msgid "If you change the Pantalaimon's password (`matrix_bot_mjolnir_pantalaimon_password` in your `vars.yml` file) subsequently, its credentials on the homeserver won't be updated automatically. If you'd like to change the password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_mjolnir_pantalaimon_password` to let Pantalaimon know its new password." msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:194 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:203 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bot-mjolnir.md:196 +#: ../../../docs/configuring-playbook-bot-mjolnir.md:205 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-bot-mjolnir.md:207 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-mjolnir.md:209 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bot-mjolnir.md:211 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bot-mjolnir.md:213 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-discord.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-discord.pot index 256400515..22442b987 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-discord.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-discord.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,151 +16,179 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:1 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:10 msgid "Setting up Appservice Discord bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:3 -msgid "**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." +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:12 +msgid "**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge supported by the playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:4 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:13 msgid "For using as a Bot we are recommend the Appservice Discord bridge (the one being discussed here), because it supports plumbing." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:5 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:14 msgid "For personal use 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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:7 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:16 msgid "The playbook can install and configure [matrix-appservice-discord](https://github.com/matrix-org/matrix-appservice-discord) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:9 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:18 msgid "See the project's [documentation](https://github.com/matrix-org/matrix-appservice-discord/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:11 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:20 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:13 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:22 msgid "Create a Discord Application [here](https://discordapp.com/developers/applications). Then retrieve Client ID, and create a bot from the Bot tab and retrieve the Bot token." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:15 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:24 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:17 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:26 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:31 -msgid "Installing" +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:40 +msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:33 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:42 +msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:40 -msgid "**Notes**:" +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:44 +msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:42 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:46 +msgid "`roles/custom/matrix-bridge-appservice-discord/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:44 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:47 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:49 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:51 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:58 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:46 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:60 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:48 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:63 msgid "Self-Service Bridging (Manual)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:50 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:65 msgid "Self-service bridging allows you to bridge specific and existing Matrix rooms to specific Discord rooms. To enable it, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:56 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:71 msgid "**Note**: If self-service bridging is not enabled, `!discord help` commands will return no results." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:58 -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:82 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:73 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:97 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:60 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:75 msgid "Once self-service is enabled, start a chat with `@_discord_bot:example.com` and say `!discord help bridge`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:62 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:77 msgid "Then, follow the instructions in the help output message." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:64 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:79 msgid "If the bot is not already in the Discord server, follow the provided invite link. This may require you to be a administrator of the Discord server." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:66 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:81 msgid "On the Discord side, send `!matrix help` to the bot to see the available commands for managing the bridge and Matrix users." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:68 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:83 msgid "**Note**: Encrypted Matrix rooms are not supported as of writing." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:70 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:85 msgid "Portal Bridging (Automatic)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:72 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:87 msgid "Through portal bridging, Matrix rooms will automatically be created by the bot and bridged to the relevant Discord room. This is done by simply joining a room with a specific name pattern (`#_discord__`)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:74 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:89 msgid "All Matrix rooms created this way are **listed publicly** by default, and you will not have admin permissions to change this. To get more control, [make yourself a room Administrator](#getting-administrator-access-in-a-portal-bridged-room). You can then unlist the room from the directory and change the join rules." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:76 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:91 msgid "To disable portal bridging, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:84 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:99 msgid "To get started with Portal Bridging:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:86 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:101 msgid "To invite the bot to Discord, retrieve the invite link from the `{{ matrix_appservice_discord_config_path }}/invite_link` file on the server (this defaults to `/matrix/appservice-discord/config/invite_link`). You need to peek at the file on the server via SSH, etc., because it's not available via HTTP(S)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:87 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:102 msgid "Room addresses follow this syntax: `#_discord__`. You can easily find the guild and channel IDs by logging into Discord in a browser and opening the desired channel. The URL will have this format: `discord.com/channels//`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:88 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:103 msgid "Once you have figured out the appropriate room address, you can join by doing `/join #_discord__` in your Matrix client." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:90 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:105 msgid "Getting Administrator access in a portal bridged room" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:92 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:107 msgid "By default, you won't have Administrator access in rooms created by the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:94 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:109 msgid "To adjust room access privileges or do various other things (change the room name subsequently, etc.), you'd wish to become an Administrator." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:96 +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:111 msgid "There's the Discord bridge's guide for [setting privileges on bridge managed rooms](https://github.com/matrix-org/matrix-appservice-discord/blob/master/docs/howto.md#set-privileges-on-bridge-managed-rooms). To do the same with our container setup, run the following command on the server:" msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:118 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:120 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:122 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:124 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-irc.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-irc.pot index 557a6fae8..34588d016 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-irc.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-irc.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,58 +16,86 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:1 +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:10 msgid "Setting up Appservice IRC bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:3 +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:12 msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:5 +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:14 msgid "The playbook can install and configure the [matrix-appservice-irc](https://github.com/matrix-org/matrix-appservice-irc) bridge for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:7 +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:16 msgid "See the project's [documentation](https://github.com/matrix-org/matrix-appservice-irc/blob/master/HOWTO.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:9 +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:18 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:11 +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:20 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:63 -msgid "Installing" +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:72 +msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:65 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:74 +msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:72 -msgid "**Notes**:" +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:76 +msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:74 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:78 +msgid "`roles/custom/matrix-bridge-appservice-irc/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:76 +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:79 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:81 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:83 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:90 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:78 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:92 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:80 +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:94 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:82 +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:96 msgid "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)." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:98 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:100 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:102 +msgid "Configuring for logging" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:104 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-kakaotalk.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-kakaotalk.pot index 02faa22c0..4fc51ddc4 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-kakaotalk.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-kakaotalk.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,102 +16,110 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:1 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:10 msgid "Setting up Appservice Kakaotalk bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:3 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:12 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:5 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:14 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:7 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:16 msgid "[!WARNING] There have been recent reports (~2022-09-16) that **using this bridge may get your account banned**." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:10 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:19 msgid "Prerequisite (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:12 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:21 msgid "Enable Shared Secret Auth" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:14 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:23 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:16 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:25 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:18 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:27 msgid "**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:20 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:29 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:22 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:31 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:28 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:37 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:30 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:39 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:32 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:41 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:34 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:43 msgid "`roles/custom/matrix-bridge-appservice-kakaotalk/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:35 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:44 msgid "`roles/custom/matrix-bridge-appservice-kakaotalk/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_kakaotalk_configuration_extension_yaml` variable" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:37 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:39 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - #: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:46 -msgid "**Notes**:" +msgid "Installing" msgstr "" #: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:48 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:50 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:55 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:52 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:57 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:54 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:59 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:56 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:61 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:58 +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:63 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:65 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:67 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:69 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:71 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-slack.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-slack.pot index 39bbbd431..04d08e82a 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-slack.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-slack.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,247 +16,242 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:1 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:12 msgid "Setting up Appservice Slack bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:3 -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:89 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:14 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:4 -msgid "Bridging to [Slack](https://slack.com) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridges supported by the playbook." +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:15 +msgid "Bridging to [Slack](https://slack.com) can also happen via the [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridge supported by the playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:5 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:16 msgid "Currently (as of November, 2024) **this component is not available for new installation unless you have already created a classic Slack application** (which the bridge makes use of in order to enable bridging between Slack and Matrix), because the creation of classic Slack applications has been discontinued since June 4 2024. The author of the bridge claims [here](https://github.com/matrix-org/matrix-appservice-slack/issues/789#issuecomment-2172947787) that he plans to support the modern Slack application and until then \"the best (and only) option for new installations is to use the webhook bridging\"." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:7 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:18 msgid "The playbook can install and configure [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:9 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:20 msgid "See the project's [documentation](https://github.com/matrix-org/matrix-appservice-slack/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:11 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:22 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:13 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:24 msgid "Create a Classic Slack App" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:15 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:26 msgid "First, you need to create a Classic Slack App [here](https://api.slack.com/apps?new_classic_app=1)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:17 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:28 msgid "Name the app \"matrixbot\" (or anything else you'll remember). Select the team/workspace this app will belong to. Click on bot users and add a new bot user. We will use this account to bridge the the rooms." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:19 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:30 msgid "Then, click on Event Subscriptions and enable them and use the request url: `https://matrix.example.com/appservice-slack`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:21 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:32 msgid "Add the following events as `Bot User Events` and save:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:23 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:34 msgid "team_domain_change" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:24 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:35 msgid "message.channels" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:25 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:36 msgid "message.groups (if you want to bridge private channels)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:26 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:37 msgid "reaction_added" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:27 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:38 msgid "reaction_removed" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:29 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:40 msgid "Next, click on \"OAuth & Permissions\" and add the following scopes:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:31 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:42 msgid "chat:write:bot" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:32 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:43 msgid "users:read" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:33 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:44 msgid "reactions:write" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:34 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:45 msgid "files:write:user (if you want to bridge files)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:36 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:47 msgid "**Note**: In order to make Slack files visible to Matrix users, this bridge will make Slack files visible to anyone with the url (including files in private channels). This is different than the current behavior in Slack, which only allows authenticated access to media posted in private channels. See MSC701 for details." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:38 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:49 msgid "Click on \"Install App\" and \"Install App to Workspace\". Note the access tokens shown. You will need the Bot User OAuth Access Token and if you want to bridge files, the OAuth Access Token whenever you link a room." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:40 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:51 msgid "Create an administration control room on Matrix" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:42 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:53 msgid "Create a new Matrix room to act as the administration control room." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:44 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:55 msgid "Note its internal room ID. This can be done in Element Web by sending a message, opening the options for that message and choosing \"view source\". The room ID will be displayed near the top." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:46 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:57 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:48 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:59 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:64 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:75 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:66 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:77 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:68 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:79 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:70 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:81 msgid "`roles/custom/matrix-bridge-appservice-slack/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:71 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:82 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:73 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:84 msgid "For example, to change the bot's username from `slackbot`, add the following configuration to your `vars.yml` file. Replace `examplebot` with your own." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:80 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:91 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:82 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:93 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:91 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:93 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:100 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:95 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:102 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:97 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:104 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:99 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:106 msgid "To use the bridge, you need to send `/invite @slackbot:example.com` to invite the bridge bot user into the admin room." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:101 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:108 msgid "If Team Sync is not enabled, for each channel you would like to bridge, perform the following steps:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:103 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:110 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:104 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:111 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:105 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:112 msgid "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/`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:106 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:113 msgid "Issue a link command in the administration control room with these collected values as arguments:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:108 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:115 msgid "with file bridging:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:114 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:121 msgid "without file bridging:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:120 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:127 msgid "These arguments can be shortened to single-letter forms:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:126 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:133 msgid "Unlinking" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:128 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:135 msgid "Channels can be unlinked again by sending this:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:134 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:141 msgid "Unlinking doesn't only disconnect the bridge, but also makes the slackbot leave the bridged Matrix room. So in case you want to re-link later, don't forget to re-invite the slackbot into this room again." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:136 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:143 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:138 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:145 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:140 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:147 msgid "Linking: \"Room is now pending-name\"" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:142 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:149 msgid "This typically means that you haven't used the correct Slack channel ID. Unlink the room and recheck 'Determine the \"channel ID\"' from above." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:144 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:151 msgid "Messages work from Matrix to Slack, but not the other way around" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:146 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:153 msgid "Check the logs, and if you find the message like below, unlink your room, reinvite the bot and re-link it again." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:148 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:155 msgid "`WARN SlackEventHandler Ignoring message from unrecognised Slack channel ID : %s (%s) `" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:150 +#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:157 msgid "This may particularly hit you, if you tried to unsuccessfully link your room multiple times without unlinking it after each failed attempt." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-webhooks.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-webhooks.pot index 1661603f5..9a8eace41 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-webhooks.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-appservice-webhooks.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,94 +16,122 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:1 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:12 msgid "Setting up Appservice Webhooks bridging (optional, deprecated)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:3 -msgid "**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." +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:14 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:5 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:16 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:7 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:18 msgid "See the project's [documentation](https://github.com/turt2live/matrix-appservice-webhooks/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:9 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:20 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:11 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:22 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:27 -msgid "Installing" +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:35 +msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:29 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:37 +msgid "There are some additional things you may wish to configure about the bridge." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:39 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:41 +msgid "`roles/custom/matrix-bridge-appservice-webhooks/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:42 +msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:36 -msgid "**Notes**:" +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:44 +msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:38 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:46 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:40 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:53 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:42 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:55 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:44 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:57 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:46 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:59 msgid "To use the bridge, you need to invite the bridge bot user to your room in either way." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:48 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:61 msgid "Send `/invite @_webhook:example.com` (**Note**: Make sure you have administration permissions in your room)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:49 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:62 msgid "Add the bridge bot to a private channel (personal channels imply you being an administrator)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:51 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:64 msgid "You then need to send a message to the bridge bot to receive a private message including the webhook link:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:57 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:70 msgid "The JSON body for posting messages will have to look like this:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:68 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:81 msgid "You can test this via curl like so:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:81 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:94 msgid "Setting Webhooks with Dimension integration manager" msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:83 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:96 msgid "If you're using the [Dimension integration manager](configuring-playbook-dimension.md), you can configure the Webhooks bridge with it." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:85 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:98 msgid "To configure it, open the Dimension integration manager, and go to \"Settings\" and \"Bridges\", then select edit action for \"Webhook Bridge\"." msgstr "" -#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:87 +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:100 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:102 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:104 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:106 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-appservice-webhooks.md:108 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-beeper-linkedin.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-beeper-linkedin.pot index 7b19a5798..f4f1cc1a2 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-beeper-linkedin.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-beeper-linkedin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,106 +16,110 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:1 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:11 msgid "Setting up Beeper Linkedin bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:3 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:13 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:5 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:15 msgid "See the project's [documentation](https://github.com/beeper/linkedin/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:7 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:17 msgid "Prerequisite" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:9 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:19 msgid "Enable Appservice Double Puppet or Shared Secret Auth (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:11 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:21 msgid "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) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:13 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:23 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:15 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:25 msgid "**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:17 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:27 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:19 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:29 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:25 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:35 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:27 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:37 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:29 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:39 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:31 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:41 msgid "**Note**: when following the guide to configure the bridge, make sure to replace `_mautrix_SERVICENAME_` in the variable names with `_beeper_linkedin_`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:33 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:43 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:35 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:45 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:42 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:44 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:46 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:52 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:48 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:54 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:50 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:56 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:52 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:58 msgid "To use the bridge, you need to start a chat with `@linkedinbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:54 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:60 msgid "You then need to send `login YOUR_LINKEDIN_EMAIL_ADDRESS` to the bridge bot to enable bridging for your LinkedIn account." msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:56 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:62 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:58 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:64 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:66 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:68 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:74 msgid "Bridge asking for 2FA even if you don't have 2FA enabled" msgstr "" -#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:60 +#: ../../../docs/configuring-playbook-bridge-beeper-linkedin.md:76 msgid "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." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-go-skype-bridge.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-go-skype-bridge.pot index 155e05eed..fbed210a8 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-go-skype-bridge.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-go-skype-bridge.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,90 +16,18 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:1 -msgid "Setting up Go Skype Bridge bridging (optional)" +#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:12 +msgid "Setting up Go Skype Bridge bridging (optional, removed)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:3 -msgid "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." +#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:14 +msgid "🪦 The playbook used to be able to install and configure [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge), but no longer includes this component, as Skype has been discontinued since May 2025." msgstr "" -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:5 -msgid "See the project's [documentation](https://github.com/kelaresg/go-skype-bridge/blob/master/README.md) to learn what it does and why it might be useful to you." +#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:16 +msgid "Uninstalling the bridge manually" msgstr "" -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:7 -msgid "Prerequisite (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:9 -msgid "Enable Shared Secret Auth" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:11 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:13 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:15 -msgid "**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:17 -msgid "Adjusting the playbook configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:19 -msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:25 -msgid "Extending the configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:27 -msgid "There are some additional things you may wish to configure about the bridge." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:29 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:31 -msgid "**Note**: when following the guide to configure the bridge, make sure to replace `_mautrix_SERVICENAME_` in the variable names with `_go_skype_bridge_`." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:33 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:35 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:42 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:44 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:46 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:48 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:50 -msgid "Usage" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:52 -msgid "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)." +#: ../../../docs/configuring-playbook-bridge-go-skype-bridge.md:18 +msgid "If you still have the Go Skype 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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-heisenbridge.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-heisenbridge.pot index 191ce175c..ff9a45bb5 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-heisenbridge.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-heisenbridge.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,102 +16,118 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:1 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:9 msgid "Setting up Heisenbridge bouncer-style IRC bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:3 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:11 msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:5 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:13 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:7 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:15 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:9 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:17 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:11 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:19 msgid "By default, this playbook installs Heisenbridge on the `matrix.` subdomain, at the `/heisenbridge` path (https://matrix.example.com/heisenbridge). It would handle media requests there (see the [release notes for Heisenbridge v1.15.0](https://github.com/hifi/heisenbridge/releases/tag/v1.15.0)). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:13 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:21 msgid "If you wish to adjust it, see the section [below](#adjusting-the-heisenbridge-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:15 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:23 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:17 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:25 msgid "To enable Heisenbridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:30 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:38 msgid "Adjusting the Heisenbridge URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:32 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:40 msgid "By tweaking the `matrix_heisenbridge_hostname` and `matrix_heisenbridge_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:34 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:42 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:42 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:50 msgid "If you've changed the default hostname, you may need to create a CNAME record for the Heisenbridge domain (`heisenbridge.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:44 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:52 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:46 -msgid "Installing" +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:54 +msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:48 -msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:56 +msgid "There are some additional things you may wish to configure about the bridge." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:58 +msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:55 -msgid "**Notes**:" +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:60 +msgid "`roles/custom/matrix-bridge-heisenbridge/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:57 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:62 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:64 +msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:59 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:71 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:61 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:73 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:63 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:75 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:65 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:77 msgid "To use the bridge, you need to start a chat with `@heisenbridge:example.com` (where `example.com` is your base domain, not the `matrix.` domain). If the bridge ignores you and a DM is not accepted then the owner setting may be wrong." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:67 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:79 msgid "Help is available for all commands with the `-h` switch." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:69 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:81 msgid "You can also learn the basics by watching [this demonstration video](https://www.youtube.com/watch?v=nQk1Bp4tk4I)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:71 +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:83 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:85 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:87 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-hookshot.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-hookshot.pot index 56b7da8a3..ca450b2c1 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-hookshot.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-hookshot.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,139 +16,139 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:1 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:11 msgid "Setting up matrix-hookshot (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:3 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:13 msgid "The playbook can install and configure [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:5 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:15 msgid "Hookshot can bridge [Webhooks](https://en.wikipedia.org/wiki/Webhook) from software project management services such as GitHub, GitLab, Jira, and Figma, as well as generic webhooks." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:7 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:17 msgid "See the project's [documentation](https://matrix-org.github.io/matrix-hookshot/latest/hookshot.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:9 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:19 msgid "**Note**: the playbook also supports [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md), which however was deprecated by its author." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:11 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:21 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:13 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:23 msgid "Download GitHub app private key (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:15 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:25 msgid "If you're setting up the GitHub bridge, you need to create your GitHub app, and generate a private key file of it." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:17 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:27 msgid "You need to download the private key file, if you will install the file manually or with the `aux` role. For details, see [the section below](#manage-github-private-key-with-aux-role)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:19 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:29 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:21 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:31 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `GITHUB_PRIVATE_KEY_HERE` with the one created [above](#download-github-app-private-key)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:35 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:45 msgid "For each of the services (GitHub, GitLab, Jira, Figma, and generic webhooks) fill in the respective variables `matrix_hookshot_service_*` listed in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml) as required." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:37 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:47 msgid "Take special note of the `matrix_hookshot_*_enabled` variables. Services that need no further configuration are enabled by default (GitLab and generic webhooks), while you must first add the required configuration and enable the others (GitHub, Jira, and Figma)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:39 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:49 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:41 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:51 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:43 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:53 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:45 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:55 msgid "`roles/custom/matrix-bridge-hookshot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:46 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:56 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:48 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:58 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:50 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:60 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:52 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:62 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:59 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:69 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-service hookshot` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:61 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:71 msgid "`just install-service hookshot` 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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:63 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:73 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:65 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:75 msgid "To use the bridge, you need to create a room and invite the Hookshot bot (`@hookshot:example.com`) to it." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:67 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:77 msgid "Make sure the bot is able to send state events (usually the Moderator power level in clients)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:69 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:79 msgid "Send `!hookshot help` to the bot to see the available commands." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:71 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:81 msgid "Refer to [Hookshot's documentation](https://matrix-org.github.io/matrix-hookshot/latest/usage.html) for more details about using the bridge's various features." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:73 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:83 msgid "💡 **Note**: the different listeners are bound to certain paths which might differ from those assumed by the hookshot documentation. See [URLs for bridges setup](#urls-for-bridges-setup) below." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:75 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:85 msgid "Reset crypto store" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:77 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:87 msgid "Should the crypto store be corrupted, you can reset it by executing this Ansible playbook with the tag `reset-hookshot-encryption` added:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:83 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:93 msgid "More setup documentation" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:85 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:95 msgid "URLs for bridges setup" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:87 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:97 msgid "Unless indicated otherwise, the following endpoints are reachable on your `matrix.` subdomain (if the feature is enabled)." msgstr "" @@ -248,22 +248,6 @@ msgstr "" msgid "Figma" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:0 -msgid "provisioning" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-hookshot.md:0 -msgid "`/hookshot/v1/`" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-hookshot.md:0 -msgid "`matrix_hookshot_provisioning_endpoint`" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-hookshot.md:0 -msgid "Dimension [provisioning](#provisioning-api)" -msgstr "" - #: ../../../docs/configuring-playbook-bridge-hookshot.md:0 msgid "appservice" msgstr "" @@ -296,114 +280,106 @@ msgstr "" msgid "Widgets" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:0 -msgid "metrics" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-hookshot.md:0 -msgid "`/metrics/hookshot`" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-hookshot.md:0 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-hookshot.md:0 -msgid "Prometheus" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-hookshot.md:101 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:109 msgid "Also see the various `matrix_hookshot_container_labels_*` variables in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml), which expose URLs publicly." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:103 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:111 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:105 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:113 msgid "Manage GitHub Private Key with aux role" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:107 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:115 msgid "The GitHub bridge requires you to install a private key file. This can be done in multiple ways:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:109 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:117 msgid "copy the *contents* of the downloaded file and set the variable `matrix_hookshot_github_private_key` to the contents (see example in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml))." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:110 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:118 msgid "somehow copy the file to the path `{{ matrix_hookshot_base_path }}/{{ matrix_hookshot_github_private_key_file }}` (default: `/matrix/hookshot/private-key.pem`) on the server manually." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:111 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:119 msgid "use the [`aux` role](https://github.com/mother-of-all-self-hosting/ansible-role-aux) to copy the file from an arbitrary path on your ansible client to the correct path on the server." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:113 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:121 msgid "To use the `aux` role, make sure the `matrix_hookshot_github_private_key` variable is empty. Then add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:124 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:132 msgid "For more information, see the documentation in the [default configuration of the aux role](https://github.com/mother-of-all-self-hosting/ansible-role-aux/blob/main/defaults/main.yml)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:126 -msgid "Provisioning API" +#: ../../../docs/configuring-playbook-bridge-hookshot.md:134 +msgid "Collision with matrix-appservice-webhooks" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-hookshot.md:136 +msgid "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_'`)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:128 -msgid "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`." +#: ../../../docs/configuring-playbook-bridge-hookshot.md:138 +msgid "Enable metrics" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:130 -msgid "Metrics" +#: ../../../docs/configuring-playbook-bridge-hookshot.md:140 +msgid "The playbook can enable and configure the metrics of the service for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:132 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:142 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:134 -msgid "To explicitly enable metrics, use `matrix_hookshot_metrics_enabled: true`. This only exposes metrics over the container network, however." +#: ../../../docs/configuring-playbook-bridge-hookshot.md:144 +msgid "To enable the metrics, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:136 -msgid "**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:" +#: ../../../docs/configuring-playbook-bridge-hookshot.md:151 +msgid "**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:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:138 -msgid "either enabling metrics exposure for Hookshot via `matrix_hookshot_metrics_proxying_enabled: true`" +#: ../../../docs/configuring-playbook-bridge-hookshot.md:157 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:139 -msgid "or enabling metrics exposure for all services via `matrix_metrics_exposure_enabled: true`" +#: ../../../docs/configuring-playbook-bridge-hookshot.md:164 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:141 -msgid "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." +#: ../../../docs/configuring-playbook-bridge-hookshot.md:166 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:143 -msgid "Collision with matrix-appservice-webhooks" +#: ../../../docs/configuring-playbook-bridge-hookshot.md:168 +msgid "Enable Grafana (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:145 -msgid "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_'`)." +#: ../../../docs/configuring-playbook-bridge-hookshot.md:170 +msgid "Probably you wish to enable Grafana along with Prometheus for generating graphs of the metrics." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-hookshot.md:172 +msgid "To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:147 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:174 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:149 -msgid "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-bridge-hookshot`." +#: ../../../docs/configuring-playbook-bridge-hookshot.md:176 +msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:151 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:178 msgid "Increase logging verbosity" msgstr "" -#: ../../../docs/configuring-playbook-bridge-hookshot.md:153 +#: ../../../docs/configuring-playbook-bridge-hookshot.md:180 msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-matrix-bridge-sms.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-matrix-bridge-sms.pot index 0e4992bdf..436461cd6 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-matrix-bridge-sms.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-matrix-bridge-sms.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,62 +16,78 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:1 +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:9 msgid "Setting up Matrix SMS bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:3 +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:11 msgid "The playbook can install and configure [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:5 +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:13 msgid "See the project's [documentation](https://github.com/benkuly/matrix-sms-bridge/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:7 +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:15 msgid "Prerequisite" msgstr "" -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:9 +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:17 msgid "The bridge uses [android-sms-gateway-server](https://github.com/RebekkaMa/android-sms-gateway-server). You need to configure it first." msgstr "" -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:11 +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:19 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:13 +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:21 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:36 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:38 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:43 +msgid "Extending the configuration" msgstr "" #: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:45 -msgid "**Notes**:" +msgid "There are some additional things you may wish to configure about the bridge." msgstr "" #: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:47 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "Take a look at:" msgstr "" #: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:49 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgid "`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" msgstr "" #: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:51 -msgid "`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." +msgid "Installing" msgstr "" #: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:53 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:60 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:62 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:64 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:55 +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:66 msgid "Read the [user guide](https://github.com/benkuly/matrix-sms-bridge/blob/master/README.md#user-guide) to see how this bridge works." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:68 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:70 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-bluesky.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-bluesky.pot new file mode 100644 index 000000000..d5b869994 --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-bluesky.pot @@ -0,0 +1,121 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:9 +msgid "Setting up Mautrix Bluesky bridging (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:11 +msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:13 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:15 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:17 +msgid "Prerequisite (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:19 +msgid "Enable Appservice Double Puppet" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:21 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:23 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:25 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:27 +msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:33 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:35 +msgid "There are some additional things you may wish to configure about the bridge." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:38 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:40 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:42 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:49 +msgid "**Notes**:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:51 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:53 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:55 +msgid "Usage" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:57 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:59 +msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/bluesky/authentication.html)." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:61 +msgid "After logging in, the bridge will create portal rooms for recent chats. Portal rooms for other chats will be created as you receive messages." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:63 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:65 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:67 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bluesky.md:69 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-bridges.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-bridges.pot index b79c2ed2f..eb90332a1 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-bridges.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-bridges.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,284 +16,279 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:10 msgid "Setting up a Generic Mautrix Bridge (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:12 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:5 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:14 msgid "The author of the bridges maintains [the official docs](https://docs.mau.fi/bridges/index.html), whose source code is available at [mautrix/docs](https://github.com/mautrix/docs) repository on GitHub. You may as well to refer it while configuring them." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:16 msgid "You can see each bridge's features on the `ROADMAP.md` file in its corresponding mautrix repository." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:18 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:20 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:18 -msgid "**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)." +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:27 +msgid "**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)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:20 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:29 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:22 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:31 msgid "Configure bridge permissions (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:24 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:33 msgid "By default any user on your homeserver will be able to use the mautrix bridges. To limit who can use them you would need to configure their permissions settings." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:26 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:35 msgid "Different levels of permission can be granted to users. For example, to **configure a user as an administrator for all bridges**, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:32 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:41 msgid "If you don't define the `matrix_admin` in your configuration (e.g. `matrix_admin: @alice:example.com`), then there's no admin by default." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:34 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:43 msgid "**Alternatively** (more verbose, but allows multiple admins to be configured), you can do the same on a per-bridge basis with:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:43 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:52 msgid "This will add the admin permission to the specific user, while keeping the default permissions." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:45 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:54 msgid "You could also redefine the default permissions settings completely, rather than adding extra permissions. You may wish to look at `roles/custom/matrix-bridge-mautrix-SERVICENAME/templates/config.yaml.j2` to find information on the permission settings and other options you would like to configure." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:47 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:56 msgid "Enable encryption (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:49 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:58 msgid "[Encryption (End-to-Bridge Encryption, E2BE) support](https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html) is off by default. If you would like to enable encryption, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:51 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:60 msgid "**for all bridges with encryption support**:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:58 -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:77 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:67 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:86 msgid "**Alternatively**, for a specific bridge:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:65 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:74 msgid "Enable relay mode (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:67 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:76 msgid "[Relay mode](https://docs.mau.fi/bridges/general/relay-mode.html) is off by default. Check [the table on the official documentation](https://docs.mau.fi/bridges/general/relay-mode.html#support-table) for bridges which support relay mode." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:69 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:78 msgid "If you would like to enable it, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:71 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:80 msgid "**for all bridges with relay mode support**:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:86 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:95 msgid "You can only have one `matrix_mautrix_SERVICENAME_configuration_extension_yaml` definition in `vars.yml` per bridge, so if you need multiple pieces of configuration there, just merge them like this:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:100 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:109 msgid "If you want to activate the relaybot in a room, send `!prefix set-relay` in the rooms where you want to use the bot (replace `!prefix` with the appropriate command prefix for the bridge, like `!signal` or `!wa`). To deactivate, send `!prefix unset-relay`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:102 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:111 msgid "Use `!prefix set-pl 100` to be able for the bot to modify room settings and invite others." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:104 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:113 msgid "Allow anyone on the homeserver to become a relay user (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:106 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:115 msgid "By default, only admins are allowed to set themselves as relay users. To allow anyone on your homeserver to set themselves as relay users, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:112 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:121 msgid "Set the bot's username (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:114 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:123 msgid "To set the bot's username, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:120 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:129 msgid "Configure the logging level (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:122 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:131 msgid "To specify the logging level, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:128 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:137 msgid "Replace `warn` with one of the following to control the verbosity of the logs generated: `trace`, `debug`, `info`, `warn`, `error` or `fatal`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:130 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:139 msgid "If you have issues with a service, and are requesting support, the higher levels of logging (those that appear earlier in the list, like `trace`) will generally be more helpful." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:132 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:141 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:134 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:143 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:136 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:145 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:138 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:147 msgid "`roles/custom/matrix-bridge-mautrix-SERVICENAME/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:139 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:148 msgid "`roles/custom/matrix-bridge-mautrix-SERVICENAME/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_mautrix_SERVICENAME_configuration_extension_yaml` variable" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:141 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:143 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - #: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:150 -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:190 -msgid "**Notes**:" +msgid "Installing" msgstr "" #: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:152 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:154 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:159 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:156 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:161 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:158 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:163 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:160 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:165 msgid "To use the bridge, you need to start a chat with `@SERVICENAMEbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:162 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:167 msgid "For details about the next steps, refer to each bridge's individual documentation page." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:164 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:169 msgid "Send `help` to the bot to see the available commands." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:166 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:171 msgid "If you run into trouble, check the [Troubleshooting](#troubleshooting) section below." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:168 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:173 msgid "Set up Double Puppeting (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:170 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:175 msgid "After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:172 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:177 msgid "To set it up, you have 2 ways of going about it." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:174 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:179 msgid "Method 1: automatically, by enabling Appservice Double Puppet (recommended)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:176 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:181 msgid "To set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html), you could enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:178 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:183 msgid "Appservice Double Puppet is a homeserver appservice through which bridges (and potentially other services) can impersonate any user on the homeserver." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:180 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:185 msgid "To enable the Appservice Double Puppet service, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:186 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:191 msgid "When enabled, double puppeting will automatically be enabled for all bridges that support double puppeting via the appservice method." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:188 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:193 msgid "This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:192 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:195 +msgid "**Notes**:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:197 msgid "Previously there were multiple different automatic double puppeting methods like one with the help of the [Shared Secret Auth password provider module](./configuring-playbook-shared-secret-auth.md), but they have been superseded by this Appservice Double Puppet method. Double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future as the older methods were completely removed in the megabridge rewrites on [the upstream project](https://docs.mau.fi/bridges/general/double-puppeting.html#automatically)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:195 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:200 msgid "Some bridges like [the deprecated Facebook mautrix bridge](configuring-playbook-bridge-mautrix-facebook.md) and [matrix-appservice-kakaotalk](configuring-playbook-bridge-appservice-kakaotalk.md), which is partially based on the Facebook bridge, are compatible with the Shared Secret Auth service only. These bridges automatically perform Double Puppeting if [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:197 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:202 msgid "Method 2: manually, by asking each user to provide a working access token" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:199 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:204 msgid "When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:201 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:206 msgid "retrieve a Matrix access token for yourself. Refer to the documentation on [how to obtain one](obtaining-access-tokens.md)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:203 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:208 msgid "send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:205 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:210 msgid "make sure you don't log out the session for which you obtained an access token some time in the future, as that would break the Double Puppeting feature" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:207 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:212 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:209 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:214 msgid "For troubleshooting information with a specific bridge, please see the playbook documentation about it (some other document in in `docs/`) and the upstream ([mautrix](https://github.com/mautrix)) bridge documentation for that specific bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:211 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:216 msgid "If the bridge's bot doesn't accept the invite to a chat, refer [the official troubleshooting page](https://docs.mau.fi/bridges/general/troubleshooting.html) as well." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:213 +#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:218 msgid "If you found bugs in mautrix bridges, they should be reported to the upstream project, in the corresponding mautrix repository, not to us." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-discord.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-discord.pot index a404f37a0..adad88771 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-discord.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-discord.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,134 +16,142 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:13 msgid "Setting up Mautrix Discord bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:15 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:5 -msgid "**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) and [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) bridges supported by the playbook." +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:17 +msgid "**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) bridge supported by the playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:6 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:18 msgid "For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:19 msgid "For personal use with a discord account we recommend the `mautrix-discord` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:21 msgid "The playbook can install and configure [mautrix-discord](https://github.com/mautrix/discord) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:23 msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/discord/index.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:25 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:27 msgid "There are 2 ways to login to discord using this bridge, either by [scanning a QR code](#method-1-login-using-qr-code-recommended) using the Discord mobile app **or** by using a [Discord token](#method-2-login-using-discord-token-not-recommended)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:17 -msgid "If this is a dealbreaker for you, consider using one of the other Discord bridges supported by the playbook: [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) or [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md). These come with their own complexity and limitations, however, so we recommend that you proceed with this one if possible." +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:29 +msgid "If this is a dealbreaker for you, consider using [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md). This comes with its own complexity and limitations, however, so we recommend that you proceed with this one if possible." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:31 msgid "Enable Appservice Double Puppet or Shared Secret Auth (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:21 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:33 msgid "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) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:23 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:35 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:25 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:37 msgid "**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:27 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:39 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:29 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:41 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:35 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:47 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:37 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:49 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:40 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:52 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:42 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:54 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:44 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:56 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:51 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:53 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:55 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:63 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:57 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:65 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:59 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:67 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:61 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:69 msgid "To use the bridge, you need to start a chat with `@discordbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:63 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:71 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/discord/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:65 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:73 msgid "After logging in, the bridge will create portal rooms for some recent direct messages." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:67 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:75 msgid "Bridge guilds" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:69 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:77 msgid "If you'd like to bridge guilds, send `guilds status` to see the list of guilds, then send `guilds bridge GUILD_ID_HERE` for each guild that you'd like bridged. Make sure to replace `GUILD_ID_HERE` with the guild's ID." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:71 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:79 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:73 +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:81 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:83 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:85 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:87 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:89 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-facebook.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-facebook.pot index 53424a6d9..a4c6c74d4 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-facebook.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-facebook.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,142 +16,146 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:13 msgid "Setting up Mautrix Facebook bridging (optional, deprecated)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:15 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:5 -msgid "**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." +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:17 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:19 msgid "The playbook can install and configure [mautrix-facebook](https://github.com/mautrix/facebook) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:21 msgid "See the project's [documentation](https://github.com/mautrix/facebook/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:23 msgid "Prerequisite (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:25 msgid "Enable Shared Secret Auth" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:27 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:29 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:31 msgid "**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:21 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:33 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:23 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:35 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:29 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:41 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:31 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:43 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:33 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:45 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:35 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:47 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:37 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:49 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:44 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:46 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:48 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:56 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:50 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:58 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:52 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:60 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:54 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:62 msgid "To use the bridge, you need to start a chat with `@facebookbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:56 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:64 msgid "You then need to send `login YOUR_FACEBOOK_EMAIL_ADDRESS` to the bridge bot to enable bridging for your Facebook Messenger account." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:58 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:66 msgid "If you run into trouble, check the [Troubleshooting](#troubleshooting) section below." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:60 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:68 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:62 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:70 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:72 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:74 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:80 msgid "Facebook rejecting login attempts and forcing you to change password" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:64 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:82 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:66 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:84 msgid "If you happen to run into this problem while [setting up bridging](#usage), try to first get a successful session up by logging in to Facebook through the Matrix server's IP address." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:68 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:86 msgid "The easiest way to do this may be to use [sshuttle](https://sshuttle.readthedocs.io/) to proxy your traffic through the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:70 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:88 msgid "Example command for proxying your traffic through the Matrix server:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:76 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:94 msgid "Once connected, you should be able to verify that you're browsing the web through the Matrix server's IP by checking [icanhazip](https://icanhazip.com/)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:78 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:96 msgid "Then proceed to log in to [Facebook/Messenger](https://www.facebook.com/)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:80 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:98 msgid "Once logged in, proceed to [set up bridging](#usage)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:82 +#: ../../../docs/configuring-playbook-bridge-mautrix-facebook.md:100 msgid "If that doesn't work, enable 2FA (see: [Facebook help page on enabling 2FA](https://www.facebook.com/help/148233965247823)) and try to login again with a new password, and entering the 2FA code when prompted, it may take more then one try, in between attempts, check facebook.com to see if they are requiring another password change" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-gmessages.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-gmessages.pot index 21b6221ac..2bd57ccaf 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-gmessages.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-gmessages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,94 +16,102 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:9 msgid "Setting up Mautrix Google Messages bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:11 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:5 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:13 msgid "The playbook can install and configure [mautrix-gmessages](https://github.com/mautrix/gmessages) for you, for bridging to [Google Messages](https://messages.google.com/)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:15 msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/gmessages/index.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:17 msgid "Prerequisite (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:19 msgid "Enable Appservice Double Puppet" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:21 msgid "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) for this playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:23 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:25 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:27 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:25 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:33 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:27 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:35 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:30 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:38 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:32 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:40 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:34 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:42 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:41 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:43 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:45 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:49 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:47 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:51 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:49 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:53 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:51 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:55 msgid "To use the bridge, you need to start a chat with `@gmessagesbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:53 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:57 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/gmessages/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:55 +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:59 msgid "After logging in, the bridge will create portal rooms for recent chats." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:61 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:63 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:65 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-gmessages.md:67 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-googlechat.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-googlechat.pot index 5cc62b1ca..81f184b0a 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-googlechat.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-googlechat.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,98 +16,106 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:10 msgid "Setting up Mautrix Google Chat bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:12 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:5 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:14 msgid "The playbook can install and configure [mautrix-googlechat](https://github.com/mautrix/googlechat) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:16 msgid "See the project's [documentation](https://docs.mau.fi/bridges/python/googlechat/index.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:18 msgid "Prerequisite (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:20 msgid "Enable Appservice Double Puppet or Shared Secret Auth" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:22 msgid "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) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:24 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:26 msgid "**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:28 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:21 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:30 msgid "To enable the [Google Chat](https://chat.google.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:27 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:36 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:29 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:38 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:32 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:41 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:34 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:36 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - #: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:43 -msgid "**Notes**:" +msgid "Installing" msgstr "" #: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:45 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:47 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:52 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:49 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:54 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:51 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:56 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:53 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:58 msgid "To use the bridge, you need to start a chat with `@googlechatbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:55 +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:60 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/googlechat/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:57 -msgid "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." +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:62 +msgid "After logging in, the bridge will create portal rooms for recent chats. Portal rooms for other chats will be created as you receive messages." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:64 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:66 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:68 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-googlechat.md:70 +msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-hangouts.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-hangouts.pot index 72ed5d3ac..1a364cdb8 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-hangouts.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-hangouts.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,102 +16,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:1 -msgid "Setting up Mautrix Hangouts bridging (optional, deprecated)" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:3 -msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:5 -msgid "💡 **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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:7 -msgid "The playbook can install and configure [mautrix-hangouts](https://github.com/mautrix/hangouts) for you." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:9 -msgid "Prerequisite (optional)" -msgstr "" - #: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:11 -msgid "Enable Shared Secret Auth" +msgid "Setting up Mautrix Hangouts bridging (optional, removed)" msgstr "" #: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:13 -msgid "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." +msgid "🪦 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." msgstr "" #: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:15 -msgid "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." +msgid "You may wish to use the [Google Chat bridge](https://github.com/mautrix/googlechat) instead." msgstr "" #: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:17 -msgid "**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future." +msgid "Uninstalling the bridge manually" msgstr "" #: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:19 -msgid "Adjusting the playbook configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:21 -msgid "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:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:27 -msgid "Extending the configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:29 -msgid "There are some additional things you may wish to configure about the bridge." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:31 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:33 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:35 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:42 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:44 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:46 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:48 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:50 -msgid "Usage" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:52 -msgid "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)." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:54 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:56 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-hangouts.md:58 -msgid "Once logged in, recent chats should show up as new conversations automatically. Other chats will get portals as you receive messages." +msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-instagram.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-instagram.pot index eba944ee2..38e17784d 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-instagram.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-instagram.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,78 +16,86 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:10 msgid "Setting up Mautrix Instagram bridging (optional, deprecated)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:12 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:5 -msgid "**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." +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:14 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:16 msgid "The playbook can install and configure [mautrix-instagram](https://github.com/mautrix/instagram) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:18 msgid "See the project's [documentation](https://github.com/mautrix/instagram/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:20 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:22 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:28 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:21 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:30 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:23 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:32 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:25 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:27 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - #: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:34 -msgid "**Notes**:" +msgid "Installing" msgstr "" #: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:36 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:38 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:43 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:40 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:45 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:42 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:47 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:44 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:49 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:46 +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:51 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:53 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:55 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:57 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-instagram.md:59 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-meta-instagram.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-meta-instagram.pot index cb04ef1d1..66c537121 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-meta-instagram.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-meta-instagram.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,130 +16,138 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:8 msgid "Setting up Instagram bridging via Mautrix Meta (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:10 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:5 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:12 msgid "The playbook can install and configure the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:14 msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/meta/index.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:16 msgid "Since this bridge component can bridge to both [Messenger](https://messenger.com/) and [Instagram](https://instagram.com/) and you may wish to do both at the same time, the playbook makes it available via 2 different Ansible roles (`matrix-bridge-mautrix-meta-messenger` and `matrix-bridge-mautrix-meta-instagram`). The latter is a reconfigured copy of the first one (created by `just rebuild-mautrix-meta-instagram` and `bin/rebuild-mautrix-meta-instagram.sh`)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:18 msgid "This documentation page only deals with the bridge's ability to bridge to Instagram. For bridging to Facebook/Messenger, see [Setting up Messenger bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-messenger.md)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:20 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:22 msgid "Migrating from the old mautrix-instagram bridge" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:24 msgid "If you've been using the [mautrix-instagram](./configuring-playbook-bridge-mautrix-instagram.md) bridge, **you'd better get rid of it first** or the 2 bridges will be in conflict:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:26 msgid "both trying to use `@instagrambot:example.com` as their username. This conflict may be resolved by adjusting `matrix_mautrix_instagram_appservice_bot_username` or `matrix_mautrix_meta_instagram_appservice_username`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:20 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:27 msgid "both trying to bridge the same DMs" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:22 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:29 msgid "To do so, send a `clean-rooms` command to the management room with the old bridge bot (`@instagrambot:example.com`). It gives you a list of portals and groups of portals you may purge. Proceed with sending commands like `clean recommended`, etc." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:24 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:31 msgid "Then, consider disabling the old bridge in your configuration, so it won't recreate the portals when you receive new messages." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:26 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:33 msgid "Enable Appservice Double Puppet (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:28 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:35 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:30 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:37 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:32 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:39 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:34 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:41 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:40 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:47 msgid "Before proceeding to [re-running the playbook](./installing.md), you may wish to adjust the configuration further. See below." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:42 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:49 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:44 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:51 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:46 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:53 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:48 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:55 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:50 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - #: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:57 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:59 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:61 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:64 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:63 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:66 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:65 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:68 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:67 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:70 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:69 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:72 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/meta/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:71 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:74 msgid "After logging in, the bridge will sync recent chats." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:76 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:78 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:80 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:82 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-meta-messenger.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-meta-messenger.pot index e92f38ec6..00f47e0c2 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-meta-messenger.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-meta-messenger.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,162 +16,170 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:9 msgid "Setting up Messenger bridging via Mautrix Meta (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:11 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:5 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:13 msgid "The playbook can install and configure the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:15 msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/meta/index.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:17 msgid "Since this bridge component can bridge to both [Messenger](https://messenger.com/) and [Instagram](https://instagram.com/) and you may wish to do both at the same time, the playbook makes it available via 2 different Ansible roles (`matrix-bridge-mautrix-meta-messenger` and `matrix-bridge-mautrix-meta-instagram`). The latter is a reconfigured copy of the first one (created by `just rebuild-mautrix-meta-instagram` and `bin/rebuild-mautrix-meta-instagram.sh`)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:19 msgid "This documentation page only deals with the bridge's ability to bridge to Facebook Messenger. For bridging to Instagram, see [Setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:21 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:23 msgid "Migrating from the old mautrix-facebook bridge" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:25 msgid "If you've been using the [mautrix-facebook](./configuring-playbook-bridge-mautrix-facebook.md) bridge, it's possible to migrate the database using [instructions from the bridge documentation](https://docs.mau.fi/bridges/go/meta/facebook-migration.html) (advanced)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:27 msgid "Then you may wish to get rid of the Facebook bridge. To do so, send a `clean-rooms` command to the management room with the old bridge bot (`@facebookbot:example.com`). It gives you a list of portals and groups of portals you may purge. Proceed with sending commands like `clean recommended`, etc." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:21 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:29 msgid "Then, consider disabling the old bridge in your configuration, so it won't recreate the portals when you receive new messages." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:23 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:31 msgid "**Note**: the user ID of the new bridge bot is `@messengerbot:example.com`, not `@facebookbot:example.com`. After disabling the old bridge, its bot user will stop responding to a command." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:25 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:33 msgid "Enable Appservice Double Puppet (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:27 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:35 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:29 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:37 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:31 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:39 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:33 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:41 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:39 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:47 msgid "Before proceeding to [re-running the playbook](./installing.md), you may wish to adjust the configuration further. See below." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:41 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:49 msgid "Bridge mode" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:43 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:51 msgid "As mentioned above, the [mautrix-meta](https://github.com/mautrix/meta) bridge supports multiple modes of operation." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:45 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:53 msgid "The bridge can pull your Messenger messages via 3 different methods:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:47 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:55 msgid "(`facebook`) Facebook via `facebook.com`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:48 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:56 msgid "(`facebook-tor`) Facebook via `facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion` ([Tor](https://www.torproject.org/)) — does not currently proxy media downloads" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:49 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:57 msgid "(default) (`messenger`) Messenger via `messenger.com` — usable even without a Facebook account" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:51 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:59 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:53 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:61 msgid "Note that switching the mode (especially between `facebook*` and `messenger`) will intentionally make the bridge use another database (`matrix_mautrix_meta_facebook` or `matrix_mautrix_meta_messenger`) to isolate the 2 instances. Switching between Tor and non-Tor may be possible without dataloss, but your mileage may vary. Before switching to a new mode, you may wish to de-configure the old one (send `help` to the bridge bot and unbridge your portals, etc.)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:55 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:63 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:57 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:65 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:59 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:67 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:61 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:69 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:63 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:71 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:70 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:72 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:74 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:78 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:76 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:80 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:78 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:82 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:80 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:84 msgid "To use the bridge, you need to start a chat with `@messengerbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). Note that the user ID of the bridge's bot is not `@facebookbot:example.com`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:82 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:86 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/meta/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:84 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:88 msgid "After logging in, the bridge will sync recent chats." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:86 +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:90 msgid "**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." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:92 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:94 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:96 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-meta-messenger.md:98 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-signal.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-signal.pot index 3bf4fdb89..e52354fa2 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-signal.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-signal.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,110 +16,118 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:17 msgid "Setting up Mautrix Signal bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:19 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:5 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:21 msgid "The playbook can install and configure [mautrix-signal](https://github.com/mautrix/signal) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:23 msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/signal/index.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:25 msgid "Prerequisites (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:27 msgid "Prepare Postgres database on external Postgres server" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:29 msgid "If you're running with the Postgres database server integrated by the playbook (which is the default), you don't need to do anything special and can easily proceed with installing." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:31 msgid "However, if you're [using an external Postgres server](configuring-playbook-external-postgres.md), you'd need to manually prepare a Postgres database for this bridge and adjust the variables related to that (`matrix_mautrix_signal_database_*`)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:33 msgid "Enable Appservice Double Puppet" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:35 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:21 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:37 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:23 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:39 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:25 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:41 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:31 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:47 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:33 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:49 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:35 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:51 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:37 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:53 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:39 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:55 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:46 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:48 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:50 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:62 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:52 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:64 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:54 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:66 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:56 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:68 msgid "To use the bridge, you need to start a chat with `@signalbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:58 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:70 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/signal/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:60 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:72 msgid "After logging in, the bridge will bridge chats as you receive messages." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:62 +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:74 msgid "**Note**: Signal does not support any kind of message history (even on official apps), so the bridge won't backfill any messages." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:76 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:78 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:80 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-signal.md:82 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-slack.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-slack.pot index 5bbbe9d63..8467b902b 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-slack.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-slack.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,118 +16,126 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:10 msgid "Setting up Mautrix Slack bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:12 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:5 -msgid "**Note**: bridging to [Slack](https://slack.com/) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) bridges supported by the playbook." +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:14 +msgid "**Note**: bridging to [Slack](https://slack.com/) can also happen via the [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) bridge supported by the playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:6 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:15 msgid "For using as a Bot we recommend the [Appservice Slack](configuring-playbook-bridge-appservice-slack.md), because it supports plumbing. Note that it 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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:16 msgid "For personal use with a slack account we recommend the `mautrix-slack` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Slack bridges supported by the playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:18 msgid "The playbook can install and configure [mautrix-slack](https://github.com/mautrix/slack) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:20 msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/slack/index.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:22 msgid "See the [features and roadmap](https://github.com/mautrix/slack/blob/main/ROADMAP.md) for more information." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:24 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:26 msgid "For using this bridge, you would need to authenticate by **providing your username and password** (legacy) or by using a **token login**. See more information in the [docs](https://docs.mau.fi/bridges/go/slack/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:28 msgid "Note that neither of these methods are officially supported by Slack. [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) uses a Slack bot account which is the only officially supported method for bridging a Slack channel." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:21 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:30 msgid "Enable Appservice Double Puppet (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:23 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:32 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:25 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:34 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:27 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:36 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:29 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:38 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:35 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:44 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:37 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:46 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:40 -msgid "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." +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:48 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:42 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:50 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:44 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:52 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:51 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:53 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:55 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:59 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:57 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:61 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:59 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:63 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:61 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:65 msgid "To use the bridge, you need to start a chat with `@slackbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:63 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:67 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/slack/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:65 +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:69 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:71 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:73 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:75 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:77 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-telegram.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-telegram.pot index f289a25b7..633765ccb 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-telegram.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-telegram.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,143 +16,154 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:14 msgid "Setting up Mautrix Telegram bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:16 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:5 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:18 msgid "The playbook can install and configure [mautrix-telegram](https://github.com/mautrix/telegram) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:20 msgid "See the project's [documentation](https://docs.mau.fi/bridges/python/telegram/index.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:22 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:24 msgid "Obtain a Telegram API key" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:26 msgid "To use the bridge, you'd need to obtain an API key from [https://my.telegram.org/apps](https://my.telegram.org/apps)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:28 msgid "Enable Appservice Double Puppet or Shared Secret Auth (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:30 msgid "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) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:32 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:21 -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:81 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:34 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:23 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:36 msgid "Double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:25 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:38 msgid "If you decided to enable Double Puppeting manually, send `login-matrix` to the bot in order to receive an instruction about how to send an access token to it." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:27 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:40 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:29 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:42 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `YOUR_TELEGRAM_APP_ID` and `YOUR_TELEGRAM_API_HASH`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:37 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:50 msgid "Relaying" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:39 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:52 msgid "Enable relay-bot (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:41 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:54 msgid "If you want to use the relay-bot feature ([relay bot documentation](https://docs.mau.fi/bridges/python/telegram/relay-bot.html)), which allows anonymous user to chat with telegram users, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:51 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:64 msgid "Configure a user as an administrator of the bridge (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:53 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:66 msgid "You might also want to give permissions to a user to administrate the bot. See [this section](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional) on the common guide for details about it." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:55 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:68 msgid "More details about permissions in this example: https://github.com/mautrix/telegram/blob/master/mautrix_telegram/example-config.yaml#L410" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:57 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:70 msgid "Use the bridge for direct chats only (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:59 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:72 msgid "If you want to exclude all groups from syncing and use the Telegram-Bridge only for direct chats, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:65 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:78 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:67 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:80 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:70 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:83 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:72 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:85 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:74 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:87 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:83 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:85 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:94 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:87 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:96 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:89 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:98 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:91 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:100 msgid "To use the bridge, you need to start a chat with `@telegrambot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:93 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:102 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/telegram/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:95 +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:104 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:106 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:108 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:110 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-telegram.md:112 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-twitter.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-twitter.pot index cf12fbbf1..49938a922 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-twitter.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-twitter.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,98 +16,102 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:10 msgid "Setting up Mautrix Twitter bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:12 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:5 -msgid "**Note**: bridging to [Twitter](https://twitter.com/) can also happen via the [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) bridge supported by the playbook." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:14 msgid "The playbook can install and configure [mautrix-twitter](https://github.com/mautrix/twitter) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:16 msgid "See the project's [documentation](https://github.com/mautrix/twitter/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:18 msgid "Prerequisite (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:20 msgid "Enable Appservice Double Puppet" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:22 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:24 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:26 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:21 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:28 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:27 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:34 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:29 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:36 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:32 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:39 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:34 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:41 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:36 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - #: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:43 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:45 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:47 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:50 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:49 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:52 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:51 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:54 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:53 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:56 msgid "To use the bridge, you need to start a chat with `@twitterbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:55 +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:58 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/twitter/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:57 -msgid "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." +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:60 +msgid "After logging in, the bridge will create portal rooms for recent chats. Portal rooms for other chats will be created as you receive messages." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:62 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:64 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:66 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-twitter.md:68 +msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-whatsapp.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-whatsapp.pot index 5ad331ed5..cf93bbe15 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-whatsapp.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-whatsapp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,102 +16,110 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:14 msgid "Setting up Mautrix Whatsapp bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:16 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:5 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:18 msgid "The playbook can install and configure [mautrix-whatsapp](https://github.com/mautrix/whatsapp) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:20 msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/whatsapp/index.html) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:22 msgid "Prerequisite (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:24 msgid "Enable Appservice Double Puppet or Shared Secret Auth" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:26 msgid "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) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:28 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:30 msgid "**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:19 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:32 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:21 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:34 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:27 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:40 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:29 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:42 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:31 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:44 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:33 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:46 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:35 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:48 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:42 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:44 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:46 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:55 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:48 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:57 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:50 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:59 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:52 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:61 msgid "To use the bridge, you need to start a chat with `@whatsappbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:54 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:63 msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/whatsapp/authentication.html)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:56 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:65 msgid "Approximately in a minute after logging in, the bridge will create portal rooms for recent chats." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:58 +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:67 msgid "**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." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:69 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:71 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:73 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mautrix-whatsapp.md:75 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-wsproxy.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-wsproxy.pot index bcd9a5179..091a2421f 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-wsproxy.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mautrix-wsproxy.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,102 +16,102 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:1 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:9 msgid "Setting up Mautrix wsproxy for bridging Android SMS or Apple iMessage (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:3 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:11 msgid "Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:5 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:13 msgid "The playbook can install and configure [mautrix-wsproxy](https://github.com/mautrix/wsproxy) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:7 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:15 msgid "See the project's [documentation](https://github.com/mautrix/wsproxy/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:9 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:17 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:11 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:19 msgid "By default, this playbook installs wsproxy on the `wsproxy.` subdomain (`wsproxy.example.com`) and requires you to create a CNAME record for `wsproxy`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:13 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:21 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:15 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:23 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:17 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:25 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:29 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:37 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:31 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:39 msgid "Adjusting the wsproxy URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:33 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:41 msgid "By tweaking the `matrix_mautrix_wsproxy_hostname` variable, you can easily make the service available at a **different hostname** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:35 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:43 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:42 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:50 msgid "After changing the domain, **you may need to adjust your DNS** records to point the wsproxy domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:44 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:52 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:46 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:54 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:48 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:56 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:50 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:58 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:52 +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:60 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:59 -msgid "**Notes**:" +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:67 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:61 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:69 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:63 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:71 +msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:65 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:73 +msgid "Follow the [mautrix-imessage documentation](https://docs.mau.fi/bridges/go/imessage/index.html) for running `android-sms` and/or `matrix-imessage` on your device(s)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:67 -msgid "Usage" +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:75 +msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:69 -msgid "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)." +#: ../../../docs/configuring-playbook-bridge-mautrix-wsproxy.md:77 +msgid "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`." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-discord.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-discord.pot index 5e1d73767..fd1bad65a 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-discord.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-discord.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,82 +16,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:1 -msgid "Setting up MX Puppet Discord bridging (optional)" +#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:15 +msgid "Setting up MX Puppet Discord bridging (optional, removed)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:3 -msgid "**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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:4 -msgid "For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:5 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:7 -msgid "The playbook can install and configure [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) for you." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:9 -msgid "See the project's [documentation](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/blob/master/README.md) to learn what it does and why it might be useful to you." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:11 -msgid "Adjusting the playbook configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:13 -msgid "To enable the [Discord](https://discordapp.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:17 +msgid "🪦 The playbook used to be able to install and configure [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord), but no longer includes this component, as it has been unmaintained for a long time." msgstr "" #: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:19 -msgid "Installing" +msgid "You may wish to use the [Mautrix Discord bridge](https://github.com/mautrix/discord) instead." msgstr "" #: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:21 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:28 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:30 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:32 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:34 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:36 -msgid "Usage" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:38 -msgid "To use the bridge, you need to start a chat with `Discord Puppet Bridge` with the handle `@_discordpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:40 -msgid "Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-discord [documentation](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) for more information about how to configure the bridge." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:42 -msgid "Once logged in, send `list` to the bot user to list the available rooms." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:44 -msgid "Clicking rooms in the list will result in you receiving an invitation to the bridged room." +msgid "Uninstalling the bridge manually" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:46 -msgid "Send `help` to the bot to see the available commands." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-discord.md:23 +msgid "If you still have the MX Puppet Discord 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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-groupme.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-groupme.pot index 758251108..599371a6f 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-groupme.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-groupme.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,74 +16,66 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:1 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:10 msgid "Setting up MX Puppet GroupMe bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:3 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:12 msgid "The playbook can install and configure [mx-puppet-groupme](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:5 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:14 msgid "See the project's [documentation](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:7 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:16 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:9 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:18 msgid "To enable the [GroupMe](https://groupme.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:15 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:17 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - #: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:24 -msgid "**Notes**:" +msgid "Installing" msgstr "" #: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:26 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:28 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:33 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:30 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:35 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:32 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:37 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:34 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:39 msgid "To use the bridge, you need to start a chat with `GroupMe Puppet Bridge` with the handle `@_groupmepuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:36 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:41 msgid "One authentication method is available." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:38 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:43 msgid "To link your GroupMe account, go to [dev.groupme.com](https://dev.groupme.com/), sign in, and select \"Access Token\" from the top menu. Copy the token and message the bridge with:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:44 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:49 msgid "Once logged in, send `listrooms` to the bot user to list the available rooms." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:46 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:51 msgid "Clicking rooms in the list will result in you receiving an invitation to the bridged room." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:48 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-groupme.md:53 msgid "Send `help` to the bot to see the available commands." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-instagram.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-instagram.pot index ba8747713..b7a46a1af 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-instagram.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-instagram.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,86 +16,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:1 -msgid "Setting up MX Puppet Instagram bridging (optional)" +#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:14 +msgid "Setting up MX Puppet Instagram bridging (optional, removed)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:3 -msgid "The playbook can install and configure [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) for you." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:16 +msgid "🪦 The playbook used to be able to install and configure [mx-puppet-instagram](https://gitlab.com/mx-puppet/instagram/mx-puppet-instagram), but no longer includes this component, as it has been unmaintained for a long time." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:5 -msgid "This allows you to bridge Instagram DirectMessages into Matrix." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:18 +msgid "You may wish to use the [Mautrix Meta](https://github.com/mautrix/meta) Messenger/Instagram bridge instead." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:7 -msgid "Adjusting the playbook configuration" +#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:20 +msgid "Uninstalling the bridge manually" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:9 -msgid "To enable the [Instagram](https://www.instagram.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:15 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:17 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:24 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:26 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:28 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:30 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:32 -msgid "Usage" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:34 -msgid "To use the bridge, you need to start a chat with `Instagram Puppet Bridge` with the handle `@_instagrampuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:36 -msgid "Send `link ` to the bridge bot to link your instagram account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:38 -msgid "The `list` commands shows which accounts are linked and which `puppetId` is associated." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:40 -msgid "For double-puppeting, you probably want to issue these commands:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:42 -msgid "`settype $puppetId puppet` to enable puppeting for the link (instead of relaying)" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:43 -msgid "`setautoinvite $puppetId 1` to automatically invite you to chats" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:44 -msgid "`setmatrixtoken $accessToken` to set the access token to enable puppeting from the other side (the \"double\" in double puppeting)" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:46 -msgid "If you are linking only one Instagram account, your `$puppetId` is probably 1, but use the `list` command find out." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:48 -msgid "Send `help` to the bot to see the available commands. At the time of writing, not every command is fully implemented." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-instagram.md:22 +msgid "If you still have the MX Puppet Instagram 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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-skype.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-skype.pot index d3971b5e0..5b25779e1 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-skype.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-skype.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,14 +16,14 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-skype.md:1 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-skype.md:9 msgid "Setting up MX Puppet Skype bridging (optional, removed)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-skype.md:3 -msgid "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." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-skype.md:11 +msgid "🪦 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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-skype.md:5 -msgid "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." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-skype.md:13 +msgid "The playbook used to be able to install and configure [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) as alternative to this bridge, but no longer includes this component, because Skype has been discontinued since May 2025." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-slack.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-slack.pot index f3c8cb89f..2d4b3ca12 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-slack.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-slack.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,82 +16,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:1 -msgid "Setting up MX Puppet Slack bridging (optional)" +#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:17 +msgid "Setting up MX Puppet Slack bridging (optional, removed)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:3 -msgid "**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." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:19 +msgid "🪦 The playbook used to be able to install and configure [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack), but no longer includes this component, as it has been unmaintained for a long time." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:5 -msgid "The playbook can install and configure [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) for you." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:21 +msgid "You may wish to use the [Mautrix Slack bridge](https://github.com/mautrix/slack) instead." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:7 -msgid "See the project's [documentation](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/blob/master/README.md) to learn what it does and why it might be useful to you." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:23 +msgid "Uninstalling the bridge manually" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:9 -msgid "Prerequisite" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:11 -msgid "Follow the [OAuth credentials](https://gitlab.com/mx-puppet/slack/mx-puppet-slack#option-2-oauth) instructions to create a new Slack app, setting the redirect URL to `https://matrix.example.com/slack/oauth`." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:13 -msgid "Adjusting the playbook configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:15 -msgid "To enable the [Slack](https://slack.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:24 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:26 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:33 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:35 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:37 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:39 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:41 -msgid "Usage" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:43 -msgid "To use the bridge, you need to start a chat with `Slack Puppet Bridge` with the handle `@_slackpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:45 -msgid "Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-slack [documentation](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) for more information about how to configure the bridge." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:47 -msgid "Once logged in, send `list` to the bot user to list the available rooms." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:49 -msgid "Clicking rooms in the list will result in you receiving an invitation to the bridged room." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:51 -msgid "Send `help` to the bot to see the available commands." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-slack.md:25 +msgid "If you still have the MX Puppet Slack 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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-steam.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-steam.pot index f1839dc75..84b49289d 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-steam.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-steam.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,70 +16,66 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:1 -msgid "Setting up MX Puppet Steam bridging (optional)" +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:10 +msgid "Setting up MX Puppet Steam bridging (optional, deprecated)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:3 -msgid "The playbook can install and configure [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) for you." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:12 +msgid "**Note**: This bridge has been deprecated in favor of the [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) bridge for Steam, which can be [installed using this playbook](configuring-playbook-bridge-steam.md). Consider using that bridge instead of this one." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:5 -msgid "See the project's [documentation](https://github.com/icewind1991/mx-puppet-steam/blob/master/README.md) to learn what it does and why it might be useful to you." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:14 +msgid "The playbook can install and configure [mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:7 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:16 +msgid "See the project's [documentation](https://codeberg.org/icewind/mx-puppet-steam/blob/master/README.md) to learn what it does and why it might be useful to you." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:18 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:9 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:20 msgid "To enable the [Steam](https://steampowered.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:15 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:26 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:17 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:28 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:24 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:26 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:28 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:35 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:30 -msgid "`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." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:37 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:32 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:39 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:34 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:41 msgid "To use the bridge, you need to start a chat with `Steam Puppet Bridge` with the handle `@_steampuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:36 -msgid "Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-steam [documentation](https://github.com/icewind1991/mx-puppet-steam) for more information about how to configure the bridge." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:43 +msgid "Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-steam [documentation](https://codeberg.org/icewind/mx-puppet-steam) for more information about how to configure the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:38 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:45 msgid "Once logged in, send `list` to the bot user to list the available rooms." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:40 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:47 msgid "Clicking rooms in the list will result in you receiving an invitation to the bridged room." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:42 +#: ../../../docs/configuring-playbook-bridge-mx-puppet-steam.md:49 msgid "Send `help` to the bot to see the available commands." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-twitter.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-twitter.pot index 9b1a35b97..7c4de74c5 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-twitter.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-mx-puppet-twitter.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,82 +16,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:1 -msgid "Setting up MX Puppet Twitter bridging (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:3 -msgid "**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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:5 -msgid "The playbook can install and configure [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) for you." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:7 -msgid "See the project's [documentation](https://github.com/Sorunome/mx-puppet-twitter/blob/master/README.md) to learn what it does and why it might be useful to you." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:9 -msgid "Prerequisite" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:11 -msgid "Make an app on [developer.twitter.com](https://developer.twitter.com/en/apps)." -msgstr "" - #: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:13 -msgid "Adjusting the playbook configuration" +msgid "Setting up MX Puppet Twitter bridging (optional, removed)" msgstr "" #: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:15 -msgid "To enable the [Twitter](https://twitter.com) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:26 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:28 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:35 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:37 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:39 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:41 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:43 -msgid "Usage" -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:45 -msgid "To use the bridge, you need to start a chat with `Twitter Puppet Bridge` with the handle `@_twitterpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:47 -msgid "To log in, use `link` and click the link." +msgid "🪦 The playbook used to be able to install and configure [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter), but no longer includes this component, as it has been unmaintained for a long time." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:49 -msgid "Once logged in, send `list` to the bot user to list the available rooms." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:17 +msgid "You may wish to use the [Mautrix Twitter bridge](https://github.com/mautrix/twitter) instead." msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:51 -msgid "Clicking rooms in the list will result in you receiving an invitation to the bridged room." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:19 +msgid "Uninstalling the bridge manually" msgstr "" -#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:53 -msgid "Send `help` to the bot to see the available commands." +#: ../../../docs/configuring-playbook-bridge-mx-puppet-twitter.md:21 +msgid "If you still have the MX Puppet Twitter 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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-postmoogle.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-postmoogle.pot index ff82d45ee..6ba2d3c39 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-postmoogle.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-postmoogle.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,51 +16,51 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:1 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:10 msgid "Setting up Postmoogle email bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:3 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:12 msgid "The playbook can install and configure [Postmoogle](https://github.com/etkecc/postmoogle) for you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:5 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:14 msgid "Postmoogle is a bridge you can use to have its bot user forward emails to Matrix rooms. It runs an SMTP email server and allows you to assign mailbox addresses to the rooms." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:7 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:16 msgid "See the project's [documentation](https://github.com/etkecc/postmoogle/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:9 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:18 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:11 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:20 msgid "Open the following ports on your server to be able to receive incoming emails:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:13 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:22 msgid "`25/tcp`: SMTP" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:14 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:23 msgid "`587/tcp`: Submission (TLS-encrypted SMTP)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:16 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:25 msgid "If you don't open these ports, you will still be able to send emails, but not receive any." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:18 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:27 msgid "These port numbers are configurable via the `matrix_postmoogle_smtp_host_bind_port` and `matrix_postmoogle_submission_host_bind_port` variables, but other email servers will try to deliver on these default (standard) ports, so changing them is of little use." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:20 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:29 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:22 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:31 msgid "To make Postmoogle enable its email sending features, you need to configure MX and TXT (SPF, DMARC, and DKIM) records. See the table below for values which need to be specified." msgstr "" @@ -136,90 +136,94 @@ msgstr "" msgid "get it from `!pm dkim`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:31 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:40 msgid "**Note**: the DKIM record can be retrieved after configuring and installing the bridge's bot." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:33 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:42 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:35 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:44 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:56 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:65 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:58 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:67 msgid "There are some additional things you may wish to configure about the bridge." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:60 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:69 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:62 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:71 msgid "`roles/custom/matrix-bridge-postmoogle/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:64 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:73 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:66 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:75 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:73 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:82 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:75 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:84 msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create a user account of the bridge's bot." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:77 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:86 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:79 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:88 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:81 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:90 msgid "If you change the bridge's bot password (`matrix_postmoogle_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_postmoogle_password` to let the bot know its new password." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:83 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:92 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:85 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:94 msgid "To use the bridge, invite the `@postmoogle:example.com` bot user into a room you want to use as a mailbox." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:87 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:96 msgid "Then send `!pm mailbox NAME` to expose this Matrix room as an inbox with the email address `NAME@matrix.example.com`. Emails sent to that email address will be forwarded to the room." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:89 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:98 msgid "Send `!pm help` to the bot in the room to see the available commands." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:91 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:100 msgid "You can also refer to the upstream [documentation](https://github.com/etkecc/postmoogle)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:93 +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:102 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:95 -msgid "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`" +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:104 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:106 +msgid "Increase logging verbosity" msgstr "" -#: ../../../docs/configuring-playbook-bridge-postmoogle.md:97 -msgid "The default logging level for this bridge is `INFO`, but you can increase it to `DEBUG` with the following additional configuration:" +#: ../../../docs/configuring-playbook-bridge-postmoogle.md:108 +msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-steam.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-steam.pot new file mode 100644 index 000000000..d6d44ecba --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-steam.pot @@ -0,0 +1,85 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-bridge-steam.md:7 +msgid "Setting up Steam bridging (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:9 +msgid "The playbook can install and configure [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) for you." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:11 +msgid "See the project's [documentation](https://github.com/jasonlaguidice/matrix-steam-bridge/blob/main/README.md) to learn what it does and why it might be useful to you." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:13 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:15 +msgid "To enable the [Steam](https://steampowered.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:21 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:23 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:30 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` and `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:32 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:34 +msgid "The tag for `just` commands for this bridge is `matrix-steam-bridge` - for example: `just install-service matrix-steam-bridge`" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:36 +msgid "Usage" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:38 +msgid "To use the bridge, you need to start a chat with `Steam bridge bot` with the handle `@steambot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:40 +msgid "The bridge supports QR code and password-based login as well as SteamGuard codes via app, SMS, or e-mail. See matrix-steam-bridge [documentation](https://github.com/jasonlaguidice/matrix-steam-bridge) for more information about how to configure the bridge." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:42 +msgid "To login, send `login [flow ID]` where possible flow IDs are `password` or `qr`" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:44 +msgid "Once logged in, send `search [name]` to search through recognized Steam friends. You can send a user name, display name, or all forms of Steam ID. Send `start-chat [identifier]` to request the bridge bot to open a chat room with a user." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:46 +msgid "Chat rooms will automatically be opened as new messages are received." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-steam.md:48 +msgid "Send `help` to the bot to see the available commands." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-bridge-wechat.pot b/i18n/translation-templates/docs/configuring-playbook-bridge-wechat.pot index 9339190f2..7317197ca 100644 --- a/i18n/translation-templates/docs/configuring-playbook-bridge-wechat.pot +++ b/i18n/translation-templates/docs/configuring-playbook-bridge-wechat.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,58 +16,94 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-bridge-wechat.md:1 +#: ../../../docs/configuring-playbook-bridge-wechat.md:8 msgid "Setting up WeChat bridging (optional)" msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:3 +#: ../../../docs/configuring-playbook-bridge-wechat.md:10 msgid "The playbook can install and configure [matrix-wechat](https://github.com/duo/matrix-wechat) for you, for bridging to [WeChat](https://www.wechat.com/)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:5 +#: ../../../docs/configuring-playbook-bridge-wechat.md:12 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:7 +#: ../../../docs/configuring-playbook-bridge-wechat.md:14 +msgid "[!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." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:17 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:9 +#: ../../../docs/configuring-playbook-bridge-wechat.md:19 msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:15 +#: ../../../docs/configuring-playbook-bridge-wechat.md:25 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:27 +msgid "There are some additional things you may wish to configure about the bridge." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:29 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:31 +msgid "`roles/custom/matrix-bridge-wechat/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:32 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:34 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:17 +#: ../../../docs/configuring-playbook-bridge-wechat.md:36 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:24 +#: ../../../docs/configuring-playbook-bridge-wechat.md:43 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:26 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." -msgstr "" - -#: ../../../docs/configuring-playbook-bridge-wechat.md:28 +#: ../../../docs/configuring-playbook-bridge-wechat.md:45 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:30 +#: ../../../docs/configuring-playbook-bridge-wechat.md:47 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:32 +#: ../../../docs/configuring-playbook-bridge-wechat.md:49 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:34 +#: ../../../docs/configuring-playbook-bridge-wechat.md:51 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-bridge-wechat.md:36 +#: ../../../docs/configuring-playbook-bridge-wechat.md:53 msgid "Send `help` to the bot to see the available commands." msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:55 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:57 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:59 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-bridge-wechat.md:61 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-cactus-comments.pot b/i18n/translation-templates/docs/configuring-playbook-cactus-comments.pot index 5e51bc044..874ae436d 100644 --- a/i18n/translation-templates/docs/configuring-playbook-cactus-comments.pot +++ b/i18n/translation-templates/docs/configuring-playbook-cactus-comments.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,186 +16,178 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-cactus-comments.md:1 +#: ../../../docs/configuring-playbook-cactus-comments.md:10 msgid "Setting up Cactus Comments (optional)" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:3 +#: ../../../docs/configuring-playbook-cactus-comments.md:12 msgid "The playbook can install and configure the [Cactus Comments](https://cactus.chat) system for you." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:5 +#: ../../../docs/configuring-playbook-cactus-comments.md:14 msgid "Cactus Comments is a **federated comment system** built on Matrix. It respects your privacy, and puts you in control." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:7 +#: ../../../docs/configuring-playbook-cactus-comments.md:16 msgid "See the project's [documentation](https://cactus.chat/docs/getting-started/introduction/) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:9 +#: ../../../docs/configuring-playbook-cactus-comments.md:18 msgid "The playbook contains 2 roles for configuring different pieces of the Cactus Comments system:" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:11 +#: ../../../docs/configuring-playbook-cactus-comments.md:20 msgid "`matrix-cactus-comments` — the backend appservice integrating with the Matrix homeserver" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:13 +#: ../../../docs/configuring-playbook-cactus-comments.md:22 msgid "`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`)" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:15 +#: ../../../docs/configuring-playbook-cactus-comments.md:24 msgid "You can enable whichever component you need (typically both)." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:17 +#: ../../../docs/configuring-playbook-cactus-comments.md:26 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:19 +#: ../../../docs/configuring-playbook-cactus-comments.md:28 msgid "By default, this playbook installs Cactus Comments' client on the `matrix.` subdomain, at the `/cactus-comments` path (https://matrix.example.com/cactus-comments). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:21 +#: ../../../docs/configuring-playbook-cactus-comments.md:30 msgid "If you wish to adjust it, see the section [below](#adjusting-the-cactus-comments-client-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:23 +#: ../../../docs/configuring-playbook-cactus-comments.md:32 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:25 +#: ../../../docs/configuring-playbook-cactus-comments.md:34 msgid "To enable Cactus Comments, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:45 +#: ../../../docs/configuring-playbook-cactus-comments.md:54 msgid "Adjusting the Cactus Comments' client URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:47 +#: ../../../docs/configuring-playbook-cactus-comments.md:56 msgid "By tweaking the `matrix_cactus_comments_client_hostname` and `matrix_cactus_comments_client_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:49 +#: ../../../docs/configuring-playbook-cactus-comments.md:58 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:58 +#: ../../../docs/configuring-playbook-cactus-comments.md:67 msgid "If you've changed the default hostname, you may need to create a CNAME record for the Cactus Comments' client domain (`cactus.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:60 +#: ../../../docs/configuring-playbook-cactus-comments.md:69 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:62 +#: ../../../docs/configuring-playbook-cactus-comments.md:71 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:64 +#: ../../../docs/configuring-playbook-cactus-comments.md:73 msgid "There are some additional things you may wish to configure about the components." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:66 +#: ../../../docs/configuring-playbook-cactus-comments.md:75 msgid "For `matrix-cactus-comments`, take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:68 +#: ../../../docs/configuring-playbook-cactus-comments.md:77 msgid "`roles/custom/matrix-cactus-comments/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:70 +#: ../../../docs/configuring-playbook-cactus-comments.md:79 msgid "For `matrix-cactus-comments-client`, take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:72 +#: ../../../docs/configuring-playbook-cactus-comments.md:81 msgid "`roles/custom/matrix-cactus-comments-client/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:74 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-cactus-comments.md:76 -msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" -msgstr "" - #: ../../../docs/configuring-playbook-cactus-comments.md:83 -msgid "**Notes**:" +msgid "Installing" msgstr "" #: ../../../docs/configuring-playbook-cactus-comments.md:85 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account." +msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:87 +#: ../../../docs/configuring-playbook-cactus-comments.md:92 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:89 -msgid "`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." +#: ../../../docs/configuring-playbook-cactus-comments.md:94 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:91 +#: ../../../docs/configuring-playbook-cactus-comments.md:96 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:93 +#: ../../../docs/configuring-playbook-cactus-comments.md:98 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:95 +#: ../../../docs/configuring-playbook-cactus-comments.md:100 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:97 +#: ../../../docs/configuring-playbook-cactus-comments.md:102 msgid "Now you are good to go and can embed the comment section on your website!" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:99 +#: ../../../docs/configuring-playbook-cactus-comments.md:104 msgid "Embed Cactus Comments" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:101 +#: ../../../docs/configuring-playbook-cactus-comments.md:106 msgid "The official [documentation](https://cactus.chat/docs/getting-started/quick-start/) provides a useful guide to embed Cactus Comments on your website." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:103 +#: ../../../docs/configuring-playbook-cactus-comments.md:108 msgid "After including the JavaScript and CSS asset files, insert a `

` where you'd like to display the comment section:" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:109 +#: ../../../docs/configuring-playbook-cactus-comments.md:114 msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:123 +#: ../../../docs/configuring-playbook-cactus-comments.md:128 msgid "Adjust the domain name for self-hosting" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:125 +#: ../../../docs/configuring-playbook-cactus-comments.md:130 msgid "To have the assets served from your homeserver (not from `cactus.chat`), you need to adjust the domain name on the official documentation." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:127 +#: ../../../docs/configuring-playbook-cactus-comments.md:132 msgid "Make sure to replace `example.com` with your base domain before you include the following lines, instead of the one provided by the official documentation:" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:134 +#: ../../../docs/configuring-playbook-cactus-comments.md:139 msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:136 +#: ../../../docs/configuring-playbook-cactus-comments.md:141 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:138 +#: ../../../docs/configuring-playbook-cactus-comments.md:143 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:140 +#: ../../../docs/configuring-playbook-cactus-comments.md:145 msgid "Increase logging verbosity" msgstr "" -#: ../../../docs/configuring-playbook-cactus-comments.md:142 +#: ../../../docs/configuring-playbook-cactus-comments.md:147 msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-client-cinny.pot b/i18n/translation-templates/docs/configuring-playbook-client-cinny.pot index f9fd230f2..25b7a665c 100644 --- a/i18n/translation-templates/docs/configuring-playbook-client-cinny.pot +++ b/i18n/translation-templates/docs/configuring-playbook-client-cinny.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,78 +16,106 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-client-cinny.md:1 +#: ../../../docs/configuring-playbook-client-cinny.md:9 msgid "Setting up Cinny (optional)" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:3 +#: ../../../docs/configuring-playbook-client-cinny.md:11 msgid "The playbook can install and configure the [Cinny](https://github.com/ajbura/cinny) Matrix web client for you." msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:5 +#: ../../../docs/configuring-playbook-client-cinny.md:13 msgid "Cinny is a web client focusing primarily on simple, elegant and secure interface. It can be installed alongside or instead of [Element Web](./configuring-playbook-client-element-web.md)." msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:7 +#: ../../../docs/configuring-playbook-client-cinny.md:15 msgid "💡 **Note**: the latest version of Cinny is also available on the web, hosted by 3rd parties. If you trust giving your credentials to the following 3rd party Single Page Applications, you can consider using it from there and avoiding the (small) overhead of self-hosting:" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:9 +#: ../../../docs/configuring-playbook-client-cinny.md:17 msgid "[app.cinny.in](https://app.cinny.in), hosted by the [Cinny](https://cinny.in/) developers" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:11 +#: ../../../docs/configuring-playbook-client-cinny.md:19 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:13 +#: ../../../docs/configuring-playbook-client-cinny.md:21 msgid "By default, this playbook installs Cinny on the `cinny.` subdomain (`cinny.example.com`) and requires you to create a CNAME record for `cinny`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:15 +#: ../../../docs/configuring-playbook-client-cinny.md:23 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:17 +#: ../../../docs/configuring-playbook-client-cinny.md:25 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:19 +#: ../../../docs/configuring-playbook-client-cinny.md:27 msgid "To enable Cinny, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:25 +#: ../../../docs/configuring-playbook-client-cinny.md:33 msgid "Adjusting the Cinny URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:27 +#: ../../../docs/configuring-playbook-client-cinny.md:35 msgid "By tweaking the `matrix_client_cinny_hostname` variable, you can easily make the service available at a **different hostname** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:29 +#: ../../../docs/configuring-playbook-client-cinny.md:37 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:39 +#: ../../../docs/configuring-playbook-client-cinny.md:47 msgid "After changing the domain, **you may need to adjust your DNS** records to point the Cinny domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:41 +#: ../../../docs/configuring-playbook-client-cinny.md:49 msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:43 +#: ../../../docs/configuring-playbook-client-cinny.md:51 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-client-cinny.md:53 +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-client-cinny.md:55 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-cinny.md:57 +msgid "`roles/custom/matrix-client-cinny/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-client-cinny.md:58 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-client-cinny.md:60 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:45 +#: ../../../docs/configuring-playbook-client-cinny.md:62 msgid "After configuring the playbook and [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:52 +#: ../../../docs/configuring-playbook-client-cinny.md:69 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-client-cinny.md:54 +#: ../../../docs/configuring-playbook-client-cinny.md:71 msgid "`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." msgstr "" + +#: ../../../docs/configuring-playbook-client-cinny.md:73 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-client-cinny.md:75 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-client-element-web.pot b/i18n/translation-templates/docs/configuring-playbook-client-element-web.pot index 524c4b34e..b2a2f0cdf 100644 --- a/i18n/translation-templates/docs/configuring-playbook-client-element-web.pot +++ b/i18n/translation-templates/docs/configuring-playbook-client-element-web.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,150 +16,174 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-client-element-web.md:1 +#: ../../../docs/configuring-playbook-client-element-web.md:11 msgid "Configuring Element Web (optional)" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:3 +#: ../../../docs/configuring-playbook-client-element-web.md:13 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:5 +#: ../../../docs/configuring-playbook-client-element-web.md:15 msgid "If you'd like to stop the playbook installing the client, see the section [below](#disabling-element-web) to check the configuration for disabling it." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:7 +#: ../../../docs/configuring-playbook-client-element-web.md:17 msgid "💡 **Note**: the latest version of Element Web is also available on the web, hosted by 3rd parties. If you trust giving your credentials to the following 3rd party Single Page Applications, you can consider using it from there and avoiding the (small) overhead of self-hosting (by [disabling Element Web](#disabling-element-web)):" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:9 +#: ../../../docs/configuring-playbook-client-element-web.md:19 msgid "[app.element.io](https://app.element.io/), hosted by [Element](https://element.io/)" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:10 +#: ../../../docs/configuring-playbook-client-element-web.md:20 msgid "[app.etke.cc](https://app.etke.cc/), hosted by [etke.cc](https://etke.cc/)" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:12 +#: ../../../docs/configuring-playbook-client-element-web.md:22 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:14 +#: ../../../docs/configuring-playbook-client-element-web.md:24 msgid "By default, this playbook installs Element Web on the `element.` subdomain (`element.example.com`) and requires you to create a CNAME record for `element`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:16 +#: ../../../docs/configuring-playbook-client-element-web.md:26 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:18 +#: ../../../docs/configuring-playbook-client-element-web.md:28 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:20 +#: ../../../docs/configuring-playbook-client-element-web.md:30 +msgid "Set the country code for phone number inputs" +msgstr "" + +#: ../../../docs/configuring-playbook-client-element-web.md:32 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-element-web.md:38 msgid "Themes" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:22 -msgid "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." +#: ../../../docs/configuring-playbook-client-element-web.md:40 +msgid "Change the default theme" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:24 +#: ../../../docs/configuring-playbook-client-element-web.md:42 +msgid "You can change the default theme from `light` to `dark`. To do so, add the following configuration to your `vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-element-web.md:49 msgid "Use themes by `element-themes`" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:26 -msgid "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:" +#: ../../../docs/configuring-playbook-client-element-web.md:51 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:32 +#: ../../../docs/configuring-playbook-client-element-web.md:53 +msgid "To pull the themes and use them for your Element Web instance, add the following configuration to your `vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-element-web.md:59 msgid "If the variable is set to `true`, all themes found in the repository specified with `matrix_client_element_themes_repository_url` will be installed and enabled automatically." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:34 +#: ../../../docs/configuring-playbook-client-element-web.md:61 msgid "Note that for a custom theme to work well, all Element Web instances that you use must have the same theme installed." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:36 +#: ../../../docs/configuring-playbook-client-element-web.md:63 msgid "Define themes manually" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:38 +#: ../../../docs/configuring-playbook-client-element-web.md:65 msgid "You can also define your own themes manually by adding and adjusting the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:45 +#: ../../../docs/configuring-playbook-client-element-web.md:72 msgid "If you define your own themes with it and set `matrix_client_element_themes_enabled` to `true` for the themes by `element-themes`, your themes will be preserved as well." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:47 +#: ../../../docs/configuring-playbook-client-element-web.md:74 msgid "If you make your own theme, we encourage you to submit it to the **aaronraimist/element-themes** project, so that the whole community could easily enjoy it." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:49 +#: ../../../docs/configuring-playbook-client-element-web.md:76 msgid "Adjusting the Element Web URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:51 +#: ../../../docs/configuring-playbook-client-element-web.md:78 msgid "By tweaking the `matrix_client_element_hostname` and `matrix_client_element_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:53 +#: ../../../docs/configuring-playbook-client-element-web.md:80 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:64 +#: ../../../docs/configuring-playbook-client-element-web.md:91 msgid "After changing the domain, **you may need to adjust your DNS** records to point the Element domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:66 +#: ../../../docs/configuring-playbook-client-element-web.md:93 msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:68 +#: ../../../docs/configuring-playbook-client-element-web.md:95 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:70 +#: ../../../docs/configuring-playbook-client-element-web.md:97 msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:72 +#: ../../../docs/configuring-playbook-client-element-web.md:99 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:74 +#: ../../../docs/configuring-playbook-client-element-web.md:101 msgid "`roles/custom/matrix-client-element/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:75 +#: ../../../docs/configuring-playbook-client-element-web.md:102 msgid "`roles/custom/matrix-client-element/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_element_configuration_extension_json` variable" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:77 +#: ../../../docs/configuring-playbook-client-element-web.md:104 msgid "For example, to override some Element Web settings, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:95 +#: ../../../docs/configuring-playbook-client-element-web.md:122 msgid "Disabling Element Web" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:97 +#: ../../../docs/configuring-playbook-client-element-web.md:124 msgid "If you'd like for the playbook to not install Element Web (or to uninstall it if it was previously installed), add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:103 +#: ../../../docs/configuring-playbook-client-element-web.md:130 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:105 +#: ../../../docs/configuring-playbook-client-element-web.md:132 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:112 +#: ../../../docs/configuring-playbook-client-element-web.md:139 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-client-element-web.md:114 +#: ../../../docs/configuring-playbook-client-element-web.md:141 msgid "`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." msgstr "" + +#: ../../../docs/configuring-playbook-client-element-web.md:143 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-client-element-web.md:145 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-client-fluffychat-web.pot b/i18n/translation-templates/docs/configuring-playbook-client-fluffychat-web.pot new file mode 100644 index 000000000..f104e5091 --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-client-fluffychat-web.pot @@ -0,0 +1,101 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:8 +msgid "Setting up FluffyChat Web (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:10 +msgid "The playbook can install and configure the [FluffyChat Web](https://github.com/krille-chan/fluffychat) Matrix client for you." +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:12 +msgid "FluffyChat Web is a cute cross-platform (web, iOS, Android) messenger for Matrix written in [Flutter](https://flutter.dev/)." +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:14 +msgid "💡 **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:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:16 +msgid "[fluffychat.im](https://fluffychat.im/web), hosted by the [FluffyChat](https://fluffychat.im/) developers" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:18 +msgid "Adjusting DNS records" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:20 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:22 +msgid "When setting, replace `example.com` with your own." +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:24 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:26 +msgid "To enable FluffyChat Web, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:32 +msgid "Adjusting the FluffyChat Web URL (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:34 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:36 +msgid "Example additional configuration for your `vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:47 +msgid "After changing the domain, **you may need to adjust your DNS** records to point the FluffyChat Web domain to the Matrix server." +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:49 +msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:51 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:53 +msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:60 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:62 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:64 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-client-fluffychat-web.md:66 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-client-hydrogen.pot b/i18n/translation-templates/docs/configuring-playbook-client-hydrogen.pot index 194c8228b..0c8c33bfe 100644 --- a/i18n/translation-templates/docs/configuring-playbook-client-hydrogen.pot +++ b/i18n/translation-templates/docs/configuring-playbook-client-hydrogen.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,70 +16,98 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-client-hydrogen.md:1 +#: ../../../docs/configuring-playbook-client-hydrogen.md:10 msgid "Setting up Hydrogen (optional)" msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:3 +#: ../../../docs/configuring-playbook-client-hydrogen.md:12 msgid "The playbook can install and configure the [Hydrogen](https://github.com/element-hq/hydrogen-web) Matrix web client for you." msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:5 +#: ../../../docs/configuring-playbook-client-hydrogen.md:14 msgid "Hydrogen is a lightweight web client that supports mobile and legacy web browsers. It can be installed alongside or instead of Element Web." msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:7 +#: ../../../docs/configuring-playbook-client-hydrogen.md:16 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:9 +#: ../../../docs/configuring-playbook-client-hydrogen.md:18 msgid "By default, this playbook installs Hydrogen on the `hydrogen.` subdomain (`hydrogen.example.com`) and requires you to create a CNAME record for `hydrogen`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:11 +#: ../../../docs/configuring-playbook-client-hydrogen.md:20 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:13 +#: ../../../docs/configuring-playbook-client-hydrogen.md:22 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:15 +#: ../../../docs/configuring-playbook-client-hydrogen.md:24 msgid "To enable Hydrogen, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:21 +#: ../../../docs/configuring-playbook-client-hydrogen.md:30 msgid "Adjusting the Hydrogen URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:23 +#: ../../../docs/configuring-playbook-client-hydrogen.md:32 msgid "By tweaking the `matrix_client_hydrogen_hostname` and `matrix_client_hydrogen_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:25 +#: ../../../docs/configuring-playbook-client-hydrogen.md:34 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:36 +#: ../../../docs/configuring-playbook-client-hydrogen.md:45 msgid "After changing the domain, **you may need to adjust your DNS** records to point the Hydrogen domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:38 +#: ../../../docs/configuring-playbook-client-hydrogen.md:47 msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:40 +#: ../../../docs/configuring-playbook-client-hydrogen.md:49 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-client-hydrogen.md:51 +msgid "There are some additional things you may wish to configure about the client." +msgstr "" + +#: ../../../docs/configuring-playbook-client-hydrogen.md:53 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-hydrogen.md:55 +msgid "`roles/custom/matrix-client-hydrogen/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-client-hydrogen.md:56 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-client-hydrogen.md:58 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:42 +#: ../../../docs/configuring-playbook-client-hydrogen.md:60 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:49 +#: ../../../docs/configuring-playbook-client-hydrogen.md:67 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-client-hydrogen.md:51 +#: ../../../docs/configuring-playbook-client-hydrogen.md:69 msgid "`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." msgstr "" + +#: ../../../docs/configuring-playbook-client-hydrogen.md:71 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-client-hydrogen.md:73 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-client-schildichat-web.pot b/i18n/translation-templates/docs/configuring-playbook-client-schildichat-web.pot index 51d7794c3..b7f1a8629 100644 --- a/i18n/translation-templates/docs/configuring-playbook-client-schildichat-web.pot +++ b/i18n/translation-templates/docs/configuring-playbook-client-schildichat-web.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,142 +16,166 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:1 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:9 msgid "Setting up SchildiChat Web (optional)" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:3 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:11 msgid "The playbook can install and configure the [SchildiChat Web](https://github.com/SchildiChat/schildichat-desktop) Matrix client for you." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:5 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:13 msgid "SchildiChat Web is a feature-rich messenger for Matrix based on Element Web with some extras and tweaks. It can be installed alongside or instead of Element Web." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:7 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:15 msgid "💡 **Note**: the latest version of SchildiChat 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:" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:9 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:17 msgid "[app.schildi.chat](https://app.schildi.chat/), hosted by the [SchildiChat](https://schildi.chat/) developers" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:11 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:19 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:13 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:21 msgid "By default, this playbook installs SchildiChat Web on the `schildichat.` subdomain (`schildichat.example.com`) and requires you to create a CNAME record for `schildichat`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:15 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:23 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:17 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:25 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:19 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:27 msgid "To enable SchildiChat Web, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:25 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:33 +msgid "Set the country code for phone number inputs" +msgstr "" + +#: ../../../docs/configuring-playbook-client-schildichat-web.md:35 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-schildichat-web.md:41 msgid "Themes" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:27 -msgid "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." +#: ../../../docs/configuring-playbook-client-schildichat-web.md:43 +msgid "Change the default theme" +msgstr "" + +#: ../../../docs/configuring-playbook-client-schildichat-web.md:45 +msgid "You can change the default theme from `light` to `dark`. To do so, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:29 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:52 msgid "Use themes by `element-themes`" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:31 -msgid "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:" +#: ../../../docs/configuring-playbook-client-schildichat-web.md:54 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:37 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:56 +msgid "To pull the themes and use them for your SchildiChat Web instance, add the following configuration to your `vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-client-schildichat-web.md:62 msgid "If the variable is set to `true`, all themes found in the repository specified with `matrix_client_schildichat_themes_repository_url` will be installed and enabled automatically." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:39 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:64 msgid "Note that for a custom theme to work well, all SchildiChat Web instances that you use must have the same theme installed." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:41 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:66 msgid "Define themes manually" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:43 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:68 msgid "You can also define your own themes manually by adding and adjusting the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:50 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:75 msgid "If you define your own themes with it and set `matrix_client_schildichat_themes_enabled` to `true` for the themes by `element-themes`, your themes will be preserved as well." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:52 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:77 msgid "If you make your own theme, we encourage you to submit it to the **aaronraimist/element-themes** project, so that the whole community could easily enjoy it." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:54 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:79 msgid "Adjusting the SchildiChat Web URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:56 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:81 msgid "By tweaking the `matrix_client_schildichat_hostname` and `matrix_client_schildichat_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:58 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:83 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:69 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:94 msgid "After changing the domain, **you may need to adjust your DNS** records to point the SchildiChat Web domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:71 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:96 msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:73 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:98 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:75 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:100 msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:77 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:102 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:79 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:104 msgid "`roles/custom/matrix-client-schildichat/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:80 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:105 msgid "`roles/custom/matrix-client-schildichat/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_schildichat_configuration_extension_json` variable" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:82 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:107 msgid "For example, to override some SchildiChat Web settings, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:100 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:125 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:102 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:127 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:109 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:134 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-client-schildichat-web.md:111 +#: ../../../docs/configuring-playbook-client-schildichat-web.md:136 msgid "`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." msgstr "" + +#: ../../../docs/configuring-playbook-client-schildichat-web.md:138 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-client-schildichat-web.md:140 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-conduit.pot b/i18n/translation-templates/docs/configuring-playbook-conduit.pot index 995d482e1..5c4785742 100644 --- a/i18n/translation-templates/docs/configuring-playbook-conduit.pot +++ b/i18n/translation-templates/docs/configuring-playbook-conduit.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,114 +16,122 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-conduit.md:1 +#: ../../../docs/configuring-playbook-conduit.md:8 msgid "Configuring Conduit (optional)" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:3 +#: ../../../docs/configuring-playbook-conduit.md:10 msgid "The playbook can install and configure the [Conduit](https://conduit.rs) Matrix server for you." msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:5 +#: ../../../docs/configuring-playbook-conduit.md:12 msgid "See the project's [documentation](https://docs.conduit.rs/) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:7 +#: ../../../docs/configuring-playbook-conduit.md:14 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:9 +#: ../../../docs/configuring-playbook-conduit.md:16 msgid "💡 **Note**: The playbook also supports installing a (currently) faster-moving Conduit fork called [conduwuit](./configuring-playbook-conduwuit.md)." msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:11 -msgid "⚠️ **Warnings**:" +#: ../../../docs/configuring-playbook-conduit.md:18 +msgid "[!WARNING]" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:13 +#: ../../../docs/configuring-playbook-conduit.md:19 msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:15 +#: ../../../docs/configuring-playbook-conduit.md:20 msgid "**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" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:17 +#: ../../../docs/configuring-playbook-conduit.md:22 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:19 +#: ../../../docs/configuring-playbook-conduit.md:24 msgid "To use Conduit, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below:" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:25 +#: ../../../docs/configuring-playbook-conduit.md:30 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:27 +#: ../../../docs/configuring-playbook-conduit.md:32 msgid "There are some additional things you may wish to configure about the server." msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:29 +#: ../../../docs/configuring-playbook-conduit.md:34 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:31 +#: ../../../docs/configuring-playbook-conduit.md:36 msgid "`roles/custom/matrix-conduit/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:32 +#: ../../../docs/configuring-playbook-conduit.md:37 msgid "`roles/custom/matrix-conduit/templates/conduit.toml.j2` for the server's default configuration" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:34 +#: ../../../docs/configuring-playbook-conduit.md:39 msgid "If you'd like to have your own different configuration, feel free to copy and paste the original files into your inventory (e.g. in `inventory/host_vars/matrix.example.com/`) and then change the specific host's `vars.yml` file like this:" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:40 +#: ../../../docs/configuring-playbook-conduit.md:45 msgid "Creating the first user account" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:42 +#: ../../../docs/configuring-playbook-conduit.md:47 msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:44 +#: ../../../docs/configuring-playbook-conduit.md:49 msgid "Add `matrix_conduit_allow_registration: true` to your `vars.yml` the first time around, temporarily" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:45 +#: ../../../docs/configuring-playbook-conduit.md:50 msgid "Run the playbook (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start` — see [Installing](installing.md))" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:46 +#: ../../../docs/configuring-playbook-conduit.md:51 msgid "Create your first user via Element Web or any other client which supports creating users" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:47 +#: ../../../docs/configuring-playbook-conduit.md:52 msgid "Get rid of `matrix_conduit_allow_registration: true` from your `vars.yml`" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:48 +#: ../../../docs/configuring-playbook-conduit.md:53 msgid "Run the playbook again (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-conduit,start` would be enough this time)" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:49 +#: ../../../docs/configuring-playbook-conduit.md:54 msgid "You can now use your server safely. Additional users can be created by messaging the internal Conduit bot" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:51 +#: ../../../docs/configuring-playbook-conduit.md:56 msgid "Configuring bridges / appservices" msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:53 +#: ../../../docs/configuring-playbook-conduit.md:58 msgid "For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver." msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:55 +#: ../../../docs/configuring-playbook-conduit.md:60 msgid "For Conduit, you will have to manually register appservices using the the [register-appservice](https://gitlab.com/famedly/conduit/-/blob/next/APPSERVICES.md) command." msgstr "" -#: ../../../docs/configuring-playbook-conduit.md:57 +#: ../../../docs/configuring-playbook-conduit.md:62 msgid "Find the `registration.yaml` in the `/matrix` directory, for example `/matrix/mautrix-signal/bridge/registration.yaml`, then pass the content to Conduit:" msgstr "" + +#: ../../../docs/configuring-playbook-conduit.md:85 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-conduit.md:87 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-conduwuit.pot b/i18n/translation-templates/docs/configuring-playbook-conduwuit.pot index 858c78384..dc33d66c1 100644 --- a/i18n/translation-templates/docs/configuring-playbook-conduwuit.pot +++ b/i18n/translation-templates/docs/configuring-playbook-conduwuit.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,114 +16,126 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-conduwuit.md:1 +#: ../../../docs/configuring-playbook-conduwuit.md:8 msgid "Configuring conduwuit (optional)" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:3 +#: ../../../docs/configuring-playbook-conduwuit.md:10 msgid "The playbook can install and configure the [conduwuit](https://conduwuit.puppyirl.gay/) Matrix server for you." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:5 +#: ../../../docs/configuring-playbook-conduwuit.md:12 msgid "See the project's [documentation](https://conduwuit.puppyirl.gay/) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:7 +#: ../../../docs/configuring-playbook-conduwuit.md:14 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:9 +#: ../../../docs/configuring-playbook-conduwuit.md:16 msgid "💡 **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)." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:11 -msgid "⚠️ **Warnings**:" +#: ../../../docs/configuring-playbook-conduwuit.md:18 +msgid "[!WARNING]" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:13 +#: ../../../docs/configuring-playbook-conduwuit.md:19 msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:15 +#: ../../../docs/configuring-playbook-conduwuit.md:20 msgid "**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" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:17 +#: ../../../docs/configuring-playbook-conduwuit.md:21 +msgid "**the Conduwuit project appears to have been abandoned**. You may wish to install [Conduit](./configuring-playbook-conduit.md), or one of the Conduwuit successors (like [Continuwuity](configuring-playbook-continuwuity.md))" +msgstr "" + +#: ../../../docs/configuring-playbook-conduwuit.md:23 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:19 +#: ../../../docs/configuring-playbook-conduwuit.md:25 msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:33 +#: ../../../docs/configuring-playbook-conduwuit.md:39 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:35 +#: ../../../docs/configuring-playbook-conduwuit.md:41 msgid "There are some additional things you may wish to configure about the server." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:37 +#: ../../../docs/configuring-playbook-conduwuit.md:43 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:39 +#: ../../../docs/configuring-playbook-conduwuit.md:45 msgid "`roles/custom/matrix-conduwuit/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:40 +#: ../../../docs/configuring-playbook-conduwuit.md:46 msgid "`roles/custom/matrix-conduwuit/templates/conduwuit.toml.j2` for the server's default configuration" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:42 +#: ../../../docs/configuring-playbook-conduwuit.md:48 msgid "There are various Ansible variables that control settings in the `conduwuit.toml` file." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:44 +#: ../../../docs/configuring-playbook-conduwuit.md:50 msgid "If a specific setting you'd like to change does not have a dedicated Ansible variable, you can either submit a PR to us to add it, or you can [override the setting using an environment variable](https://conduwuit.puppyirl.gay/configuration.html#environment-variables) using `matrix_conduwuit_environment_variables_extension`. For example:" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:52 +#: ../../../docs/configuring-playbook-conduwuit.md:58 msgid "Creating the first user account" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:54 +#: ../../../docs/configuring-playbook-conduwuit.md:60 msgid "Unlike other homeserver implementations (like Synapse and Dendrite), conduwuit does not support creating users via the command line or via the playbook." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:56 +#: ../../../docs/configuring-playbook-conduwuit.md:62 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:58 +#: ../../../docs/configuring-playbook-conduwuit.md:64 msgid "This should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:60 +#: ../../../docs/configuring-playbook-conduwuit.md:66 msgid "The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:63 +#: ../../../docs/configuring-playbook-conduwuit.md:69 msgid "Configuring bridges / appservices" msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:65 +#: ../../../docs/configuring-playbook-conduwuit.md:71 msgid "For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:67 +#: ../../../docs/configuring-playbook-conduwuit.md:73 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:69 +#: ../../../docs/configuring-playbook-conduwuit.md:75 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:72 +#: ../../../docs/configuring-playbook-conduwuit.md:78 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-conduwuit.md:74 +#: ../../../docs/configuring-playbook-conduwuit.md:80 msgid "Then, send its content to the existing admin room:" msgstr "" + +#: ../../../docs/configuring-playbook-conduwuit.md:104 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-conduwuit.md:106 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-continuwuity.pot b/i18n/translation-templates/docs/configuring-playbook-continuwuity.pot new file mode 100644 index 000000000..731752456 --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-continuwuity.pot @@ -0,0 +1,161 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-continuwuity.md:8 +msgid "Configuring Continuwuity (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:10 +msgid "The playbook can install and configure the [Continuwuity](https://continuwuity.org) Matrix server for you." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:12 +msgid "See the project's [documentation](https://continuwuity.org) to learn what it does and why it might be useful to you." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:14 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:16 +msgid "💡 **Note**: continuwuity is a fork of [conduwuit](./configuring-playbook-conduwuit.md), which the playbook also supports." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:18 +msgid "[!WARNING]" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:19 +msgid "**You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Continuwuity). 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." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:20 +msgid "**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" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:22 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:24 +msgid "To use Continuwuity, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:38 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:40 +msgid "There are some additional things you may wish to configure about the server." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:42 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:44 +msgid "`roles/custom/matrix-continuwuity/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:45 +msgid "`roles/custom/matrix-continuwuity/templates/continuwuity.toml.j2` for the server's default configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:47 +msgid "There are various Ansible variables that control settings in the `continuwuity.toml` file." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:49 +msgid "If a specific setting you'd like to change does not have a dedicated Ansible variable, you can either submit a PR to us to add it, or you can [override the setting using an environment variable](https://continuwuity.org/configuration#environment-variables) using `matrix_continuwuity_environment_variables_extension`. For example:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:57 +msgid "Creating the first user account" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:59 +msgid "Unlike other homeserver implementations (like Synapse and Dendrite), continuwuity does not support creating users via the command line or via the playbook." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:61 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:63 +msgid "This should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:65 +msgid "The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:68 +msgid "Configuring bridges / appservices" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:70 +msgid "For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:72 +msgid "For continuwuity, you will have to manually register appservices using the [`!admin appservices register` command](https://continuwuity.org/appservices.html#set-up-the-appservice---general-instructions) sent to the server bot account." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:74 +msgid "The server's bot account has a Matrix ID of `@conduit:example.com` (not `@continuwuity:example.com`!) due to continuwuity's historical legacy. Your first user account would already have been invited to an admin room with this bot." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:77 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:79 +msgid "Then, send its content to the existing admin room:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:103 +msgid "Migrating from conduwuit" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:105 +msgid "Since Continuwuity is a drop-in replacement for [conduwuit](configuring-playbook-conduwuit.md), migration is possible." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:107 +msgid "Make sure that Continuwuity is properly set up on your `vars.yml` as described above" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:109 +msgid "Make sure that Conduwuit references are removed from your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:111 +msgid "Run the installation in a way that installs new services and uninstalls old ones (e.g. `just setup-all`)" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:113 +msgid "Run the playbook with the `continuwuity-migrate-from-conduwuit` tag (e.g. `just run-tags continuwuity-migrate-from-conduwuit`). This migrates data from `/matrix/conduwuit` to `/matrix/continuwuity`" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:115 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:117 +msgid "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-continuwuity`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-dendrite.pot b/i18n/translation-templates/docs/configuring-playbook-dendrite.pot index ee7e64695..b5ef71836 100644 --- a/i18n/translation-templates/docs/configuring-playbook-dendrite.pot +++ b/i18n/translation-templates/docs/configuring-playbook-dendrite.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,78 +16,94 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-dendrite.md:1 +#: ../../../docs/configuring-playbook-dendrite.md:9 msgid "Configuring Dendrite (optional)" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:3 +#: ../../../docs/configuring-playbook-dendrite.md:11 msgid "The playbook can install and configure the [Dendrite](https://github.com/element-hq/dendrite) Matrix server for you." msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:5 +#: ../../../docs/configuring-playbook-dendrite.md:13 msgid "See the project's [documentation](https://element-hq.github.io/dendrite/) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:7 +#: ../../../docs/configuring-playbook-dendrite.md:15 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:9 -msgid "⚠️ **Warnings**:" +#: ../../../docs/configuring-playbook-dendrite.md:17 +msgid "[!WARNING]" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:11 +#: ../../../docs/configuring-playbook-dendrite.md:18 msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:13 +#: ../../../docs/configuring-playbook-dendrite.md:19 msgid "**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" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:15 +#: ../../../docs/configuring-playbook-dendrite.md:21 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:17 +#: ../../../docs/configuring-playbook-dendrite.md:23 msgid "To use Dendrite, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below:" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:23 +#: ../../../docs/configuring-playbook-dendrite.md:29 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:25 +#: ../../../docs/configuring-playbook-dendrite.md:31 msgid "There are some additional things you may wish to configure about the server." msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:27 +#: ../../../docs/configuring-playbook-dendrite.md:33 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:29 +#: ../../../docs/configuring-playbook-dendrite.md:35 msgid "`roles/custom/matrix-dendrite/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:30 +#: ../../../docs/configuring-playbook-dendrite.md:36 msgid "`roles/custom/matrix-dendrite/templates/dendrite.yaml.j2` for the server's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_dendrite_configuration_extension_yaml` variable" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:32 +#: ../../../docs/configuring-playbook-dendrite.md:38 msgid "For example, to override some Dendrite settings, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:53 +#: ../../../docs/configuring-playbook-dendrite.md:59 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:55 +#: ../../../docs/configuring-playbook-dendrite.md:61 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:62 +#: ../../../docs/configuring-playbook-dendrite.md:68 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-dendrite.md:64 +#: ../../../docs/configuring-playbook-dendrite.md:70 msgid "`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." msgstr "" + +#: ../../../docs/configuring-playbook-dendrite.md:72 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-dendrite.md:74 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-dendrite.md:76 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-dendrite.md:78 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-dimension.pot b/i18n/translation-templates/docs/configuring-playbook-dimension.pot index 5126a16aa..a920d9bfd 100644 --- a/i18n/translation-templates/docs/configuring-playbook-dimension.pot +++ b/i18n/translation-templates/docs/configuring-playbook-dimension.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,195 +16,203 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-dimension.md:1 +#: ../../../docs/configuring-playbook-dimension.md:16 msgid "Setting up Dimension integration manager (optional, unmaintained)" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:3 -#: ../../../docs/configuring-playbook-dimension.md:109 +#: ../../../docs/configuring-playbook-dimension.md:18 +#: ../../../docs/configuring-playbook-dimension.md:124 msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:4 +#: ../../../docs/configuring-playbook-dimension.md:19 msgid "Dimension is **[officially unmaintained](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2806#issuecomment-1673559299)**. We recommend not bothering with installing it." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:5 +#: ../../../docs/configuring-playbook-dimension.md:20 msgid "This playbook now supports running Dimension in both a federated and [unfederated](https://github.com/turt2live/matrix-dimension/blob/master/docs/unfederated.md) environments. This is handled automatically based on the value of `matrix_homeserver_federation_enabled`." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:7 +#: ../../../docs/configuring-playbook-dimension.md:22 msgid "The playbook can install and configure the [Dimension](https://dimension.t2bot.io) integration manager for you." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:9 +#: ../../../docs/configuring-playbook-dimension.md:24 msgid "See the project's [documentation](https://github.com/turt2live/matrix-dimension/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:11 +#: ../../../docs/configuring-playbook-dimension.md:26 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:13 +#: ../../../docs/configuring-playbook-dimension.md:28 msgid "Open Matrix Federation port" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:15 +#: ../../../docs/configuring-playbook-dimension.md:30 msgid "Enabling the Dimension service will automatically reconfigure your Synapse homeserver to expose the `openid` API endpoints on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. If you enable the component, make sure that the port is accessible." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:17 +#: ../../../docs/configuring-playbook-dimension.md:32 msgid "Install Matrix services" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:19 +#: ../../../docs/configuring-playbook-dimension.md:34 msgid "Dimension can only be installed after Matrix services are installed and running. If you're just installing Matrix services for the first time, please continue with the [Configuration](configuring-playbook.md) / [Installation](installing.md) and come back here later." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:21 +#: ../../../docs/configuring-playbook-dimension.md:36 msgid "Register a dedicated Matrix user (optional, recommended)" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:23 +#: ../../../docs/configuring-playbook-dimension.md:38 msgid "We recommend that you create a dedicated Matrix user for Dimension (`dimension` is a good username)." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:25 +#: ../../../docs/configuring-playbook-dimension.md:40 msgid "Generate a strong password for the user. You can create one with a command like `pwgen -s 64 1`." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:27 +#: ../../../docs/configuring-playbook-dimension.md:42 msgid "You can use the playbook to [register a new user](registering-users.md):" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:33 +#: ../../../docs/configuring-playbook-dimension.md:48 msgid "Obtain an access token" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:35 +#: ../../../docs/configuring-playbook-dimension.md:50 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:37 +#: ../../../docs/configuring-playbook-dimension.md:52 msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:40 +#: ../../../docs/configuring-playbook-dimension.md:55 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:42 +#: ../../../docs/configuring-playbook-dimension.md:57 msgid "By default, this playbook installs Dimension on the `dimension.` subdomain (`dimension.example.com`) and requires you to create a CNAME record for `dimension`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:44 +#: ../../../docs/configuring-playbook-dimension.md:59 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:46 +#: ../../../docs/configuring-playbook-dimension.md:61 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:48 +#: ../../../docs/configuring-playbook-dimension.md:63 msgid "To enable Dimension, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `ACCESS_TOKEN_HERE` with the one created [above](#obtain-an-access-token)." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:56 +#: ../../../docs/configuring-playbook-dimension.md:71 msgid "Define admin users" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:58 +#: ../../../docs/configuring-playbook-dimension.md:73 msgid "To define admin users who can modify the integrations this Dimension supports, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:66 +#: ../../../docs/configuring-playbook-dimension.md:81 msgid "The admin interface is accessible within Element Web by accessing it in any room and clicking the cog wheel/settings icon in the top right. Currently, Dimension can be opened in Element Web by the \"Add widgets, bridges, & bots\" link in the room information." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:68 +#: ../../../docs/configuring-playbook-dimension.md:83 msgid "Adjusting the Dimension URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:70 +#: ../../../docs/configuring-playbook-dimension.md:85 msgid "By tweaking the `matrix_dimension_hostname` and `matrix_dimension_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:72 +#: ../../../docs/configuring-playbook-dimension.md:87 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:83 +#: ../../../docs/configuring-playbook-dimension.md:98 msgid "After changing the domain, **you may need to adjust your DNS** records to point the Dimension domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:85 +#: ../../../docs/configuring-playbook-dimension.md:100 msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:87 +#: ../../../docs/configuring-playbook-dimension.md:102 msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:89 +#: ../../../docs/configuring-playbook-dimension.md:104 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:91 +#: ../../../docs/configuring-playbook-dimension.md:106 msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:93 +#: ../../../docs/configuring-playbook-dimension.md:108 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:95 +#: ../../../docs/configuring-playbook-dimension.md:110 msgid "`roles/custom/matrix-dimension/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:96 +#: ../../../docs/configuring-playbook-dimension.md:111 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:98 +#: ../../../docs/configuring-playbook-dimension.md:113 msgid "You can find all configuration options on [GitHub page of Dimension project](https://github.com/turt2live/matrix-dimension/blob/master/config/default.yaml)." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:100 +#: ../../../docs/configuring-playbook-dimension.md:115 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:102 +#: ../../../docs/configuring-playbook-dimension.md:117 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:111 +#: ../../../docs/configuring-playbook-dimension.md:126 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:113 +#: ../../../docs/configuring-playbook-dimension.md:128 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:115 +#: ../../../docs/configuring-playbook-dimension.md:130 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:117 +#: ../../../docs/configuring-playbook-dimension.md:132 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:119 +#: ../../../docs/configuring-playbook-dimension.md:134 msgid "Set up a Jitsi widget" msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:121 +#: ../../../docs/configuring-playbook-dimension.md:136 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:123 +#: ../../../docs/configuring-playbook-dimension.md:138 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-dimension.md:125 +#: ../../../docs/configuring-playbook-dimension.md:140 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-dimension.md:142 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-dimension.md:144 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-dynamic-dns.pot b/i18n/translation-templates/docs/configuring-playbook-dynamic-dns.pot index 9a0939cb2..958e5eb95 100644 --- a/i18n/translation-templates/docs/configuring-playbook-dynamic-dns.pot +++ b/i18n/translation-templates/docs/configuring-playbook-dynamic-dns.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,58 +16,90 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-dynamic-dns.md:1 +#: ../../../docs/configuring-playbook-dynamic-dns.md:9 msgid "Setting up Dynamic DNS (optional)" msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:3 +#: ../../../docs/configuring-playbook-dynamic-dns.md:11 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:5 +#: ../../../docs/configuring-playbook-dynamic-dns.md:13 msgid "Most cloud providers / ISPs will charge you extra for a static IP address. If you're not hosting a highly reliable homeserver you can workaround this via dynamic DNS." msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:7 +#: ../../../docs/configuring-playbook-dynamic-dns.md:15 msgid "Prerequisite" msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:9 -msgid "You'll need to get a username and password from your DNS provider. Please consult with the provider about how to retrieve them." +#: ../../../docs/configuring-playbook-dynamic-dns.md:17 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:11 +#: ../../../docs/configuring-playbook-dynamic-dns.md:19 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:13 +#: ../../../docs/configuring-playbook-dynamic-dns.md:21 msgid "To enable dynamic DNS, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:26 +#: ../../../docs/configuring-playbook-dynamic-dns.md:34 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-playbook-dynamic-dns.md:36 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-dynamic-dns.md:38 +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-dynamic-dns.md:40 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-dynamic-dns.md:42 +msgid "`roles/custom/matrix-dynamic-dns/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-dynamic-dns.md:44 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:28 +#: ../../../docs/configuring-playbook-dynamic-dns.md:46 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:35 +#: ../../../docs/configuring-playbook-dynamic-dns.md:53 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:37 +#: ../../../docs/configuring-playbook-dynamic-dns.md:55 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:39 +#: ../../../docs/configuring-playbook-dynamic-dns.md:57 msgid "Additional Reading" msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:41 +#: ../../../docs/configuring-playbook-dynamic-dns.md:59 msgid "Additional resources:" msgstr "" -#: ../../../docs/configuring-playbook-dynamic-dns.md:43 +#: ../../../docs/configuring-playbook-dynamic-dns.md:61 msgid "https://matrix.org/docs/guides/free-small-matrix-server" msgstr "" + +#: ../../../docs/configuring-playbook-dynamic-dns.md:62 +msgid "https://github.com/linuxserver/docker-ddclient" +msgstr "" + +#: ../../../docs/configuring-playbook-dynamic-dns.md:64 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-dynamic-dns.md:66 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-element-admin.pot b/i18n/translation-templates/docs/configuring-playbook-element-admin.pot new file mode 100644 index 000000000..b2ed8efbb --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-element-admin.pot @@ -0,0 +1,113 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-element-admin.md:8 +msgid "Setting up Element Admin (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:10 +msgid "The playbook can install and configure [Element Admin](https://github.com/element-hq/element-admin) for you." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:12 +msgid "Element Admin is a web-based administration panel for Synapse and [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md)." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:14 +msgid "See the project's [documentation](https://github.com/element-hq/element-admin) to learn more." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:16 +msgid "💡 **Note**: This project is still very young and doesn't have many features. For now, it's recommended to use [Synapse Admin](./configuring-playbook-synapse-admin.md) instead. Deployments that use [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) can use Element Admin for user-management (something that Synapse Admin can't do), while continuing to use Synapse Admin for all other purposes." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:18 +msgid "Prerequisites" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:20 +msgid "A [Synapse](configuring-playbook-synapse.md) homeserver with its Admin API enabled (the playbook automatically enables it for you when you enable Element Admin)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:21 +msgid "[Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) with its Admin API enabled (the playbook automatically enables it for you when you enable Element Admin)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:23 +msgid "Decide on a domain and path" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:25 +msgid "By default, the Element Admin is configured to be served on the `admin.element.example.com` domain." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:27 +msgid "If you'd like to run Element Admin on another hostname, see the [Adjusting the Element Admin URL](#adjusting-the-element-admin-url-optional) section below." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:29 +msgid "Adjusting DNS records (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:31 +msgid "By default, this playbook installs Element Admin on the `admin.element.` subdomain (`admin.element.example.com`) and requires you to create a `CNAME` record for `admin.element`, which targets `matrix.example.com`." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:33 +msgid "When setting these values, replace `example.com` with your own." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:35 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:37 +msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:43 +msgid "Adjusting the Element Admin URL (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:45 +msgid "By tweaking the `matrix_element_admin_hostname` variable, you can easily make the service available at a **different hostname** than the default one." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:47 +msgid "Example additional configuration for your `vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:53 +msgid "[!WARNING] A `matrix_element_admin_path_prefix` variable is also available and mean to let you configure a path prefix for the Element Admin service, but **Element Admin does not support running under a sub-path yet**." +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:56 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:58 +msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:65 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-element-admin.md:67 +msgid "`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." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-element-call.pot b/i18n/translation-templates/docs/configuring-playbook-element-call.pot new file mode 100644 index 000000000..a0ed18321 --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-element-call.pot @@ -0,0 +1,245 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-element-call.md:8 +msgid "Setting up Element Call (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:10 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:12 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:14 +msgid "See the project's [documentation](https://github.com/element-hq/element-call) to learn more." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:16 +msgid "Prerequisites" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:18 +msgid "A [Synapse](configuring-playbook-synapse.md) homeserver (see the warning below)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:19 +msgid "The [Matrix RTC (Real-Time Communication) stack](configuring-playbook-matrix-rtc.md) (automatically done when Element Call is enabled)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:20 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:21 +msgid "(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)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:23 +msgid "[!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**." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:26 +msgid "Decide between Element Call vs just the Matrix RTC stack" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:28 +msgid "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**." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:31 +msgid "💡 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." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:33 +msgid "The playbook makes a distinction 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**." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "Description / Variable" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "Element Call frontend" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "[LiveKit Server](configuring-playbook-livekit-server.md)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "[LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "Description" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "Static website that provides the Element Call UI (but often embedded by clients)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "Scalable, multi-user conferencing solution based on WebRTC" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "A helper component that allows Element Call to integrate with LiveKit Server" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "Required for Element Call to function" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "No" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "Yes" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "`matrix_element_call_enabled`" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "✅ Installed" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "`matrix_rtc_enabled`" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:0 +msgid "❌ Not Installed, but usually unnecessary" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:42 +msgid "All documentation below assumes that you've decided to install Element Call and not just the Matrix RTC stack." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:44 +msgid "Decide on a domain and path" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:46 +msgid "By default, the Element Call frontend is configured to be served on the `call.element.example.com` domain." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:48 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:50 +msgid "Adjusting DNS records" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:52 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:54 +msgid "When setting these values, replace `example.com` with your own." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:56 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:58 +msgid "Adjusting firewall rules" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:60 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:62 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:64 +msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:72 +msgid "Adjusting the Element Call URL (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:74 +msgid "By tweaking the `matrix_element_call_hostname` variable, you can easily make the service available at a **different hostname** than the default one." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:76 +msgid "Example additional configuration for your `vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:82 +msgid "[!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)." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:85 +msgid "Allowing guests to use Element Call (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:87 +msgid "By default, Element Call can only be used by people having accounts on your Matrix server." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:89 +msgid "If you'd like guests to be able to use Element Call as well, you need to enable guest accounts support for your homeserver." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:91 +msgid "[!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." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:95 +msgid "For [Synapse](configuring-playbook-synapse.md) (the default homeserver implementation), the configuration is like this:" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:101 +msgid "For [Dendrite](configuring-playbook-dendrite.md), the configuration is like this:" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:107 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:109 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:116 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:118 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:120 +msgid "Usage" +msgstr "" + +#: ../../../docs/configuring-playbook-element-call.md:122 +msgid "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)." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-email.pot b/i18n/translation-templates/docs/configuring-playbook-email.pot index 997f2f7cc..4317db3ab 100644 --- a/i18n/translation-templates/docs/configuring-playbook-email.pot +++ b/i18n/translation-templates/docs/configuring-playbook-email.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,74 +16,114 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-email.md:1 +#: ../../../docs/configuring-playbook-email.md:10 msgid "Adjusting email-sending settings (optional)" msgstr "" -#: ../../../docs/configuring-playbook-email.md:3 -msgid "By default, this playbook sets up an [Exim](https://www.exim.org/) email server through which all Matrix services send emails." +#: ../../../docs/configuring-playbook-email.md:12 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-email.md:5 -msgid "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.)" +#: ../../../docs/configuring-playbook-email.md:14 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-email.md:7 -msgid "By default, emails are sent from `matrix@matrix.example.com`, as specified by the `exim_relay_sender_address` playbook variable." +#: ../../../docs/configuring-playbook-email.md:16 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-email.md:9 -msgid "[!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)." +#: ../../../docs/configuring-playbook-email.md:17 +msgid "🌐 [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" msgstr "" -#: ../../../docs/configuring-playbook-email.md:12 -msgid "💡 To improve deliverability, we recommend [relaying email through another SMTP server](#relaying-email-through-another-smtp-server) anyway." +#: ../../../docs/configuring-playbook-email.md:18 +msgid "📁 `roles/galaxy/exim_relay/docs/configuring-exim-relay.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)" msgstr "" -#: ../../../docs/configuring-playbook-email.md:14 +#: ../../../docs/configuring-playbook-email.md:20 msgid "Firewall settings" msgstr "" -#: ../../../docs/configuring-playbook-email.md:16 -msgid "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)." +#: ../../../docs/configuring-playbook-email.md:22 +msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-email.md:18 +#: ../../../docs/configuring-playbook-email.md:24 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:26 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-email.md:20 -msgid "Relaying email through another SMTP server" +#: ../../../docs/configuring-playbook-email.md:28 +msgid "Enable DKIM authentication to improve deliverability (optional)" msgstr "" -#: ../../../docs/configuring-playbook-email.md:22 -msgid "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):" +#: ../../../docs/configuring-playbook-email.md:30 +msgid "By default, exim-relay attempts to deliver emails directly. This may or may not work, depending on your domain configuration." +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:32 +msgid "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." msgstr "" #: ../../../docs/configuring-playbook-email.md:34 -msgid "**Note**: only the secure submission protocol (using `STARTTLS`, usually on port `587`) is supported. **SMTPS** (encrypted SMTP, usually on port `465`) **is not supported**." +msgid "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." msgstr "" #: ../../../docs/configuring-playbook-email.md:36 -msgid "Sending emails using Sendgrid" +msgid "💡 If you cannot enable DKIM, SPF, or DMARC on your domain for some reason, we recommend relaying email through another SMTP server." msgstr "" #: ../../../docs/configuring-playbook-email.md:38 -msgid "An easy and free SMTP service to set up is [Sendgrid](https://sendgrid.com/). Its free tier allows for up to 100 emails per day to be sent." +msgid "Relaying email through another SMTP server (optional)" msgstr "" #: ../../../docs/configuring-playbook-email.md:40 -msgid "To set it up, add the following configuration to your `vars.yml` file (adapt to your needs):" +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-email.md:57 -msgid "Troubleshooting" +#: ../../../docs/configuring-playbook-email.md:42 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-email.md:59 -msgid "If you're having trouble with email not being delivered, it may be useful to inspect the mailer logs." +#: ../../../docs/configuring-playbook-email.md:44 +msgid "Disable mail service (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:46 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:52 +msgid "Note that disabling exim-relay will stop email-notifications and other similar functions from working." +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:54 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:56 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:58 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:65 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:67 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-email.md:69 +msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-email.md:61 -msgid "To do so, log in to the server with SSH and run `journalctl -f -u matrix-exim-relay`." +#: ../../../docs/configuring-playbook-email.md:71 +msgid "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." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-email2matrix.pot b/i18n/translation-templates/docs/configuring-playbook-email2matrix.pot index 351bb45a2..7b43a00f9 100644 --- a/i18n/translation-templates/docs/configuring-playbook-email2matrix.pot +++ b/i18n/translation-templates/docs/configuring-playbook-email2matrix.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,258 +16,22 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-email2matrix.md:1 -msgid "Setting up Email2Matrix (optional, deprecated)" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:3 -msgid "**Note**: this component has been deprecated. We recommend not bothering with installing it. While not a 1:1 replacement, 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). Consider using that component instead of this one." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:5 -msgid "The playbook can install and configure [Email2Matrix](https://github.com/devture/email2matrix) for you." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:7 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:9 -msgid "Preparation" -msgstr "" - #: ../../../docs/configuring-playbook-email2matrix.md:11 -msgid "Port availability" +msgid "Setting up Email2Matrix (optional, removed)" msgstr "" #: ../../../docs/configuring-playbook-email2matrix.md:13 -msgid "Ensure that port 25 is available on your Matrix server and open in your firewall." +msgid "🪦 The playbook used to be able to install and configure [Email2Matrix](https://github.com/devture/email2matrix), but no longer includes this component." msgstr "" #: ../../../docs/configuring-playbook-email2matrix.md:15 -msgid "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)." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:17 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:19 -msgid "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)." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:21 -msgid "Register a dedicated Matrix user (optional, recommended)" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:23 -msgid "We recommend that you create a dedicated Matrix user for Email2Matrix." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:25 -msgid "Generate a strong password for the user. You can create one with a command like `pwgen -s 64 1`." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:27 -msgid "You can use the playbook to [register a new user](registering-users.md):" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:33 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:35 -msgid "Obtain an access token" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:37 -msgid "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)." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:39 -msgid "[!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." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:42 -msgid "Join to rooms as the sender user manually" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:44 -msgid "ℹ️ **Email2Matrix does not accept room invitations automatically**. To deliver messages to rooms, the sender user must be joined to all rooms manually." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:46 -msgid "For each new room you would like the user to deliver messages to, invite the user to the room." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:48 -msgid "Then, log in as the sender user using any Matrix client of your choosing, accept the room invitation from the user's account." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:50 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:52 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:54 -msgid "Adjusting DNS records" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:56 -msgid "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:" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "Type" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "Host" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "Priority" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "Weight" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "Port" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "Target" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "MX" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "`matrix`" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "10" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "0" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "-" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:0 -msgid "`matrix.example.com`" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:62 -msgid "Adjusting the playbook configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:64 -msgid "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)." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:90 -msgid "where:" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:92 -msgid "MailboxName — local-part of the email address, through which emails are bridged to the room whose ID is defined with MatrixRoomId" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:93 -msgid "MatrixRoomId — internal ID of the room, to which received emails are sent as Matrix message" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:94 -msgid "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" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:95 -msgid "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)" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:96 -msgid "MatrixAccessToken — sender user's access token" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:97 -msgid "IgnoreSubject — if set to \"true\", the subject is not bridged to Matrix" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:98 -msgid "IgnoreBody — if set to \"true\", the message body is not bridged to Matrix" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:99 -msgid "SkipMarkdown — if set to \"true\", emails are bridged as plain text Matrix message instead of Markdown (actually HTML)" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:101 -msgid "Refer to the official documentation [here](https://github.com/devture/email2matrix/blob/master/docs/configuration.md)." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:103 -msgid "Extending the configuration" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:105 -msgid "There are some additional things you may wish to configure about the component." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:107 -msgid "Take a look at:" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:109 -msgid "`roles/custom/matrix-email2matrix/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:111 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:113 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:120 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:122 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-service email2matrix` or `just setup-all`" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:124 -msgid "`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." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:126 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:128 -msgid "Troubleshooting" -msgstr "" - -#: ../../../docs/configuring-playbook-email2matrix.md:130 -msgid "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-email2matrix`." +msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-email2matrix.md:132 -msgid "Increase logging verbosity" +#: ../../../docs/configuring-playbook-email2matrix.md:18 +msgid "Uninstalling Email2Matrix manually" msgstr "" -#: ../../../docs/configuring-playbook-email2matrix.md:134 -msgid "If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:" +#: ../../../docs/configuring-playbook-email2matrix.md:20 +msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-etherpad.pot b/i18n/translation-templates/docs/configuring-playbook-etherpad.pot index 42642e43d..2682b812a 100644 --- a/i18n/translation-templates/docs/configuring-playbook-etherpad.pot +++ b/i18n/translation-templates/docs/configuring-playbook-etherpad.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,154 +16,146 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-etherpad.md:1 +#: ../../../docs/configuring-playbook-etherpad.md:13 msgid "Setting up Etherpad (optional)" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:3 +#: ../../../docs/configuring-playbook-etherpad.md:15 msgid "The playbook can install and configure [Etherpad](https://etherpad.org) for you." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:5 +#: ../../../docs/configuring-playbook-etherpad.md:17 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:7 -msgid "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." +#: ../../../docs/configuring-playbook-etherpad.md:19 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:9 -msgid "Adjusting DNS records" +#: ../../../docs/configuring-playbook-etherpad.md:21 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:11 -msgid "By default, this playbook installs Etherpad on the `etherpad.` subdomain (`etherpad.example.com`) and requires you to create a CNAME record for `etherpad`, which targets `matrix.example.com`." +#: ../../../docs/configuring-playbook-etherpad.md:23 +msgid "🌐 [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" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:13 -msgid "When setting, replace `example.com` with your own." +#: ../../../docs/configuring-playbook-etherpad.md:24 +msgid "📁 `roles/galaxy/etherpad/docs/configuring-etherpad.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:15 -msgid "Adjusting the playbook configuration" +#: ../../../docs/configuring-playbook-etherpad.md:26 +msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:17 -msgid "To enable Etherpad, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +#: ../../../docs/configuring-playbook-etherpad.md:28 +msgid "By default, this playbook installs Etherpad on the `etherpad.` subdomain (`etherpad.example.com`) and requires you to create a CNAME record for `etherpad`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:27 -msgid "Adjusting the Etherpad URL (optional)" +#: ../../../docs/configuring-playbook-etherpad.md:30 +msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:29 -msgid "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." +#: ../../../docs/configuring-playbook-etherpad.md:32 +msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:31 -msgid "Example additional configuration for your `vars.yml` file:" +#: ../../../docs/configuring-playbook-etherpad.md:34 +msgid "To enable Etherpad, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:42 -msgid "After changing the domain, **you may need to adjust your DNS** records to point the Etherpad domain to the Matrix server." +#: ../../../docs/configuring-playbook-etherpad.md:52 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:44 -msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." +#: ../../../docs/configuring-playbook-etherpad.md:54 +msgid "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))." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:46 -msgid "Configure the default text (optional)" +#: ../../../docs/configuring-playbook-etherpad.md:56 +msgid "Create admin user (optional)" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:48 -msgid "You can also edit the default text on a new pad with the variable `etherpad_default_pad_text`." +#: ../../../docs/configuring-playbook-etherpad.md:58 +msgid "You probably might want to enable authentication to disallow anonymous access to your Etherpad." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:50 -msgid "To do so, add the following configuration to your `vars.yml` file (adapt to your needs):" +#: ../../../docs/configuring-playbook-etherpad.md:60 +msgid "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." msgstr "" #: ../../../docs/configuring-playbook-etherpad.md:62 -msgid "Extending the configuration" +msgid "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." msgstr "" #: ../../../docs/configuring-playbook-etherpad.md:64 -msgid "There are some additional things you may wish to configure about the component." +msgid "Adjusting the Etherpad URL (optional)" msgstr "" #: ../../../docs/configuring-playbook-etherpad.md:66 -msgid "Take a look at:" +msgid "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." msgstr "" #: ../../../docs/configuring-playbook-etherpad.md:68 -msgid "[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" -msgstr "" - -#: ../../../docs/configuring-playbook-etherpad.md:70 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-etherpad.md:72 -msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" +msgid "Example additional configuration for your `vars.yml` file:" msgstr "" #: ../../../docs/configuring-playbook-etherpad.md:79 -msgid "**Notes**:" +msgid "After changing the domain, **you may need to adjust your DNS** records to point the Etherpad domain to the Matrix server." msgstr "" #: ../../../docs/configuring-playbook-etherpad.md:81 -msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the Etherpad admin user (`etherpad_admin_username`)." +msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." msgstr "" #: ../../../docs/configuring-playbook-etherpad.md:83 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgid "Installing" msgstr "" #: ../../../docs/configuring-playbook-etherpad.md:85 -msgid "`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." +msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:87 -msgid "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." +#: ../../../docs/configuring-playbook-etherpad.md:92 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:89 -msgid "Usage" +#: ../../../docs/configuring-playbook-etherpad.md:94 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:91 -msgid "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`." +#: ../../../docs/configuring-playbook-etherpad.md:96 +msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:93 -msgid "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." +#: ../../../docs/configuring-playbook-etherpad.md:98 +msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:95 -msgid "Managing / Deleting old pads" +#: ../../../docs/configuring-playbook-etherpad.md:100 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:97 -msgid "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." +#: ../../../docs/configuring-playbook-etherpad.md:102 +msgid "💡 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." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:99 -msgid "After logging in to the admin web UI, go to the plugin manager page, and install the `adminpads2` plugin." +#: ../../../docs/configuring-playbook-etherpad.md:104 +msgid "Integrating a Etherpad widget in a room" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:101 -msgid "Once the plugin is installed, you should have a \"Manage pads\" section in the UI." +#: ../../../docs/configuring-playbook-etherpad.md:106 +msgid "**Note**: this is how it works in Element Web. It might work quite similar with other clients:" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:103 -msgid "Integrating a Etherpad widget in a room" +#: ../../../docs/configuring-playbook-etherpad.md:108 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:105 -msgid "**Note**: this is how it works in Element Web. It might work quite similar with other clients:" +#: ../../../docs/configuring-playbook-etherpad.md:110 +msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-etherpad.md:107 -msgid "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." +#: ../../../docs/configuring-playbook-etherpad.md:112 +msgid "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." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-external-postgres.pot b/i18n/translation-templates/docs/configuring-playbook-external-postgres.pot index 36d391f14..5421aad9f 100644 --- a/i18n/translation-templates/docs/configuring-playbook-external-postgres.pot +++ b/i18n/translation-templates/docs/configuring-playbook-external-postgres.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,30 +16,30 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-external-postgres.md:1 +#: ../../../docs/configuring-playbook-external-postgres.md:8 msgid "Using an external PostgreSQL server (optional)" msgstr "" -#: ../../../docs/configuring-playbook-external-postgres.md:3 +#: ../../../docs/configuring-playbook-external-postgres.md:10 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-external-postgres.md:5 +#: ../../../docs/configuring-playbook-external-postgres.md:12 msgid "**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**." msgstr "" -#: ../../../docs/configuring-playbook-external-postgres.md:7 +#: ../../../docs/configuring-playbook-external-postgres.md:14 msgid "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):" msgstr "" -#: ../../../docs/configuring-playbook-external-postgres.md:23 +#: ../../../docs/configuring-playbook-external-postgres.md:30 msgid "The database (as specified in `matrix_synapse_database_database`) must exist and be accessible with the given credentials. It must be empty or contain a valid Synapse database. If empty, Synapse would populate it the first time it runs." msgstr "" -#: ../../../docs/configuring-playbook-external-postgres.md:25 +#: ../../../docs/configuring-playbook-external-postgres.md:32 msgid "**Note**: the external server that you specify in `matrix_synapse_database_host` must be accessible from within the `matrix-synapse` Docker container (and possibly other containers too). This means that it either needs to be a publicly accessible hostname or that it's a hostname on the same Docker network where all containers installed by this playbook run (a network called `matrix` by default). Using a local PostgreSQL instance on the host (running on the same machine, but not in a container) is not possible." msgstr "" -#: ../../../docs/configuring-playbook-external-postgres.md:27 +#: ../../../docs/configuring-playbook-external-postgres.md:34 msgid "The connection to your external Postgres server **will not be SSL encrypted**, as [we don't support that yet](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/89)." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-federation.pot b/i18n/translation-templates/docs/configuring-playbook-federation.pot index 05f38f5f7..acdf377a3 100644 --- a/i18n/translation-templates/docs/configuring-playbook-federation.pot +++ b/i18n/translation-templates/docs/configuring-playbook-federation.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,70 +16,70 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-federation.md:1 +#: ../../../docs/configuring-playbook-federation.md:9 msgid "Controlling Matrix federation (optional)" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:3 +#: ../../../docs/configuring-playbook-federation.md:11 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-federation.md:5 -msgid "**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." +#: ../../../docs/configuring-playbook-federation.md:13 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-federation.md:7 +#: ../../../docs/configuring-playbook-federation.md:15 msgid "Federating only with select servers" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:9 +#: ../../../docs/configuring-playbook-federation.md:17 msgid "To make your server only federate with servers of your choosing, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:17 +#: ../../../docs/configuring-playbook-federation.md:25 msgid "If you wish to disable federation, you can do that with an empty list (`[]`), or better yet by completely disabling federation (see below)." msgstr "" -#: ../../../docs/configuring-playbook-federation.md:19 +#: ../../../docs/configuring-playbook-federation.md:27 msgid "Exposing the room directory over federation" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:21 +#: ../../../docs/configuring-playbook-federation.md:29 msgid "By default, your server's public rooms directory is not exposed to other servers via federation." msgstr "" -#: ../../../docs/configuring-playbook-federation.md:23 +#: ../../../docs/configuring-playbook-federation.md:31 msgid "To expose it, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:29 +#: ../../../docs/configuring-playbook-federation.md:37 msgid "Disabling federation" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:31 +#: ../../../docs/configuring-playbook-federation.md:39 msgid "To completely disable federation, isolating your server from the rest of the Matrix network, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:37 +#: ../../../docs/configuring-playbook-federation.md:45 msgid "With that, your server's users will only be able to talk among themselves, but not to anyone who is on another server." msgstr "" -#: ../../../docs/configuring-playbook-federation.md:39 +#: ../../../docs/configuring-playbook-federation.md:47 msgid "**Disabling federation does not necessarily disable the federation port** (`8448`). Services like [Dimension](configuring-playbook-dimension.md) and [ma1sd](configuring-playbook-ma1sd.md) normally rely on `openid` APIs exposed on that port. Even if you disable federation and only if necessary, we may still be exposing the federation port and serving the `openid` APIs there. To override this and completely disable Synapse's federation port use:" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:51 +#: ../../../docs/configuring-playbook-federation.md:59 msgid "Changing the federation port from 8448 to a different port to use a CDN that only accepts 443/80 ports" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:53 +#: ../../../docs/configuring-playbook-federation.md:61 msgid "Why? This change could be useful for people running small Synapse instances on small severs/VPSes to avoid being impacted by a simple DOS/DDOS when bandwidth, RAM, an CPU resources are limited and if your hosting provider does not provide a DOS/DDOS protection." msgstr "" -#: ../../../docs/configuring-playbook-federation.md:55 +#: ../../../docs/configuring-playbook-federation.md:63 msgid "To make it possible to proxy the federation through a CDN such as CloudFlare or any other, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-federation.md:66 +#: ../../../docs/configuring-playbook-federation.md:74 msgid "**Use this at you own risk as all the possible side-effects of doing this are not fully known. However, it has been tested and works fine and passes all the tests on without issues.**" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-jitsi.pot b/i18n/translation-templates/docs/configuring-playbook-jitsi.pot index 387e81761..f541f0e34 100644 --- a/i18n/translation-templates/docs/configuring-playbook-jitsi.pot +++ b/i18n/translation-templates/docs/configuring-playbook-jitsi.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,486 +16,158 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-jitsi.md:1 +#: ../../../docs/configuring-playbook-jitsi.md:17 msgid "Setting up the Jitsi video-conferencing platform (optional)" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:3 +#: ../../../docs/configuring-playbook-jitsi.md:19 msgid "The playbook can install and configure the [Jitsi](https://jitsi.org/) video-conferencing platform for you." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:5 -msgid "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." +#: ../../../docs/configuring-playbook-jitsi.md:21 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:7 -msgid "See the project's [documentation](https://jitsi.github.io/handbook/) to learn what it does and why it might be useful to you." +#: ../../../docs/configuring-playbook-jitsi.md:23 +msgid "💡 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." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:9 -msgid "**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/)." +#: ../../../docs/configuring-playbook-jitsi.md:25 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:11 -msgid "Prerequisites" +#: ../../../docs/configuring-playbook-jitsi.md:26 +msgid "🌐 [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" +msgstr "" + +#: ../../../docs/configuring-playbook-jitsi.md:27 +msgid "📁 `roles/galaxy/jitsi/docs/configuring-jitsi.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:13 -msgid "You may need to open the following ports to your server:" +#: ../../../docs/configuring-playbook-jitsi.md:29 +msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:15 -msgid "`4443/tcp` — RTP media fallback over TCP" +#: ../../../docs/configuring-playbook-jitsi.md:31 +msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:16 -msgid "`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))." +#: ../../../docs/configuring-playbook-jitsi.md:33 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:18 +#: ../../../docs/configuring-playbook-jitsi.md:35 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:20 +#: ../../../docs/configuring-playbook-jitsi.md:37 msgid "By default, this playbook installs Jitsi on the `jitsi.` subdomain (`jitsi.example.com`) and requires you to create a CNAME record for `jitsi`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:22 +#: ../../../docs/configuring-playbook-jitsi.md:39 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:24 +#: ../../../docs/configuring-playbook-jitsi.md:41 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:26 -msgid "To enable Jitsi, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:32 -msgid "Adjusting the Jitsi URL (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:34 -msgid "By tweaking the `jitsi_hostname` variable, you can easily make the service available at a **different hostname** than the default one." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:36 -msgid "Example additional configuration for your `vars.yml` file:" -msgstr "" - #: ../../../docs/configuring-playbook-jitsi.md:43 -msgid "After changing the domain, **you may need to adjust your DNS** records to point the Jitsi domain to the Matrix server." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:45 -msgid "Configure Jitsi authentication and guests mode (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:47 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:49 -msgid "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)." +msgid "To enable Jitsi, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:51 -msgid "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." +#: ../../../docs/configuring-playbook-jitsi.md:61 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:53 -msgid "**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." +#: ../../../docs/configuring-playbook-jitsi.md:63 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:55 -msgid "Authenticate using Jitsi accounts: Auth-Type `internal` (recommended)" +#: ../../../docs/configuring-playbook-jitsi.md:65 +msgid "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))." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:57 -msgid "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." +#: ../../../docs/configuring-playbook-jitsi.md:67 +msgid "Enable authentication and guests mode (optional)" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:59 -msgid "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." +#: ../../../docs/configuring-playbook-jitsi.md:69 +msgid "By default the Jitsi Meet instance **does not require for anyone to log in, and is open to use without an account**." msgstr "" #: ../../../docs/configuring-playbook-jitsi.md:71 -msgid "**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." +msgid "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." msgstr "" #: ../../../docs/configuring-playbook-jitsi.md:73 -msgid "Authenticate using Matrix OpenID: Auth-Type `matrix`" +msgid "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)](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." msgstr "" #: ../../../docs/configuring-playbook-jitsi.md:75 -msgid "[!WARNING] This breaks the Jitsi instance on federated rooms probably and does not allow sharing conference links with guests." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:78 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:80 -msgid "To enable authentication with Matrix OpenID, add the following configuration to your `vars.yml` file:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:88 -msgid "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)." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:90 -msgid "Authenticate using LDAP: Auth-Type `ldap`" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:92 -msgid "To enable authentication with LDAP, add the following configuration to your `vars.yml` file (adapt to your needs):" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:112 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:114 -msgid "Configure `JVB_ADVERTISE_IPS` for running behind NAT or on a LAN environment (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:116 -msgid "When running Jitsi in a LAN environment, or on the public Internet via NAT, the `JVB_ADVERTISE_IPS` enviornment variable should be set." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:118 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:120 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:122 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:129 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:131 -msgid "Set a maximum number of participants on a Jitsi conference (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:133 -msgid "You can set a maximum number of participants allowed to join a Jitsi conference. By default the number is not specified." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:135 -msgid "To set it, add the following configuration to your `vars.yml` file (adapt to your needs):" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:141 msgid "Enable Gravatar (optional)" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:143 +#: ../../../docs/configuring-playbook-jitsi.md:77 msgid "In the default Jisti Meet configuration, `gravatar.com` is enabled as an avatar service." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:145 -msgid "Since the Element clients send the URL of configured Matrix avatars to the Jitsi instance, our default configuration has disabled the Gravatar service." +#: ../../../docs/configuring-playbook-jitsi.md:79 +msgid "Since the Element clients send the URL of configured Matrix avatars to the Jitsi instance, our configuration has disabled the Gravatar service." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:147 -msgid "To enable the Gravatar service, add the following configuration to your `vars.yml` file:" +#: ../../../docs/configuring-playbook-jitsi.md:81 +msgid "To enable the Gravatar service nevertheless, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:153 +#: ../../../docs/configuring-playbook-jitsi.md:87 msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:156 -msgid "Fine tune Jitsi (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:158 -msgid "If you'd like to have Jitsi save up resources, add the following configuration to your `vars.yml` file (adapt to your needs):" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:171 -msgid "These configurations:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:173 -msgid "**limit the maximum video resolution**, to save up resources on both server and clients" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:174 -msgid "**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/)." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:175 -msgid "**disable audio levels** to avoid excessive refresh of the client-side page and decrease the CPU consumption involved" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:176 -msgid "**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)." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:178 -msgid "Example configurations" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:180 -msgid "Here is an example set of configurations for running a Jitsi instance with:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:182 -msgid "authentication using a Jitsi account (username: `US3RNAME`, password: `passw0rd`)" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:183 -msgid "guests: allowed" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:184 -msgid "maximum participants: 6 people" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:185 -msgid "fine tuning with the configurations presented above" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:186 -msgid "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))" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:206 +#: ../../../docs/configuring-playbook-jitsi.md:90 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:208 +#: ../../../docs/configuring-playbook-jitsi.md:92 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:215 +#: ../../../docs/configuring-playbook-jitsi.md:99 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:217 +#: ../../../docs/configuring-playbook-jitsi.md:101 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:219 +#: ../../../docs/configuring-playbook-jitsi.md:103 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:221 +#: ../../../docs/configuring-playbook-jitsi.md:105 msgid "You can use the self-hosted Jitsi server in multiple ways:" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:223 +#: ../../../docs/configuring-playbook-jitsi.md:107 msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:225 -msgid "**directly (without any Matrix integration)**. Just go to `https://jitsi.example.com`" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:227 -msgid "Set up additional JVBs for more video-conferences (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:229 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:231 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:233 -msgid "Add the `jitsi_jvb_servers` section on `hosts` file" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:235 -msgid "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:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:242 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:244 -msgid "You could add JVB hosts as many as you would like. When doing so, add lines with the details of them." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:246 -msgid "Prepare `vars.yml` files for additional JVBs" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:248 -msgid "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`)." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:250 -msgid "Note that most (if not all) variables are common for both servers." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:252 -msgid "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)." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:254 -msgid "Set the server ID to each JVB" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:256 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:258 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:260 -msgid "To set the server ID to `jvb-2`, add the following configuration to either `hosts` or `vars.yml` files (adapt to your needs)." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:262 -msgid "On `hosts`:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:264 -msgid "Add `jitsi_jvb_server_id=jvb-2` after your JVB's external IP addresses as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:272 -msgid "On `vars.yml` files:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:278 -msgid "Alternatively, you can specify the variable as a parameter to [the ansible command](#run-the-playbook)." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:280 -msgid "**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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:282 -msgid "Set colibri WebSocket port" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:284 -msgid "The additional JVBs will need to expose the colibri WebSocket port." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:286 -msgid "To expose the port, add the following configuration to your `vars.yml` files:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:292 -msgid "Set Prosody XMPP server" +#: ../../../docs/configuring-playbook-jitsi.md:109 +msgid "**directly (without any Matrix integration)**. Just go to `https://jitsi.example.com`, and you can start a videoconference." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:294 -msgid "The JVB will also need to know the location of the Prosody XMPP server." +#: ../../../docs/configuring-playbook-jitsi.md:111 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:296 -msgid "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`." +#: ../../../docs/configuring-playbook-jitsi.md:113 +msgid "Check [the official user guide](https://jitsi.github.io/handbook/docs/category/user-guide) for details about how to use Jitsi." msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:298 -msgid "Set the Matrix domain" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:300 -msgid "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:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:306 -msgid "Set an IP address of the Matrix server" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:308 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:310 -msgid "To set the IP address of the Matrix server, add the following configuration to your `vars.yml` files:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:316 -msgid "Expose XMPP port" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:318 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:320 -msgid "To expose the port and have Docker forward the port, add the following configuration to your `vars.yml` files:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:326 -msgid "Reverse-proxy with Traefik" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:328 -msgid "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`):" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:364 -msgid "Run the playbook" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:366 -msgid "After configuring `hosts` and `vars.yml` files, run the playbook with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:372 +#: ../../../docs/configuring-playbook-jitsi.md:115 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-jitsi.md:374 -msgid "`Error: Account creation/modification not supported`" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:376 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:378 -msgid "In this case, you should consider to rebuild your Jitsi installation." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:380 -msgid "Rebuilding your Jitsi installation" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:382 -msgid "If you ever run into any trouble or if you have changed configuration (`jitsi_*` variables) too much, you can rebuild your Jitsi installation." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:384 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:386 -msgid "To rebuild your Jitsi configuration, follow the procedure below:" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:388 -msgid "run this command locally to stop all Jitsi services: `just run-tags stop-group --extra-vars=group=jitsi`" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:389 -msgid "log in the server with SSH" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:390 -msgid "run this command remotely to remove all Jitsi configuration & data: `rm -rf /matrix/jitsi`" -msgstr "" - -#: ../../../docs/configuring-playbook-jitsi.md:391 -msgid "run this command locally to set up Jitsi anew and restart services: `just install-service jitsi`" +#: ../../../docs/configuring-playbook-jitsi.md:117 +msgid "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." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-jwt-service.pot b/i18n/translation-templates/docs/configuring-playbook-jwt-service.pot new file mode 100644 index 000000000..6b0397eb9 --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-jwt-service.pot @@ -0,0 +1,93 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-jwt-service.md:8 +msgid "Setting up JWT Service (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:10 +msgid "The playbook can install and configure [LiveKit JWT Service](https://github.com/element-hq/lk-jwt-service) for you." +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:12 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:14 +msgid "See the project's [documentation](https://github.com/element-hq/lk-jwt-service/) to learn more." +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:16 +msgid "Decide on a domain and path" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:18 +msgid "By default, JWT Service is configured to be served:" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:20 +msgid "on the Matrix domain (`matrix.example.com`), configurable via `matrix_livekit_jwt_service_hostname`" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:21 +msgid "under a `/livekit-jwt-service` path prefix, configurable via `matrix_livekit_jwt_service_path_prefix`" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:23 +msgid "This makes it easy to set it up, **without** having to adjust your DNS records manually." +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:25 +msgid "Adjusting DNS records" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:27 +msgid "If you've changed the default hostname, **you may need to adjust your DNS** records accordingly to point to the correct server." +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:29 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:31 +msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:37 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:39 +msgid "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`" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:41 +msgid "Usage" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:43 +msgid "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`)." +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:45 +msgid "Additional Information" +msgstr "" + +#: ../../../docs/configuring-playbook-jwt-service.md:47 +msgid "Refer to the LiveKit JWT-Service documentation for more details on configuring and using JWT Service." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-ldap-auth.pot b/i18n/translation-templates/docs/configuring-playbook-ldap-auth.pot index c3f60aca0..26f87346c 100644 --- a/i18n/translation-templates/docs/configuring-playbook-ldap-auth.pot +++ b/i18n/translation-templates/docs/configuring-playbook-ldap-auth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,46 +16,58 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-ldap-auth.md:1 +#: ../../../docs/configuring-playbook-ldap-auth.md:10 msgid "Setting up the LDAP authentication password provider module (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:3 +#: ../../../docs/configuring-playbook-ldap-auth.md:12 msgid "The playbook can install and configure the [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3) LDAP Auth password provider for you." msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:5 +#: ../../../docs/configuring-playbook-ldap-auth.md:14 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:7 -msgid "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):" +#: ../../../docs/configuring-playbook-ldap-auth.md:16 +msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:24 +#: ../../../docs/configuring-playbook-ldap-auth.md:18 +msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):" +msgstr "" + +#: ../../../docs/configuring-playbook-ldap-auth.md:35 msgid "Authenticating only using a password provider" msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:26 -msgid "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:" +#: ../../../docs/configuring-playbook-ldap-auth.md:37 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-ldap-auth.md:43 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-ldap-auth.md:45 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:32 -msgid "Using ma1sd Identity Server for authentication (not recommended)" +#: ../../../docs/configuring-playbook-ldap-auth.md:52 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:34 -msgid "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." +#: ../../../docs/configuring-playbook-ldap-auth.md:54 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:36 -msgid "If you wish to install it anyway, consult the [ma1sd Identity Server configuration](configuring-playbook-ma1sd.md#authentication)." +#: ../../../docs/configuring-playbook-ldap-auth.md:56 +msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:38 +#: ../../../docs/configuring-playbook-ldap-auth.md:58 msgid "Handling user registration" msgstr "" -#: ../../../docs/configuring-playbook-ldap-auth.md:40 +#: ../../../docs/configuring-playbook-ldap-auth.md:60 msgid "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)." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-livekit-jwt-service.pot b/i18n/translation-templates/docs/configuring-playbook-livekit-jwt-service.pot new file mode 100644 index 000000000..599809c4d --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-livekit-jwt-service.pot @@ -0,0 +1,45 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-livekit-jwt-service.md:7 +msgid "Setting up LiveKit JWT Service (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-jwt-service.md:9 +msgid "The playbook can install and configure [LiveKit JWT Service](https://github.com/element-hq/lk-jwt-service/) for you." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-jwt-service.md:11 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-jwt-service.md:13 +msgid "💡 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." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-jwt-service.md:15 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-jwt-service.md:17 +msgid "`roles/custom/matrix-livekit-jwt-service/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-jwt-service.md:18 +msgid "`roles/custom/matrix-livekit-jwt-service/templates/env.j2` for the component's default configuration." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-livekit-server.pot b/i18n/translation-templates/docs/configuring-playbook-livekit-server.pot new file mode 100644 index 000000000..e730ec8c0 --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-livekit-server.pot @@ -0,0 +1,85 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-livekit-server.md:8 +msgid "Setting up LiveKit Server (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:10 +msgid "The playbook can install and configure [LiveKit Server](https://github.com/livekit/livekit) for you." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:12 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:14 +msgid "💡 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." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:16 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:17 +msgid "🌐 [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" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:18 +msgid "📁 `roles/galaxy/livekit-server/docs/configuring-livekit-server.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:20 +msgid "Adjusting firewall rules" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:22 +msgid "To ensure LiveKit Server functions correctly, the following firewall rules and port forwarding settings are required:" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:24 +msgid "`7881/tcp`: ICE/TCP" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:26 +msgid "`7882/udp`: ICE/UDP Mux" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:28 +msgid "`3479/udp`: TURN/UDP. Also see the [Limitations](#limitations) section below." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:30 +msgid "`5350/tcp`: TURN/TCP. Also see the [Limitations](#limitations) section below." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:32 +msgid "💡 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." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:34 +msgid "Limitations" +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:36 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-livekit-server.md:38 +msgid "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)." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-ma1sd.pot b/i18n/translation-templates/docs/configuring-playbook-ma1sd.pot index daceadecc..ba02c6fd8 100644 --- a/i18n/translation-templates/docs/configuring-playbook-ma1sd.pot +++ b/i18n/translation-templates/docs/configuring-playbook-ma1sd.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,206 +16,214 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-ma1sd.md:1 +#: ../../../docs/configuring-playbook-ma1sd.md:12 msgid "Setting up ma1sd Identity Server (optional)" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:3 -msgid "**⚠️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)." +#: ../../../docs/configuring-playbook-ma1sd.md:14 +msgid "[!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**." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:5 +#: ../../../docs/configuring-playbook-ma1sd.md:17 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-ma1sd.md:19 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:7 +#: ../../../docs/configuring-playbook-ma1sd.md:21 msgid "ma1sd is used for 3PIDs (3rd party identifiers like E-mail and phone numbers) and some [enhanced features](https://github.com/ma1uta/ma1sd/#features). It is private by default, potentially at the expense of user discoverability." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:9 +#: ../../../docs/configuring-playbook-ma1sd.md:23 msgid "See the project's [documentation](https://github.com/ma1uta/ma1sd/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:11 +#: ../../../docs/configuring-playbook-ma1sd.md:25 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:13 +#: ../../../docs/configuring-playbook-ma1sd.md:27 msgid "Open Matrix Federation port" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:15 +#: ../../../docs/configuring-playbook-ma1sd.md:29 msgid "Enabling the ma1sd service will automatically reconfigure your Synapse homeserver to expose the `openid` API endpoints on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. If you enable the component, make sure that the port is accessible." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:17 +#: ../../../docs/configuring-playbook-ma1sd.md:31 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:19 +#: ../../../docs/configuring-playbook-ma1sd.md:33 msgid "To make the ma1sd Identity Server enable its federation features, set up a SRV record that looks like this:" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:21 +#: ../../../docs/configuring-playbook-ma1sd.md:35 msgid "Name: `_matrix-identity._tcp` (use this text as-is)" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:22 +#: ../../../docs/configuring-playbook-ma1sd.md:36 msgid "Content: `10 0 443 matrix.example.com` (replace `example.com` with your own)" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:24 +#: ../../../docs/configuring-playbook-ma1sd.md:38 msgid "See [ma1sd's documentation](https://github.com/ma1uta/ma1sd/wiki/mxisd-and-your-privacy#choices-are-never-easy) for information on the privacy implications of setting up this SRV record." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:26 +#: ../../../docs/configuring-playbook-ma1sd.md:40 msgid "When setting up a SRV record, if you are asked for a service and protocol instead of a hostname split the host value from the table where the period is. For example use service as `_matrix-identity` and protocol as `_tcp`." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:28 +#: ../../../docs/configuring-playbook-ma1sd.md:42 msgid "**Note**: This `_matrix-identity._tcp` SRV record for the identity server is different from the `_matrix._tcp` that can be used for Synapse delegation. See [howto-server-delegation.md](howto-server-delegation.md) for more information about delegation." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:30 +#: ../../../docs/configuring-playbook-ma1sd.md:44 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:32 +#: ../../../docs/configuring-playbook-ma1sd.md:46 msgid "To enable ma1sd, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:38 +#: ../../../docs/configuring-playbook-ma1sd.md:52 msgid "Matrix.org lookup forwarding" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:40 +#: ../../../docs/configuring-playbook-ma1sd.md:54 msgid "To ensure maximum discovery, you can make your identity server also forward lookups to the central matrix.org Identity server (at the cost of potentially leaking all your contacts information)." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:42 +#: ../../../docs/configuring-playbook-ma1sd.md:56 msgid "Enabling this is discouraged and you'd better [learn more](https://github.com/ma1uta/ma1sd/blob/master/docs/features/identity.md#lookups) before proceeding." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:44 +#: ../../../docs/configuring-playbook-ma1sd.md:58 msgid "To enable matrix.org forwarding, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:50 -msgid "Additional features" +#: ../../../docs/configuring-playbook-ma1sd.md:64 +msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:52 -msgid "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." +#: ../../../docs/configuring-playbook-ma1sd.md:66 +msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:54 -msgid "A few variables can be toggled in this playbook to alter the ma1sd configuration that gets generated." +#: ../../../docs/configuring-playbook-ma1sd.md:68 +msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:56 -msgid "Still, ma1sd can do much more. You can refer to the [ma1sd website](https://github.com/ma1uta/ma1sd) for more details and configuration options." +#: ../../../docs/configuring-playbook-ma1sd.md:70 +msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:58 -msgid "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." +#: ../../../docs/configuring-playbook-ma1sd.md:72 +msgid "You can refer to the [ma1sd website](https://github.com/ma1uta/ma1sd) for more details and configuration options." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:60 +#: ../../../docs/configuring-playbook-ma1sd.md:74 msgid "Customizing email templates" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:62 +#: ../../../docs/configuring-playbook-ma1sd.md:76 msgid "If you'd like to change the default email templates used by ma1sd, take a look at the `matrix_ma1sd_threepid_medium_email_custom_` variables (in the `roles/custom/matrix-ma1sd/defaults/main.yml` file." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:64 +#: ../../../docs/configuring-playbook-ma1sd.md:78 msgid "ma1sd-controlled Registration" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:66 +#: ../../../docs/configuring-playbook-ma1sd.md:80 msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:68 +#: ../../../docs/configuring-playbook-ma1sd.md:82 msgid "`matrix_synapse_enable_registration` — to enable user-initiated registration in Synapse" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:70 +#: ../../../docs/configuring-playbook-ma1sd.md:84 msgid "`matrix_synapse_enable_registration_captcha` — to validate registering users using reCAPTCHA, as described in the [enabling reCAPTCHA](configuring-captcha.md) documentation." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:72 +#: ../../../docs/configuring-playbook-ma1sd.md:86 msgid "`matrix_synapse_registrations_require_3pid` — a list of 3pid types (among `'email'`, `'msisdn'`) required by the Synapse server for registering" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:74 +#: ../../../docs/configuring-playbook-ma1sd.md:88 msgid "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" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:76 +#: ../../../docs/configuring-playbook-ma1sd.md:90 msgid "`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`." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:78 +#: ../../../docs/configuring-playbook-ma1sd.md:92 msgid "**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)." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:80 +#: ../../../docs/configuring-playbook-ma1sd.md:94 msgid "Authentication" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:82 +#: ../../../docs/configuring-playbook-ma1sd.md:96 msgid "[Authentication](https://github.com/ma1uta/ma1sd/blob/master/docs/features/authentication.md) provides the possibility to use your own [Identity Stores](https://github.com/ma1uta/ma1sd/blob/master/docs/stores/README.md) (for example LDAP) to authenticate users on your Homeserver." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:84 +#: ../../../docs/configuring-playbook-ma1sd.md:98 msgid "To enable authentication against an LDAP server, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:104 +#: ../../../docs/configuring-playbook-ma1sd.md:118 msgid "Example: SMS verification" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:106 +#: ../../../docs/configuring-playbook-ma1sd.md:120 msgid "If your use case requires mobile verification, it is quite simple to integrate ma1sd with [Twilio](https://www.twilio.com/), an online telephony services gateway. Their prices are reasonable for low-volume projects and integration can be done with the following configuration:" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:120 +#: ../../../docs/configuring-playbook-ma1sd.md:134 msgid "Example: Open Registration for every Domain" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:122 +#: ../../../docs/configuring-playbook-ma1sd.md:136 msgid "If you want to open registration for any domain, you have to setup the allowed domains with ma1sd's `blacklist` and `whitelist`. The default behavior when neither the `blacklist`, nor the `whitelist` match, is to allow registration. Beware: you can't block toplevel domains (aka `.xy`) because the internal architecture of ma1sd doesn't allow that." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:136 +#: ../../../docs/configuring-playbook-ma1sd.md:150 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:138 +#: ../../../docs/configuring-playbook-ma1sd.md:152 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:145 +#: ../../../docs/configuring-playbook-ma1sd.md:159 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:147 +#: ../../../docs/configuring-playbook-ma1sd.md:161 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:149 +#: ../../../docs/configuring-playbook-ma1sd.md:163 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:151 +#: ../../../docs/configuring-playbook-ma1sd.md:165 msgid "If email address validation emails sent by ma1sd are not reaching you, you should look into [Adjusting email-sending settings](configuring-playbook-email.md)." msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:153 -msgid "If you'd like additional logging information, temporarily enable verbose logging for ma1sd." +#: ../../../docs/configuring-playbook-ma1sd.md:167 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-ma1sd.md:169 +msgid "Increase logging verbosity" msgstr "" -#: ../../../docs/configuring-playbook-ma1sd.md:155 -msgid "To enable it, add the following configuration to your `vars.yml` file:" +#: ../../../docs/configuring-playbook-ma1sd.md:171 +msgid "If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-matrix-authentication-service.pot b/i18n/translation-templates/docs/configuring-playbook-matrix-authentication-service.pot index 3e94a3a36..7c14da04e 100644 --- a/i18n/translation-templates/docs/configuring-playbook-matrix-authentication-service.pot +++ b/i18n/translation-templates/docs/configuring-playbook-matrix-authentication-service.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,128 +16,112 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:1 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:8 msgid "Setting up Matrix Authentication Service (optional)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:3 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:10 msgid "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/)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:5 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:12 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:7 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:14 msgid "**Before going through with starting to use Matrix Authentication Service**, make sure to read:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:9 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:16 msgid "the [Reasons to use Matrix Authentication Service](#reasons-to-use-matrix-authentication-service) section below" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:10 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:17 msgid "the [Expectations](#expectations) section below" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:11 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:18 msgid "the [FAQ section on areweoidcyet.com](https://areweoidcyet.com/#faqs)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:13 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:20 msgid "**If you've already been using Synapse** and have user accounts in its database, you can [migrate to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:15 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:22 msgid "Reasons to use Matrix Authentication Service" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:17 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:24 msgid "You may be wondering whether you should make the switch to Matrix Authentication Service (MAS) or keep using your existing authentication flow via Synapse (password-based or [OIDC](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on)-enabled)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:19 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:26 msgid "Matrix Authentication Service is **still an experimental service** and **not a default** for this Ansible playbook." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:21 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:28 msgid "The [Expectations](#expectations) section contains a list of what works and what doesn't (**some services don't work with MAS yet**), as well as the **relative irreversability** of the migration process." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:23 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:30 msgid "Below, we'll try to **highlight some potential reasons for switching** to Matrix Authentication Service:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:25 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:32 msgid "To use SSO in [Element X](https://element.io/blog/element-x-ignition/). The old [Synapse OIDC](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on) login flow is only supported in old Element clients and will not be supported in Element X. Element X will only support the new SSO-based login flow provided by MAS, so if you want to use SSO with Element X, you will need to switch to MAS." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:27 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:34 msgid "To help drive adoption of the \"Next-generation auth for Matrix\" by switching to what's ultimately coming anyway" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:29 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:36 msgid "To help discover (and potentially fix) MAS integration issues with this Ansible playbook" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:31 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:38 msgid "To help discover (and potentially fix) MAS integration issues with various other Matrix components (bridges, bots, clients, etc.)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:33 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:40 msgid "To reap some of the security benefits that Matrix Authentication Service offers, as outlined in the [Better authentication, session management and permissions in Matrix](https://matrix.org/blog/2023/09/better-auth/) article." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:35 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:42 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:37 -msgid "⚠️ 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." -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:39 -msgid "⚠️ **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." +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:44 +msgid "⚠️ 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 with Matrix Authentication Service yet." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:41 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:46 msgid "❌ **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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:43 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:48 msgid "Expectations" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:45 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:50 msgid "This section details what you can expect when switching to the Matrix Authentication Service (MAS)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:47 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:52 msgid "❌ **Synapse password providers will need to be disabled**. You can no longer use [shared-secret-auth](./configuring-playbook-shared-secret-auth.md), [rest-auth](./configuring-playbook-rest-auth.md), [LDAP auth](./configuring-playbook-ldap-auth.md), etc. When the authentication flow is handled by MAS (not by Synapse anymore), it doesn't make sense to extend the Synapse authentication flow with additional modules. Many bridges used to rely on shared-secret-auth for doing double-puppeting (impersonating other users), but most (at least the mautrix bridges) nowadays use [Appservice Double Puppet](./configuring-playbook-appservice-double-puppet.md) as a better alternative. Older/maintained bridges may still rely on shared-secret-auth, as do other services like [matrix-corporal](./configuring-playbook-matrix-corporal.md)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:49 -msgid "❌ Certain **tools like [synapse-admin](./configuring-playbook-synapse-admin.md) do not have full compatibility with MAS yet**. synapse-admin already supports [login with access token](https://github.com/etkecc/synapse-admin/pull/58), browsing users (which Synapse will internally fetch from MAS) and updating user avatars. However, editing users (passwords, etc.) now needs to happen directly against MAS using the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html), which synapse-admin cannot interact with yet." +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:54 +msgid "❌ Certain **tools like [Synapse Admin](./configuring-playbook-synapse-admin.md) do not have full compatibility with MAS yet**. Synapse Admin already supports OIDC auth, browsing users (which Synapse will internally fetch from MAS) and updating user avatars. However, editing users (passwords, etc.) now needs to happen directly against MAS using the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html), which Synapse Admin cannot interact with yet. You may be interested in using [Element Admin](./configuring-playbook-element-admin.md) for these purposes." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:51 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:56 msgid "❌ **Some services experience issues when authenticating via MAS**:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:53 -msgid "[Postmoogle](./configuring-playbook-bridge-postmoogle.md) works the first time around, but it consistently fails after restarting:" -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:55 -msgid "cannot initialize matrix bot error=\"olm account is marked as shared, keys seem to have disappeared from the server\"" -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:57 -msgid "[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))" -msgstr "" - #: ../../../docs/configuring-playbook-matrix-authentication-service.md:58 -msgid "Other services may be similarly affected. This list is not exhaustive." +msgid "[Reminder bot](configuring-playbook-bot-matrix-reminder-bot.md) seems to be losing some of its state on each restart and may reschedule old reminders once again" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:60 @@ -145,151 +129,143 @@ msgid "❌ **Encrypted appservices** do not work yet (related to [MSC4190](https msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:62 -msgid "⚠️ **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." +msgid "⚠️ [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." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:64 -msgid "⚠️ [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." +msgid "⚠️ Delegating user authentication to MAS causes **your Synapse server to be completely dependent 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." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:66 -msgid "⚠️ [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';`)" +msgid "⚠️ 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)." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:68 -msgid "⚠️ 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." +msgid "⚠️ 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)." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:70 -msgid "⚠️ 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)." +msgid "✅ 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." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:72 -msgid "⚠️ 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)." +msgid "✅ 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" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:74 -msgid "✅ 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." +msgid "✅ 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" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:76 -msgid "✅ 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" +msgid "✅ [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`." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:78 -msgid "✅ 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." +msgid "✅ Users that are prepared by the playbook (for bots, bridges, etc.) will continue to be registered automatically as expected. 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." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:80 -msgid "✅ [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`." +msgid "Installation flows" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:82 -msgid "✅ Users that are prepared by the playbook (for bots, bridges, etc.) will continue to be registered automatically as expected. 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." +msgid "New homeserver" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:84 -msgid "Installation flows" +msgid "For new homeservers (which don't have any users in their Synapse database yet), follow the [Adjusting the playbook configuration](#adjusting-the-playbook-configuration) instructions and then proceed with [Installing](#installing)." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:86 -msgid "New homeserver" +msgid "Existing homeserver" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:88 -msgid "For new homeservers (which don't have any users in their Synapse database yet), follow the [Adjusting the playbook configuration](#adjusting-the-playbook-configuration) instructions and then proceed with [Installing](#installing)." +msgid "Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating with Matrix Authentication Service yet." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:90 -msgid "Existing homeserver" -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:92 -msgid "Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating wtih Matrix Authentication Service yet." -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:94 msgid "For existing Synapse homeservers:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:96 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:92 msgid "when following the [Adjusting the playbook configuration](#adjusting-the-playbook-configuration) instructions, make sure to **disable the integration between Synapse and MAS** by **uncommenting** the `matrix_authentication_service_migration_in_progress: true` line as described in the [Marking an existing homeserver for migration](#marking-an-existing-homeserver-for-migration) section below." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:98 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:94 msgid "then follow the [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) instructions to perform the installation and migration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:100 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:96 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:102 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:98 msgid "By default, this playbook installs the Matrix Authentication Service on the `matrix.` subdomain, at the `/auth` path (https://matrix.example.com/auth). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:104 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:100 msgid "If you wish to adjust it, see the section [below](#adjusting-the-matrix-authentication-service-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:106 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:102 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:108 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:104 msgid "To enable Matrix Authentication Service, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:122 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:118 msgid "In the sub-sections that follow, we'll cover some additional configuration options that you may wish to adjust." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:124 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:120 msgid "There are many other configuration options available. Consult the [`defaults/main.yml` file](../roles/custom/matrix-authentication-service/defaults/main.yml) in the [matrix-authentication-service role](../roles/custom/matrix-authentication-service/) to discover them." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:126 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:122 msgid "Adjusting the Matrix Authentication Service URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:128 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:124 msgid "By tweaking the `matrix_authentication_service_hostname` and `matrix_authentication_service_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:130 -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:157 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:126 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:153 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:138 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:134 msgid "If you've changed the default hostname, you may need to create a CNAME record for the Matrix Authentication Service domain (`auth.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:140 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:136 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:142 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:138 msgid "Marking an existing homeserver for migration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:144 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:140 msgid "The [configuration above](#adjusting-the-playbook-configuration) instructs existing users wishing to migrate to add `matrix_authentication_service_migration_in_progress: true` to their configuration." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:146 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:142 msgid "This is done temporarily. The migration steps are described in more detail in the [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) section below." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:148 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:144 msgid "Upstream OAuth2 configuration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:150 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:146 msgid "To make Matrix Authentication Service delegate to an existing upstream OAuth 2.0/OIDC provider, you can use its [`upstream_oauth2.providers` setting](https://element-hq.github.io/matrix-authentication-service/reference/configuration.html#upstream_oauth2providers)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:152 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:148 msgid "The playbook exposes a `matrix_authentication_service_config_upstream_oauth2_providers` variable for controlling this setting." msgstr "" @@ -318,301 +294,317 @@ msgid "remove all Synapse OIDC-related configuration (`matrix_synapse_oidc_*`) t msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:279 -msgid "Installing" +msgid "Extending the configuration" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:281 -msgid "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:" +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:283 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:285 +msgid "`roles/custom/matrix-authentication-service/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:286 +msgid "`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" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:288 -msgid "**Notes**:" +msgid "Installing" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:290 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:297 +msgid "**Notes**:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:299 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:292 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:301 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:294 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:303 msgid "If you're in the process of migrating an existing Synapse homeserver to MAS, you should now follow the rest of the steps in the [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) guide." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:296 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:305 msgid "💡 After installation, you should [verify that Matrix Authentication Service is installed correctly](#verify-that-matrix-authentication-service-is-installed-correctly)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:298 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:307 msgid "Migrating an existing Synapse homeserver to Matrix Authentication Service" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:300 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:309 msgid "Our migration guide is loosely based on the upstream [Migrating an existing homeserver](https://element-hq.github.io/matrix-authentication-service/setup/migration.html) guide." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:302 -msgid "Migration is done via a tool called `syn2mas`, which the playbook could run for you (in a container)." +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:311 +msgid "Migration is done via a sub-command called `syn2mas`, which the playbook could run for you (in a container)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:304 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:313 msgid "The installation + migration steps are like this:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:306 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:315 msgid "[Adjust your configuration](#adjusting-the-playbook-configuration) to **disable the integration between the homeserver and MAS**. This is done by **uncommenting** the `matrix_authentication_service_migration_in_progress: true` line." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:308 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:317 msgid "Perform the initial [installation](#installing). At this point:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:310 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:319 msgid "Matrix Authentication Service will be installed. Its database will be empty, so it cannot validate existing access tokens or authentication users yet." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:312 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:321 msgid "The homeserver will still continue to use its local database for validating existing access tokens." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:314 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:323 msgid "Various [compatibility layer URLs](https://element-hq.github.io/matrix-authentication-service/setup/homeserver.html#set-up-the-compatibility-layer) are not yet installed. New login sessions will still be forwarded to the homeserver, which is capable of completing them." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:316 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:325 msgid "The `matrix-user-creator` role would be suppressed, so that it doesn't automatically attempt to create users (for bots, etc.) in the MAS database. These user accounts likely already exist in Synapse's user database and could be migrated over (via syn2mas, as per the steps below), so creating them in the MAS database would have been unnecessary and potentially problematic (conflicts during the syn2mas migration)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:318 -msgid "Consider taking a full [backup of your Postgres database](./maintenance-postgres.md#backing-up-postgresql). This is done just in case. The **syn2mas migration tool does not delete any data**, so it should be possible to revert to your previous setup by merely disabling MAS and re-running the playbook (no need to restore a Postgres backup). However, do note that 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." +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:327 +msgid "Consider taking a full [backup of your Postgres database](./maintenance-postgres.md#backing-up-postgresql). This is done just in case. The **syn2mas migration command does not delete any data**, so it should be possible to revert to your previous setup by merely disabling MAS and re-running the playbook (no need to restore a Postgres backup). However, do note that 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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:320 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:329 msgid "[Migrate your data from Synapse to Matrix Authentication Service using syn2mas](#migrate-your-data-from-synapse-to-matrix-authentication-service-using-syn2mas)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:322 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:331 msgid "[Adjust your configuration](#adjusting-the-playbook-configuration) again, to:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:324 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:333 msgid "remove the `matrix_authentication_service_migration_in_progress: false` line" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:326 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:335 msgid "if you had been using [OIDC providers configured in Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on), remove all Synapse OIDC-related configuration (`matrix_synapse_oidc_*`) to prevent it being in conflict with the MAS OIDC configuration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:328 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:337 msgid "Perform the [installation](#installing) again. At this point:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:330 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:339 msgid "The homeserver will start delegating authentication to MAS." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:332 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:341 msgid "The compatibility layer URLs will be installed. New login sessions will be completed by MAS." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:334 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:343 msgid "[Verify that Matrix Authentication Service is installed correctly](#verify-that-matrix-authentication-service-is-installed-correctly)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:336 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:345 msgid "Migrate your data from Synapse to Matrix Authentication Service using syn2mas" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:338 -msgid "We **don't** ask you to [run the `syn2mas` migration advisor command](https://element-hq.github.io/matrix-authentication-service/setup/migration.html#run-the-migration-advisor), because it only gives you the green light if your Synapse configuration (`homeserver.yaml`) is configured in a way that's compatible with MAS (delegating authentication to MAS; disabling Synapse's password config; etc.). Until we migrate your data with the `syn2mas` tool, we intentionally avoid doing these changes to allow existing user sessions to work." -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:340 -msgid "You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration)." +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:347 +msgid "You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-mas-cli-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:342 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:349 msgid "Configuring syn2mas" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:344 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:351 msgid "If you're using [OIDC with Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on), you will need to [Configuring upstream OIDC provider mapping for syn2mas](#configuring-upstream-oidc-provider-mapping-for-syn2mas)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:346 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:353 msgid "If you only have local (non-OIDC) users in your Synapse database, you can likely run `syn2mas` as-is (without doing additional configuration changes)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:348 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:355 msgid "When you're done with potentially configuring `syn2mas`, proceed to doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:350 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:357 msgid "Configuring upstream OIDC provider mapping for syn2mas" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:352 -msgid "If you have existing OIDC users in your Synapse user database (which will be the case if when using [OIDC with Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on)), you may need to pass an additional `--upstreamProviderMapping` argument to the `syn2mas` tool to tell it which provider (on the Synapse side) maps to which other provider on the MAS side." -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:354 -msgid "If you don't do this, `syn2mas` would report errors like this one:" -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:356 -msgid "[FATAL] migrate - [Failed to import external id 4264b0f0-4f11-4ddd-aedb-b500e4d07c25 with oidc-keycloak for user @alice:example.com: Error: Unknown upstream provider oidc-keycloak]" +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:359 +msgid "Since Matrix Authentication Service v0.16.0 (which replaced the standalone `syn2mas` tool with a `mas-cli syn2mas` sub-command), OIDC configuration (mapping from your old OIDC configuration to your new one, etc) is meant to be configured in the Matrix Authentication Service configuration (via `matrix_authentication_service_config_upstream_oauth2_providers`) as a `synapse_idp_id` property for each provider." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:358 -msgid "Below is an example situation and a guide for how to solve it." +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:361 +msgid "You can refer to the [Map any upstream SSO providers](https://element-hq.github.io/matrix-authentication-service/setup/migration.html#map-any-upstream-sso-providers) section of the MAS documentation for figuring out how to set the `synapse_idp_id` value in `matrix_authentication_service_config_upstream_oauth2_providers` correctly." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:360 -msgid "If in `matrix_synapse_oidc_providers` your provider `idp_id` is (was) named `keycloak`, in the Synapse database users would be associated with the `oidc-keycloak` provider (note the `oidc-` prefix that was added automatically by Synapse to your `idp_id` value)." -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:362 -msgid "The same OIDC provider may have an `id` of `01HFVBY12TMNTYTBV8W921M5FA` on the MAS side, as defined in `matrix_authentication_service_config_upstream_oauth2_providers` (see the [Upstream OAuth2 configuration](#upstream-oauth2-configuration) section above)." -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:364 -msgid "To tell `syn2mas` how the Synapse-configured OIDC provider maps to the new MAS-configured OIDC provider, add this additional configuration to your `vars.yml` file:" -msgstr "" - -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:373 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:363 msgid "Performing a syn2mas dry-run" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:375 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:365 msgid "Having [configured syn2mas](#configuring-syn2mas), we recommend doing a [dry-run](https://en.wikipedia.org/wiki/Dry_run_(testing)) first to verify that everything will work out as expected." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:377 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:367 msgid "A dry-run would not cause downtime, because it avoids stopping Synapse." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:379 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:369 msgid "To perform a dry-run, run:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:385 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:375 msgid "Observe the command output (especially the last line of the the syn2mas output). If you are confident that the migration will work out as expected, you can proceed with a [real migration](#performing-a-real-syn2mas-migration)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:387 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:377 msgid "Performing a real syn2mas migration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:389 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:379 msgid "Before performing a real migration make sure:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:391 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:381 msgid "you've familiarized yourself with the [expectations](#expectations)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:393 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:383 msgid "you've performed a Postgres backup, just in case" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:395 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:385 msgid "you're aware of the irreversibility of the migration process without disruption after users have created new login sessions via the new MAS setup" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:397 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:387 msgid "you've [configured syn2mas](#configuring-syn2mas), especially if you've used [OIDC with Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:399 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:389 msgid "you've performed a [syn2mas dry-run](#performing-a-syn2mas-dry-run) and don't see any issues in its output" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:401 -msgid "To perform a real migration, run the `matrix-authentication-service-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_dry_run` variable:" +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:391 +msgid "To perform a real migration, run the `matrix-authentication-service-mas-cli-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_migrate_dry_run` variable:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:407 -msgid "Having performed a `syn2mas` migration once, trying to do it again will report errors for users that were already migrated (e.g. \"Error: Unknown upstream provider oauth-delegated\")." +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:397 +msgid "Having performed a `syn2mas` migration once, trying to do it again will report errors (e.g. \"Error: The MAS database is not empty: rows found in at least `users`. Please drop and recreate the database, then try again.\")." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:409 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:399 msgid "Verify that Matrix Authentication Service is installed correctly" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:411 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:401 msgid "After [installation](#installing), run the `doctor` subcommand of the [`mas-cli` command-line tool](https://element-hq.github.io/matrix-authentication-service/reference/cli/index.html) to verify that MAS is installed correctly." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:413 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:403 msgid "You can do it:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:415 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:405 msgid "either via the Ansible playbook's `matrix-authentication-service-mas-cli-doctor` tag: `just run-tags matrix-authentication-service-mas-cli-doctor`" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:417 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:407 msgid "or by running the `mas-cli` script on the server (which invokes the `mas-cli` tool inside a container): `/matrix/matrix-authentication-service/bin/mas-cli doctor`" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:419 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:409 msgid "If successful, you should see some output that looks like this:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:431 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:421 +msgid "Usage" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:423 msgid "Management" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:433 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:425 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:435 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:427 msgid "This documentation page already mentions:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:437 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:429 msgid "the `mas-cli doctor` sub-command in the [Verify that Matrix Authentication Service is installed correctly](#verify-that-matrix-authentication-service-is-installed-correctly) section, which you can run via the CLI and via the Ansible playbook's `matrix-authentication-service-mas-cli-doctor` tag" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:439 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:431 msgid "the `mas-cli manage register-user` sub-command in the [Registering users](./registering-users.md) documentation" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:441 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:433 msgid "There are other sub-commands available. Run `/matrix/matrix-authentication-service/bin/mas-cli` to get an overview." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:443 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:435 msgid "User registration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:445 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:437 msgid "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))." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:447 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:439 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-authentication-service.md:449 +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:441 msgid "Working around email deliverability issues" msgstr "" +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:443 +msgid "Matrix Authentication Service only sends emails when:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:445 +msgid "it verifies email addresses for users who are self-registering with a password" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:447 +msgid "a user tries to add an email to their account" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-authentication-service.md:449 +msgid "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." +msgstr "" + #: ../../../docs/configuring-playbook-matrix-authentication-service.md:451 -msgid "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." +msgid "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`)." msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:453 -msgid "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." +msgid "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`" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:455 -msgid "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`)." +msgid "Troubleshooting" msgstr "" #: ../../../docs/configuring-playbook-matrix-authentication-service.md:457 -msgid "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`" +msgid "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`." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-matrix-corporal.pot b/i18n/translation-templates/docs/configuring-playbook-matrix-corporal.pot index 2281a42ef..ebd7f8f1b 100644 --- a/i18n/translation-templates/docs/configuring-playbook-matrix-corporal.pot +++ b/i18n/translation-templates/docs/configuring-playbook-matrix-corporal.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,110 +16,146 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-matrix-corporal.md:1 +#: ../../../docs/configuring-playbook-matrix-corporal.md:9 msgid "Setting up Matrix Corporal (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:5 +#: ../../../docs/configuring-playbook-matrix-corporal.md:11 msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:10 +#: ../../../docs/configuring-playbook-matrix-corporal.md:14 msgid "The playbook can install and configure [matrix-corporal](https://github.com/devture/matrix-corporal) for you." msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:12 -msgid "In short, it's a sort of automation and firewalling service, which is helpful if you're instaling Matrix services in a controlled corporate environment." +#: ../../../docs/configuring-playbook-matrix-corporal.md:16 +msgid "In short, it's a sort of automation and firewalling service, which is helpful if you're installing Matrix services in a controlled corporate environment." msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:14 +#: ../../../docs/configuring-playbook-matrix-corporal.md:18 msgid "See the project's [documentation](https://github.com/devture/matrix-corporal/blob/main/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:16 +#: ../../../docs/configuring-playbook-matrix-corporal.md:20 msgid "If you decide that you'd like to let this playbook install it for you, you'd need to also:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:17 +#: ../../../docs/configuring-playbook-matrix-corporal.md:21 msgid "(required) [set up the Shared Secret Auth password provider module](configuring-playbook-shared-secret-auth.md)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:18 +#: ../../../docs/configuring-playbook-matrix-corporal.md:22 msgid "(optional, but encouraged) [set up the REST authentication password provider module](configuring-playbook-rest-auth.md)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:20 +#: ../../../docs/configuring-playbook-matrix-corporal.md:24 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:22 +#: ../../../docs/configuring-playbook-matrix-corporal.md:26 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:75 +#: ../../../docs/configuring-playbook-matrix-corporal.md:79 msgid "Matrix Corporal operates with a specific Matrix user on your server. By default, it's `matrix-corporal` (controllable by the `matrix_corporal_reconciliation_user_id_local_part` setting, see above)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:77 +#: ../../../docs/configuring-playbook-matrix-corporal.md:81 msgid "No matter what Matrix user ID you configure to run it with, make sure that:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:79 +#: ../../../docs/configuring-playbook-matrix-corporal.md:83 msgid "the Matrix Corporal user is created by [registering it](registering-users.md) **with administrator privileges**. Use a password you remember, as you'll need to log in from time to time to create or join rooms" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:81 +#: ../../../docs/configuring-playbook-matrix-corporal.md:85 msgid "the Matrix Corporal user is joined and has Admin/Moderator-level access to any rooms you want it to manage" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:83 +#: ../../../docs/configuring-playbook-matrix-corporal.md:87 msgid "Using a locally-stored static policy" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:85 +#: ../../../docs/configuring-playbook-matrix-corporal.md:89 msgid "If you'd like to use a [static policy file](https://github.com/devture/matrix-corporal/blob/master/docs/policy-providers.md#static-file-pull-style-policy-provider), you can use a configuration like this:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:117 +#: ../../../docs/configuring-playbook-matrix-corporal.md:121 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:119 +#: ../../../docs/configuring-playbook-matrix-corporal.md:123 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-corporal.md:125 +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-corporal.md:127 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-corporal.md:129 +msgid "`roles/custom/matrix-corporal/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-corporal.md:130 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-corporal.md:132 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:121 +#: ../../../docs/configuring-playbook-matrix-corporal.md:134 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:128 +#: ../../../docs/configuring-playbook-matrix-corporal.md:141 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just run-tags setup-aux-files,setup-corporal,start` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:130 +#: ../../../docs/configuring-playbook-matrix-corporal.md:143 msgid "`just run-tags setup-aux-files,setup-corporal,start` 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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:132 +#: ../../../docs/configuring-playbook-matrix-corporal.md:145 msgid "Matrix Corporal files" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:134 +#: ../../../docs/configuring-playbook-matrix-corporal.md:147 msgid "The following local filesystem paths are mounted in the `matrix-corporal` container and can be used in your configuration (or policy):" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:136 +#: ../../../docs/configuring-playbook-matrix-corporal.md:149 msgid "`/matrix/corporal/config` is mounted at `/etc/matrix-corporal` (read-only)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:138 +#: ../../../docs/configuring-playbook-matrix-corporal.md:151 msgid "`/matrix/corporal/var` is mounted at `/var/matrix-corporal` (read and write)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:140 +#: ../../../docs/configuring-playbook-matrix-corporal.md:153 msgid "`/matrix/corporal/cache` is mounted at `/var/cache/matrix-corporal` (read and write)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-corporal.md:142 +#: ../../../docs/configuring-playbook-matrix-corporal.md:155 msgid "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)." msgstr "" + +#: ../../../docs/configuring-playbook-matrix-corporal.md:157 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-corporal.md:159 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-corporal.md:161 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-corporal.md:163 +msgid "If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-matrix-ldap-registration-proxy.pot b/i18n/translation-templates/docs/configuring-playbook-matrix-ldap-registration-proxy.pot index dac8cafae..53e9bcf43 100644 --- a/i18n/translation-templates/docs/configuring-playbook-matrix-ldap-registration-proxy.pot +++ b/i18n/translation-templates/docs/configuring-playbook-matrix-ldap-registration-proxy.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,46 +16,74 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:1 +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:9 msgid "Setting up matrix-ldap-registration-proxy (optional)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:3 +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:11 msgid "The playbook can install and configure [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) for you." msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:5 +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:13 msgid "This proxy handles Matrix registration requests and forwards them to LDAP." msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:7 +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:15 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:17 msgid "**Note**: This does support the full Matrix specification for registrations. It only provide a very coarse implementation of a basic password registration." msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:9 -msgid "Quickstart" +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:19 +msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:11 -msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:21 +msgid "To enable the component, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):" msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:22 +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:33 msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:35 +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:46 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:48 +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:50 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:52 +msgid "`roles/custom/matrix-ldap-registration-proxy/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:54 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:37 +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:56 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:44 +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:63 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:46 +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:65 msgid "`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." msgstr "" + +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:67 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-ldap-registration-proxy.md:69 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-matrix-media-repo.pot b/i18n/translation-templates/docs/configuring-playbook-matrix-media-repo.pot index d5ed3ede6..3dec466dc 100644 --- a/i18n/translation-templates/docs/configuring-playbook-matrix-media-repo.pot +++ b/i18n/translation-templates/docs/configuring-playbook-matrix-media-repo.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,149 +16,209 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:1 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:10 msgid "Storing Matrix media files using matrix-media-repo (optional)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:3 -msgid "[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." +#: ../../../docs/configuring-playbook-matrix-media-repo.md:12 +msgid "The playbook can install and configure [matrix-media-repo](https://docs.t2bot.io/matrix-media-repo/) (often abbreviated \"MMR\") for you." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:5 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:14 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:16 +msgid "**Notes**:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:17 +msgid "If MMR is enabled, other media store roles should be disabled (if using Synapse with other media store roles)." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:18 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:7 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:19 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:0 -msgid "**Table of Contents**" +#: ../../../docs/configuring-playbook-matrix-media-repo.md:21 +msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:0 -msgid "[Quickstart](#quickstart)" +#: ../../../docs/configuring-playbook-matrix-media-repo.md:23 +msgid "To enable matrix-media-repo, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:0 -msgid "[Additional configuration options](#configuring-the-media-repo)" +#: ../../../docs/configuring-playbook-matrix-media-repo.md:29 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:0 -msgid "[Importing data from an existing media store](#importing-data-from-an-existing-media-store)" +#: ../../../docs/configuring-playbook-matrix-media-repo.md:31 +msgid "Enable metrics" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:15 -msgid "Quickstart" +#: ../../../docs/configuring-playbook-matrix-media-repo.md:33 +msgid "The playbook can enable and configure the metrics of the service for you." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:17 -msgid "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:" +#: ../../../docs/configuring-playbook-matrix-media-repo.md:35 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:26 -msgid "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)." +#: ../../../docs/configuring-playbook-matrix-media-repo.md:37 +msgid "To enable the metrics, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:28 -msgid "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." +#: ../../../docs/configuring-playbook-matrix-media-repo.md:44 +msgid "**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:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:50 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:57 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:59 +msgid "**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." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:61 +msgid "Enable Grafana (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:63 +msgid "Probably you wish to enable Grafana along with Prometheus for generating graphs of the metrics." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:65 +msgid "To enable Grafana, see [this section](configuring-playbook-prometheus-grafana.md#adjusting-the-playbook-configuration-grafana) for instructions." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:67 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:69 +msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:30 -msgid "Configuring the media-repo" +#: ../../../docs/configuring-playbook-matrix-media-repo.md:71 +msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:32 -msgid "Additional common configuration options:" +#: ../../../docs/configuring-playbook-matrix-media-repo.md:73 +msgid "`roles/custom/matrix-media-repo/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:91 -msgid "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)" +#: ../../../docs/configuring-playbook-matrix-media-repo.md:75 +msgid "Here is a list of additional common configuration options:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:93 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:132 msgid "Signing Keys" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:95 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:134 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:97 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:136 msgid "The playbook default is to generate a MMR signing key when invoking the setup role and merge it with your homeserver if you are using Synapse or Dendrite. This can be disabled if desired by setting the option in your inventory:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:103 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:142 msgid "If you wish to manually generate the signing key and merge it with your homeserver's signing key file, see https://docs.t2bot.io/matrix-media-repo/v1.3.5/installation/signing-key/ for more details." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:105 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:144 msgid "**Note that if you uninstall MMR from the playbook, it will not remove the old MMR signing key from your homeserver's signing key file. You will have to remove it manually.**" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:107 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:146 msgid "Key backup and revoking" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:109 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:148 msgid "Since your homeserver signing key file is modified by the playbook, a backup will be created in `HOMESERVER_DIR/config/example.com.signing.key.backup`. If you need to remove/revoke old keys, you can restore from this backup or remove the MMR key ID from your `example.com.signing.key` file." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:111 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:150 msgid "Additionally, its recommended after revoking a signing key to update your homeserver config file (`old_signing_keys` field for Synapse and `old_private_keys` for Dendrite). See your homeserver config file for further documentation on how to populate the field." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:113 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:152 msgid "Importing data from an existing media store" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:115 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:154 msgid "If you want to add this repo to an existing homeserver managed by the playbook, you will need to import existing media into MMR's database or you will lose access to older media while it is active. MMR versions up to `v1.3.3` only support importing from Synapse, but newer versions (at time of writing: only `latest`) also support importing from Dendrite." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:117 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:156 msgid "**Before importing**: ensure you have an initial matrix-media-repo deployment by following the [quickstart](#quickstart) guide above" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:119 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:158 msgid "Depending on the homeserver implementation yu're using (Synapse, Dendrite), you'll need to use a different import tool (part of matrix-media-repo) and point it to the homeserver's database." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:121 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:160 msgid "Importing data from the Synapse media store" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:123 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:162 msgid "To import the Synapse media store, you're supposed to invoke the `import_synapse` tool which is part of the matrix-media-repo container image. Your Synapse database is called `synapse` by default, unless you've changed it by modifying `matrix_synapse_database_database`." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:125 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:164 msgid "This guide here is adapted from the [upstream documentation about the import_synapse script](https://github.com/turt2live/matrix-media-repo#importing-media-from-synapse)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:127 -#: ../../../docs/configuring-playbook-matrix-media-repo.md:149 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:166 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:188 msgid "Run the following command on the server (after replacing `postgres_connection_password` in it with the value found in your `vars.yml` file):" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:139 -#: ../../../docs/configuring-playbook-matrix-media-repo.md:161 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:178 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:200 msgid "Enter `1` for the Machine ID when prompted (you are not doing any horizontal scaling) unless you know what you're doing." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:141 -#: ../../../docs/configuring-playbook-matrix-media-repo.md:163 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:180 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:202 msgid "This should output a `msg=\"Import completed\"` when finished successfully!" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:143 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:182 msgid "Importing data from the Dendrite media store" msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:145 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:184 msgid "If you're using the [Dendrite](configuring-playbook-dendrite.md) homeserver instead of the default for this playbook (Synapse), follow this importing guide here." msgstr "" -#: ../../../docs/configuring-playbook-matrix-media-repo.md:147 +#: ../../../docs/configuring-playbook-matrix-media-repo.md:186 msgid "To import the Dendrite media store, you're supposed to invoke the `import_dendrite` tool which is part of the matrix-media-repo container image. Your Dendrite database is called `dendrite_mediaapi` by default, unless you've changed it by modifying `matrix_dendrite_media_api_database`." msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:204 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:206 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:208 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-media-repo.md:210 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-matrix-registration.pot b/i18n/translation-templates/docs/configuring-playbook-matrix-registration.pot index 638eec50f..63565c1c9 100644 --- a/i18n/translation-templates/docs/configuring-playbook-matrix-registration.pot +++ b/i18n/translation-templates/docs/configuring-playbook-matrix-registration.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,138 +16,166 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-matrix-registration.md:1 +#: ../../../docs/configuring-playbook-matrix-registration.md:9 msgid "Setting up matrix-registration (optional)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:3 -msgid "⚠️ **Warnings**:" +#: ../../../docs/configuring-playbook-matrix-registration.md:11 +msgid "[!WARNING]" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:4 +#: ../../../docs/configuring-playbook-matrix-registration.md:12 msgid "This is a poorly maintained and buggy project. It's better to avoid using it." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:5 +#: ../../../docs/configuring-playbook-matrix-registration.md:13 msgid "This is not related to [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:7 +#: ../../../docs/configuring-playbook-matrix-registration.md:15 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:9 +#: ../../../docs/configuring-playbook-matrix-registration.md:17 msgid "Use matrix-registration to **create unique registration links**, which people can use to register on your Matrix server. It allows certain people (these having a special link) to register a user account, **keeping your server's registration closed (private)**." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:11 +#: ../../../docs/configuring-playbook-matrix-registration.md:19 msgid "**matrix-registration** provides 2 things:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:13 +#: ../../../docs/configuring-playbook-matrix-registration.md:21 msgid "**an API for creating registration tokens** (unique registration links). This API can be used via `curl` or via the playbook (see [Usage](#usage) below)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:15 +#: ../../../docs/configuring-playbook-matrix-registration.md:23 msgid "**a user registration page**, where people can use these registration tokens. By default, exposed at `https://matrix.example.com/matrix-registration`" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:17 +#: ../../../docs/configuring-playbook-matrix-registration.md:25 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:19 +#: ../../../docs/configuring-playbook-matrix-registration.md:27 msgid "By default, this playbook installs the matrix-registration on the `matrix.` subdomain, at the `/matrix-registration` path (https://matrix.example.com/matrix-registration). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:21 +#: ../../../docs/configuring-playbook-matrix-registration.md:29 msgid "If you wish to adjust it, see the section [below](#adjusting-the-matrix-registration-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:23 +#: ../../../docs/configuring-playbook-matrix-registration.md:31 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:25 +#: ../../../docs/configuring-playbook-matrix-registration.md:33 msgid "To enable matrix-registration, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:34 +#: ../../../docs/configuring-playbook-matrix-registration.md:42 msgid "Adjusting the matrix-registration URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:36 +#: ../../../docs/configuring-playbook-matrix-registration.md:44 msgid "By tweaking the `matrix_registration_hostname` and `matrix_registration_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:38 +#: ../../../docs/configuring-playbook-matrix-registration.md:46 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:46 +#: ../../../docs/configuring-playbook-matrix-registration.md:54 msgid "If you've changed the default hostname, you may need to create a CNAME record for the matrix-registration domain (`registration.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:48 +#: ../../../docs/configuring-playbook-matrix-registration.md:56 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:50 +#: ../../../docs/configuring-playbook-matrix-registration.md:58 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-registration.md:60 +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-registration.md:62 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-registration.md:64 +msgid "`roles/custom/matrix-registration/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-registration.md:65 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-registration.md:67 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:52 +#: ../../../docs/configuring-playbook-matrix-registration.md:69 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:59 +#: ../../../docs/configuring-playbook-matrix-registration.md:76 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:61 +#: ../../../docs/configuring-playbook-matrix-registration.md:78 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:63 +#: ../../../docs/configuring-playbook-matrix-registration.md:80 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:65 +#: ../../../docs/configuring-playbook-matrix-registration.md:82 msgid "**matrix-registration** gets exposed at `https://matrix.example.com/matrix-registration`" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:67 +#: ../../../docs/configuring-playbook-matrix-registration.md:84 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:69 +#: ../../../docs/configuring-playbook-matrix-registration.md:86 msgid "We make the most common APIs easy to use via the playbook (see below)." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:71 +#: ../../../docs/configuring-playbook-matrix-registration.md:88 msgid "Creating registration tokens" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:73 +#: ../../../docs/configuring-playbook-matrix-registration.md:90 msgid "To **create a new user registration token (link)**, use this command:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:81 +#: ../../../docs/configuring-playbook-matrix-registration.md:98 msgid "The above command creates and returns a **one-time use** token, which **expires** on the 31st of December 2021. Adjust the `one_time` and `ex_date` variables as you see fit." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:83 +#: ../../../docs/configuring-playbook-matrix-registration.md:100 msgid "Share the unique registration link (generated by the command above) with users to let them register on your Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:85 +#: ../../../docs/configuring-playbook-matrix-registration.md:102 msgid "Listing registration tokens" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:87 +#: ../../../docs/configuring-playbook-matrix-registration.md:104 msgid "To **list the existing user registration tokens**, use this command:" msgstr "" -#: ../../../docs/configuring-playbook-matrix-registration.md:94 +#: ../../../docs/configuring-playbook-matrix-registration.md:111 msgid "The shortcut command with `just` program is also available: `just run-tags list-matrix-registration-tokens`" msgstr "" + +#: ../../../docs/configuring-playbook-matrix-registration.md:113 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-registration.md:115 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-matrix-rtc.pot b/i18n/translation-templates/docs/configuring-playbook-matrix-rtc.pot new file mode 100644 index 000000000..b3279103f --- /dev/null +++ b/i18n/translation-templates/docs/configuring-playbook-matrix-rtc.pot @@ -0,0 +1,105 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community members +# This file is distributed under the same license as the matrix-docker-ansible-deploy package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:8 +msgid "Setting up the Matrix RTC stack (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:10 +msgid "The playbook can install and configure the Matrix RTC (Real-Time Communication) stack." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:12 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:14 +msgid "💡 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." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:16 +msgid "Prerequisites" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:18 +msgid "A [Synapse](configuring-playbook-synapse.md) homeserver (see the warning below)" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:19 +msgid "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)" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:20 +msgid "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))" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:21 +msgid "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))" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:22 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:24 +msgid "[!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**." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:27 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:29 +msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:37 +msgid "Adjusting firewall rules" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:39 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:41 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:43 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:50 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:52 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:54 +msgid "Usage" +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:56 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-matrix-rtc.md:58 +msgid "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." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-nginx.pot b/i18n/translation-templates/docs/configuring-playbook-nginx.pot index 1c74a6daa..24dcf04c5 100644 --- a/i18n/translation-templates/docs/configuring-playbook-nginx.pot +++ b/i18n/translation-templates/docs/configuring-playbook-nginx.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,10 +16,10 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-nginx.md:1 +#: ../../../docs/configuring-playbook-nginx.md:12 msgid "Configure Nginx (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-nginx.md:3 +#: ../../../docs/configuring-playbook-nginx.md:14 msgid "Since 2024-01, this playbook no longer uses nginx as its reverse-proxy." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-ntfy.pot b/i18n/translation-templates/docs/configuring-playbook-ntfy.pot index cf5cfefce..cb046230a 100644 --- a/i18n/translation-templates/docs/configuring-playbook-ntfy.pot +++ b/i18n/translation-templates/docs/configuring-playbook-ntfy.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,218 +16,258 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-ntfy.md:1 +#: ../../../docs/configuring-playbook-ntfy.md:12 msgid "Setting up the ntfy push notifications server (optional)" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:3 -msgid "The playbook can install and configure the [ntfy](https://ntfy.sh/) push notifications server for you." +#: ../../../docs/configuring-playbook-ntfy.md:14 +msgid "The playbook can install and configure the [ntfy](https://ntfy.sh/) (pronounced \"notify\") push notifications server for you." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:5 -msgid "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." +#: ../../../docs/configuring-playbook-ntfy.md:16 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:7 -msgid "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." +#: ../../../docs/configuring-playbook-ntfy.md:18 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:9 -msgid "**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." +#: ../../../docs/configuring-playbook-ntfy.md:20 +msgid "See the project's [documentation](https://docs.ntfy.sh/) to learn what ntfy does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:11 -msgid "Adjusting DNS records" +#: ../../../docs/configuring-playbook-ntfy.md:22 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:13 -msgid "By default, this playbook installs ntfy on the `ntfy.` subdomain (`ntfy.example.com`) and requires you to create a CNAME record for `ntfy`, which targets `matrix.example.com`." +#: ../../../docs/configuring-playbook-ntfy.md:23 +msgid "🌐 [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" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:15 -msgid "When setting, replace `example.com` with your own." +#: ../../../docs/configuring-playbook-ntfy.md:24 +msgid "📁 `roles/galaxy/ntfy/docs/configuring-ntfy.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:17 -msgid "Adjusting the playbook configuration" +#: ../../../docs/configuring-playbook-ntfy.md:26 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:19 -msgid "To enable ntfy, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +#: ../../../docs/configuring-playbook-ntfy.md:28 +msgid "Improve push notification's privacy with ntfy" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:33 -msgid "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." +#: ../../../docs/configuring-playbook-ntfy.md:30 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:35 -msgid "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)." +#: ../../../docs/configuring-playbook-ntfy.md:32 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:37 -msgid "Adjusting the ntfy URL (optional)" +#: ../../../docs/configuring-playbook-ntfy.md:34 +msgid "How ntfy works with UnifiedPush" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:39 -msgid "By tweaking the `ntfy_hostname` variable, you can easily make the service available at a **different hostname** than the default one." +#: ../../../docs/configuring-playbook-ntfy.md:36 +msgid "⚠️ [UnifiedPush does not work on iOS.](https://unifiedpush.org/users/faq/#will-unifiedpush-ever-work-on-ios)" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:41 -msgid "Example additional configuration for your `vars.yml` file:" +#: ../../../docs/configuring-playbook-ntfy.md:38 +msgid "ntfy implements UnifiedPush, the standard which makes it possible to send and receive push notifications without using Google's Firebase Cloud Messaging (FCM) service." +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:40 +msgid "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)." +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:42 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:44 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:46 +msgid "Adjusting DNS records" msgstr "" #: ../../../docs/configuring-playbook-ntfy.md:48 -msgid "After changing the domain, **you may need to adjust your DNS** records to point the ntfy domain to the Matrix server." +msgid "By default, this playbook installs ntfy on the `ntfy.` subdomain (`ntfy.example.com`) and requires you to create a CNAME record for `ntfy`, which targets `matrix.example.com`." msgstr "" #: ../../../docs/configuring-playbook-ntfy.md:50 -msgid "Installing" +msgid "When setting, replace `example.com` with your own." msgstr "" #: ../../../docs/configuring-playbook-ntfy.md:52 -msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" +msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:59 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +#: ../../../docs/configuring-playbook-ntfy.md:54 +msgid "To enable a ntfy server, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:61 -msgid "`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." +#: ../../../docs/configuring-playbook-ntfy.md:72 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:63 -msgid "Usage" +#: ../../../docs/configuring-playbook-ntfy.md:74 +msgid "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))." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:65 -msgid "To make use of your ntfy installation, on Android for example, you need two things:" +#: ../../../docs/configuring-playbook-ntfy.md:76 +msgid "Adjusting the ntfy URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:67 -msgid "the `ntfy` app" +#: ../../../docs/configuring-playbook-ntfy.md:78 +msgid "By tweaking the `ntfy_hostname` variable, you can easily make the service available at a **different hostname** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:68 -msgid "a UnifiedPush-compatible Matrix app" +#: ../../../docs/configuring-playbook-ntfy.md:80 +msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:70 -msgid "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." +#: ../../../docs/configuring-playbook-ntfy.md:87 +msgid "After changing the domain, **you may need to adjust your DNS** records to point the ntfy domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:72 -msgid "Setting up the `ntfy` Android app" +#: ../../../docs/configuring-playbook-ntfy.md:89 +msgid "Enable web app (optional)" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:74 -msgid "Install the [ntfy Android app](https://ntfy.sh/docs/subscribe/phone/) from F-droid or Google Play." +#: ../../../docs/configuring-playbook-ntfy.md:91 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:75 -msgid "In its Settings -> `General: Default server`, enter your ntfy server URL, such as `https://ntfy.example.com`." +#: ../../../docs/configuring-playbook-ntfy.md:93 +msgid "**Note**: subscribing to a topic is not necessary for using the nfty server as the Push Server for UnifiedPush." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:76 -msgid "In its Settings -> `Advanced: Connection protocol`, choose `WebSockets`." +#: ../../../docs/configuring-playbook-ntfy.md:95 +msgid "To enable the web app, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:78 -msgid "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." +#: ../../../docs/configuring-playbook-ntfy.md:101 +msgid "See [the official documentation](https://docs.ntfy.sh/subscribe/web/) for details about how to use it." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:80 -msgid "Setting up a UnifiedPush-compatible Matrix app" +#: ../../../docs/configuring-playbook-ntfy.md:103 +msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:82 -msgid "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." +#: ../../../docs/configuring-playbook-ntfy.md:105 +msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:84 -msgid "Steps needed for specific Matrix apps:" +#: ../../../docs/configuring-playbook-ntfy.md:112 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:86 -msgid "FluffyChat-android:" +#: ../../../docs/configuring-playbook-ntfy.md:114 +msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:87 -msgid "Should auto-detect and use it. No manual settings." +#: ../../../docs/configuring-playbook-ntfy.md:116 +msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:89 -msgid "SchildiChat-android:" +#: ../../../docs/configuring-playbook-ntfy.md:118 +msgid "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 Distributor, **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 notifications are \"distributed\" from it." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:90 -msgid "enable `Settings` -> `Notifications` -> `UnifiedPush: Force custom push gateway`." +#: ../../../docs/configuring-playbook-ntfy.md:120 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:91 -msgid "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.)*" +#: ../../../docs/configuring-playbook-ntfy.md:122 +msgid "⚠️ 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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:92 -msgid "verify `Settings` -> `Notifications` -> `UnifiedPush: Notification targets` as described below in the \"Troubleshooting\" section." +#: ../../../docs/configuring-playbook-ntfy.md:124 +msgid "Setting up a UnifiedPush-compatible Matrix client" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:94 -msgid "Element-android v1.4.26+:" +#: ../../../docs/configuring-playbook-ntfy.md:126 +msgid "Having configured the ntfy Android app, you can configure a UnifiedPush-compatible Matrix client on the same device." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:95 -msgid "choose `Settings` -> `Notifications` -> `Notification method` -> `ntfy`" +#: ../../../docs/configuring-playbook-ntfy.md:128 +msgid "Steps needed for specific Matrix clients:" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:96 -msgid "verify `Settings` -> `Troubleshoot` -> `Troubleshoot notification settings`" +#: ../../../docs/configuring-playbook-ntfy.md:130 +msgid "FluffyChat-Android: this should auto-detect and use the app. No manual settings required." +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:132 +msgid "SchildiChat-Android:" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:98 -msgid "If the Matrix app asks, \"Choose a distributor: FCM Fallback or ntfy\", then choose \"ntfy\"." +#: ../../../docs/configuring-playbook-ntfy.md:133 +msgid "enable `Settings` -> `Notifications` -> `UnifiedPush: Force custom push gateway`." +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:134 +msgid "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.)*" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:100 -msgid "If the Matrix app doesn't seem to pick it up, try restarting it and try the Troubleshooting section below." +#: ../../../docs/configuring-playbook-ntfy.md:135 +msgid "verify `Settings` -> `Notifications` -> `UnifiedPush: Notification targets` as described below in the \"Troubleshooting\" section." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:102 -msgid "Web App" +#: ../../../docs/configuring-playbook-ntfy.md:137 +msgid "Element-Android v1.4.26+:" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:104 -msgid "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)." +#: ../../../docs/configuring-playbook-ntfy.md:138 +msgid "choose `Settings` -> `Notifications` -> `Notification method` -> `ntfy`" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:106 -msgid "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." +#: ../../../docs/configuring-playbook-ntfy.md:139 +msgid "verify `Settings` -> `Troubleshoot` -> `Troubleshoot notification settings`" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:108 +#: ../../../docs/configuring-playbook-ntfy.md:141 +msgid "If the Matrix client asks, \"Choose a distributor: FCM Fallback or ntfy\", then choose \"ntfy\"." +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:143 +msgid "If the Matrix client doesn't seem to pick it up, try restarting it and try the Troubleshooting section below." +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:145 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:110 -msgid "First check that the Matrix client app you are using supports UnifiedPush. There may well be different variants of the app." +#: ../../../docs/configuring-playbook-ntfy.md:147 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:112 -msgid "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`." +#: ../../../docs/configuring-playbook-ntfy.md:149 +msgid "Check the Matrix client" msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:114 -msgid "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." +#: ../../../docs/configuring-playbook-ntfy.md:151 +msgid "Make sure that the Matrix client you are using supports UnifiedPush. There may well be different variants of the app." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:116 +#: ../../../docs/configuring-playbook-ntfy.md:153 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:155 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:118 +#: ../../../docs/configuring-playbook-ntfy.md:157 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ntfy.md:120 -msgid "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." +#: ../../../docs/configuring-playbook-ntfy.md:159 +msgid "Check the service's logs" +msgstr "" + +#: ../../../docs/configuring-playbook-ntfy.md:161 +msgid "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." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-own-webserver.pot b/i18n/translation-templates/docs/configuring-playbook-own-webserver.pot index 30f57b0ae..9347dbddb 100644 --- a/i18n/translation-templates/docs/configuring-playbook-own-webserver.pot +++ b/i18n/translation-templates/docs/configuring-playbook-own-webserver.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,174 +16,174 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-own-webserver.md:1 +#: ../../../docs/configuring-playbook-own-webserver.md:19 msgid "Using your own webserver, instead of this playbook's Traefik reverse-proxy (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:3 +#: ../../../docs/configuring-playbook-own-webserver.md:21 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:5 +#: ../../../docs/configuring-playbook-own-webserver.md:23 msgid "Traefik" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:7 +#: ../../../docs/configuring-playbook-own-webserver.md:25 msgid "[Traefik](https://traefik.io/) is the default reverse-proxy for the playbook since [2023-02-26](../CHANGELOG.md/#2023-02-26) and serves **2 purposes**:" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:9 +#: ../../../docs/configuring-playbook-own-webserver.md:27 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:11 -msgid "assists internal communication between addon services (briges, bots, etc.) and the homeserver via an internal entrypoint (`matrix-internal-matrix-client-api`)." +#: ../../../docs/configuring-playbook-own-webserver.md:29 +msgid "assists internal communication between addon services (bridges, bots, etc.) and the homeserver via an internal entrypoint (`matrix-internal-matrix-client-api`)." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:13 +#: ../../../docs/configuring-playbook-own-webserver.md:31 msgid "There are 2 ways to use Traefik with this playbook, as described below." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:15 +#: ../../../docs/configuring-playbook-own-webserver.md:33 msgid "Traefik managed by the playbook" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:17 +#: ../../../docs/configuring-playbook-own-webserver.md:35 msgid "To have the playbook install and use Traefik, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:25 +#: ../../../docs/configuring-playbook-own-webserver.md:41 msgid "Traefik will manage SSL certificates for all services seamlessly." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:27 +#: ../../../docs/configuring-playbook-own-webserver.md:43 msgid "Traefik managed by you" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:53 +#: ../../../docs/configuring-playbook-own-webserver.md:69 msgid "In this mode all roles will still have Traefik labels attached. You will, however, need to configure your Traefik instance and its entrypoints." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:55 +#: ../../../docs/configuring-playbook-own-webserver.md:71 msgid "By default, the playbook configured a `default` certificate resolver and multiple entrypoints." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:57 +#: ../../../docs/configuring-playbook-own-webserver.md:73 msgid "You need to configure 4 entrypoints for your Traefik server:" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:59 +#: ../../../docs/configuring-playbook-own-webserver.md:75 msgid "`web` (TCP port `80`) — used for redirecting to HTTPS (`web-secure`)" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:60 +#: ../../../docs/configuring-playbook-own-webserver.md:76 msgid "`web-secure` (TCP port `443`) — used for exposing the Matrix Client-Server API and all other services" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:61 +#: ../../../docs/configuring-playbook-own-webserver.md:77 msgid "`matrix-federation` (TCP port `8448`) — used for exposing the Matrix Federation API" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:62 +#: ../../../docs/configuring-playbook-own-webserver.md:78 msgid "`matrix-internal-matrix-client-api` (TCP port `8008`) — used internally for addon services (bridges, bots) to communicate with the homserver" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:64 +#: ../../../docs/configuring-playbook-own-webserver.md:80 msgid "Below is some configuration for running Traefik yourself, although we recommend using [Traefik managed by the playbook](#traefik-managed-by-the-playbook)." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:66 +#: ../../../docs/configuring-playbook-own-webserver.md:82 msgid "Note that this configuration on its own does **not** redirect traffic on port 80 (plain HTTP) to port 443 for HTTPS. If you are not already doing this in Traefik, it can be added to Traefik in a [file provider](https://docs.traefik.io/v2.0/providers/file/) as follows:" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:86 +#: ../../../docs/configuring-playbook-own-webserver.md:102 msgid "You can use the following `docker-compose.yml` as example to launch Traefik." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:122 +#: ../../../docs/configuring-playbook-own-webserver.md:138 msgid "Another webserver" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:124 +#: ../../../docs/configuring-playbook-own-webserver.md:140 msgid "If you don't wish to use Traefik, you can also use your own webserver." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:126 +#: ../../../docs/configuring-playbook-own-webserver.md:142 msgid "Doing this is possible, but requires manual work." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:128 +#: ../../../docs/configuring-playbook-own-webserver.md:144 msgid "There are 2 ways to go about it:" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:130 +#: ../../../docs/configuring-playbook-own-webserver.md:146 msgid "(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" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:132 +#: ../../../docs/configuring-playbook-own-webserver.md:148 msgid "(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" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:134 +#: ../../../docs/configuring-playbook-own-webserver.md:150 msgid "Fronting the integrated reverse-proxy webserver with another reverse-proxy" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:136 +#: ../../../docs/configuring-playbook-own-webserver.md:152 msgid "This method is about leaving the integrated reverse-proxy webserver be, but making it not get in the way (using up important ports, trying to retrieve SSL certificates, etc.)." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:138 +#: ../../../docs/configuring-playbook-own-webserver.md:154 msgid "If you wish to use another webserver, the integrated reverse-proxy webserver usually gets in the way because it attempts to fetch SSL certificates and binds to ports 80, 443 and 8448 (if Matrix Federation is enabled)." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:140 +#: ../../../docs/configuring-playbook-own-webserver.md:156 msgid "You can disable such behavior and make the integrated reverse-proxy webserver only serve traffic locally on the host itself (or over a local network)." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:142 +#: ../../../docs/configuring-playbook-own-webserver.md:158 msgid "This is the recommended way for using another reverse-proxy, because the integrated one would act as a black box and wire all Matrix services correctly. You would then only need to reverse-proxy a few individual domains and ports over to it." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:144 +#: ../../../docs/configuring-playbook-own-webserver.md:160 msgid "To front Traefik with another reverse-proxy, you would need some configuration like this:" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:194 +#: ../../../docs/configuring-playbook-own-webserver.md:210 msgid "Such a configuration would expose all services on a local port `81` and Matrix Federation on a local port `8449`. Your reverse-proxy configuration needs to send traffic to these ports. [`examples/reverse-proxies`](../examples/reverse-proxies/) contains examples for various webservers such as Apache2, Caddy, HAproxy, nginx and Nginx Proxy Manager." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:196 +#: ../../../docs/configuring-playbook-own-webserver.md:212 msgid "It's important that these webservers proxy-pass requests to the correct `ip:port` and also set the `Host` HTTP header appropriately. If you don't pass the `Host` header correctly, Traefik will return a `404 - not found` error." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:198 +#: ../../../docs/configuring-playbook-own-webserver.md:214 msgid "To put it another way:" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:199 +#: ../../../docs/configuring-playbook-own-webserver.md:215 msgid "`curl http://127.0.0.1:81` will result in a `404 - not found` error" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:200 +#: ../../../docs/configuring-playbook-own-webserver.md:216 msgid "but `curl -H 'Host: matrix.example.com' http://127.0.0.1:81` should work." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:202 +#: ../../../docs/configuring-playbook-own-webserver.md:218 msgid "Using no reverse-proxy on the Matrix side at all" msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:204 +#: ../../../docs/configuring-playbook-own-webserver.md:220 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:206 +#: ../../../docs/configuring-playbook-own-webserver.md:222 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:208 +#: ../../../docs/configuring-playbook-own-webserver.md:224 msgid "Also, the Traefik reverse-proxy, besides fronting everything is also serving a 2nd purpose of allowing addons services to communicate with the Matrix homeserver thanks to its `matrix-internal-matrix-client-api` entrypoint (read more about it above). Disabling Traefik completely means the playbook would wire services to directly talk to the homeserver. This can work for basic setups, but not for more complex setups involving [matrix-media-repo](./configuring-playbook-matrix-media-repo.md), [matrix-corporal](./configuring-playbook-matrix-corporal.md) or other such services that need to \"steal routes\" from the homeserver." msgstr "" -#: ../../../docs/configuring-playbook-own-webserver.md:210 +#: ../../../docs/configuring-playbook-own-webserver.md:226 msgid "If your webserver is on the same machine, ensure your web server user (something like `http`, `apache`, `www-data`, `nginx`) is part of the `matrix` group. You should run something like this: `usermod -a -G matrix nginx`. This allows your webserver user to access files owned by the `matrix` group, so that it can serve static files from `/matrix/static-files`." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-pantalaimon.pot b/i18n/translation-templates/docs/configuring-playbook-pantalaimon.pot index 99a4c93e7..8eb20b8f2 100644 --- a/i18n/translation-templates/docs/configuring-playbook-pantalaimon.pot +++ b/i18n/translation-templates/docs/configuring-playbook-pantalaimon.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,70 +16,70 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-pantalaimon.md:1 +#: ../../../docs/configuring-playbook-pantalaimon.md:8 msgid "Setting up Pantalaimon (E2EE aware proxy daemon) (optional)" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:3 +#: ../../../docs/configuring-playbook-pantalaimon.md:10 msgid "The playbook can install and configure the [pantalaimon](https://github.com/matrix-org/pantalaimon) E2EE aware proxy daemon for you." msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:5 +#: ../../../docs/configuring-playbook-pantalaimon.md:12 msgid "See the project's [documentation](https://github.com/matrix-org/pantalaimon/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:7 +#: ../../../docs/configuring-playbook-pantalaimon.md:14 msgid "This role exposes Pantalaimon's API only within the container network, so bots and clients installed on the same machine can use it. In particular the [Draupnir](configuring-playbook-bot-draupnir.md) and [Mjolnir](configuring-playbook-bot-mjolnir.md) roles (and possibly others) can use it." msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:9 +#: ../../../docs/configuring-playbook-pantalaimon.md:16 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:11 +#: ../../../docs/configuring-playbook-pantalaimon.md:18 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:17 +#: ../../../docs/configuring-playbook-pantalaimon.md:24 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:19 +#: ../../../docs/configuring-playbook-pantalaimon.md:26 msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:21 +#: ../../../docs/configuring-playbook-pantalaimon.md:28 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:23 +#: ../../../docs/configuring-playbook-pantalaimon.md:30 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:25 +#: ../../../docs/configuring-playbook-pantalaimon.md:32 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:27 +#: ../../../docs/configuring-playbook-pantalaimon.md:34 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:34 +#: ../../../docs/configuring-playbook-pantalaimon.md:41 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:36 +#: ../../../docs/configuring-playbook-pantalaimon.md:43 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:38 +#: ../../../docs/configuring-playbook-pantalaimon.md:45 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:40 +#: ../../../docs/configuring-playbook-pantalaimon.md:47 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-pantalaimon.md:42 +#: ../../../docs/configuring-playbook-pantalaimon.md:49 msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-postgres-backup.pot b/i18n/translation-templates/docs/configuring-playbook-postgres-backup.pot index 29036ff40..588b221ad 100644 --- a/i18n/translation-templates/docs/configuring-playbook-postgres-backup.pot +++ b/i18n/translation-templates/docs/configuring-playbook-postgres-backup.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,138 +16,26 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-postgres-backup.md:1 -msgid "Setting up postgres backup (optional)" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:3 -msgid "The playbook can install and configure [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local) for you via the [ansible-role-postgres-backup](https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup) Ansible role." -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:5 -msgid "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." -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:7 -msgid "Adjusting the playbook configuration" -msgstr "" - #: ../../../docs/configuring-playbook-postgres-backup.md:9 -msgid "To enable Postgres backup, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:15 -msgid "Refer to the table below for additional configuration variables and their default values." -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Name" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Default value" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Description" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`postgres_backup_enabled`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`false`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Set to true to use [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local) to create automatic database backups" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`postgres_backup_schedule`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`'@daily'`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Cron-schedule specifying the interval between postgres backups." +msgid "Setting up Postgres backup (optional)" msgstr "" -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`postgres_backup_keep_days`" +#: ../../../docs/configuring-playbook-postgres-backup.md:11 +msgid "The playbook can install and configure [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local) for you." msgstr "" -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`7`" +#: ../../../docs/configuring-playbook-postgres-backup.md:13 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Number of daily backups to keep" +#: ../../../docs/configuring-playbook-postgres-backup.md:14 +msgid "🌐 [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" msgstr "" -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`postgres_backup_keep_weeks`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`4`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Number of weekly backups to keep" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`postgres_backup_keep_months`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`12`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Number of monthly backups to keep" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`postgres_backup_base_path`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`\"{{ matrix_base_data_path }}/postgres-backup\"`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Base path for postgres-backup. Also see `postgres_backup_data_path`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`postgres_backup_data_path`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "`\"{{ postgres_backup_base_path }}/data\"`" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:0 -msgid "Storage path for postgres-backup database backups" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:27 -msgid "Installing" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:29 -msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" -msgstr "" - -#: ../../../docs/configuring-playbook-postgres-backup.md:36 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +#: ../../../docs/configuring-playbook-postgres-backup.md:15 +msgid "📁 `roles/galaxy/postgres_backup/docs/configuring-postgres-backup.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)" msgstr "" -#: ../../../docs/configuring-playbook-postgres-backup.md:38 -msgid "`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." +#: ../../../docs/configuring-playbook-postgres-backup.md:17 +msgid "**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." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-prometheus-grafana.pot b/i18n/translation-templates/docs/configuring-playbook-prometheus-grafana.pot index b1e49cb85..bd4abd9fb 100644 --- a/i18n/translation-templates/docs/configuring-playbook-prometheus-grafana.pot +++ b/i18n/translation-templates/docs/configuring-playbook-prometheus-grafana.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,124 +16,178 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:1 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:14 msgid "Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server (optional)" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:3 -msgid "The playbook can install [Grafana](https://grafana.com/) with [Prometheus](https://prometheus.io/) and configure performance metrics of your homeserver with graphs for you." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:16 +msgid "The playbook can install [Prometheus](https://prometheus.io/) with [Grafana](https://grafana.com/) and configure performance metrics of your homeserver with graphs for you." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:5 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:18 +msgid "[!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." +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:21 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:23 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:7 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:25 msgid "By default, this playbook installs Grafana web user-interface on the `stats.` subdomain (`stats.example.com`) and requires you to create a CNAME record for `stats`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:9 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:27 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:11 -msgid "Adjusting the playbook configuration" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:29 +msgid "**Note**: It is possible to install Prometheus without installing Grafana. In this case it is not required to create the CNAME record." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:13 -msgid "To enable Grafana and/or Prometheus, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:31 +msgid "Adjusting the playbook configuration — Prometheus" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:39 -msgid "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." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:33 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:35 +msgid "To enable it, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:41 -msgid "Adjusting the Grafana URL (optional)" +msgid "**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." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:43 -msgid "By tweaking the `grafana_hostname` variable, you can easily make the service available at a **different hostname** than the default one." +msgid "Enable metrics and graphs for generic system information (optional)" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:45 -msgid "Example additional configuration for your `vars.yml` file:" +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:52 -msgid "After changing the domain, **you may need to adjust your DNS** records to point the Grafana domain to the Matrix server." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:47 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:59 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:83 +msgid "To enable it, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:54 -msgid "**Note**: It is possible to install Prometheus without installing Grafana. This case it is not required to create the CNAME record." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:53 +msgid "Enable metrics and graphs for Postgres (optional)" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:56 -msgid "Installing" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:55 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:58 -msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:57 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:65 -msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:61 +msgid "**Note**: `prometheus_postgres_exporter_database_username` has nothing to do with your Matrix user ID. It can be any string you'd like." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:67 -msgid "`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." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:75 +msgid "Enable metrics and graphs for nginx logs (optional)" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:69 -msgid "What does it do?" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:77 +msgid "The playbook can also install and configure the [prometheus-nginxlog-exporter](https://github.com/martin-helmich/prometheus-nginxlog-exporter/) service for you." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "Name" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:79 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "Description" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:81 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`prometheus_enabled`" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:89 +msgid "If you enable Grafana, a dedicated `NGINX PROXY` Grafana dashboard will be created." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "[Prometheus](https://prometheus.io) is a time series database. It holds all the data we're going to talk about." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:91 +msgid "**Note**: nginx is only used internally by this Ansible playbook. With Traefik being our default reverse-proxy, collecting nginx metrics is less relevant." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`prometheus_node_exporter_enabled`" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:93 +msgid "Docker image compatibility (optional)" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "[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" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:95 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:102 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:104 +msgid "There are some additional things you may wish to configure about Prometheus and its add-on." +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:106 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:108 +msgid "[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" +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:109 +msgid "`roles/custom/matrix-prometheus-nginxlog-exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:111 +msgid "Adjusting the playbook configuration — Grafana" +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:113 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:115 +msgid "**Notes**:" +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:116 +msgid "`grafana_default_admin_user` has nothing to do with your Matrix user ID. It can be any string you'd like." +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:117 +msgid "Changing the username/password subsequently won't work." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`prometheus_postgres_exporter_enabled`" +msgid "Name" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "[Postgres Exporter](configuring-playbook-prometheus-postgres.md) is an addon of sorts to expose Postgres database metrics to Prometheus." +msgid "Description" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`matrix_prometheus_nginxlog_exporter_enabled`" +msgid "`grafana_enabled`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "[NGINX Log Exporter](configuring-playbook-prometheus-nginxlog.md) is an addon of sorts to expose NGINX logs to Prometheus." +msgid "[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." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`grafana_enabled`" +msgid "`grafana_default_admin_user`
`grafana_default_admin_password`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "[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" +msgid "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." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 @@ -144,47 +198,63 @@ msgstr "" msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`grafana_default_admin_user`
`grafana_default_admin_password`" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:135 +msgid "Adjusting the Grafana URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "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" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:137 +msgid "By tweaking the `grafana_hostname` variable, you can easily make the service available at a **different hostname** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:81 -msgid "Security and privacy" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:139 +msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:83 -msgid "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." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:146 +msgid "After changing the domain, **you may need to adjust your DNS** records to point the Grafana domain to the Matrix server." +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:148 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:150 +msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:85 -msgid "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." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:157 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:87 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:159 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:161 msgid "Collecting metrics to an external Prometheus server" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:89 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:163 msgid "**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\"." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:91 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:165 msgid "When you'd like **to collect metrics from an external Prometheus server**, you need to expose service metrics outside of the container network." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:93 -msgid "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." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:167 +msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:95 -msgid "When using `matrix_metrics_exposure_enabled`, you don't need to expose metrics for individual services one by one." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:169 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:97 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:171 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:173 msgid "The following variables may be of interest:" msgstr "" @@ -193,7 +263,7 @@ msgid "`matrix_metrics_exposure_enabled`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "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." +msgid "Set this to `true` to **enable metrics exposure for all services** on `https://matrix.example.com/metrics/*`." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 @@ -201,7 +271,7 @@ msgid "`matrix_metrics_exposure_http_basic_auth_enabled`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "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" +msgid "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)." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 @@ -213,129 +283,137 @@ msgid "Set this to the Basic Authentication credentials (raw `htpasswd` file con msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`matrix_synapse_metrics_enabled`" +msgid "`prometheus_node_exporter_enabled`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "Set this to `true` to make Synapse expose metrics (locally, on the container network)" +msgid "Set this to `true` to enable the node (general system stats) exporter (locally, on the container network)." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`matrix_synapse_metrics_proxying_enabled`" +msgid "`prometheus_node_exporter_container_labels_traefik_enabled`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "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." +msgid "Set this to `true` to expose the node (general system stats) metrics on `https://matrix.example.com/metrics/node-exporter`." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "Set this to `true` to enable the node (general system stats) exporter (locally, on the container network)" +msgid "`prometheus_postgres_exporter_enabled`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`prometheus_node_exporter_container_labels_traefik_enabled`" +msgid "Set this to `true` to enable the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) (locally, on the container network)." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "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." +msgid "`prometheus_postgres_exporter_container_labels_traefik_enabled`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "Set this to `true` to enable the [Postgres exporter](configuring-playbook-prometheus-postgres.md) (locally, on the container network)" +msgid "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`." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`prometheus_postgres_exporter_container_labels_traefik_enabled`" +msgid "`matrix_prometheus_nginxlog_exporter_enabled`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "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." +msgid "Set this to `true` to enable the [nginx Log exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) (locally, on the container network)." msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "Set this to `true` to enable the [NGINX Log exporter](configuring-playbook-prometheus-nginxlog.md) (locally, on the container network)" +msgid "`matrix_prometheus_nginxlog_exporter_metrics_proxying_enabled`" msgstr "" #: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`matrix_sliding_sync_metrics_enabled`" +msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "Set this to `true` to make [Sliding Sync](configuring-playbook-sliding-sync-proxy.md) expose metrics (locally, on the container network)" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:187 +msgid "Expose metrics of other services/roles" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`matrix_sliding_sync_metrics_proxying_enabled`" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:189 +msgid "Various other services/roles may provide similar `_metrics_enabled` and `_metrics_proxying_enabled` variables for exposing their metrics. Refer to each role for details." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "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." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:191 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`matrix_bridge_hookshot_metrics_enabled`" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:193 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "Set this to `true` to make [Hookshot](configuring-playbook-bridge-hookshot.md) expose metrics (locally, on the container network)" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:195 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`matrix_bridge_hookshot_metrics_proxying_enabled`" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:213 +msgid "Collecting Synapse worker metrics to an external Prometheus server" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "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." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:215 +msgid "If you are using workers (`matrix_synapse_workers_enabled: true`) and have enabled `matrix_synapse_metrics_proxying_enabled` as described above, the playbook will also automatically expose all Synapse worker threads' metrics to `https://matrix.example.com/metrics/synapse/worker/ID`, where `ID` corresponds to the worker `id` as exemplified in `matrix_synapse_workers_enabled_list`." msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`matrix_SERVICE_metrics_proxying_enabled`" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:217 +msgid "The playbook also generates an exemplary config file (`/matrix/synapse/external_prometheus.yml.template`) with all the correct paths which you can copy to your Prometheus server and adapt to your needs. Make sure to edit the specified `password_file` path and contents and path to your `synapse-v2.rules`. It will look a bit like this:" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "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." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:245 +msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "`matrix_media_repo_metrics_enabled`" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:247 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:0 -msgid "Set this to `true` to make media-repo expose metrics (locally, on the container network)" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:248 +msgid "`journalctl -fu matrix-prometheus` for Prometheus" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:118 -msgid "Collecting Synapse worker metrics to an external Prometheus server" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:249 +msgid "`journalctl -fu matrix-prometheus-node-exporter` for Node Exporter" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:120 -msgid "If you are using workers (`matrix_synapse_workers_enabled: true`) and have enabled `matrix_synapse_metrics_proxying_enabled` as described above, the playbook will also automatically expose all Synapse worker threads' metrics to `https://matrix.example.com/metrics/synapse/worker/ID`, where `ID` corresponds to the worker `id` as exemplified in `matrix_synapse_workers_enabled_list`." +#: ../../../docs/configuring-playbook-prometheus-grafana.md:250 +msgid "`journalctl -fu matrix-prometheus-postgres-exporter` for PostgreSQL Server Exporter" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:122 -msgid "The playbook also generates an exemplary config file (`/matrix/synapse/external_prometheus.yml.template`) with all the correct paths which you can copy to your Prometheus server and adapt to your needs. Make sure to edit the specified `password_file` path and contents and path to your `synapse-v2.rules`. It will look a bit like this:" +#: ../../../docs/configuring-playbook-prometheus-grafana.md:251 +msgid "`journalctl -fu matrix-prometheus-nginxlog-exporter` for prometheus-nginxlog-exporter" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:150 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:252 +msgid "`journalctl -fu matrix-grafana` for Grafana" +msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:254 msgid "More information" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:152 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:256 msgid "[Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md)" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:153 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:257 msgid "[Understanding Synapse Performance Issues Through Grafana Graphs](https://element-hq.github.io/synapse/latest/usage/administration/understanding_synapse_through_grafana_graphs.html) at the Synapse Github Wiki" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:154 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:258 msgid "[The Prometheus scraping rules](https://github.com/element-hq/synapse/tree/master/contrib/prometheus) (we use v2)" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:155 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:259 msgid "[The Synapse Grafana dashboard](https://github.com/element-hq/synapse/tree/master/contrib/grafana)" msgstr "" -#: ../../../docs/configuring-playbook-prometheus-grafana.md:156 +#: ../../../docs/configuring-playbook-prometheus-grafana.md:260 msgid "[The Node Exporter dashboard](https://github.com/rfrail3/grafana-dashboards) (for generic non-synapse performance graphs)" msgstr "" + +#: ../../../docs/configuring-playbook-prometheus-grafana.md:261 +msgid "[The PostgreSQL dashboard](https://grafana.com/grafana/dashboards/9628) (generic Postgres dashboard)" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-rageshake.pot b/i18n/translation-templates/docs/configuring-playbook-rageshake.pot index 2f9cbd33e..b2eabbb7a 100644 --- a/i18n/translation-templates/docs/configuring-playbook-rageshake.pot +++ b/i18n/translation-templates/docs/configuring-playbook-rageshake.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,90 +16,110 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-rageshake.md:1 +#: ../../../docs/configuring-playbook-rageshake.md:8 msgid "Setting up the rageshake bug report server (optional)" msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:3 +#: ../../../docs/configuring-playbook-rageshake.md:10 msgid "The playbook can install and configure the [rageshake](https://github.com/matrix-org/rageshake) bug report server for you." msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:5 +#: ../../../docs/configuring-playbook-rageshake.md:12 msgid "See the project's [documentation](https://github.com/matrix-org/rageshake/blob/main/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:7 +#: ../../../docs/configuring-playbook-rageshake.md:14 msgid "**Note**: most people don't need to install rageshake to collect bug reports. This component is only useful to people who develop/build their own Matrix client applications themselves." msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:9 +#: ../../../docs/configuring-playbook-rageshake.md:16 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:11 +#: ../../../docs/configuring-playbook-rageshake.md:18 msgid "By default, this playbook installs rageshake on the `rageshake.` subdomain (`rageshake.example.com`) and requires you to create a CNAME record for `rageshake`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:13 +#: ../../../docs/configuring-playbook-rageshake.md:20 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:15 +#: ../../../docs/configuring-playbook-rageshake.md:22 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:17 +#: ../../../docs/configuring-playbook-rageshake.md:24 msgid "To enable rageshake, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:23 -msgid "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)." -msgstr "" - -#: ../../../docs/configuring-playbook-rageshake.md:25 -msgid "To set these, you can make use of the `matrix_rageshake_configuration_extension_yaml` variable like this:" -msgstr "" - -#: ../../../docs/configuring-playbook-rageshake.md:35 +#: ../../../docs/configuring-playbook-rageshake.md:30 msgid "Adjusting the rageshake URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:37 +#: ../../../docs/configuring-playbook-rageshake.md:32 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:39 +#: ../../../docs/configuring-playbook-rageshake.md:34 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:50 +#: ../../../docs/configuring-playbook-rageshake.md:45 msgid "After changing the domain, **you may need to adjust your DNS** records to point the rageshake domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:52 +#: ../../../docs/configuring-playbook-rageshake.md:47 msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:54 -msgid "Installing" +#: ../../../docs/configuring-playbook-rageshake.md:49 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-rageshake.md:51 +msgid "There are some additional things you may wish to configure about the server." +msgstr "" + +#: ../../../docs/configuring-playbook-rageshake.md:53 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-rageshake.md:55 +msgid "`roles/custom/matrix-rageshake/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" #: ../../../docs/configuring-playbook-rageshake.md:56 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-rageshake.md:74 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-rageshake.md:76 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:63 +#: ../../../docs/configuring-playbook-rageshake.md:83 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:65 +#: ../../../docs/configuring-playbook-rageshake.md:85 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:67 +#: ../../../docs/configuring-playbook-rageshake.md:87 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-rageshake.md:69 +#: ../../../docs/configuring-playbook-rageshake.md:89 msgid "Refer to the project's [documentation](https://github.com/matrix-org/rageshake/blob/main/README.md) for available APIs, etc." msgstr "" + +#: ../../../docs/configuring-playbook-rageshake.md:91 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-rageshake.md:93 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-rest-auth.pot b/i18n/translation-templates/docs/configuring-playbook-rest-auth.pot index 71621b50c..6b918cde6 100644 --- a/i18n/translation-templates/docs/configuring-playbook-rest-auth.pot +++ b/i18n/translation-templates/docs/configuring-playbook-rest-auth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,46 +16,62 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-rest-auth.md:1 +#: ../../../docs/configuring-playbook-rest-auth.md:9 msgid "Setting up the REST authentication password provider module (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:3 +#: ../../../docs/configuring-playbook-rest-auth.md:11 msgid "The playbook can install and configure [matrix-synapse-rest-auth](https://github.com/ma1uta/matrix-synapse-rest-password-provider) for you." msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:5 +#: ../../../docs/configuring-playbook-rest-auth.md:13 msgid "See the project's [documentation](https://github.com/ma1uta/matrix-synapse-rest-password-provider/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:7 +#: ../../../docs/configuring-playbook-rest-auth.md:15 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:9 +#: ../../../docs/configuring-playbook-rest-auth.md:17 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):" msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:19 +#: ../../../docs/configuring-playbook-rest-auth.md:27 msgid "Authenticating only using a password provider" msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:21 -msgid "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:" +#: ../../../docs/configuring-playbook-rest-auth.md:29 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:27 +#: ../../../docs/configuring-playbook-rest-auth.md:35 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:29 +#: ../../../docs/configuring-playbook-rest-auth.md:37 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:36 +#: ../../../docs/configuring-playbook-rest-auth.md:44 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-rest-auth.md:38 +#: ../../../docs/configuring-playbook-rest-auth.md:46 msgid "`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." msgstr "" + +#: ../../../docs/configuring-playbook-rest-auth.md:48 +msgid "Usage" +msgstr "" + +#: ../../../docs/configuring-playbook-rest-auth.md:50 +msgid "Use ma1sd Identity Server for the backend (not recommended)" +msgstr "" + +#: ../../../docs/configuring-playbook-rest-auth.md:52 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-rest-auth.md:54 +msgid "[!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)." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-riot-web.pot b/i18n/translation-templates/docs/configuring-playbook-riot-web.pot index b18006ead..fbdc4784a 100644 --- a/i18n/translation-templates/docs/configuring-playbook-riot-web.pot +++ b/i18n/translation-templates/docs/configuring-playbook-riot-web.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,74 +16,74 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-riot-web.md:1 +#: ../../../docs/configuring-playbook-riot-web.md:9 msgid "Configuring Riot-web (optional)" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:3 +#: ../../../docs/configuring-playbook-riot-web.md:11 msgid "By default, this playbook **used to install** the [Riot-web](https://github.com/element-hq/riot-web) Matrix client web application." msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:5 +#: ../../../docs/configuring-playbook-riot-web.md:13 msgid "Riot has since been [renamed to Element](https://element.io/blog/welcome-to-element/)." msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:7 +#: ../../../docs/configuring-playbook-riot-web.md:15 msgid "to learn more about Element Web and its configuration, see our dedicated [Configuring Element Web](configuring-playbook-client-element-web.md) documentation page" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:8 +#: ../../../docs/configuring-playbook-riot-web.md:16 msgid "to learn how to migrate from Riot to Element Web, see [Migrating to Element Web](#migrating-to-element-web) below" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:10 +#: ../../../docs/configuring-playbook-riot-web.md:18 msgid "Migrating to Element Web" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:12 +#: ../../../docs/configuring-playbook-riot-web.md:20 msgid "Migrating your custom settings" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:14 +#: ../../../docs/configuring-playbook-riot-web.md:22 msgid "If you have custom `matrix_riot_web_` variables in your `inventory/host_vars/matrix.example.com/vars.yml` file, you'll need to rename them (`matrix_riot_web_` -> `matrix_client_element_`)." msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:16 +#: ../../../docs/configuring-playbook-riot-web.md:24 msgid "Some other playbook variables (but not all) with `riot` in their name are also renamed. The playbook checks and warns if you are using the old name for some commonly used ones." msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:18 +#: ../../../docs/configuring-playbook-riot-web.md:26 msgid "Domain migration" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:20 +#: ../../../docs/configuring-playbook-riot-web.md:28 msgid "We used to set up Riot at the `riot.example.com` domain. The playbook now sets up Element Web at `element.example.com` by default." msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:22 +#: ../../../docs/configuring-playbook-riot-web.md:30 msgid "There are a few options for handling this:" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:24 +#: ../../../docs/configuring-playbook-riot-web.md:32 msgid "(**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 }}\"`" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:26 +#: ../../../docs/configuring-playbook-riot-web.md:34 msgid "(**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." msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:28 +#: ../../../docs/configuring-playbook-riot-web.md:36 msgid "Re-running the playbook" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:30 +#: ../../../docs/configuring-playbook-riot-web.md:38 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:37 +#: ../../../docs/configuring-playbook-riot-web.md:45 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-riot-web.md:39 +#: ../../../docs/configuring-playbook-riot-web.md:47 msgid "`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." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-s3-goofys.pot b/i18n/translation-templates/docs/configuring-playbook-s3-goofys.pot index cce65ce00..301f924fd 100644 --- a/i18n/translation-templates/docs/configuring-playbook-s3-goofys.pot +++ b/i18n/translation-templates/docs/configuring-playbook-s3-goofys.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,163 +16,175 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-s3-goofys.md:1 -msgid "Storing Matrix media files on Amazon S3 with Goofys (optional)" +#: ../../../docs/configuring-playbook-s3-goofys.md:8 +msgid "Storing Synapse media files on Amazon S3 with Goofys (optional)" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:3 -msgid "If you'd like to store Synapse's content repository (`media_store`) files on Amazon S3 (or other S3-compatible service), you can let this playbook configure [Goofys](https://github.com/kahing/goofys) for you." +#: ../../../docs/configuring-playbook-s3-goofys.md:10 +msgid "The playbook can install and configure [Goofys](https://github.com/kahing/goofys) for you." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:5 -msgid "Another (and better performing) way to use S3 storage with Synapse is [synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md)." +#: ../../../docs/configuring-playbook-s3-goofys.md:12 +msgid "Goofys makes it possible to store Synapse's content repository (`media_store`) files on Amazon S3 (or other S3-compatible service) object storage." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:7 -msgid "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." +#: ../../../docs/configuring-playbook-s3-goofys.md:14 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:9 -msgid "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." +#: ../../../docs/configuring-playbook-s3-goofys.md:16 +msgid "**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." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:11 +#: ../../../docs/configuring-playbook-s3-goofys.md:18 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-s3-goofys.md:20 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:13 +#: ../../../docs/configuring-playbook-s3-goofys.md:22 msgid "After [creating the S3 bucket and configuring it](configuring-playbook-s3.md#bucket-creation-and-security-configuration), add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:23 +#: ../../../docs/configuring-playbook-s3-goofys.md:32 msgid "You can use any S3-compatible object store by **additionally** configuring these variables:" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:30 +#: ../../../docs/configuring-playbook-s3-goofys.md:39 msgid "If you have local media store files and wish to migrate to Backblaze B2 subsequently, follow our [migration guide to Backblaze B2](#migrating-to-backblaze-b2) below instead of applying this configuration as-is." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:32 +#: ../../../docs/configuring-playbook-s3-goofys.md:41 msgid "Migrating from local filesystem storage to S3" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:34 +#: ../../../docs/configuring-playbook-s3-goofys.md:43 msgid "It's a good idea to [make a complete server backup](faq.md#how-do-i-back-up-the-data-on-my-server) before migrating your local media store to an S3-backed one." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:36 +#: ../../../docs/configuring-playbook-s3-goofys.md:45 msgid "After making the backup, follow one of the guides below for a migration path from a locally-stored media store to one stored on S3-compatible storage:" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:38 +#: ../../../docs/configuring-playbook-s3-goofys.md:47 msgid "[Migrating to any S3-compatible storage (universal, but likely slow)](#migrating-to-any-s3-compatible-storage-universal-but-likely-slow)" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:39 +#: ../../../docs/configuring-playbook-s3-goofys.md:48 msgid "[Migrating to Backblaze B2](#migrating-to-backblaze-b2)" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:41 +#: ../../../docs/configuring-playbook-s3-goofys.md:50 msgid "Migrating to any S3-compatible storage (universal, but likely slow)" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:43 +#: ../../../docs/configuring-playbook-s3-goofys.md:52 msgid "Proceed with the steps below without stopping Matrix services" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:45 +#: ../../../docs/configuring-playbook-s3-goofys.md:54 msgid "Start by adding the base S3 configuration in your `vars.yml` file (seen above, may be different depending on the S3 provider of your choice)" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:47 +#: ../../../docs/configuring-playbook-s3-goofys.md:56 msgid "In addition to the base configuration you see above, add this to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:53 +#: ../../../docs/configuring-playbook-s3-goofys.md:62 msgid "This enables S3 support, but mounts the S3 storage bucket to `/matrix/s3-media-store` without hooking it to your homeserver yet. Your homeserver will still continue using your local filesystem for its media store." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:55 +#: ../../../docs/configuring-playbook-s3-goofys.md:64 msgid "Run the playbook to apply the changes: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:57 +#: ../../../docs/configuring-playbook-s3-goofys.md:66 msgid "Do an **initial sync of your files** by running this **on the server** (it may take a very long time):" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:63 +#: ../../../docs/configuring-playbook-s3-goofys.md:72 msgid "You may need to install `rsync` manually." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:65 -#: ../../../docs/configuring-playbook-s3-goofys.md:106 +#: ../../../docs/configuring-playbook-s3-goofys.md:74 +#: ../../../docs/configuring-playbook-s3-goofys.md:115 msgid "Stop all Matrix services (`ansible-playbook -i inventory/hosts setup.yml --tags=stop`)" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:67 +#: ../../../docs/configuring-playbook-s3-goofys.md:76 msgid "Start the S3 service by running this **on the server**: `systemctl start matrix-goofys`" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:69 +#: ../../../docs/configuring-playbook-s3-goofys.md:78 msgid "Sync the files again by re-running the `rsync` command you see in step #5" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:71 +#: ../../../docs/configuring-playbook-s3-goofys.md:80 msgid "Stop the S3 service by running this **on the server**: `systemctl stop matrix-goofys`" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:73 -#: ../../../docs/configuring-playbook-s3-goofys.md:114 +#: ../../../docs/configuring-playbook-s3-goofys.md:82 +#: ../../../docs/configuring-playbook-s3-goofys.md:123 msgid "Get the old media store out of the way by running this command on the server:" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:79 +#: ../../../docs/configuring-playbook-s3-goofys.md:88 msgid "Remove the `matrix_s3_media_store_path` configuration from your `vars.yml` file (undoing step #3 above)" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:81 -#: ../../../docs/configuring-playbook-s3-goofys.md:122 +#: ../../../docs/configuring-playbook-s3-goofys.md:90 +#: ../../../docs/configuring-playbook-s3-goofys.md:131 msgid "Run the playbook: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:83 -#: ../../../docs/configuring-playbook-s3-goofys.md:124 +#: ../../../docs/configuring-playbook-s3-goofys.md:92 +#: ../../../docs/configuring-playbook-s3-goofys.md:133 msgid "You're done! Verify that loading existing (old) media files works and that you can upload new ones." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:85 -#: ../../../docs/configuring-playbook-s3-goofys.md:126 +#: ../../../docs/configuring-playbook-s3-goofys.md:94 +#: ../../../docs/configuring-playbook-s3-goofys.md:135 msgid "When confident that it all works, get rid of the local media store directory: `rm -rf /matrix/synapse/storage/media-store-local-backup`" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:87 +#: ../../../docs/configuring-playbook-s3-goofys.md:96 msgid "Migrating to Backblaze B2" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:89 +#: ../../../docs/configuring-playbook-s3-goofys.md:98 msgid "While all Matrix services are running, run the following command on the server:" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:91 +#: ../../../docs/configuring-playbook-s3-goofys.md:100 msgid "(you need to adjust the 3 `--env` line below with your own data)" msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:104 +#: ../../../docs/configuring-playbook-s3-goofys.md:113 msgid "This is some initial file sync, which may take a very long time." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:108 +#: ../../../docs/configuring-playbook-s3-goofys.md:117 msgid "Run the command from step #1 again." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:110 +#: ../../../docs/configuring-playbook-s3-goofys.md:119 msgid "Doing this will sync any new files that may have been created locally in the meantime." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:112 +#: ../../../docs/configuring-playbook-s3-goofys.md:121 msgid "Now that Matrix services aren't running, we're sure to get Backblaze B2 and your local media store fully in sync." msgstr "" -#: ../../../docs/configuring-playbook-s3-goofys.md:120 +#: ../../../docs/configuring-playbook-s3-goofys.md:129 msgid "Put the [Backblaze B2 settings](configuring-playbook-s3.md#backblaze-b2) in your `vars.yml` file" msgstr "" + +#: ../../../docs/configuring-playbook-s3-goofys.md:137 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-s3-goofys.md:139 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-s3.pot b/i18n/translation-templates/docs/configuring-playbook-s3.pot index 6952ccac2..16bc3b3d8 100644 --- a/i18n/translation-templates/docs/configuring-playbook-s3.pot +++ b/i18n/translation-templates/docs/configuring-playbook-s3.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,198 +16,194 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-s3.md:1 +#: ../../../docs/configuring-playbook-s3.md:9 msgid "Storing Synapse media files on Amazon S3 or another compatible Object Storage (optional)" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:3 +#: ../../../docs/configuring-playbook-s3.md:11 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:5 +#: ../../../docs/configuring-playbook-s3.md:13 msgid "As an alternative to storing media files on the local filesystem, you can store them on [Amazon S3](https://aws.amazon.com/s3/) or another S3-compatible object store." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:7 +#: ../../../docs/configuring-playbook-s3.md:15 msgid "You can do this either by sticking to Synapse's media repository and making that use S3 (read below for this method), or by switching to an external media storage implementation like [matrix-media-repo](configuring-playbook-matrix-media-repo.md)." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:9 +#: ../../../docs/configuring-playbook-s3.md:17 msgid "First, [choose an Object Storage provider](#choosing-an-object-storage-provider)." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:11 +#: ../../../docs/configuring-playbook-s3.md:19 msgid "Then, [create the S3 bucket](#bucket-creation-and-security-configuration)." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:13 +#: ../../../docs/configuring-playbook-s3.md:21 msgid "Finally, [set up S3 storage for Synapse](#setting-up) (with [Goofys](configuring-playbook-s3-goofys.md), [synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md), or use s3 datastore with the [matrix-media-repo](https://docs.t2bot.io/matrix-media-repo/configuration/s3-datastore.html))." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:15 +#: ../../../docs/configuring-playbook-s3.md:23 msgid "Choosing an Object Storage provider" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:17 -msgid "You can create [Amazon S3](https://aws.amazon.com/s3/) or another S3-compatible object storage like [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html), [Storj](https://storj.io), [Wasabi](https://wasabi.com), [Digital Ocean Spaces](https://www.digitalocean.com/products/spaces), etc." -msgstr "" - -#: ../../../docs/configuring-playbook-s3.md:19 -msgid "Amazon S3, Backblaze B2, and Storj are pay-as-you with no minimum charges for storing too little data." +#: ../../../docs/configuring-playbook-s3.md:25 +msgid "You can create [Amazon S3](https://aws.amazon.com/s3/) or another S3-compatible object storage like [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html), [Wasabi](https://wasabi.com), [Digital Ocean Spaces](https://www.digitalocean.com/products/spaces), [Storj](https://storj.io), etc." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:21 -msgid "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." +#: ../../../docs/configuring-playbook-s3.md:27 +msgid "Amazon S3 and Backblaze B2 are pay-as-you with no minimum charges for storing too little data. Note that 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." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:23 -msgid "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)." +#: ../../../docs/configuring-playbook-s3.md:29 +msgid "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). Though Storj does not set minimum amount of data to be stored, it also charges $5 minimum monthly usage fee since July 1, 2025, if your monthly usage (storage, bandwidth, and segments) totals less than $5." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:25 +#: ../../../docs/configuring-playbook-s3.md:31 msgid "Here are some of the important aspects of choosing the right provider:" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:27 +#: ../../../docs/configuring-playbook-s3.md:33 msgid "if a provider is a company you like and trust (or dislike less than the others)" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:28 +#: ../../../docs/configuring-playbook-s3.md:34 msgid "if a provider implements end-to-end encryption of your data" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:29 +#: ../../../docs/configuring-playbook-s3.md:35 msgid "if a provider has a data region close to your Matrix server (if it's farther away, high latency may cause slowdowns)" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:30 +#: ../../../docs/configuring-playbook-s3.md:36 msgid "if a provider's infrastructure such as data center is centralized or distributed" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:31 +#: ../../../docs/configuring-playbook-s3.md:37 msgid "if a provider's price model is transparent (whether it includes hidden costs like minimum charge, minimum storage term, etc.)" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:32 +#: ../../../docs/configuring-playbook-s3.md:38 msgid "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" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:34 +#: ../../../docs/configuring-playbook-s3.md:40 msgid "Bucket creation and Security Configuration" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:36 +#: ../../../docs/configuring-playbook-s3.md:42 msgid "Now that you've [chosen an Object Storage provider](#choosing-an-object-storage-provider), you need to create a storage bucket." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:38 +#: ../../../docs/configuring-playbook-s3.md:44 msgid "How you do this varies from provider to provider, with Amazon S3 being the most complicated due to its vast number of services and complicated security policies." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:40 +#: ../../../docs/configuring-playbook-s3.md:46 msgid "Below, we provider some guides for common providers. If you don't see yours, look at the others for inspiration or read some guides online about how to create a bucket. Feel free to contribute to this documentation with an update!" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:42 +#: ../../../docs/configuring-playbook-s3.md:48 msgid "Amazon S3" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:44 +#: ../../../docs/configuring-playbook-s3.md:50 msgid "You'll need an Amazon S3 bucket and some IAM user credentials (access key + secret key) with full write access to the bucket. Example IAM security policy:" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:65 +#: ../../../docs/configuring-playbook-s3.md:71 msgid "**Note**: This policy needs to be attached to an IAM user created from the **Security Credentials** menu. This is not a **Bucket Policy**." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:67 +#: ../../../docs/configuring-playbook-s3.md:73 msgid "Backblaze B2" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:69 +#: ../../../docs/configuring-playbook-s3.md:75 msgid "To use [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html) you first need to sign up." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:71 +#: ../../../docs/configuring-playbook-s3.md:77 msgid "You [can't easily change which region (US, Europe) your Backblaze account stores files in](https://old.reddit.com/r/backblaze/comments/hi1v90/make_the_choice_for_the_b2_data_center_region/), so make sure to carefully choose the region when signing up (hint: it's a hard to see dropdown below the username/password fields in the signup form)." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:73 +#: ../../../docs/configuring-playbook-s3.md:79 msgid "After logging in to Backblaze:" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:75 +#: ../../../docs/configuring-playbook-s3.md:81 msgid "create a new **private** bucket through its user interface (you can call it something like `matrix-example-media-store`)" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:76 +#: ../../../docs/configuring-playbook-s3.md:82 msgid "note the **Endpoint** for your bucket (something like `s3.us-west-002.backblazeb2.com`)." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:77 +#: ../../../docs/configuring-playbook-s3.md:83 msgid "adjust its Lifecycle Rules to: Keep only the last version of the file" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:78 +#: ../../../docs/configuring-playbook-s3.md:84 msgid "go to [App Keys](https://secure.backblaze.com/app_keys.htm) and use the **Add a New Application Key** to create a new one" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:79 +#: ../../../docs/configuring-playbook-s3.md:85 msgid "restrict it to the previously created bucket (e.g. `matrix-example-media-store`)" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:80 +#: ../../../docs/configuring-playbook-s3.md:86 msgid "give it *Read & Write* access" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:82 +#: ../../../docs/configuring-playbook-s3.md:88 msgid "The `keyID` value is your **Access Key** and `applicationKey` is your **Secret Key**." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:84 +#: ../../../docs/configuring-playbook-s3.md:90 msgid "For configuring [Goofys](configuring-playbook-s3-goofys.md) or [s3-synapse-storage-provider](configuring-playbook-synapse-s3-storage-provider.md) you will need:" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:86 +#: ../../../docs/configuring-playbook-s3.md:92 msgid "**Endpoint URL** — this is the **Endpoint** value you saw above, but prefixed with `https://`" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:88 +#: ../../../docs/configuring-playbook-s3.md:93 msgid "**Region** — use the value you see in the Endpoint (e.g. `us-west-002`)" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:90 +#: ../../../docs/configuring-playbook-s3.md:94 msgid "**Storage Class** — use `STANDARD`. Backblaze B2 does not have different storage classes, so it doesn't make sense to use any other value." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:92 +#: ../../../docs/configuring-playbook-s3.md:96 msgid "Other providers" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:94 -msgid "For other S3-compatible providers, you may not need to configure security policies, etc. (just like for [Backblaze B2](#backblaze-b2))." +#: ../../../docs/configuring-playbook-s3.md:98 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:96 -msgid "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." +#: ../../../docs/configuring-playbook-s3.md:100 +msgid "For details about setting up a bucket at Storj, please see the instruction [here](https://storj.dev/dcs/getting-started) to get started." msgstr "" -#: ../../../docs/configuring-playbook-s3.md:98 +#: ../../../docs/configuring-playbook-s3.md:102 msgid "Setting up" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:100 +#: ../../../docs/configuring-playbook-s3.md:104 msgid "To set up Synapse to store files in S3, follow the instructions for the method of your choice:" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:102 +#: ../../../docs/configuring-playbook-s3.md:106 msgid "using [synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md) (recommended)" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:103 +#: ../../../docs/configuring-playbook-s3.md:107 msgid "using [Goofys to mount the S3 store to the local filesystem](configuring-playbook-s3-goofys.md)" msgstr "" -#: ../../../docs/configuring-playbook-s3.md:104 +#: ../../../docs/configuring-playbook-s3.md:108 msgid "using [matrix-media-repo](configuring-playbook-matrix-media-repo.md)" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-shared-secret-auth.pot b/i18n/translation-templates/docs/configuring-playbook-shared-secret-auth.pot index fe700a3c5..cf12b05bf 100644 --- a/i18n/translation-templates/docs/configuring-playbook-shared-secret-auth.pot +++ b/i18n/translation-templates/docs/configuring-playbook-shared-secret-auth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,46 +16,46 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:1 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:9 msgid "Setting up the Shared Secret Auth password provider module (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:3 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:11 msgid "The playbook can install and configure [matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) for you." msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:5 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:13 msgid "See the project's [documentation](https://github.com/devture/matrix-synapse-shared-secret-auth/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:7 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:15 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:9 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:17 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:18 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:26 msgid "Authenticating only using a password provider" msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:20 -msgid "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:" +#: ../../../docs/configuring-playbook-shared-secret-auth.md:28 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:26 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:34 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:28 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:36 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:35 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:43 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-shared-secret-auth.md:37 +#: ../../../docs/configuring-playbook-shared-secret-auth.md:45 msgid "`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." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-sliding-sync-proxy.pot b/i18n/translation-templates/docs/configuring-playbook-sliding-sync-proxy.pot index 43e70b574..cce3a1e42 100644 --- a/i18n/translation-templates/docs/configuring-playbook-sliding-sync-proxy.pot +++ b/i18n/translation-templates/docs/configuring-playbook-sliding-sync-proxy.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,98 +16,122 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:1 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:14 msgid "Setting up the Sliding Sync proxy (optional)" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:3 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:16 msgid "**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**." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:5 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:18 msgid "The playbook can install and configure [sliding-sync](https://github.com/matrix-org/sliding-sync) proxy for you." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:7 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:20 msgid "Sliding Sync is an implementation of [MSC3575](https://github.com/matrix-org/matrix-spec-proposals/blob/kegan/sync-v3/proposals/3575-sync.md) and a prerequisite for running Element X clients ([Element X iOS](https://github.com/element-hq/element-x-ios) and [Element X Android](https://github.com/element-hq/element-x-android)). See the project's [documentation](https://github.com/matrix-org/sliding-sync) to learn more." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:9 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:22 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:11 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:24 msgid "By default, this playbook installs the Sliding Sync proxy on the `matrix.` subdomain, at the `/sliding-sync` path (https://matrix.example.com/sliding-sync). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:13 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:26 msgid "If you wish to adjust it, see the section [below](#adjusting-the-sliding-sync-proxy-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:15 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:28 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:17 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:30 msgid "To enable Sliding Sync proxy, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:23 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:36 msgid "Adjusting the Sliding Sync proxy URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:25 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:38 msgid "By tweaking the `matrix_sliding_sync_hostname` and `matrix_sliding_sync_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:27 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:40 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:35 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:48 msgid "If you've changed the default hostname, you may need to create a CNAME record for the Sliding Sync proxy domain (`ss.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:37 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:50 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:39 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:52 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:54 +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:56 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:58 +msgid "`roles/custom/matrix-sliding-sync/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:60 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:41 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:62 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:48 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:69 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:50 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:71 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:52 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:73 msgid "External databases" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:54 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:75 msgid "Please note that, if your setup utilizes an external database, you must also establish configuration for the sliding sync proxy. Alter the defaults below to suit your configuration:" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:64 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:85 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:66 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:87 msgid "You **don't need to do anything special** to make use of the Sliding Sync proxy. Simply open your client which supports Sliding Sync (like Element X) and log in." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:68 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:89 msgid "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`)." msgstr "" -#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:70 +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:91 msgid "This allows clients which support Sliding Sync to detect the Sliding Sync proxy's URL and make use of it." msgstr "" + +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:93 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-sliding-sync-proxy.md:95 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-ssl-certificates.pot b/i18n/translation-templates/docs/configuring-playbook-ssl-certificates.pot index 7a34d19f9..249daf10d 100644 --- a/i18n/translation-templates/docs/configuring-playbook-ssl-certificates.pot +++ b/i18n/translation-templates/docs/configuring-playbook-ssl-certificates.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,106 +16,118 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-ssl-certificates.md:1 +#: ../../../docs/configuring-playbook-ssl-certificates.md:12 msgid "Adjusting SSL certificate retrieval (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:3 -msgid "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)" +#: ../../../docs/configuring-playbook-ssl-certificates.md:14 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:5 -msgid "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)." +#: ../../../docs/configuring-playbook-ssl-certificates.md:16 +msgid "**Notes**:" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:7 -msgid "Using staging Let's Encrypt certificates instead of real ones" +#: ../../../docs/configuring-playbook-ssl-certificates.md:17 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:9 -msgid "For testing purposes, you may wish to use staging certificates provide by Let's Encrypt." +#: ../../../docs/configuring-playbook-ssl-certificates.md:18 +msgid "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 expiration 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/)." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:11 -msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" +#: ../../../docs/configuring-playbook-ssl-certificates.md:20 +msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:17 -msgid "Disabling SSL termination" +#: ../../../docs/configuring-playbook-ssl-certificates.md:22 +msgid "Use staging Let's Encrypt certificates" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:19 -msgid "For testing or other purposes, you may wish to install services without SSL termination and have services exposed to `http://` instead of `https://`." +#: ../../../docs/configuring-playbook-ssl-certificates.md:24 +msgid "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/)." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:21 -msgid "Add the following configuration to your `vars.yml` file:" +#: ../../../docs/configuring-playbook-ssl-certificates.md:26 +msgid "To use ones, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:27 -msgid "Using self-signed SSL certificates" +#: ../../../docs/configuring-playbook-ssl-certificates.md:32 +msgid "Disable SSL termination" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:29 -msgid "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/)):" +#: ../../../docs/configuring-playbook-ssl-certificates.md:34 +msgid "For testing or other purposes, you may wish to install services without SSL termination and have services exposed to `http://` instead of `https://`." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:31 -msgid "generate your self-signed certificate files" +#: ../../../docs/configuring-playbook-ssl-certificates.md:36 +msgid "To do so, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:32 -msgid "follow the [Using your own SSL certificates](#using-your-own-ssl-certificates) documentation below" +#: ../../../docs/configuring-playbook-ssl-certificates.md:42 +msgid "Use self-signed SSL certificates" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:34 -msgid "Using your own SSL certificates" +#: ../../../docs/configuring-playbook-ssl-certificates.md:44 +msgid "To use self-signed certificates, generate them and follow the documentation below about using your own certificates." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:36 -msgid "To use your own SSL certificates with Traefik, you need to:" +#: ../../../docs/configuring-playbook-ssl-certificates.md:46 +msgid "Use your own SSL certificates" +msgstr "" + +#: ../../../docs/configuring-playbook-ssl-certificates.md:48 +msgid "To use your own certificates, prepare them and follow the steps below:" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:38 -msgid "disable [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) / [Let's Encrypt](https://letsencrypt.org/) support" +#: ../../../docs/configuring-playbook-ssl-certificates.md:50 +msgid "Disable [ACME](https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment) / [Let's Encrypt](https://letsencrypt.org/) support" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:39 -msgid "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" +#: ../../../docs/configuring-playbook-ssl-certificates.md:51 +msgid "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" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:40 -msgid "register your custom configuration file with Traefik, by adding an extra provider of type [file](https://doc.traefik.io/traefik/providers/file/)" +#: ../../../docs/configuring-playbook-ssl-certificates.md:52 +msgid "Register your custom configuration file with Traefik, by adding an extra provider of type [file](https://doc.traefik.io/traefik/providers/file/)" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:41 -msgid "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" +#: ../../../docs/configuring-playbook-ssl-certificates.md:53 +msgid "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" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:89 -msgid "Using a DNS-01 ACME challenge type, instead of HTTP-01" +#: ../../../docs/configuring-playbook-ssl-certificates.md:55 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:91 -msgid "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:" +#: ../../../docs/configuring-playbook-ssl-certificates.md:103 +msgid "Use a DNS-01 ACME challenge type, instead of HTTP-01" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:93 +#: ../../../docs/configuring-playbook-ssl-certificates.md:105 +msgid "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:" +msgstr "" + +#: ../../../docs/configuring-playbook-ssl-certificates.md:107 msgid "hide your public IP from Let's Encrypt logs" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:94 +#: ../../../docs/configuring-playbook-ssl-certificates.md:108 msgid "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)" msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:96 -msgid "This is an example for how to edit the `vars.yml` file if you're using Cloudflare:" +#: ../../../docs/configuring-playbook-ssl-certificates.md:110 +msgid "Example: Cloudflare" +msgstr "" + +#: ../../../docs/configuring-playbook-ssl-certificates.md:112 +msgid "Here is an example for configurations on the `vars.yml` file for Cloudflare. Please adjust it as necessary before applying it." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:111 +#: ../../../docs/configuring-playbook-ssl-certificates.md:127 msgid "Make sure to change the value of \"provider\" to your particular DNS solution, and provide the appropriate environment variables. The full list of supported providers is available [here](https://doc.traefik.io/traefik/https/acme/#providers)." msgstr "" -#: ../../../docs/configuring-playbook-ssl-certificates.md:113 +#: ../../../docs/configuring-playbook-ssl-certificates.md:129 msgid "This example assumes you're using Cloudflare to manage your DNS zone. Note that it requires the use of two tokens: one for reading all zones (`CF_ZONE_API_TOKEN`) and another that must be able to edit the particular domain you're using (`CF_DNS_API_TOKEN`). For security, it's recommended that you create two fine-grained tokens for this purpose, but you might choose to use the same token for both." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-sygnal.pot b/i18n/translation-templates/docs/configuring-playbook-sygnal.pot index 2739bd544..cd85894a7 100644 --- a/i18n/translation-templates/docs/configuring-playbook-sygnal.pot +++ b/i18n/translation-templates/docs/configuring-playbook-sygnal.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,130 +16,138 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-sygnal.md:1 +#: ../../../docs/configuring-playbook-sygnal.md:8 msgid "Setting up the Sygnal push gateway (optional)" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:3 +#: ../../../docs/configuring-playbook-sygnal.md:10 msgid "The playbook can install and configure the [Sygnal](https://github.com/matrix-org/sygnal) push gateway for you." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:5 +#: ../../../docs/configuring-playbook-sygnal.md:12 msgid "See the project's [documentation](https://github.com/matrix-org/sygnal/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:7 +#: ../../../docs/configuring-playbook-sygnal.md:14 msgid "**Note**: most people don't need to install their own gateway. As Sygnal's [Notes for application developers](https://github.com/matrix-org/sygnal/blob/master/docs/applications.md) documentation says:" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:9 +#: ../../../docs/configuring-playbook-sygnal.md:16 msgid "It is not feasible to allow end-users to configure their own Sygnal instance, because the Sygnal instance needs the appropriate FCM or APNs secrets that belong to the application." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:11 +#: ../../../docs/configuring-playbook-sygnal.md:18 msgid "This optional playbook component is only useful to people who develop/build their own Matrix client applications themselves." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:13 +#: ../../../docs/configuring-playbook-sygnal.md:20 msgid "Adjusting DNS records" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:15 +#: ../../../docs/configuring-playbook-sygnal.md:22 msgid "By default, this playbook installs Sygnal on the `sygnal.` subdomain (`sygnal.example.com`) and requires you to create a CNAME record for `sygnal`, which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:17 +#: ../../../docs/configuring-playbook-sygnal.md:24 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:19 +#: ../../../docs/configuring-playbook-sygnal.md:26 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:21 +#: ../../../docs/configuring-playbook-sygnal.md:28 msgid "To enable Sygnal, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:49 +#: ../../../docs/configuring-playbook-sygnal.md:56 msgid "Configuring [GCM/FCM](https://firebase.google.com/docs/cloud-messaging/) is easier, as it only requires that you provide some config values." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:51 +#: ../../../docs/configuring-playbook-sygnal.md:58 msgid "To configure [APNS](https://developer.apple.com/notifications/) (Apple Push Notification Service), you'd need to provide one or more certificate files. To do that, the above example configuration:" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:53 +#: ../../../docs/configuring-playbook-sygnal.md:60 msgid "makes use of the [`aux` role](https://github.com/mother-of-all-self-hosting/ansible-role-aux) (and its `aux_file_definitions` variable) to make the playbook install files into `/matrix/sygnal/data` (the `matrix_sygnal_data_path` variable). See [`defaults/main.yml` file](https://github.com/mother-of-all-self-hosting/ansible-role-aux/blob/main/defaults/main.yml) of the `aux` role for usage examples. It also makes sure the files are owned by `matrix:matrix`, so that Sygnal can read them. Of course, you can also install these files manually yourself, if you'd rather not use `aux`." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:55 +#: ../../../docs/configuring-playbook-sygnal.md:62 msgid "references these files in the Sygnal configuration (`matrix_sygnal_apps`) using a path like `/data/…` (the `/matrix/sygnal/data` directory on the host system is mounted into the `/data` directory inside the container)" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:57 +#: ../../../docs/configuring-playbook-sygnal.md:64 msgid "Adjusting the Sygnal URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:59 +#: ../../../docs/configuring-playbook-sygnal.md:66 msgid "By tweaking the `matrix_sygnal_hostname` and `matrix_sygnal_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:61 +#: ../../../docs/configuring-playbook-sygnal.md:68 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:72 +#: ../../../docs/configuring-playbook-sygnal.md:79 msgid "After changing the domain, **you may need to adjust your DNS** records to point the Sygnal domain to the Matrix server." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:74 +#: ../../../docs/configuring-playbook-sygnal.md:81 msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:76 +#: ../../../docs/configuring-playbook-sygnal.md:83 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:78 +#: ../../../docs/configuring-playbook-sygnal.md:85 msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:80 +#: ../../../docs/configuring-playbook-sygnal.md:87 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:82 +#: ../../../docs/configuring-playbook-sygnal.md:89 msgid "`roles/custom/matrix-sygnal/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:83 +#: ../../../docs/configuring-playbook-sygnal.md:90 msgid "`roles/custom/matrix-sygnal/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_sygnal_configuration_extension_yaml` variable" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:85 +#: ../../../docs/configuring-playbook-sygnal.md:92 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:87 +#: ../../../docs/configuring-playbook-sygnal.md:94 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:94 +#: ../../../docs/configuring-playbook-sygnal.md:101 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:96 +#: ../../../docs/configuring-playbook-sygnal.md:103 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:98 +#: ../../../docs/configuring-playbook-sygnal.md:105 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:100 +#: ../../../docs/configuring-playbook-sygnal.md:107 msgid "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`)." msgstr "" -#: ../../../docs/configuring-playbook-sygnal.md:102 +#: ../../../docs/configuring-playbook-sygnal.md:109 msgid "Refer to Sygnal's [Notes for application developers](https://github.com/matrix-org/sygnal/blob/master/docs/applications.md) document." msgstr "" + +#: ../../../docs/configuring-playbook-sygnal.md:111 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-sygnal.md:113 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-synapse-admin.pot b/i18n/translation-templates/docs/configuring-playbook-synapse-admin.pot index 185f0811f..9669bda40 100644 --- a/i18n/translation-templates/docs/configuring-playbook-synapse-admin.pot +++ b/i18n/translation-templates/docs/configuring-playbook-synapse-admin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,106 +16,130 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-synapse-admin.md:1 +#: ../../../docs/configuring-playbook-synapse-admin.md:13 msgid "Setting up Synapse Admin (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:3 +#: ../../../docs/configuring-playbook-synapse-admin.md:15 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:5 +#: ../../../docs/configuring-playbook-synapse-admin.md:17 msgid "synapse-admin is a web UI tool you can use to **administrate users, rooms, media, etc. on your Matrix server**. It's designed to work with the Synapse homeserver implementation and WON'T work with Dendrite because [Dendrite Admin API](https://element-hq.github.io/dendrite/administration/adminapi) differs from [Synapse Admin API](https://element-hq.github.io/synapse/latest/usage/administration/admin_api/)." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:7 +#: ../../../docs/configuring-playbook-synapse-admin.md:19 msgid "💡 **Note**: the latest version of synapse-admin is hosted by [etke.cc](https://etke.cc/) at [admin.etke.cc](https://admin.etke.cc/). If you only need this service occasionally and trust giving your admin credentials to a 3rd party Single Page Application, you can consider using it from there and avoiding the (small) overhead of self-hosting." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:9 +#: ../../../docs/configuring-playbook-synapse-admin.md:21 +msgid "💡 **Note**: The playbook also supports an alternative management UI in the shape of [Element Admin](./configuring-playbook-element-admin.md). However, it's currently less feature-rich than Synapse Admin and has a dependency on [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md)." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-admin.md:23 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:11 +#: ../../../docs/configuring-playbook-synapse-admin.md:25 msgid "By default, this playbook installs Synapse Admin on the `matrix.` subdomain, at the `/synapse-admin` path (https://matrix.example.com/synapse-admin). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:13 +#: ../../../docs/configuring-playbook-synapse-admin.md:27 msgid "If you wish to adjust it, see the section [below](#adjusting-the-synapse-admin-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:15 +#: ../../../docs/configuring-playbook-synapse-admin.md:29 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:17 +#: ../../../docs/configuring-playbook-synapse-admin.md:31 msgid "To enable Synapse Admin, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:23 +#: ../../../docs/configuring-playbook-synapse-admin.md:37 msgid "**Note**: Synapse Admin requires Synapse's [Admin APIs](https://element-hq.github.io/synapse/latest/usage/administration/admin_api/index.html) to function. Access to them is restricted with a valid access token, so exposing them publicly should not be a real security concern. Still, for additional security, we normally leave them unexposed, following [official Synapse reverse-proxying recommendations](https://element-hq.github.io/synapse/latest/reverse_proxy.html#synapse-administration-endpoints). Because Synapse Admin needs these APIs to function, when installing Synapse Admin, the playbook **automatically** exposes the Synapse Admin API publicly for you. Depending on the homeserver implementation you're using (Synapse, Dendrite), this is equivalent to:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:25 +#: ../../../docs/configuring-playbook-synapse-admin.md:39 msgid "for [Synapse](./configuring-playbook-synapse.md) (our default homeserver implementation): `matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true`" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:26 +#: ../../../docs/configuring-playbook-synapse-admin.md:40 msgid "for [Dendrite](./configuring-playbook-dendrite.md): `matrix_dendrite_container_labels_public_client_synapse_admin_api_enabled: true`" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:28 +#: ../../../docs/configuring-playbook-synapse-admin.md:42 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:30 -msgid "[!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." -msgstr "" - -#: ../../../docs/configuring-playbook-synapse-admin.md:33 +#: ../../../docs/configuring-playbook-synapse-admin.md:44 msgid "Adjusting the Synapse Admin URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:35 +#: ../../../docs/configuring-playbook-synapse-admin.md:46 msgid "By tweaking the `matrix_synapse_admin_hostname` and `matrix_synapse_admin_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:37 +#: ../../../docs/configuring-playbook-synapse-admin.md:48 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:45 +#: ../../../docs/configuring-playbook-synapse-admin.md:56 msgid "If you've changed the default hostname, you may need to create a CNAME record for the Synapse Admin domain (`admin.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:47 +#: ../../../docs/configuring-playbook-synapse-admin.md:58 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:49 +#: ../../../docs/configuring-playbook-synapse-admin.md:60 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-admin.md:62 +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-admin.md:64 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-admin.md:66 +msgid "`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" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-admin.md:68 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:51 +#: ../../../docs/configuring-playbook-synapse-admin.md:70 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:58 +#: ../../../docs/configuring-playbook-synapse-admin.md:77 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:60 +#: ../../../docs/configuring-playbook-synapse-admin.md:79 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:62 +#: ../../../docs/configuring-playbook-synapse-admin.md:81 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:64 +#: ../../../docs/configuring-playbook-synapse-admin.md:83 msgid "After installation, Synapse Admin will be accessible at: `https://matrix.example.com/synapse-admin/`" msgstr "" -#: ../../../docs/configuring-playbook-synapse-admin.md:66 +#: ../../../docs/configuring-playbook-synapse-admin.md:85 msgid "To use Synapse Admin, you need to have [registered at least one administrator account](registering-users.md) on your server." msgstr "" + +#: ../../../docs/configuring-playbook-synapse-admin.md:87 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-admin.md:89 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-synapse-auto-accept-invite.pot b/i18n/translation-templates/docs/configuring-playbook-synapse-auto-accept-invite.pot index e63740241..946a263eb 100644 --- a/i18n/translation-templates/docs/configuring-playbook-synapse-auto-accept-invite.pot +++ b/i18n/translation-templates/docs/configuring-playbook-synapse-auto-accept-invite.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,54 +16,54 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:1 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:9 msgid "Setting up Synapse Auto Invite Accept (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:3 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:11 msgid "The playbook can install and configure [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) for you." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:5 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:13 msgid "In short, it automatically accepts room invites. You can specify that only 1:1 room invites are auto-accepted. Defaults to false if not specified." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:7 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:15 msgid "See the project's [documentation](https://github.com/matrix-org/synapse-auto-accept-invite/blob/main/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:9 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:17 msgid "**Note**: Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0), the same feature [has been merged](https://github.com/element-hq/synapse/pull/17147) into Synapse (see the [Native alternative](#native-alternative) section below). You'd better use the native feature, instead of the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) 3rd party module." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:11 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:19 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:13 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:21 msgid "If you decide that you'd like to let this playbook install the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite module for you, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:21 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:29 msgid "Synapse worker deployments" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:23 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:31 msgid "In a [workerized Synapse deployment](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/c9a842147e09647c355799ca024d65a5de66b099/docs/configuring-playbook-synapse.md#load-balancing-with-workers) it is possible to run this module on a worker to reduce the load on the main process (Default is `null`). For example, add this to your configuration:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:29 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:37 msgid "There might be an [issue with federation](https://github.com/matrix-org/synapse-auto-accept-invite/issues/18)." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:31 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:39 msgid "Native alternative" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:33 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:41 msgid "Since Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0), the functionality provided by the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) 3rd party module [has been made](https://github.com/element-hq/synapse/pull/17147) part of Synapse." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:35 +#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:43 msgid "Here's example configuration for using the **native** Synapse feature:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-synapse-auto-compressor.pot b/i18n/translation-templates/docs/configuring-playbook-synapse-auto-compressor.pot index bf9e2a645..0befb1f74 100644 --- a/i18n/translation-templates/docs/configuring-playbook-synapse-auto-compressor.pot +++ b/i18n/translation-templates/docs/configuring-playbook-synapse-auto-compressor.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,66 +16,102 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:1 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:9 msgid "Setting up synapse-auto-compressor (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:3 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:11 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:5 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:13 msgid "It's a CLI tool that automatically compresses Synapse's `state_groups` database table in the background." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:7 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:15 msgid "See the project's [documentation](https://github.com/matrix-org/rust-synapse-compress-state/blob/master/README.md#automated-tool-synapse_auto_compressor) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:9 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:17 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:11 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:19 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:17 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:25 +msgid "Edit the schedule (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:27 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:29 +msgid "To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:38 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:40 +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:42 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:44 +msgid "`roles/custom/matrix-synapse-auto-compressor/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:46 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:19 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:48 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:26 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:55 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:28 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:57 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:30 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:59 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:32 -msgid "After installation, `synapse_auto_compressor` will run automatically every day at `00:00:00` (as defined in `matrix_synapse_auto_compressor_calendar` by default)." +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:61 +msgid "After installation, `synapse_auto_compressor` will run automatically every day at `00:00:00` (as defined in `matrix_synapse_auto_compressor_schedule` by default)." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:34 -msgid "Manually execute compression" +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:63 +msgid "Manually start the task" msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:36 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:65 msgid "Sometimes it can be helpful to execute compression as you'd like, avoiding to wait until 00:00, like when you test your configuration." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:38 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:67 msgid "If you want to execute it immediately, log in to the server with SSH and run `systemctl start matrix-synapse-auto-compressor`." msgstr "" -#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:40 +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:69 msgid "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." msgstr "" + +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:71 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-auto-compressor.md:73 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-synapse-s3-storage-provider.pot b/i18n/translation-templates/docs/configuring-playbook-synapse-s3-storage-provider.pot index 692d53c2a..6aeca47ec 100644 --- a/i18n/translation-templates/docs/configuring-playbook-synapse-s3-storage-provider.pot +++ b/i18n/translation-templates/docs/configuring-playbook-synapse-s3-storage-provider.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,258 +16,286 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:1 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:10 msgid "Storing Synapse media files on Amazon S3 with synapse-s3-storage-provider (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:3 -msgid "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." +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:12 +msgid "The playbook can install and configure the [synapse-s3-storage-provider](https://github.com/matrix-org/synapse-s3-storage-provider) for you." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:5 -msgid "An alternative (which has worse performance) is to use [Goofys to mount the S3 store to the local filesystem](configuring-playbook-s3-goofys.md)." +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:14 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:16 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:7 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:18 +msgid "**Note**: alternatively you can use [Goofys to mount the S3 store to the local filesystem](configuring-playbook-s3-goofys.md) despite worse performance." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:20 msgid "How it works?" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:9 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:22 msgid "Summarized writings here are inspired by [this article](https://quentin.dufour.io/blog/2021-09-14/matrix-synapse-s3-storage/)." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:11 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:24 msgid "The way media storage providers in Synapse work has some caveats:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:13 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:26 msgid "Synapse still continues to use locally-stored files (for creating thumbnails, serving files, etc)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:14 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:27 msgid "the media storage provider is just an extra storage mechanism (in addition to the local filesystem)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:15 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:28 msgid "all files are stored locally at first, and then copied to the media storage provider (either synchronously or asynchronously)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:16 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:29 msgid "if a file is not available on the local filesystem, it's pulled from a media storage provider" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:18 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:31 msgid "You may be thinking **if all files are stored locally as well, what's the point**?" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:20 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:33 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:22 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:35 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:24 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:37 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:26 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:39 msgid "After [creating the S3 bucket and configuring it](configuring-playbook-s3.md#bucket-creation-and-security-configuration), add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:48 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:61 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:50 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:63 msgid "There are some additional things you may wish to configure about the server." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:52 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:65 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:54 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:67 msgid "`roles/custom/matrix-synapse/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:56 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:69 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:71 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:78 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:80 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:82 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:58 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:84 msgid "If you have existing files in Synapse's media repository (`/matrix/synapse/storage/media-store/…`):" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:60 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:86 msgid "new files will start being stored both locally and on the S3 store" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:61 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:87 msgid "the existing files will remain on the local filesystem only until [migrating them to the S3 store](#migrating-your-existing-media-files-to-the-s3-store)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:62 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:88 msgid "at some point (and periodically in the future), you can delete local files which have been uploaded to the S3 store already" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:64 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:90 msgid "Regardless of whether you need to [Migrate your existing files to the S3 store](#migrating-your-existing-media-files-to-the-s3-store) or not, make sure you've familiarized yourself with [How it works?](#how-it-works) above and [Periodically cleaning up the local filesystem](#periodically-cleaning-up-the-local-filesystem) below." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:66 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:92 msgid "Migrating your existing media files to the S3 store" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:68 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:94 msgid "Migrating your existing data can happen in multiple ways:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:70 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:96 msgid "[using the `s3_media_upload` script from `synapse-s3-storage-provider`](#using-the-s3_media_upload-script-from-synapse-s3-storage-provider) (very slow when dealing with lots of data)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:71 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:97 msgid "[using another tool in combination with `s3_media_upload`](#using-another-tool-in-combination-with-s3_media_upload) (quicker when dealing with lots of data)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:73 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:99 msgid "💡 **Note**: instead of using `s3_media_upload` directly, which is very slow and painful for an initial data migration, we recommend [using another tool in combination with `s3_media_upload`](#using-another-tool-in-combination-with-s3_media_upload)." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:75 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:101 msgid "Using the `s3_media_upload` script from `synapse-s3-storage-provider`" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:77 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:103 msgid "To copy your existing files, SSH into the server and run `/matrix/synapse/ext/s3-storage-provider/bin/shell`." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:79 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:105 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:81 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:107 msgid "Then use the following commands (`$` values come from environment variables — they're **not placeholders** that you need to substitute):" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:83 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:109 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:84 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:110 msgid "`$UPDATE_DB_DURATION` is influenced by the `matrix_synapse_ext_synapse_s3_storage_provider_update_db_day_count` variable (defaults to `0`)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:85 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:111 msgid "`$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**)." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:86 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:112 msgid "`s3_media_upload check-deleted $MEDIA_PATH` — check whether files in the local cache still exist in the local media repository directory" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:87 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:113 msgid "`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" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:89 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:115 msgid "The `s3_media_upload upload` command may take a lot of time to complete." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:91 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:117 msgid "Instead of running the above commands manually in the shell, you can also run the `/matrix/synapse/ext/s3-storage-provider/bin/migrate` script which will run the same commands automatically. We demonstrate how to do it manually, because:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:93 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:119 msgid "it's what the upstream project demonstrates and it teaches you how to use the `s3_media_upload` tool" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:94 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:120 msgid "allows you to check and verify the output of each command, to catch mistakes" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:95 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:121 msgid "includes progress bars and detailed output for each command" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:96 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:122 msgid "allows you to easily interrupt slow-running commands, etc. (the `/matrix/synapse/ext/s3-storage-provider/bin/migrate` starts a container without interactive TTY support, so `Ctrl+C` may not work and you and require killing via `docker kill …`)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:98 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:124 msgid "Using another tool in combination with `s3_media_upload`" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:100 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:126 msgid "To migrate your existing local data to S3, we recommend to:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:102 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:128 msgid "**first** use another tool ([`aws s3`](#copying-data-to-amazon-s3) or [`b2 sync`](#copying-data-to-backblaze-b2), etc.) to copy the local files to the S3 bucket" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:104 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:130 msgid "**only then** [use the `s3_media_upload` tool to finish the migration](#using-the-s3_media_upload-script-from-synapse-s3-storage-provider) (this checks to ensure all files are uploaded and then deletes the local files)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:106 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:132 msgid "Copying data to Amazon S3" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:108 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:134 msgid "To copy to AWS S3, start a container on the Matrix server like this:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:120 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:146 msgid "Copying data to an S3 alternative using the aws-s3 tool" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:122 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:148 msgid "To copy to a provider other than AWS S3 (e.g. Storj, Wasabi, Digital Ocean Spaces, etc.), you can use the command for [Copying data to Amazon S3](#copying-data-to-amazon-s3) with an added `--endpoint-url=$ENDPOINT` argument." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:124 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:150 msgid "Add this argument to the command **as-is** (`$ENDPOINT` is an environment variable corresponding to `matrix_synapse_ext_synapse_s3_storage_provider_config_endpoint_url`, so you don't need to touch it). Make sure to add the argument **before** the final quote (`'`) of the command." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:126 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:152 msgid "Copying data to Backblaze B2" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:128 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:154 msgid "You can copy files to Backblaze B2 either by following the [Copying data to an S3 alternative using the aws-s3 tool](#copying-data-to-an-s3-alternative-using-the-aws-s3-tool) or by using the B2-specific [b2 command-line tool](https://www.backblaze.com/b2/docs/quick_command_line.html) as described below." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:130 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:156 msgid "To copy the data using the `b2` tool, start a container on the Matrix server like this:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:144 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:170 msgid "Periodically cleaning up the local filesystem" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:146 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:172 msgid "As described in [How it works?](#how-it-works) above, when new media is uploaded to the Synapse homeserver, it's first stored locally and then also stored on the remote S3 storage." msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:148 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:174 msgid "By default, we periodically ensure that all local files are uploaded to S3 and are then removed from the local filesystem. This is done automatically using:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:150 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:176 msgid "the `/matrix/synapse/ext/s3-storage-provider/bin/migrate` script" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:151 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:177 msgid "… invoked via the `matrix-synapse-s3-storage-provider-migrate.service` service" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:152 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:178 msgid "… triggered by the `matrix-synapse-s3-storage-provider-migrate.timer` timer, every day at 05:00" msgstr "" -#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:154 +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:180 msgid "So… you don't need to perform any maintenance yourself." msgstr "" + +#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:182 +msgid "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):" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-synapse-simple-antispam.pot b/i18n/translation-templates/docs/configuring-playbook-synapse-simple-antispam.pot index 0933ef731..96e8dde27 100644 --- a/i18n/translation-templates/docs/configuring-playbook-synapse-simple-antispam.pot +++ b/i18n/translation-templates/docs/configuring-playbook-synapse-simple-antispam.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,26 +16,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:1 +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:8 msgid "Setting up Synapse Simple Antispam (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:3 +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:10 msgid "The playbook can install and configure [synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispam) for you." msgstr "" -#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:5 -msgid "It lets you fight invite-spam by automatically blocking invitiations from a list of servers specified by you (blacklisting)." +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:12 +msgid "It lets you fight invite-spam by automatically blocking invitations from a list of servers specified by you (blacklisting)." msgstr "" -#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:7 +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:14 msgid "See the project's [documentation](https://github.com/t2bot/synapse-simple-antispam/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:9 +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:16 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:11 +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:18 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):" msgstr "" + +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:28 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:30 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:37 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-simple-antispam.md:39 +msgid "`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." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-synapse-usage-exporter.pot b/i18n/translation-templates/docs/configuring-playbook-synapse-usage-exporter.pot index 28f37115b..9fbd5187f 100644 --- a/i18n/translation-templates/docs/configuring-playbook-synapse-usage-exporter.pot +++ b/i18n/translation-templates/docs/configuring-playbook-synapse-usage-exporter.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,90 +16,126 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:1 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:9 msgid "Enabling synapse-usage-exporter for Synapse usage statistics (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:3 -msgid "[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." +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:11 +msgid "The playbook can install and configure [synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) for you." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:13 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:5 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:15 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:7 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:17 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:19 +msgid "What does it do?" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:21 msgid "Enabling this service will automatically:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:9 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:23 msgid "install the synapse-usage-exporter service" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:10 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:24 msgid "re-configure Synapse to push (via HTTP `PUT`) usage statistics information to synapse-usage-exporter" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:11 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:25 msgid "re-configure [Prometheus](./configuring-playbook-prometheus-grafana.md) (if Prometheus is enabled), to periodically scrape metrics from synapse-usage-exporter" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:12 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:26 msgid "add a new [Grafana](./configuring-playbook-prometheus-grafana.md) dashboard (if Grafana is enabled) containing Synapse usage statistics" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:14 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:28 msgid "Adjusting DNS records (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:16 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:30 msgid "By default, this playbook installs synapse-usage-exporter on the `matrix.` subdomain, at the `/report-usage-stats/push` path (https://matrix.example.com/report-usage-stats/push). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section." msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:18 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:32 msgid "If you wish to adjust it, see the section [below](#adjusting-the-synapse-usage-exporter-url-optional) for details about DNS configuration." msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:20 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:34 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:22 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:36 msgid "To enable synapse-usage-exporter, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:34 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:48 msgid "Adjusting the synapse-usage-exporter URL (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:36 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:50 msgid "By tweaking the `matrix_synapse_usage_exporter_hostname` and `matrix_synapse_usage_exporter_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one." msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:38 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:52 msgid "Example additional configuration for your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:47 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:61 msgid "If you've changed the default hostname, you may need to create a CNAME record for the synapse-usage-exporter domain (`sue.example.com`), which targets `matrix.example.com`." msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:49 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:63 msgid "When setting, replace `example.com` with your own." msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:51 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:65 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:67 +msgid "There are some additional things you may wish to configure about the component." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:69 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:71 +msgid "`roles/custom/matrix-synapse-usage-exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:73 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:53 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:75 msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:60 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:82 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:62 +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:84 msgid "`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." msgstr "" + +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:86 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse-usage-exporter.md:88 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-synapse.pot b/i18n/translation-templates/docs/configuring-playbook-synapse.pot index 5fa37a2ab..901c0309f 100644 --- a/i18n/translation-templates/docs/configuring-playbook-synapse.pot +++ b/i18n/translation-templates/docs/configuring-playbook-synapse.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,258 +16,282 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-synapse.md:1 +#: ../../../docs/configuring-playbook-synapse.md:12 msgid "Configuring Synapse (optional)" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:3 +#: ../../../docs/configuring-playbook-synapse.md:14 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:5 +#: ../../../docs/configuring-playbook-synapse.md:16 +msgid "💡 See this page for details about maintaining Synapse: [Synapse maintenance](maintenance-synapse.md)" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse.md:18 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:7 +#: ../../../docs/configuring-playbook-synapse.md:20 msgid "Load balancing with workers" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:9 +#: ../../../docs/configuring-playbook-synapse.md:22 msgid "To have Synapse gracefully handle thousands of users, worker support should be enabled. It factors out some homeserver tasks and spreads the load of incoming client and server-to-server traffic between multiple processes. More information can be found in the [official Synapse workers documentation](https://github.com/element-hq/synapse/blob/master/docs/workers.md) and [Tom Foster](https://github.com/tcpipuk)'s [Synapse homeserver guide](https://tcpipuk.github.io/synapse/index.html)." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:11 +#: ../../../docs/configuring-playbook-synapse.md:24 msgid "To enable Synapse worker support, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:19 +#: ../../../docs/configuring-playbook-synapse.md:32 msgid "By default, this enables the `one-of-each` [worker preset](#worker-presets), but you may wish to use another preset or [control the number of worker instances](#controlling-the-number-of-worker-instances)." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:21 +#: ../../../docs/configuring-playbook-synapse.md:34 msgid "Worker presets" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:23 +#: ../../../docs/configuring-playbook-synapse.md:36 msgid "We support a few configuration presets (`matrix_synapse_workers_preset: one-of-each` being the default configuration right now):" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:25 +#: ../../../docs/configuring-playbook-synapse.md:38 msgid "(federation-only) `little-federation-helper` — a very minimal worker configuration to improve federation performance" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:26 +#: ../../../docs/configuring-playbook-synapse.md:39 msgid "(generic) `one-of-each` — defaults to one worker of each supported type — no smart routing, just generic workers" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:27 +#: ../../../docs/configuring-playbook-synapse.md:40 msgid "(specialized) `specialized-workers` — defaults to one worker of each supported type, but disables generic workers and uses [specialized workers](#specialized-workers) instead" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:29 +#: ../../../docs/configuring-playbook-synapse.md:42 msgid "These presets represent a few common configurations. There are many worker types which can be mixed and matched based on your needs." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:31 +#: ../../../docs/configuring-playbook-synapse.md:44 msgid "Generic workers" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:33 +#: ../../../docs/configuring-playbook-synapse.md:46 msgid "Previously, the playbook only supported the most basic type of load-balancing. We call it **generic load-balancing** below, because incoming HTTP requests are sent to a generic worker. Load-balancing was done based on the requestor's IP address. This is simple, but not necessarily optimal. If you're accessing your account from multiple IP addresses (e.g. your mobile phone being on a different network than your PC), these separate requests may potentially be routed to different workers, each of which would need to cache roughly the same data." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:35 +#: ../../../docs/configuring-playbook-synapse.md:48 msgid "This is **still the default load-balancing method (preset) used by the playbook**." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:37 +#: ../../../docs/configuring-playbook-synapse.md:50 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:39 +#: ../../../docs/configuring-playbook-synapse.md:52 msgid "You may also consider [tweaking the number of workers of each type](#controlling-the-number-of-worker-instances) from the default (one of each)." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:41 +#: ../../../docs/configuring-playbook-synapse.md:54 msgid "Specialized workers" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:43 -msgid "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." +#: ../../../docs/configuring-playbook-synapse.md:56 +msgid "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 requester's IP address, specialized load-balancing routes to **4 different types of specialized workers** based on **smarter criteria** — the access token (username) of the requester and/or on the resource (room, etc.) being requested." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:45 +#: ../../../docs/configuring-playbook-synapse.md:58 msgid "The playbook supports these **4 types** of specialized workers:" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:47 +#: ../../../docs/configuring-playbook-synapse.md:60 msgid "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" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:48 +#: ../../../docs/configuring-playbook-synapse.md:61 msgid "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))" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:49 +#: ../../../docs/configuring-playbook-synapse.md:62 msgid "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**)" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:50 +#: ../../../docs/configuring-playbook-synapse.md:63 msgid "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**)" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:52 +#: ../../../docs/configuring-playbook-synapse.md:65 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:54 +#: ../../../docs/configuring-playbook-synapse.md:67 msgid "Controlling the number of worker instances" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:56 +#: ../../../docs/configuring-playbook-synapse.md:69 msgid "If you'd like more customization power, you can start with one of the [worker presets](#worker-presets) and then tweak various `matrix_synapse_workers_*_count` variables manually." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:58 +#: ../../../docs/configuring-playbook-synapse.md:71 msgid "To find what variables are available for you to override in your own `vars.yml` configuration file, see the [`defaults/main.yml` file for the `matrix-synapse` Ansible role](../roles/custom/matrix-synapse/defaults/main.yml)." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:60 +#: ../../../docs/configuring-playbook-synapse.md:73 msgid "The only thing you **cannot** do is mix [generic workers](#generic-workers) and [specialized workers](#specialized-workers)." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:62 +#: ../../../docs/configuring-playbook-synapse.md:75 msgid "Effect of enabling workers on the rest of your server" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:64 +#: ../../../docs/configuring-playbook-synapse.md:77 msgid "When Synapse workers are enabled, the integrated [Postgres database is tuned](maintenance-postgres.md#tuning-postgresql), so that the maximum number of Postgres connections are increased from `200` to `500`. If you need to decrease or increase the number of maximum Postgres connections further, use the `postgres_max_connections` variable." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:66 +#: ../../../docs/configuring-playbook-synapse.md:79 msgid "A separate Ansible role (`matrix-synapse-reverse-proxy-companion`) and component handles load-balancing for workers. This role/component is automatically enabled when you enable workers. Make sure to use the `setup-all` tag (not `install-all`!) during the playbook's [installation](./installing.md) process, especially if you're disabling workers, so that components may be installed/uninstalled correctly." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:68 +#: ../../../docs/configuring-playbook-synapse.md:81 msgid "In case any problems occur, make sure to have a look at the [list of synapse issues about workers](https://github.com/element-hq/synapse/issues?q=workers+in%3Atitle) and your `journalctl --unit 'matrix-*'`." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:70 +#: ../../../docs/configuring-playbook-synapse.md:83 msgid "Synapse + OpenID Connect for Single-Sign-On" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:72 +#: ../../../docs/configuring-playbook-synapse.md:85 msgid "💡 An alternative to setting up OIDC in Synapse is to use [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) (MAS). Newer clients (like Element X) only support SSO-based authentication via MAS and not via the legacy Synapse OIDC setup described below. That said, MAS is still a new experimental service which comes with its own downsides. Consult its documentation to learn if it will be a good fit for your deployment." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:74 +#: ../../../docs/configuring-playbook-synapse.md:87 msgid "If you'd like to use OpenID Connect authentication with Synapse, you'll need some additional configuration." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:76 +#: ../../../docs/configuring-playbook-synapse.md:89 msgid "This example configuration is for [keycloak](https://www.keycloak.org/), an opensource Identity Provider maintained by Red Hat." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:78 +#: ../../../docs/configuring-playbook-synapse.md:91 msgid "For more detailed documentation on available options and how to setup keycloak, see the [Synapse documentation on OpenID Connect with keycloak](https://github.com/element-hq/synapse/blob/develop/docs/openid.md#keycloak)." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:80 +#: ../../../docs/configuring-playbook-synapse.md:93 msgid "In case you encounter errors regarding the parsing of the variables, you can try to add `{% raw %}` and `{% endraw %}` blocks around them. For example ;" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:101 +#: ../../../docs/configuring-playbook-synapse.md:114 msgid "Customizing templates" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:103 +#: ../../../docs/configuring-playbook-synapse.md:116 msgid "[Templates](https://github.com/element-hq/synapse/blob/develop/docs/templates.md) are used by Synapse for showing **certain web pages** handled by the server, as well as for **email notifications**." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:105 +#: ../../../docs/configuring-playbook-synapse.md:118 msgid "This playbook allows you to customize the default templates (see the [`synapse/res/templates` directory](https://github.com/element-hq/synapse/tree/develop/synapse/res/templates))." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:107 +#: ../../../docs/configuring-playbook-synapse.md:120 msgid "If template customization is enabled, the playbook will build a custom container image based on the official one." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:109 +#: ../../../docs/configuring-playbook-synapse.md:122 msgid "Your custom templates need to live in a public or private git repository. This repository will be cloned during Synapse image customization (during the playbook run)." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:111 +#: ../../../docs/configuring-playbook-synapse.md:124 msgid "To enable template customizations, add the following configuration to your `vars.yml` file (adapt to your needs):" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:137 +#: ../../../docs/configuring-playbook-synapse.md:150 msgid "As mentioned in Synapse's Templates documentation, Synapse will fall back to its own templates if a template is not found in that directory. Due to this, it's recommended to only store and maintain template files in your repository if you need to make custom changes. Other files (which you don't need to change), should not be duplicated, so that you don't need to worry about getting out-of-sync with the original Synapse templates." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:139 +#: ../../../docs/configuring-playbook-synapse.md:152 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:141 +#: ../../../docs/configuring-playbook-synapse.md:154 msgid "There are some additional things you may wish to configure about the server." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:143 +#: ../../../docs/configuring-playbook-synapse.md:156 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:145 +#: ../../../docs/configuring-playbook-synapse.md:158 msgid "`roles/custom/matrix-synapse/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:146 +#: ../../../docs/configuring-playbook-synapse.md:159 msgid "`roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2` for the server's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_synapse_configuration_extension_yaml` variable" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:148 +#: ../../../docs/configuring-playbook-synapse.md:161 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:150 +#: ../../../docs/configuring-playbook-synapse.md:163 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:157 +#: ../../../docs/configuring-playbook-synapse.md:170 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:159 +#: ../../../docs/configuring-playbook-synapse.md:172 msgid "`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." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:161 +#: ../../../docs/configuring-playbook-synapse.md:174 msgid "Usage" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:163 +#: ../../../docs/configuring-playbook-synapse.md:176 msgid "Synapse Admin" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:165 +#: ../../../docs/configuring-playbook-synapse.md:178 msgid "With [Synapse Admin](configuring-playbook-synapse-admin.md), certain Synapse administration tasks (managing users and rooms, etc.) can be performed via a web user-interace." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:167 +#: ../../../docs/configuring-playbook-synapse.md:180 msgid "The playbook can install and configure Synapse Admin for you. For details about it, see [this page](configuring-playbook-synapse-admin.md)." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:169 +#: ../../../docs/configuring-playbook-synapse.md:182 msgid "Monitoring Synapse Metrics with Prometheus and Grafana" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:171 +#: ../../../docs/configuring-playbook-synapse.md:184 msgid "This playbook allows you to enable Synapse metrics, which can provide insight into the performance and activity of Synapse." msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:173 -msgid "To enable Synapse runtime metrics see: [Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server](configuring-playbook-prometheus-grafana.md)" +#: ../../../docs/configuring-playbook-synapse.md:186 +msgid "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)" msgstr "" -#: ../../../docs/configuring-playbook-synapse.md:175 +#: ../../../docs/configuring-playbook-synapse.md:188 msgid "To enable Synapse usage metrics, see: [Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md)" msgstr "" + +#: ../../../docs/configuring-playbook-synapse.md:190 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse.md:192 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse.md:194 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-synapse.md:196 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-synapse.md:198 +msgid "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:" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-telemetry.pot b/i18n/translation-templates/docs/configuring-playbook-telemetry.pot index e18e4a6c0..b55c28261 100644 --- a/i18n/translation-templates/docs/configuring-playbook-telemetry.pot +++ b/i18n/translation-templates/docs/configuring-playbook-telemetry.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,34 +16,34 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-telemetry.md:1 +#: ../../../docs/configuring-playbook-telemetry.md:11 msgid "Enabling Telemetry for your Matrix server (optional)" msgstr "" -#: ../../../docs/configuring-playbook-telemetry.md:3 +#: ../../../docs/configuring-playbook-telemetry.md:13 msgid "By default, this playbook configures your Matrix homeserver to not send any telemetry data anywhere." msgstr "" -#: ../../../docs/configuring-playbook-telemetry.md:5 +#: ../../../docs/configuring-playbook-telemetry.md:15 msgid "The [matrix.org](https://matrix.org) team would really appreciate it if you could help the project out by reporting usage statistics from your homeserver. Enabling usage statistics helps track the growth of the Matrix community, and helps to make Matrix a success." msgstr "" -#: ../../../docs/configuring-playbook-telemetry.md:7 +#: ../../../docs/configuring-playbook-telemetry.md:17 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-telemetry.md:9 +#: ../../../docs/configuring-playbook-telemetry.md:19 msgid "If you'd like to **help by enabling submission of general usage statistics** for your homeserver, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-telemetry.md:17 +#: ../../../docs/configuring-playbook-telemetry.md:27 msgid "Usage statistics being submitted" msgstr "" -#: ../../../docs/configuring-playbook-telemetry.md:19 +#: ../../../docs/configuring-playbook-telemetry.md:29 msgid "When enabled, your homeserver will regularly upload a few dozen statistics about your server. This data includes your homeserver's domain, the total number of users, the number of active users, the total number of rooms, and the number of messages sent per day on your homeserver." msgstr "" -#: ../../../docs/configuring-playbook-telemetry.md:21 +#: ../../../docs/configuring-playbook-telemetry.md:31 msgid "See [Synapse's documentation](https://github.com/element-hq/synapse/blob/develop/docs/usage/administration/monitoring/reporting_homeserver_usage_statistics.md#available-statistics) or [Dendrite's documentation](https://github.com/element-hq/dendrite/blob/main/docs/FAQ.md#what-is-being-reported-when-enabling-phone-home-statistics) for the full list of statistics that are reported." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-traefik.pot b/i18n/translation-templates/docs/configuring-playbook-traefik.pot index 291f07bde..824226870 100644 --- a/i18n/translation-templates/docs/configuring-playbook-traefik.pot +++ b/i18n/translation-templates/docs/configuring-playbook-traefik.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,119 +16,171 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-traefik.md:1 +#: ../../../docs/configuring-playbook-traefik.md:10 msgid "Configuring the Traefik reverse-proxy (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:3 -msgid "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." +#: ../../../docs/configuring-playbook-traefik.md:12 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:5 +#: ../../../docs/configuring-playbook-traefik.md:14 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:16 msgid "This Ansible role support various configuration options. Feel free to consult its `default/main.yml` variables file." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:7 -msgid "Adjusting SSL certificate retrieval" +#: ../../../docs/configuring-playbook-traefik.md:18 +msgid "Disable access logs" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:9 -msgid "See the dedicated [Adjusting SSL certificate retrieval](configuring-playbook-ssl-certificates.md) documentation page." +#: ../../../docs/configuring-playbook-traefik.md:20 +msgid "To disable access logging, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:11 -msgid "Increase logging verbosity" +#: ../../../docs/configuring-playbook-traefik.md:26 +msgid "Enable Traefik Dashboard" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:17 -msgid "Disable access logs" +#: ../../../docs/configuring-playbook-traefik.md:28 +msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:19 -msgid "This will disable access logging." +#: ../../../docs/configuring-playbook-traefik.md:38 +msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:25 -msgid "Enable Traefik Dashboard" +#: ../../../docs/configuring-playbook-traefik.md:41 +msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:27 -msgid "This will enable a Traefik [Dashboard](https://doc.traefik.io/traefik/operations/dashboard/) UI at `https://matrix.example.com/dashboard/` (note the trailing `/`)." +#: ../../../docs/configuring-playbook-traefik.md:43 +msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:37 -msgid "[!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." +#: ../../../docs/configuring-playbook-traefik.md:45 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:47 +msgid "[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" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:40 -msgid "Additional configuration" +#: ../../../docs/configuring-playbook-traefik.md:49 +msgid "For example, to enable and secure the Dashboard, you can add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:42 -msgid "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." +#: ../../../docs/configuring-playbook-traefik.md:51 +msgid "**Note**: this is a contrived example as you can enable and secure the Dashboard using the dedicated variables. See above for details." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:52 +#: ../../../docs/configuring-playbook-traefik.md:69 msgid "Reverse-proxying another service behind Traefik" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:54 +#: ../../../docs/configuring-playbook-traefik.md:71 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:56 +#: ../../../docs/configuring-playbook-traefik.md:73 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:58 +#: ../../../docs/configuring-playbook-traefik.md:75 msgid "Reverse-proxying a remote HTTP/HTTPS service behind Traefik" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:60 +#: ../../../docs/configuring-playbook-traefik.md:77 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:62 +#: ../../../docs/configuring-playbook-traefik.md:79 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:64 +#: ../../../docs/configuring-playbook-traefik.md:81 msgid "First, we have to adjust the static configuration of Traefik, so that we can add additional configuration files:" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:78 +#: ../../../docs/configuring-playbook-traefik.md:95 msgid "If you are using a self-signed certificate on your webserver, you can tell Traefik to trust your own backend servers by adding more configuration to the static configuration file. If you do so, bear in mind the security implications of disabling the certificate validity checks towards your back end." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:92 +#: ../../../docs/configuring-playbook-traefik.md:109 msgid "Next, you have to add a new dynamic configuration file for Traefik that contains the actual information of the server using the `aux_file_definitions` variable. In this example, we will terminate SSL at the Traefik instance and connect to the other server via HTTPS. Traefik will now take care of managing the certificates." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:111 -#: ../../../docs/configuring-playbook-traefik.md:134 +#: ../../../docs/configuring-playbook-traefik.md:128 +#: ../../../docs/configuring-playbook-traefik.md:151 msgid "Changing the `url` to one with an `http://` prefix would allow to connect to the server via HTTP." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:113 +#: ../../../docs/configuring-playbook-traefik.md:130 msgid "Reverse-proxying another service behind Traefik without terminating SSL" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:115 +#: ../../../docs/configuring-playbook-traefik.md:132 msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:136 +#: ../../../docs/configuring-playbook-traefik.md:153 msgid "With these changes, all TCP traffic will be reverse-proxied to the target system." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:138 +#: ../../../docs/configuring-playbook-traefik.md:155 msgid "[!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/`)```." msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:141 +#: ../../../docs/configuring-playbook-traefik.md:158 msgid "Traefik behind a `proxy_protocol` reverse-proxy" msgstr "" -#: ../../../docs/configuring-playbook-traefik.md:143 -msgid "If you run a reverse-proxy which speaks `proxy_protocol`, add the following to your configuration file:" +#: ../../../docs/configuring-playbook-traefik.md:160 +msgid "If you run a reverse-proxy which speaks `proxy_protocol`, add the following configuration to your `vars.yml` file:" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:179 +msgid "Other configurations" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:181 +msgid "Adjusting SSL certificate retrieval" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:183 +msgid "See the dedicated [Adjusting SSL certificate retrieval](configuring-playbook-ssl-certificates.md) documentation page." +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:185 +msgid "Installing" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:187 +msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:194 +msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:196 +msgid "`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." +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:198 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:200 +msgid "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`." +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:202 +msgid "Increase logging verbosity" +msgstr "" + +#: ../../../docs/configuring-playbook-traefik.md:204 +msgid "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:" msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-turn.pot b/i18n/translation-templates/docs/configuring-playbook-turn.pot index 434f1f4ea..45471515c 100644 --- a/i18n/translation-templates/docs/configuring-playbook-turn.pot +++ b/i18n/translation-templates/docs/configuring-playbook-turn.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,118 +16,142 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-turn.md:1 +#: ../../../docs/configuring-playbook-turn.md:11 msgid "Configuring a TURN server (optional, advanced)" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:3 +#: ../../../docs/configuring-playbook-turn.md:13 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:5 +#: ../../../docs/configuring-playbook-turn.md:15 msgid "If you'd like to stop the playbook installing the server, see the section [below](#disabling-coturn) to check the configuration for disabling it." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:7 +#: ../../../docs/configuring-playbook-turn.md:17 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:9 +#: ../../../docs/configuring-playbook-turn.md:19 msgid "Define public IP manually (optional)" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:11 +#: ../../../docs/configuring-playbook-turn.md:21 msgid "In the `hosts` file we explicitly ask for your server's external IP address when defining `ansible_host`, because the same value is used for configuring coturn." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:13 +#: ../../../docs/configuring-playbook-turn.md:23 msgid "If you'd rather use a local IP for `ansible_host`, add the following configuration to your `vars.yml` file. Make sure to replace `YOUR_PUBLIC_IP` with the pubic IP used by the server." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:19 +#: ../../../docs/configuring-playbook-turn.md:29 msgid "If you'd like to rely on external IP address auto-detection (not recommended unless you need it), set an empty value to the variable. The playbook will automatically contact an [EchoIP](https://github.com/mpolden/echoip)-compatible service (`https://ifconfig.co/json` by default) to determine your server's IP address. This API endpoint is configurable via the `matrix_coturn_turn_external_ip_address_auto_detection_echoip_service_url` variable." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:21 +#: ../../../docs/configuring-playbook-turn.md:31 msgid "If your server has multiple external IP addresses, the coturn role offers a different variable for specifying them:" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:28 +#: ../../../docs/configuring-playbook-turn.md:38 msgid "Change the authentication mechanism (optional)" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:30 +#: ../../../docs/configuring-playbook-turn.md:40 msgid "The playbook uses the [`auth-secret` authentication method](https://github.com/coturn/coturn/blob/873cabd6a2e5edd7e9cc5662cac3ffe47fe87a8e/README.turnserver#L186-L199) by default, but you may switch to the [`lt-cred-mech` method](https://github.com/coturn/coturn/blob/873cabd6a2e5edd7e9cc5662cac3ffe47fe87a8e/README.turnserver#L178) which [some report](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3191) to be working better." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:32 +#: ../../../docs/configuring-playbook-turn.md:42 msgid "To do so, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:38 +#: ../../../docs/configuring-playbook-turn.md:48 msgid "Regardless of the selected authentication method, the playbook generates secrets automatically and passes them to the homeserver and coturn." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:40 +#: ../../../docs/configuring-playbook-turn.md:50 msgid "If [Jitsi](configuring-playbook-jitsi.md) is installed, note that switching to `lt-cred-mech` will disable the integration between Jitsi and your coturn server, as Jitsi seems to support the `auth-secret` authentication method only." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:42 +#: ../../../docs/configuring-playbook-turn.md:52 msgid "Use your own external coturn server (optional)" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:44 +#: ../../../docs/configuring-playbook-turn.md:54 msgid "If you'd like to use another TURN server (be it coturn or some other one), add the following configuration to your `vars.yml` file. Make sure to replace `HOSTNAME_OR_IP` with your own." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:58 +#: ../../../docs/configuring-playbook-turn.md:68 msgid "If you have or want to enable Jitsi, you might want to enable the TURN server there too. If you do not do it, Jitsi will fall back to an upstream service." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:65 +#: ../../../docs/configuring-playbook-turn.md:75 msgid "You can put multiple host/port combinations if you'd like to." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:67 +#: ../../../docs/configuring-playbook-turn.md:77 +msgid "Edit the reloading schedule (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-turn.md:79 +msgid "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." +msgstr "" + +#: ../../../docs/configuring-playbook-turn.md:81 +msgid "To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):" +msgstr "" + +#: ../../../docs/configuring-playbook-turn.md:87 +msgid "**Note**: the actual job may run with a delay. See `matrix_coturn_reload_schedule_randomized_delay_sec` for its default value." +msgstr "" + +#: ../../../docs/configuring-playbook-turn.md:89 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:69 +#: ../../../docs/configuring-playbook-turn.md:91 msgid "There are some additional things you may wish to configure about the TURN server." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:71 +#: ../../../docs/configuring-playbook-turn.md:93 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:73 +#: ../../../docs/configuring-playbook-turn.md:95 msgid "`roles/custom/matrix-coturn/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:75 +#: ../../../docs/configuring-playbook-turn.md:97 msgid "Disabling coturn" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:77 +#: ../../../docs/configuring-playbook-turn.md:99 msgid "If, for some reason, you'd like for the playbook to not install coturn (or to uninstall it if it was previously installed), add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:83 +#: ../../../docs/configuring-playbook-turn.md:105 msgid "In that case, Synapse would not point to any coturn servers and audio/video call functionality may fail." msgstr "" -#: ../../../docs/configuring-playbook-turn.md:85 +#: ../../../docs/configuring-playbook-turn.md:107 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:87 +#: ../../../docs/configuring-playbook-turn.md:109 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:94 +#: ../../../docs/configuring-playbook-turn.md:116 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-turn.md:96 +#: ../../../docs/configuring-playbook-turn.md:118 msgid "`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." msgstr "" + +#: ../../../docs/configuring-playbook-turn.md:120 +msgid "Troubleshooting" +msgstr "" + +#: ../../../docs/configuring-playbook-turn.md:122 +msgid "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`." +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook-user-verification-service.pot b/i18n/translation-templates/docs/configuring-playbook-user-verification-service.pot index ed5328346..ba4f3a01a 100644 --- a/i18n/translation-templates/docs/configuring-playbook-user-verification-service.pot +++ b/i18n/translation-templates/docs/configuring-playbook-user-verification-service.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,214 +16,214 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook-user-verification-service.md:1 +#: ../../../docs/configuring-playbook-user-verification-service.md:8 msgid "Setting up Matrix User Verification Service (optional)" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:3 +#: ../../../docs/configuring-playbook-user-verification-service.md:10 msgid "The playbook can install and configure [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) (hereafter: UVS) for you." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:5 +#: ../../../docs/configuring-playbook-user-verification-service.md:12 msgid "See the project's [documentation](https://github.com/matrix-org/matrix-user-verification-service/blob/master/README.md) to learn what it does and why it might be useful to you." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:7 +#: ../../../docs/configuring-playbook-user-verification-service.md:14 msgid "Currently, the main purpose of this role is to allow Jitsi to authenticate Matrix users and check if they are authorized to join a conference. If the Jitsi server is also configured by this playbook, all plugging of variables and secrets is handled in `group_vars/matrix_servers`." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:9 +#: ../../../docs/configuring-playbook-user-verification-service.md:16 msgid "What does it do?" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:11 +#: ../../../docs/configuring-playbook-user-verification-service.md:18 msgid "UVS can be used to verify two claims:" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:13 +#: ../../../docs/configuring-playbook-user-verification-service.md:20 msgid "(A) Whether a given OpenID token is valid for a given server and" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:14 +#: ../../../docs/configuring-playbook-user-verification-service.md:21 msgid "(B) whether a user is member of a given room and the corresponding PowerLevel" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:16 +#: ../../../docs/configuring-playbook-user-verification-service.md:23 msgid "Verifying an OpenID token ID done by finding the corresponding Homeserver via `/.well-known/matrix/server` for the given domain. The configured `matrix_user_verification_service_uvs_homeserver_url` does **not** factor into this. By default, this playbook only checks against `matrix_server_fqn_matrix`. Therefore, the request will be made against the public `openid` API for `matrix_server_fqn_matrix`." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:18 +#: ../../../docs/configuring-playbook-user-verification-service.md:25 msgid "Verifying RoomMembership and PowerLevel is done against `matrix_user_verification_service_uvs_homeserver_url` which is by default done via the docker network. UVS will verify the validity of the token beforehand though." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:20 +#: ../../../docs/configuring-playbook-user-verification-service.md:27 msgid "Prerequisites" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:22 +#: ../../../docs/configuring-playbook-user-verification-service.md:29 msgid "Open Matrix Federation port" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:24 +#: ../../../docs/configuring-playbook-user-verification-service.md:31 msgid "Enabling the UVS service will automatically reconfigure your Synapse homeserver to expose the `openid` API endpoints on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. If you enable the component, make sure that the port is accessible." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:26 +#: ../../../docs/configuring-playbook-user-verification-service.md:33 msgid "Install Matrix services" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:28 +#: ../../../docs/configuring-playbook-user-verification-service.md:35 msgid "UVS can only be installed after Matrix services are installed and running. If you're just installing Matrix services for the first time, please continue with the [Configuration](configuring-playbook.md) / [Installation](installing.md) and come back here later." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:30 +#: ../../../docs/configuring-playbook-user-verification-service.md:37 msgid "Register a dedicated Matrix user (optional, recommended)" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:32 +#: ../../../docs/configuring-playbook-user-verification-service.md:39 msgid "We recommend that you create a dedicated Matrix user for uvs (`uvs` is a good username). **Because UVS requires an access token as an admin user, that user needs to be an admin.**" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:34 +#: ../../../docs/configuring-playbook-user-verification-service.md:41 msgid "Generate a strong password for the user. You can create one with a command like `pwgen -s 64 1`." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:36 +#: ../../../docs/configuring-playbook-user-verification-service.md:43 msgid "You can use the playbook to [register a new user](registering-users.md):" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:42 +#: ../../../docs/configuring-playbook-user-verification-service.md:49 msgid "Obtain an access token" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:44 +#: ../../../docs/configuring-playbook-user-verification-service.md:51 msgid "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)." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:46 +#: ../../../docs/configuring-playbook-user-verification-service.md:53 msgid "[!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." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:49 +#: ../../../docs/configuring-playbook-user-verification-service.md:56 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:51 +#: ../../../docs/configuring-playbook-user-verification-service.md:58 msgid "To enable UVS, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `ACCESS_TOKEN_HERE` with the one created [above](#obtain-an-access-token)." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:59 +#: ../../../docs/configuring-playbook-user-verification-service.md:66 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:61 +#: ../../../docs/configuring-playbook-user-verification-service.md:68 msgid "Custom Auth Token (optional)" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:63 +#: ../../../docs/configuring-playbook-user-verification-service.md:70 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:65 +#: ../../../docs/configuring-playbook-user-verification-service.md:72 msgid "By default, the token (`YOUR_TOKEN_HERE`) will be derived from `matrix_homeserver_generic_secret_key` in `group_vars/matrix_servers`." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:67 +#: ../../../docs/configuring-playbook-user-verification-service.md:74 msgid "To set your own token, add the following configuration to your `vars.yml` file. Make sure to replace `YOUR_TOKEN_HERE` with your own." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:73 +#: ../../../docs/configuring-playbook-user-verification-service.md:80 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:75 +#: ../../../docs/configuring-playbook-user-verification-service.md:82 msgid "Disable Authorization (optional)" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:77 +#: ../../../docs/configuring-playbook-user-verification-service.md:84 msgid "Authorization is enabled by default. To disable it, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:83 +#: ../../../docs/configuring-playbook-user-verification-service.md:90 msgid "Federation (optional)" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:85 +#: ../../../docs/configuring-playbook-user-verification-service.md:92 msgid "In theory (however currently untested), UVS can handle federation. To enable it, add the following configuration to your `vars.yml` file:" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:91 +#: ../../../docs/configuring-playbook-user-verification-service.md:98 msgid "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." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:93 +#: ../../../docs/configuring-playbook-user-verification-service.md:100 msgid "Extending the configuration" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:95 +#: ../../../docs/configuring-playbook-user-verification-service.md:102 msgid "There are some additional things you may wish to configure about the component." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:97 +#: ../../../docs/configuring-playbook-user-verification-service.md:104 msgid "Take a look at:" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:99 +#: ../../../docs/configuring-playbook-user-verification-service.md:106 msgid "`roles/custom/matrix-user-verification-service/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:101 +#: ../../../docs/configuring-playbook-user-verification-service.md:108 msgid "Installing" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:103 +#: ../../../docs/configuring-playbook-user-verification-service.md:110 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:110 +#: ../../../docs/configuring-playbook-user-verification-service.md:117 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-service matrix-user-verification-service` or `just setup-all`" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:112 +#: ../../../docs/configuring-playbook-user-verification-service.md:119 msgid "`just install-service matrix-user-verification-service` 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." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:114 +#: ../../../docs/configuring-playbook-user-verification-service.md:121 msgid "Troubleshooting" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:116 +#: ../../../docs/configuring-playbook-user-verification-service.md:123 msgid "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`." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:118 +#: ../../../docs/configuring-playbook-user-verification-service.md:125 msgid "Increase logging verbosity" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:120 +#: ../../../docs/configuring-playbook-user-verification-service.md:127 msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:127 +#: ../../../docs/configuring-playbook-user-verification-service.md:134 msgid "TLS Certificate Checking" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:129 +#: ../../../docs/configuring-playbook-user-verification-service.md:136 msgid "If the Matrix Homeserver does not provide a valid TLS certificate, UVS will fail with the following error message:" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:131 +#: ../../../docs/configuring-playbook-user-verification-service.md:138 msgid "message: 'No response received: [object Object]'," msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:133 +#: ../../../docs/configuring-playbook-user-verification-service.md:140 msgid "This also applies to self-signed and Let's Encrypt staging certificates." msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:135 +#: ../../../docs/configuring-playbook-user-verification-service.md:142 msgid "To disable certificate validation altogether (INSECURE! Not suitable for production use!) set: `NODE_TLS_REJECT_UNAUTHORIZED=0`" msgstr "" -#: ../../../docs/configuring-playbook-user-verification-service.md:137 +#: ../../../docs/configuring-playbook-user-verification-service.md:144 msgid "Alternatively, it is possible to inject your own CA certificates into the container by mounting a PEM file with additional trusted CAs into the container and pointing the `NODE_EXTRA_CA_CERTS` environment variable to it." msgstr "" diff --git a/i18n/translation-templates/docs/configuring-playbook.pot b/i18n/translation-templates/docs/configuring-playbook.pot index 0d05eeda4..1c46dc75d 100644 --- a/i18n/translation-templates/docs/configuring-playbook.pot +++ b/i18n/translation-templates/docs/configuring-playbook.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,526 +16,558 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-playbook.md:1 +#: ../../../docs/configuring-playbook.md:17 msgid "Configuring the playbook" msgstr "" -#: ../../../docs/configuring-playbook.md:3 -msgid "[Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > Configuring the playbook > [Installing](installing.md)" +#: ../../../docs/configuring-playbook.md:19 +msgid "[Prerequisites](prerequisites.md) > [Configuring DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > Configuring the playbook > [Installing](installing.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:5 +#: ../../../docs/configuring-playbook.md:21 msgid "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:" msgstr "" -#: ../../../docs/configuring-playbook.md:7 +#: ../../../docs/configuring-playbook.md:23 msgid "create a directory to hold your configuration (`mkdir -p inventory/host_vars/matrix.example.com` where `example.com` is your \"base domain\")" msgstr "" -#: ../../../docs/configuring-playbook.md:9 +#: ../../../docs/configuring-playbook.md:25 msgid "copy the sample configuration file (`cp examples/vars.yml inventory/host_vars/matrix.example.com/vars.yml`)" msgstr "" -#: ../../../docs/configuring-playbook.md:11 -msgid "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." +#: ../../../docs/configuring-playbook.md:27 +msgid "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." msgstr "" -#: ../../../docs/configuring-playbook.md:13 +#: ../../../docs/configuring-playbook.md:29 msgid "copy the sample inventory hosts file (`cp examples/hosts inventory/hosts`)" msgstr "" -#: ../../../docs/configuring-playbook.md:15 +#: ../../../docs/configuring-playbook.md:31 msgid "edit the inventory hosts file (`inventory/hosts`) to your liking" msgstr "" -#: ../../../docs/configuring-playbook.md:17 -msgid "(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." +#: ../../../docs/configuring-playbook.md:33 +msgid "(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." msgstr "" -#: ../../../docs/configuring-playbook.md:19 +#: ../../../docs/configuring-playbook.md:35 msgid "(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)." msgstr "" -#: ../../../docs/configuring-playbook.md:21 +#: ../../../docs/configuring-playbook.md:37 msgid "For a basic Matrix installation, that's all you need." msgstr "" -#: ../../../docs/configuring-playbook.md:23 +#: ../../../docs/configuring-playbook.md:39 msgid "For a more custom setup, see the [Other configuration options](#other-configuration-options) below." msgstr "" -#: ../../../docs/configuring-playbook.md:25 +#: ../../../docs/configuring-playbook.md:41 msgid "[▶️](installing.md) When you're done with all the configuration you'd like to do, continue with [Installing](installing.md)." msgstr "" -#: ../../../docs/configuring-playbook.md:27 +#: ../../../docs/configuring-playbook.md:43 msgid "Other configuration options" msgstr "" -#: ../../../docs/configuring-playbook.md:29 +#: ../../../docs/configuring-playbook.md:45 msgid "**Note**: some of the roles like one for integrating Etherpad or Jitsi are managed by their own repositories, and the configuration files for them cannot be found locally (in `roles/galaxy`) until those roles are fetched from the upstream projects. Check [requirements.yml](../requirements.yml) for the URLs of those roles." msgstr "" -#: ../../../docs/configuring-playbook.md:31 +#: ../../../docs/configuring-playbook.md:47 msgid "Core service adjustments" msgstr "" -#: ../../../docs/configuring-playbook.md:33 +#: ../../../docs/configuring-playbook.md:49 msgid "Homeserver configuration:" msgstr "" -#: ../../../docs/configuring-playbook.md:34 +#: ../../../docs/configuring-playbook.md:50 msgid "[Configuring Synapse](configuring-playbook-synapse.md), if you're going with the default/recommended homeserver implementation" msgstr "" -#: ../../../docs/configuring-playbook.md:36 +#: ../../../docs/configuring-playbook.md:52 msgid "[Configuring Conduit](configuring-playbook-conduit.md), if you've switched to the [Conduit](https://conduit.rs) homeserver implementation" msgstr "" -#: ../../../docs/configuring-playbook.md:38 +#: ../../../docs/configuring-playbook.md:54 msgid "[Configuring conduwuit](configuring-playbook-conduwuit.md), if you've switched to the [conduwuit](https://conduwuit.puppyirl.gay/) homeserver implementation" msgstr "" -#: ../../../docs/configuring-playbook.md:40 +#: ../../../docs/configuring-playbook.md:56 +msgid "[Configuring continuwuity](configuring-playbook-continuwuity.md), if you've switched to the [continuwuity](https://continuwuity.org) homeserver implementation" +msgstr "" + +#: ../../../docs/configuring-playbook.md:58 msgid "[Configuring Dendrite](configuring-playbook-dendrite.md), if you've switched to the [Dendrite](https://matrix-org.github.io/dendrite) homeserver implementation" msgstr "" -#: ../../../docs/configuring-playbook.md:42 +#: ../../../docs/configuring-playbook.md:60 msgid "Server components:" msgstr "" -#: ../../../docs/configuring-playbook.md:43 +#: ../../../docs/configuring-playbook.md:61 msgid "[Using an external PostgreSQL server](configuring-playbook-external-postgres.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:45 +#: ../../../docs/configuring-playbook.md:63 msgid "[Configuring a TURN server](configuring-playbook-turn.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:47 +#: ../../../docs/configuring-playbook.md:65 msgid "[Configuring the Traefik reverse-proxy](configuring-playbook-traefik.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:49 +#: ../../../docs/configuring-playbook.md:67 msgid "[Using your own webserver, instead of this playbook's Traefik reverse-proxy](configuring-playbook-own-webserver.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:51 +#: ../../../docs/configuring-playbook.md:69 msgid "[Adjusting SSL certificate retrieval](configuring-playbook-ssl-certificates.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:53 +#: ../../../docs/configuring-playbook.md:71 msgid "[Adjusting email-sending settings](configuring-playbook-email.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:55 +#: ../../../docs/configuring-playbook.md:73 msgid "[Setting up ma1sd Identity Server](configuring-playbook-ma1sd.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:57 +#: ../../../docs/configuring-playbook.md:75 msgid "[Setting up Dynamic DNS](configuring-playbook-dynamic-dns.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:59 +#: ../../../docs/configuring-playbook.md:77 msgid "Server connectivity:" msgstr "" -#: ../../../docs/configuring-playbook.md:60 +#: ../../../docs/configuring-playbook.md:78 msgid "[Enabling Telemetry for your Matrix server](configuring-playbook-telemetry.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:62 +#: ../../../docs/configuring-playbook.md:80 msgid "[Controlling Matrix federation](configuring-playbook-federation.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:64 +#: ../../../docs/configuring-playbook.md:82 +msgid "[Configuring IPv6](./configuring-ipv6.md)" +msgstr "" + +#: ../../../docs/configuring-playbook.md:84 msgid "Clients" msgstr "" -#: ../../../docs/configuring-playbook.md:66 +#: ../../../docs/configuring-playbook.md:86 msgid "Web clients for Matrix that you can host on your own domains." msgstr "" -#: ../../../docs/configuring-playbook.md:68 +#: ../../../docs/configuring-playbook.md:88 msgid "[Configuring Element Web](configuring-playbook-client-element-web.md), if you're going with the default/recommended client" msgstr "" -#: ../../../docs/configuring-playbook.md:70 +#: ../../../docs/configuring-playbook.md:90 msgid "[Setting up Hydrogen](configuring-playbook-client-hydrogen.md), if you've enabled [Hydrogen](https://github.com/element-hq/hydrogen-web), a lightweight Matrix client with legacy and mobile browser support" msgstr "" -#: ../../../docs/configuring-playbook.md:72 +#: ../../../docs/configuring-playbook.md:92 msgid "[Setting up Cinny](configuring-playbook-client-cinny.md), if you've enabled [Cinny](https://github.com/ajbura/cinny), a web client focusing primarily on simple, elegant and secure interface" msgstr "" -#: ../../../docs/configuring-playbook.md:74 +#: ../../../docs/configuring-playbook.md:94 msgid "[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" msgstr "" -#: ../../../docs/configuring-playbook.md:76 +#: ../../../docs/configuring-playbook.md:96 +msgid "[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/)" +msgstr "" + +#: ../../../docs/configuring-playbook.md:99 msgid "Authentication and user-related" msgstr "" -#: ../../../docs/configuring-playbook.md:78 +#: ../../../docs/configuring-playbook.md:101 msgid "Extend and modify how users are authenticated on your homeserver." msgstr "" -#: ../../../docs/configuring-playbook.md:80 +#: ../../../docs/configuring-playbook.md:103 msgid "[Setting up Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) (Next-generation auth for Matrix, based on OAuth 2.0/OIDC)" msgstr "" -#: ../../../docs/configuring-playbook.md:82 +#: ../../../docs/configuring-playbook.md:105 msgid "[Setting up Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:84 +#: ../../../docs/configuring-playbook.md:107 msgid "[Setting up Synapse Admin](configuring-playbook-synapse-admin.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:86 +#: ../../../docs/configuring-playbook.md:109 msgid "[Setting up matrix-registration](configuring-playbook-matrix-registration.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:88 +#: ../../../docs/configuring-playbook.md:111 msgid "[Setting up the REST authentication password provider module](configuring-playbook-rest-auth.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:90 +#: ../../../docs/configuring-playbook.md:113 msgid "[Setting up the Shared Secret Auth password provider module](configuring-playbook-shared-secret-auth.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:92 +#: ../../../docs/configuring-playbook.md:115 msgid "[Setting up the LDAP authentication password provider module](configuring-playbook-ldap-auth.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:94 +#: ../../../docs/configuring-playbook.md:117 msgid "[Setting up matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:96 +#: ../../../docs/configuring-playbook.md:119 msgid "[Setting up Synapse Simple Antispam](configuring-playbook-synapse-simple-antispam.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:98 +#: ../../../docs/configuring-playbook.md:121 msgid "[Setting up Matrix User Verification Service](configuring-playbook-user-verification-service.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:100 +#: ../../../docs/configuring-playbook.md:123 msgid "File Storage" msgstr "" -#: ../../../docs/configuring-playbook.md:102 +#: ../../../docs/configuring-playbook.md:125 msgid "Use alternative file storage to the default `media_store` folder." msgstr "" -#: ../../../docs/configuring-playbook.md:104 -msgid "[Storing Matrix media files on Amazon S3 with Goofys](configuring-playbook-s3-goofys.md)" +#: ../../../docs/configuring-playbook.md:127 +msgid "[Storing Matrix media files using matrix-media-repo](configuring-playbook-matrix-media-repo.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:106 +#: ../../../docs/configuring-playbook.md:129 msgid "[Storing Synapse media files on Amazon S3 or another compatible Object Storage](configuring-playbook-s3.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:108 -msgid "[Storing Matrix media files using matrix-media-repo](configuring-playbook-matrix-media-repo.md)" +#: ../../../docs/configuring-playbook.md:131 +msgid "[Storing Synapse media files on Amazon S3 with Goofys](configuring-playbook-s3-goofys.md)" +msgstr "" + +#: ../../../docs/configuring-playbook.md:133 +msgid "[Storing Synapse media files on Amazon S3 with synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:110 +#: ../../../docs/configuring-playbook.md:135 msgid "Bridging other networks" msgstr "" -#: ../../../docs/configuring-playbook.md:112 +#: ../../../docs/configuring-playbook.md:137 msgid "Bridges can be used to connect your Matrix installation with third-party communication networks." msgstr "" -#: ../../../docs/configuring-playbook.md:114 +#: ../../../docs/configuring-playbook.md:139 msgid "[Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) — a common guide for configuring mautrix bridges" msgstr "" -#: ../../../docs/configuring-playbook.md:116 +#: ../../../docs/configuring-playbook.md:141 +msgid "[Setting up Mautrix Bluesky bridging](configuring-playbook-bridge-mautrix-bluesky.md)" +msgstr "" + +#: ../../../docs/configuring-playbook.md:143 msgid "[Setting up Mautrix Discord bridging](configuring-playbook-bridge-mautrix-discord.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:118 +#: ../../../docs/configuring-playbook.md:145 msgid "[Setting up Mautrix Telegram bridging](configuring-playbook-bridge-mautrix-telegram.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:120 +#: ../../../docs/configuring-playbook.md:147 msgid "[Setting up Mautrix Slack bridging](configuring-playbook-bridge-mautrix-slack.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:122 +#: ../../../docs/configuring-playbook.md:149 msgid "[Setting up Mautrix Google Messages bridging](configuring-playbook-bridge-mautrix-gmessages.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:124 +#: ../../../docs/configuring-playbook.md:151 msgid "[Setting up Mautrix Whatsapp bridging](configuring-playbook-bridge-mautrix-whatsapp.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:126 +#: ../../../docs/configuring-playbook.md:153 msgid "[Setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:128 +#: ../../../docs/configuring-playbook.md:155 msgid "[Setting up Messenger bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-messenger.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:130 +#: ../../../docs/configuring-playbook.md:157 msgid "[Setting up Mautrix Google Chat bridging](configuring-playbook-bridge-mautrix-googlechat.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:132 +#: ../../../docs/configuring-playbook.md:159 msgid "[Setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:134 +#: ../../../docs/configuring-playbook.md:161 msgid "[Setting up Mautrix Signal bridging](configuring-playbook-bridge-mautrix-signal.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:136 +#: ../../../docs/configuring-playbook.md:163 msgid "[Setting up Mautrix wsproxy for bridging Android SMS or Apple iMessage](configuring-playbook-bridge-mautrix-wsproxy.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:138 +#: ../../../docs/configuring-playbook.md:165 msgid "[Setting up Appservice IRC bridging](configuring-playbook-bridge-appservice-irc.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:140 +#: ../../../docs/configuring-playbook.md:167 msgid "[Setting up Appservice Discord bridging](configuring-playbook-bridge-appservice-discord.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:142 +#: ../../../docs/configuring-playbook.md:169 msgid "[Setting up Appservice Slack bridging](configuring-playbook-bridge-appservice-slack.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:144 +#: ../../../docs/configuring-playbook.md:171 msgid "[Setting up Appservice Kakaotalk bridging](configuring-playbook-bridge-appservice-kakaotalk.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:146 +#: ../../../docs/configuring-playbook.md:173 msgid "[Setting up Beeper LinkedIn bridging](configuring-playbook-bridge-beeper-linkedin.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:148 +#: ../../../docs/configuring-playbook.md:175 msgid "[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)." msgstr "" -#: ../../../docs/configuring-playbook.md:150 -msgid "[Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md)" -msgstr "" - -#: ../../../docs/configuring-playbook.md:152 -msgid "[Setting up MX Puppet Instagram bridging](configuring-playbook-bridge-mx-puppet-instagram.md)" -msgstr "" - -#: ../../../docs/configuring-playbook.md:154 -msgid "[Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md)" -msgstr "" - -#: ../../../docs/configuring-playbook.md:156 -msgid "[Setting up MX Puppet Discord bridging](configuring-playbook-bridge-mx-puppet-discord.md)" -msgstr "" - -#: ../../../docs/configuring-playbook.md:158 +#: ../../../docs/configuring-playbook.md:177 msgid "[Setting up MX Puppet GroupMe bridging](configuring-playbook-bridge-mx-puppet-groupme.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:160 -msgid "[Setting up MX Puppet Steam bridging](configuring-playbook-bridge-mx-puppet-steam.md)" +#: ../../../docs/configuring-playbook.md:179 +msgid "[Setting up Steam bridging](configuring-playbook-bridge-steam.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:162 -msgid "[Setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md)" +#: ../../../docs/configuring-playbook.md:181 +msgid "[Setting up MX Puppet Steam bridging](configuring-playbook-bridge-mx-puppet-steam.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:164 +#: ../../../docs/configuring-playbook.md:183 msgid "[Setting up Postmoogle email bridging](configuring-playbook-bridge-postmoogle.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:166 +#: ../../../docs/configuring-playbook.md:185 msgid "[Setting up Matrix SMS bridging](configuring-playbook-bridge-matrix-bridge-sms.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:168 +#: ../../../docs/configuring-playbook.md:187 msgid "[Setting up Heisenbridge bouncer-style IRC bridging](configuring-playbook-bridge-heisenbridge.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:170 +#: ../../../docs/configuring-playbook.md:189 msgid "[Setting up WeChat bridging](configuring-playbook-bridge-wechat.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:172 +#: ../../../docs/configuring-playbook.md:191 msgid "Bots" msgstr "" -#: ../../../docs/configuring-playbook.md:174 +#: ../../../docs/configuring-playbook.md:193 msgid "Bots provide various additional functionality to your installation." msgstr "" -#: ../../../docs/configuring-playbook.md:176 +#: ../../../docs/configuring-playbook.md:195 msgid "[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))" msgstr "" -#: ../../../docs/configuring-playbook.md:178 +#: ../../../docs/configuring-playbook.md:197 msgid "[Setting up matrix-reminder-bot](configuring-playbook-bot-matrix-reminder-bot.md) — a bot to remind you about stuff" msgstr "" -#: ../../../docs/configuring-playbook.md:180 +#: ../../../docs/configuring-playbook.md:199 msgid "[Setting up matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) — a bot to create and manage registration tokens to invite users" msgstr "" -#: ../../../docs/configuring-playbook.md:182 +#: ../../../docs/configuring-playbook.md:201 msgid "[Setting up maubot](configuring-playbook-bot-maubot.md) — a plugin-based Matrix bot system" msgstr "" -#: ../../../docs/configuring-playbook.md:184 +#: ../../../docs/configuring-playbook.md:203 msgid "[Setting up Honoroit](configuring-playbook-bot-honoroit.md) — a helpdesk bot" msgstr "" -#: ../../../docs/configuring-playbook.md:186 +#: ../../../docs/configuring-playbook.md:205 msgid "[Setting up Mjolnir](configuring-playbook-bot-mjolnir.md) — a moderation tool/bot" msgstr "" -#: ../../../docs/configuring-playbook.md:188 +#: ../../../docs/configuring-playbook.md:207 msgid "[Setting up Draupnir](configuring-playbook-bot-draupnir.md) — a moderation tool/bot, forked from Mjolnir and maintained by its former leader developer" msgstr "" -#: ../../../docs/configuring-playbook.md:190 +#: ../../../docs/configuring-playbook.md:209 msgid "[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" msgstr "" -#: ../../../docs/configuring-playbook.md:192 +#: ../../../docs/configuring-playbook.md:211 msgid "[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" msgstr "" -#: ../../../docs/configuring-playbook.md:194 +#: ../../../docs/configuring-playbook.md:213 msgid "Administration" msgstr "" -#: ../../../docs/configuring-playbook.md:196 +#: ../../../docs/configuring-playbook.md:215 msgid "Services that help you in administrating and monitoring your Matrix installation." msgstr "" -#: ../../../docs/configuring-playbook.md:198 +#: ../../../docs/configuring-playbook.md:217 msgid "[Setting up Prometheus Alertmanager integration via matrix-alertmanager-receiver](configuring-playbook-alertmanager-receiver.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:200 +#: ../../../docs/configuring-playbook.md:219 msgid "[Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server](configuring-playbook-prometheus-grafana.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:202 -msgid "[Enabling metrics and graphs for NginX logs](configuring-playbook-prometheus-nginxlog.md)" -msgstr "" - -#: ../../../docs/configuring-playbook.md:204 +#: ../../../docs/configuring-playbook.md:221 msgid "[Setting up the rageshake bug report server](configuring-playbook-rageshake.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:206 +#: ../../../docs/configuring-playbook.md:223 msgid "[Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:208 +#: ../../../docs/configuring-playbook.md:225 msgid "Backups:" msgstr "" -#: ../../../docs/configuring-playbook.md:209 +#: ../../../docs/configuring-playbook.md:226 msgid "[Setting up BorgBackup](configuring-playbook-backup-borg.md) — a full Matrix server backup solution, including the Postgres database" msgstr "" -#: ../../../docs/configuring-playbook.md:211 -msgid "[Setting up postgres backup](configuring-playbook-postgres-backup.md) — a Postgres-database backup solution (note: does not include other files)" +#: ../../../docs/configuring-playbook.md:228 +msgid "[Setting up Postgres backup](configuring-playbook-postgres-backup.md) — a Postgres-database backup solution (note: does not include other files)" msgstr "" -#: ../../../docs/configuring-playbook.md:213 +#: ../../../docs/configuring-playbook.md:230 msgid "Other specialized services" msgstr "" -#: ../../../docs/configuring-playbook.md:215 +#: ../../../docs/configuring-playbook.md:232 msgid "Various services that don't fit any other categories." msgstr "" -#: ../../../docs/configuring-playbook.md:217 +#: ../../../docs/configuring-playbook.md:234 +msgid "[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)" +msgstr "" + +#: ../../../docs/configuring-playbook.md:236 +msgid "[Setting up LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) - a component of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook.md:238 +msgid "[Setting up LiveKit Server](configuring-playbook-livekit-server.md) - a component of the [Matrix RTC stack](configuring-playbook-matrix-rtc.md) (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook.md:240 +msgid "[Setting up Matrix RTC](configuring-playbook-matrix-rtc.md) (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook.md:242 msgid "[Setting up Synapse Auto Invite Accept](configuring-playbook-synapse-auto-accept-invite.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:219 +#: ../../../docs/configuring-playbook.md:244 msgid "[Setting up synapse-auto-compressor](configuring-playbook-synapse-auto-compressor.md) for compressing the database on Synapse homeservers" msgstr "" -#: ../../../docs/configuring-playbook.md:221 +#: ../../../docs/configuring-playbook.md:246 msgid "[Setting up Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:223 +#: ../../../docs/configuring-playbook.md:248 msgid "[Setting up Etherpad](configuring-playbook-etherpad.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:225 +#: ../../../docs/configuring-playbook.md:250 msgid "[Setting up the Jitsi video-conferencing platform](configuring-playbook-jitsi.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:227 +#: ../../../docs/configuring-playbook.md:252 msgid "[Setting up Cactus Comments](configuring-playbook-cactus-comments.md) — a federated comment system built on Matrix" msgstr "" -#: ../../../docs/configuring-playbook.md:229 +#: ../../../docs/configuring-playbook.md:254 msgid "[Setting up Pantalaimon (E2EE aware proxy daemon)](configuring-playbook-pantalaimon.md) (advanced)" msgstr "" -#: ../../../docs/configuring-playbook.md:231 +#: ../../../docs/configuring-playbook.md:256 msgid "[Setting up the Sygnal push gateway](configuring-playbook-sygnal.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:233 +#: ../../../docs/configuring-playbook.md:258 msgid "[Setting up the ntfy push notifications server](configuring-playbook-ntfy.md)" msgstr "" -#: ../../../docs/configuring-playbook.md:235 +#: ../../../docs/configuring-playbook.md:260 msgid "Deprecated / unmaintained / removed services" msgstr "" -#: ../../../docs/configuring-playbook.md:237 +#: ../../../docs/configuring-playbook.md:262 msgid "**Note**: since a deprecated or unmaintained service will not be updated, its bug or vulnerability will be unlikely to get patched. It is recommended to migrate from the service to an alternative if any, and make sure to do your own research before you decide to keep it running nonetheless." msgstr "" -#: ../../../docs/configuring-playbook.md:239 +#: ../../../docs/configuring-playbook.md:264 msgid "[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)" msgstr "" -#: ../../../docs/configuring-playbook.md:241 -msgid "[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))" +#: ../../../docs/configuring-playbook.md:266 +msgid "[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))" msgstr "" -#: ../../../docs/configuring-playbook.md:243 +#: ../../../docs/configuring-playbook.md:268 msgid "[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))" msgstr "" -#: ../../../docs/configuring-playbook.md:245 -msgid "[Setting up Email2Matrix](configuring-playbook-email2matrix.md) (unmaintained; 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))" +#: ../../../docs/configuring-playbook.md:270 +msgid "[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))" msgstr "" -#: ../../../docs/configuring-playbook.md:247 -msgid "[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))" +#: ../../../docs/configuring-playbook.md:272 +msgid "[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))" msgstr "" -#: ../../../docs/configuring-playbook.md:249 -msgid "[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))" +#: ../../../docs/configuring-playbook.md:274 +msgid "[Setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md) (removed; Skype has been discontinued since May 2025)" msgstr "" -#: ../../../docs/configuring-playbook.md:251 -msgid "[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))" +#: ../../../docs/configuring-playbook.md:276 +msgid "[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))" msgstr "" -#: ../../../docs/configuring-playbook.md:253 -msgid "[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))" +#: ../../../docs/configuring-playbook.md:278 +msgid "[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))" msgstr "" -#: ../../../docs/configuring-playbook.md:255 +#: ../../../docs/configuring-playbook.md:280 msgid "[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))" msgstr "" -#: ../../../docs/configuring-playbook.md:257 +#: ../../../docs/configuring-playbook.md:282 +msgid "[Setting up MX Puppet Discord bridging](configuring-playbook-bridge-mx-puppet-discord.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Discord bridging](configuring-playbook-bridge-mautrix-discord.md))" +msgstr "" + +#: ../../../docs/configuring-playbook.md:284 +msgid "[Setting up MX Puppet Instagram bridging](configuring-playbook-bridge-mx-puppet-instagram.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md))" +msgstr "" + +#: ../../../docs/configuring-playbook.md:286 msgid "[Setting up MX Puppet Skype bridging](configuring-playbook-bridge-mx-puppet-skype.md) (removed; this component has been broken for a long time, so it has been removed from the playbook. Consider [setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md))" msgstr "" + +#: ../../../docs/configuring-playbook.md:288 +msgid "[Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Slack bridging](configuring-playbook-bridge-mautrix-slack.md))" +msgstr "" + +#: ../../../docs/configuring-playbook.md:290 +msgid "[Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md))" +msgstr "" diff --git a/i18n/translation-templates/docs/configuring-well-known.pot b/i18n/translation-templates/docs/configuring-well-known.pot index 39428a23e..7ce9d69db 100644 --- a/i18n/translation-templates/docs/configuring-well-known.pot +++ b/i18n/translation-templates/docs/configuring-well-known.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,238 +16,238 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/configuring-well-known.md:1 +#: ../../../docs/configuring-well-known.md:14 msgid "Configuring Service Discovery via .well-known" msgstr "" -#: ../../../docs/configuring-well-known.md:3 +#: ../../../docs/configuring-well-known.md:16 msgid "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." msgstr "" -#: ../../../docs/configuring-well-known.md:5 +#: ../../../docs/configuring-well-known.md:18 msgid "Types of well-known service discovery mechanism" msgstr "" -#: ../../../docs/configuring-well-known.md:7 +#: ../../../docs/configuring-well-known.md:20 msgid "There are 3 types of well-known service discovery mechanism that Matrix makes use of:" msgstr "" -#: ../../../docs/configuring-well-known.md:9 +#: ../../../docs/configuring-well-known.md:22 msgid "(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." msgstr "" -#: ../../../docs/configuring-well-known.md:11 +#: ../../../docs/configuring-well-known.md:24 msgid "(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." msgstr "" -#: ../../../docs/configuring-well-known.md:13 +#: ../../../docs/configuring-well-known.md:26 msgid "(optional) **Support service discovery** (`/.well-known/matrix/support`) — returns server admin contact and support page of the domain." msgstr "" -#: ../../../docs/configuring-well-known.md:15 +#: ../../../docs/configuring-well-known.md:28 msgid "Federation Server Discovery" msgstr "" -#: ../../../docs/configuring-well-known.md:17 +#: ../../../docs/configuring-well-known.md:30 msgid "All services created by this playbook are meant to be installed on their own server (such as `matrix.example.com`), instead of the base domain (`example.com`)." msgstr "" -#: ../../../docs/configuring-well-known.md:19 +#: ../../../docs/configuring-well-known.md:32 msgid "As [per the Server-Server specification](https://matrix.org/docs/spec/server_server/r0.1.0.html#server-discovery), in order to use a short Matrix user ID like `@alice:example.com` instead of `@alice:matrix.example.com` while hosting services on a subdomain such as `matrix.example.com`, the Matrix network needs to be instructed of [server delegation](howto-server-delegation.md) / redirection." msgstr "" -#: ../../../docs/configuring-well-known.md:21 +#: ../../../docs/configuring-well-known.md:34 msgid "For simplicity reasons, this playbook recommends you to set up server delegation via a `/.well-known/matrix/server` file." msgstr "" -#: ../../../docs/configuring-well-known.md:23 +#: ../../../docs/configuring-well-known.md:36 msgid "If you set up the DNS SRV record for server delegation instead, take a look at this documentation for more information: [Server Delegation via a DNS SRV record (advanced)](howto-server-delegation.md#server-delegation-via-a-dns-srv-record-advanced)" msgstr "" -#: ../../../docs/configuring-well-known.md:25 +#: ../../../docs/configuring-well-known.md:38 msgid "Client Server Discovery" msgstr "" -#: ../../../docs/configuring-well-known.md:27 +#: ../../../docs/configuring-well-known.md:40 msgid "Client Server Service discovery lets various client programs which support it, to receive a full user ID (e.g. `@alice:example.com`) and determine where the Matrix server is automatically (e.g. `https://matrix.example.com`)." msgstr "" -#: ../../../docs/configuring-well-known.md:29 +#: ../../../docs/configuring-well-known.md:42 msgid "This lets you (and your users) easily connect to your Matrix server without having to customize connection URLs. When using client programs that support it, you won't need to point them to `https://matrix.example.com` in Custom Server options manually anymore. The connection URL would be discovered automatically from your full username." msgstr "" -#: ../../../docs/configuring-well-known.md:31 +#: ../../../docs/configuring-well-known.md:44 msgid "Without /.well-known/matrix/client, the client will make the wrong \"homeserver URL\" assumption (it will default to using https://example.com, and users will need to notice and adjust it manually (changing it to https://matrix.example.com)." msgstr "" -#: ../../../docs/configuring-well-known.md:33 +#: ../../../docs/configuring-well-known.md:46 msgid "As [per the Client-Server specification](https://matrix.org/docs/spec/client_server/r0.4.0.html#server-discovery) Matrix does Client Server service discovery using a `/.well-known/matrix/client` file hosted on the base domain (e.g. `example.com`)." msgstr "" -#: ../../../docs/configuring-well-known.md:35 +#: ../../../docs/configuring-well-known.md:48 msgid "However, this playbook installs your Matrix server on another domain (e.g. `matrix.example.com`) and not on the base domain (e.g. `example.com`), so it takes a little extra manual effort to set up the file." msgstr "" -#: ../../../docs/configuring-well-known.md:37 +#: ../../../docs/configuring-well-known.md:50 msgid "Support Service Discovery (optional)" msgstr "" -#: ../../../docs/configuring-well-known.md:39 +#: ../../../docs/configuring-well-known.md:52 msgid "[MSC 1929](https://github.com/matrix-org/matrix-spec-proposals/pull/1929), which was added to [Matrix Specification version v1.10](https://spec.matrix.org/v1.10/client-server-api/#getwell-knownmatrixsupport), specifies a way to add contact details of admins, as well as a link to a support page for users who are having issues with the service. Automated services may also index this information and use it for abuse reports, etc." msgstr "" -#: ../../../docs/configuring-well-known.md:41 +#: ../../../docs/configuring-well-known.md:54 msgid "To enable it, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/configuring-well-known.md:62 +#: ../../../docs/configuring-well-known.md:75 msgid "Installing well-known files on the base domain's server" msgstr "" -#: ../../../docs/configuring-well-known.md:64 +#: ../../../docs/configuring-well-known.md:77 msgid "To implement the service discovery mechanisms, your base domain's server (e.g. `example.com`) needs to run an HTTPS-capable webserver." msgstr "" -#: ../../../docs/configuring-well-known.md:66 +#: ../../../docs/configuring-well-known.md:79 msgid "Serving the base domain from the Matrix server via the playbook" msgstr "" -#: ../../../docs/configuring-well-known.md:68 +#: ../../../docs/configuring-well-known.md:81 msgid "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." msgstr "" -#: ../../../docs/configuring-well-known.md:70 +#: ../../../docs/configuring-well-known.md:83 msgid "**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." msgstr "" -#: ../../../docs/configuring-well-known.md:72 +#: ../../../docs/configuring-well-known.md:85 msgid "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." msgstr "" -#: ../../../docs/configuring-well-known.md:74 +#: ../../../docs/configuring-well-known.md:87 msgid "However, if you need to use the base domain for other things, this method is less suitable than the one explained below." msgstr "" -#: ../../../docs/configuring-well-known.md:76 +#: ../../../docs/configuring-well-known.md:89 msgid "Manually installing well-known files on the base domain's server" msgstr "" -#: ../../../docs/configuring-well-known.md:78 +#: ../../../docs/configuring-well-known.md:91 msgid "If you're managing the base domain by yourself somehow, you'll need to set up serving of some `/.well-known/matrix/*` files from it via HTTPS." msgstr "" -#: ../../../docs/configuring-well-known.md:80 +#: ../../../docs/configuring-well-known.md:93 msgid "To make things easy for you to set up, this playbook generates and hosts a few well-known files on the Matrix domain's server. The files are generated at the `/matrix/static-files/public/.well-known/matrix/` path on the server and hosted at URLs like `https://matrix.example.com/.well-known/matrix/server` and `https://matrix.example.com/.well-known/matrix/client`, even though this is the wrong place to host them." msgstr "" -#: ../../../docs/configuring-well-known.md:82 +#: ../../../docs/configuring-well-known.md:95 msgid "You have two options when it comes to installing the files on the base domain's server:" msgstr "" -#: ../../../docs/configuring-well-known.md:84 +#: ../../../docs/configuring-well-known.md:97 msgid "(Option 1): **Copying the files manually** to your base domain's server" msgstr "" -#: ../../../docs/configuring-well-known.md:86 +#: ../../../docs/configuring-well-known.md:99 msgid "**Hint**: Option 2 is generally a better way to do this. Make sure to go with it, if possible." msgstr "" -#: ../../../docs/configuring-well-known.md:88 +#: ../../../docs/configuring-well-known.md:101 msgid "All you need to do is:" msgstr "" -#: ../../../docs/configuring-well-known.md:90 +#: ../../../docs/configuring-well-known.md:103 msgid "copy `/.well-known/matrix/server` and `/.well-known/matrix/client` from the Matrix server (e.g. `matrix.example.com`) to your base domain's server (`example.com`). You can find these files in the `/matrix/static-files/.well-known/matrix` directory on the Matrix server. They are also accessible on URLs like this: `https://matrix.example.com/.well-known/matrix/server` (same for `client`)." msgstr "" -#: ../../../docs/configuring-well-known.md:92 +#: ../../../docs/configuring-well-known.md:105 msgid "set up the server at your base domain (e.g. `example.com`) so that it adds an extra HTTP header when serving the `/.well-known/matrix/client` file. [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS), the `Access-Control-Allow-Origin` header should be set with a value of `*`. If you don't do this step, web-based Matrix clients (like Element Web) may fail to work. Setting up headers for the `/.well-known/matrix/server` file is not necessary, as this file is only consumed by non-browsers, which don't care about CORS." msgstr "" -#: ../../../docs/configuring-well-known.md:94 +#: ../../../docs/configuring-well-known.md:107 msgid "This is relatively easy to do and possibly your only choice if you can only host static files from the base domain's server. It is, however, **a little fragile**, as future updates performed by this playbook may regenerate the well-known files and you may need to notice that and copy them over again." msgstr "" -#: ../../../docs/configuring-well-known.md:96 +#: ../../../docs/configuring-well-known.md:109 msgid "(Option 2): **Setting up reverse-proxying** of the well-known files from the base domain's server to the Matrix server" msgstr "" -#: ../../../docs/configuring-well-known.md:98 +#: ../../../docs/configuring-well-known.md:111 msgid "This option is less fragile and generally better." msgstr "" -#: ../../../docs/configuring-well-known.md:100 -msgid "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`)." +#: ../../../docs/configuring-well-known.md:113 +msgid "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`)." msgstr "" -#: ../../../docs/configuring-well-known.md:102 +#: ../../../docs/configuring-well-known.md:115 msgid "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." msgstr "" -#: ../../../docs/configuring-well-known.md:104 +#: ../../../docs/configuring-well-known.md:117 msgid "**For nginx**, it would be something like this:" msgstr "" -#: ../../../docs/configuring-well-known.md:121 +#: ../../../docs/configuring-well-known.md:134 msgid "**For Apache2**, it would be something like this:" msgstr "" -#: ../../../docs/configuring-well-known.md:135 +#: ../../../docs/configuring-well-known.md:148 msgid "**For Caddy 2**, it would be something like this:" msgstr "" -#: ../../../docs/configuring-well-known.md:145 +#: ../../../docs/configuring-well-known.md:158 msgid "**For HAProxy**, it would be something like this:" msgstr "" -#: ../../../docs/configuring-well-known.md:164 +#: ../../../docs/configuring-well-known.md:177 msgid "**For Netlify**, configure a [redirect](https://docs.netlify.com/routing/redirects/) using a `_redirects` file in the [publish directory](https://docs.netlify.com/configure-builds/overview/#definitions) with contents like this:" msgstr "" -#: ../../../docs/configuring-well-known.md:170 +#: ../../../docs/configuring-well-known.md:183 msgid "**For AWS CloudFront**" msgstr "" -#: ../../../docs/configuring-well-known.md:172 +#: ../../../docs/configuring-well-known.md:185 msgid "Add a custom origin with matrix.example.com to your distribution" msgstr "" -#: ../../../docs/configuring-well-known.md:173 +#: ../../../docs/configuring-well-known.md:186 msgid "Add two behaviors, one for `.well-known/matrix/client` and one for `.well-known/matrix/server` and point them to your new origin." msgstr "" -#: ../../../docs/configuring-well-known.md:175 +#: ../../../docs/configuring-well-known.md:188 msgid "Make sure to:" msgstr "" -#: ../../../docs/configuring-well-known.md:177 +#: ../../../docs/configuring-well-known.md:190 msgid "**replace `example.com`** in the server configuration with your actual domain name" msgstr "" -#: ../../../docs/configuring-well-known.md:178 +#: ../../../docs/configuring-well-known.md:191 msgid "and: to **do this for the HTTPS-enabled server block**, as that's where Matrix expects the file to be" msgstr "" -#: ../../../docs/configuring-well-known.md:180 +#: ../../../docs/configuring-well-known.md:193 msgid "Confirming it works" msgstr "" -#: ../../../docs/configuring-well-known.md:182 +#: ../../../docs/configuring-well-known.md:195 msgid "No matter which method you've used to set up the well-known files, if you've done it correctly you should be able to see a JSON file at these URLs:" msgstr "" -#: ../../../docs/configuring-well-known.md:184 +#: ../../../docs/configuring-well-known.md:197 msgid "`https://example.com/.well-known/matrix/server`" msgstr "" -#: ../../../docs/configuring-well-known.md:185 +#: ../../../docs/configuring-well-known.md:198 msgid "`https://example.com/.well-known/matrix/client`" msgstr "" -#: ../../../docs/configuring-well-known.md:186 +#: ../../../docs/configuring-well-known.md:199 msgid "`https://example.com/.well-known/matrix/support`" msgstr "" -#: ../../../docs/configuring-well-known.md:188 -msgid "You can also check if everything is configured correctly, by [checking if services work](maintenance-checking-services.md)." +#: ../../../docs/configuring-well-known.md:201 +msgid "You can also check if everything is configured correctly, by [checking if services work](maintenance-and-troubleshooting.md#how-to-check-if-services-work)." msgstr "" diff --git a/i18n/translation-templates/docs/container-images.pot b/i18n/translation-templates/docs/container-images.pot index 16c488a54..c73300768 100644 --- a/i18n/translation-templates/docs/container-images.pot +++ b/i18n/translation-templates/docs/container-images.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,19 +16,19 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/container-images.md:1 +#: ../../../docs/container-images.md:18 msgid "Container images used by the playbook" msgstr "" -#: ../../../docs/container-images.md:3 +#: ../../../docs/container-images.md:20 msgid "This page summarizes the container ([Docker](https://www.docker.com/)) images used by the playbook when setting up your server." msgstr "" -#: ../../../docs/container-images.md:5 +#: ../../../docs/container-images.md:22 msgid "We try to stick to official images (provided by their respective projects) as much as possible." msgstr "" -#: ../../../docs/container-images.md:7 +#: ../../../docs/container-images.md:24 msgid "Homeserver" msgstr "" @@ -92,6 +92,18 @@ msgstr "" msgid "Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit is a fork of Conduit." msgstr "" +#: ../../../docs/container-images.md:0 +msgid "[continuwuity](configuring-playbook-continuwuity.md)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[continuwuation/continuwuity](https://forgejo.ellis.link/continuwuation/continuwuity)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. continuwuity is a continuation of conduwuit." +msgstr "" + #: ../../../docs/container-images.md:0 msgid "[Dendrite](configuring-playbook-dendrite.md)" msgstr "" @@ -104,11 +116,11 @@ msgstr "" msgid "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." msgstr "" -#: ../../../docs/container-images.md:16 +#: ../../../docs/container-images.md:34 msgid "Clients" msgstr "" -#: ../../../docs/container-images.md:18 +#: ../../../docs/container-images.md:36 msgid "Web clients for Matrix that you can host on your own domains." msgstr "" @@ -160,11 +172,11 @@ msgstr "" msgid "Based on Element Web, with a more traditional instant messaging experience" msgstr "" -#: ../../../docs/container-images.md:27 +#: ../../../docs/container-images.md:45 msgid "Server Components" msgstr "" -#: ../../../docs/container-images.md:29 +#: ../../../docs/container-images.md:47 msgid "Services that run on the server to make the various parts of your installation work." msgstr "" @@ -201,7 +213,7 @@ msgid "[Traefik](https://hub.docker.com/_/traefik/)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "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)" +msgid "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." msgstr "" #: ../../../docs/container-images.md:0 @@ -213,7 +225,7 @@ msgid "[certbot/certbot](https://hub.docker.com/r/certbot/certbot/)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "The [certbot](https://certbot.eff.org/) tool for obtaining SSL certificates from [Let's Encrypt](https://letsencrypt.org/)" +msgid "[Certbot](https://certbot.eff.org/) tool for obtaining SSL certificates from [Let's Encrypt](https://letsencrypt.org/)" msgstr "" #: ../../../docs/container-images.md:0 @@ -252,11 +264,35 @@ msgstr "" msgid "Update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider" msgstr "" -#: ../../../docs/container-images.md:41 +#: ../../../docs/container-images.md:0 +msgid "[LiveKit Server](configuring-playbook-livekit-server.md)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[livekit/livekit-server](https://hub.docker.com/r/livekit/livekit-server/)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "WebRTC server for audio/video calls" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[Livekit JWT Service](configuring-playbook-livekit-jwt-service.md)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[element-hq/lk-jwt-service](https://ghcr.io/element-hq/lk-jwt-service)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md)" +msgstr "" + +#: ../../../docs/container-images.md:61 msgid "Authentication" msgstr "" -#: ../../../docs/container-images.md:43 +#: ../../../docs/container-images.md:63 msgid "Extend and modify how users are authenticated on your homeserver." msgstr "" @@ -297,7 +333,7 @@ msgid "[activism.international/matrix_ldap_registration_proxy](https://gitlab.co msgstr "" #: ../../../docs/container-images.md:0 -msgid "A proxy that handles Matrix registration requests and forwards them to LDAP." +msgid "Proxy that handles Matrix registration requests and forwards them to LDAP" msgstr "" #: ../../../docs/container-images.md:0 @@ -309,11 +345,11 @@ msgid "[zeratax/matrix-registration](https://hub.docker.com/r/devture/zeratax-ma msgstr "" #: ../../../docs/container-images.md:0 -msgid "A simple python application to have a token based Matrix registration" +msgid "Simple python application to have a token based Matrix registration" msgstr "" #: ../../../docs/container-images.md:0 -msgid "[Matrix User Verification Service](configuring-playbook-user-verification-service.md) (UVS)" +msgid "[Matrix User Verification Service](configuring-playbook-user-verification-service.md)" msgstr "" #: ../../../docs/container-images.md:0 @@ -329,14 +365,14 @@ msgid "[synapse-simple-antispam](configuring-playbook-synapse-simple-antispam.md msgstr "" #: ../../../docs/container-images.md:0 -msgid "A spam checker module" +msgid "Spam checker module" msgstr "" -#: ../../../docs/container-images.md:55 +#: ../../../docs/container-images.md:75 msgid "File Storage" msgstr "" -#: ../../../docs/container-images.md:57 +#: ../../../docs/container-images.md:77 msgid "Use alternative file storage to the default `media_store` folder." msgstr "" @@ -365,17 +401,29 @@ msgid "[t2bot/matrix-media-repo](https://ghcr.io/t2bot/matrix-media-repo)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "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." +msgid "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." msgstr "" -#: ../../../docs/container-images.md:65 +#: ../../../docs/container-images.md:85 msgid "Bridges" msgstr "" -#: ../../../docs/container-images.md:67 +#: ../../../docs/container-images.md:87 msgid "Bridges can be used to connect your Matrix installation with third-party communication networks." msgstr "" +#: ../../../docs/container-images.md:0 +msgid "[mautrix-bluesky](configuring-playbook-bridge-mautrix-bluesky.md)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[mautrix/bluesky](https://mau.dev/mautrix/bluesky/container_registry)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "Bridge to [Bluesky](https://bsky.social/about)" +msgstr "" + #: ../../../docs/container-images.md:0 msgid "[mautrix-discord](configuring-playbook-bridge-mautrix-discord.md)" msgstr "" @@ -601,71 +649,27 @@ msgid "Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_C msgstr "" #: ../../../docs/container-images.md:0 -msgid "[go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "[nodefyme/go-skype-bridge](https://hub.docker.com/r/nodefyme/go-skype-bridge)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "Bridge to [Skype](https://www.skype.com)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "[mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "[mx-puppet/slack/mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/container_registry)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "Bridge to [Slack](https://slack.com)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "[mx-puppet-instagram](configuring-playbook-bridge-mx-puppet-instagram.md)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "[sorunome/mx-puppet-instagram](https://hub.docker.com/r/sorunome/mx-puppet-instagram)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/))" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "[mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "[sorunome/mx-puppet-twitter](https://hub.docker.com/r/sorunome/mx-puppet-twitter)" -msgstr "" - -#: ../../../docs/container-images.md:0 -msgid "Bridge for Twitter-DMs ([Twitter](https://twitter.com/))" +msgid "[mx-puppet-groupme](configuring-playbook-bridge-mx-puppet-groupme.md)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "[mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md)" +msgid "[xangelix/mx-puppet-groupme](https://hub.docker.com/r/xangelix/mx-puppet-groupme)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "[mx-puppet/discord/mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/container_registry)" +msgid "Bridge to [GroupMe](https://groupme.com/)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "[mx-puppet-groupme](configuring-playbook-bridge-mx-puppet-groupme.md)" +msgid "[matrix-steam-bridge](configuring-playbook-bridge-steam.md)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "[xangelix/mx-puppet-groupme](https://hub.docker.com/r/xangelix/mx-puppet-groupme)" +msgid "[jasonlaguidice/matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge/pkgs/container/matrix-steam-bridge)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "Bridge to [GroupMe](https://groupme.com/)" +msgid "Bridge to [Steam](https://steampowered.com/)" msgstr "" #: ../../../docs/container-images.md:0 @@ -692,11 +696,11 @@ msgstr "" msgid "Email to Matrix bridge" msgstr "" -#: ../../../docs/container-images.md:99 +#: ../../../docs/container-images.md:116 msgid "Bots" msgstr "" -#: ../../../docs/container-images.md:101 +#: ../../../docs/container-images.md:118 msgid "Bots provide various additional functionality to your installation." msgstr "" @@ -709,7 +713,7 @@ msgid "[etke.cc/baibot](https://ghcr.io/etkecc/baibot)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "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" +msgid "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" msgstr "" #: ../../../docs/container-images.md:0 @@ -745,7 +749,7 @@ msgid "[dock.mau.dev/maubot/maubot](https://mau.dev/maubot/maubot/container_regi msgstr "" #: ../../../docs/container-images.md:0 -msgid "A plugin-based Matrix bot system" +msgid "Plugin-based Matrix bot system" msgstr "" #: ../../../docs/container-images.md:0 @@ -757,7 +761,7 @@ msgid "[etke.cc/honoroit](https://github.com/etkecc/honoroit/container_registry) msgstr "" #: ../../../docs/container-images.md:0 -msgid "A helpdesk bot" +msgid "Helpdesk bot" msgstr "" #: ../../../docs/container-images.md:0 @@ -769,7 +773,7 @@ msgid "[matrixdotorg/mjolnir](https://hub.docker.com/r/matrixdotorg/mjolnir)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "A moderation tool for Matrix" +msgid "Moderation tool for Matrix" msgstr "" #: ../../../docs/container-images.md:0 @@ -781,7 +785,7 @@ msgid "[gnuxie/draupnir](https://hub.docker.com/r/gnuxie/draupnir)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "A moderation tool for Matrix (Fork of Mjolnir)" +msgid "Moderation tool for Matrix (Fork of Mjolnir)" msgstr "" #: ../../../docs/container-images.md:0 @@ -796,11 +800,11 @@ msgstr "" msgid "Web forms (HTTP POST) to Matrix" msgstr "" -#: ../../../docs/container-images.md:114 +#: ../../../docs/container-images.md:131 msgid "Administration" msgstr "" -#: ../../../docs/container-images.md:116 +#: ../../../docs/container-images.md:133 msgid "Services that help you in administrating and monitoring your Matrix installation." msgstr "" @@ -837,7 +841,7 @@ msgid "[etke.cc/synapse-admin](https://ghcr.io/etkecc/synapse-admin)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "A web UI tool for administrating users and rooms on your Matrix server" +msgid "Web UI tool for administrating users and rooms on your Matrix server" msgstr "" #: ../../../docs/container-images.md:0 @@ -869,7 +873,7 @@ msgid "Graphing tool that works well with the above two images. Our playbook als msgstr "" #: ../../../docs/container-images.md:0 -msgid "[Metrics and Graphs](configuring-playbook-prometheus-nginxlog.md)" +msgid "[Metrics and Graphs](configuring-playbook-prometheus-grafana.md#enable-metrics-and-graphs-for-nginx-logs-optional)" msgstr "" #: ../../../docs/container-images.md:0 @@ -888,6 +892,18 @@ msgstr "" msgid "Backups" msgstr "" +#: ../../../docs/container-images.md:0 +msgid "[postgres-backup-local](configuring-playbook-postgres-backup.md)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[prodrigestivill/postgres-backup-local](https://hub.docker.com/r/prodrigestivill/postgres-backup-local)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "Create automatic database backups" +msgstr "" + #: ../../../docs/container-images.md:0 msgid "[rageshake](configuring-playbook-rageshake.md)" msgstr "" @@ -908,11 +924,11 @@ msgstr "" msgid "Export the usage statistics of a Synapse homeserver to be scraped by Prometheus." msgstr "" -#: ../../../docs/container-images.md:131 +#: ../../../docs/container-images.md:149 msgid "Misc" msgstr "" -#: ../../../docs/container-images.md:133 +#: ../../../docs/container-images.md:151 msgid "Various services that don't fit any other categories." msgstr "" @@ -933,7 +949,7 @@ msgid "[synapse_auto_accept_invite](configuring-playbook-synapse-auto-accept-inv msgstr "" #: ../../../docs/container-images.md:0 -msgid "A Synapse module to automatically accept invites." +msgid "Synapse module to automatically accept invites" msgstr "" #: ../../../docs/container-images.md:0 @@ -941,11 +957,11 @@ msgid "[synapse_auto_compressor](configuring-playbook-synapse-auto-compressor.md msgstr "" #: ../../../docs/container-images.md:0 -msgid "[etke.cc/rust-synapse-compress-state](https://gitlab.com/etke.cc/rust-synapse-compress-state/container_registry)" +msgid "[mb-saces/rust-synapse-tools](https://gitlab.com/mb-saces/rust-synapse-tools/container_registry)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "A cli tool that automatically compresses `state_groups` database table in background." +msgid "Cli tool that automatically compresses Synapse's `state_groups` database table in background" msgstr "" #: ../../../docs/container-images.md:0 @@ -969,7 +985,7 @@ msgid "[etherpad/etherpad](https://hub.docker.com/r/etherpad/etherpad/)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "An open source collaborative text editor" +msgid "Open source collaborative text editor" msgstr "" #: ../../../docs/container-images.md:0 @@ -981,7 +997,7 @@ msgid "[jitsi/web](https://hub.docker.com/r/jitsi/web)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "the [Jitsi](https://jitsi.org/) web UI" +msgid "[Jitsi](https://jitsi.org/) web UI" msgstr "" #: ../../../docs/container-images.md:0 @@ -989,7 +1005,7 @@ msgid "[jitsi/jicofo](https://hub.docker.com/r/jitsi/jicofo)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "the [Jitsi](https://jitsi.org/) Focus component" +msgid "[Jitsi](https://jitsi.org/) Focus component" msgstr "" #: ../../../docs/container-images.md:0 @@ -997,7 +1013,7 @@ msgid "[jitsi/prosody](https://hub.docker.com/r/jitsi/prosody)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "the [Jitsi](https://jitsi.org/) Prosody XMPP server component" +msgid "[Jitsi](https://jitsi.org/) Prosody XMPP server component" msgstr "" #: ../../../docs/container-images.md:0 @@ -1005,7 +1021,7 @@ msgid "[jitsi/jvb](https://hub.docker.com/r/jitsi/jvb)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "the [Jitsi](https://jitsi.org/) Video Bridge component" +msgid "[Jitsi](https://jitsi.org/) Video Bridge component" msgstr "" #: ../../../docs/container-images.md:0 @@ -1017,7 +1033,7 @@ msgid "[cactuscomments/cactus-appservice](https://hub.docker.com/r/cactuscomment msgstr "" #: ../../../docs/container-images.md:0 -msgid "A federated comment system built on Matrix" +msgid "Federated comment system built on Matrix" msgstr "" #: ../../../docs/container-images.md:0 @@ -1033,7 +1049,7 @@ msgid "[matrixdotorg/pantalaimon](https://hub.docker.com/r/matrixdotorg/pantalai msgstr "" #: ../../../docs/container-images.md:0 -msgid "An E2EE aware proxy daemon" +msgid "E2EE aware proxy daemon" msgstr "" #: ../../../docs/container-images.md:0 @@ -1060,11 +1076,23 @@ msgstr "" msgid "Self-hosted, UnifiedPush-compatible push notifications server" msgstr "" -#: ../../../docs/container-images.md:152 +#: ../../../docs/container-images.md:0 +msgid "[Element Call](configuring-playbook-element-call.md)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[element-hq/element-call](https://ghcr.io/element-hq/element-call)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "A native Matrix video conferencing application" +msgstr "" + +#: ../../../docs/container-images.md:171 msgid "Container images of deprecated / unmaintained services" msgstr "" -#: ../../../docs/container-images.md:154 +#: ../../../docs/container-images.md:173 msgid "The list of the deprecated or unmaintained services is available [here](configuring-playbook.md#deprecated--unmaintained--removed-services)." msgstr "" @@ -1089,7 +1117,7 @@ msgid "[turt2live/matrix-dimension](https://hub.docker.com/r/turt2live/matrix-di msgstr "" #: ../../../docs/container-images.md:0 -msgid "An open source integration manager for Matrix clients" +msgid "Open source integration manager for Matrix clients" msgstr "" #: ../../../docs/container-images.md:0 @@ -1113,7 +1141,7 @@ msgid "[matrixdotorg/go-neb](https://hub.docker.com/r/matrixdotorg/go-neb)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "A multi functional bot written in Go" +msgid "Multi functional bot written in Go" msgstr "" #: ../../../docs/container-images.md:0 @@ -1141,25 +1169,57 @@ msgid "Bridge to [Facebook](https://facebook.com/)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "[mautrix-hangouts](configuring-playbook-bridge-mautrix-hangouts.md)" +msgid "[mautrix-instagram](configuring-playbook-bridge-mautrix-instagram.md)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[mautrix/instagram](https://mau.dev/mautrix/instagram/container_registry)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "[mautrix/hangouts](https://mau.dev/mautrix/hangouts/container_registry)" +msgid "Bridge to [Instagram](https://instagram.com/)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "Bridge to [Google Hangouts](https://en.wikipedia.org/wiki/Google_Hangouts)" +msgid "[mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "[mautrix-instagram](configuring-playbook-bridge-mautrix-instagram.md)" +msgid "[mx-puppet/discord/mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/container_registry)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "[mautrix/instagram](https://mau.dev/mautrix/instagram/container_registry)" +msgid "[mx-puppet-instagram](configuring-playbook-bridge-mx-puppet-instagram.md)" msgstr "" #: ../../../docs/container-images.md:0 -msgid "Bridge to [Instagram](https://instagram.com/)" +msgid "[sorunome/mx-puppet-instagram](https://hub.docker.com/r/sorunome/mx-puppet-instagram)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/))" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[mx-puppet/slack/mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/container_registry)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "Bridge to [Slack](https://slack.com)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "[sorunome/mx-puppet-twitter](https://hub.docker.com/r/sorunome/mx-puppet-twitter)" +msgstr "" + +#: ../../../docs/container-images.md:0 +msgid "Bridge for Twitter-DMs ([Twitter](https://twitter.com/))" msgstr "" diff --git a/i18n/translation-templates/docs/faq.pot b/i18n/translation-templates/docs/faq.pot index 96ada43bb..fd506b25d 100644 --- a/i18n/translation-templates/docs/faq.pot +++ b/i18n/translation-templates/docs/faq.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,875 +16,783 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/faq.md:1 +#: ../../../docs/faq.md:13 msgid "Frequently Asked Questions" msgstr "" -#: ../../../docs/faq.md:3 +#: ../../../docs/faq.md:15 msgid "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))." msgstr "" -#: ../../../docs/faq.md:5 +#: ../../../docs/faq.md:17 msgid "This FAQ page does not intend to replace the [matrix.org FAQ](https://matrix.org/faq/) (please see that one too)." msgstr "" -#: ../../../docs/faq.md:7 +#: ../../../docs/faq.md:19 msgid "We've only started this FAQ recently, so it's still somewhat empty." msgstr "" -#: ../../../docs/faq.md:9 +#: ../../../docs/faq.md:21 msgid "Also, we encourage you to not dig yourself into a hole by reading way too much. When you've heard enough, proceed to installation. To get started, see [below](#how-do-i-run-the-installation) about our installation guides." msgstr "" -#: ../../../docs/faq.md:11 +#: ../../../docs/faq.md:23 msgid "Introductory" msgstr "" -#: ../../../docs/faq.md:13 +#: ../../../docs/faq.md:25 msgid "Where do I find more questions and answers about Matrix?" msgstr "" -#: ../../../docs/faq.md:15 +#: ../../../docs/faq.md:27 msgid "This is a Frequently Asked Questions page focused on this [Ansible](https://www.ansible.com/) playbook ([What is Ansible? How does it work?](#what-is-ansible-how-does-it-work)) for deploying a [Matrix](https://matrix.org/) server." msgstr "" -#: ../../../docs/faq.md:17 +#: ../../../docs/faq.md:29 msgid "For a lot more generic questions and answers, see the [matrix.org FAQ](https://matrix.org/faq/)." msgstr "" -#: ../../../docs/faq.md:19 +#: ../../../docs/faq.md:31 msgid "What is Matrix? What is Element? What is Synapse? Why are you confusing me with so many terms?" msgstr "" -#: ../../../docs/faq.md:21 +#: ../../../docs/faq.md:33 msgid "[Matrix](https://matrix.org/) is a new type of realtime communication (chat) network, the closest analogy to which is probably \"email\"." msgstr "" -#: ../../../docs/faq.md:23 +#: ../../../docs/faq.md:35 msgid "You don't just use the \"email\" protocols (SMTP, POP3, IMAP) directly though. There's a *server* somewhere which stores your data (`@gmail.com`, `@yahoo.com`, `@hotmail.com`, `@your-company.com`) and you access it by using these \"email\" protocols via some *client* program (Outlook, Thunderbird, some website, etc)." msgstr "" -#: ../../../docs/faq.md:25 +#: ../../../docs/faq.md:37 msgid "In the world of the Matrix chat protocol, there are various client programs. The first and currently most full-featured one is called [Element](https://element.io/) (used to be called Riot.im and Vector.im in the past). There are [many other clients](https://matrix.org/clients/). You can switch clients as much as you want until you find the one that is right for you on a given platform (you may use Element Desktop on your desktop, but Fluffychat on your phone, etc)." msgstr "" -#: ../../../docs/faq.md:27 +#: ../../../docs/faq.md:39 msgid "Matrix is also like email due to the fact that there are many servers around the world which can all talk to each other (you can send email from `@gmail.com` addresses to `@yahoo.com` and `@hotmail.com` addresses). It's the same with Matrix (`@bob:example.com` can talk to `@alice:example.org`)." msgstr "" -#: ../../../docs/faq.md:29 +#: ../../../docs/faq.md:41 msgid "If someone else is hosting your Matrix server (you being `@alice:matrix.org` or some other public server like this), all you need is a Matrix client program, like Element Web or Element X Android." msgstr "" -#: ../../../docs/faq.md:31 +#: ../../../docs/faq.md:43 msgid "If you'd like to host your own server (you being `@alice:example.com`), you'd need to set up a Matrix server program, like Synapse." msgstr "" -#: ../../../docs/faq.md:33 +#: ../../../docs/faq.md:45 msgid "In short:" msgstr "" -#: ../../../docs/faq.md:35 +#: ../../../docs/faq.md:47 msgid "Matrix is the protocol — a set of rules about how the chat network operates" msgstr "" -#: ../../../docs/faq.md:36 +#: ../../../docs/faq.md:48 msgid "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/)." msgstr "" -#: ../../../docs/faq.md:37 +#: ../../../docs/faq.md:49 msgid "Synapse is a server program you can use to host your very own Matrix server." msgstr "" -#: ../../../docs/faq.md:39 +#: ../../../docs/faq.md:51 msgid "This FAQ here mostly focuses on installing various Matrix services using the Ansible automation tool. You can learn much more about Matrix in the [matrix.org FAQ](https://matrix.org/faq/)." msgstr "" -#: ../../../docs/faq.md:41 +#: ../../../docs/faq.md:53 msgid "People I wish to talk to are not on Matrix. Can I talk to them?" msgstr "" -#: ../../../docs/faq.md:43 +#: ../../../docs/faq.md:55 msgid "You most likely can. Besides Matrix-native chats, Matrix also supports the concept of \"bridging\", which allows you to plug other networks into it." msgstr "" -#: ../../../docs/faq.md:45 +#: ../../../docs/faq.md:57 msgid "This Ansible playbook can help you install [tens of bridges for various networks](configuring-playbook.md#bridging-other-networks)." msgstr "" -#: ../../../docs/faq.md:47 +#: ../../../docs/faq.md:59 msgid "Besides setting up your own bridges (preferable), you can also use some [public bridges hosted by others](https://publiclist.anchel.nl/#bridges)." msgstr "" -#: ../../../docs/faq.md:49 +#: ../../../docs/faq.md:61 msgid "How do I get started with Matrix?" msgstr "" -#: ../../../docs/faq.md:51 +#: ../../../docs/faq.md:63 msgid "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`)." msgstr "" -#: ../../../docs/faq.md:53 +#: ../../../docs/faq.md:65 msgid "There are 3 ways to get into Matrix, depending on your technical ability and needs:" msgstr "" -#: ../../../docs/faq.md:55 +#: ../../../docs/faq.md:67 msgid "**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." msgstr "" -#: ../../../docs/faq.md:57 +#: ../../../docs/faq.md:69 msgid "**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." msgstr "" -#: ../../../docs/faq.md:59 +#: ../../../docs/faq.md:71 msgid "**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)." msgstr "" -#: ../../../docs/faq.md:61 +#: ../../../docs/faq.md:73 msgid "How do I set up my own Matrix server?" msgstr "" -#: ../../../docs/faq.md:63 +#: ../../../docs/faq.md:75 msgid "Normally, you'd first choose the [Matrix](https://matrix.org/) server software you'd like to run. At the time of this writing (January/2021), there's only one fully-featured server program, so there's only one reasonable choice. That's [Synapse](https://github.com/element-hq/synapse)." msgstr "" -#: ../../../docs/faq.md:65 +#: ../../../docs/faq.md:77 msgid "There are [many guides about installing Synapse](https://matrix.org/docs/guides/#installing-synapse). Using this Ansible playbook is just one way of doing it." msgstr "" -#: ../../../docs/faq.md:67 +#: ../../../docs/faq.md:79 msgid "Naturally, we're biased, so our usual recommendation is to go with this [Ansible](https://www.ansible.com/) playbook, instead of installing Synapse (and many many other things around it) manually." msgstr "" -#: ../../../docs/faq.md:69 +#: ../../../docs/faq.md:81 msgid "To get started with the playbook, check out the [Quick start](quick-start.md) or full installation guide (starting at the [Prerequisites](prerequisites.md) page)." msgstr "" -#: ../../../docs/faq.md:71 +#: ../../../docs/faq.md:83 msgid "What is Ansible? How does it work?" msgstr "" -#: ../../../docs/faq.md:73 +#: ../../../docs/faq.md:85 msgid "[Ansible](https://www.ansible.com/) is an automation program. This \"playbook\" is a collection of tasks/scripts that will set up a [Matrix](https://matrix.org/) server for you, so you don't have to perform these tasks manually." msgstr "" -#: ../../../docs/faq.md:75 +#: ../../../docs/faq.md:87 msgid "We have written these automated tasks for you and all you need to do is execute them using the Ansible program." msgstr "" -#: ../../../docs/faq.md:77 +#: ../../../docs/faq.md:89 msgid "You can install Ansible and this playbook code repository on your own computer and tell it to install Matrix services at the server living at `matrix.example.com`. We recommend installing Ansible on your own computer." msgstr "" -#: ../../../docs/faq.md:79 +#: ../../../docs/faq.md:91 msgid "Alternatively, you can download Ansible and the playbook itself directly on the `matrix.example.com` server." msgstr "" -#: ../../../docs/faq.md:81 +#: ../../../docs/faq.md:93 msgid "To learn more, see our [dedicated Ansible documentation page](ansible.md)." msgstr "" -#: ../../../docs/faq.md:83 +#: ../../../docs/faq.md:95 msgid "What is `just`?" msgstr "" -#: ../../../docs/faq.md:85 +#: ../../../docs/faq.md:97 msgid "[`just`](https://github.com/casey/just) is a modern command-runner alternative to [make](https://www.gnu.org/software/make/). It can be used to invoke commands with less typing." msgstr "" -#: ../../../docs/faq.md:87 +#: ../../../docs/faq.md:99 msgid "The `just` utility executes shortcut commands (called \"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)." msgstr "" -#: ../../../docs/faq.md:89 +#: ../../../docs/faq.md:101 msgid "For details about `just` commands, take a look at: [Running `just` commands](just.md)." msgstr "" -#: ../../../docs/faq.md:91 +#: ../../../docs/faq.md:103 msgid "The playbook also contains a `Makefile` for the `make` tool, but most of the just recipes are not available as targets in the `Makefile`." msgstr "" -#: ../../../docs/faq.md:93 +#: ../../../docs/faq.md:105 msgid "Why use this playbook and not install Synapse and other things manually?" msgstr "" -#: ../../../docs/faq.md:95 +#: ../../../docs/faq.md:107 msgid "There are various guides telling you how easy it is to install [Synapse](https://github.com/element-hq/synapse)." msgstr "" -#: ../../../docs/faq.md:97 +#: ../../../docs/faq.md:109 msgid "Reading the documentation of this Ansible playbook, you may also be thinking:" msgstr "" -#: ../../../docs/faq.md:99 +#: ../../../docs/faq.md:111 msgid "I don't know what [Ansible](https://www.ansible.com/) is. I don't know what [Docker](https://www.docker.com/) is. This looks more complicated." msgstr "" -#: ../../../docs/faq.md:101 +#: ../../../docs/faq.md:113 msgid "… so you may be leaning toward [installing Synapse manually](https://github.com/element-hq/synapse/blob/master/INSTALL.md)." msgstr "" -#: ../../../docs/faq.md:103 +#: ../../../docs/faq.md:115 msgid "The problem with a manual installation is:" msgstr "" -#: ../../../docs/faq.md:105 +#: ../../../docs/faq.md:117 msgid "Synapse is written in Python. If not packaged for your distribution, you'd need to install various Python modules, etc., and keep them updated." msgstr "" -#: ../../../docs/faq.md:106 +#: ../../../docs/faq.md:118 msgid "Synapse requires a [Postgres](https://www.postgresql.org/) database (it can run on SQLite, but that's very much discouraged). So you'd need to install Postgres as well." msgstr "" -#: ../../../docs/faq.md:107 +#: ../../../docs/faq.md:119 msgid "you may also need a reverse-proxy server in front of it (nginx, Apache), so you'd need to be familiar with that" msgstr "" -#: ../../../docs/faq.md:108 +#: ../../../docs/faq.md:120 msgid "SSL is required, so you'd need to obtain Let's Encrypt (or other free or non-free) certificates for one or more domain names. You'd need to be familiar with [certbot](https://certbot.eff.org/) (when using Let's Encrypt) or similar software." msgstr "" -#: ../../../docs/faq.md:109 +#: ../../../docs/faq.md:121 msgid "for each additional component you'd like to add (client like [Element](https://element.io), bridge to some other chat network, integration manager (stickers, other services, Identity Manager, etc.), you'll need to spend extra time installing and wiring it with the rest of the system in a way that works." msgstr "" -#: ../../../docs/faq.md:110 +#: ../../../docs/faq.md:122 msgid "you'll likely get slower updates for all of these components, depending on your distro packaging or your own time and ability" msgstr "" -#: ../../../docs/faq.md:112 +#: ../../../docs/faq.md:124 msgid "The playbook, on the other hand, installs a bunch of components for you by default, obtains SSL certificates for you, etc. If you'd like, you can enable various bridges and other services with very little effort. All the components are wired to work together." msgstr "" -#: ../../../docs/faq.md:114 +#: ../../../docs/faq.md:126 msgid "All services run in Docker containers (most being officially provided by each component's developers), so we're not at the mercy of distro packaging." msgstr "" -#: ../../../docs/faq.md:116 +#: ../../../docs/faq.md:128 msgid "Why use this playbook and not just use the Docker image directly?" msgstr "" -#: ../../../docs/faq.md:118 +#: ../../../docs/faq.md:130 msgid "Reasons are similar to the reasons for not installing manually." msgstr "" -#: ../../../docs/faq.md:120 +#: ../../../docs/faq.md:132 msgid "Besides Synapse, you'd need other things — a Postgres database, likely the [Element](https://element.io) client, etc., etc." msgstr "" -#: ../../../docs/faq.md:122 +#: ../../../docs/faq.md:134 msgid "Using the playbook, you get all these components in a way that works well together out of the box." msgstr "" -#: ../../../docs/faq.md:124 +#: ../../../docs/faq.md:136 msgid "Occasionally I see some people are talking about \"MDAD\". What is it?" msgstr "" -#: ../../../docs/faq.md:126 +#: ../../../docs/faq.md:138 msgid "It is the acronym of us: **m**atrix-**d**ocker-**a**nsible-**d**eploy." msgstr "" -#: ../../../docs/faq.md:128 +#: ../../../docs/faq.md:140 msgid "What's different about this Ansible playbook compared to [EMnify/matrix-synapse-auto-deploy](https://github.com/EMnify/matrix-synapse-auto-deploy)?" msgstr "" -#: ../../../docs/faq.md:130 +#: ../../../docs/faq.md:142 msgid "This is similar to the [EMnify/matrix-synapse-auto-deploy](https://github.com/EMnify/matrix-synapse-auto-deploy) Ansible deployment, but:" msgstr "" -#: ../../../docs/faq.md:132 +#: ../../../docs/faq.md:144 msgid "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" msgstr "" -#: ../../../docs/faq.md:134 +#: ../../../docs/faq.md:146 msgid "this one installs and hooks together **a lot more Matrix-related services** for you (see above)" msgstr "" -#: ../../../docs/faq.md:136 +#: ../../../docs/faq.md:148 msgid "this one **can be executed more than once** without causing trouble" msgstr "" -#: ../../../docs/faq.md:138 +#: ../../../docs/faq.md:150 msgid "works on various distros: **CentOS** (7.0+), Debian-based distributions (**Debian** 10/Buster+, **Ubuntu** 18.04+), **Archlinux**" msgstr "" -#: ../../../docs/faq.md:140 +#: ../../../docs/faq.md:152 msgid "this one installs everything in a single directory (`/matrix` by default) and **doesn't \"contaminate\" your server** with files all over the place" msgstr "" -#: ../../../docs/faq.md:142 +#: ../../../docs/faq.md:154 msgid "this one **doesn't necessarily take over** ports 80 and 443. By default, it sets up [Traefik](https://doc.traefik.io/traefik/) for you there, but you can also [use your own webserver](configuring-playbook-own-webserver.md)" msgstr "" -#: ../../../docs/faq.md:144 +#: ../../../docs/faq.md:156 msgid "this one **runs everything in Docker containers**, so it's likely more predictable and less fragile (see [Docker images used by this playbook](container-images.md))" msgstr "" -#: ../../../docs/faq.md:146 +#: ../../../docs/faq.md:158 msgid "this one retrieves and automatically renews free [Let's Encrypt](https://letsencrypt.org/) **SSL certificates** for you" msgstr "" -#: ../../../docs/faq.md:148 +#: ../../../docs/faq.md:160 msgid "this one optionally can store the `media_store` content repository files on [Amazon S3](https://aws.amazon.com/s3/) (but defaults to storing files on the server's filesystem)" msgstr "" -#: ../../../docs/faq.md:150 +#: ../../../docs/faq.md:162 msgid "this one optionally **allows you to use an external PostgreSQL server** for Synapse's database (but defaults to running one in a container)" msgstr "" -#: ../../../docs/faq.md:152 +#: ../../../docs/faq.md:164 msgid "helps you **import data from a previous installation** (so you can migrate your manual virtualenv/Docker setup to a more managed one)" msgstr "" -#: ../../../docs/faq.md:154 +#: ../../../docs/faq.md:166 msgid "this one is actually **maintained**" msgstr "" -#: ../../../docs/faq.md:156 +#: ../../../docs/faq.md:168 msgid "Server-related" msgstr "" -#: ../../../docs/faq.md:158 +#: ../../../docs/faq.md:170 msgid "What kind of server do I need to install Matrix using this Ansible playbook?" msgstr "" -#: ../../../docs/faq.md:160 +#: ../../../docs/faq.md:172 msgid "We list our server requirements in [Prerequisites](prerequisites.md)." msgstr "" -#: ../../../docs/faq.md:162 +#: ../../../docs/faq.md:174 msgid "Why not run Matrix on Kubernetes?" msgstr "" -#: ../../../docs/faq.md:164 +#: ../../../docs/faq.md:176 msgid "There's no reason not to run Matrix on [Kubernetes](https://kubernetes.io/)." msgstr "" -#: ../../../docs/faq.md:166 +#: ../../../docs/faq.md:178 msgid "However, that's overly complicated for thousands of us who just want to run a single small (and sometimes not so small) Matrix server, either using \"cloud\" servers or even a [Raspberry Pi](https://www.raspberrypi.org/) at home." msgstr "" -#: ../../../docs/faq.md:168 +#: ../../../docs/faq.md:180 msgid "For us, a Kubernetes-based setup which requires a cluster of multiple computers and is more technically-involved is a no-go." msgstr "" -#: ../../../docs/faq.md:170 +#: ../../../docs/faq.md:182 msgid "There are others working on automating a Matrix-on-Kubernetes setup, such as this [Helm](https://helm.sh/) chart: https://github.com/dacruz21/matrix-chart." msgstr "" -#: ../../../docs/faq.md:172 +#: ../../../docs/faq.md:184 msgid "Why don't you use Podman instead of Docker?" msgstr "" -#: ../../../docs/faq.md:174 +#: ../../../docs/faq.md:186 msgid "We like the philosophy of a daemonless container runtime, but [Podman](https://podman.io) is just not ready for our use case yet." msgstr "" -#: ../../../docs/faq.md:176 +#: ../../../docs/faq.md:188 msgid "Learn more about our past experiences/attempts to give Podman a chance, by reading [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/520)." msgstr "" -#: ../../../docs/faq.md:178 +#: ../../../docs/faq.md:190 msgid "In short, `alias podman=docker` is a lie (for us)." msgstr "" -#: ../../../docs/faq.md:180 +#: ../../../docs/faq.md:192 msgid "Why use Docker?" msgstr "" -#: ../../../docs/faq.md:182 +#: ../../../docs/faq.md:194 msgid "[Docker](https://www.docker.com/) is one of our 2 hard dependencies (the other one being [systemd](https://systemd.io/))." msgstr "" -#: ../../../docs/faq.md:184 +#: ../../../docs/faq.md:196 msgid "It lets us run services in an isolated manner and independently of the (usually old) packages available for distributions." msgstr "" -#: ../../../docs/faq.md:186 +#: ../../../docs/faq.md:198 msgid "It also lets us have a unified setup which runs the same across various supported distros (see them on [Prerequisites](prerequisites.md))." msgstr "" -#: ../../../docs/faq.md:188 +#: ../../../docs/faq.md:200 msgid "Is Docker a hard requirement?" msgstr "" -#: ../../../docs/faq.md:190 +#: ../../../docs/faq.md:202 msgid "Yes. See [Why don't you use Podman instead of Docker?](#why-dont-you-use-podman-instead-of-docker) for why we're not using another container runtime." msgstr "" -#: ../../../docs/faq.md:192 +#: ../../../docs/faq.md:204 msgid "All of our services run in containers. It's how we achieve predictability and also how we support tens of different services across lots of distros." msgstr "" -#: ../../../docs/faq.md:194 +#: ../../../docs/faq.md:206 msgid "The only thing we need on the distro is systemd and Python (we install Docker ourselves, unless you ask us not to)." msgstr "" -#: ../../../docs/faq.md:196 +#: ../../../docs/faq.md:208 msgid "Why don't you use docker-compose?" msgstr "" -#: ../../../docs/faq.md:198 +#: ../../../docs/faq.md:210 msgid "Instead of using [docker-compose](https://docs.docker.com/compose/), we prefer installing systemd services and scheduling those independently." msgstr "" -#: ../../../docs/faq.md:200 +#: ../../../docs/faq.md:212 msgid "There are people who have worked on turning this setup into a docker-compose-based one. See these experiments [here](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/64#issuecomment-603164625). There is also a demo project ([element-docker-demo](https://github.com/element-hq/element-docker-demo)) by Element." msgstr "" -#: ../../../docs/faq.md:202 +#: ../../../docs/faq.md:214 msgid "Can I run this on a distro without systemd?" msgstr "" -#: ../../../docs/faq.md:204 +#: ../../../docs/faq.md:216 msgid "No. [systemd](https://systemd.io/) is one of our 2 hard dependencies (the other one being [Docker](https://www.docker.com/))." msgstr "" -#: ../../../docs/faq.md:206 +#: ../../../docs/faq.md:218 msgid "Can I install this on a Raspberry Pi?" msgstr "" -#: ../../../docs/faq.md:208 +#: ../../../docs/faq.md:220 msgid "Yes, you can. See our [Alternative Architectures](alternative-architectures.md) documentation page." msgstr "" -#: ../../../docs/faq.md:210 +#: ../../../docs/faq.md:222 msgid "Whether a Raspberry Pi has enough power to give you a good experience is another question. It depends on your use case." msgstr "" -#: ../../../docs/faq.md:212 +#: ../../../docs/faq.md:224 msgid "Also see: [What kind of server specs do I need?](#what-kind-of-server-specs-do-i-need)." msgstr "" -#: ../../../docs/faq.md:214 +#: ../../../docs/faq.md:226 msgid "What kind of server specs do I need?" msgstr "" -#: ../../../docs/faq.md:216 +#: ../../../docs/faq.md:228 msgid "This largely depends on your use case. It's not so much the number of users that you plan to host, but rather the number of large rooms they will join." msgstr "" -#: ../../../docs/faq.md:218 +#: ../../../docs/faq.md:230 msgid "Federated rooms with lots of history and containing hundreds of other servers are very heavy CPU-wise and memory-wise." msgstr "" -#: ../../../docs/faq.md:220 +#: ../../../docs/faq.md:232 msgid "You can probably use a 1 CPU + 1GB memory server to host hundreds of local users just fine, but as soon as one of them joins a federated room like `#matrix:matrix.org` (Matrix HQ) or some IRC-bridged room (say `##linux`), your server will get the need for a lot more power (at least 2GB RAM, etc)." msgstr "" -#: ../../../docs/faq.md:222 +#: ../../../docs/faq.md:234 msgid "Running Matrix on a server with 1GB of memory is possible (especially if you disable some not-so-important services). See [How do I optimize this setup for a low-power server?](#how-do-i-optimize-this-setup-for-a-low-power-server)." msgstr "" -#: ../../../docs/faq.md:224 +#: ../../../docs/faq.md:236 msgid "**We recommend starting with a server having at least 2GB of memory** and even then using it sparingly. If you know for sure you'll be joining various large rooms, etc., then going for 4GB of memory or more is a good idea." msgstr "" -#: ../../../docs/faq.md:226 -msgid "Besides the regular Matrix stuff, we also support things like video-conferencing using [Jitsi](configuring-playbook-jitsi.md) and other additional services which (when installed) may use up a lot of memory. Things do add up. Besides the Synapse Matrix server, Jitsi is especially notorious for consuming a lot of resources. If you plan on running Jitsi, we recommend a server with at least 2GB of memory (preferrably more). See our [Jitsi documentation page](configuring-playbook-jitsi.md) to learn how to optimize its memory/CPU usage." +#: ../../../docs/faq.md:238 +msgid "Besides the regular Matrix stuff, we also support things like video-conferencing using [Jitsi](configuring-playbook-jitsi.md) and other additional services which (when installed) may use up a lot of memory. Things do add up. Besides the Synapse Matrix server, Jitsi is especially notorious for consuming a lot of resources. If you plan on running Jitsi, we recommend a server with at least 2GB of memory (preferably more). See our [Jitsi documentation page](configuring-playbook-jitsi.md) to learn how to optimize its memory/CPU usage." msgstr "" -#: ../../../docs/faq.md:228 +#: ../../../docs/faq.md:240 msgid "Can I run this in an LXC container?" msgstr "" -#: ../../../docs/faq.md:230 +#: ../../../docs/faq.md:242 msgid "If your distro runs within an [LXC container](https://linuxcontainers.org/), you may hit [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/703). It can be worked around, if absolutely necessary, but we suggest that you avoid running from within an LXC container." msgstr "" -#: ../../../docs/faq.md:232 +#: ../../../docs/faq.md:244 msgid "Configuration" msgstr "" -#: ../../../docs/faq.md:234 +#: ../../../docs/faq.md:246 msgid "Why install my server at matrix.example.com and not at the base domain?" msgstr "" -#: ../../../docs/faq.md:236 +#: ../../../docs/faq.md:248 msgid "It's the same with email servers. Your email address is likely `name@company.com`, not `name@mail.company.com`, even though it's `mail.company.com` that is really handling your data for `@company.com` email to work." msgstr "" -#: ../../../docs/faq.md:238 +#: ../../../docs/faq.md:250 msgid "Using a separate domain name is easier to manage (although it's a little hard to get right at first) and keeps your Matrix server isolated from your website (if you have one), from your email server (if you have one), etc. Therefore, this playbook sets up services on your Matrix server (`matrix.example.com`) by default." msgstr "" -#: ../../../docs/faq.md:240 +#: ../../../docs/faq.md:252 msgid "I don't control anything on the base domain and can't set up delegation to matrix.example.com. What do I do?" msgstr "" -#: ../../../docs/faq.md:242 +#: ../../../docs/faq.md:254 msgid "If you're not in control of your base domain (or the server handling it) at all, you can take a look at [How do I install on matrix.example.com without involving the base domain?](#how-do-i-install-on-matrixexamplecom-without-involving-the-base-domain)" msgstr "" -#: ../../../docs/faq.md:244 +#: ../../../docs/faq.md:256 msgid "I can't set up HTTPS on the base domain. How will I get Matrix federating?" msgstr "" -#: ../../../docs/faq.md:246 +#: ../../../docs/faq.md:258 msgid "If you really can't obtain an HTTPS certificate for your base domain, you can take a look at [How do I install on matrix.example.com without involving the base domain?](#how-do-i-install-on-matrixexamplecom-without-involving-the-base-domain)" msgstr "" -#: ../../../docs/faq.md:248 +#: ../../../docs/faq.md:260 msgid "How do I install on matrix.example.com without involving the base domain?" msgstr "" -#: ../../../docs/faq.md:250 +#: ../../../docs/faq.md:262 msgid "Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/faq.md:271 +#: ../../../docs/faq.md:283 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/faq.md:278 +#: ../../../docs/faq.md:290 msgid "**Notes**:" msgstr "" -#: ../../../docs/faq.md:280 +#: ../../../docs/faq.md:292 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/faq.md:282 +#: ../../../docs/faq.md:294 msgid "`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." msgstr "" -#: ../../../docs/faq.md:284 +#: ../../../docs/faq.md:296 msgid "Without setting up [server delegation](howto-server-delegation.md) to `matrix.example.com`, your user IDs will be like `@alice:matrix.example.com`. This is equivalent to having an email address like `bob@mail.company.com`, instead of just `bob@company.com`." msgstr "" -#: ../../../docs/faq.md:286 +#: ../../../docs/faq.md:298 msgid "I don't use the base domain for anything. How am I supposed to set up Server Delegation for Matrix services?" msgstr "" -#: ../../../docs/faq.md:288 +#: ../../../docs/faq.md:300 msgid "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))." msgstr "" -#: ../../../docs/faq.md:290 +#: ../../../docs/faq.md:302 msgid "Luckily, the playbook can set up your Matrix server (at `matrix.example.com`) to also handle traffic for the base domain (`example.com`)." msgstr "" -#: ../../../docs/faq.md:292 +#: ../../../docs/faq.md:304 msgid "See [Serving the base domain](configuring-playbook-base-domain-serving.md)." msgstr "" -#: ../../../docs/faq.md:294 +#: ../../../docs/faq.md:306 msgid "How do I optimize this setup for a low-power server?" msgstr "" -#: ../../../docs/faq.md:296 +#: ../../../docs/faq.md:308 msgid "You can disable some not-so-important services to save on memory." msgstr "" -#: ../../../docs/faq.md:318 +#: ../../../docs/faq.md:327 msgid "You can also consider implementing a restriction on room complexity, in order to prevent users from joining very heavy rooms:" msgstr "" -#: ../../../docs/faq.md:328 +#: ../../../docs/faq.md:337 msgid "If you've installed [Jitsi](configuring-playbook-jitsi.md) (not installed by default), there are additional optimizations listed on its documentation page that you can perform." msgstr "" -#: ../../../docs/faq.md:330 +#: ../../../docs/faq.md:339 msgid "I already have Docker on my server. Can you stop installing Docker via the playbook?" msgstr "" -#: ../../../docs/faq.md:332 +#: ../../../docs/faq.md:341 msgid "Yes, we can stop installing Docker ourselves. Just use this in your `vars.yml` file:" msgstr "" -#: ../../../docs/faq.md:338 +#: ../../../docs/faq.md:347 msgid "I run another webserver on the same server where I wish to install Matrix. What now?" msgstr "" -#: ../../../docs/faq.md:340 +#: ../../../docs/faq.md:349 msgid "By default, we install a webserver for you ([Traefik](https://doc.traefik.io/traefik/)), but you can also use [your own webserver](configuring-playbook-own-webserver.md)." msgstr "" -#: ../../../docs/faq.md:342 +#: ../../../docs/faq.md:351 msgid "How is the effective configuration determined?" msgstr "" -#: ../../../docs/faq.md:344 +#: ../../../docs/faq.md:353 msgid "Configuration variables are defined in multiple places in this playbook and are considered in this order:" msgstr "" -#: ../../../docs/faq.md:346 +#: ../../../docs/faq.md:355 msgid "there are defaults coming from each role's defaults file (`role/matrix*/defaults/main.yml`). These variable values aim to be good defaults for when the role is used standalone (outside of this collection of roles, also called playbook)." msgstr "" -#: ../../../docs/faq.md:348 +#: ../../../docs/faq.md:357 msgid "then, there are overrides in `group_vars/matrix_servers`, which aim to adjust these \"standalone role defaults\" to something which better fits the playbook in its entirety." msgstr "" -#: ../../../docs/faq.md:350 +#: ../../../docs/faq.md:359 msgid "finally, there's your `inventory/host_vars/matrix.example.com/vars.yml` file, which is the ultimate override" msgstr "" -#: ../../../docs/faq.md:352 +#: ../../../docs/faq.md:361 msgid "What configuration variables are available?" msgstr "" -#: ../../../docs/faq.md:354 +#: ../../../docs/faq.md:363 msgid "You can discover the variables you can override in each role (`roles/*/*/defaults/main.yml`)." msgstr "" -#: ../../../docs/faq.md:356 -msgid "As described in [How is the effective configuration determined?](#how-is-the-effective-configuration-determined), these role-defaults may be overriden by values defined in `group_vars/matrix_servers`." +#: ../../../docs/faq.md:365 +msgid "As described in [How is the effective configuration determined?](#how-is-the-effective-configuration-determined), these role-defaults may be overridden by values defined in `group_vars/matrix_servers`." msgstr "" -#: ../../../docs/faq.md:358 +#: ../../../docs/faq.md:367 msgid "Refer to both of these for inspiration. Still, as mentioned in [Configuring the playbook](configuring-playbook.md), you're only ever supposed to edit your own `inventory/host_vars/matrix.example.com/vars.yml` file and nothing else inside the playbook (unless you're meaning to contribute new features)." msgstr "" -#: ../../../docs/faq.md:360 -#: ../../../docs/faq.md:372 +#: ../../../docs/faq.md:369 +#: ../../../docs/faq.md:381 msgid "**Note**: some of the roles (`roles/galaxy/*`) live in separate repositories and are only installed after your run `just roles` (or `make roles`) or `just update` (which automatically does `git pull` and `just roles`)." msgstr "" -#: ../../../docs/faq.md:362 +#: ../../../docs/faq.md:371 msgid "I'd like to adjust some configuration which doesn't have a corresponding variable. How do I do it?" msgstr "" -#: ../../../docs/faq.md:364 +#: ../../../docs/faq.md:373 msgid "The playbook doesn't aim to expose all configuration settings for all services using variables. Doing so would amount to hundreds of variables that we have to create and maintain." msgstr "" -#: ../../../docs/faq.md:366 +#: ../../../docs/faq.md:375 msgid "Instead, we only try to make some important basics configurable using dedicated variables you can see in each role. See [What configuration variables are available?](#what-configuration-variables-are-available)." msgstr "" -#: ../../../docs/faq.md:368 +#: ../../../docs/faq.md:377 msgid "Besides that, each role (component) aims to provide a `matrix_SOME_COMPONENT_configuration_extension_yaml` (or `matrix_SOME_COMPONENT_configuration_extension_json`) variable, which can be used to override the configuration." msgstr "" -#: ../../../docs/faq.md:370 +#: ../../../docs/faq.md:379 msgid "Check each role's `roles/*/*/defaults/main.yml` for the corresponding variable and an example for how use it." msgstr "" -#: ../../../docs/faq.md:374 +#: ../../../docs/faq.md:383 msgid "Installation" msgstr "" -#: ../../../docs/faq.md:376 +#: ../../../docs/faq.md:385 msgid "How do I run the installation?" msgstr "" -#: ../../../docs/faq.md:378 +#: ../../../docs/faq.md:387 msgid "See [Installing](installing.md) to learn how to use Ansible to install Matrix services." msgstr "" -#: ../../../docs/faq.md:380 +#: ../../../docs/faq.md:389 msgid "However, we recommend you to follow our installation guide, instead of jumping straight to installing." msgstr "" -#: ../../../docs/faq.md:382 +#: ../../../docs/faq.md:391 msgid "There are two guides available:" msgstr "" -#: ../../../docs/faq.md:384 +#: ../../../docs/faq.md:393 msgid "⚡ **[Quick start](quick-start.md)** (for beginners): this is recommended for those who do not have an existing Matrix server and want to start quickly with \"opinionated defaults\"." msgstr "" -#: ../../../docs/faq.md:386 +#: ../../../docs/faq.md:395 msgid "**Full installation guide (for advanced users)**: if you need to import an existing Matrix server's data into the new server or want to learn more while setting up the server, follow this guide by starting with the **[Prerequisites](prerequisites.md)** documentation page." msgstr "" -#: ../../../docs/faq.md:388 +#: ../../../docs/faq.md:397 msgid "I installed Synapse some other way. Can I migrate such a setup to the playbook?" msgstr "" -#: ../../../docs/faq.md:390 +#: ../../../docs/faq.md:399 msgid "Yes, you can." msgstr "" -#: ../../../docs/faq.md:392 +#: ../../../docs/faq.md:401 msgid "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." msgstr "" -#: ../../../docs/faq.md:394 +#: ../../../docs/faq.md:403 msgid "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)" msgstr "" -#: ../../../docs/faq.md:396 +#: ../../../docs/faq.md:405 msgid "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)." msgstr "" -#: ../../../docs/faq.md:398 +#: ../../../docs/faq.md:407 msgid "I've downloaded Ansible and the playbook on the server. It can't connect using SSH." msgstr "" -#: ../../../docs/faq.md:400 +#: ../../../docs/faq.md:409 msgid "If you're using the playbook directly on the server, then Ansible doesn't need to connect using SSH." msgstr "" -#: ../../../docs/faq.md:402 +#: ../../../docs/faq.md:411 msgid "It can perform a local connection instead. Just set `ansible_connection=local` at the end of the server line in `inventory/hosts` and re-run the playbook." msgstr "" -#: ../../../docs/faq.md:404 +#: ../../../docs/faq.md:413 msgid "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." msgstr "" -#: ../../../docs/faq.md:406 -msgid "Troubleshooting" -msgstr "" - -#: ../../../docs/faq.md:408 -msgid "I get \"Error response from daemon: configured logging driver does not support reading\" when I do `docker logs matrix-synapse`." -msgstr "" - -#: ../../../docs/faq.md:410 -msgid "See [How can I see the logs?](#how-can-i-see-the-logs)." -msgstr "" - -#: ../../../docs/faq.md:412 -msgid "How can I see the logs?" -msgstr "" - -#: ../../../docs/faq.md:414 -msgid "We utilize [systemd/journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html#Description) for logging." -msgstr "" - -#: ../../../docs/faq.md:416 -msgid "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)." -msgstr "" - -#: ../../../docs/faq.md:418 -msgid "Available service names can be seen by doing `ls /etc/systemd/system/matrix*.service` on the server." -msgstr "" - -#: ../../../docs/faq.md:420 -msgid "Some services also log to files in `/matrix/*/data/..`, but we're slowly moving away from that." -msgstr "" - -#: ../../../docs/faq.md:422 -msgid "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." +#: ../../../docs/faq.md:415 +msgid "Maintenance and Troubleshooting" msgstr "" -#: ../../../docs/faq.md:424 -msgid "We just simply delegate logging to journald and it takes care of persistence and expiring old data." +#: ../../../docs/faq.md:417 +msgid "💡 Also see this page for generic information about maintaining the services and troubleshooting: [Maintenance and Troubleshooting](maintenance-and-troubleshooting.md)" msgstr "" -#: ../../../docs/faq.md:426 -msgid "Also see: [How long do systemd/journald logs persist for?](#how-long-do-systemdjournald-logs-persist-for)" -msgstr "" - -#: ../../../docs/faq.md:428 -msgid "How long do systemd/journald logs persist for?" -msgstr "" - -#: ../../../docs/faq.md:430 -msgid "On some distros, the journald logs are just in-memory and not persisted to disk." -msgstr "" - -#: ../../../docs/faq.md:432 -msgid "Consult (and feel free to adjust) your distro's journald logging configuration in `/etc/systemd/journald.conf`." -msgstr "" - -#: ../../../docs/faq.md:434 -msgid "To enable persistence and put some limits on how large the journal log files can become, adjust your configuration like this:" -msgstr "" - -#: ../../../docs/faq.md:445 -msgid "Maintenance" -msgstr "" - -#: ../../../docs/faq.md:447 +#: ../../../docs/faq.md:419 msgid "Do I need to do anything to keep my Matrix server updated?" msgstr "" -#: ../../../docs/faq.md:449 +#: ../../../docs/faq.md:421 msgid "Yes. We don't update anything for you automatically." msgstr "" -#: ../../../docs/faq.md:451 +#: ../../../docs/faq.md:423 msgid "See our [documentation page about upgrading services](maintenance-upgrading-services.md)." msgstr "" -#: ../../../docs/faq.md:453 +#: ../../../docs/faq.md:425 msgid "How do I move my existing installation to another (VM) server?" msgstr "" -#: ../../../docs/faq.md:455 -msgid "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)." +#: ../../../docs/faq.md:427 +msgid "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)." msgstr "" -#: ../../../docs/faq.md:457 +#: ../../../docs/faq.md:429 msgid "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)." msgstr "" -#: ../../../docs/faq.md:459 -msgid "How do I back up the data on my server?" -msgstr "" - -#: ../../../docs/faq.md:461 -msgid "We haven't documented this properly yet, but the general advice is to:" -msgstr "" - -#: ../../../docs/faq.md:463 -msgid "back up Postgres by making a database dump. See [Backing up PostgreSQL](maintenance-postgres.md#backing-up-postgresql)" -msgstr "" - -#: ../../../docs/faq.md:465 -msgid "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))." -msgstr "" - -#: ../../../docs/faq.md:467 -msgid "You can later restore these by:" -msgstr "" - -#: ../../../docs/faq.md:469 -msgid "Restoring the `/matrix` directory and files on the new server manually" -msgstr "" - -#: ../../../docs/faq.md:470 -msgid "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)" -msgstr "" - -#: ../../../docs/faq.md:472 -msgid "If your server's IP address has changed, you may need to [set up DNS](configuring-dns.md) again." -msgstr "" - -#: ../../../docs/faq.md:474 +#: ../../../docs/faq.md:431 msgid "What is this `/matrix/postgres/data-auto-upgrade-backup` directory that is taking up so much space?" msgstr "" -#: ../../../docs/faq.md:476 +#: ../../../docs/faq.md:433 msgid "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." msgstr "" -#: ../../../docs/faq.md:478 +#: ../../../docs/faq.md:435 msgid "After verifying that everything still works after the Postgres upgrade, you can safely delete `/matrix/postgres/data-auto-upgrade-backup`" msgstr "" -#: ../../../docs/faq.md:480 -msgid "How do I debug or force SSL certificate renewal?" +#: ../../../docs/faq.md:437 +msgid "I get \"Error response from daemon: configured logging driver does not support reading\" when I run `docker logs matrix-synapse`. Why?" msgstr "" -#: ../../../docs/faq.md:482 -msgid "SSL certificates are managed automatically by the [Traefik](https://doc.traefik.io/traefik/) reverse-proxy server." +#: ../../../docs/faq.md:439 +msgid "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-*`." msgstr "" -#: ../../../docs/faq.md:484 -msgid "If you're having trouble with SSL certificate renewal, check the Traefik logs (`journalctl -fu matrix-traefik`)." +#: ../../../docs/faq.md:441 +msgid "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." msgstr "" -#: ../../../docs/faq.md:486 -msgid "If you're [using your own webserver](configuring-playbook-own-webserver.md) instead of the integrated one (Traefik), you should investigate in another way." -msgstr "" - -#: ../../../docs/faq.md:488 +#: ../../../docs/faq.md:443 msgid "Miscellaneous" msgstr "" -#: ../../../docs/faq.md:490 +#: ../../../docs/faq.md:445 msgid "I would like to see this favorite service of mine integrated and become available on my Matrix server. How can I request it?" msgstr "" -#: ../../../docs/faq.md:492 -msgid "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." +#: ../../../docs/faq.md:447 +msgid "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." msgstr "" -#: ../../../docs/faq.md:494 +#: ../../../docs/faq.md:449 msgid "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." msgstr "" diff --git a/i18n/translation-templates/docs/getting-the-playbook.pot b/i18n/translation-templates/docs/getting-the-playbook.pot index 8138929a9..efbf72c2d 100644 --- a/i18n/translation-templates/docs/getting-the-playbook.pot +++ b/i18n/translation-templates/docs/getting-the-playbook.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,66 +16,66 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/getting-the-playbook.md:1 +#: ../../../docs/getting-the-playbook.md:8 msgid "Getting the playbook" msgstr "" -#: ../../../docs/getting-the-playbook.md:3 -msgid "[Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > Getting the playbook > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md)" +#: ../../../docs/getting-the-playbook.md:10 +msgid "[Prerequisites](prerequisites.md) > [Configuring DNS settings](configuring-dns.md) > Getting the playbook > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md)" msgstr "" -#: ../../../docs/getting-the-playbook.md:5 +#: ../../../docs/getting-the-playbook.md:12 msgid "This Ansible playbook is meant to be executed on your own computer (not the Matrix server)." msgstr "" -#: ../../../docs/getting-the-playbook.md:7 +#: ../../../docs/getting-the-playbook.md:14 msgid "In special cases (if your computer cannot run Ansible, etc.) you may put the playbook on the server as well." msgstr "" -#: ../../../docs/getting-the-playbook.md:9 +#: ../../../docs/getting-the-playbook.md:16 msgid "You can retrieve the playbook's source code by:" msgstr "" -#: ../../../docs/getting-the-playbook.md:11 +#: ../../../docs/getting-the-playbook.md:17 msgid "[Using git to get the playbook](#using-git-to-get-the-playbook) (recommended)" msgstr "" -#: ../../../docs/getting-the-playbook.md:13 +#: ../../../docs/getting-the-playbook.md:18 msgid "[Downloading the playbook as a ZIP archive](#downloading-the-playbook-as-a-zip-archive) (not recommended)" msgstr "" -#: ../../../docs/getting-the-playbook.md:15 +#: ../../../docs/getting-the-playbook.md:20 msgid "Using git to get the playbook" msgstr "" -#: ../../../docs/getting-the-playbook.md:17 +#: ../../../docs/getting-the-playbook.md:22 msgid "We recommend using the [git](https://git-scm.com/) tool to get the playbook's source code, because it lets you easily keep up to date in the future when [Maintaining services](maintenance-upgrading-services.md)." msgstr "" -#: ../../../docs/getting-the-playbook.md:19 +#: ../../../docs/getting-the-playbook.md:24 msgid "Once you've installed git on your computer, you can go to any directory of your choosing and run the following command to retrieve the playbook's source code:" msgstr "" -#: ../../../docs/getting-the-playbook.md:25 +#: ../../../docs/getting-the-playbook.md:30 msgid "This will create a new `matrix-docker-ansible-deploy` directory. You're supposed to execute all other installation commands inside that directory." msgstr "" -#: ../../../docs/getting-the-playbook.md:27 +#: ../../../docs/getting-the-playbook.md:32 msgid "Downloading the playbook as a ZIP archive" msgstr "" -#: ../../../docs/getting-the-playbook.md:29 +#: ../../../docs/getting-the-playbook.md:34 msgid "Alternatively, you can download the playbook as a ZIP archive. This is not recommended, as it's not easy to keep up to date with future updates. We suggest you [use git](#using-git-to-get-the-playbook) instead." msgstr "" -#: ../../../docs/getting-the-playbook.md:31 +#: ../../../docs/getting-the-playbook.md:36 msgid "The latest version is always at the following URL: https://github.com/spantaleev/matrix-docker-ansible-deploy/archive/master.zip" msgstr "" -#: ../../../docs/getting-the-playbook.md:33 +#: ../../../docs/getting-the-playbook.md:38 msgid "You can extract this archive anywhere. You'll get a directory called `matrix-docker-ansible-deploy-master`. You're supposed to execute all other installation commands inside that directory." msgstr "" -#: ../../../docs/getting-the-playbook.md:37 +#: ../../../docs/getting-the-playbook.md:42 msgid "[▶️](configuring-playbook.md) No matter which method you've used to download the playbook, you can proceed by [Configuring the playbook](configuring-playbook.md)." msgstr "" diff --git a/i18n/translation-templates/docs/howto-server-delegation.pot b/i18n/translation-templates/docs/howto-server-delegation.pot index 0808068c2..bf6c553df 100644 --- a/i18n/translation-templates/docs/howto-server-delegation.pot +++ b/i18n/translation-templates/docs/howto-server-delegation.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,170 +16,170 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/howto-server-delegation.md:1 +#: ../../../docs/howto-server-delegation.md:13 msgid "Server Delegation" msgstr "" -#: ../../../docs/howto-server-delegation.md:3 +#: ../../../docs/howto-server-delegation.md:15 msgid "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." msgstr "" -#: ../../../docs/howto-server-delegation.md:5 +#: ../../../docs/howto-server-delegation.md:17 msgid "Server delegation can be configured in either of these ways:" msgstr "" -#: ../../../docs/howto-server-delegation.md:7 +#: ../../../docs/howto-server-delegation.md:19 msgid "[Setting up a `/.well-known/matrix/server` file](#server-delegation-via-a-well-known-file) on the base domain (`example.com`)" msgstr "" -#: ../../../docs/howto-server-delegation.md:8 +#: ../../../docs/howto-server-delegation.md:20 msgid "[Setting up a `_matrix._tcp` DNS SRV record](#server-delegation-via-a-dns-srv-record-advanced)" msgstr "" -#: ../../../docs/howto-server-delegation.md:10 +#: ../../../docs/howto-server-delegation.md:22 msgid "Both methods have their place and will continue to do so. You only need to use just one of these delegation methods." msgstr "" -#: ../../../docs/howto-server-delegation.md:12 +#: ../../../docs/howto-server-delegation.md:24 msgid "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." msgstr "" -#: ../../../docs/howto-server-delegation.md:14 +#: ../../../docs/howto-server-delegation.md:26 msgid "**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." msgstr "" -#: ../../../docs/howto-server-delegation.md:16 +#: ../../../docs/howto-server-delegation.md:28 msgid "Server Delegation via a well-known file" msgstr "" -#: ../../../docs/howto-server-delegation.md:18 +#: ../../../docs/howto-server-delegation.md:30 msgid "This playbook recommends you to set up server delegation by means of a `/.well-known/matrix/server` file served from the base domain (`example.com`), as this is the most straightforward way to set up the delegation." msgstr "" -#: ../../../docs/howto-server-delegation.md:20 +#: ../../../docs/howto-server-delegation.md:32 msgid "To configure server delegation with the well-known file, check this section on [Configuring Service Discovery via .well-known](configuring-well-known.md): [Installing well-known files on the base domain's server](configuring-well-known.md#installing-well-known-files-on-the-base-domain-s-server)" msgstr "" -#: ../../../docs/howto-server-delegation.md:22 +#: ../../../docs/howto-server-delegation.md:34 msgid "Downsides of well-known-based Server Delegation" msgstr "" -#: ../../../docs/howto-server-delegation.md:24 +#: ../../../docs/howto-server-delegation.md:36 msgid "Server Delegation by means of a `/.well-known/matrix/server` file is the most straightforward, but suffers from the following downsides:" msgstr "" -#: ../../../docs/howto-server-delegation.md:26 +#: ../../../docs/howto-server-delegation.md:38 msgid "you need to have a working HTTPS server for the base domain (`example.com`). If you don't have any server for the base domain at all, you can easily solve it by making the playbook [serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md)." msgstr "" -#: ../../../docs/howto-server-delegation.md:28 +#: ../../../docs/howto-server-delegation.md:40 msgid "any downtime on the base domain (`example.com`) or network trouble between the Matrix subdomain (`matrix.example.com`) and the base `example.com` may cause Matrix Federation outages. As the [Server-Server spec says](https://matrix.org/docs/spec/server_server/r0.1.0.html#server-discovery):" msgstr "" -#: ../../../docs/howto-server-delegation.md:30 +#: ../../../docs/howto-server-delegation.md:42 msgid "Errors are recommended to be cached for up to an hour, and servers are encouraged to exponentially back off for repeated failures." msgstr "" -#: ../../../docs/howto-server-delegation.md:32 +#: ../../../docs/howto-server-delegation.md:44 msgid "**For most people, this is a reasonable tradeoff** given that it's easy and straightforward to set up. We recommend you stay on this path." msgstr "" -#: ../../../docs/howto-server-delegation.md:34 +#: ../../../docs/howto-server-delegation.md:46 msgid "Otherwise, you can decide to go against the default for this playbook, and instead set up [Server Delegation via a DNS SRV record (advanced)](#server-delegation-via-a-dns-srv-record-advanced) (much more complicated)." msgstr "" -#: ../../../docs/howto-server-delegation.md:36 +#: ../../../docs/howto-server-delegation.md:48 msgid "Server Delegation via a DNS SRV record (advanced)" msgstr "" -#: ../../../docs/howto-server-delegation.md:38 +#: ../../../docs/howto-server-delegation.md:50 msgid "**Note**: doing Server Delegation via a DNS SRV record is a more **advanced** way to do it and is not the default for this playbook. This is usually **much more complicated** to set up, so **we don't recommend it**. If you're not an experienced sysadmin, you'd better stay away from this." msgstr "" -#: ../../../docs/howto-server-delegation.md:40 +#: ../../../docs/howto-server-delegation.md:52 msgid "As per the [Server-Server spec](https://matrix.org/docs/spec/server_server/r0.1.0.html#server-discovery), it's possible to do Server Delegation using only a SRV record (without a `/.well-known/matrix/server` file)." msgstr "" -#: ../../../docs/howto-server-delegation.md:42 +#: ../../../docs/howto-server-delegation.md:54 msgid "This prevents you from suffering the [Downsides of well-known-based Server Delegation](#downsides-of-well-known-based-server-delegation)." msgstr "" -#: ../../../docs/howto-server-delegation.md:44 +#: ../../../docs/howto-server-delegation.md:56 msgid "To use DNS SRV record validation, you need to:" msgstr "" -#: ../../../docs/howto-server-delegation.md:46 +#: ../../../docs/howto-server-delegation.md:58 msgid "ensure that `/.well-known/matrix/server` is **not served** from the base domain, as that would interfere with DNS SRV record Server Delegation. To make the playbook **not** generate and serve the file, use the following configuration: `matrix_static_files_file_matrix_server_enabled: false`." msgstr "" -#: ../../../docs/howto-server-delegation.md:48 +#: ../../../docs/howto-server-delegation.md:60 msgid "ensure that you have a `_matrix._tcp` DNS SRV record for your base domain (`example.com`) with a value of `10 0 8448 matrix.example.com`" msgstr "" -#: ../../../docs/howto-server-delegation.md:50 +#: ../../../docs/howto-server-delegation.md:62 msgid "ensure that you are serving the Matrix Federation API (tcp/8448) with a certificate for `example.com` (not `matrix.example.com`!). Getting this certificate to the `matrix.example.com` server may be complicated. The playbook's automatic SSL obtaining/renewal flow will likely not work and you'll need to copy certificates around manually. See below." msgstr "" -#: ../../../docs/howto-server-delegation.md:52 +#: ../../../docs/howto-server-delegation.md:64 msgid "For more details on how to configure the playbook to work with SRV delegation, take a look at this documentation: [Server Delegation via a DNS SRV record (advanced)](howto-srv-server-delegation.md)" msgstr "" -#: ../../../docs/howto-server-delegation.md:54 +#: ../../../docs/howto-server-delegation.md:66 msgid "Obtain certificates" msgstr "" -#: ../../../docs/howto-server-delegation.md:56 +#: ../../../docs/howto-server-delegation.md:68 msgid "How you can obtain a valid certificate for `example.com` on the `matrix.example.com` server is up to you." msgstr "" -#: ../../../docs/howto-server-delegation.md:58 +#: ../../../docs/howto-server-delegation.md:70 msgid "If `example.com` and `matrix.example.com` are hosted on the same machine, you can let the playbook obtain the certificate for you, by following our [Obtaining SSL certificates for additional domains](configuring-playbook-ssl-certificates.md#obtaining-ssl-certificates-for-additional-domains) guide." msgstr "" -#: ../../../docs/howto-server-delegation.md:60 +#: ../../../docs/howto-server-delegation.md:72 msgid "If `example.com` and `matrix.example.com` are not hosted on the same machine, you can copy over the certificate files manually. Don't forget that they may get renewed once in a while, so you may also have to transfer them periodically. How often you do that is up to you, as long as the certificate files don't expire." msgstr "" -#: ../../../docs/howto-server-delegation.md:62 +#: ../../../docs/howto-server-delegation.md:74 msgid "Serving the Federation API with your certificates" msgstr "" -#: ../../../docs/howto-server-delegation.md:64 +#: ../../../docs/howto-server-delegation.md:76 msgid "Regardless of which method for obtaining certificates you've used, once you've managed to get certificates for your base domain onto the `matrix.example.com` machine you can put them to use." msgstr "" -#: ../../../docs/howto-server-delegation.md:66 +#: ../../../docs/howto-server-delegation.md:78 msgid "Based on your setup, you have different ways to go about it:" msgstr "" -#: ../../../docs/howto-server-delegation.md:68 +#: ../../../docs/howto-server-delegation.md:80 msgid "Serving the Federation API with your certificates and Synapse handling Federation" msgstr "" -#: ../../../docs/howto-server-delegation.md:70 +#: ../../../docs/howto-server-delegation.md:82 msgid "You can let Synapse handle Federation by itself." msgstr "" -#: ../../../docs/howto-server-delegation.md:72 +#: ../../../docs/howto-server-delegation.md:84 msgid "To do that, make sure the certificate files are mounted into the Synapse container:" msgstr "" -#: ../../../docs/howto-server-delegation.md:79 +#: ../../../docs/howto-server-delegation.md:91 msgid "You can then tell Synapse to serve Federation traffic over TLS on `tcp/8448`:" msgstr "" -#: ../../../docs/howto-server-delegation.md:87 +#: ../../../docs/howto-server-delegation.md:99 msgid "Make sure to reload Synapse once in a while (`systemctl reload matrix-synapse`), so that newer certificates can kick in. Reloading doesn't cause any downtime." msgstr "" -#: ../../../docs/howto-server-delegation.md:89 +#: ../../../docs/howto-server-delegation.md:101 msgid "Serving the Federation API with your certificates and another webserver" msgstr "" -#: ../../../docs/howto-server-delegation.md:91 +#: ../../../docs/howto-server-delegation.md:103 msgid "**Alternatively**, if you are using another webserver, you can set up reverse-proxying for the `tcp/8448` port by yourself. Make sure to use the proper certificates for `example.com` (not for `matrix.example.com`) when serving the `tcp/8448` port." msgstr "" -#: ../../../docs/howto-server-delegation.md:93 +#: ../../../docs/howto-server-delegation.md:105 msgid "As recommended in our [Fronting the integrated reverse-proxy webserver with another reverse-proxy](./configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) documentation section, we recommend you to expose the Matrix Federation entrypoint from traffic at a local port (e.g. `127.0.0.1:8449`), so your reverese-proxy should send traffic there." msgstr "" diff --git a/i18n/translation-templates/docs/howto-srv-server-delegation.pot b/i18n/translation-templates/docs/howto-srv-server-delegation.pot index 62abff6ab..ad6e307a3 100644 --- a/i18n/translation-templates/docs/howto-srv-server-delegation.pot +++ b/i18n/translation-templates/docs/howto-srv-server-delegation.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,130 +16,130 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/howto-srv-server-delegation.md:1 +#: ../../../docs/howto-srv-server-delegation.md:9 msgid "Server Delegation via a DNS SRV record (advanced)" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:3 +#: ../../../docs/howto-srv-server-delegation.md:11 msgid "**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." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:5 +#: ../../../docs/howto-srv-server-delegation.md:13 msgid "This guide is about configuring Server Delegation using DNS SRV records (for the [Traefik](https://doc.traefik.io/traefik/) webserver). This method has special requirements when it comes to SSL certificates, so various changes are required." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:7 +#: ../../../docs/howto-srv-server-delegation.md:15 msgid "Prerequisites" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:9 +#: ../../../docs/howto-srv-server-delegation.md:17 msgid "SRV delegation while still using the playbook provided Traefik to get / renew the certificate requires a wildcard certificate." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:11 +#: ../../../docs/howto-srv-server-delegation.md:19 msgid "To obtain / renew one from [Let's Encrypt](https://letsencrypt.org/), one needs to use a [DNS-01 challenge](https://letsencrypt.org/docs/challenge-types/#dns-01-challenge) method instead of the default [HTTP-01](https://letsencrypt.org/docs/challenge-types/#http-01-challenge)." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:13 +#: ../../../docs/howto-srv-server-delegation.md:21 msgid "This means that this is **limited to the list of DNS providers supported by Traefik**, unless you bring in your own certificate." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:15 +#: ../../../docs/howto-srv-server-delegation.md:23 msgid "The up-to-date list can be accessed on [traefik's documentation](https://doc.traefik.io/traefik/https/acme/#providers)" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:17 +#: ../../../docs/howto-srv-server-delegation.md:25 msgid "Adjusting the playbook configuration" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:19 +#: ../../../docs/howto-srv-server-delegation.md:27 msgid "**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:" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:21 -msgid "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))" +#: ../../../docs/howto-srv-server-delegation.md:29 +msgid "if you're using another homeserver implementation (e.g. [Conduit](./configuring-playbook-conduit.md), [conduwuit](./configuring-playbook-conduwuit.md), [continuwuity](./configuring-playbook-continuwuity.md) or [Dendrite](./configuring-playbook-dendrite.md))" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:22 +#: ../../../docs/howto-srv-server-delegation.md:30 msgid "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" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:24 +#: ../../../docs/howto-srv-server-delegation.md:32 msgid "Also, all instructions below are from an older version of the playbook and may not work anymore." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:26 +#: ../../../docs/howto-srv-server-delegation.md:34 msgid "Federation Endpoint" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:33 +#: ../../../docs/howto-srv-server-delegation.md:41 msgid "This is because with SRV federation, some servers / tools (one of which being the federation tester) try to access the federation API using the resolved IP address instead of the domain name (or they are not using SNI). This change will make Traefik route all traffic for which the path match this rule go to the federation endpoint." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:35 +#: ../../../docs/howto-srv-server-delegation.md:43 msgid "Tell Traefik which certificate to serve for the federation endpoint" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:37 -msgid "Now that the federation endpoint is not bound to a domain anymore we need to explicitely tell Traefik to use a wildcard certificate in addition to one containing the base name." +#: ../../../docs/howto-srv-server-delegation.md:45 +msgid "Now that the federation endpoint is not bound to a domain anymore we need to explicitly tell Traefik to use a wildcard certificate in addition to one containing the base name." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:39 +#: ../../../docs/howto-srv-server-delegation.md:47 msgid "This is because the Matrix specification expects the federation endpoint to be served using a certificate compatible with the base domain, however, the other resources on the endpoint still need a valid certificate to work." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:48 +#: ../../../docs/howto-srv-server-delegation.md:56 msgid "Configure the DNS-01 challenge for let's encrypt" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:50 +#: ../../../docs/howto-srv-server-delegation.md:58 msgid "Since we're now requesting a wildcard certificate, we need to change the ACME challenge method. To request a wildcard certificate from Let's Encrypt we are required to use the DNS-01 challenge." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:52 +#: ../../../docs/howto-srv-server-delegation.md:60 msgid "This will need 3 changes:" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:53 +#: ../../../docs/howto-srv-server-delegation.md:61 msgid "Add a new certificate resolver that works with DNS-01" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:54 +#: ../../../docs/howto-srv-server-delegation.md:62 msgid "Configure the resolver to allow access to the DNS zone to configure the records to answer the challenge (refer to [Traefik's documentation](https://doc.traefik.io/traefik/https/acme/#providers) to know which environment variables to set)" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:55 +#: ../../../docs/howto-srv-server-delegation.md:63 msgid "Tell the playbook to use the new resolver as default" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:57 +#: ../../../docs/howto-srv-server-delegation.md:65 msgid "We cannot just disable the default resolver as that would disable SSL in quite a few places in the playbook." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:86 +#: ../../../docs/howto-srv-server-delegation.md:93 msgid "Adjust coturn's configuration" msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:88 +#: ../../../docs/howto-srv-server-delegation.md:95 msgid "The last step is to alter the generated coturn configuration." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:90 +#: ../../../docs/howto-srv-server-delegation.md:97 msgid "By default, coturn is configured to wait on the certificate for the `matrix.` subdomain using an [instantiated systemd service](https://www.freedesktop.org/software/systemd/man/systemd.service.html#Service%20Templates) using the domain name as the parameter for this service. However, we need to serve the wildcard certificate, which is incompatible with systemd, it will try to expand the `*`, which will break and prevent coturn from starting." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:92 +#: ../../../docs/howto-srv-server-delegation.md:99 msgid "We also need to indicate to coturn where the wildcard certificate is." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:94 +#: ../../../docs/howto-srv-server-delegation.md:101 msgid "⚠️ **Warning** : On first start of the services, coturn might still fail to start because Traefik is still in the process of obtaining the certificates. If you still get an error, make sure Traefik obtained the certificates and restart the coturn service (`just start-group coturn`)." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:96 +#: ../../../docs/howto-srv-server-delegation.md:103 msgid "This should not happen again afterwards as Traefik will renew certificates well before their expiry date, and the coturn service is setup to restart periodically." msgstr "" -#: ../../../docs/howto-srv-server-delegation.md:122 +#: ../../../docs/howto-srv-server-delegation.md:129 msgid "Full example of a working configuration" msgstr "" diff --git a/i18n/translation-templates/docs/importing-postgres.pot b/i18n/translation-templates/docs/importing-postgres.pot index 7f1432e78..5300ac6ee 100644 --- a/i18n/translation-templates/docs/importing-postgres.pot +++ b/i18n/translation-templates/docs/importing-postgres.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,130 +16,139 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/importing-postgres.md:1 +#: ../../../docs/importing-postgres.md:10 msgid "Importing an existing Postgres database from another installation (optional)" msgstr "" -#: ../../../docs/importing-postgres.md:3 -msgid "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))." +#: ../../../docs/importing-postgres.md:12 +msgid "You can manually import your database from a previous default installation of Synapse." +msgstr "" + +#: ../../../docs/importing-postgres.md:14 +#: ../../../docs/importing-postgres.md:38 +msgid "**Notes**:" +msgstr "" + +#: ../../../docs/importing-postgres.md:15 +msgid "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." msgstr "" -#: ../../../docs/importing-postgres.md:6 +#: ../../../docs/importing-postgres.md:16 +msgid "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)." +msgstr "" + +#: ../../../docs/importing-postgres.md:18 msgid "Prerequisites" msgstr "" -#: ../../../docs/importing-postgres.md:8 +#: ../../../docs/importing-postgres.md:20 msgid "For this to work, **the database name in Postgres must match** what this playbook uses. This playbook uses a Postgres database name of `synapse` by default (controlled by the `matrix_synapse_database_database` variable). If your database name differs, be sure to change `matrix_synapse_database_database` to your desired name and to re-run the playbook before proceeding." msgstr "" -#: ../../../docs/importing-postgres.md:10 +#: ../../../docs/importing-postgres.md:22 msgid "The playbook supports importing Postgres dump files in **text** (e.g. `pg_dump > dump.sql`) or **gzipped** formats (e.g. `pg_dump | gzip -c > dump.sql.gz`). Importing multiple databases (as dumped by `pg_dumpall`) is also supported." msgstr "" -#: ../../../docs/importing-postgres.md:12 +#: ../../../docs/importing-postgres.md:24 msgid "The migration might be a good moment, to \"reset\" a not properly working bridge. Be aware, that it might affect all users (new link to bridge, new rooms, …)" msgstr "" -#: ../../../docs/importing-postgres.md:14 +#: ../../../docs/importing-postgres.md:26 msgid "Before doing the actual import, **you need to upload your Postgres dump file to the server** (any path is okay)." msgstr "" -#: ../../../docs/importing-postgres.md:16 +#: ../../../docs/importing-postgres.md:28 msgid "Importing" msgstr "" -#: ../../../docs/importing-postgres.md:18 +#: ../../../docs/importing-postgres.md:30 msgid "To import, run this command (make sure to replace `SERVER_PATH_TO_POSTGRES_DUMP_FILE` with a file path on your server):" msgstr "" -#: ../../../docs/importing-postgres.md:26 -msgid "**Notes**:" -msgstr "" - -#: ../../../docs/importing-postgres.md:28 +#: ../../../docs/importing-postgres.md:40 msgid "`SERVER_PATH_TO_POSTGRES_DUMP_FILE` must be a file path to a Postgres dump file on the server (not on your local machine!)" msgstr "" -#: ../../../docs/importing-postgres.md:29 +#: ../../../docs/importing-postgres.md:41 msgid "`postgres_default_import_database` defaults to `matrix`, which is useful for importing multiple databases (for dumps made with `pg_dumpall`). If you're importing a single database (e.g. `synapse`), consider changing `postgres_default_import_database` accordingly" msgstr "" -#: ../../../docs/importing-postgres.md:30 +#: ../../../docs/importing-postgres.md:42 msgid "after importing a large database, it's a good idea to run [an `ANALYZE` operation](https://www.postgresql.org/docs/current/sql-analyze.html) to make Postgres rebuild its database statistics and optimize its query planner. You can easily do this via the playbook by running `just run-tags run-postgres-vacuum -e postgres_vacuum_preset=analyze` (see [Vacuuming PostgreSQL](maintenance-postgres.md#vacuuming-postgresql) for more details)." msgstr "" -#: ../../../docs/importing-postgres.md:32 +#: ../../../docs/importing-postgres.md:44 msgid "Troubleshooting" msgstr "" -#: ../../../docs/importing-postgres.md:34 +#: ../../../docs/importing-postgres.md:46 msgid "Table Ownership" msgstr "" -#: ../../../docs/importing-postgres.md:36 +#: ../../../docs/importing-postgres.md:48 msgid "A table ownership issue can occur if you are importing from a Synapse installation which was both:" msgstr "" -#: ../../../docs/importing-postgres.md:38 +#: ../../../docs/importing-postgres.md:50 msgid "migrated from SQLite to Postgres, and" msgstr "" -#: ../../../docs/importing-postgres.md:39 +#: ../../../docs/importing-postgres.md:51 msgid "used a username other than 'synapse'" msgstr "" -#: ../../../docs/importing-postgres.md:41 +#: ../../../docs/importing-postgres.md:53 msgid "In this case you may run into the following error during the import task:" msgstr "" -#: ../../../docs/importing-postgres.md:47 +#: ../../../docs/importing-postgres.md:59 msgid "where `synapse_user` is the database username from the previous Synapse installation." msgstr "" -#: ../../../docs/importing-postgres.md:49 +#: ../../../docs/importing-postgres.md:61 msgid "This can be verified by examining the dump for ALTER TABLE statements which set OWNER TO that username:" msgstr "" -#: ../../../docs/importing-postgres.md:61 +#: ../../../docs/importing-postgres.md:73 msgid "It can be worked around by changing the username to `synapse`, for example by using `sed`:" msgstr "" -#: ../../../docs/importing-postgres.md:67 +#: ../../../docs/importing-postgres.md:79 msgid "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." msgstr "" -#: ../../../docs/importing-postgres.md:69 +#: ../../../docs/importing-postgres.md:81 msgid "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:" msgstr "" -#: ../../../docs/importing-postgres.md:75 +#: ../../../docs/importing-postgres.md:87 msgid "Repeat import" msgstr "" -#: ../../../docs/importing-postgres.md:77 +#: ../../../docs/importing-postgres.md:89 msgid "In this case you can use the command suggested in the import task to clear the database before retrying the import:" msgstr "" -#: ../../../docs/importing-postgres.md:85 +#: ../../../docs/importing-postgres.md:97 msgid "Now on your local machine run `just run-tags setup-postgres` to prepare the database roles etc." msgstr "" -#: ../../../docs/importing-postgres.md:87 +#: ../../../docs/importing-postgres.md:99 msgid "If not, you probably get this error. `synapse` is the correct table owner, but the role is missing in database." msgstr "" -#: ../../../docs/importing-postgres.md:93 +#: ../../../docs/importing-postgres.md:105 msgid "Once the database is clear and the ownership of the tables has been fixed in the SQL file, the import task should succeed." msgstr "" -#: ../../../docs/importing-postgres.md:95 +#: ../../../docs/importing-postgres.md:107 msgid "Check, if `--dbname` is set to `synapse` (not `matrix`) and replace paths (or even better, copy this line from your terminal)" msgstr "" -#: ../../../docs/importing-postgres.md:101 +#: ../../../docs/importing-postgres.md:113 msgid "Hints" msgstr "" -#: ../../../docs/importing-postgres.md:103 +#: ../../../docs/importing-postgres.md:115 msgid "To open psql terminal run `/matrix/postgres/bin/cli`" msgstr "" diff --git a/i18n/translation-templates/docs/importing-synapse-media-store.pot b/i18n/translation-templates/docs/importing-synapse-media-store.pot index 7a06764e8..66c9190ed 100644 --- a/i18n/translation-templates/docs/importing-synapse-media-store.pot +++ b/i18n/translation-templates/docs/importing-synapse-media-store.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,42 +16,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/importing-synapse-media-store.md:1 +#: ../../../docs/importing-synapse-media-store.md:8 msgid "Importing `media_store` data files from an existing Synapse installation (optional)" msgstr "" -#: ../../../docs/importing-synapse-media-store.md:3 -msgid "Run this if you'd like to import your `media_store` files from a previous installation of Synapse." +#: ../../../docs/importing-synapse-media-store.md:10 +msgid "You can manually import your `media_store` files from a previous installation of Synapse." msgstr "" -#: ../../../docs/importing-synapse-media-store.md:5 +#: ../../../docs/importing-synapse-media-store.md:12 msgid "Prerequisites" msgstr "" -#: ../../../docs/importing-synapse-media-store.md:7 +#: ../../../docs/importing-synapse-media-store.md:14 msgid "Before doing the actual data restore, **you need to upload your media store directory to the server** (any path is okay)." msgstr "" -#: ../../../docs/importing-synapse-media-store.md:9 +#: ../../../docs/importing-synapse-media-store.md:16 msgid "If you are [storing Matrix media files on Amazon S3](configuring-playbook-s3.md) (optional), restoring with this tool is not possible right now." msgstr "" -#: ../../../docs/importing-synapse-media-store.md:11 +#: ../../../docs/importing-synapse-media-store.md:18 msgid "As an alternative, you can perform a manual restore using the [AWS CLI tool](https://aws.amazon.com/cli/) (e.g. `aws s3 sync /path/to/server/media_store/. s3://name-of-bucket/`)" msgstr "" -#: ../../../docs/importing-synapse-media-store.md:13 +#: ../../../docs/importing-synapse-media-store.md:20 msgid "**Note for Mac users**: Due to case-sensitivity issues on certain Mac filesystems (HFS or HFS+), filename corruption may occur if you copy a `media_store` directory to your Mac. If you're transferring a `media_store` directory between 2 servers, make sure you do it directly (from server to server with a tool such as [rsync](https://rsync.samba.org/)), and not by downloading the files to your Mac." msgstr "" -#: ../../../docs/importing-synapse-media-store.md:15 +#: ../../../docs/importing-synapse-media-store.md:22 msgid "Importing" msgstr "" -#: ../../../docs/importing-synapse-media-store.md:17 +#: ../../../docs/importing-synapse-media-store.md:24 msgid "Run this command (make sure to replace `` with a path on your server):" msgstr "" -#: ../../../docs/importing-synapse-media-store.md:23 +#: ../../../docs/importing-synapse-media-store.md:30 msgid "**Note**: `` must be a file path to a `media_store` directory on the server (not on your local machine!)." msgstr "" diff --git a/i18n/translation-templates/docs/importing-synapse-sqlite.pot b/i18n/translation-templates/docs/importing-synapse-sqlite.pot index 93ddd975e..0c94e9fbf 100644 --- a/i18n/translation-templates/docs/importing-synapse-sqlite.pot +++ b/i18n/translation-templates/docs/importing-synapse-sqlite.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,58 +16,62 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/importing-synapse-sqlite.md:1 +#: ../../../docs/importing-synapse-sqlite.md:9 msgid "Importing an existing SQLite database from another Synapse installation (optional)" msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:3 -msgid "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))." +#: ../../../docs/importing-synapse-sqlite.md:11 +msgid "You can manually import your database from a previous default installation of Synapse." msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:5 +#: ../../../docs/importing-synapse-sqlite.md:13 msgid "While this playbook only supports running Synapse in combination with PostgreSQL, a Synapse instance installed manually usually defaults to using an SQLite database." msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:7 +#: ../../../docs/importing-synapse-sqlite.md:15 msgid "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." msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:9 +#: ../../../docs/importing-synapse-sqlite.md:17 +msgid "**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." +msgstr "" + +#: ../../../docs/importing-synapse-sqlite.md:19 msgid "Prerequisites" msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:11 +#: ../../../docs/importing-synapse-sqlite.md:21 msgid "Before doing the actual import:" msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:13 +#: ../../../docs/importing-synapse-sqlite.md:23 msgid "**ensure you have NOT started Synapse yet**. That is, make sure you have followed the [Installing step](installing.md), but haven't run the playbook's `start` tag yet. If you had started your new Synapse instance, it may have already initialized your Postgres database and importing onto it may not work. In such cases, you may need to clean up the `synapse` database first." msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:14 +#: ../../../docs/importing-synapse-sqlite.md:24 msgid "**ensure you have uploaded your SQLite database file to the server** (any path is okay)" msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:15 +#: ../../../docs/importing-synapse-sqlite.md:25 msgid "if you're using the integrated Postgres server (**by default, you are** using it, unless you've explicitly switched to [Using an external PostgreSQL server](configuring-playbook-external-postgres.md)), **make sure Postgres is started** by running `just start-group postgres`" msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:17 +#: ../../../docs/importing-synapse-sqlite.md:27 msgid "Importing" msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:19 +#: ../../../docs/importing-synapse-sqlite.md:29 msgid "Run this command (make sure to replace `` with a file path on your server):" msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:25 +#: ../../../docs/importing-synapse-sqlite.md:35 msgid "**Notes**:" msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:27 +#: ../../../docs/importing-synapse-sqlite.md:37 msgid "`` must be replaced with a file path to a `homeserver.db` **file on the server** (not on your local machine!)." msgstr "" -#: ../../../docs/importing-synapse-sqlite.md:28 +#: ../../../docs/importing-synapse-sqlite.md:38 msgid "if the SQLite database is from an older version of Synapse, the **importing procedure may run migrations on it to bring it up to date**. That is, your SQLite database file may get modified and become unusable with your older Synapse version. Keeping a copy of the original is probably wise." msgstr "" diff --git a/i18n/translation-templates/docs/installing.pot b/i18n/translation-templates/docs/installing.pot index 8dc026129..5ad8d492c 100644 --- a/i18n/translation-templates/docs/installing.pot +++ b/i18n/translation-templates/docs/installing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,286 +16,294 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/installing.md:1 +#: ../../../docs/installing.md:15 msgid "Installing" msgstr "" -#: ../../../docs/installing.md:3 -msgid "[Prerequisites](prerequisites.md) > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > Installing" +#: ../../../docs/installing.md:17 +msgid "[Prerequisites](prerequisites.md) > [Configuring DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > Installing" msgstr "" -#: ../../../docs/installing.md:5 +#: ../../../docs/installing.md:19 msgid "If you've configured your DNS records and the playbook, you can start the installation procedure." msgstr "" -#: ../../../docs/installing.md:7 +#: ../../../docs/installing.md:21 msgid "Update Ansible roles" msgstr "" -#: ../../../docs/installing.md:9 +#: ../../../docs/installing.md:23 msgid "Before installing, you need to update the Ansible roles that this playbook uses and fetches from outside." msgstr "" -#: ../../../docs/installing.md:11 +#: ../../../docs/installing.md:25 msgid "To update your playbook directory and all upstream Ansible roles (defined in the `requirements.yml` file), run:" msgstr "" -#: ../../../docs/installing.md:13 +#: ../../../docs/installing.md:27 msgid "either: `just update`" msgstr "" -#: ../../../docs/installing.md:14 +#: ../../../docs/installing.md:28 msgid "or: a combination of `git pull` and `just roles` (or `make roles` if you have `make` program on your computer instead of `just`)" msgstr "" -#: ../../../docs/installing.md:16 +#: ../../../docs/installing.md:30 msgid "If you don't have either `just` tool or `make` program, you can run the `ansible-galaxy` tool directly: `rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force`" msgstr "" -#: ../../../docs/installing.md:18 +#: ../../../docs/installing.md:32 msgid "For details about `just` commands, take a look at: [Running `just` commands](just.md)." msgstr "" -#: ../../../docs/installing.md:20 +#: ../../../docs/installing.md:34 msgid "Install Matrix server and services" msgstr "" -#: ../../../docs/installing.md:22 +#: ../../../docs/installing.md:36 msgid "The Ansible playbook's tasks are tagged, so that certain parts of the Ansible playbook can be run without running all other tasks." msgstr "" -#: ../../../docs/installing.md:24 +#: ../../../docs/installing.md:38 msgid "The general command syntax for installation (and also maintenance) is: `ansible-playbook -i inventory/hosts setup.yml --tags=COMMA_SEPARATED_TAGS_GO_HERE`. It is recommended to get yourself familiar with the [playbook tags](playbook-tags.md) before proceeding." msgstr "" -#: ../../../docs/installing.md:26 +#: ../../../docs/installing.md:40 msgid "If you **don't** use SSH keys for authentication, but rather a regular password, you may need to add `--ask-pass` to the all Ansible commands." msgstr "" -#: ../../../docs/installing.md:28 +#: ../../../docs/installing.md:42 msgid "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." msgstr "" -#: ../../../docs/installing.md:30 +#: ../../../docs/installing.md:44 msgid "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)." msgstr "" -#: ../../../docs/installing.md:32 +#: ../../../docs/installing.md:46 msgid "**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." msgstr "" -#: ../../../docs/installing.md:34 +#: ../../../docs/installing.md:48 msgid "Installing a brand new server (without importing data)" msgstr "" -#: ../../../docs/installing.md:36 +#: ../../../docs/installing.md:50 msgid "If this is **a brand new** Matrix server and you **won't be importing old data into it**, run all these tags:" msgstr "" -#: ../../../docs/installing.md:42 +#: ../../../docs/installing.md:56 msgid "This will do a full installation and start all Matrix services." msgstr "" -#: ../../../docs/installing.md:44 +#: ../../../docs/installing.md:58 msgid "**Note**: if the command does not work as expected, make sure that you have properly installed and configured software required to run the playbook, as described on [Prerequisites](prerequisites.md)." msgstr "" -#: ../../../docs/installing.md:46 +#: ../../../docs/installing.md:60 msgid "Installing a server into which you'll import old data" msgstr "" -#: ../../../docs/installing.md:48 +#: ../../../docs/installing.md:62 msgid "If you will be importing data into your newly created Matrix server, install it, but **do not** start its services just yet. Starting its services or messing with its database now will affect your data import later on." msgstr "" -#: ../../../docs/installing.md:50 +#: ../../../docs/installing.md:64 msgid "To do the installation **without** starting services, run `ansible-playbook` with the `install-all` tag only:" msgstr "" -#: ../../../docs/installing.md:56 +#: ../../../docs/installing.md:70 msgid "[!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)" msgstr "" -#: ../../../docs/installing.md:59 +#: ../../../docs/installing.md:73 msgid "When this command completes, services won't be running yet." msgstr "" -#: ../../../docs/installing.md:61 +#: ../../../docs/installing.md:75 msgid "You can now:" msgstr "" -#: ../../../docs/installing.md:63 +#: ../../../docs/installing.md:77 msgid "[Importing an existing SQLite database (from another Synapse installation)](importing-synapse-sqlite.md) (optional)" msgstr "" -#: ../../../docs/installing.md:65 +#: ../../../docs/installing.md:79 msgid "[Importing an existing Postgres database (from another installation)](importing-postgres.md) (optional)" msgstr "" -#: ../../../docs/installing.md:67 +#: ../../../docs/installing.md:81 msgid "[Importing `media_store` data files from an existing Synapse installation](importing-synapse-media-store.md) (optional)" msgstr "" -#: ../../../docs/installing.md:69 +#: ../../../docs/installing.md:83 msgid "… and then proceed to starting all services:" msgstr "" -#: ../../../docs/installing.md:75 +#: ../../../docs/installing.md:89 msgid "Create your user account" msgstr "" -#: ../../../docs/installing.md:77 +#: ../../../docs/installing.md:91 msgid "ℹ️ *You can skip this step if you have installed a server and imported old data to it.*" msgstr "" -#: ../../../docs/installing.md:79 +#: ../../../docs/installing.md:93 msgid "As you have configured your brand new server and the client, you need to **create your user account** on your Matrix server." msgstr "" -#: ../../../docs/installing.md:81 +#: ../../../docs/installing.md:95 msgid "After creating the user account, you can log in to it with [Element Web](configuring-playbook-client-element-web.md) that this playbook has installed for you at this URL: `https://element.example.com/`." msgstr "" -#: ../../../docs/installing.md:83 +#: ../../../docs/installing.md:97 msgid "To create your user account (as an administrator of the server) via this Ansible playbook, run the command below on your local computer." msgstr "" -#: ../../../docs/installing.md:85 +#: ../../../docs/installing.md:99 msgid "**Notes**:" msgstr "" -#: ../../../docs/installing.md:86 +#: ../../../docs/installing.md:100 msgid "Make sure to adjust `YOUR_USERNAME_HERE` and `YOUR_PASSWORD_HERE`" msgstr "" -#: ../../../docs/installing.md:87 +#: ../../../docs/installing.md:101 msgid "For `YOUR_USERNAME_HERE`, use a plain username like `alice`, not your full ID (`@alice:example.com`)" msgstr "" -#: ../../../docs/installing.md:88 +#: ../../../docs/installing.md:102 msgid "Use `admin=yes` to make your user account an administrator of the Matrix server" msgstr "" -#: ../../../docs/installing.md:96 +#: ../../../docs/installing.md:110 msgid "Feel free to create as many accounts (for friends, family, etc.) as you want. Still, perhaps you should grant full administrative access to your account only (with `admin=yes`), and others should be created with `admin=no`." msgstr "" -#: ../../../docs/installing.md:98 +#: ../../../docs/installing.md:112 msgid "For more information, see the documentation for [registering users](registering-users.md)." msgstr "" -#: ../../../docs/installing.md:100 +#: ../../../docs/installing.md:114 msgid "Finalize the installation" msgstr "" -#: ../../../docs/installing.md:102 +#: ../../../docs/installing.md:116 msgid "Now you've configured Matrix services and your user account, you need to **finalize the installation process** by [setting up Matrix delegation (redirection)](howto-server-delegation.md), so that your Matrix server (`matrix.example.com`) can present itself as the base domain (`example.com`) in the Matrix network." msgstr "" -#: ../../../docs/installing.md:104 +#: ../../../docs/installing.md:118 msgid "This is required for federation to work! Without a proper configuration, your server will effectively not be part of the Matrix network." msgstr "" -#: ../../../docs/installing.md:106 +#: ../../../docs/installing.md:120 msgid "To configure the delegation, you have these two options. Choose one of them according to your situation." msgstr "" -#: ../../../docs/installing.md:108 +#: ../../../docs/installing.md:122 msgid "If you can afford to point the base domain at the Matrix server, follow the instructions below which guide you into [serving the base domain](configuring-playbook-base-domain-serving.md) from the integrated web server. It will enable you to use a Matrix user ID like `@alice:example.com` while hosting services on a subdomain like `matrix.example.com`." msgstr "" -#: ../../../docs/installing.md:109 +#: ../../../docs/installing.md:123 msgid "Alternatively, if you're using the base domain for other purposes and cannot point it to the Matrix server (and thus cannot \"serve the base domain\" from it), you most likely need to [manually install well-known files on the base domain's server](configuring-well-known.md#manually-installing-well-known-files-on-the-base-domains-server), but feel free to familiarize yourself with all [server delegation (redirection) options](howto-server-delegation.md)." msgstr "" -#: ../../../docs/installing.md:111 +#: ../../../docs/installing.md:125 msgid "To have the base domain served from the integrated web server, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/installing.md:117 +#: ../../../docs/installing.md:131 msgid "After configuring the playbook, run the command below:" msgstr "" -#: ../../../docs/installing.md:123 +#: ../../../docs/installing.md:137 +msgid "**If an error is not returned, the installation has completed and the services have been started successfully**🎉" +msgstr "" + +#: ../../../docs/installing.md:139 msgid "Things to do next" msgstr "" -#: ../../../docs/installing.md:125 -msgid "After finilizing the installation, you can:" +#: ../../../docs/installing.md:141 +msgid "After completing the installation, you can:" msgstr "" -#: ../../../docs/installing.md:127 -msgid "[check if services work](maintenance-checking-services.md)" +#: ../../../docs/installing.md:143 +msgid "[check if services work](maintenance-and-troubleshooting.md#how-to-check-if-services-work)" msgstr "" -#: ../../../docs/installing.md:128 +#: ../../../docs/installing.md:144 msgid "or [set up additional services](configuring-playbook.md#other-configuration-options) (bridges to other chat networks, bots, etc.)" msgstr "" -#: ../../../docs/installing.md:129 +#: ../../../docs/installing.md:145 msgid "or learn how to [upgrade services when new versions are released](maintenance-upgrading-services.md)" msgstr "" -#: ../../../docs/installing.md:130 +#: ../../../docs/installing.md:146 msgid "or learn how to [maintain your server](faq.md#maintenance)" msgstr "" -#: ../../../docs/installing.md:131 +#: ../../../docs/installing.md:147 msgid "or join some Matrix rooms:" msgstr "" -#: ../../../docs/installing.md:132 +#: ../../../docs/installing.md:148 msgid "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." msgstr "" -#: ../../../docs/installing.md:133 +#: ../../../docs/installing.md:149 msgid "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." msgstr "" -#: ../../../docs/installing.md:134 +#: ../../../docs/installing.md:150 msgid "or help make this playbook better by contributing (code, documentation, or [coffee/beer](https://liberapay.com/s.pantaleev/donate))" msgstr "" -#: ../../../docs/installing.md:136 -msgid "Maintaining your setup in the future" +#: ../../../docs/installing.md:152 +msgid "⚠️ Keep the playbook and services up-to-date" msgstr "" -#: ../../../docs/installing.md:138 +#: ../../../docs/installing.md:154 msgid "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**." msgstr "" -#: ../../../docs/installing.md:140 +#: ../../../docs/installing.md:156 msgid "The upstream projects, which this playbook makes use of, occasionally if not often suffer from security vulnerabilities." msgstr "" -#: ../../../docs/installing.md:142 +#: ../../../docs/installing.md:158 msgid "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." msgstr "" -#: ../../../docs/installing.md:144 -msgid "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)" +#: ../../../docs/installing.md:160 +msgid "Also, do not forget to update your system regularly. While this playbook may install basic services, such as Docker, it will not interfere further with system maintenance. Keeping the system itself up-to-date is out of scope for this playbook." msgstr "" -#: ../../../docs/installing.md:146 +#: ../../../docs/installing.md:162 +msgid "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)" +msgstr "" + +#: ../../../docs/installing.md:164 msgid "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." msgstr "" -#: ../../../docs/installing.md:152 +#: ../../../docs/installing.md:170 msgid "**Note**: see [this page on the playbook tags](playbook-tags.md) for more information about those tags." msgstr "" -#: ../../../docs/installing.md:154 +#: ../../../docs/installing.md:172 msgid "Make full use of `just` shortcut commands" msgstr "" -#: ../../../docs/installing.md:156 +#: ../../../docs/installing.md:174 msgid "After you get familiar with reconfiguring and re-running the playbook to maintain the server, upgrade its services, etc., you probably would like to make use of `just` shortcut commands for faster input." msgstr "" -#: ../../../docs/installing.md:158 +#: ../../../docs/installing.md:176 msgid "For example, `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." msgstr "" -#: ../../../docs/installing.md:160 +#: ../../../docs/installing.md:178 msgid "You can learn about the shortcut commands on this page: [Running `just` commands](just.md)" msgstr "" diff --git a/i18n/translation-templates/docs/just.pot b/i18n/translation-templates/docs/just.pot index 65a4e7e1c..18a17950e 100644 --- a/i18n/translation-templates/docs/just.pot +++ b/i18n/translation-templates/docs/just.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,27 +16,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/just.md:1 +#: ../../../docs/just.md:8 msgid "Running `just` commands" msgstr "" -#: ../../../docs/just.md:3 +#: ../../../docs/just.md:10 msgid "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." msgstr "" -#: ../../../docs/just.md:5 +#: ../../../docs/just.md:12 msgid "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." msgstr "" -#: ../../../docs/just.md:7 +#: ../../../docs/just.md:14 msgid "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." msgstr "" -#: ../../../docs/just.md:9 -msgid "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." +#: ../../../docs/just.md:16 +msgid "For some recipes such as `just update`, our `justfile` recommends installing `agru` (a faster alternative to `ansible-galaxy`) to speed up the process." msgstr "" -#: ../../../docs/just.md:11 +#: ../../../docs/just.md:18 msgid "Here are some examples of shortcuts:" msgstr "" @@ -65,7 +65,7 @@ msgid "Run `git pull` (to update the playbook) and install the Ansible roles" msgstr "" #: ../../../docs/just.md:0 -#: ../../../docs/just.md:33 +#: ../../../docs/just.md:40 msgid "`just install-all`" msgstr "" @@ -129,30 +129,30 @@ msgstr "" msgid "Registers an `alice` user with the `secret-password` password and admin access (admin = `yes`)" msgstr "" -#: ../../../docs/just.md:26 +#: ../../../docs/just.md:33 msgid "While [our documentation on prerequisites](prerequisites.md) lists `just` as one of the requirements for installation, using `just` is optional. If you find it difficult to install it, do not find it useful, or want to prefer raw `ansible-playbook` commands for some reason, feel free to run all commands manually. For example, you can run `ansible-galaxy` directly to install the Ansible roles: `rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force`." msgstr "" -#: ../../../docs/just.md:28 +#: ../../../docs/just.md:35 msgid "Difference between playbook tags and shortcuts" msgstr "" -#: ../../../docs/just.md:30 +#: ../../../docs/just.md:37 msgid "It is worth noting that `just` \"recipes\" are different from [playbook tags](playbook-tags.md). The recipes are shortcuts of commands defined in `justfile` and can be executed by the `just` program only, while the playbook tags are available for the raw `ansible-playbook` commands as well. Please be careful not to confuse them." msgstr "" -#: ../../../docs/just.md:32 +#: ../../../docs/just.md:39 msgid "For example, these two commands are different:" msgstr "" -#: ../../../docs/just.md:34 +#: ../../../docs/just.md:41 msgid "`ansible-playbook -i inventory/hosts setup.yml --tags=install-all`" msgstr "" -#: ../../../docs/just.md:36 +#: ../../../docs/just.md:43 msgid "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`." msgstr "" -#: ../../../docs/just.md:38 -msgid "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." +#: ../../../docs/just.md:45 +msgid "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." msgstr "" diff --git a/i18n/translation-templates/docs/maintenance-and-troubleshooting.pot b/i18n/translation-templates/docs/maintenance-and-troubleshooting.pot index d6f179db5..dfbc8d42b 100644 --- a/i18n/translation-templates/docs/maintenance-and-troubleshooting.pot +++ b/i18n/translation-templates/docs/maintenance-and-troubleshooting.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,66 +16,158 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/maintenance-and-troubleshooting.md:1 +#: ../../../docs/maintenance-and-troubleshooting.md:12 msgid "Maintenance and Troubleshooting" msgstr "" -#: ../../../docs/maintenance-and-troubleshooting.md:3 -msgid "How to see the current status of your services" +#: ../../../docs/maintenance-and-troubleshooting.md:14 +msgid "Maintenance" msgstr "" -#: ../../../docs/maintenance-and-troubleshooting.md:5 -msgid "You can check the status of your services by using `systemctl status`. Example:" +#: ../../../docs/maintenance-and-troubleshooting.md:16 +msgid "How to back up the data on your server" msgstr "" -#: ../../../docs/maintenance-and-troubleshooting.md:15 -msgid "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)." +#: ../../../docs/maintenance-and-troubleshooting.md:18 +msgid "We haven't documented this properly yet, but the general advice is to:" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:20 +msgid "back up Postgres by making a database dump. See [Backing up PostgreSQL](maintenance-postgres.md#backing-up-postgresql)" msgstr "" -#: ../../../docs/maintenance-and-troubleshooting.md:17 -msgid "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`." +#: ../../../docs/maintenance-and-troubleshooting.md:22 +msgid "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))." msgstr "" -#: ../../../docs/maintenance-and-troubleshooting.md:19 -msgid "To view systemd-journald logs using [journalctl](https://man.archlinux.org/man/journalctl.1), run a command like this:" +#: ../../../docs/maintenance-and-troubleshooting.md:24 +msgid "You can later restore these by:" msgstr "" -#: ../../../docs/maintenance-and-troubleshooting.md:25 -msgid "Increase logging verbosity" +#: ../../../docs/maintenance-and-troubleshooting.md:26 +msgid "Restoring the `/matrix` directory and files on the new server manually" msgstr "" #: ../../../docs/maintenance-and-troubleshooting.md:27 -msgid "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`." +msgid "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)" msgstr "" #: ../../../docs/maintenance-and-troubleshooting.md:29 -msgid "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`." +msgid "If your server's IP address has changed, you may need to [set up DNS](configuring-dns.md) again." msgstr "" #: ../../../docs/maintenance-and-troubleshooting.md:31 -msgid "Example configuration (`inventory/host_vars/matrix.example.com/vars.yml`):" +msgid "Remove unused Docker data" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:33 +msgid "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." msgstr "" #: ../../../docs/maintenance-and-troubleshooting.md:39 -msgid "Re-run the playbook after making these configuration changes." +msgid "The shortcut command with `just` program is also available: `just run-tags run-docker-prune`" msgstr "" #: ../../../docs/maintenance-and-troubleshooting.md:41 -msgid "Remove unused Docker data" +msgid "Postgres" msgstr "" #: ../../../docs/maintenance-and-troubleshooting.md:43 -msgid "You can free some disk space from Docker, see [docker system prune](https://docs.docker.com/engine/reference/commandline/system_prune/) for more information." +msgid "See the dedicated [PostgreSQL maintenance](maintenance-postgres.md) documentation page." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:45 +msgid "Synapse" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:47 +msgid "See the dedicated [Synapse maintenance](maintenance-synapse.md) documentation page." msgstr "" #: ../../../docs/maintenance-and-troubleshooting.md:49 -msgid "The shortcut command with `just` program is also available: `just run-tags run-docker-prune`" +msgid "Troubleshooting" msgstr "" #: ../../../docs/maintenance-and-troubleshooting.md:51 -msgid "Postgres" +msgid "How to see the current status of your services" msgstr "" #: ../../../docs/maintenance-and-troubleshooting.md:53 -msgid "See the dedicated [PostgreSQL Maintenance](maintenance-postgres.md) documentation page." +msgid "You can check the status of your services by using `systemctl status`. Example:" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:63 +msgid "How to see the logs" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:65 +msgid "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)." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:67 +msgid "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:" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:73 +msgid "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." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:75 +msgid "We just simply delegate logging to journald and it takes care of persistence and expiring old data." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:77 +msgid "Enable systemd/journald logs persistence" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:79 +msgid "On some distros, the journald logs are just in-memory and not persisted to disk." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:81 +msgid "Consult (and feel free to adjust) your distro's journald logging configuration in `/etc/systemd/journald.conf`." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:83 +msgid "To enable persistence and put some limits on how large the journal log files can become, adjust your configuration like this:" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:94 +msgid "How to check if services work" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:96 +msgid "The playbook can perform a check to ensure that you've configured things correctly and that services are running." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:98 +msgid "To perform the check, run:" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:104 +msgid "The shortcut command with `just` program is also available: `just run-tags self-check`" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:106 +msgid "If it's all green, everything is probably running correctly." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:108 +msgid "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." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:110 +msgid "How to debug or force SSL certificate renewal" +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:112 +msgid "SSL certificates are managed automatically by the [Traefik](https://doc.traefik.io/traefik/) reverse-proxy server." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:114 +msgid "If you're having trouble with SSL certificate renewal, check the Traefik logs (`journalctl -fu matrix-traefik`)." +msgstr "" + +#: ../../../docs/maintenance-and-troubleshooting.md:116 +msgid "If you're [using your own webserver](configuring-playbook-own-webserver.md) instead of the integrated one (Traefik), you should investigate in another way." msgstr "" diff --git a/i18n/translation-templates/docs/maintenance-migrating.pot b/i18n/translation-templates/docs/maintenance-migrating.pot index 5cd731bdf..f331220e3 100644 --- a/i18n/translation-templates/docs/maintenance-migrating.pot +++ b/i18n/translation-templates/docs/maintenance-migrating.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,118 +16,118 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/maintenance-migrating.md:1 +#: ../../../docs/maintenance-migrating.md:10 msgid "Migrating to new server" msgstr "" -#: ../../../docs/maintenance-migrating.md:3 +#: ../../../docs/maintenance-migrating.md:12 msgid "This documentation explains how to migrate your Matrix services (server, client, bridges, etc.) and data **from an old server to a new server**." msgstr "" -#: ../../../docs/maintenance-migrating.md:5 +#: ../../../docs/maintenance-migrating.md:14 msgid "**Notes**:" msgstr "" -#: ../../../docs/maintenance-migrating.md:6 +#: ../../../docs/maintenance-migrating.md:15 msgid "This migration guide is applicable if you migrate from one server to another server having the same CPU architecture (e.g. both servers being `amd64`)." msgstr "" -#: ../../../docs/maintenance-migrating.md:8 +#: ../../../docs/maintenance-migrating.md:17 msgid "If you're trying to migrate between different architectures (e.g. `amd64` --> `arm64`), simply copying the complete `/matrix` directory is **not** possible as it would move the raw PostgreSQL data (`/matrix/postgres/data`) between different architectures. In this specific case, you can use the guide below as a reference, but you would also need to avoid syncing `/matrix/postgres/data` to the new host, and also dump the database on your current server and import it properly on the new server. See our [Backing up PostgreSQL](maintenance-postgres.md#backing-up-postgresql) docs for help with PostgreSQL backup/restore." msgstr "" -#: ../../../docs/maintenance-migrating.md:9 +#: ../../../docs/maintenance-migrating.md:18 msgid "If you have any questions about migration or encountered an issue during migration, do not hesitate to ask for help on [our Matrix room](https://matrix.to/#/%23matrix-docker-ansible-deploy:devture.com). You probably might want to prepare a temporary/sub account on another Matrix server in case it becomes impossible to use your server due to migration failure by any chance." msgstr "" -#: ../../../docs/maintenance-migrating.md:11 +#: ../../../docs/maintenance-migrating.md:20 msgid "You can't change the domain (specified in the `matrix_domain` variable) after the initial deployment." msgstr "" -#: ../../../docs/maintenance-migrating.md:13 +#: ../../../docs/maintenance-migrating.md:22 msgid "Lower DNS TTL" msgstr "" -#: ../../../docs/maintenance-migrating.md:15 +#: ../../../docs/maintenance-migrating.md:24 msgid "Prepare by lowering DNS TTL for your domains (`matrix.example.com`, etc.), so that DNS record changes would happen faster, leading to less downtime." msgstr "" -#: ../../../docs/maintenance-migrating.md:17 +#: ../../../docs/maintenance-migrating.md:26 msgid "Stop services on the old server completely" msgstr "" -#: ../../../docs/maintenance-migrating.md:19 +#: ../../../docs/maintenance-migrating.md:28 msgid "Before migrating, you need to stop all services on the old server and make sure they won't be starting again." msgstr "" -#: ../../../docs/maintenance-migrating.md:21 +#: ../../../docs/maintenance-migrating.md:30 msgid "To do so, it is recommended to run the `systemctl` command on the server. Running the playbook's `stop` tag also stops the services, but just once; they will start again if you reboot the server." msgstr "" -#: ../../../docs/maintenance-migrating.md:23 +#: ../../../docs/maintenance-migrating.md:32 msgid "Log in to the old server and run the command as `root` (or a user that can run it with `sudo`):" msgstr "" -#: ../../../docs/maintenance-migrating.md:29 +#: ../../../docs/maintenance-migrating.md:38 msgid "Copy data directory to the new server" msgstr "" -#: ../../../docs/maintenance-migrating.md:31 +#: ../../../docs/maintenance-migrating.md:40 msgid "After you've confirmed that all services were stopped, copy the `/matrix` directory from the old server to the new server. When copying, make sure to preserve ownership and permissions (use `cp -p` or `rsync -ar`)!" msgstr "" -#: ../../../docs/maintenance-migrating.md:33 +#: ../../../docs/maintenance-migrating.md:42 msgid "Adjust DNS records" msgstr "" -#: ../../../docs/maintenance-migrating.md:35 +#: ../../../docs/maintenance-migrating.md:44 msgid "Make sure your DNS records are adjusted to point to the new server's IP address." msgstr "" -#: ../../../docs/maintenance-migrating.md:37 +#: ../../../docs/maintenance-migrating.md:46 msgid "Update `inventory/hosts` file" msgstr "" -#: ../../../docs/maintenance-migrating.md:39 +#: ../../../docs/maintenance-migrating.md:48 msgid "Having adjusted DNS records, replace the old server's external IP address on the `inventory/hosts` file with that of the new server." msgstr "" -#: ../../../docs/maintenance-migrating.md:41 +#: ../../../docs/maintenance-migrating.md:50 msgid "Create `matrix` user and group on the new server" msgstr "" -#: ../../../docs/maintenance-migrating.md:43 +#: ../../../docs/maintenance-migrating.md:52 msgid "Then, run the command below on your local computer to create the `matrix` user and group on the new server:" msgstr "" -#: ../../../docs/maintenance-migrating.md:49 +#: ../../../docs/maintenance-migrating.md:58 msgid "The shortcut command with `just` program is also available: `just run-tags setup-system-user`" msgstr "" -#: ../../../docs/maintenance-migrating.md:51 +#: ../../../docs/maintenance-migrating.md:60 msgid "**Note**: because the `matrix` user and group are created dynamically on each server, the user/group ID may differ between the old and new server. We suggest that you adjust ownership of `/matrix` files. To adjust the ownership, log in to the new server and run the command:" msgstr "" -#: ../../../docs/maintenance-migrating.md:57 +#: ../../../docs/maintenance-migrating.md:66 msgid "Install and start all services on the new server" msgstr "" -#: ../../../docs/maintenance-migrating.md:59 +#: ../../../docs/maintenance-migrating.md:68 msgid "Finally, run the command below on your local computer to finish the installation and start all services:" msgstr "" -#: ../../../docs/maintenance-migrating.md:65 +#: ../../../docs/maintenance-migrating.md:74 msgid "The shortcut command with `just` program is also available: `just run-tags install-all,start`" msgstr "" -#: ../../../docs/maintenance-migrating.md:67 +#: ../../../docs/maintenance-migrating.md:76 msgid "Check if services work" msgstr "" -#: ../../../docs/maintenance-migrating.md:69 -msgid "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)" +#: ../../../docs/maintenance-migrating.md:78 +msgid "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)" msgstr "" -#: ../../../docs/maintenance-migrating.md:71 +#: ../../../docs/maintenance-migrating.md:80 msgid "Having make sure that both services and federation work as expected, you can safely shutdown the old server." msgstr "" diff --git a/i18n/translation-templates/docs/maintenance-postgres.pot b/i18n/translation-templates/docs/maintenance-postgres.pot index fd6ebc337..6a3941152 100644 --- a/i18n/translation-templates/docs/maintenance-postgres.pot +++ b/i18n/translation-templates/docs/maintenance-postgres.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,202 +16,202 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/maintenance-postgres.md:1 +#: ../../../docs/maintenance-postgres.md:13 msgid "PostgreSQL maintenance" msgstr "" -#: ../../../docs/maintenance-postgres.md:3 +#: ../../../docs/maintenance-postgres.md:15 msgid "This document shows you how to perform various maintenance tasks related to the Postgres database server used by Matrix." msgstr "" -#: ../../../docs/maintenance-postgres.md:5 +#: ../../../docs/maintenance-postgres.md:17 msgid "Table of contents:" msgstr "" -#: ../../../docs/maintenance-postgres.md:7 +#: ../../../docs/maintenance-postgres.md:18 msgid "[Getting a database terminal](#getting-a-database-terminal), for when you wish to execute SQL queries" msgstr "" -#: ../../../docs/maintenance-postgres.md:9 +#: ../../../docs/maintenance-postgres.md:19 msgid "[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)" msgstr "" -#: ../../../docs/maintenance-postgres.md:11 +#: ../../../docs/maintenance-postgres.md:20 msgid "[Backing up PostgreSQL](#backing-up-postgresql), for when you wish to make a backup" msgstr "" -#: ../../../docs/maintenance-postgres.md:13 +#: ../../../docs/maintenance-postgres.md:21 msgid "[Upgrading PostgreSQL](#upgrading-postgresql), for upgrading to new major versions of PostgreSQL. Such **manual upgrades are sometimes required**." msgstr "" -#: ../../../docs/maintenance-postgres.md:15 +#: ../../../docs/maintenance-postgres.md:22 msgid "[Tuning PostgreSQL](#tuning-postgresql) to make it run faster" msgstr "" -#: ../../../docs/maintenance-postgres.md:17 +#: ../../../docs/maintenance-postgres.md:24 msgid "Getting a database terminal" msgstr "" -#: ../../../docs/maintenance-postgres.md:19 -msgid "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." +#: ../../../docs/maintenance-postgres.md:26 +msgid "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." msgstr "" -#: ../../../docs/maintenance-postgres.md:21 +#: ../../../docs/maintenance-postgres.md:28 msgid "If you are using an [external Postgres server](configuring-playbook-external-postgres.md), the above tool will not be available." msgstr "" -#: ../../../docs/maintenance-postgres.md:23 +#: ../../../docs/maintenance-postgres.md:30 msgid "By default, this tool puts you in the `matrix` database, which contains nothing." msgstr "" -#: ../../../docs/maintenance-postgres.md:25 +#: ../../../docs/maintenance-postgres.md:32 msgid "To see the available databases, run `\\list` (or just `\\l`)." msgstr "" -#: ../../../docs/maintenance-postgres.md:27 +#: ../../../docs/maintenance-postgres.md:34 msgid "To change to another database (for example `synapse`), run `\\connect synapse` (or just `\\c synapse`)." msgstr "" -#: ../../../docs/maintenance-postgres.md:29 +#: ../../../docs/maintenance-postgres.md:36 msgid "You can then proceed to write queries. Example: `SELECT COUNT(*) FROM users;`" msgstr "" -#: ../../../docs/maintenance-postgres.md:31 -msgid "**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)." +#: ../../../docs/maintenance-postgres.md:38 +msgid "[!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)." msgstr "" -#: ../../../docs/maintenance-postgres.md:33 +#: ../../../docs/maintenance-postgres.md:41 msgid "Vacuuming PostgreSQL" msgstr "" -#: ../../../docs/maintenance-postgres.md:35 +#: ../../../docs/maintenance-postgres.md:43 msgid "Deleting lots data from Postgres does not make it release disk space, until you perform a [`VACUUM` operation](https://www.postgresql.org/docs/current/sql-vacuum.html)." msgstr "" -#: ../../../docs/maintenance-postgres.md:37 +#: ../../../docs/maintenance-postgres.md:45 msgid "You can run different `VACUUM` operations via the playbook, with the default preset being `vacuum-complete`:" msgstr "" -#: ../../../docs/maintenance-postgres.md:39 +#: ../../../docs/maintenance-postgres.md:47 msgid "(default) `vacuum-complete`: stops all services temporarily and runs `VACUUM FULL VERBOSE ANALYZE`." msgstr "" -#: ../../../docs/maintenance-postgres.md:40 +#: ../../../docs/maintenance-postgres.md:48 msgid "`vacuum-full`: stops all services temporarily and runs `VACUUM FULL VERBOSE`" msgstr "" -#: ../../../docs/maintenance-postgres.md:41 +#: ../../../docs/maintenance-postgres.md:49 msgid "`vacuum`: runs `VACUUM VERBOSE` without stopping any services" msgstr "" -#: ../../../docs/maintenance-postgres.md:42 +#: ../../../docs/maintenance-postgres.md:50 msgid "`vacuum-analyze` runs `VACUUM VERBOSE ANALYZE` without stopping any services" msgstr "" -#: ../../../docs/maintenance-postgres.md:43 +#: ../../../docs/maintenance-postgres.md:51 msgid "`analyze` runs `ANALYZE VERBOSE` without stopping any services (this is just [ANALYZE](https://www.postgresql.org/docs/current/sql-analyze.html) without doing a vacuum, so it's faster)" msgstr "" -#: ../../../docs/maintenance-postgres.md:45 +#: ../../../docs/maintenance-postgres.md:53 msgid "**Note**: for the `vacuum-complete` and `vacuum-full` presets, you'll need plenty of available disk space in your Postgres data directory (usually `/matrix/postgres/data`). These presets also stop all services (e.g. Synapse, etc.) while the vacuum operation is running." msgstr "" -#: ../../../docs/maintenance-postgres.md:47 +#: ../../../docs/maintenance-postgres.md:55 msgid "Example playbook invocations:" msgstr "" -#: ../../../docs/maintenance-postgres.md:49 +#: ../../../docs/maintenance-postgres.md:57 msgid "`just run-tags run-postgres-vacuum`: runs the default `vacuum-complete` preset and restarts all services" msgstr "" -#: ../../../docs/maintenance-postgres.md:50 +#: ../../../docs/maintenance-postgres.md:58 msgid "`just run-tags run-postgres-vacuum -e postgres_vacuum_preset=analyze`: runs the `analyze` preset with all services remaining operational at all times" msgstr "" -#: ../../../docs/maintenance-postgres.md:52 +#: ../../../docs/maintenance-postgres.md:60 msgid "Backing up PostgreSQL" msgstr "" -#: ../../../docs/maintenance-postgres.md:54 -msgid "To automatically make Postgres database backups on a fixed schedule, see [Setting up postgres backup](configuring-playbook-postgres-backup.md)." +#: ../../../docs/maintenance-postgres.md:62 +msgid "To automatically make Postgres database backups on a fixed schedule, consider enabling the [Postgres Backup](configuring-playbook-postgres-backup.md) service." msgstr "" -#: ../../../docs/maintenance-postgres.md:56 -msgid "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:" +#: ../../../docs/maintenance-postgres.md:64 +msgid "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:" msgstr "" -#: ../../../docs/maintenance-postgres.md:67 +#: ../../../docs/maintenance-postgres.md:75 msgid "If you are using an [external Postgres server](configuring-playbook-external-postgres.md), the above command will not work, because neither the credentials file (`/matrix/postgres/env-postgres-psql`), nor the `matrix-postgres` container is available." msgstr "" -#: ../../../docs/maintenance-postgres.md:69 +#: ../../../docs/maintenance-postgres.md:77 msgid "Restoring a backup made this way can be done by [importing it](importing-postgres.md)." msgstr "" -#: ../../../docs/maintenance-postgres.md:71 +#: ../../../docs/maintenance-postgres.md:79 msgid "Upgrading PostgreSQL" msgstr "" -#: ../../../docs/maintenance-postgres.md:73 +#: ../../../docs/maintenance-postgres.md:81 msgid "Unless you are using an [external Postgres server](configuring-playbook-external-postgres.md), this playbook initially installs Postgres for you." msgstr "" -#: ../../../docs/maintenance-postgres.md:75 +#: ../../../docs/maintenance-postgres.md:83 msgid "Once installed, the playbook attempts to preserve the Postgres version it starts with. This is because newer Postgres versions cannot start with data generated by older Postgres versions." msgstr "" -#: ../../../docs/maintenance-postgres.md:77 +#: ../../../docs/maintenance-postgres.md:85 msgid "Upgrades must be performed manually." msgstr "" -#: ../../../docs/maintenance-postgres.md:79 +#: ../../../docs/maintenance-postgres.md:87 msgid "The playbook can upgrade your existing Postgres setup with the following command:" msgstr "" -#: ../../../docs/maintenance-postgres.md:85 +#: ../../../docs/maintenance-postgres.md:93 msgid "**The old Postgres data directory is backed up** automatically, by renaming it to `/matrix/postgres/data-auto-upgrade-backup`. To rename to a different path, pass some extra flags to the command above, like this: `--extra-vars=\"postgres_auto_upgrade_backup_data_path=/another/disk/matrix-postgres-before-upgrade\"`" msgstr "" -#: ../../../docs/maintenance-postgres.md:87 +#: ../../../docs/maintenance-postgres.md:95 msgid "The auto-upgrade-backup directory stays around forever, until you **manually decide to delete it**." msgstr "" -#: ../../../docs/maintenance-postgres.md:89 +#: ../../../docs/maintenance-postgres.md:97 msgid "As part of the upgrade, the database is dumped to `/tmp`, an upgraded and empty Postgres server is started, and then the dump is restored into the new server. To use a different directory for the dump, pass some extra flags to the command above, like this: `--extra-vars=\"postgres_dump_dir=/directory/to/dump/here\"`" msgstr "" -#: ../../../docs/maintenance-postgres.md:91 +#: ../../../docs/maintenance-postgres.md:99 msgid "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\"`" msgstr "" -#: ../../../docs/maintenance-postgres.md:93 -msgid "**All databases, roles, etc. on the Postgres server are migrated**." +#: ../../../docs/maintenance-postgres.md:101 +msgid "**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`" msgstr "" -#: ../../../docs/maintenance-postgres.md:95 +#: ../../../docs/maintenance-postgres.md:103 msgid "Tuning PostgreSQL" msgstr "" -#: ../../../docs/maintenance-postgres.md:97 +#: ../../../docs/maintenance-postgres.md:105 msgid "PostgreSQL can be [tuned](https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server) to make it run faster. This is done by passing extra arguments to the Postgres process." msgstr "" -#: ../../../docs/maintenance-postgres.md:99 -msgid "The [Postgres Ansible role](https://github.com/mother-of-all-self-hosting/ansible-role-postgres) **already does some tuning by default**, which matches the [tuning logic](https://github.com/le0pard/pgtune/blob/master/src/features/configuration/configurationSlice.js) done by websites like https://pgtune.leopard.in.ua/. You can manually influence some of the tuning variables. These parameters (variables) are injected via the `postgres_postgres_process_extra_arguments_auto` variable." +#: ../../../docs/maintenance-postgres.md:107 +msgid "The [Postgres Ansible role](https://github.com/mother-of-all-self-hosting/ansible-role-postgres) **already does some tuning by default**, which matches the [tuning logic](https://github.com/le0pard/pgtune/blob/master/src/features/configuration/configurationSlice.js) done by websites like https://pgtune.leopard.in.ua/. You can manually influence some of the tuning variables. These parameters (variables) are injected via the `postgres_postgres_process_extra_arguments_default` variable." msgstr "" -#: ../../../docs/maintenance-postgres.md:101 +#: ../../../docs/maintenance-postgres.md:109 msgid "Most users should be fine with the automatically-done tuning. However, you may wish to:" msgstr "" -#: ../../../docs/maintenance-postgres.md:103 -msgid "**adjust the automatically-determined tuning parameters manually**: change the values for the tuning variables defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) (see `postgres_max_connections`, `postgres_data_storage` etc). These variables are ultimately passed to Postgres via a `postgres_postgres_process_extra_arguments_auto` variable" +#: ../../../docs/maintenance-postgres.md:111 +msgid "**adjust the automatically-determined tuning parameters manually**: change the values for the tuning variables defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) (see `postgres_max_connections`, `postgres_data_storage` etc). These variables are ultimately passed to Postgres via a `postgres_postgres_process_extra_arguments_default` variable" msgstr "" -#: ../../../docs/maintenance-postgres.md:105 -msgid "**turn automatically-performed tuning off**: override it like this: `postgres_postgres_process_extra_arguments_auto: []`" +#: ../../../docs/maintenance-postgres.md:113 +msgid "**turn automatically-performed tuning off**: override it like this: `postgres_postgres_process_extra_arguments_default: []`" msgstr "" -#: ../../../docs/maintenance-postgres.md:107 -msgid "**add additional tuning parameters**: define your additional Postgres configuration parameters in `postgres_postgres_process_extra_arguments_custom`. See `postgres_postgres_process_extra_arguments_auto` defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) for inspiration" +#: ../../../docs/maintenance-postgres.md:115 +msgid "**add additional tuning parameters**: define your additional Postgres configuration parameters in `postgres_postgres_process_extra_arguments_custom`. See `postgres_postgres_process_extra_arguments_default` defined in the Postgres role's [default configuration file](https://github.com/mother-of-all-self-hosting/ansible-role-postgres/blob/main/defaults/main.yml) for inspiration" msgstr "" diff --git a/i18n/translation-templates/docs/maintenance-synapse.pot b/i18n/translation-templates/docs/maintenance-synapse.pot index 8d3b68999..4da49e5a2 100644 --- a/i18n/translation-templates/docs/maintenance-synapse.pot +++ b/i18n/translation-templates/docs/maintenance-synapse.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,182 +16,186 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/maintenance-synapse.md:1 +#: ../../../docs/maintenance-synapse.md:12 msgid "Synapse maintenance" msgstr "" -#: ../../../docs/maintenance-synapse.md:3 +#: ../../../docs/maintenance-synapse.md:14 msgid "This document shows you how to perform various maintenance tasks related to the Synapse chat server." msgstr "" -#: ../../../docs/maintenance-synapse.md:5 +#: ../../../docs/maintenance-synapse.md:16 msgid "Table of contents:" msgstr "" -#: ../../../docs/maintenance-synapse.md:7 +#: ../../../docs/maintenance-synapse.md:17 msgid "[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" msgstr "" -#: ../../../docs/maintenance-synapse.md:9 +#: ../../../docs/maintenance-synapse.md:18 msgid "[Compressing state with rust-synapse-compress-state](#compressing-state-with-rust-synapse-compress-state)" msgstr "" -#: ../../../docs/maintenance-synapse.md:11 +#: ../../../docs/maintenance-synapse.md:19 msgid "[Browse and manipulate the database](#browse-and-manipulate-the-database), for when you really need to take matters into your own hands" msgstr "" -#: ../../../docs/maintenance-synapse.md:13 +#: ../../../docs/maintenance-synapse.md:20 msgid "[Make Synapse faster](#make-synapse-faster)" msgstr "" -#: ../../../docs/maintenance-synapse.md:15 +#: ../../../docs/maintenance-synapse.md:22 +msgid "💡 See this page for details about configuring Synapse: [Configuring Synapse](configuring-playbook-synapse.md)" +msgstr "" + +#: ../../../docs/maintenance-synapse.md:24 msgid "Purging old data with the Purge History API" msgstr "" -#: ../../../docs/maintenance-synapse.md:17 +#: ../../../docs/maintenance-synapse.md:26 msgid "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**." msgstr "" -#: ../../../docs/maintenance-synapse.md:19 +#: ../../../docs/maintenance-synapse.md:28 msgid "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)." msgstr "" -#: ../../../docs/maintenance-synapse.md:21 +#: ../../../docs/maintenance-synapse.md:30 msgid "[!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." msgstr "" -#: ../../../docs/maintenance-synapse.md:24 +#: ../../../docs/maintenance-synapse.md:33 msgid "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." msgstr "" -#: ../../../docs/maintenance-synapse.md:26 +#: ../../../docs/maintenance-synapse.md:35 msgid "Follow the [Purge History API](https://github.com/element-hq/synapse/blob/master/docs/admin_api/purge_history_api.md) documentation page for the actual purging instructions." msgstr "" -#: ../../../docs/maintenance-synapse.md:28 +#: ../../../docs/maintenance-synapse.md:37 msgid "After deleting data, you may wish to run a [`FULL` Postgres `VACUUM`](./maintenance-postgres.md#vacuuming-postgresql)." msgstr "" -#: ../../../docs/maintenance-synapse.md:30 +#: ../../../docs/maintenance-synapse.md:39 msgid "Compressing state with rust-synapse-compress-state" msgstr "" -#: ../../../docs/maintenance-synapse.md:32 +#: ../../../docs/maintenance-synapse.md:41 msgid "[rust-synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state) can be used to optimize some `_state` tables used by Synapse. If your server participates in large rooms this is the most effective way to reduce the size of your database." msgstr "" -#: ../../../docs/maintenance-synapse.md:34 +#: ../../../docs/maintenance-synapse.md:43 msgid "**Note**: besides running the `rust-synapse-compress-state` tool manually, you can also enable its `synapse-auto-compressor` tool by [Setting up synapse-auto-compressor](configuring-playbook-synapse-auto-compressor.md). The automatic tool will run on a schedule every day and you won't have to compress state manually ever again." msgstr "" -#: ../../../docs/maintenance-synapse.md:36 +#: ../../../docs/maintenance-synapse.md:45 msgid "`rust-synapse-compress-state` should be safe to use (even when Synapse is running), but it's always a good idea to [make Postgres backups](./maintenance-postgres.md#backing-up-postgresql) first." msgstr "" -#: ../../../docs/maintenance-synapse.md:38 +#: ../../../docs/maintenance-synapse.md:47 msgid "To ask the playbook to run rust-synapse-compress-state, execute:" msgstr "" -#: ../../../docs/maintenance-synapse.md:44 +#: ../../../docs/maintenance-synapse.md:53 msgid "The shortcut command with `just` program is also available: `just run-tags rust-synapse-compress-state`" msgstr "" -#: ../../../docs/maintenance-synapse.md:46 +#: ../../../docs/maintenance-synapse.md:55 msgid "By default, all rooms with more than `100000` state group rows will be compressed. If you need to adjust this, pass: `--extra-vars='matrix_synapse_rust_synapse_compress_state_min_state_groups_required=SOME_NUMBER_HERE'` to the command above." msgstr "" -#: ../../../docs/maintenance-synapse.md:48 +#: ../../../docs/maintenance-synapse.md:57 msgid "After state compression, you may wish to run a [`FULL` Postgres `VACUUM`](./maintenance-postgres.md#vacuuming-postgresql)." msgstr "" -#: ../../../docs/maintenance-synapse.md:50 +#: ../../../docs/maintenance-synapse.md:59 msgid "Browse and manipulate the database" msgstr "" -#: ../../../docs/maintenance-synapse.md:52 +#: ../../../docs/maintenance-synapse.md:61 msgid "When the [Synapse Admin API](https://github.com/element-hq/synapse/tree/master/docs/admin_api) and the other tools do not provide a more convenient way, having a look at synapse's postgresql database can satisfy a lot of admins' needs." msgstr "" -#: ../../../docs/maintenance-synapse.md:54 +#: ../../../docs/maintenance-synapse.md:63 msgid "Editing the database manually is not recommended or supported by the Synapse developers. If you are going to do so you should [make a database backup](./maintenance-postgres.md#backing-up-postgresql)." msgstr "" -#: ../../../docs/maintenance-synapse.md:56 +#: ../../../docs/maintenance-synapse.md:65 msgid "First, set up an SSH tunnel to your Matrix server (skip if it is your local machine):" msgstr "" -#: ../../../docs/maintenance-synapse.md:63 +#: ../../../docs/maintenance-synapse.md:72 msgid "Then start up an ephemeral [adminer](https://www.adminer.org/) container on the Matrix server, connecting it to the `matrix` network and linking the postgresql container:" msgstr "" -#: ../../../docs/maintenance-synapse.md:69 +#: ../../../docs/maintenance-synapse.md:78 msgid "You should then be able to browse the adminer database administration GUI at http://localhost:1799/ after entering your DB credentials (found in the `host_vars` or on the server in `{{matrix_synapse_config_dir_path}}/homeserver.yaml` under `database.args`)" msgstr "" -#: ../../../docs/maintenance-synapse.md:71 +#: ../../../docs/maintenance-synapse.md:80 msgid "⚠️️ Be **very careful** with this, there is **no undo** for impromptu DB operations." msgstr "" -#: ../../../docs/maintenance-synapse.md:73 +#: ../../../docs/maintenance-synapse.md:82 msgid "Make Synapse faster" msgstr "" -#: ../../../docs/maintenance-synapse.md:75 +#: ../../../docs/maintenance-synapse.md:84 msgid "Synapse's presence feature which tracks which users are online and which are offline can use a lot of processing power. You can disable presence by adding `matrix_synapse_presence_enabled: false` to your `vars.yml` file." msgstr "" -#: ../../../docs/maintenance-synapse.md:77 +#: ../../../docs/maintenance-synapse.md:86 msgid "If you have enough compute resources (CPU & RAM), you can make Synapse better use of them by [enabling load-balancing with workers](configuring-playbook-synapse.md#load-balancing-with-workers)." msgstr "" -#: ../../../docs/maintenance-synapse.md:79 +#: ../../../docs/maintenance-synapse.md:88 msgid "[Tuning your PostgreSQL database](maintenance-postgres.md#tuning-postgresql) could also improve Synapse performance. The playbook tunes the integrated Postgres database automatically, but based on your needs you may wish to adjust tuning variables manually. If you're using an [external Postgres database](configuring-playbook-external-postgres.md), you will also need to tune Postgres manually." msgstr "" -#: ../../../docs/maintenance-synapse.md:81 +#: ../../../docs/maintenance-synapse.md:90 msgid "Tuning caches and cache autotuning" msgstr "" -#: ../../../docs/maintenance-synapse.md:83 +#: ../../../docs/maintenance-synapse.md:92 msgid "Tuning Synapse's cache factor is useful for performance increases but also as part of controlling Synapse's memory use. Use the variable `matrix_synapse_caches_global_factor` to set the cache factor as part of this process." msgstr "" -#: ../../../docs/maintenance-synapse.md:85 +#: ../../../docs/maintenance-synapse.md:94 msgid "**The playbook defaults the global cache factor to a large value** (e.g. `10`). A smaller value (e.g. `0.5`) will decrease the amount used for caches, but will [not necessarily decrease RAM usage as a whole](https://github.com/matrix-org/synapse/issues/3939)." msgstr "" -#: ../../../docs/maintenance-synapse.md:87 +#: ../../../docs/maintenance-synapse.md:96 msgid "Tuning the cache factor is useful only to a limited degree (as its crude to do in isolation) and therefore users who are tuning their cache factor should likely look into tuning autotune variables as well (see below)." msgstr "" -#: ../../../docs/maintenance-synapse.md:89 +#: ../../../docs/maintenance-synapse.md:98 msgid "Cache autotuning is **enabled by default** and controlled via the following variables:" msgstr "" -#: ../../../docs/maintenance-synapse.md:91 +#: ../../../docs/maintenance-synapse.md:100 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 "" -#: ../../../docs/maintenance-synapse.md:92 +#: ../../../docs/maintenance-synapse.md:101 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 "" -#: ../../../docs/maintenance-synapse.md:93 +#: ../../../docs/maintenance-synapse.md:102 msgid "`matrix_synapse_cache_autotuning_min_cache_ttl` — defaults to `30s`" msgstr "" -#: ../../../docs/maintenance-synapse.md:95 +#: ../../../docs/maintenance-synapse.md:104 msgid "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)." msgstr "" -#: ../../../docs/maintenance-synapse.md:97 +#: ../../../docs/maintenance-synapse.md:106 msgid "To **disable cache auto-tuning**, unset all values:" msgstr "" -#: ../../../docs/maintenance-synapse.md:105 +#: ../../../docs/maintenance-synapse.md:114 msgid "Users who wish to lower Synapse's RAM footprint should look into lowering the global cache factor and tweaking the autotune variables (or disabling auto-tuning). If your cache factor is too low for a given auto tune setting your caches will not reach autotune thresholds and autotune won't be able to do its job. Therefore, when auto-tuning is enabled (which it is by default), it's recommended to have your cache factor be large." msgstr "" -#: ../../../docs/maintenance-synapse.md:107 +#: ../../../docs/maintenance-synapse.md:116 msgid "See also [How do I optimize this setup for a low-power server?](faq.md#how-do-i-optimize-this-setup-for-a-low-power-server)." msgstr "" diff --git a/i18n/translation-templates/docs/maintenance-upgrading-services.pot b/i18n/translation-templates/docs/maintenance-upgrading-services.pot index c1ba9faf7..b0d88289b 100644 --- a/i18n/translation-templates/docs/maintenance-upgrading-services.pot +++ b/i18n/translation-templates/docs/maintenance-upgrading-services.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,110 +16,110 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/maintenance-upgrading-services.md:1 +#: ../../../docs/maintenance-upgrading-services.md:12 msgid "Upgrading the Matrix services" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:3 +#: ../../../docs/maintenance-upgrading-services.md:14 msgid "This playbook not only installs the various Matrix services for you, but can also upgrade them as new versions are made available." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:5 +#: ../../../docs/maintenance-upgrading-services.md:16 msgid "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**." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:7 +#: ../../../docs/maintenance-upgrading-services.md:18 msgid "The upstream projects, which this playbook makes use of, occasionally if not often suffer from security vulnerabilities (for example, see [here](https://github.com/element-hq/element-web/security) for known ones on Element Web)." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:9 +#: ../../../docs/maintenance-upgrading-services.md:20 msgid "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." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:11 +#: ../../../docs/maintenance-upgrading-services.md:22 msgid "The developers of this playbook strive to maintain the playbook updated, so that you can re-run the playbook to address such vulnerabilities. It is **your responsibility** to keep your server and the services on it up-to-date." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:13 +#: ../../../docs/maintenance-upgrading-services.md:24 msgid "If you want to be notified when new versions of Synapse are released, you should join the Synapse Homeowners room: [#homeowners:matrix.org](https://matrix.to/#/#homeowners:matrix.org)." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:15 +#: ../../../docs/maintenance-upgrading-services.md:26 msgid "Steps to upgrade the Matrix services" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:17 +#: ../../../docs/maintenance-upgrading-services.md:28 msgid "Check the changelog" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:19 +#: ../../../docs/maintenance-upgrading-services.md:30 msgid "Before updating the playbook and the Ansible roles in the playbook, take a look at [the changelog](../CHANGELOG.md) to see if there have been any backward-incompatible changes that you need to take care of." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:21 +#: ../../../docs/maintenance-upgrading-services.md:32 msgid "Update the playbook and the Ansible roles" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:23 +#: ../../../docs/maintenance-upgrading-services.md:34 msgid "If it looks good to you, go to the `matrix-docker-ansible-deploy` directory, update your playbook directory and all upstream Ansible roles (defined in the `requirements.yml` file) by running:" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:25 +#: ../../../docs/maintenance-upgrading-services.md:36 msgid "either: `just update`" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:26 +#: ../../../docs/maintenance-upgrading-services.md:37 msgid "or: a combination of `git pull` and `just roles` (or `make roles` if you have `make` program on your computer instead of `just`)" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:28 +#: ../../../docs/maintenance-upgrading-services.md:39 msgid "If you don't have either `just` tool or `make` program, you can run the `ansible-galaxy` tool directly: `rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force`" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:30 +#: ../../../docs/maintenance-upgrading-services.md:41 msgid "**Note**: for details about `just` commands, take a look at: [Running `just` commands](just.md)." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:32 +#: ../../../docs/maintenance-upgrading-services.md:43 msgid "Re-run the playbook setup" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:34 +#: ../../../docs/maintenance-upgrading-services.md:45 msgid "After updating the Ansible roles, then re-run the [playbook setup](installing.md#maintaining-your-setup-in-the-future) and restart all services:" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:40 +#: ../../../docs/maintenance-upgrading-services.md:51 msgid "If you remove components from `vars.yml`, or if we switch some component from being installed by default to not being installed by default anymore, you'd need to run the setup command with the `setup-all` tag as below:" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:46 +#: ../../../docs/maintenance-upgrading-services.md:57 msgid "**Notes**:" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:48 +#: ../../../docs/maintenance-upgrading-services.md:59 msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account, if any." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:50 +#: ../../../docs/maintenance-upgrading-services.md:61 msgid "Our estimation is that running `--tags=install-all,start` is approximately from **2 to 5 times faster** than running `setup-all,ensure-matrix-users-created,start`. See [this entry](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) on `CHANGELOG.md` for more information." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:52 +#: ../../../docs/maintenance-upgrading-services.md:63 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`. Note these shortcuts run the `ensure-matrix-users-created` tag too." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:54 +#: ../../../docs/maintenance-upgrading-services.md:65 msgid "See [this page on the playbook tags](playbook-tags.md) for more information about those tags." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:56 +#: ../../../docs/maintenance-upgrading-services.md:67 msgid "PostgreSQL major version upgrade" msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:58 +#: ../../../docs/maintenance-upgrading-services.md:69 msgid "Major version upgrades to the internal PostgreSQL database are not done automatically. Upgrades must be performed manually." msgstr "" -#: ../../../docs/maintenance-upgrading-services.md:60 +#: ../../../docs/maintenance-upgrading-services.md:71 msgid "For details about upgrading it, refer to the [upgrading PostgreSQL guide](maintenance-postgres.md#upgrading-postgresql)." msgstr "" diff --git a/i18n/translation-templates/docs/obtaining-access-tokens.pot b/i18n/translation-templates/docs/obtaining-access-tokens.pot index ae33c546c..eaf101b79 100644 --- a/i18n/translation-templates/docs/obtaining-access-tokens.pot +++ b/i18n/translation-templates/docs/obtaining-access-tokens.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,78 +16,78 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/obtaining-access-tokens.md:1 +#: ../../../docs/obtaining-access-tokens.md:10 msgid "Obtaining an Access Token" msgstr "" -#: ../../../docs/obtaining-access-tokens.md:3 +#: ../../../docs/obtaining-access-tokens.md:12 msgid "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." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:5 +#: ../../../docs/obtaining-access-tokens.md:14 msgid "[!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." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:8 +#: ../../../docs/obtaining-access-tokens.md:17 msgid "Prerequisites" msgstr "" -#: ../../../docs/obtaining-access-tokens.md:10 +#: ../../../docs/obtaining-access-tokens.md:19 msgid "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." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:12 +#: ../../../docs/obtaining-access-tokens.md:21 msgid "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." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:14 +#: ../../../docs/obtaining-access-tokens.md:23 msgid "Obtain an access token via Element Web" msgstr "" -#: ../../../docs/obtaining-access-tokens.md:16 +#: ../../../docs/obtaining-access-tokens.md:25 msgid "In a private browsing session (incognito window), open Element Web." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:17 +#: ../../../docs/obtaining-access-tokens.md:26 msgid "Log in with the user's credentials." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:18 +#: ../../../docs/obtaining-access-tokens.md:27 msgid "In the settings page, choose \"Help & About\", scroll down to the bottom and expand the `Access Token` section (see screenshot below)." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:19 +#: ../../../docs/obtaining-access-tokens.md:28 msgid "Copy the access token to your configuration." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:20 +#: ../../../docs/obtaining-access-tokens.md:29 msgid "Close the private browsing session. **Do not log out**. Logging out will invalidate the token, making it not work." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:22 +#: ../../../docs/obtaining-access-tokens.md:31 msgid "![Obtaining an access token with Element Web](assets/obtain_admin_access_token_element_web.png)" msgstr "" -#: ../../../docs/obtaining-access-tokens.md:22 +#: ../../../docs/obtaining-access-tokens.md:31 msgid "Obtaining an access token with Element Web" msgstr "" -#: ../../../docs/obtaining-access-tokens.md:24 +#: ../../../docs/obtaining-access-tokens.md:33 msgid "Obtain an access token via curl" msgstr "" -#: ../../../docs/obtaining-access-tokens.md:26 +#: ../../../docs/obtaining-access-tokens.md:35 msgid "You can use the following command to get an access token for your user directly from the [Matrix Client-Server API](https://www.matrix.org/docs/guides/client-server-api#login):" msgstr "" -#: ../../../docs/obtaining-access-tokens.md:36 +#: ../../../docs/obtaining-access-tokens.md:45 msgid "Change `USERNAME`, `PASSWORD`, and `example.com` accordingly." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:38 +#: ../../../docs/obtaining-access-tokens.md:47 msgid "`YOURDEVICEID` is optional and can be used to more easily identify the session later. When omitted (mind the commas in the JSON payload if you'll be omitting it), a random device ID will be generated." msgstr "" -#: ../../../docs/obtaining-access-tokens.md:40 +#: ../../../docs/obtaining-access-tokens.md:49 msgid "Your response will look like this (prettified):" msgstr "" diff --git a/i18n/translation-templates/docs/playbook-tags.pot b/i18n/translation-templates/docs/playbook-tags.pot index 020dd51b1..1a80b65cc 100644 --- a/i18n/translation-templates/docs/playbook-tags.pot +++ b/i18n/translation-templates/docs/playbook-tags.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,58 +16,66 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/playbook-tags.md:1 +#: ../../../docs/playbook-tags.md:8 msgid "Playbook tags" msgstr "" -#: ../../../docs/playbook-tags.md:3 +#: ../../../docs/playbook-tags.md:10 msgid "The Ansible playbook's tasks are tagged, so that certain parts of the Ansible playbook can be run without running all other tasks." msgstr "" -#: ../../../docs/playbook-tags.md:5 -msgid "The general command syntax is: `ansible-playbook -i inventory/hosts setup.yml --tags=COMMA_SEPARATED_TAGS_GO_HERE`" +#: ../../../docs/playbook-tags.md:12 +msgid "The general command syntax is:" msgstr "" -#: ../../../docs/playbook-tags.md:7 +#: ../../../docs/playbook-tags.md:13 +msgid "(**recommended**) when using `just`: `just run-tags COMMA_SEPARATED_TAGS_GO_HERE`" +msgstr "" + +#: ../../../docs/playbook-tags.md:14 +msgid "when not using `just`: `ansible-playbook -i inventory/hosts setup.yml --tags=COMMA_SEPARATED_TAGS_GO_HERE`" +msgstr "" + +#: ../../../docs/playbook-tags.md:16 msgid "Here are some playbook tags that you should be familiar with:" msgstr "" -#: ../../../docs/playbook-tags.md:9 +#: ../../../docs/playbook-tags.md:18 msgid "`setup-all` — runs all setup tasks (installation and uninstallation) for all components, but does not start/restart services" msgstr "" -#: ../../../docs/playbook-tags.md:11 +#: ../../../docs/playbook-tags.md:20 msgid "`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" msgstr "" -#: ../../../docs/playbook-tags.md:13 +#: ../../../docs/playbook-tags.md:22 msgid "`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)." msgstr "" -#: ../../../docs/playbook-tags.md:15 +#: ../../../docs/playbook-tags.md:24 msgid "`install-SERVICE` (e.g. `install-postmoogle`) — like `setup-SERVICE`, but skips uninstallation tasks. See `install-all` above for additional information." msgstr "" -#: ../../../docs/playbook-tags.md:17 +#: ../../../docs/playbook-tags.md:26 msgid "`start` — starts all systemd services and makes them start automatically in the future" msgstr "" -#: ../../../docs/playbook-tags.md:19 +#: ../../../docs/playbook-tags.md:28 msgid "`stop` — stops all systemd services" msgstr "" -#: ../../../docs/playbook-tags.md:21 -msgid "`ensure-matrix-users-created` — a special tag which ensures that all special users needed by the playbook (for bots, etc.) are created" +#: ../../../docs/playbook-tags.md:30 +msgid "`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." msgstr "" -#: ../../../docs/playbook-tags.md:23 +#: ../../../docs/playbook-tags.md:32 msgid "**Notes**:" msgstr "" -#: ../../../docs/playbook-tags.md:24 +#: ../../../docs/playbook-tags.md:33 msgid "`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." msgstr "" -#: ../../../docs/playbook-tags.md:25 +#: ../../../docs/playbook-tags.md:34 msgid "Please be careful not to confuse the playbook tags with the `just` shortcut commands (\"recipes\"). For details about `just` commands, see: [Running `just` commands](just.md)" msgstr "" diff --git a/i18n/translation-templates/docs/prerequisites.pot b/i18n/translation-templates/docs/prerequisites.pot index adb4809b8..b8ffc38dc 100644 --- a/i18n/translation-templates/docs/prerequisites.pot +++ b/i18n/translation-templates/docs/prerequisites.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,146 +16,146 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/prerequisites.md:1 +#: ../../../docs/prerequisites.md:12 msgid "Prerequisites" msgstr "" -#: ../../../docs/prerequisites.md:3 -msgid "Prerequisites > [Configuring your DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md)" +#: ../../../docs/prerequisites.md:14 +msgid "Prerequisites > [Configuring DNS settings](configuring-dns.md) > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md)" msgstr "" -#: ../../../docs/prerequisites.md:5 +#: ../../../docs/prerequisites.md:16 msgid "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." msgstr "" -#: ../../../docs/prerequisites.md:7 +#: ../../../docs/prerequisites.md:18 msgid "We will be using `example.com` as the domain in the following instruction. Please remember to replace it with your own domain before running any commands." msgstr "" -#: ../../../docs/prerequisites.md:9 +#: ../../../docs/prerequisites.md:20 msgid "**Note**: if you do not have an existing Matrix server and want to start quickly with \"opinionated defaults\", we suggest you to follow ⚡ **[Quick start](quick-start.md)** installation guide." msgstr "" -#: ../../../docs/prerequisites.md:11 +#: ../../../docs/prerequisites.md:22 msgid "Your local computer" msgstr "" -#: ../../../docs/prerequisites.md:13 +#: ../../../docs/prerequisites.md:24 msgid "[Ansible](http://ansible.com/) program. It's used to run this playbook and configures your server for you. Take a look at [our guide about Ansible](ansible.md) for more information, as well as [version requirements](ansible.md#supported-ansible-versions) and alternative ways to run Ansible." msgstr "" -#: ../../../docs/prerequisites.md:15 +#: ../../../docs/prerequisites.md:26 msgid "[passlib](https://passlib.readthedocs.io/en/stable/index.html) Python library. See [this official documentation](https://passlib.readthedocs.io/en/stable/install.html#installation-instructions) for an instruction to install it. On most distros, you need to install some `python-passlib` or `py3-passlib` package, etc." msgstr "" -#: ../../../docs/prerequisites.md:17 +#: ../../../docs/prerequisites.md:28 msgid "[`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." msgstr "" -#: ../../../docs/prerequisites.md:19 -msgid "[`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)." +#: ../../../docs/prerequisites.md:30 +msgid "[`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)." msgstr "" -#: ../../../docs/prerequisites.md:21 +#: ../../../docs/prerequisites.md:32 msgid "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." msgstr "" -#: ../../../docs/prerequisites.md:23 +#: ../../../docs/prerequisites.md:34 msgid "Server" msgstr "" -#: ../../../docs/prerequisites.md:25 +#: ../../../docs/prerequisites.md:36 msgid "(Recommended) An **x86** server ([What kind of server specs do I need?](faq.md#what-kind-of-server-specs-do-i-need)) running one of these operating systems that make use of [systemd](https://systemd.io/):" msgstr "" -#: ../../../docs/prerequisites.md:26 +#: ../../../docs/prerequisites.md:37 msgid "**Archlinux**" msgstr "" -#: ../../../docs/prerequisites.md:27 +#: ../../../docs/prerequisites.md:38 msgid "**CentOS**, **Rocky Linux**, **AlmaLinux**, or possibly other RHEL alternatives (although your mileage may vary)" msgstr "" -#: ../../../docs/prerequisites.md:28 +#: ../../../docs/prerequisites.md:39 msgid "**Debian** (10/Buster or newer)" msgstr "" -#: ../../../docs/prerequisites.md:29 +#: ../../../docs/prerequisites.md:40 msgid "**Ubuntu** (18.04 or newer, although [20.04 may be problematic](ansible.md#supported-ansible-versions) if you run the Ansible playbook on it)" msgstr "" -#: ../../../docs/prerequisites.md:31 +#: ../../../docs/prerequisites.md:42 msgid "Generally, newer is better. We only strive to support released stable versions of distributions, not betas or pre-releases. The playbook can take over your whole server or co-exist with other services that you have there." msgstr "" -#: ../../../docs/prerequisites.md:33 +#: ../../../docs/prerequisites.md:44 msgid "This playbook somewhat supports running on non-`amd64` architectures like ARM. See [Alternative Architectures](alternative-architectures.md)." msgstr "" -#: ../../../docs/prerequisites.md:35 +#: ../../../docs/prerequisites.md:46 msgid "If your distro runs within an [LXC container](https://linuxcontainers.org/), you may hit [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/703). It can be worked around, if absolutely necessary, but we suggest that you avoid running from within an LXC container." msgstr "" -#: ../../../docs/prerequisites.md:37 +#: ../../../docs/prerequisites.md:48 msgid "`root` access to your server (or a user capable of elevating to `root` via `sudo`)." msgstr "" -#: ../../../docs/prerequisites.md:39 +#: ../../../docs/prerequisites.md:50 msgid "[Python](https://www.python.org/). Most distributions install Python by default, but some don't (e.g. Ubuntu 18.04) and require manual installation (something like `apt-get install python3`). On some distros, Ansible may incorrectly [detect the Python version](https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html) (2 vs 3) and you may need to explicitly specify the interpreter path in `inventory/hosts` during installation (e.g. `ansible_python_interpreter=/usr/bin/python3`)" msgstr "" -#: ../../../docs/prerequisites.md:41 -msgid "[sudo](https://www.sudo.ws/), even when you've configured Ansible to log in as `root`. Some distributions, like a minimal Debian net install, do not include the `sudo` package by default." +#: ../../../docs/prerequisites.md:52 +msgid "[sudo](https://www.sudo.ws/), even when you've configured Ansible to log in as `root`, because this Ansible playbook sometimes uses the Ansible [become](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_privilege_escalation.html) module to perform tasks as another user (e.g. `matrix`) and the `become` module's default implementation uses `sudo`. Some distributions, like a minimal Debian net install, do not include the `sudo` package by default." msgstr "" -#: ../../../docs/prerequisites.md:43 +#: ../../../docs/prerequisites.md:54 msgid "An HTTPS-capable web server at the base domain name (`example.com`) which is capable of serving static files. Unless you decide to [Serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md) or alternatively, to use DNS SRV records for [Server Delegation](howto-server-delegation.md)." msgstr "" -#: ../../../docs/prerequisites.md:45 +#: ../../../docs/prerequisites.md:56 msgid "Properly configured DNS records for `example.com` (details in [Configuring DNS](configuring-dns.md))." msgstr "" -#: ../../../docs/prerequisites.md:47 +#: ../../../docs/prerequisites.md:58 msgid "Some TCP/UDP ports open. This playbook (actually [Docker itself](https://docs.docker.com/network/iptables/)) configures the server's internal firewall for you. In most cases, you don't need to do anything special. But **if your server is running behind another firewall**, you'd need to open these ports:" msgstr "" -#: ../../../docs/prerequisites.md:49 +#: ../../../docs/prerequisites.md:60 msgid "`80/tcp`: HTTP webserver" msgstr "" -#: ../../../docs/prerequisites.md:50 +#: ../../../docs/prerequisites.md:61 msgid "`443/tcp` and `443/udp`: HTTPS webserver" msgstr "" -#: ../../../docs/prerequisites.md:51 -msgid "`3478/tcp`: TURN over TCP (used by coturn)" +#: ../../../docs/prerequisites.md:62 +msgid "`3478/tcp`: STUN/TURN over TCP (used by [coturn](./configuring-playbook-turn.md))" msgstr "" -#: ../../../docs/prerequisites.md:52 -msgid "`3478/udp`: TURN over UDP (used by coturn)" +#: ../../../docs/prerequisites.md:63 +msgid "`3478/udp`: STUN/TURN over UDP (used by [coturn](./configuring-playbook-turn.md))" msgstr "" -#: ../../../docs/prerequisites.md:53 -msgid "`5349/tcp`: TURN over TCP (used by coturn)" +#: ../../../docs/prerequisites.md:64 +msgid "`5349/tcp`: TURN over TCP (used by [coturn](./configuring-playbook-turn.md))" msgstr "" -#: ../../../docs/prerequisites.md:54 -msgid "`5349/udp`: TURN over UDP (used by coturn)" +#: ../../../docs/prerequisites.md:65 +msgid "`5349/udp`: TURN over UDP (used by [coturn](./configuring-playbook-turn.md))" msgstr "" -#: ../../../docs/prerequisites.md:55 +#: ../../../docs/prerequisites.md:66 msgid "`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**." msgstr "" -#: ../../../docs/prerequisites.md:56 +#: ../../../docs/prerequisites.md:67 msgid "the range `49152-49172/udp`: TURN over UDP" msgstr "" -#: ../../../docs/prerequisites.md:57 +#: ../../../docs/prerequisites.md:68 msgid "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." msgstr "" -#: ../../../docs/prerequisites.md:61 +#: ../../../docs/prerequisites.md:72 msgid "[▶️](configuring-dns.md) When ready to proceed, continue with [Configuring DNS](configuring-dns.md)." msgstr "" diff --git a/i18n/translation-templates/docs/quick-start.pot b/i18n/translation-templates/docs/quick-start.pot index 2dde01c63..f0b853b73 100644 --- a/i18n/translation-templates/docs/quick-start.pot +++ b/i18n/translation-templates/docs/quick-start.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,79 +16,79 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/quick-start.md:1 +#: ../../../docs/quick-start.md:7 msgid "Quick start" msgstr "" -#: ../../../docs/quick-start.md:9 +#: ../../../docs/quick-start.md:15 msgid "This page explains how to use this Ansible playbook to install Matrix services on your server with a minimal set of core services." msgstr "" -#: ../../../docs/quick-start.md:11 +#: ../../../docs/quick-start.md:17 msgid "We will be using `example.com` as the \"base domain\" in the following instruction." msgstr "" -#: ../../../docs/quick-start.md:13 +#: ../../../docs/quick-start.md:19 msgid "By following the instruction on this page, you will set up:" msgstr "" -#: ../../../docs/quick-start.md:15 +#: ../../../docs/quick-start.md:21 msgid "**your own Matrix server** on a `matrix.example.com` server, which is configured to present itself as `example.com`" msgstr "" -#: ../../../docs/quick-start.md:16 +#: ../../../docs/quick-start.md:22 msgid "**your user account** like `@alice:example.com` on the server" msgstr "" -#: ../../../docs/quick-start.md:17 +#: ../../../docs/quick-start.md:23 msgid "a **self-hosted Matrix client**, [Element Web](configuring-playbook-client-element-web.md) with the default subdomain at `element.example.com`" msgstr "" -#: ../../../docs/quick-start.md:18 +#: ../../../docs/quick-start.md:24 msgid "Matrix delegation, so that your `matrix.example.com` server (presenting itself as `example.com`) can join the Matrix Federation and communicate with any other server in the Matrix network" msgstr "" -#: ../../../docs/quick-start.md:20 +#: ../../../docs/quick-start.md:26 msgid "Please remember to replace `example.com` with your own domain before running any commands." msgstr "" -#: ../../../docs/quick-start.md:22 +#: ../../../docs/quick-start.md:28 msgid "Prerequisites" msgstr "" -#: ../../../docs/quick-start.md:24 +#: ../../../docs/quick-start.md:30 msgid "This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Prerequisites](prerequisites.md)" msgstr "" -#: ../../../docs/quick-start.md:26 +#: ../../../docs/quick-start.md:32 msgid "At first, **check prerequisites** and prepare for installation by setting up programs [on your own computer](prerequisites.md#your-local-computer) and [your server](prerequisites.md#server). You also need `root` access on your server (a user that could elevate to `root` via `sudo` also works)." msgstr "" -#: ../../../docs/quick-start.md:28 +#: ../../../docs/quick-start.md:34 msgid "When preparing your server, make sure to check [the server specs you need](faq.md#what-kind-of-server-specs-do-i-need). We recommend starting with a server having at least 2GB of memory." msgstr "" -#: ../../../docs/quick-start.md:34 +#: ../../../docs/quick-start.md:40 msgid "If you encounter an error during installation, please make sure that you have installed and configured programs correctly." msgstr "" -#: ../../../docs/quick-start.md:36 +#: ../../../docs/quick-start.md:42 msgid "One of the main reasons of basic errors is using an incompatible version of required software such as Ansible. Take a look at [our guide about Ansible](ansible.md) for more information. In short: installing the latest available version is recommended." msgstr "" -#: ../../../docs/quick-start.md:38 +#: ../../../docs/quick-start.md:44 msgid "Configure your DNS settings" msgstr "" -#: ../../../docs/quick-start.md:40 -msgid "This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Configuring your DNS settings](configuring-dns.md)" +#: ../../../docs/quick-start.md:46 +msgid "This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Configuring DNS settings](configuring-dns.md)" msgstr "" -#: ../../../docs/quick-start.md:42 +#: ../../../docs/quick-start.md:48 msgid "After installing and configuring prerequisites, you will need to **configure DNS records**." msgstr "" -#: ../../../docs/quick-start.md:44 +#: ../../../docs/quick-start.md:50 msgid "To configure Matrix services in the default settings, go to your DNS service provider, and adjust DNS records as below." msgstr "" @@ -129,7 +129,15 @@ msgid "-" msgstr "" #: ../../../docs/quick-start.md:0 -msgid "`matrix-server-IP`" +msgid "`matrix-server-IPv4`" +msgstr "" + +#: ../../../docs/quick-start.md:0 +msgid "AAAA" +msgstr "" + +#: ../../../docs/quick-start.md:0 +msgid "`matrix-server-IPv6`" msgstr "" #: ../../../docs/quick-start.md:0 @@ -144,286 +152,290 @@ msgstr "" msgid "`matrix.example.com`" msgstr "" -#: ../../../docs/quick-start.md:51 -msgid "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)." +#: ../../../docs/quick-start.md:58 +msgid "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." +msgstr "" + +#: ../../../docs/quick-start.md:60 +msgid "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." msgstr "" -#: ../../../docs/quick-start.md:53 +#: ../../../docs/quick-start.md:62 msgid "It might take some time for the DNS records to propagate after creation." msgstr "" -#: ../../../docs/quick-start.md:55 +#: ../../../docs/quick-start.md:64 msgid "**💡 Note**: if you are using Cloudflare DNS, make sure to disable the proxy and set all records to \"DNS only\"" msgstr "" -#: ../../../docs/quick-start.md:57 +#: ../../../docs/quick-start.md:66 msgid "Get the playbook" msgstr "" -#: ../../../docs/quick-start.md:59 +#: ../../../docs/quick-start.md:68 msgid "This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Getting the playbook](getting-the-playbook.md)" msgstr "" -#: ../../../docs/quick-start.md:61 +#: ../../../docs/quick-start.md:70 msgid "Next, let's **get the playbook's source code**." msgstr "" -#: ../../../docs/quick-start.md:63 +#: ../../../docs/quick-start.md:72 msgid "We recommend to do so with [git](https://git-scm.com/) as it enables you to keep it up to date with the latest source code. While it is possible to download the playbook as a ZIP archive, it is not recommended." msgstr "" -#: ../../../docs/quick-start.md:65 +#: ../../../docs/quick-start.md:74 msgid "To get the playbook with git, install git on your computer, go to a directory, and run the command:" msgstr "" -#: ../../../docs/quick-start.md:71 +#: ../../../docs/quick-start.md:80 msgid "It will fetch the playbook to a new `matrix-docker-ansible-deploy` directory underneath the directory you are currently in." msgstr "" -#: ../../../docs/quick-start.md:73 +#: ../../../docs/quick-start.md:82 msgid "Configure the playbook" msgstr "" -#: ../../../docs/quick-start.md:75 +#: ../../../docs/quick-start.md:84 msgid "This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Configuring the playbook](configuring-playbook.md)" msgstr "" -#: ../../../docs/quick-start.md:77 +#: ../../../docs/quick-start.md:86 msgid "Now that the playbook was fetched, it is time to **configure** it per your needs." msgstr "" -#: ../../../docs/quick-start.md:79 +#: ../../../docs/quick-start.md:88 msgid "To install Matrix services with this playbook, you would at least need 2 configuration files." msgstr "" -#: ../../../docs/quick-start.md:81 +#: ../../../docs/quick-start.md:90 msgid "For your convenience, we have prepared example files of them ([`vars.yml`](../examples/vars.yml) and [`hosts`](../examples/hosts))." msgstr "" -#: ../../../docs/quick-start.md:83 +#: ../../../docs/quick-start.md:92 msgid "To start quickly based on these example files, go into the `matrix-docker-ansible-deploy` directory and follow the instructions below:" msgstr "" -#: ../../../docs/quick-start.md:85 +#: ../../../docs/quick-start.md:94 msgid "Create a directory to hold your configuration: `mkdir -p inventory/host_vars/matrix.example.com` where `example.com` is your \"base domain\"" msgstr "" -#: ../../../docs/quick-start.md:86 +#: ../../../docs/quick-start.md:95 msgid "Copy the sample configuration file: `cp examples/vars.yml inventory/host_vars/matrix.example.com/vars.yml`" msgstr "" -#: ../../../docs/quick-start.md:87 +#: ../../../docs/quick-start.md:96 msgid "Copy the sample inventory hosts file: `cp examples/hosts inventory/hosts`" msgstr "" -#: ../../../docs/quick-start.md:88 +#: ../../../docs/quick-start.md:97 msgid "Edit the configuration file (`inventory/host_vars/matrix.example.com/vars.yml`)" msgstr "" -#: ../../../docs/quick-start.md:89 +#: ../../../docs/quick-start.md:98 msgid "Edit the inventory hosts file (`inventory/hosts`)" msgstr "" -#: ../../../docs/quick-start.md:91 +#: ../../../docs/quick-start.md:100 msgid "Before editing these 2 files, make sure to read explanations on them to understand what needs to be configured." msgstr "" -#: ../../../docs/quick-start.md:93 +#: ../../../docs/quick-start.md:102 msgid "**💡 Notes:**" msgstr "" -#: ../../../docs/quick-start.md:94 +#: ../../../docs/quick-start.md:103 msgid "If you are not in control of anything on the base domain, you would need to set additional configuration on `vars.yml`. 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." msgstr "" -#: ../../../docs/quick-start.md:95 +#: ../../../docs/quick-start.md:104 msgid "Certain configuration decisions (like the base domain configured in `matrix_domain` and homeserver implementation configured in `matrix_homeserver_implementation`) are final. If you make the wrong choice and wish to change it, you'll have to run the Uninstalling step and start over." msgstr "" -#: ../../../docs/quick-start.md:96 +#: ../../../docs/quick-start.md:105 msgid "Instead of configuring a lot of things all at once, we recommend starting with the basic (default) settings in order to get yourself familiar with how the playbook works. After making sure that everything works as expected, you can add (and remove) advanced settings / features and run the playbook as many times as you wish." msgstr "" -#: ../../../docs/quick-start.md:98 +#: ../../../docs/quick-start.md:107 msgid "Install" msgstr "" -#: ../../../docs/quick-start.md:100 +#: ../../../docs/quick-start.md:109 msgid "This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Installing](installing.md)" msgstr "" -#: ../../../docs/quick-start.md:102 +#: ../../../docs/quick-start.md:111 msgid "After editing `vars.yml` and `hosts` files, let's start the **installation** procedure." msgstr "" -#: ../../../docs/quick-start.md:104 +#: ../../../docs/quick-start.md:113 msgid "Update Ansible roles" msgstr "" -#: ../../../docs/quick-start.md:106 +#: ../../../docs/quick-start.md:115 msgid "Before installing, you need to update the Ansible roles that this playbook uses and fetches from outside." msgstr "" -#: ../../../docs/quick-start.md:108 +#: ../../../docs/quick-start.md:117 msgid "To update your playbook directory and all upstream Ansible roles, run:" msgstr "" -#: ../../../docs/quick-start.md:110 +#: ../../../docs/quick-start.md:119 msgid "either: `just update`" msgstr "" -#: ../../../docs/quick-start.md:111 +#: ../../../docs/quick-start.md:120 msgid "or: a combination of `git pull` and `just roles` (or `make roles` if you have `make` program on your computer instead of `just`)" msgstr "" -#: ../../../docs/quick-start.md:113 +#: ../../../docs/quick-start.md:122 msgid "If you don't have either `just` tool or `make` program, you can run the `ansible-galaxy` tool directly: `rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force`" msgstr "" -#: ../../../docs/quick-start.md:115 +#: ../../../docs/quick-start.md:124 msgid "Run installation command" msgstr "" -#: ../../../docs/quick-start.md:117 +#: ../../../docs/quick-start.md:126 msgid "Then, run the command below to start installation:" msgstr "" -#: ../../../docs/quick-start.md:123 +#: ../../../docs/quick-start.md:132 msgid "If you **don't** use SSH keys for authentication, but rather a regular password, you may need to add `--ask-pass` to the command." msgstr "" -#: ../../../docs/quick-start.md:125 +#: ../../../docs/quick-start.md:134 msgid "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 the command." msgstr "" -#: ../../../docs/quick-start.md:127 +#: ../../../docs/quick-start.md:136 msgid "Wait until the command completes. If it's all green, everything should be running properly." msgstr "" -#: ../../../docs/quick-start.md:129 +#: ../../../docs/quick-start.md:138 msgid "Create your user account" msgstr "" -#: ../../../docs/quick-start.md:131 +#: ../../../docs/quick-start.md:140 msgid "This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Registering users](registering-users.md)" msgstr "" -#: ../../../docs/quick-start.md:133 +#: ../../../docs/quick-start.md:142 msgid "As you have configured your brand new server and the client, you need to **create your user account** on your Matrix server." msgstr "" -#: ../../../docs/quick-start.md:135 +#: ../../../docs/quick-start.md:144 msgid "To create your user account (as an administrator of the server) via this Ansible playbook, run the command below on your local computer." msgstr "" -#: ../../../docs/quick-start.md:137 +#: ../../../docs/quick-start.md:146 msgid "**💡 Notes**:" msgstr "" -#: ../../../docs/quick-start.md:138 +#: ../../../docs/quick-start.md:147 msgid "Make sure to adjust `YOUR_USERNAME_HERE` and `YOUR_PASSWORD_HERE`" msgstr "" -#: ../../../docs/quick-start.md:139 +#: ../../../docs/quick-start.md:148 msgid "For `YOUR_USERNAME_HERE`, use a plain username like `alice`, not your full ID (`@alice:example.com`)" msgstr "" -#: ../../../docs/quick-start.md:151 +#: ../../../docs/quick-start.md:160 msgid "Finalize server installation" msgstr "" -#: ../../../docs/quick-start.md:153 +#: ../../../docs/quick-start.md:162 msgid "This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Server Delegation](howto-server-delegation.md)" msgstr "" -#: ../../../docs/quick-start.md:155 +#: ../../../docs/quick-start.md:164 msgid "Now that you've configured Matrix services and your user account, you need to **finalize the installation process** by [setting up Matrix delegation (redirection)](howto-server-delegation.md), so that your Matrix server (`matrix.example.com`) can present itself as the base domain (`example.com`) in the Matrix network." msgstr "" -#: ../../../docs/quick-start.md:157 +#: ../../../docs/quick-start.md:166 msgid "**This is required for federation to work!** Without a proper configuration, your server will effectively not be part of the Matrix network." msgstr "" -#: ../../../docs/quick-start.md:159 +#: ../../../docs/quick-start.md:168 msgid "To configure the delegation, you have these two options. Choose one of them according to your situation." msgstr "" -#: ../../../docs/quick-start.md:161 +#: ../../../docs/quick-start.md:170 msgid "If you can afford to point the base domain at the Matrix server, follow the instruction below which guides you into [serving the base domain](configuring-playbook-base-domain-serving.md) from the integrated web server." msgstr "" -#: ../../../docs/quick-start.md:162 +#: ../../../docs/quick-start.md:171 msgid "Alternatively, if you're using the base domain for other purposes and cannot point it to the Matrix server (and thus cannot \"serve the base domain\" from it), you most likely need to [manually install well-known files on the base domain's server](configuring-well-known.md#manually-installing-well-known-files-on-the-base-domains-server)." msgstr "" -#: ../../../docs/quick-start.md:164 +#: ../../../docs/quick-start.md:173 msgid "To have the base domain served from the integrated web server, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/quick-start.md:170 +#: ../../../docs/quick-start.md:179 msgid "After configuring the playbook, run the command below and wait until it finishes:" msgstr "" -#: ../../../docs/quick-start.md:176 +#: ../../../docs/quick-start.md:185 msgid "💡 Running the `install-matrix-static-files` playbook tag (as done here) is an optimized version of running [the full setup command](#run-installation-command)." msgstr "" -#: ../../../docs/quick-start.md:178 +#: ../../../docs/quick-start.md:187 msgid "After the command finishes, 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." msgstr "" -#: ../../../docs/quick-start.md:180 +#: ../../../docs/quick-start.md:189 msgid "Re-run the full setup command any time" msgstr "" -#: ../../../docs/quick-start.md:182 +#: ../../../docs/quick-start.md:191 msgid "If you think something is wrong with the server configuration, feel free to re-run the setup command any time:" msgstr "" -#: ../../../docs/quick-start.md:188 +#: ../../../docs/quick-start.md:197 msgid "Log in to your user account" msgstr "" -#: ../../../docs/quick-start.md:190 +#: ../../../docs/quick-start.md:199 msgid "Finally, let's make sure that you can log in to the created account with the specified password." msgstr "" -#: ../../../docs/quick-start.md:192 +#: ../../../docs/quick-start.md:201 msgid "You should be able to log in to it with your own [Element Web](configuring-playbook-client-element-web.md) client which you have set up at `element.example.com` by running the playbook. Open the URL (`https://element.example.com`) in a web browser and enter your credentials to log in." msgstr "" -#: ../../../docs/quick-start.md:194 -msgid "**If you successfully logged in to your account, installing and configuring is complete**🎉" +#: ../../../docs/quick-start.md:203 +msgid "**If you successfully logged in to your account, the installation and configuration have completed successfully**🎉" msgstr "" -#: ../../../docs/quick-start.md:196 +#: ../../../docs/quick-start.md:205 msgid "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." msgstr "" -#: ../../../docs/quick-start.md:198 +#: ../../../docs/quick-start.md:207 msgid "Things to do next" msgstr "" -#: ../../../docs/quick-start.md:200 +#: ../../../docs/quick-start.md:209 msgid "Once you get familiar with the playbook, you might probably want to set up additional services such as a bridge on your server." msgstr "" -#: ../../../docs/quick-start.md:202 +#: ../../../docs/quick-start.md:211 msgid "As this page intends to be a quick start guide which explains how to start the core Matrix services, it does not cover a topic like how to set them up. Take a look at the list of [things to do next](installing.md#things-to-do-next) to learn more." msgstr "" -#: ../../../docs/quick-start.md:204 +#: ../../../docs/quick-start.md:213 msgid "⚠️Keep the playbook and services up-to-date" msgstr "" -#: ../../../docs/quick-start.md:206 +#: ../../../docs/quick-start.md:215 msgid "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**." msgstr "" -#: ../../../docs/quick-start.md:208 +#: ../../../docs/quick-start.md:217 msgid "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." msgstr "" -#: ../../../docs/quick-start.md:210 -msgid "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)" +#: ../../../docs/quick-start.md:219 +msgid "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)" msgstr "" diff --git a/i18n/translation-templates/docs/registering-users.pot b/i18n/translation-templates/docs/registering-users.pot index f90cc2c40..ea3c05f57 100644 --- a/i18n/translation-templates/docs/registering-users.pot +++ b/i18n/translation-templates/docs/registering-users.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,227 +16,227 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/registering-users.md:1 +#: ../../../docs/registering-users.md:11 msgid "Registering users" msgstr "" -#: ../../../docs/registering-users.md:3 +#: ../../../docs/registering-users.md:13 msgid "This documentation page tells you how to create user accounts on your Matrix server." msgstr "" -#: ../../../docs/registering-users.md:5 +#: ../../../docs/registering-users.md:15 msgid "Table of contents:" msgstr "" -#: ../../../docs/registering-users.md:7 +#: ../../../docs/registering-users.md:16 msgid "[Registering users](#registering-users)" msgstr "" -#: ../../../docs/registering-users.md:8 +#: ../../../docs/registering-users.md:17 msgid "[Registering users manually](#registering-users-manually)" msgstr "" -#: ../../../docs/registering-users.md:9 +#: ../../../docs/registering-users.md:18 msgid "[Managing users via a Web UI](#managing-users-via-a-web-ui)" msgstr "" -#: ../../../docs/registering-users.md:10 +#: ../../../docs/registering-users.md:19 msgid "[Letting certain users register on your private server](#letting-certain-users-register-on-your-private-server)" msgstr "" -#: ../../../docs/registering-users.md:11 +#: ../../../docs/registering-users.md:20 msgid "[Enabling public user registration](#enabling-public-user-registration)" msgstr "" -#: ../../../docs/registering-users.md:12 +#: ../../../docs/registering-users.md:21 msgid "[Adding/Removing Administrator privileges to an existing user](#addingremoving-administrator-privileges-to-an-existing-user)" msgstr "" -#: ../../../docs/registering-users.md:14 +#: ../../../docs/registering-users.md:23 msgid "Registering users manually" msgstr "" -#: ../../../docs/registering-users.md:16 -#: ../../../docs/registering-users.md:121 +#: ../../../docs/registering-users.md:25 +#: ../../../docs/registering-users.md:130 msgid "**Notes**:" msgstr "" -#: ../../../docs/registering-users.md:17 +#: ../../../docs/registering-users.md:26 msgid "Make sure to adjust `USERNAME_HERE` and `PASSWORD_HERE`" msgstr "" -#: ../../../docs/registering-users.md:18 +#: ../../../docs/registering-users.md:27 msgid "For `USERNAME_HERE`, use a plain username like `alice`, not a full ID (`@alice:example.com`)" msgstr "" -#: ../../../docs/registering-users.md:19 +#: ../../../docs/registering-users.md:28 msgid "Use `admin=yes` or `admin=no` depending on whether you wish to make the user an administrator of the Matrix server" msgstr "" -#: ../../../docs/registering-users.md:21 +#: ../../../docs/registering-users.md:30 msgid "After registering a user (using one of the methods below), **you can log in with that user** via the [Element Web](configuring-playbook-client-element-web.md) service that this playbook has installed for you at a URL like this: `https://element.example.com/`." msgstr "" -#: ../../../docs/registering-users.md:23 +#: ../../../docs/registering-users.md:32 msgid "Registering users via the Ansible playbook" msgstr "" -#: ../../../docs/registering-users.md:25 +#: ../../../docs/registering-users.md:34 msgid "It's best to register users via the Ansible playbook, because it works regardless of homeserver implementation (Synapse, Dendrite, etc) or usage of [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) (MAS)." msgstr "" -#: ../../../docs/registering-users.md:27 +#: ../../../docs/registering-users.md:36 msgid "To register a user via this Ansible playbook:" msgstr "" -#: ../../../docs/registering-users.md:35 +#: ../../../docs/registering-users.md:44 msgid "**or** by invoking `ansible-playbook` manually:" msgstr "" -#: ../../../docs/registering-users.md:43 +#: ../../../docs/registering-users.md:52 msgid "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`." msgstr "" -#: ../../../docs/registering-users.md:45 +#: ../../../docs/registering-users.md:54 msgid "[!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." msgstr "" -#: ../../../docs/registering-users.md:48 +#: ../../../docs/registering-users.md:57 msgid "Registering users manually for Synapse" msgstr "" -#: ../../../docs/registering-users.md:50 +#: ../../../docs/registering-users.md:59 msgid "If you're using the [Synapse](configuring-playbook-synapse.md) homeserver implementation (which is the default), you can register users via the command-line after **SSH**-ing to your server (requires that [all services have been started](installing.md#install-matrix-server-and-services)):" msgstr "" -#: ../../../docs/registering-users.md:58 +#: ../../../docs/registering-users.md:67 msgid "Registering users manually for Dendrite" msgstr "" -#: ../../../docs/registering-users.md:60 +#: ../../../docs/registering-users.md:69 msgid "If you're using the [Dendrite](./configuring-playbook-dendrite.md) homeserver implementation, you can register users via the command-line after **SSH**-ing to your server (requires that [all services have been started](installing.md#install-matrix-server-and-services)):" msgstr "" -#: ../../../docs/registering-users.md:68 +#: ../../../docs/registering-users.md:77 msgid "Registering users manually for Matrix Authentication Service" msgstr "" -#: ../../../docs/registering-users.md:70 +#: ../../../docs/registering-users.md:79 msgid "If you're using the [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) and your existing homeserver (most likely [Synapse](./configuring-playbook-synapse.md)) is delegating authentication to it, you can register users via the command-line after **SSH**-ing to your server (requires that [all services have been started](installing.md#install-matrix-server-and-services)):" msgstr "" -#: ../../../docs/registering-users.md:78 +#: ../../../docs/registering-users.md:87 msgid "This `register-user` script actually invokes the `mas-cli manage register-user` command under the hood. If you'd like more control over the registration process, consider invoking the `mas-cli` command directly:" msgstr "" -#: ../../../docs/registering-users.md:84 +#: ../../../docs/registering-users.md:93 msgid "[!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." msgstr "" -#: ../../../docs/registering-users.md:87 +#: ../../../docs/registering-users.md:96 msgid "Managing users via a Web UI" msgstr "" -#: ../../../docs/registering-users.md:89 +#: ../../../docs/registering-users.md:98 msgid "To manage users more easily (via a web user-interace), you can install [Synapse Admin](configuring-playbook-synapse-admin.md)." msgstr "" -#: ../../../docs/registering-users.md:91 +#: ../../../docs/registering-users.md:100 msgid "[!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." msgstr "" -#: ../../../docs/registering-users.md:94 +#: ../../../docs/registering-users.md:103 msgid "Letting certain users register on your private server" msgstr "" -#: ../../../docs/registering-users.md:96 +#: ../../../docs/registering-users.md:105 msgid "If you'd rather **keep your server private** (public registration closed, as is the default), and **let certain people create accounts by themselves** (instead of creating user accounts manually like this), consider installing and making use of [matrix-registration](configuring-playbook-matrix-registration.md)." msgstr "" -#: ../../../docs/registering-users.md:98 +#: ../../../docs/registering-users.md:107 msgid "Enabling public user registration" msgstr "" -#: ../../../docs/registering-users.md:100 +#: ../../../docs/registering-users.md:109 msgid "To **open up user registration publicly** (usually **not recommended**), add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:" msgstr "" -#: ../../../docs/registering-users.md:102 +#: ../../../docs/registering-users.md:111 msgid "For Synapse:" msgstr "" -#: ../../../docs/registering-users.md:108 +#: ../../../docs/registering-users.md:117 msgid "For Dendrite:" msgstr "" -#: ../../../docs/registering-users.md:114 +#: ../../../docs/registering-users.md:123 msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:" msgstr "" -#: ../../../docs/registering-users.md:123 +#: ../../../docs/registering-users.md:132 msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`" msgstr "" -#: ../../../docs/registering-users.md:125 +#: ../../../docs/registering-users.md:134 msgid "`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." msgstr "" -#: ../../../docs/registering-users.md:127 +#: ../../../docs/registering-users.md:136 msgid "If you're opening up registrations publicly like this, you might also wish to [configure CAPTCHA protection](configuring-captcha.md)." msgstr "" -#: ../../../docs/registering-users.md:129 +#: ../../../docs/registering-users.md:138 msgid "Adding/Removing Administrator privileges to an existing user" msgstr "" -#: ../../../docs/registering-users.md:131 +#: ../../../docs/registering-users.md:140 msgid "Adding/Removing Administrator privileges to an existing user in Synapse" msgstr "" -#: ../../../docs/registering-users.md:133 +#: ../../../docs/registering-users.md:142 msgid "To change the admin privileges for a user in Synapse's local database, you need to run an SQL query like this against the `synapse` database:" msgstr "" -#: ../../../docs/registering-users.md:139 +#: ../../../docs/registering-users.md:148 msgid "where:" msgstr "" -#: ../../../docs/registering-users.md:141 +#: ../../../docs/registering-users.md:150 msgid "`ADMIN_VALUE` being either `0` (regular user) or `1` (admin)" msgstr "" -#: ../../../docs/registering-users.md:142 +#: ../../../docs/registering-users.md:151 msgid "`USER` and `example.com` pointing to a valid user on your server" msgstr "" -#: ../../../docs/registering-users.md:144 +#: ../../../docs/registering-users.md:153 msgid "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:" msgstr "" -#: ../../../docs/registering-users.md:146 +#: ../../../docs/registering-users.md:155 msgid "running `/matrix/postgres/bin/cli` — to launch [`psql`](https://www.postgresql.org/docs/current/app-psql.html)" msgstr "" -#: ../../../docs/registering-users.md:147 +#: ../../../docs/registering-users.md:156 msgid "running `\\c synapse` — to change to the `synapse` database" msgstr "" -#: ../../../docs/registering-users.md:149 +#: ../../../docs/registering-users.md:158 msgid "You can then proceed to run the query above." msgstr "" -#: ../../../docs/registering-users.md:151 +#: ../../../docs/registering-users.md:160 msgid "**Note**: directly modifying the raw data of Synapse (or any other software) could cause the software to break. You've been warned!" msgstr "" -#: ../../../docs/registering-users.md:153 +#: ../../../docs/registering-users.md:162 msgid "Adding/Removing Administrator privileges to an existing user in Matrix Authentication Service" msgstr "" -#: ../../../docs/registering-users.md:155 +#: ../../../docs/registering-users.md:164 msgid "Promoting/demoting a user in Matrix Authentication Service cannot currently (2024-10-19) be done via the [`mas-cli` Management tool](./configuring-playbook-matrix-authentication-service.md#management)." msgstr "" -#: ../../../docs/registering-users.md:157 +#: ../../../docs/registering-users.md:166 msgid "You can do it via the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html)'s `POST /api/admin/v1/users/{id}/set-admin` endpoint." msgstr "" diff --git a/i18n/translation-templates/docs/self-building.pot b/i18n/translation-templates/docs/self-building.pot index 6430f8b15..fec761bb1 100644 --- a/i18n/translation-templates/docs/self-building.pot +++ b/i18n/translation-templates/docs/self-building.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,158 +16,150 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/self-building.md:1 +#: ../../../docs/self-building.md:15 msgid "Self-building" msgstr "" -#: ../../../docs/self-building.md:3 +#: ../../../docs/self-building.md:17 msgid "**Caution: self-building does not have to be used on its own. See the [Alternative Architectures](alternative-architectures.md) page.**" msgstr "" -#: ../../../docs/self-building.md:5 +#: ../../../docs/self-building.md:19 msgid "The playbook supports self-building of various components, which don't have a container image for your architecture (see the [container images we use](container-images.md)). For `amd64`, self-building is not required." msgstr "" -#: ../../../docs/self-building.md:7 +#: ../../../docs/self-building.md:21 msgid "For other architectures (e.g. `arm32`, `arm64`), ready-made container images are used when available. If there's no ready-made image for a specific component and said component supports self-building, an image will be built on the host. Building images like this takes more time and resources (some build tools need to get installed by the playbook to assist building)." msgstr "" -#: ../../../docs/self-building.md:9 +#: ../../../docs/self-building.md:23 msgid "To make use of self-building, you don't need to do anything. If a component has an image for the specified architecture, the playbook will use it directly. If not, it will build the image on the server itself." msgstr "" -#: ../../../docs/self-building.md:11 +#: ../../../docs/self-building.md:25 msgid "Note that **not all components support self-building yet**." msgstr "" -#: ../../../docs/self-building.md:13 +#: ../../../docs/self-building.md:27 msgid "Possibly outdated list of roles where self-building the Docker image is currently possible:" msgstr "" -#: ../../../docs/self-building.md:14 +#: ../../../docs/self-building.md:28 msgid "`matrix-synapse`" msgstr "" -#: ../../../docs/self-building.md:15 +#: ../../../docs/self-building.md:29 msgid "`matrix-synapse-admin`" msgstr "" -#: ../../../docs/self-building.md:16 +#: ../../../docs/self-building.md:30 msgid "`matrix-client-element`" msgstr "" -#: ../../../docs/self-building.md:17 +#: ../../../docs/self-building.md:31 msgid "`matrix-client-hydrogen`" msgstr "" -#: ../../../docs/self-building.md:18 +#: ../../../docs/self-building.md:32 msgid "`matrix-client-cinny`" msgstr "" -#: ../../../docs/self-building.md:19 +#: ../../../docs/self-building.md:33 msgid "`matrix-registration`" msgstr "" -#: ../../../docs/self-building.md:20 +#: ../../../docs/self-building.md:34 msgid "`matrix-coturn`" msgstr "" -#: ../../../docs/self-building.md:21 +#: ../../../docs/self-building.md:35 msgid "`matrix-corporal`" msgstr "" -#: ../../../docs/self-building.md:22 +#: ../../../docs/self-building.md:36 msgid "`matrix-dimension`" msgstr "" -#: ../../../docs/self-building.md:23 +#: ../../../docs/self-building.md:37 msgid "`matrix-ma1sd`" msgstr "" -#: ../../../docs/self-building.md:24 +#: ../../../docs/self-building.md:38 msgid "`exim-relay`" msgstr "" -#: ../../../docs/self-building.md:25 +#: ../../../docs/self-building.md:39 msgid "`matrix-bridge-hookshot`" msgstr "" -#: ../../../docs/self-building.md:26 +#: ../../../docs/self-building.md:40 msgid "`matrix-bridge-appservice-irc`" msgstr "" -#: ../../../docs/self-building.md:27 +#: ../../../docs/self-building.md:41 msgid "`matrix-bridge-appservice-slack`" msgstr "" -#: ../../../docs/self-building.md:28 +#: ../../../docs/self-building.md:42 msgid "`matrix-bridge-appservice-webhooks`" msgstr "" -#: ../../../docs/self-building.md:29 +#: ../../../docs/self-building.md:43 msgid "`matrix-bridge-beeper-linkedin`" msgstr "" -#: ../../../docs/self-building.md:30 +#: ../../../docs/self-building.md:44 msgid "`matrix-bridge-mautrix-facebook`" msgstr "" -#: ../../../docs/self-building.md:31 -msgid "`matrix-bridge-mautrix-hangouts`" -msgstr "" - -#: ../../../docs/self-building.md:32 +#: ../../../docs/self-building.md:45 msgid "`matrix-bridge-mautrix-googlechat`" msgstr "" -#: ../../../docs/self-building.md:33 +#: ../../../docs/self-building.md:46 msgid "`matrix-bridge-mautrix-telegram`" msgstr "" -#: ../../../docs/self-building.md:34 +#: ../../../docs/self-building.md:47 msgid "`matrix-bridge-mautrix-signal`" msgstr "" -#: ../../../docs/self-building.md:35 +#: ../../../docs/self-building.md:48 msgid "`matrix-bridge-mautrix-gmessages`" msgstr "" -#: ../../../docs/self-building.md:36 +#: ../../../docs/self-building.md:49 msgid "`matrix-bridge-mautrix-whatsapp`" msgstr "" -#: ../../../docs/self-building.md:37 +#: ../../../docs/self-building.md:50 msgid "`matrix-bridge-mx-puppet-steam`" msgstr "" -#: ../../../docs/self-building.md:38 +#: ../../../docs/self-building.md:51 msgid "`matrix-bot-mjolnir`" msgstr "" -#: ../../../docs/self-building.md:39 +#: ../../../docs/self-building.md:52 msgid "`matrix-bot-honoroit`" msgstr "" -#: ../../../docs/self-building.md:40 +#: ../../../docs/self-building.md:53 msgid "`matrix-bot-matrix-reminder-bot`" msgstr "" -#: ../../../docs/self-building.md:41 +#: ../../../docs/self-building.md:54 msgid "`matrix-bot-maubot`" msgstr "" -#: ../../../docs/self-building.md:42 -msgid "`matrix-email2matrix`" -msgstr "" - -#: ../../../docs/self-building.md:43 +#: ../../../docs/self-building.md:55 msgid "`matrix-pantalaimon`" msgstr "" -#: ../../../docs/self-building.md:45 +#: ../../../docs/self-building.md:57 msgid "Adding self-building support to other roles is welcome. Feel free to contribute!" msgstr "" -#: ../../../docs/self-building.md:47 +#: ../../../docs/self-building.md:59 msgid "If you'd like **to force self-building** even if an image is available for your architecture, look into the `matrix_*_self_build` variables provided by individual roles." msgstr "" diff --git a/i18n/translation-templates/docs/uninstalling.pot b/i18n/translation-templates/docs/uninstalling.pot index b5abf1eb1..edd0600e8 100644 --- a/i18n/translation-templates/docs/uninstalling.pot +++ b/i18n/translation-templates/docs/uninstalling.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,62 +16,62 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/uninstalling.md:1 +#: ../../../docs/uninstalling.md:9 msgid "Uninstalling" msgstr "" -#: ../../../docs/uninstalling.md:3 -msgid "⚠️ **Warnings**:" +#: ../../../docs/uninstalling.md:11 +msgid "[!WARNING]" msgstr "" -#: ../../../docs/uninstalling.md:4 +#: ../../../docs/uninstalling.md:12 msgid "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." msgstr "" -#: ../../../docs/uninstalling.md:5 +#: ../../../docs/uninstalling.md:13 msgid "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**." msgstr "" -#: ../../../docs/uninstalling.md:9 +#: ../../../docs/uninstalling.md:15 msgid "Uninstalling using a script" msgstr "" -#: ../../../docs/uninstalling.md:11 +#: ../../../docs/uninstalling.md:17 msgid "Installing places a `/matrix/bin/remove-all` script on the server." msgstr "" -#: ../../../docs/uninstalling.md:13 +#: ../../../docs/uninstalling.md:19 msgid "You can run it to to have it uninstall things for you automatically (see below). **Use with caution!**" msgstr "" -#: ../../../docs/uninstalling.md:15 +#: ../../../docs/uninstalling.md:21 msgid "Uninstalling manually" msgstr "" -#: ../../../docs/uninstalling.md:17 +#: ../../../docs/uninstalling.md:23 msgid "If you prefer to uninstall manually, run these commands (most are meant to be executed on the Matrix server itself):" msgstr "" -#: ../../../docs/uninstalling.md:19 +#: ../../../docs/uninstalling.md:25 msgid "ensure all Matrix services are stopped: `ansible-playbook -i inventory/hosts setup.yml --tags=stop` (if you can't get Ansible working to run this command, you can run `systemctl stop 'matrix*'` manually on the server)" msgstr "" -#: ../../../docs/uninstalling.md:21 +#: ../../../docs/uninstalling.md:27 msgid "delete the Matrix-related systemd `.service` and `.timer` files (`rm -f /etc/systemd/system/matrix*.{service,timer}`) and reload systemd (`systemctl daemon-reload`)" msgstr "" -#: ../../../docs/uninstalling.md:23 +#: ../../../docs/uninstalling.md:29 msgid "delete some cached Docker images (`docker system prune -a`) or just delete them all (`docker rmi $(docker images -aq)`)" msgstr "" -#: ../../../docs/uninstalling.md:25 +#: ../../../docs/uninstalling.md:31 msgid "delete the Docker networks: `docker network rm matrix matrix-coturn` (might have been deleted already if you ran the `docker system prune` command)" msgstr "" -#: ../../../docs/uninstalling.md:27 +#: ../../../docs/uninstalling.md:33 msgid "uninstall Docker itself, if necessary" msgstr "" -#: ../../../docs/uninstalling.md:29 +#: ../../../docs/uninstalling.md:35 msgid "delete the `/matrix` directory (`rm -rf /matrix`)" msgstr "" diff --git a/i18n/translation-templates/docs/updating-users-passwords.pot b/i18n/translation-templates/docs/updating-users-passwords.pot index 2de15287e..7105ced4f 100644 --- a/i18n/translation-templates/docs/updating-users-passwords.pot +++ b/i18n/translation-templates/docs/updating-users-passwords.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,74 +16,74 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../../docs/updating-users-passwords.md:1 +#: ../../../docs/updating-users-passwords.md:13 msgid "Updating users passwords" msgstr "" -#: ../../../docs/updating-users-passwords.md:3 +#: ../../../docs/updating-users-passwords.md:15 msgid "Option 1 (if you are using the integrated Postgres database):" msgstr "" -#: ../../../docs/updating-users-passwords.md:5 +#: ../../../docs/updating-users-passwords.md:17 msgid "**Notes**:" msgstr "" -#: ../../../docs/updating-users-passwords.md:6 +#: ../../../docs/updating-users-passwords.md:18 msgid "Make sure to adjust `USERNAME_HERE` and `PASSWORD_HERE`" msgstr "" -#: ../../../docs/updating-users-passwords.md:7 +#: ../../../docs/updating-users-passwords.md:19 msgid "For `USERNAME_HERE`, use a plain username like `alice`, not a full ID (`@alice:example.com`)" msgstr "" -#: ../../../docs/updating-users-passwords.md:9 +#: ../../../docs/updating-users-passwords.md:21 msgid "You can reset a user's password via the Ansible playbook:" msgstr "" -#: ../../../docs/updating-users-passwords.md:15 +#: ../../../docs/updating-users-passwords.md:27 msgid "**You can then log in with that user** via Element Web that this playbook has created for you at a URL like this: `https://element.example.com/`." msgstr "" -#: ../../../docs/updating-users-passwords.md:17 +#: ../../../docs/updating-users-passwords.md:29 msgid "Option 2 (if you are using an external Postgres server):" msgstr "" -#: ../../../docs/updating-users-passwords.md:19 +#: ../../../docs/updating-users-passwords.md:31 msgid "You can manually generate the password hash by using the command-line after **SSH**-ing to your server (requires that [all services have been started](installing.md#finalize-the-installation):" msgstr "" -#: ../../../docs/updating-users-passwords.md:25 -msgid "and then connecting to the postgres server and executing:" +#: ../../../docs/updating-users-passwords.md:37 +msgid "and then connecting to the Postgres server and executing:" msgstr "" -#: ../../../docs/updating-users-passwords.md:31 +#: ../../../docs/updating-users-passwords.md:43 msgid "where `` is the hash returned by the docker command above." msgstr "" -#: ../../../docs/updating-users-passwords.md:33 +#: ../../../docs/updating-users-passwords.md:45 msgid "Option 3:" msgstr "" -#: ../../../docs/updating-users-passwords.md:35 +#: ../../../docs/updating-users-passwords.md:47 msgid "Use the Synapse User Admin API as described here: https://github.com/element-hq/synapse/blob/master/docs/admin_api/user_admin_api.rst#reset-password" msgstr "" -#: ../../../docs/updating-users-passwords.md:37 +#: ../../../docs/updating-users-passwords.md:49 msgid "This requires an [access token](obtaining-access-tokens.md) from a server admin account. *This method will also log the user out of all of their clients while the other options do not.*" msgstr "" -#: ../../../docs/updating-users-passwords.md:39 +#: ../../../docs/updating-users-passwords.md:51 msgid "If you didn't make your account a server admin when you created it, you can learn how to switch it now by reading about it in [Adding/Removing Administrator privileges to an existing user in Synapse](registering-users.md#addingremoving-administrator-privileges-to-an-existing-user-in-synapse)." msgstr "" -#: ../../../docs/updating-users-passwords.md:41 +#: ../../../docs/updating-users-passwords.md:53 msgid "Example:" msgstr "" -#: ../../../docs/updating-users-passwords.md:43 +#: ../../../docs/updating-users-passwords.md:55 msgid "To set @alice:example.com's password to `correct_horse_battery_staple` you could use this curl command:" msgstr "" -#: ../../../docs/updating-users-passwords.md:49 +#: ../../../docs/updating-users-passwords.md:61 msgid "Make sure to replace `ACCESS_TOKEN_HERE` with the access token of the server admin account." msgstr "" diff --git a/i18n/translation-templates/i18n/README.pot b/i18n/translation-templates/i18n/README.pot index f7d1a72eb..6ba2edd5a 100644 --- a/i18n/translation-templates/i18n/README.pot +++ b/i18n/translation-templates/i18n/README.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: matrix-docker-ansible-deploy \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"POT-Creation-Date: 2025-11-06 23:09+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -53,7 +53,7 @@ msgid "[PUBLISHED_LANGUAGES](PUBLISHED_LANGUAGES): a list of languages that we p msgstr "" #: ../../README.md:23 -msgid "[.gitignore](.gitignore): a list of files and directories to ignore in the `i18n` directory. We intentionaly ignore translated results (`translations/` directories) for languages taht are still in progress. We only [publish translations in a new language](#publish-translations-in-a-new-language) when the translation progresses beyond a certain threshold." +msgid "[.gitignore](.gitignore): a list of files and directories to ignore in the `i18n` directory. We intentionally ignore translated results (`translations/` directories) for languages that are still in progress. We only [publish translations in a new language](#publish-translations-in-a-new-language) when the translation progresses beyond a certain threshold." msgstr "" #: ../../README.md:24 diff --git a/jitsi_jvb.yml b/jitsi_jvb.yml index 16acd0ee6..d57c15a97 100644 --- a/jitsi_jvb.yml +++ b/jitsi_jvb.yml @@ -1,5 +1,12 @@ +# SPDX-FileCopyrightText: 2022 Warren Bailey +# SPDX-FileCopyrightText: 2023 Antonis Christofides +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- -- name: "Set up additional Jitsi JVB servers" +- name: "Set up additional Jitsi Videobridge (JVB) servers" hosts: "jitsi_jvb_servers" become: true diff --git a/justfile b/justfile index ca57d6143..b44ac9b4f 100644 --- a/justfile +++ b/justfile @@ -1,6 +1,12 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + # Shows help default: - @{{ just_executable() }} --list --justfile {{ justfile() }} + @{{ just_executable() }} --list --justfile "{{ justfile() }}" # Pulls external Ansible roles roles: @@ -42,7 +48,7 @@ install-all *extra_args: (run-tags "install-all,ensure-matrix-users-created,star # Runs installation tasks for a single service install-service service *extra_args: - {{ just_executable() }} --justfile {{ justfile() }} run \ + {{ just_executable() }} --justfile "{{ justfile() }}" run \ --tags=install-{{ service }},start-group \ --extra-vars=group={{ service }} \ --extra-vars=devture_systemd_service_manager_service_restart_mode=one-by-one {{ extra_args }} @@ -56,7 +62,7 @@ run +extra_args: # Runs the playbook with the given list of comma-separated tags and optional arguments run-tags tags *extra_args: - {{ just_executable() }} --justfile {{ justfile() }} run --tags={{ tags }} {{ extra_args }} + {{ just_executable() }} --justfile "{{ justfile() }}" run --tags={{ tags }} {{ extra_args }} # Runs the playbook in user-registration mode register-user username password admin_yes_or_no *extra_args: @@ -67,15 +73,15 @@ start-all *extra_args: (run-tags "start-all" extra_args) # Starts a specific service group start-group group *extra_args: - @{{ just_executable() }} --justfile {{ justfile() }} run-tags start-group --extra-vars="group={{ group }}" {{ extra_args }} + @{{ just_executable() }} --justfile "{{ justfile() }}" run-tags start-group --extra-vars="group={{ group }}" {{ extra_args }} # Stops all services stop-all *extra_args: (run-tags "stop-all" extra_args) # Stops a specific service group stop-group group *extra_args: - @{{ just_executable() }} --justfile {{ justfile() }} run-tags stop-group --extra-vars="group={{ group }}" {{ extra_args }} + @{{ just_executable() }} --justfile "{{ justfile() }}" run-tags stop-group --extra-vars="group={{ group }}" {{ extra_args }} # Rebuilds the mautrix-meta-instagram Ansible role using the mautrix-meta-messenger role as a source rebuild-mautrix-meta-instagram: - /bin/bash {{ justfile_directory() }}/bin/rebuild-mautrix-meta-instagram.sh {{ justfile_directory() }}/roles/custom + /bin/bash "{{ justfile_directory() }}/bin/rebuild-mautrix-meta-instagram.sh" "{{ justfile_directory() }}/roles/custom" diff --git a/requirements.yml b/requirements.yml index 47990bf1f..6d215706c 100644 --- a/requirements.yml +++ b/requirements.yml @@ -1,74 +1,77 @@ --- - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-aux.git - version: v1.0.0-5 + version: v1.0.0-6 name: auxiliary - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg.git - version: v1.4.0-1.9.10-0 + version: v1.4.3-2.0.13-0 name: backup_borg -- src: git+https://github.com/devture/com.devture.ansible.role.container_socket_proxy.git - version: v0.2.0-0 +- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-container-socket-proxy.git + version: v0.4.2-1 name: container_socket_proxy - src: git+https://github.com/geerlingguy/ansible-role-docker - version: 7.4.5 + version: 7.9.0 name: docker - src: git+https://github.com/devture/com.devture.ansible.role.docker_sdk_for_python.git - version: 129c8590e106b83e6f4c259649a613c6279e937a + version: 542a2d68db4e9a8e9bb4b508052760b900c7dce6 name: docker_sdk_for_python - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-etherpad.git - version: v2.2.6-0 + version: v2.6.0-1 name: etherpad - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay.git - version: v4.98-r0-4-0 + version: v4.98.1-r0-2-2 name: exim_relay - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-grafana.git - version: v11.5.1-0 + version: v11.6.5-5 name: grafana - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-jitsi.git - version: v10008-0 + version: v10655-0 name: jitsi +- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server.git + version: v1.9.10-0 + name: livekit_server - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-ntfy.git - version: v2.11.0-1 + version: v2.15.0-0 name: ntfy - src: git+https://github.com/devture/com.devture.ansible.role.playbook_help.git - version: 201c939eed363de269a83ba29784fc3244846048 + version: 8630e4f1749bcb659c412820f754473f09055052 name: playbook_help - src: git+https://github.com/devture/com.devture.ansible.role.playbook_runtime_messages.git version: 9b4b088c62b528b73a9a7c93d3109b091dd42ec6 name: playbook_runtime_messages - src: git+https://github.com/devture/com.devture.ansible.role.playbook_state_preserver.git - version: ff2fd42e1c1a9e28e3312bbd725395f9c2fc7f16 + version: dd6e15246b7a9a2d921e0b3f9cd8a4a917a1bb2f name: playbook_state_preserver - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres.git - version: v17.2-0 + version: v18.1-3 name: postgres - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup.git - version: v17-0 + version: v18-0 name: postgres_backup - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus.git - version: v2.55.1-0 + version: v3.9.1-0 name: prometheus - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter.git - version: v1.8.2-2 + version: v1.9.1-13 name: prometheus_node_exporter - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter.git - version: v0.14.0-6 + version: v0.18.1-2 name: prometheus_postgres_exporter - src: git+https://github.com/devture/com.devture.ansible.role.systemd_docker_base.git - version: v1.3.0-0 + version: v1.4.1-0 name: systemd_docker_base - src: git+https://github.com/devture/com.devture.ansible.role.systemd_service_manager.git version: v1.0.0-4 name: systemd_service_manager - src: git+https://github.com/devture/com.devture.ansible.role.timesync.git - version: v1.0.0-0 + version: v1.1.0-1 name: timesync - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik.git - version: v3.3.3-0 + version: v3.6.6-0 name: traefik - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik-certs-dumper.git - version: v2.8.3-5 + version: v2.10.0-4 name: traefik_certs_dumper - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-valkey.git - version: v8.0.1-0 + version: v9.0.1-0 name: valkey diff --git a/roles/custom/matrix-alertmanager-receiver/defaults/main.yml b/roles/custom/matrix-alertmanager-receiver/defaults/main.yml index ea631464f..3e67e0e15 100644 --- a/roles/custom/matrix-alertmanager-receiver/defaults/main.yml +++ b/roles/custom/matrix-alertmanager-receiver/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 + --- # matrix-alertmanager-receiver is a service which receives webhook payloads from Prometheus' Alertmanager and forwards them to a Matrix room. @@ -6,7 +11,7 @@ matrix_alertmanager_receiver_enabled: true # renovate: datasource=docker depName=docker.io/metio/matrix-alertmanager-receiver -matrix_alertmanager_receiver_version: 2025.2.9 +matrix_alertmanager_receiver_version: 2025.12.24 matrix_alertmanager_receiver_scheme: https @@ -25,11 +30,12 @@ matrix_alertmanager_receiver_container_image_self_build_repo: https://github.com matrix_alertmanager_receiver_container_image_self_build_repo_version: "{{ 'main' if matrix_alertmanager_receiver_version == 'main' else matrix_alertmanager_receiver_version }}" matrix_alertmanager_receiver_container_src_path: "{{ matrix_alertmanager_receiver_base_path }}/container-src" -matrix_alertmanager_receiver_container_image: "{{ matrix_alertmanager_receiver_container_image_name_prefix }}metio/matrix-alertmanager-receiver:{{ matrix_alertmanager_receiver_container_image_tag }}" -matrix_alertmanager_receiver_container_image_name_prefix: "{{ 'localhost/' if matrix_alertmanager_receiver_container_image_self_build else matrix_alertmanager_receiver_container_image_registry_prefix }}" +matrix_alertmanager_receiver_container_image: "{{ matrix_alertmanager_receiver_container_image_registry_prefix }}metio/matrix-alertmanager-receiver:{{ matrix_alertmanager_receiver_container_image_tag }}" matrix_alertmanager_receiver_container_image_tag: "{{ matrix_alertmanager_receiver_version }}" matrix_alertmanager_receiver_container_image_force_pull: "{{ matrix_alertmanager_receiver_container_image.endswith(':main') }}" -matrix_alertmanager_receiver_container_image_registry_prefix: docker.io/ +matrix_alertmanager_receiver_container_image_registry_prefix: "{{ matrix_alertmanager_receiver_container_image_registry_prefix_upstream }}" +matrix_alertmanager_receiver_container_image_registry_prefix_upstream: "{{ matrix_alertmanager_receiver_container_image_registry_prefix_upstream_default }}" +matrix_alertmanager_receiver_container_image_registry_prefix_upstream_default: "docker.io/" # The base container network. It will be auto-created by this role if it doesn't exist already. matrix_alertmanager_receiver_container_network: '' @@ -153,30 +159,20 @@ matrix_alertmanager_receiver_config_templating_external_url_mapping: {} # "http://prometheus:8081": https://another.prometheus.example.com matrix_alertmanager_receiver_config_templating_generator_url_mapping: {} -# Controls the `templating.computed-values` configuration setting. -matrix_alertmanager_receiver_config_templating_computed_values: "{{ matrix_alertmanager_receiver_config_templating_computed_values_default + matrix_alertmanager_receiver_config_templating_computed_values_auto + matrix_alertmanager_receiver_config_templating_computed_values_custom }}" -matrix_alertmanager_receiver_config_templating_computed_values_default: - - values: # always set 'color' to 'yellow' - color: yellow - - values: # set 'color' to 'orange' when alert label 'severity' is 'warning' - color: orange - when-matching-labels: - severity: warning - - values: # set 'color' to 'red' when alert label 'severity' is 'critical' - color: red - when-matching-labels: - severity: critical - - values: # set 'color' to 'green' when alert status is 'resolved' - color: green - when-matching-status: resolved -matrix_alertmanager_receiver_config_templating_computed_values_auto: [] -matrix_alertmanager_receiver_config_templating_computed_values_custom: [] - # Controls the `templating.firing-template` configuration setting. matrix_alertmanager_receiver_config_templating_firing_template: |- {% raw %} + {{ $color := "yellow" }} + {{ if eq .Alert.Labels.severity "warning" }} + {{ $color = "orange" }} + {{ else if eq .Alert.Labels.severity "critical" }} + {{ $color = "red" }} + {{ end }} + {{ if eq .Alert.Status "resolved" }} + {{ $color = "green" }} + {{ end }}

- {{ .Alert.Status | ToUpper }} + {{ .Alert.Status | ToUpper }} {{ if .Alert.Labels.name }} {{ .Alert.Labels.name }} {{ else if .Alert.Labels.alertname }} @@ -205,7 +201,7 @@ matrix_alertmanager_receiver_config_templating_firing_template: |- # Controls the `templating.resolved-template` configuration setting. matrix_alertmanager_receiver_config_templating_resolved_template: |- {% raw %} - {{ .Alert.Status | ToUpper }} + {{ .Alert.Status | ToUpper }} {{ if .Alert.Labels.name }} {{ .Alert.Labels.name }} {{ else if .Alert.Labels.alertname }} diff --git a/roles/custom/matrix-alertmanager-receiver/tasks/install.yml b/roles/custom/matrix-alertmanager-receiver/tasks/install.yml index 50bb44627..d47c27837 100644 --- a/roles/custom/matrix-alertmanager-receiver/tasks/install.yml +++ b/roles/custom/matrix-alertmanager-receiver/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-alertmanager-receiver paths exist @@ -5,8 +10,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - path: "{{ matrix_alertmanager_receiver_base_path }}" when: true @@ -21,16 +26,16 @@ content: "{{ matrix_alertmanager_receiver_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_alertmanager_receiver_config_path }}/config.yml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-alertmanager-receiver support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_alertmanager_receiver_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels @@ -55,7 +60,7 @@ dest: "{{ matrix_alertmanager_receiver_container_src_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_alertmanager_receiver_git_pull_results - name: Ensure matrix-alertmanager-receiver container image is built diff --git a/roles/custom/matrix-alertmanager-receiver/tasks/main.yml b/roles/custom/matrix-alertmanager-receiver/tasks/main.yml index b6ff76aca..ac7500030 100644 --- a/roles/custom/matrix-alertmanager-receiver/tasks/main.yml +++ b/roles/custom/matrix-alertmanager-receiver/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-alertmanager-receiver/tasks/uninstall.yml b/roles/custom/matrix-alertmanager-receiver/tasks/uninstall.yml index f0a82acbf..71b76298d 100644 --- a/roles/custom/matrix-alertmanager-receiver/tasks/uninstall.yml +++ b/roles/custom/matrix-alertmanager-receiver/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-alertmanager-receiver service diff --git a/roles/custom/matrix-alertmanager-receiver/tasks/validate_config.yml b/roles/custom/matrix-alertmanager-receiver/tasks/validate_config.yml index 83591a956..55b79d2a0 100644 --- a/roles/custom/matrix-alertmanager-receiver/tasks/validate_config.yml +++ b/roles/custom/matrix-alertmanager-receiver/tasks/validate_config.yml @@ -1,9 +1,13 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-alertmanager-receiver 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_alertmanager_receiver_hostname', when: true} - {'name': 'matrix_alertmanager_receiver_path_prefix', when: true} @@ -12,3 +16,14 @@ - {'name': 'matrix_alertmanager_receiver_container_network', when: true} - {'name': 'matrix_alertmanager_receiver_metrics_proxying_hostname', when: "{{ matrix_alertmanager_receiver_metrics_proxying_enabled }}"} - {'name': 'matrix_alertmanager_receiver_metrics_proxying_path_prefix', when: "{{ matrix_alertmanager_receiver_metrics_proxying_enabled }}"} + +- name: (Deprecation) Catch and report renamed matrix-alertmanager-receiver variables + ansible.builtin.fail: + msg: >- + The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead. + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_alertmanager_receiver_container_image_name_prefix', 'new': 'matrix_alertmanager_receiver_container_image_registry_prefix'} + - {'old': 'matrix_alertmanager_receiver_config_templating_computed_values', '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-alertmanager-receiver 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-alertmanager-receiver 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-alertmanager-receiver -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-alertmanager-receiver 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-alertmanager-receiver 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-alertmanager-receiver 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-alertmanager-receiver/templates/systemd/matrix-alertmanager-receiver.service.j2.license b/roles/custom/matrix-alertmanager-receiver/templates/systemd/matrix-alertmanager-receiver.service.j2.license new file mode 100644 index 000000000..e18b238ea --- /dev/null +++ b/roles/custom/matrix-alertmanager-receiver/templates/systemd/matrix-alertmanager-receiver.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-appservice-double-puppet/defaults/main.yml b/roles/custom/matrix-appservice-double-puppet/defaults/main.yml index a8a0c8e51..33907875d 100644 --- a/roles/custom/matrix-appservice-double-puppet/defaults/main.yml +++ b/roles/custom/matrix-appservice-double-puppet/defaults/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- matrix_appservice_double_puppet_enabled: true diff --git a/roles/custom/matrix-appservice-double-puppet/tasks/install.yml b/roles/custom/matrix-appservice-double-puppet/tasks/install.yml index c0818477b..794f0ba99 100644 --- a/roles/custom/matrix-appservice-double-puppet/tasks/install.yml +++ b/roles/custom/matrix-appservice-double-puppet/tasks/install.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-appservice-double-puppet paths exist @@ -5,8 +9,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - path: "{{ matrix_appservice_double_puppet_base_path }}" when: true @@ -19,5 +23,5 @@ content: "{{ matrix_appservice_double_puppet_registration_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_double_puppet_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" diff --git a/roles/custom/matrix-appservice-double-puppet/tasks/main.yml b/roles/custom/matrix-appservice-double-puppet/tasks/main.yml index c7860d03b..fda0c1b13 100644 --- a/roles/custom/matrix-appservice-double-puppet/tasks/main.yml +++ b/roles/custom/matrix-appservice-double-puppet/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-appservice-double-puppet/tasks/uninstall.yml b/roles/custom/matrix-appservice-double-puppet/tasks/uninstall.yml index cc22920cc..0fd5d561c 100644 --- a/roles/custom/matrix-appservice-double-puppet/tasks/uninstall.yml +++ b/roles/custom/matrix-appservice-double-puppet/tasks/uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-appservice-double-puppet paths don't exist diff --git a/roles/custom/matrix-appservice-double-puppet/tasks/validate_config.yml b/roles/custom/matrix-appservice-double-puppet/tasks/validate_config.yml index 0151b1db1..97d482d6e 100644 --- a/roles/custom/matrix-appservice-double-puppet/tasks/validate_config.yml +++ b/roles/custom/matrix-appservice-double-puppet/tasks/validate_config.yml @@ -1,9 +1,13 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-appservice-double-puppet 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_appservice_double_puppet_registration_as_token', when: true} - {'name': 'matrix_appservice_double_puppet_registration_as_token', when: true} diff --git a/roles/custom/matrix-appservice-double-puppet/templates/registration.yaml.j2 b/roles/custom/matrix-appservice-double-puppet/templates/registration.yaml.j2 index e3d19ee1f..7702b2585 100644 --- a/roles/custom/matrix-appservice-double-puppet/templates/registration.yaml.j2 +++ b/roles/custom/matrix-appservice-double-puppet/templates/registration.yaml.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # The ID doesn't really matter, put whatever you want. id: {{ matrix_appservice_double_puppet_registration_id | to_json }} # The URL is intentionally left empty (null), as the homeserver shouldn't diff --git a/roles/custom/matrix-appservice-draupnir-for-all/defaults/main.yml b/roles/custom/matrix-appservice-draupnir-for-all/defaults/main.yml index 140b92d4a..2a38108bb 100644 --- a/roles/custom/matrix-appservice-draupnir-for-all/defaults/main.yml +++ b/roles/custom/matrix-appservice-draupnir-for-all/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 - 2025 Catalan Lover +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # A moderation tool for Matrix # Project source code URL: https://github.com/the-draupnir-project/Draupnir @@ -5,13 +12,15 @@ matrix_appservice_draupnir_for_all_enabled: true # renovate: datasource=docker depName=gnuxie/draupnir -matrix_appservice_draupnir_for_all_version: "v2.1.0" +matrix_appservice_draupnir_for_all_version: "v2.9.0" matrix_appservice_draupnir_for_all_container_image_self_build: false matrix_appservice_draupnir_for_all_container_image_self_build_repo: "https://github.com/the-draupnir-project/Draupnir.git" -matrix_appservice_draupnir_for_all_docker_image: "{{ matrix_appservice_draupnir_for_all_docker_image_name_prefix }}gnuxie/draupnir:{{ matrix_appservice_draupnir_for_all_version }}" -matrix_appservice_draupnir_for_all_docker_image_name_prefix: "{{ 'localhost/' if matrix_appservice_draupnir_for_all_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_appservice_draupnir_for_all_docker_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_draupnir_for_all_container_image_self_build else matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream }}" +matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream: "{{ matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream_default }}" +matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream_default: "docker.io/" +matrix_appservice_draupnir_for_all_docker_image: "{{ matrix_appservice_draupnir_for_all_docker_image_registry_prefix }}gnuxie/draupnir:{{ matrix_appservice_draupnir_for_all_version }}" matrix_appservice_draupnir_for_all_docker_image_force_pull: "{{ matrix_appservice_draupnir_for_all_docker_image.endswith(':latest') }}" matrix_appservice_draupnir_for_all_base_path: "{{ matrix_base_data_path }}/draupnir-for-all" @@ -41,14 +50,14 @@ matrix_appservice_draupnir_for_all_systemd_wanted_services_list: [] # anyone in this room can use the bot - secure your room! # This should be a room alias - not a matrix.to URL. # Note: Draupnir is fairly verbose - expect a lot of messages from it. -# This room is diffrent for Appservice Mode compared to normal mode. +# This room is different for Appservice Mode compared to normal mode. # In Appservice mode it provides functions like user management. -matrix_appservice_draupnir_for_all_master_control_room_alias: "" +matrix_appservice_draupnir_for_all_config_adminRoom: "" # noqa var-naming -# Placeholder Remenant of the fact that Cat belived Master Control Room to be separated from Access Control Policy List. -# The alias of the Policy list used to control who can provision a bot for them selfs. -# This should be a room alias - not a matrix.to URL. -# matrix_appservice_draupnir_for_all_management_policy_list_alias: "" +# Controls if the room state backing store is activated. +# Room state backing store makes restarts of the bot lightning fast as the bot does not suffer from amnesia. +# This config option has diminished improvements for bots on extremely fast homeservers or very very small bots on fast homeservers. +matrix_appservice_draupnir_for_all_config_roomStateBackingStore_enabled: false # noqa var-naming matrix_appservice_draupnir_for_all_database_username: matrix_appservice_draupnir_for_all matrix_appservice_draupnir_for_all_database_password: 'some-passsword' diff --git a/roles/custom/matrix-appservice-draupnir-for-all/tasks/main.yml b/roles/custom/matrix-appservice-draupnir-for-all/tasks/main.yml index 8048ee95a..51f5fe4f2 100644 --- a/roles/custom/matrix-appservice-draupnir-for-all/tasks/main.yml +++ b/roles/custom/matrix-appservice-draupnir-for-all/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Catalan Lover +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-appservice-draupnir-for-all/tasks/setup_install.yml b/roles/custom/matrix-appservice-draupnir-for-all/tasks/setup_install.yml index 6dc2bf95e..18e1d43d3 100644 --- a/roles/custom/matrix-appservice-draupnir-for-all/tasks/setup_install.yml +++ b/roles/custom/matrix-appservice-draupnir-for-all/tasks/setup_install.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Catalan Lover +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: @@ -8,8 +16,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_appservice_draupnir_for_all_base_path }}", when: true} - {path: "{{ matrix_appservice_draupnir_for_all_config_path }}", when: true} @@ -36,7 +44,7 @@ version: "{{ matrix_appservice_draupnir_for_all_docker_image.split(':')[1] }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_appservice_draupnir_for_all_git_pull_results when: "matrix_appservice_draupnir_for_all_container_image_self_build | bool" @@ -56,24 +64,24 @@ content: "{{ matrix_appservice_draupnir_for_all_configuration_appservice | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_draupnir_for_all_config_path }}/production-appservice.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-appservice-draupnir-for-all bot config installed ansible.builtin.copy: content: "{{ matrix_appservice_draupnir_for_all_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_draupnir_for_all_config_path }}/production-bots.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-appservice-draupnir-for-all registration.yaml installed ansible.builtin.copy: content: "{{ matrix_appservice_draupnir_for_all_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_draupnir_for_all_config_path }}/draupnir-for-all-registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-appservice-draupnir-for-all container network is created community.general.docker_network: diff --git a/roles/custom/matrix-appservice-draupnir-for-all/tasks/setup_uninstall.yml b/roles/custom/matrix-appservice-draupnir-for-all/tasks/setup_uninstall.yml index f81cbfef3..4ad172539 100644 --- a/roles/custom/matrix-appservice-draupnir-for-all/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-appservice-draupnir-for-all/tasks/setup_uninstall.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Catalan Lover +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-appservice-draupnir-for-all service diff --git a/roles/custom/matrix-appservice-draupnir-for-all/tasks/validate_config.yml b/roles/custom/matrix-appservice-draupnir-for-all/tasks/validate_config.yml index f0a1daf49..b4a8945b3 100644 --- a/roles/custom/matrix-appservice-draupnir-for-all/tasks/validate_config.yml +++ b/roles/custom/matrix-appservice-draupnir-for-all/tasks/validate_config.yml @@ -1,9 +1,27 @@ +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2024 Catalan Lover +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-bot-draupnir variables are undefined ansible.builtin.fail: msg: "The `{{ item }}` variable must be defined and have a non-null value." with_items: - - "matrix_appservice_draupnir_for_all_master_control_room_alias" + - "matrix_appservice_draupnir_for_all_config_adminRoom" - "matrix_bot_draupnir_container_network" - when: "vars[item] == '' or vars[item] is none" + when: "lookup('vars', item, default='') == '' or lookup('vars', item, default='') is none" + +- name: (Deprecation) Catch and report renamed matrix-appservice-draupnir-for-all 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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_appservice_draupnir_for_all_docker_image_name_prefix', 'new': 'matrix_appservice_draupnir_for_all_docker_image_registry_prefix'} + - {'old': 'matrix_appservice_draupnir_for_all_enable_room_state_backing_store', 'new': 'matrix_appservice_draupnir_for_all_config_roomStateBackingStore_enabled'} + - {'old': 'matrix_appservice_draupnir_for_all_master_control_room_alias', 'new': 'matrix_appservice_draupnir_for_all_config_adminRoom'} diff --git a/roles/custom/matrix-appservice-draupnir-for-all/templates/production-appservice.yaml.j2 b/roles/custom/matrix-appservice-draupnir-for-all/templates/production-appservice.yaml.j2 index e10952ef4..ea168dac9 100644 --- a/roles/custom/matrix-appservice-draupnir-for-all/templates/production-appservice.yaml.j2 +++ b/roles/custom/matrix-appservice-draupnir-for-all/templates/production-appservice.yaml.j2 @@ -1,3 +1,11 @@ +{# +SPDX-FileCopyrightText: 2024 MDAD project contributors +SPDX-FileCopyrightText: 2024 - 2025 Catalan Lover +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + homeserver: # The Matrix server name, this will be the name of the server in your Matrix ID. domain: "{{ matrix_domain }}" @@ -11,8 +19,14 @@ db: # A room you have created that scopes who can access the appservice. # See docs/access_control.md -adminRoom: "{{ matrix_appservice_draupnir_for_all_master_control_room_alias }}" +adminRoom: {{ matrix_appservice_draupnir_for_all_config_adminRoom | to_json }} # This is a web api that the widget connects to in order to interact with the appservice. webAPI: port: 9000 + +# The directory the bot should store various bits of information in +dataPath: "/data" + +roomStateBackingStore: + enabled: {{ matrix_appservice_draupnir_for_all_config_roomStateBackingStore_enabled | to_json }} diff --git a/roles/custom/matrix-appservice-draupnir-for-all/templates/production-bots.yaml.j2 b/roles/custom/matrix-appservice-draupnir-for-all/templates/production-bots.yaml.j2 index 46a7b4549..63eb20b22 100644 --- a/roles/custom/matrix-appservice-draupnir-for-all/templates/production-bots.yaml.j2 +++ b/roles/custom/matrix-appservice-draupnir-for-all/templates/production-bots.yaml.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2024 MDAD project contributors +SPDX-FileCopyrightText: 2024 - 2025 Catalan Lover + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # The log level of terminal (or container) output, # can be one of DEBUG, INFO, WARN and ERROR, in increasing order of importance and severity. # @@ -67,3 +74,20 @@ commands: - "brigading" - "harassment" - "disagreement" + +# Safe mode provides recovery options for some failure modes when Draupnir +# fails to start. For example, if the bot fails to resolve a room alias in +# a watched list, or if the server has parted from a protected room and can't +# find a way back in. Safe mode will provide different options to recover from +# these. Such as unprotecting the room or unwatching the policy list. +# By default Draupnir will boot into safe mode only when the failure mode +# is recoverable. +# It may be desirable to prevent the bot from starting into safe mode if you have +# a pager system when Draupnir is down, as Draupnir could prevent your monitoring +# system from identifying a failure to start. +#safeMode: +# # The option for entering safe mode when Draupnir fails to start up. +# # - "RecoveryOnly" will only start the bot in safe mode when there are recovery options available. This is the default. +# # - "Never" will never start the bot in safe mode when Draupnir fails to start normally. +# # - "Always" will always start the bot in safe mode when Draupnir fails to start normally. +# bootOption: RecoveryOnly diff --git a/roles/custom/matrix-appservice-draupnir-for-all/templates/systemd/matrix-appservice-draupnir-for-all.service.j2 b/roles/custom/matrix-appservice-draupnir-for-all/templates/systemd/matrix-appservice-draupnir-for-all.service.j2 index 303e9e614..e5ad7e97f 100644 --- a/roles/custom/matrix-appservice-draupnir-for-all/templates/systemd/matrix-appservice-draupnir-for-all.service.j2 +++ b/roles/custom/matrix-appservice-draupnir-for-all/templates/systemd/matrix-appservice-draupnir-for-all.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Draupnir for All appservice {% for service in matrix_appservice_draupnir_for_all_systemd_wanted_services_list %} @@ -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-appservice-draupnir-for-all 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-appservice-draupnir-for-all 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-draupnir-for-all 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-appservice-draupnir-for-all -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-appservice-draupnir-for-all 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-appservice-draupnir-for-all 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-draupnir-for-all 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-appservice-draupnir-for-all/templates/systemd/matrix-appservice-draupnir-for-all.service.j2.license b/roles/custom/matrix-appservice-draupnir-for-all/templates/systemd/matrix-appservice-draupnir-for-all.service.j2.license new file mode 100644 index 000000000..b39d4ce53 --- /dev/null +++ b/roles/custom/matrix-appservice-draupnir-for-all/templates/systemd/matrix-appservice-draupnir-for-all.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2024 MDAD project contributors +SPDX-FileCopyrightText: 2024 Catalan Lover +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-authentication-service/defaults/main.yml b/roles/custom/matrix-authentication-service/defaults/main.yml index 2936d313f..c09451829 100644 --- a/roles/custom/matrix-authentication-service/defaults/main.yml +++ b/roles/custom/matrix-authentication-service/defaults/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-authentication-service (MAS) is an OAuth 2.0 and OpenID Provider server for Matrix. @@ -17,9 +22,11 @@ matrix_authentication_service_container_repo_version: "{{ 'main' if matrix_authe matrix_authentication_service_container_src_files_path: "{{ matrix_base_data_path }}/matrix-authentication-service/container-src" # renovate: datasource=docker depName=ghcr.io/element-hq/matrix-authentication-service -matrix_authentication_service_version: 0.13.0 -matrix_authentication_service_container_image: "{{ matrix_authentication_service_container_image_name_prefix }}element-hq/matrix-authentication-service:{{ matrix_authentication_service_version }}" -matrix_authentication_service_container_image_name_prefix: "{{ 'localhost/' if matrix_authentication_service_container_image_self_build else 'ghcr.io/' }}" +matrix_authentication_service_version: 1.8.0 +matrix_authentication_service_container_image_registry_prefix: "{{ 'localhost/' if matrix_authentication_service_container_image_self_build else matrix_authentication_service_container_image_registry_prefix_upstream }}" +matrix_authentication_service_container_image_registry_prefix_upstream: "{{ matrix_authentication_service_container_image_registry_prefix_upstream_default }}" +matrix_authentication_service_container_image_registry_prefix_upstream_default: "ghcr.io/" +matrix_authentication_service_container_image: "{{ matrix_authentication_service_container_image_registry_prefix }}element-hq/matrix-authentication-service:{{ matrix_authentication_service_version }}" matrix_authentication_service_container_image_force_pull: "{{ matrix_authentication_service_container_image.endswith(':latest') }}" matrix_authentication_service_base_path: "{{ matrix_base_data_path }}/matrix-authentication-service" @@ -212,6 +219,11 @@ matrix_authentication_service_config_account_displayname_change_allowed: true # This has no effect if password login is disabled. matrix_authentication_service_config_account_password_registration_enabled: false +# Controls the `account.password_registration_email_required` configuration setting. +# +# Whether self-service password registrations require a valid email. +matrix_authentication_service_config_account_password_registration_email_required: true + # Controls the `account.password_change_allowed` configuration setting. # # Whether users are allowed to change their passwords. @@ -224,6 +236,24 @@ matrix_authentication_service_config_account_password_change_allowed: true # This has no effect if password login is disabled. matrix_authentication_service_config_account_password_recovery_enabled: false +# Controls the `account.account_deactivation_allowed` configuration setting. +# +# Whether users are allowed to delete their own account +matrix_authentication_service_config_account_account_deactivation_allowed: true + +# Controls the `account.login_with_email_allowed` configuration setting. +# +# Whether users can log in with their email address. +# This has no effect if password login is disabled. +matrix_authentication_service_config_account_login_with_email_allowed: false + +# Controls the `account.registration_token_required` configuration setting. +# +# Whether registration tokens are required for password registrations. +# When enabled, users must provide a valid registration token during password +# registration. This has no effect if password registration is disabled. +matrix_authentication_service_config_account_registration_token_required: false + ######################################################################################## # # # /Account configuration # @@ -307,6 +337,24 @@ matrix_authentication_service_config_secrets_keys: |- # # ######################################################################################## +# Controls the resources exposed by the `web` HTTP listener. +matrix_authentication_service_config_http_listener_web_resources: "{{ matrix_authentication_service_config_http_listener_web_resources_default + matrix_authentication_service_config_http_listener_web_resources_auto + matrix_authentication_service_config_http_listener_web_resources_custom }}" +matrix_authentication_service_config_http_listener_web_resources_default: |- + {{ + [ + {'name': 'discovery'}, + {'name': 'human'}, + {'name': 'oauth'}, + {'name': 'compat'}, + {'name': 'graphql'}, + {'name': 'assets'}, + ] + + + ([{'name': 'adminapi'}] if matrix_authentication_service_admin_api_enabled else []) + }} +matrix_authentication_service_config_http_listener_web_resources_auto: [] +matrix_authentication_service_config_http_listener_web_resources_custom: [] + # Controls the `http.public_base` configuration setting. matrix_authentication_service_config_http_public_base: "https://{{ matrix_authentication_service_hostname }}{{ '/' if matrix_authentication_service_path_prefix == '/' else (matrix_authentication_service_path_prefix + '/') }}" @@ -552,27 +600,34 @@ matrix_authentication_service_container_labels_additional_labels: '' matrix_authentication_service_syn2mas_start_wait_time_seconds: 5 -matrix_authentication_service_syn2mas_dry_run: false +# The syn2mas sub-command to run. +# Valid values: migrate, check +matrix_authentication_service_syn2mas_subcommand: migrate -# renovate: datasource=docker depName=ghcr.io/element-hq/matrix-authentication-service/syn2mas -matrix_authentication_service_syn2mas_version: 0.13.0 -matrix_authentication_service_syn2mas_container_image: "{{ matrix_authentication_service_container_image_name_prefix }}element-hq/matrix-authentication-service/syn2mas:{{ matrix_authentication_service_syn2mas_version }}" -matrix_authentication_service_syn2mas_container_image_name_prefix: "{{ 'localhost/' if matrix_authentication_service_container_image_self_build else 'ghcr.io/' }}" -matrix_authentication_service_syn2mas_container_image_force_pull: "{{ matrix_authentication_service_syn2mas_container_image.endswith(':latest') }}" +# Whether to pass a `--dry-run` flag to the 'migrate' sub-command. +# See `matrix_authentication_service_syn2mas_subcommand` +matrix_authentication_service_syn2mas_migrate_dry_run: false -matrix_authentication_service_syn2mas_container_image_self_build: "{{ matrix_authentication_service_container_image_self_build }}" +# Path to Synapse's homeserver.yaml configuration file. +matrix_authentication_service_syn2mas_synapse_homeserver_config_path: "" matrix_authentication_service_syn2mas_container_network: "{{ matrix_authentication_service_container_network }}" -# Path to Synapse's homeserver.yaml configuration file. -matrix_authentication_service_syn2mas_synapse_homeserver_config_path: "" +# Additional options passed to the syn2mas sub-command (e.g. `mas-cli syn2mas [OPTIONS] migrate|check`). +# Also see: `matrix_authentication_service_syn2mas_subcommand_extra_options` +# +# Example: +# matrix_authentication_service_syn2mas_command_extra_options: +# - "--something" +matrix_authentication_service_syn2mas_command_extra_options: [] -# Additional arguments passed to the syn2mas process. +# Additional options passed to the syn2mas sub-command (e.g. `mas-cli syn2mas migrate|check [OPTIONS]`). +# Also see: `matrix_authentication_service_syn2mas_command_extra_options` # # Example: -# matrix_authentication_service_syn2mas_process_extra_arguments: -# - "--upstreamProviderMapping oidc-keycloak:01H8PKNWKKRPCBW4YGH1RWV279" -matrix_authentication_service_syn2mas_process_extra_arguments: [] +# matrix_authentication_service_syn2mas_subcommand_extra_options: +# - "--dry-run" +matrix_authentication_service_syn2mas_subcommand_extra_options: [] ######################################################################################## # # @@ -595,6 +650,10 @@ matrix_authentication_service_syn2mas_process_extra_arguments: [] # - avoid setting up the "compatibility layer" (that is, avoid installing container labels that capture login endpoints like `/_matrix/client/*/login`, etc.) matrix_authentication_service_migration_in_progress: false +# Controls whether the admin API is enabled. +# Ref: https://element-hq.github.io/matrix-authentication-service/topics/admin-api.html#enabling-the-api +matrix_authentication_service_admin_api_enabled: false + ######################################################################################## # # # /Misc # diff --git a/roles/custom/matrix-authentication-service/tasks/install.yml b/roles/custom/matrix-authentication-service/tasks/install.yml index b766c1cb6..89ee7943b 100644 --- a/roles/custom/matrix-authentication-service/tasks/install.yml +++ b/roles/custom/matrix-authentication-service/tasks/install.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Matrix Authentication Service paths exist @@ -5,8 +9,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_authentication_service_base_path }}", when: true} - {path: "{{ matrix_authentication_service_bin_path }}", when: true} @@ -34,16 +38,16 @@ content: "{{ matrix_authentication_service_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_authentication_service_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure Matrix Authentication Service support files created ansible.builtin.template: src: "{{ item.src }}" dest: "{{ item.dest }}" mode: "{{ item.mode }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - src: "{{ role_path }}/templates/env.j2" dest: "{{ matrix_authentication_service_config_path }}/env" @@ -79,7 +83,7 @@ dest: "{{ matrix_authentication_service_container_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" - name: Ensure Matrix Authentication Service container image is built ansible.builtin.command: diff --git a/roles/custom/matrix-authentication-service/tasks/main.yml b/roles/custom/matrix-authentication-service/tasks/main.yml index c5a7e9c80..95c40fea7 100644 --- a/roles/custom/matrix-authentication-service/tasks/main.yml +++ b/roles/custom/matrix-authentication-service/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: @@ -5,18 +9,33 @@ - setup-matrix-authentication-service - install-all - install-matrix-authentication-service + - matrix-authentication-service-mas-cli-syn2mas block: - when: matrix_authentication_service_enabled | bool ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" +- tags: + - setup-all + - setup-matrix-authentication-service + - install-all + - install-matrix-authentication-service + block: - when: matrix_authentication_service_enabled | bool ansible.builtin.include_tasks: "{{ role_path }}/tasks/install.yml" +# The tag 'matrix-authentication-service-syn2mas' has been replaced by the tag 'matrix-authentication-service-mas-cli-syn2mas'. - tags: - matrix-authentication-service-syn2mas + block: + - name: Warn about deprecated tag + ansible.builtin.fail: + msg: "WARNING: The 'matrix-authentication-service-syn2mas' tag has been replaced by 'matrix-authentication-service-mas-cli-syn2mas'. Please update your command." + +- tags: + - matrix-authentication-service-mas-cli-syn2mas block: - when: matrix_authentication_service_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/syn2mas.yml" + ansible.builtin.include_tasks: "{{ role_path }}/tasks/mas_cli_syn2mas.yml" - tags: - matrix-authentication-service-mas-cli-doctor diff --git a/roles/custom/matrix-authentication-service/tasks/mas_cli_doctor.yml b/roles/custom/matrix-authentication-service/tasks/mas_cli_doctor.yml index 96689d6e2..a172f8629 100644 --- a/roles/custom/matrix-authentication-service/tasks/mas_cli_doctor.yml +++ b/roles/custom/matrix-authentication-service/tasks/mas_cli_doctor.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Matrix Authentication Service is started diff --git a/roles/custom/matrix-authentication-service/tasks/syn2mas.yml b/roles/custom/matrix-authentication-service/tasks/mas_cli_syn2mas.yml similarity index 50% rename from roles/custom/matrix-authentication-service/tasks/syn2mas.yml rename to roles/custom/matrix-authentication-service/tasks/mas_cli_syn2mas.yml index 821892f8d..93ffc4dcc 100644 --- a/roles/custom/matrix-authentication-service/tasks/syn2mas.yml +++ b/roles/custom/matrix-authentication-service/tasks/mas_cli_syn2mas.yml @@ -1,7 +1,12 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: - matrix_authentication_service_syn2mas_dry_run: "{{ matrix_authentication_service_syn2mas_dry_run | bool }}" + matrix_authentication_service_syn2mas_migrate_dry_run: "{{ matrix_authentication_service_syn2mas_migrate_dry_run | bool }}" - name: Abort, if not using Synapse when: not matrix_synapse_enabled | bool @@ -14,7 +19,7 @@ ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] | length == 0" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_authentication_service_syn2mas_synapse_homeserver_config_path', when: true} @@ -28,41 +33,8 @@ msg: "The Synapse homeserver config file does not exist at the specified path: {{ matrix_authentication_service_syn2mas_synapse_homeserver_config_path }}" when: not matrix_authentication_service_syn2mas_synapse_config_stat.stat.exists -- name: Ensure Matrix Authentication Service syn2mas container image is pulled - community.docker.docker_image: - name: "{{ matrix_authentication_service_syn2mas_container_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_authentication_service_syn2mas_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_authentication_service_syn2mas_container_image_force_pull }}" - when: "not matrix_authentication_service_syn2mas_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_authentication_service_syn2mas_container_image_self_build | bool" - block: - - name: Ensure Matrix Authentication Service repository is present on self-build - ansible.builtin.git: - repo: "{{ matrix_authentication_service_container_repo }}" - version: "{{ matrix_authentication_service_container_repo_version }}" - dest: "{{ matrix_authentication_service_container_src_files_path }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_authentication_service_git_pull_results - - - name: Ensure Matrix Authentication Service syn2mas container image is built - ansible.builtin.command: - cmd: |- - {{ devture_systemd_docker_base_host_command_docker }} buildx build - --tag={{ matrix_authentication_service_syn2mas_container_image }} - --file={{ matrix_authentication_service_container_src_files_path }}/tools/syn2mas/Dockerfile - {{ matrix_authentication_service_container_src_files_path }}/tools/syn2mas - changed_when: true - - name: Ensure Synapse is stopped - when: not matrix_authentication_service_syn2mas_dry_run | bool + when: not matrix_authentication_service_syn2mas_migrate_dry_run | bool ansible.builtin.service: name: matrix-synapse state: stopped @@ -76,14 +48,19 @@ # # Still, it's probably safer to stop it anyway. - name: Ensure Matrix Authentication Service is stopped + when: not matrix_authentication_service_syn2mas_migrate_dry_run | bool ansible.builtin.service: name: matrix-authentication-service state: stopped register: matrix_authentication_service_mas_ensure_stopped_result +# This is similar to the command found in the systemd service file. +# +# We cannot use `docker exec` with the existing Matrix Authentication Service container here, +# because we need an additional mount (the Synapse homeserver config). - name: Generate syn2mas migration command ansible.builtin.set_fact: - matrix_authentication_service_syn2mas_migration_command: >- + matrix_authentication_service_mas_cli_syn2mas_command: >- {{ devture_systemd_docker_base_host_command_docker }} run --rm --name=matrix-authentication-service-syn2mas @@ -91,14 +68,16 @@ --user={{ matrix_authentication_service_uid }}:{{ matrix_authentication_service_gid }} --cap-drop=ALL --network={{ matrix_authentication_service_syn2mas_container_network }} + --mount type=bind,src={{ matrix_authentication_service_config_path }}/config.yaml,dst=/config.yaml,ro + --mount type=bind,src={{ matrix_authentication_service_data_keys_path }},dst=/keys,ro --mount type=bind,src={{ matrix_authentication_service_syn2mas_synapse_homeserver_config_path }},dst=/homeserver.yaml,ro - --mount type=bind,src={{ matrix_authentication_service_config_path }}/config.yaml,dst=/mas-config.yaml,ro - {{ matrix_authentication_service_syn2mas_container_image }} - --command=migrate - --synapseConfigFile=/homeserver.yaml - --masConfigFile=/mas-config.yaml - {{ matrix_authentication_service_syn2mas_process_extra_arguments | join(' ') }} - {% if matrix_authentication_service_syn2mas_dry_run | bool %}--dryRun{% endif %} + {{ matrix_authentication_service_container_image }} + syn2mas + --synapse-config=/homeserver.yaml + {{ matrix_authentication_service_syn2mas_command_extra_options | join(' ') }} + {{ matrix_authentication_service_syn2mas_subcommand }} + {{ '--dry-run' if matrix_authentication_service_syn2mas_migrate_dry_run and matrix_authentication_service_syn2mas_subcommand == 'migrate' else '' }} + {{ matrix_authentication_service_syn2mas_subcommand_extra_options | join(' ') }} tags: - skip_ansible_lint @@ -106,33 +85,33 @@ # See: https://ansibledaily.com/print-to-standard-output-without-escaping/ # # We want to run `debug: msg=".."`, but that dumps it as JSON and escapes double quotes within it, -# which ruins the command (`matrix_authentication_service_syn2mas_migration_command`). +# which ruins the command (`matrix_authentication_service_mas_cli_syn2mas_command`). - name: Note about syn2mas migration ansible.builtin.set_fact: dummy: true with_items: - >- - Running syn2mas migration using the following command: `{{ matrix_authentication_service_syn2mas_migration_command }}`. - If this crashes, you can stop Synapse (`systemctl stop matrix-synapse`) and run the command manually. + Running syn2mas migration using the following command: `{{ matrix_authentication_service_mas_cli_syn2mas_command }}`. + If this crashes, you can stop Synapse (`systemctl stop matrix-synapse`), start Matrix Authentication Service (`systemctl start matrix-authentication-service`) and run the command manually. - name: Perform syn2mas migration ansible.builtin.command: - cmd: "{{ matrix_authentication_service_syn2mas_migration_command }}" - register: matrix_authentication_service_syn2mas_migration_command_result - changed_when: matrix_authentication_service_syn2mas_migration_command_result.rc == 0 + cmd: "{{ matrix_authentication_service_mas_cli_syn2mas_command }}" + register: matrix_authentication_service_mas_cli_syn2mas_command_result + changed_when: matrix_authentication_service_mas_cli_syn2mas_command_result.rc == 0 - name: Print syn2mas migration command result ansible.builtin.debug: - var: matrix_authentication_service_syn2mas_migration_command_result + var: matrix_authentication_service_mas_cli_syn2mas_command_result - name: Ensure Synapse is started (if it previously was) - when: "not matrix_authentication_service_syn2mas_dry_run and matrix_authentication_service_synapse_ensure_stopped_result.changed" + when: "not matrix_authentication_service_syn2mas_migrate_dry_run and matrix_authentication_service_mas_cli_syn2mas_command_result.changed" ansible.builtin.service: name: matrix-synapse state: started - name: Ensure Matrix Authentication Service is started (if it previously was) - when: "not matrix_authentication_service_syn2mas_dry_run and matrix_authentication_service_mas_ensure_stopped_result.changed" + when: "not matrix_authentication_service_syn2mas_migrate_dry_run and matrix_authentication_service_mas_ensure_stopped_result.changed" ansible.builtin.service: name: matrix-authentication-service state: started diff --git a/roles/custom/matrix-authentication-service/tasks/register_user.yml b/roles/custom/matrix-authentication-service/tasks/register_user.yml index 9aef7ab47..34abb6b7a 100644 --- a/roles/custom/matrix-authentication-service/tasks/register_user.yml +++ b/roles/custom/matrix-authentication-service/tasks/register_user.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if playbook called incorrectly diff --git a/roles/custom/matrix-authentication-service/tasks/uninstall.yml b/roles/custom/matrix-authentication-service/tasks/uninstall.yml index e7e0dfe43..4d7938fbd 100644 --- a/roles/custom/matrix-authentication-service/tasks/uninstall.yml +++ b/roles/custom/matrix-authentication-service/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-authentication-service service diff --git a/roles/custom/matrix-authentication-service/tasks/util/prepare_key.yml b/roles/custom/matrix-authentication-service/tasks/util/prepare_key.yml index 79fdc2e73..bd487b201 100644 --- a/roles/custom/matrix-authentication-service/tasks/util/prepare_key.yml +++ b/roles/custom/matrix-authentication-service/tasks/util/prepare_key.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Prepare Matrix Authentication Service private key file path ({{ private_key_definition.key_file }}) @@ -9,4 +13,4 @@ cmd: "{{ private_key_definition.generation_command | replace('__KEY_FILE_PATH__', matrix_authentication_service_private_key_file_path) }}" creates: "{{ matrix_authentication_service_private_key_file_path }}" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" diff --git a/roles/custom/matrix-authentication-service/tasks/validate_config.yml b/roles/custom/matrix-authentication-service/tasks/validate_config.yml index 70cf3662d..95a2badb0 100644 --- a/roles/custom/matrix-authentication-service/tasks/validate_config.yml +++ b/roles/custom/matrix-authentication-service/tasks/validate_config.yml @@ -1,10 +1,15 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-authentication-service 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] | length == 0" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_authentication_service_hostname', when: true} - {'name': 'matrix_authentication_service_config_database_username', when: true} @@ -29,3 +34,21 @@ ansible.builtin.fail: msg: "matrix_authentication_service_config_email_transport must be one of: blackhole, smtp, or aws_ses" when: "matrix_authentication_service_config_email_transport not in ['blackhole', 'smtp', 'aws_ses']" + +- name: (Deprecation) Catch and report renamed matrix-authentication-service 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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_authentication_service_container_image_name_prefix', 'new': 'matrix_authentication_service_container_image_registry_prefix'} + - {'old': 'matrix_authentication_service_syn2mas_container_image_name_prefix', 'new': 'matrix_authentication_service_syn2mas_container_image_registry_prefix'} + - {'old': 'matrix_authentication_service_syn2mas_container_image', 'new': ''} + - {'old': 'matrix_authentication_service_syn2mas_container_image_registry_prefix', 'new': ''} + - {'old': 'matrix_authentication_service_syn2mas_container_image_registry_prefix_upstream', 'new': ''} + - {'old': 'matrix_authentication_service_syn2mas_container_image_registry_prefix_upstream_default', 'new': ''} + - {'old': 'matrix_authentication_service_syn2mas_container_image_force_pull', 'new': ''} + - {'old': 'matrix_authentication_service_syn2mas_container_image_self_build', 'new': ''} + - {'old': 'matrix_authentication_service_syn2mas_process_extra_arguments', 'new': 'matrix_authentication_service_syn2mas_command_extra_options or matrix_authentication_service_syn2mas_subcommand_extra_options'} + - {'old': 'matrix_authentication_service_syn2mas_dry_run', 'new': 'matrix_authentication_service_syn2mas_migrate_dry_run'} diff --git a/roles/custom/matrix-authentication-service/templates/bin/mas-cli.j2 b/roles/custom/matrix-authentication-service/templates/bin/mas-cli.j2 index d4d1d9c1e..b6c05f6fe 100644 --- a/roles/custom/matrix-authentication-service/templates/bin/mas-cli.j2 +++ b/roles/custom/matrix-authentication-service/templates/bin/mas-cli.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True #!/bin/bash args=$@ diff --git a/roles/custom/matrix-authentication-service/templates/bin/mas-cli.j2.license b/roles/custom/matrix-authentication-service/templates/bin/mas-cli.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-authentication-service/templates/bin/mas-cli.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-authentication-service/templates/bin/register-user.j2 b/roles/custom/matrix-authentication-service/templates/bin/register-user.j2 index 54d60e8b9..8c159eaa9 100644 --- a/roles/custom/matrix-authentication-service/templates/bin/register-user.j2 +++ b/roles/custom/matrix-authentication-service/templates/bin/register-user.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True #!/bin/bash if [ $# -ne 3 ]; then diff --git a/roles/custom/matrix-authentication-service/templates/bin/register-user.j2.license b/roles/custom/matrix-authentication-service/templates/bin/register-user.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-authentication-service/templates/bin/register-user.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-authentication-service/templates/config.yaml.j2 b/roles/custom/matrix-authentication-service/templates/config.yaml.j2 index f53b3c94c..0060584be 100644 --- a/roles/custom/matrix-authentication-service/templates/config.yaml.j2 +++ b/roles/custom/matrix-authentication-service/templates/config.yaml.j2 @@ -1,14 +1,8 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True http: listeners: - name: web - resources: - - name: discovery - - name: human - - name: oauth - - name: compat - - name: graphql - - name: assets + resources: {{ matrix_authentication_service_config_http_listener_web_resources | to_json }} binds: - address: '[::]:8080' proxy_protocol: false @@ -71,8 +65,12 @@ account: email_change_allowed: {{ matrix_authentication_service_config_account_email_change_allowed | to_json }} displayname_change_allowed: {{ matrix_authentication_service_config_account_displayname_change_allowed | to_json }} password_registration_enabled: {{ matrix_authentication_service_config_account_password_registration_enabled | to_json }} + password_registration_email_required: {{ matrix_authentication_service_config_account_password_registration_email_required | to_json }} password_change_allowed: {{ matrix_authentication_service_config_account_password_change_allowed | to_json }} password_recovery_enabled: {{ matrix_authentication_service_config_account_password_recovery_enabled | to_json }} + account_deactivation_allowed: {{ matrix_authentication_service_config_account_account_deactivation_allowed | to_json }} + login_with_email_allowed: {{ matrix_authentication_service_config_account_login_with_email_allowed | to_json }} + registration_token_required: {{ matrix_authentication_service_config_account_registration_token_required | to_json }} clients: {{ matrix_authentication_service_config_clients | to_json }} diff --git a/roles/custom/matrix-authentication-service/templates/config.yaml.j2.license b/roles/custom/matrix-authentication-service/templates/config.yaml.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-authentication-service/templates/config.yaml.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-authentication-service/templates/env.j2 b/roles/custom/matrix-authentication-service/templates/env.j2 index 80c4290de..3a0423c61 100644 --- a/roles/custom/matrix-authentication-service/templates/env.j2 +++ b/roles/custom/matrix-authentication-service/templates/env.j2 @@ -1 +1,7 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {{ matrix_authentication_service_environment_variables_extension }} diff --git a/roles/custom/matrix-authentication-service/templates/labels.j2 b/roles/custom/matrix-authentication-service/templates/labels.j2 index 461c7abd7..f66cf4c7f 100644 --- a/roles/custom/matrix-authentication-service/templates/labels.j2 +++ b/roles/custom/matrix-authentication-service/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_authentication_service_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-authentication-service/templates/provider/anthropic-config.yml.j2 b/roles/custom/matrix-authentication-service/templates/provider/anthropic-config.yml.j2 index f1a23ac5a..97ac3c477 100644 --- a/roles/custom/matrix-authentication-service/templates/provider/anthropic-config.yml.j2 +++ b/roles/custom/matrix-authentication-service/templates/provider/anthropic-config.yml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True base_url: {{ matrix_authentication_service_config_agents_static_definitions_anthropic_config_base_url | to_json }} api_key: {{ matrix_authentication_service_config_agents_static_definitions_anthropic_config_api_key | to_json }} diff --git a/roles/custom/matrix-authentication-service/templates/provider/anthropic-config.yml.j2.license b/roles/custom/matrix-authentication-service/templates/provider/anthropic-config.yml.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-authentication-service/templates/provider/anthropic-config.yml.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-authentication-service/templates/provider/groq-config.yml.j2 b/roles/custom/matrix-authentication-service/templates/provider/groq-config.yml.j2 index c1c381ca3..6bafce672 100644 --- a/roles/custom/matrix-authentication-service/templates/provider/groq-config.yml.j2 +++ b/roles/custom/matrix-authentication-service/templates/provider/groq-config.yml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True base_url: {{ matrix_authentication_service_config_agents_static_definitions_groq_config_base_url | to_json }} api_key: {{ matrix_authentication_service_config_agents_static_definitions_groq_config_api_key | to_json }} diff --git a/roles/custom/matrix-authentication-service/templates/provider/groq-config.yml.j2.license b/roles/custom/matrix-authentication-service/templates/provider/groq-config.yml.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-authentication-service/templates/provider/groq-config.yml.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-authentication-service/templates/provider/mistral-config.yml.j2 b/roles/custom/matrix-authentication-service/templates/provider/mistral-config.yml.j2 index 5843ba4d6..5e1265f39 100644 --- a/roles/custom/matrix-authentication-service/templates/provider/mistral-config.yml.j2 +++ b/roles/custom/matrix-authentication-service/templates/provider/mistral-config.yml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True base_url: {{ matrix_authentication_service_config_agents_static_definitions_mistral_config_base_url | to_json }} api_key: {{ matrix_authentication_service_config_agents_static_definitions_mistral_config_api_key | to_json }} diff --git a/roles/custom/matrix-authentication-service/templates/provider/mistral-config.yml.j2.license b/roles/custom/matrix-authentication-service/templates/provider/mistral-config.yml.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-authentication-service/templates/provider/mistral-config.yml.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-authentication-service/templates/provider/openai-config.yml.j2 b/roles/custom/matrix-authentication-service/templates/provider/openai-config.yml.j2 index fcc462d1b..63a10e30e 100644 --- a/roles/custom/matrix-authentication-service/templates/provider/openai-config.yml.j2 +++ b/roles/custom/matrix-authentication-service/templates/provider/openai-config.yml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True base_url: {{ matrix_authentication_service_config_agents_static_definitions_openai_config_base_url | to_json }} api_key: {{ matrix_authentication_service_config_agents_static_definitions_openai_config_api_key | to_json }} diff --git a/roles/custom/matrix-authentication-service/templates/provider/openai-config.yml.j2.license b/roles/custom/matrix-authentication-service/templates/provider/openai-config.yml.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-authentication-service/templates/provider/openai-config.yml.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-authentication-service/templates/systemd/matrix-authentication-service.service.j2 b/roles/custom/matrix-authentication-service/templates/systemd/matrix-authentication-service.service.j2 index c8b487138..6b6d042a7 100644 --- a/roles/custom/matrix-authentication-service/templates/systemd/matrix-authentication-service.service.j2 +++ b/roles/custom/matrix-authentication-service/templates/systemd/matrix-authentication-service.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Authentication Service {% for service in matrix_authentication_service_systemd_required_services_list %} @@ -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-authentication-service 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-authentication-service 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-authentication-service 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-authentication-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-authentication-service 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-authentication-service 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-authentication-service 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-authentication-service/templates/systemd/matrix-authentication-service.service.j2.license b/roles/custom/matrix-authentication-service/templates/systemd/matrix-authentication-service.service.j2.license new file mode 100644 index 000000000..e18b238ea --- /dev/null +++ b/roles/custom/matrix-authentication-service/templates/systemd/matrix-authentication-service.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-authentication-service/vars/main.yml b/roles/custom/matrix-authentication-service/vars/main.yml index 4bedfdbfc..45e7ad639 100644 --- a/roles/custom/matrix-authentication-service/vars/main.yml +++ b/roles/custom/matrix-authentication-service/vars/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Like `matrix_authentication_service_config_http_public_base` but a private base URL only accessible from within the container network. diff --git a/roles/custom/matrix-base/defaults/main.yml b/roles/custom/matrix-base/defaults/main.yml index 8dabc239d..647fa55cb 100644 --- a/roles/custom/matrix-base/defaults/main.yml +++ b/roles/custom/matrix-base/defaults/main.yml @@ -1,3 +1,32 @@ +# SPDX-FileCopyrightText: 2019 - 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Edgars Voroboks +# SPDX-FileCopyrightText: 2019 Lyubomir Popov +# SPDX-FileCopyrightText: 2019 Stuart Mumford +# SPDX-FileCopyrightText: 2020 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2020 Alin Trăistaru +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 Horvath Gergely +# SPDX-FileCopyrightText: 2020 Tobias Küchel +# SPDX-FileCopyrightText: 2021 Blaž Tomažič +# SPDX-FileCopyrightText: 2021 Krisztian Szegi +# SPDX-FileCopyrightText: 2021 Yannick Goossens +# SPDX-FileCopyrightText: 2021 boris runakov +# SPDX-FileCopyrightText: 2022 - 2025 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 Charles Wright +# SPDX-FileCopyrightText: 2022 Julian Foad +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Benjamin Kampmann +# SPDX-FileCopyrightText: 2023 Jayesh Nirve +# SPDX-FileCopyrightText: 2023 Johan Swetzén +# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# SPDX-FileCopyrightText: 2024 László Várady +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # The bare domain name which represents your Matrix identity. @@ -19,6 +48,12 @@ matrix_bridges_encryption_enabled: false # Global var to make encryption default/optional across all bridges with encryption support matrix_bridges_encryption_default: "{{ matrix_bridges_encryption_enabled }}" +# Global var for enabling msc4190 (On supported bridges) +matrix_bridges_msc4190_enabled: "{{ matrix_authentication_service_enabled and matrix_bridges_encryption_enabled }}" + +# Global var for enabling bridge self-signing ( On supported bridges) +matrix_bridges_self_sign_enabled: "{{ matrix_bridges_msc4190_enabled }}" + # Global var to enable/disable relay mode across all bridges with relay mode support matrix_bridges_relay_enabled: false @@ -49,7 +84,7 @@ matrix_monitoring_container_network: matrix-monitoring matrix_homeserver_enabled: true # This will contain the homeserver implementation that is in use. -# Valid values: synapse, dendrite, conduit, conduwuit +# Valid values: synapse, dendrite, conduit, conduwuit, continuwuity # # By default, we use Synapse, because it's the only full-featured Matrix server at the moment. # @@ -80,6 +115,9 @@ matrix_server_fqn_cinny: "cinny.{{ matrix_domain }}" # This is where you access the SchildiChat Web from (if enabled via matrix_client_schildichat_enabled; disabled by default). matrix_server_fqn_schildichat: "schildichat.{{ matrix_domain }}" +# This is where you access the FluffyChat Web from (if enabled via matrix_client_fluffychat_enabled; disabled by default). +matrix_server_fqn_fluffychat: "fluffychat.{{ matrix_domain }}" + # This is where you access the Buscarron bot from (if enabled via matrix_bot_buscarron_enabled; disabled by default). matrix_server_fqn_buscarron: "buscarron.{{ matrix_domain }}" @@ -110,6 +148,9 @@ matrix_server_fqn_ntfy: "ntfy.{{ matrix_domain }}" # This is where you access rageshake. matrix_server_fqn_rageshake: "rageshake.{{ matrix_domain }}" +# This is where you access Matrix.to. +matrix_server_fqn_matrixto: "mt.{{ matrix_domain }}" + matrix_federation_public_port: 8448 # The name of the Traefik entrypoint for handling Matrix Federation @@ -126,20 +167,29 @@ matrix_federation_traefik_entrypoint_tls: true # Recognized values by us are 'amd64', 'arm32' and 'arm64'. # Not all architectures support all services, so your experience (on non-amd64) may vary. # See docs/alternative-architectures.md -matrix_architecture: "{{ 'amd64' if ansible_architecture == 'x86_64' else ('arm64' if ansible_architecture == 'aarch64' else ('arm32' if ansible_architecture.startswith('armv') else '')) }}" +matrix_architecture: "{{ 'amd64' if ansible_facts.architecture == 'x86_64' else ('arm64' if ansible_facts.architecture == 'aarch64' else ('arm32' if ansible_facts.architecture.startswith('armv') else '')) }}" # The architecture for Debian packages. # See: https://wiki.debian.org/SupportedArchitectures # We just remap from our `matrix_architecture` values to what Debian and possibly other distros call things. matrix_debian_arch: "{{ 'armhf' if matrix_architecture == 'arm32' else matrix_architecture }}" -matrix_container_global_registry_prefix: "docker.io/" +# If specified, the playbook will override the default registry prefix for all components. +# +# This is to be used when you've mirrored all the necessary container images (from their respective registries) by yourself. +# +# Example value: "registry.example.com/" (note the trailing `/`). +matrix_container_global_registry_prefix_override: "" + +matrix_user_name: "matrix" +matrix_user_system: true +matrix_user_shell: /sbin/nologin -matrix_user_username: "matrix" -matrix_user_groupname: "matrix" +matrix_group_name: "matrix" +matrix_group_system: true -# By default, the playbook creates the user (`matrix_user_username`) -# and group (`matrix_user_groupname`) with a random ID. +# By default, the playbook creates the user (`matrix_user_name`) +# and group (`matrix_group_name`) with a random ID. # To use a specific user/group ID, override these variables. matrix_user_uid: ~ matrix_user_gid: ~ @@ -173,7 +223,7 @@ matrix_homeserver_container_url: "http://{{ matrix_homeserver_container_client_a # Specifies where the homeserver's Client-Server API is on the container network (matrix_homeserver_container_network). # Where this is depends on whether there's a reverse-proxy in front of the homeserver, which homeserver it is, etc. -# This likely gets overriden elsewhere. +# This likely gets overridden elsewhere. matrix_homeserver_container_client_api_endpoint: "" # Specifies where the homeserver's Federation API is on the container network (matrix_homeserver_container_network). @@ -181,7 +231,7 @@ matrix_homeserver_container_federation_url: "http://{{ matrix_homeserver_contain # Specifies where the homeserver's Federation API is on the container network (matrix_homeserver_container_network). # Where this is depends on whether there's a reverse-proxy in front of the homeserver, which homeserver it is, etc. -# This likely gets overriden elsewhere. +# This likely gets overridden elsewhere. matrix_homeserver_container_federation_api_endpoint: "" # Specifies the public url of the Sync v3 (sliding-sync) API. @@ -223,7 +273,7 @@ matrix_metrics_exposure_http_basic_auth_users: '' # - nevertheless, the playbook expects that you would install Traefik yourself via other means # - you should make sure your Traefik configuration is compatible with what the playbook would have configured (web, web-secure, matrix-federation entrypoints, etc.) # - you need to set `matrix_playbook_reverse_proxyable_services_additional_network` to the name of your Traefik network -# - Traefik certs dumper will be enabled by default (`traefik_certs_dumper_enabled`). You need to point it to your Traefik's SSL certificates (`traefik_certs_dumper_ssl_dir_path`) +# - Traefik certs dumper will be enabled by default (`traefik_certs_dumper_enabled`). You need to point it to your Traefik's SSL certificates (`traefik_certs_dumper_ssl_path`) # # - `none` # - no reverse-proxy will be installed @@ -270,7 +320,14 @@ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_name: "{{ matrix matrix_playbook_public_matrix_federation_api_traefik_entrypoint_port: "{{ matrix_federation_public_port }}" matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port: "{{ matrix_federation_public_port }}" matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port_udp: "{{ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http3_advertisedPort if matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http3_enabled else '' }}" -matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config: "{{ (matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_default | combine (matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_auto)) | combine(matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom, recursive=True) }}" +matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config: "{{ (matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_default | combine(matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_auto)) | combine(matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom, recursive=True) }}" +# Traefik v3.6.3+ blocks encoded characters in request paths by default for security. +# Matrix API endpoints require encoded slashes and hashes in endpoints containing room IDs, room aliases, etc. +# Ref: +# - https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4798 +# - https://doc.traefik.io/traefik/migrate/v3/#v364 +matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedSlash: true # noqa: var-naming[pattern] +matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedHash: true # noqa: var-naming[pattern] matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http3_enabled: true matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http3_advertisedPort: "{{ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_port }}" # noqa var-naming matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_transport_respondingTimeouts_readTimeout: "{{ traefik_config_entrypoint_web_secure_transport_respondingTimeouts_readTimeout }}" # noqa var-naming @@ -280,6 +337,19 @@ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_default: {{ {} + | combine( + ( + { + 'http': { + 'encodedCharacters': { + 'allowEncodedSlash': matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedSlash, + 'allowEncodedHash': matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedHash, + } + } + } + ) + ) + | combine( ( ( @@ -341,7 +411,31 @@ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled: "{{ matri matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name: matrix-internal-matrix-client-api matrix_playbook_internal_matrix_client_api_traefik_entrypoint_port: 8008 matrix_playbook_internal_matrix_client_api_traefik_entrypoint_host_bind_port: '' -matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_auto | combine(matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_custom, recursive=True) }}" +matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config: "{{ (matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_default | combine(matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_auto)) | combine(matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_custom, recursive=True) }}" +# Traefik v3.6.3+ blocks encoded characters in request paths by default for security. +# Matrix API endpoints require encoded slashes and hashes in endpoints containing room IDs, room aliases, etc. +# Ref: +# - https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4798 +# - https://doc.traefik.io/traefik/migrate/v3/#v364 +matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedSlash: true # noqa: var-naming[pattern] +matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedHash: true # noqa: var-naming[pattern] +matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_default: | + {{ + {} + + | combine( + ( + { + 'http': { + 'encodedCharacters': { + 'allowEncodedSlash': matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedSlash, + 'allowEncodedHash': matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedHash, + } + } + } + ) + ) + }} matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_auto: {} matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_custom: {} diff --git a/roles/custom/matrix-base/tasks/ensure_fuse_installed.yml b/roles/custom/matrix-base/tasks/ensure_fuse_installed.yml index 8f768bd13..ad698284f 100644 --- a/roles/custom/matrix-base/tasks/ensure_fuse_installed.yml +++ b/roles/custom/matrix-base/tasks/ensure_fuse_installed.yml @@ -1,12 +1,16 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # This is for both RedHat 7 and 8 - ansible.builtin.include_tasks: "{{ role_path }}/tasks/ensure_fuse_installed_redhat.yml" - when: ansible_os_family == 'RedHat' + when: ansible_facts.os_family == 'RedHat' # This is for both Debian and Raspbian - ansible.builtin.include_tasks: "{{ role_path }}/tasks/ensure_fuse_installed_debian.yml" - when: ansible_os_family == 'Debian' + when: ansible_facts.os_family == 'Debian' - ansible.builtin.include_tasks: "{{ role_path }}/tasks/ensure_fuse_installed_archlinux.yml" - when: ansible_os_family == 'Archlinux' + when: ansible_facts.os_family == 'Archlinux' diff --git a/roles/custom/matrix-base/tasks/ensure_fuse_installed_archlinux.yml b/roles/custom/matrix-base/tasks/ensure_fuse_installed_archlinux.yml index 676543d83..6abff8bf9 100644 --- a/roles/custom/matrix-base/tasks/ensure_fuse_installed_archlinux.yml +++ b/roles/custom/matrix-base/tasks/ensure_fuse_installed_archlinux.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure fuse installed (Archlinux) diff --git a/roles/custom/matrix-base/tasks/ensure_fuse_installed_debian.yml b/roles/custom/matrix-base/tasks/ensure_fuse_installed_debian.yml index b9491eb49..8f3637dd4 100644 --- a/roles/custom/matrix-base/tasks/ensure_fuse_installed_debian.yml +++ b/roles/custom/matrix-base/tasks/ensure_fuse_installed_debian.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure fuse installed (Debian/Raspbian) diff --git a/roles/custom/matrix-base/tasks/ensure_fuse_installed_redhat.yml b/roles/custom/matrix-base/tasks/ensure_fuse_installed_redhat.yml index 878fb5682..1a86fd2bb 100644 --- a/roles/custom/matrix-base/tasks/ensure_fuse_installed_redhat.yml +++ b/roles/custom/matrix-base/tasks/ensure_fuse_installed_redhat.yml @@ -1,6 +1,10 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure fuse installed (RedHat) - ansible.builtin.yum: + ansible.builtin.package: name: fuse state: present diff --git a/roles/custom/matrix-base/tasks/ensure_openssl_installed.yml b/roles/custom/matrix-base/tasks/ensure_openssl_installed.yml index d0cd8edea..11a25fbc9 100644 --- a/roles/custom/matrix-base/tasks/ensure_openssl_installed.yml +++ b/roles/custom/matrix-base/tasks/ensure_openssl_installed.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure openssl installed diff --git a/roles/custom/matrix-base/tasks/main.yml b/roles/custom/matrix-base/tasks/main.yml index 7351d1b8a..d6d4d8f26 100644 --- a/roles/custom/matrix-base/tasks/main.yml +++ b/roles/custom/matrix-base/tasks/main.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2020 Marcel Partap +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Warren Bailey +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-base/tasks/setup_matrix_base.yml b/roles/custom/matrix-base/tasks/setup_matrix_base.yml index 448ac7693..472889708 100644 --- a/roles/custom/matrix-base/tasks/setup_matrix_base.yml +++ b/roles/custom/matrix-base/tasks/setup_matrix_base.yml @@ -1,3 +1,15 @@ +# SPDX-FileCopyrightText: 2017 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2018 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2019 Stuart Mumford +# SPDX-FileCopyrightText: 2020 Béla Becker +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# SPDX-FileCopyrightText: 2020 Horvath Gergely +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# SPDX-FileCopyrightText: 2024 László Várady +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Matrix base paths exists @@ -5,8 +17,8 @@ path: "{{ item }}" state: directory mode: "{{ matrix_base_data_path_mode }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - "{{ matrix_base_data_path }}" - "{{ matrix_bin_path }}" diff --git a/roles/custom/matrix-base/tasks/setup_matrix_user.yml b/roles/custom/matrix-base/tasks/setup_matrix_user.yml index 0c9086e59..b2512a437 100644 --- a/roles/custom/matrix-base/tasks/setup_matrix_user.yml +++ b/roles/custom/matrix-base/tasks/setup_matrix_user.yml @@ -1,21 +1,28 @@ +# SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure Matrix group is created ansible.builtin.group: - name: "{{ matrix_user_groupname }}" + name: "{{ matrix_group_name }}" gid: "{{ omit if matrix_user_gid is none else matrix_user_gid }}" state: present + system: "{{ matrix_group_system }}" register: matrix_group - name: Ensure Matrix user is created ansible.builtin.user: - name: "{{ matrix_user_username }}" + name: "{{ matrix_user_name }}" uid: "{{ omit if matrix_user_uid is none else matrix_user_uid }}" state: present - group: "{{ matrix_user_groupname }}" + group: "{{ matrix_group_name }}" home: "{{ matrix_base_data_path }}" create_home: false - system: true + system: "{{ matrix_user_system }}" + shell: "{{ matrix_user_shell }}" register: matrix_user - name: Initialize matrix_user_uid and matrix_user_gid diff --git a/roles/custom/matrix-base/tasks/validate_config.yml b/roles/custom/matrix-base/tasks/validate_config.yml index 41320a5fb..360c995b5 100644 --- a/roles/custom/matrix-base/tasks/validate_config.yml +++ b/roles/custom/matrix-base/tasks/validate_config.yml @@ -1,16 +1,26 @@ +# SPDX-FileCopyrightText: 2018 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 - 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2020 Christian Wolf +# SPDX-FileCopyrightText: 2020 Horvath Gergely +# SPDX-FileCopyrightText: 2022 Charles Wright +# SPDX-FileCopyrightText: 2022 Warren Bailey +# SPDX-FileCopyrightText: 2023 Jayesh Nirve +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if invalid homeserver implementation ansible.builtin.fail: msg: "You need to set a valid homeserver implementation in `matrix_homeserver_implementation`" - when: "matrix_homeserver_implementation not in ['synapse', 'dendrite', 'conduit', 'conduwuit']" + when: "matrix_homeserver_implementation not in ['synapse', 'dendrite', 'conduit', 'conduwuit', 'continuwuity']" - name: (Deprecation) Catch and report renamed 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'host_specific_hostname_identity', 'new': 'matrix_domain'} - {'old': 'hostname_identity', 'new': 'matrix_domain'} @@ -21,6 +31,11 @@ - {'old': 'matrix_client_element_e2ee_default', 'new': 'matrix_static_files_file_matrix_client_property_io_element_e2ee_default'} - {'old': 'matrix_client_element_e2ee_secure_backup_required', 'new': 'matrix_static_files_file_matrix_client_property_io_element_e2ee_secure_backup_required'} - {'old': 'matrix_client_element_e2ee_secure_backup_setup_methods', 'new': 'matrix_static_files_file_matrix_client_property_io_element_e2ee_secure_backup_setup_methods'} + - {'old': 'matrix_static_files_file_matrix_client_property_io_element_e2ee_secure_backup_required', 'new': ''} + - {'old': 'matrix_static_files_file_matrix_client_property_io_element_e2ee_secure_backup_setup_methods', 'new': ''} + - {'old': 'matrix_container_global_registry_prefix', 'new': ''} + - {'old': 'matrix_user_username', 'new': 'matrix_user_name'} + - {'old': 'matrix_user_groupname', 'new': 'matrix_group_name'} # We have a dedicated check for this variable, because we'd like to have a custom (friendlier) message. - name: Fail if matrix_homeserver_generic_secret_key is undefined @@ -51,7 +66,7 @@ - name: Fail if matrix_architecture is set incorrectly ansible.builtin.fail: - msg: "Detected that variable matrix_architecture {{ matrix_architecture }} appears to be set incorrectly. See docs/alternative-architectures.md. Server appears to be {{ ansible_architecture }}." + msg: "Detected that variable matrix_architecture {{ matrix_architecture }} appears to be set incorrectly. See docs/alternative-architectures.md. Server appears to be {{ ansible_facts.architecture }}." when: matrix_architecture not in ['amd64', 'arm32', 'arm64'] - name: Fail if matrix_playbook_reverse_proxy_type is set incorrectly @@ -84,16 +99,4 @@ To get rid of this error, remove all `matrix_mx_puppet_*` references from your configuration. To clean up your server from mx-puppet-skype's presence, see this changelog entry: https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/CHANGELOG.md#mx-puppet-skype-removal. If you still need bridging to Skype, consider switching to the go-skype bridge instead. See `docs/configuring-playbook-bridge-go-skype-bridge.md`. - when: "'matrix_mx_puppet_skype_enabled' in vars" - -- name: Fail if mautrix-instagram and mautrix-meta-instagram are in conflict - ansible.builtin.fail: - msg: >- - Your configuration enables both the old mautrix-instagram bridge and the new mautrix-meta-instagram bridge. - By default, both bridges are configured to use the same bridge bot username (`@{{ matrix_mautrix_meta_instagram_appservice_username }}:{{ matrix_domain }}`) which is a conflict. - We recommend that you disable at least one of the bridges (preferrably the old mautrix-instagram bridge), or to resolve the conflict in another way. - To resolve the conflict without disabling a bridge, consider adjusting one of `matrix_mautrix_instagram_appservice_bot_username` or `matrix_mautrix_meta_instagram_appservice_username` - they both have a value of {{ matrix_mautrix_meta_instagram_appservice_username }} right now. - when: - - matrix_mautrix_instagram_enabled | bool - - matrix_mautrix_meta_instagram_enabled | bool - - matrix_mautrix_instagram_appservice_bot_username == matrix_mautrix_meta_instagram_appservice_username + when: "lookup('ansible.builtin.varnames', '^matrix_mx_puppet_skype_enabled$', wantlist=True) | length > 0" diff --git a/roles/custom/matrix-base/templates/bin/remove-all.j2 b/roles/custom/matrix-base/templates/bin/remove-all.j2 index 5a0579586..e35abc462 100644 --- a/roles/custom/matrix-base/templates/bin/remove-all.j2 +++ b/roles/custom/matrix-base/templates/bin/remove-all.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True #!/bin/bash if [ "$(id -u)" != "0" ]; then diff --git a/roles/custom/matrix-base/templates/bin/remove-all.j2.license b/roles/custom/matrix-base/templates/bin/remove-all.j2.license new file mode 100644 index 000000000..34a0c1266 --- /dev/null +++ b/roles/custom/matrix-base/templates/bin/remove-all.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2018 - 2023 MDAD project contributors +SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bot-baibot/defaults/main.yml b/roles/custom/matrix-bot-baibot/defaults/main.yml index d3737b2a8..cd3c3c77b 100644 --- a/roles/custom/matrix-bot-baibot/defaults/main.yml +++ b/roles/custom/matrix-bot-baibot/defaults/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # baibot is a bot exposing the power of Large Language Models to you. @@ -11,9 +17,11 @@ matrix_bot_baibot_container_repo_version: "{{ 'main' if matrix_bot_baibot_versio matrix_bot_baibot_container_src_files_path: "{{ matrix_base_data_path }}/baibot/container-src" # renovate: datasource=docker depName=ghcr.io/etkecc/baibot -matrix_bot_baibot_version: v1.4.1 -matrix_bot_baibot_container_image: "{{ matrix_bot_baibot_container_image_name_prefix }}etkecc/baibot:{{ matrix_bot_baibot_version }}" -matrix_bot_baibot_container_image_name_prefix: "{{ 'localhost/' if matrix_bot_baibot_container_image_self_build else 'ghcr.io/' }}" +matrix_bot_baibot_version: v1.12.0 +matrix_bot_baibot_container_image: "{{ matrix_bot_baibot_container_image_registry_prefix }}etkecc/baibot:{{ matrix_bot_baibot_version }}" +matrix_bot_baibot_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_baibot_container_image_self_build else matrix_bot_baibot_container_image_registry_prefix_upstream }}" +matrix_bot_baibot_container_image_registry_prefix_upstream: "{{ matrix_bot_baibot_container_image_registry_prefix_upstream_default }}" +matrix_bot_baibot_container_image_registry_prefix_upstream_default: "ghcr.io/" matrix_bot_baibot_container_image_force_pull: "{{ matrix_bot_baibot_container_image.endswith(':latest') }}" matrix_bot_baibot_base_path: "{{ matrix_base_data_path }}/baibot" @@ -62,6 +70,23 @@ matrix_bot_baibot_config_user_password: '' # Also see: `matrix_bot_baibot_config_user_mxid_localpart` matrix_bot_baibot_config_user_name: baibot +# Controls the `user.avatar` configuration setting. +# +# An optional path to an image file to be used as a custom avatar image. +# This path should be an in-container path (e.g., `/data/avatar.png`). +# Any type of content type is supported, but stick to common image formats (PNG, JPG, ..) for better compatibility with various Matrix clients. +# +# To use a custom avatar: +# - Use the auxiliary role (`aux_` variables) to upload your avatar file to the server (e.g. to {{ matrix_bot_baibot_data_path }}/avatar.png on the host), +# or do it any other way (without Ansible) you prefer +# - Set this variable to something like `/data/avatar.png` (the in-container path) +# +# Possible values: +# - null or empty string: use the default baibot avatar +# - "keep": don't touch the avatar, keep whatever is already set (useful if you manage the avatar via other means) +# - any other value: path to a custom avatar image file (must be an in-container path like `/data/avatar.png`) +matrix_bot_baibot_config_user_avatar: null + # Controls the `user.encryption.recovery_passphrase` configuration setting. # # An optional passphrase to use for backing up and recovering the bot's encryption keys. @@ -87,6 +112,10 @@ matrix_bot_baibot_config_user_encryption_recovery_reset_allowed: false # If you leave this empty, the bot will use the default (!bai). matrix_bot_baibot_config_command_prefix: "!bai" +# Controls the `room.post_join_self_introduction_enabled` configuration setting. +# Influences whether the bot should send an introduction message after joining a room. +matrix_bot_baibot_config_room_post_join_self_introduction_enabled: true + # Controls the `access.admin_patterns` configuration setting. # A space-separated list of MXID patterns which specify who is an admin. # @@ -167,7 +196,7 @@ matrix_bot_baibot_config_agents_static_definitions_anthropic_enabled: false matrix_bot_baibot_config_agents_static_definitions_anthropic_id: anthropic matrix_bot_baibot_config_agents_static_definitions_anthropic_provider: anthropic -matrix_bot_baibot_config_agents_static_definitions_anthropic_config: "{{ matrix_bot_baibot_config_agents_static_definitions_anthropic_config_yaml | from_yaml | combine(matrix_bot_baibot_config_agents_static_definitions_anthropic_config_extension, recursive=True)}}" +matrix_bot_baibot_config_agents_static_definitions_anthropic_config: "{{ matrix_bot_baibot_config_agents_static_definitions_anthropic_config_yaml | from_yaml | combine(matrix_bot_baibot_config_agents_static_definitions_anthropic_config_extension, recursive=True) }}" matrix_bot_baibot_config_agents_static_definitions_anthropic_config_yaml: "{{ lookup('template', 'templates/provider/anthropic-config.yml.j2') }}" @@ -192,8 +221,8 @@ matrix_bot_baibot_config_agents_static_definitions_anthropic_config_base_url: ht matrix_bot_baibot_config_agents_static_definitions_anthropic_config_api_key: "" matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_enabled: true -# For valid model choices, see: https://platform.anthropic.com/docs/models -matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_model_id: claude-3-5-sonnet-20240620 +# For valid model choices, see: https://docs.claude.com/en/docs/about-claude/models/overview +matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_model_id: claude-sonnet-4-5-20250929 # The prompt text to use (can be null or empty to not use a prompt). # See: https://huggingface.co/docs/transformers/en/tasks/prompting matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}" @@ -220,7 +249,7 @@ matrix_bot_baibot_config_agents_static_definitions_groq_enabled: false matrix_bot_baibot_config_agents_static_definitions_groq_id: groq matrix_bot_baibot_config_agents_static_definitions_groq_provider: groq -matrix_bot_baibot_config_agents_static_definitions_groq_config: "{{ matrix_bot_baibot_config_agents_static_definitions_groq_config_yaml | from_yaml | combine(matrix_bot_baibot_config_agents_static_definitions_groq_config_extension, recursive=True)}}" +matrix_bot_baibot_config_agents_static_definitions_groq_config: "{{ matrix_bot_baibot_config_agents_static_definitions_groq_config_yaml | from_yaml | combine(matrix_bot_baibot_config_agents_static_definitions_groq_config_extension, recursive=True) }}" matrix_bot_baibot_config_agents_static_definitions_groq_config_yaml: "{{ lookup('template', 'templates/provider/groq-config.yml.j2') }}" @@ -276,7 +305,7 @@ matrix_bot_baibot_config_agents_static_definitions_mistral_enabled: false matrix_bot_baibot_config_agents_static_definitions_mistral_id: mistral matrix_bot_baibot_config_agents_static_definitions_mistral_provider: mistral -matrix_bot_baibot_config_agents_static_definitions_mistral_config: "{{ matrix_bot_baibot_config_agents_static_definitions_mistral_config_yaml | from_yaml | combine(matrix_bot_baibot_config_agents_static_definitions_mistral_config_extension, recursive=True)}}" +matrix_bot_baibot_config_agents_static_definitions_mistral_config: "{{ matrix_bot_baibot_config_agents_static_definitions_mistral_config_yaml | from_yaml | combine(matrix_bot_baibot_config_agents_static_definitions_mistral_config_extension, recursive=True) }}" matrix_bot_baibot_config_agents_static_definitions_mistral_config_yaml: "{{ lookup('template', 'templates/provider/mistral-config.yml.j2') }}" @@ -329,7 +358,7 @@ matrix_bot_baibot_config_agents_static_definitions_openai_enabled: false matrix_bot_baibot_config_agents_static_definitions_openai_id: openai matrix_bot_baibot_config_agents_static_definitions_openai_provider: openai -matrix_bot_baibot_config_agents_static_definitions_openai_config: "{{ matrix_bot_baibot_config_agents_static_definitions_openai_config_yaml | from_yaml | combine(matrix_bot_baibot_config_agents_static_definitions_openai_config_extension, recursive=True)}}" +matrix_bot_baibot_config_agents_static_definitions_openai_config: "{{ matrix_bot_baibot_config_agents_static_definitions_openai_config_yaml | from_yaml | combine(matrix_bot_baibot_config_agents_static_definitions_openai_config_extension, recursive=True) }}" matrix_bot_baibot_config_agents_static_definitions_openai_config_yaml: "{{ lookup('template', 'templates/provider/openai-config.yml.j2') }}" @@ -356,15 +385,16 @@ matrix_bot_baibot_config_agents_static_definitions_openai_config_api_key: "" matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_enabled: true # For valid model choices, see: https://platform.openai.com/docs/models -matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-4o +matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-5.2 # The prompt text to use (can be null or empty to not use a prompt). # See: https://huggingface.co/docs/transformers/en/tasks/prompting matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}" # The temperature parameter controls the randomness of the generated text. # See: https://blogs.novita.ai/what-are-large-language-model-settings-temperature-top-p-and-max-tokens/#what-is-llm-temperature matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_temperature: 1.0 -matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_response_tokens: 16384 -matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_context_tokens: 128000 +matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_response_tokens: ~ +matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_completion_tokens: 128000 +matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_context_tokens: 400000 matrix_bot_baibot_config_agents_static_definitions_openai_config_speech_to_text_enabled: true matrix_bot_baibot_config_agents_static_definitions_openai_config_speech_to_text_model_id: whisper-1 @@ -376,9 +406,10 @@ matrix_bot_baibot_config_agents_static_definitions_openai_config_text_to_speech_ matrix_bot_baibot_config_agents_static_definitions_openai_config_text_to_speech_response_format: opus matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_enabled: true -matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_model_id: dall-e-3 -matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_style: vivid -matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_size: 1024x1024 +matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_model_id: gpt-image-1.5 +matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_style: null +matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_size: null +matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_quality: null ######################################################################################## # # diff --git a/roles/custom/matrix-bot-baibot/tasks/install.yml b/roles/custom/matrix-bot-baibot/tasks/install.yml index f74ab3442..13a13e797 100644 --- a/roles/custom/matrix-bot-baibot/tasks/install.yml +++ b/roles/custom/matrix-bot-baibot/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 baibot paths exist @@ -5,8 +10,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_bot_baibot_base_path }}", when: true} - {path: "{{ matrix_bot_baibot_config_path }}", when: true} @@ -19,15 +24,15 @@ content: "{{ matrix_bot_baibot_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_bot_baibot_config_path }}/config.yml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure baibot environment variables file created ansible.builtin.template: src: "{{ role_path }}/templates/env.j2" dest: "{{ matrix_bot_baibot_config_path }}/env" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0640 - name: Ensure baibot container image is pulled @@ -51,7 +56,7 @@ dest: "{{ matrix_bot_baibot_container_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_bot_baibot_git_pull_results - name: Ensure baibot container image is built @@ -70,6 +75,7 @@ enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" name: "{{ matrix_bot_baibot_container_network }}" driver: bridge + driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - name: Ensure matrix-bot-baibot.service installed ansible.builtin.template: diff --git a/roles/custom/matrix-bot-baibot/tasks/main.yml b/roles/custom/matrix-bot-baibot/tasks/main.yml index 1b9d9c5b5..348c11d08 100644 --- a/roles/custom/matrix-bot-baibot/tasks/main.yml +++ b/roles/custom/matrix-bot-baibot/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-bot-baibot/tasks/uninstall.yml b/roles/custom/matrix-bot-baibot/tasks/uninstall.yml index 176edaa6a..f9f53f9f7 100644 --- a/roles/custom/matrix-bot-baibot/tasks/uninstall.yml +++ b/roles/custom/matrix-bot-baibot/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-baibot service diff --git a/roles/custom/matrix-bot-baibot/tasks/validate_config.yml b/roles/custom/matrix-bot-baibot/tasks/validate_config.yml index 43e4cb8fc..14d155b6e 100644 --- a/roles/custom/matrix-bot-baibot/tasks/validate_config.yml +++ b/roles/custom/matrix-bot-baibot/tasks/validate_config.yml @@ -1,10 +1,15 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required baibot 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_bot_baibot_config_user_mxid_localpart', when: true} - {'name': 'matrix_bot_baibot_config_user_password', when: true} @@ -26,3 +31,12 @@ msg: >- You need to define a required configuration setting (`matrix_bot_baibot_config_access_admin_patterns`) to specify which users are bot administrators. when: "matrix_bot_baibot_config_access_admin_patterns | length == 0" + +- name: (Deprecation) Catch and report renamed baibot 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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_bot_baibot_container_image_name_prefix', 'new': 'matrix_bot_baibot_container_image_registry_prefix'} diff --git a/roles/custom/matrix-bot-baibot/templates/config.yaml.j2 b/roles/custom/matrix-bot-baibot/templates/config.yaml.j2 index d7e3a4771..19dda786c 100644 --- a/roles/custom/matrix-bot-baibot/templates/config.yaml.j2 +++ b/roles/custom/matrix-bot-baibot/templates/config.yaml.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # Default configuration for baibot. # To extend it, use `matrix_bot_baibot_configuration_extension_yaml`. @@ -14,6 +21,12 @@ user: # Leave empty to use the default (baibot). name: {{ matrix_bot_baibot_config_user_name | to_json }} + # An optional path to an image file to be used as a custom avatar image. + # - null or empty string: use the default avatar + # - "keep": don't touch the avatar, keep whatever is already set + # - any other value: path to a custom avatar image file + avatar: {{ matrix_bot_baibot_config_user_avatar | to_json }} + encryption: # An optional passphrase to use for backing up and recovering the bot's encryption keys. # You can use any string here. @@ -35,6 +48,10 @@ user: # Command prefix. Leave empty to use the default (!bai). command_prefix: {{ matrix_bot_baibot_config_command_prefix | to_json }} +room: + # Whether the bot should send an introduction message after joining a room. + post_join_self_introduction_enabled: {{ matrix_bot_baibot_config_room_post_join_self_introduction_enabled | to_json }} + access: # Space-separated list of MXID patterns which specify who is an admin. admin_patterns: {{ matrix_bot_baibot_config_access_admin_patterns | to_json }} diff --git a/roles/custom/matrix-bot-baibot/templates/env.j2 b/roles/custom/matrix-bot-baibot/templates/env.j2 index fb26fe3df..fe4733ab2 100644 --- a/roles/custom/matrix-bot-baibot/templates/env.j2 +++ b/roles/custom/matrix-bot-baibot/templates/env.j2 @@ -1 +1,7 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {{ matrix_bot_baibot_environment_variables_extension }} diff --git a/roles/custom/matrix-bot-baibot/templates/provider/anthropic-config.yml.j2 b/roles/custom/matrix-bot-baibot/templates/provider/anthropic-config.yml.j2 index 1d613b70c..a8007a868 100644 --- a/roles/custom/matrix-bot-baibot/templates/provider/anthropic-config.yml.j2 +++ b/roles/custom/matrix-bot-baibot/templates/provider/anthropic-config.yml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True base_url: {{ matrix_bot_baibot_config_agents_static_definitions_anthropic_config_base_url | to_json }} api_key: {{ matrix_bot_baibot_config_agents_static_definitions_anthropic_config_api_key | to_json }} diff --git a/roles/custom/matrix-bot-baibot/templates/provider/anthropic-config.yml.j2.license b/roles/custom/matrix-bot-baibot/templates/provider/anthropic-config.yml.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-bot-baibot/templates/provider/anthropic-config.yml.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-bot-baibot/templates/provider/groq-config.yml.j2 b/roles/custom/matrix-bot-baibot/templates/provider/groq-config.yml.j2 index fbefa5a3b..7009b5546 100644 --- a/roles/custom/matrix-bot-baibot/templates/provider/groq-config.yml.j2 +++ b/roles/custom/matrix-bot-baibot/templates/provider/groq-config.yml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True base_url: {{ matrix_bot_baibot_config_agents_static_definitions_groq_config_base_url | to_json }} api_key: {{ matrix_bot_baibot_config_agents_static_definitions_groq_config_api_key | to_json }} diff --git a/roles/custom/matrix-bot-baibot/templates/provider/groq-config.yml.j2.license b/roles/custom/matrix-bot-baibot/templates/provider/groq-config.yml.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-bot-baibot/templates/provider/groq-config.yml.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-bot-baibot/templates/provider/mistral-config.yml.j2 b/roles/custom/matrix-bot-baibot/templates/provider/mistral-config.yml.j2 index 5f97e69fd..9e007cb3d 100644 --- a/roles/custom/matrix-bot-baibot/templates/provider/mistral-config.yml.j2 +++ b/roles/custom/matrix-bot-baibot/templates/provider/mistral-config.yml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True base_url: {{ matrix_bot_baibot_config_agents_static_definitions_mistral_config_base_url | to_json }} api_key: {{ matrix_bot_baibot_config_agents_static_definitions_mistral_config_api_key | to_json }} diff --git a/roles/custom/matrix-bot-baibot/templates/provider/mistral-config.yml.j2.license b/roles/custom/matrix-bot-baibot/templates/provider/mistral-config.yml.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-bot-baibot/templates/provider/mistral-config.yml.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-bot-baibot/templates/provider/openai-config.yml.j2 b/roles/custom/matrix-bot-baibot/templates/provider/openai-config.yml.j2 index c239e6d4a..37ceeaada 100644 --- a/roles/custom/matrix-bot-baibot/templates/provider/openai-config.yml.j2 +++ b/roles/custom/matrix-bot-baibot/templates/provider/openai-config.yml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True base_url: {{ matrix_bot_baibot_config_agents_static_definitions_openai_config_base_url | to_json }} api_key: {{ matrix_bot_baibot_config_agents_static_definitions_openai_config_api_key | to_json }} @@ -11,6 +11,9 @@ text_generation: {% if matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_response_tokens %} max_response_tokens: {{ matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_response_tokens | int | to_json }} {% endif %} + {% if matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_completion_tokens %} + max_completion_tokens: {{ matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_completion_tokens | int | to_json }} + {% endif %} max_context_tokens: {{ matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_max_context_tokens | int | to_json }} {% endif %} @@ -32,4 +35,5 @@ image_generation: model_id: {{ matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_model_id | to_json }} style: {{ matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_style | to_json }} size: {{ matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_size | to_json }} + quality: {{ matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_quality | to_json }} {% endif %} diff --git a/roles/custom/matrix-bot-baibot/templates/provider/openai-config.yml.j2.license b/roles/custom/matrix-bot-baibot/templates/provider/openai-config.yml.j2.license new file mode 100644 index 000000000..e18b238ea --- /dev/null +++ b/roles/custom/matrix-bot-baibot/templates/provider/openai-config.yml.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-bot-baibot/templates/systemd/matrix-bot-baibot.service.j2 b/roles/custom/matrix-bot-baibot/templates/systemd/matrix-bot-baibot.service.j2 index 346925c4a..e9b01fb0a 100644 --- a/roles/custom/matrix-bot-baibot/templates/systemd/matrix-bot-baibot.service.j2 +++ b/roles/custom/matrix-bot-baibot/templates/systemd/matrix-bot-baibot.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix baibot bot {% for service in matrix_bot_baibot_systemd_required_services_list %} @@ -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-bot-baibot 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-bot-baibot 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-baibot 2>/dev/null || true' {# @@ -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-bot-baibot -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-bot-baibot 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-bot-baibot 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-baibot 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bot-baibot/templates/systemd/matrix-bot-baibot.service.j2.license b/roles/custom/matrix-bot-baibot/templates/systemd/matrix-bot-baibot.service.j2.license new file mode 100644 index 000000000..53f94a9fa --- /dev/null +++ b/roles/custom/matrix-bot-baibot/templates/systemd/matrix-bot-baibot.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bot-buscarron/defaults/main.yml b/roles/custom/matrix-bot-buscarron/defaults/main.yml index e8e2fa3e9..bf715808c 100644 --- a/roles/custom/matrix-bot-buscarron/defaults/main.yml +++ b/roles/custom/matrix-bot-buscarron/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Buscarron is a Web forms (HTTP POST) to Matrix service. @@ -29,8 +36,10 @@ matrix_bot_buscarron_docker_repo: "https://github.com/etkecc/buscarron.git" matrix_bot_buscarron_docker_repo_version: "{{ matrix_bot_buscarron_version }}" matrix_bot_buscarron_docker_src_files_path: "{{ matrix_base_data_path }}/buscarron/docker-src" -matrix_bot_buscarron_docker_image: "{{ matrix_bot_buscarron_docker_image_name_prefix }}etkecc/buscarron:{{ matrix_bot_buscarron_version }}" -matrix_bot_buscarron_docker_image_name_prefix: "{{ 'localhost/' if matrix_bot_buscarron_container_image_self_build else 'ghcr.io/' }}" +matrix_bot_buscarron_docker_image: "{{ matrix_bot_buscarron_docker_image_registry_prefix }}etkecc/buscarron:{{ matrix_bot_buscarron_version }}" +matrix_bot_buscarron_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_buscarron_container_image_self_build else matrix_bot_buscarron_docker_image_registry_prefix_upstream }}" +matrix_bot_buscarron_docker_image_registry_prefix_upstream: "{{ matrix_bot_buscarron_docker_image_registry_prefix_upstream_default }}" +matrix_bot_buscarron_docker_image_registry_prefix_upstream_default: "ghcr.io/" matrix_bot_buscarron_docker_image_force_pull: "{{ matrix_bot_buscarron_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-bot-buscarron/tasks/main.yml b/roles/custom/matrix-bot-buscarron/tasks/main.yml index fbf5c96ac..adfc56db8 100644 --- a/roles/custom/matrix-bot-buscarron/tasks/main.yml +++ b/roles/custom/matrix-bot-buscarron/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bot-buscarron/tasks/setup_install.yml b/roles/custom/matrix-bot-buscarron/tasks/setup_install.yml index a011a016b..89bf6d48f 100644 --- a/roles/custom/matrix-bot-buscarron/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-buscarron/tasks/setup_install.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# 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: matrix_bot_buscarron_requires_restart: false @@ -31,8 +39,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_bot_buscarron_config_path }}", when: true} - {path: "{{ matrix_bot_buscarron_data_path }}", when: true} @@ -44,8 +52,8 @@ ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_bot_buscarron_config_path }}/{{ item }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0640 with_items: - env @@ -70,7 +78,7 @@ dest: "{{ matrix_bot_buscarron_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_bot_buscarron_git_pull_results when: "matrix_bot_buscarron_container_image_self_build | bool" diff --git a/roles/custom/matrix-bot-buscarron/tasks/setup_uninstall.yml b/roles/custom/matrix-bot-buscarron/tasks/setup_uninstall.yml index 7a47471ef..5769de2d3 100644 --- a/roles/custom/matrix-bot-buscarron/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bot-buscarron/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-buscarron service diff --git a/roles/custom/matrix-bot-buscarron/tasks/validate_config.yml b/roles/custom/matrix-bot-buscarron/tasks/validate_config.yml index 0e968e55a..97b765235 100644 --- a/roles/custom/matrix-bot-buscarron/tasks/validate_config.yml +++ b/roles/custom/matrix-bot-buscarron/tasks/validate_config.yml @@ -1,21 +1,28 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: (Deprecation) Catch and report renamed Buscarron 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_bot_buscarron_noencryption', 'new': ''} - {'old': 'matrix_bot_buscarron_spam_hosts', 'new': ''} - {'old': 'matrix_bot_buscarron_spam_emails', 'new': ''} - {'old': 'matrix_bot_buscarron_spam_localparts', 'new': ''} + - {'old': 'matrix_bot_buscarron_container_image_name_prefix', 'new': 'matrix_bot_buscarron_container_image_registry_prefix'} - name: Fail if required Buscarron 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_bot_buscarron_password', when: true} - {'name': 'matrix_bot_buscarron_hostname', when: true} diff --git a/roles/custom/matrix-bot-buscarron/templates/env.j2 b/roles/custom/matrix-bot-buscarron/templates/env.j2 index 11a4f6bd6..db9b903c4 100644 --- a/roles/custom/matrix-bot-buscarron/templates/env.j2 +++ b/roles/custom/matrix-bot-buscarron/templates/env.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +SPDX-FileCopyrightText: 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + BUSCARRON_LOGIN={{ matrix_bot_buscarron_login }} BUSCARRON_PASSWORD={{ matrix_bot_buscarron_password }} BUSCARRON_HOMESERVER={{ matrix_bot_buscarron_homeserver }} diff --git a/roles/custom/matrix-bot-buscarron/templates/labels.j2 b/roles/custom/matrix-bot-buscarron/templates/labels.j2 index b5f020a17..6376a5412 100644 --- a/roles/custom/matrix-bot-buscarron/templates/labels.j2 +++ b/roles/custom/matrix-bot-buscarron/templates/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_bot_buscarron_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bot-buscarron/templates/systemd/matrix-bot-buscarron.service.j2 b/roles/custom/matrix-bot-buscarron/templates/systemd/matrix-bot-buscarron.service.j2 index aa4314a13..3593fff97 100644 --- a/roles/custom/matrix-bot-buscarron/templates/systemd/matrix-bot-buscarron.service.j2 +++ b/roles/custom/matrix-bot-buscarron/templates/systemd/matrix-bot-buscarron.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix web forms bot {% for service in matrix_bot_buscarron_systemd_required_services_list %} @@ -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-bot-buscarron 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-bot-buscarron 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-buscarron 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-bot-buscarron -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-bot-buscarron 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-bot-buscarron 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-buscarron 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-bot-buscarron/templates/systemd/matrix-bot-buscarron.service.j2.license b/roles/custom/matrix-bot-buscarron/templates/systemd/matrix-bot-buscarron.service.j2.license new file mode 100644 index 000000000..2195e952c --- /dev/null +++ b/roles/custom/matrix-bot-buscarron/templates/systemd/matrix-bot-buscarron.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bot-chatgpt/defaults/main.yml b/roles/custom/matrix-bot-chatgpt/defaults/main.yml deleted file mode 100644 index 50ca9c286..000000000 --- a/roles/custom/matrix-bot-chatgpt/defaults/main.yml +++ /dev/null @@ -1,106 +0,0 @@ ---- -# chatgpt is a bot for chatting to openAI chatgpt Matrix bot -# Project source code URL: https://github.com/matrixgpt/matrix-chatgpt-bot - -matrix_bot_chatgpt_enabled: true - -# renovate: datasource=docker depName=ghcr.io/matrixgpt/matrix-chatgpt-bot -matrix_bot_chatgpt_version: 3.1.4 - -matrix_bot_chatgpt_container_image_self_build: false -matrix_bot_chatgpt_container_image_self_build_repo: "https://github.com/matrixgpt/matrix-chatgpt-bot" -matrix_bot_chatgpt_container_image_self_build_repo_version: "{{ 'main' if matrix_bot_chatgpt_version == 'latest' else matrix_bot_chatgpt_version }}" - -matrix_bot_chatgpt_container_image: "{{ matrix_bot_chatgpt_container_image_name_prefix }}matrixgpt/matrix-chatgpt-bot:{{ matrix_bot_chatgpt_container_image_tag }}" -matrix_bot_chatgpt_container_image_name_prefix: "{{ 'localhost/' if matrix_bot_chatgpt_container_image_self_build else matrix_bot_chatgpt_container_image_registry_prefix }}" -matrix_bot_chatgpt_container_image_tag: "{{ matrix_bot_chatgpt_version }}" -matrix_bot_chatgpt_container_image_force_pull: "{{ matrix_bot_chatgpt_container_image.endswith(':latest') }}" -matrix_bot_chatgpt_container_image_registry_prefix: ghcr.io/ - -matrix_bot_chatgpt_base_path: "{{ matrix_base_data_path }}/chatgpt" -matrix_bot_chatgpt_config_path: "{{ matrix_bot_chatgpt_base_path }}/config" -matrix_bot_chatgpt_data_path: "{{ matrix_bot_chatgpt_base_path }}/data" -matrix_bot_chatgpt_container_src_path: "{{ matrix_bot_chatgpt_base_path }}/container-src" - -# Controls how long to wait for the container to stop gracefully before killing it. -# We use a small value here, because this container does not seem to handle the SIGTERM signal. -matrix_bot_chatgpt_container_stop_grace_time_seconds: 1 - -matrix_bot_chatgpt_container_network: "" - -matrix_bot_chatgpt_container_additional_networks: "{{ matrix_bot_chatgpt_container_additional_networks_auto + matrix_bot_chatgpt_container_additional_networks_custom }}" -matrix_bot_chatgpt_container_additional_networks_auto: [] -matrix_bot_chatgpt_container_additional_networks_custom: [] - -# A list of extra arguments to pass to the container -matrix_bot_chatgpt_container_extra_arguments: [] - -# List of systemd services that matrix-bot-chatgpt.service depends on -matrix_bot_chatgpt_systemd_required_services_list: "{{ matrix_bot_chatgpt_systemd_required_services_list_default + matrix_bot_chatgpt_systemd_required_services_list_auto + matrix_bot_chatgpt_systemd_required_services_list_custom }}" -matrix_bot_chatgpt_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_bot_chatgpt_systemd_required_services_list_auto: [] -matrix_bot_chatgpt_systemd_required_services_list_custom: [] - -# List of systemd services that matrix-bot-chatgpt.service wants -matrix_bot_chatgpt_systemd_wanted_services_list: [] - -# ChatGPT Settings -matrix_bot_chatgpt_openai_api_key: '' -matrix_bot_chatgpt_api_model: 'gpt-3.5-turbo' -matrix_bot_chatgpt_context: 'thread' # CHATGPT_CONTEXT="thread" - -matrix_bot_chatgpt_keyv_backend: 'file' -matrix_bot_chatgpt_keyv_url: '' -matrix_bot_chatgpt_keyv_bot_encryption: false -matrix_bot_chatgpt_keyv_bot_storage: true - -# Matrix Static Settings (required, see notes) -# Defaults to "https://matrix.org" -matrix_bot_chatgpt_matrix_homeserver_url: "" # MATRIX_HOMESERVER_URL= -# With the @ and :example.com, ie @bot.chatgpt:example.com, needs to be set, created manually beforehand. -matrix_bot_chatgpt_matrix_bot_username_localpart: 'bot.chatgpt' -matrix_bot_chatgpt_matrix_bot_username: "@{{ matrix_bot_chatgpt_matrix_bot_username_localpart }}:{{ matrix_domain }}" # MATRIX_BOT_USERNAME= -# Set `MATRIX_BOT_PASSWORD` the bot will print an `MATRIX_ACCESS_TOKEN` to the terminal -# or https://webapps.stackexchange.com/questions/131056/how-to-get-an-access-token-for-element-riot-matrix -matrix_bot_chatgpt_matrix_access_token: '' # MATRIX_ACCESS_TOKEN= -# Once `MATRIX_BOT_ACCESS_TOKEN` is set this is no longer used. -matrix_bot_chatgpt_matrix_bot_password: '' # MATRIX_BOT_PASSWORD= - -# Matrix Configurable Settings Defaults (optional) -matrix_bot_chatgpt_matrix_default_prefix: "!chatgpt " # MATRIX_DEFAULT_PREFIX= Leave prefix blank to reply to all messages, trailing space matters -matrix_bot_chatgpt_matrix_default_prefix_reply: false # MATRIX_DEFAULT_PREFIX_REPLY= - -# Matrix Access Control (optional) -# -# Lists of space-separated entries. Example: -# matrix_bot_chatgpt_matrix_whitelist: ":{{ matrix_domain }} :example.net :example.org" -matrix_bot_chatgpt_matrix_blacklist: '' -matrix_bot_chatgpt_matrix_whitelist: ':{{ matrix_domain }}' - -# Matrix Feature Flags (optional) -matrix_bot_chatgpt_matrix_autojoin: true # MATRIX_AUTOJOIN=true -matrix_bot_chatgpt_matrix_encryption: true # MATRIX_ENCRYPTION=true -matrix_bot_chatgpt_matrix_threads: true # MATRIX_THREADS=true -matrix_bot_chatgpt_matrix_rich_text: true # MATRIX_RICH_TEXT=true - - -# A list of admins -# Example set of rules: -# matrix_bot_chatgpt_admins: -# - @alice:example.com -# - @bob:example.com -# - @bot.*:example.com -# - @*:example.net -# matrix_bot_chatgpt_admins: "{{ [matrix_admin] if matrix_admin else [] }}" - -# Additional environment variables to pass to the chatgpt container -# -# You can discover additional environment variables from: -# https://github.com/matrixgpt/matrix-chatgpt-bot/blob/main/src/env.ts -# -# Example: -# matrix_bot_chatgpt_environment_variables_extension: | -# chatgpt_TEXT_DONE=Done -matrix_bot_chatgpt_environment_variables_extension: '' - -matrix_bot_chatgpt_matrix_bot_prompt_prefix: 'Instructions:\nYou are ChatGPT, a large language model trained by OpenAI.' diff --git a/roles/custom/matrix-bot-chatgpt/tasks/install.yml b/roles/custom/matrix-bot-chatgpt/tasks/install.yml deleted file mode 100644 index af9550f15..000000000 --- a/roles/custom/matrix-bot-chatgpt/tasks/install.yml +++ /dev/null @@ -1,70 +0,0 @@ ---- - -- name: Ensure chatgpt paths exist - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_bot_chatgpt_config_path }}", when: true} - - {path: "{{ matrix_bot_chatgpt_data_path }}", when: true} - - {path: "{{ matrix_bot_chatgpt_container_src_path }}", when: matrix_bot_chatgpt_container_image_self_build} - when: "item.when | bool" - -- name: Ensure chatgpt environment variables file created - ansible.builtin.template: - src: "{{ role_path }}/templates/env.j2" - dest: "{{ matrix_bot_chatgpt_config_path }}/env" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - mode: 0640 - -- name: Ensure chatgpt container image is pulled - community.docker.docker_image: - name: "{{ matrix_bot_chatgpt_container_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_bot_chatgpt_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_bot_chatgpt_container_image_force_pull }}" - when: "not matrix_bot_chatgpt_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_bot_chatgpt_container_image_self_build | bool - block: - - name: Ensure chatgpt repository is present on self-build - ansible.builtin.git: - repo: "{{ matrix_bot_chatgpt_container_image_self_build_repo }}" - version: "{{ matrix_bot_chatgpt_container_image_self_build_repo_version }}" - dest: "{{ matrix_bot_chatgpt_container_src_path }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_bot_chatgpt_git_pull_results - - - name: Ensure chatgpt container image is built - community.docker.docker_image: - name: "{{ matrix_bot_chatgpt_container_image }}" - source: build - force_source: "{{ matrix_bot_chatgpt_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_bot_chatgpt_git_pull_results.changed }}" - build: - dockerfile: Dockerfile - path: "{{ matrix_bot_chatgpt_container_src_path }}" - pull: true - -- name: Ensure chatgpt container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_bot_chatgpt_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-bot-chatgpt.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-bot-chatgpt.service.j2" - dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-bot-chatgpt.service" - mode: 0644 diff --git a/roles/custom/matrix-bot-chatgpt/tasks/main.yml b/roles/custom/matrix-bot-chatgpt/tasks/main.yml deleted file mode 100644 index 3f5a7b7ec..000000000 --- a/roles/custom/matrix-bot-chatgpt/tasks/main.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- - -- - tags: - - setup-all - - setup-bot-chatgpt - - install-all - - install-bot-chatgpt - block: - - when: matrix_bot_chatgpt_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_bot_chatgpt_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/install.yml" - -- tags: - - setup-all - - setup-bot-chatgpt - block: - - when: not matrix_bot_chatgpt_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/uninstall.yml" diff --git a/roles/custom/matrix-bot-chatgpt/tasks/uninstall.yml b/roles/custom/matrix-bot-chatgpt/tasks/uninstall.yml deleted file mode 100644 index 4a50d7337..000000000 --- a/roles/custom/matrix-bot-chatgpt/tasks/uninstall.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- - -- name: Check existence of matrix-chatgpt service - ansible.builtin.stat: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-bot-chatgpt.service" - register: matrix_bot_chatgpt_service_stat - -- when: matrix_bot_chatgpt_service_stat.stat.exists | bool - block: - - name: Ensure matrix-chatgpt is stopped - ansible.builtin.service: - name: matrix-bot-chatgpt - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-bot-chatgpt.service doesn't exist - ansible.builtin.file: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-bot-chatgpt.service" - state: absent - - - name: Ensure Matrix chatgpt paths don't exist - ansible.builtin.file: - path: "{{ matrix_bot_chatgpt_base_path }}" - state: absent diff --git a/roles/custom/matrix-bot-chatgpt/tasks/validate_config.yml b/roles/custom/matrix-bot-chatgpt/tasks/validate_config.yml deleted file mode 100644 index 44f103e01..000000000 --- a/roles/custom/matrix-bot-chatgpt/tasks/validate_config.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- - -- name: Fail if required Chatgpt 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_bot_chatgpt_openai_api_key', when: true} - - {'name': 'matrix_bot_chatgpt_matrix_bot_username', when: true} - - {'name': 'matrix_bot_chatgpt_container_network', when: true} - - {'name': 'matrix_bot_chatgpt_matrix_homeserver_url', when: true} - -- name: Fail if OpenAI configuration not up-to-date. - ansible.builtin.fail: - msg: >- - Your configuration contains a varible that is no longer used. - Please change your configuration to remove the variable (`{{ item.name }}`). - when: "item.name in vars" - with_items: - - {'name': 'matrix_bot_chatgpt_openai_email'} - - {'name': 'matrix_bot_chatgpt_openai_password'} - - {'name': 'matrix_bot_chatgpt_openai_login_type'} - -- name: (Deprecation) Catch and report renamed ChatGPT 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 }}`). - when: "item.old in vars" - with_items: - - {'old': 'matrix_bot_chatgpt_docker_image', 'new': 'matrix_bot_chatgpt_container_image'} - - {'old': 'matrix_bot_chatgpt_docker_image_name_prefix', 'new': 'matrix_bot_chatgpt_container_image_name_prefix'} - - {'old': 'matrix_bot_chatgpt_docker_image_force_pull', 'new': 'matrix_bot_chatgpt_container_image_force_pull'} - - {'old': 'matrix_bot_chatgpt_docker_repo', 'new': 'matrix_bot_chatgpt_container_image_self_build_repo'} - - {'old': 'matrix_bot_chatgpt_docker_repo_version', 'new': 'matrix_bot_chatgpt_container_image_self_build_repo_version'} - - {'old': 'matrix_bot_chatgpt_docker_src_files_path', 'new': 'matrix_bot_chatgpt_container_src_path'} diff --git a/roles/custom/matrix-bot-chatgpt/templates/env.j2 b/roles/custom/matrix-bot-chatgpt/templates/env.j2 deleted file mode 100644 index 375ef18f2..000000000 --- a/roles/custom/matrix-bot-chatgpt/templates/env.j2 +++ /dev/null @@ -1,32 +0,0 @@ -MATRIX_HOMESERVER_URL={{ matrix_bot_chatgpt_matrix_homeserver_url }} -MATRIX_ACCESS_TOKEN={{ matrix_bot_chatgpt_matrix_access_token }} - -OPENAI_API_KEY={{ matrix_bot_chatgpt_openai_api_key }} -CHATGPT_CONTEXT={{ matrix_bot_chatgpt_context }} -CHATGPT_API_MODEL={{ matrix_bot_chatgpt_api_model }} - -KEYV_BACKEND={{ matrix_bot_chatgpt_keyv_backend }} -KEYV_URL={{ matrix_bot_chatgpt_keyv_url }} -KEYV_BOT_ENCRYPTION={{ matrix_bot_chatgpt_keyv_bot_encryption|lower }} -KEYV_BOT_STORAGE={{ matrix_bot_chatgpt_keyv_bot_storage|lower }} - -# With the @ and :example.com, ie @bot.chatgpt:example.com -MATRIX_BOT_USERNAME={{ matrix_bot_chatgpt_matrix_bot_username }} -MATRIX_BOT_PASSWORD={{ matrix_bot_chatgpt_matrix_bot_password }} - -MATRIX_DEFAULT_PREFIX={{ matrix_bot_chatgpt_matrix_default_prefix }} -MATRIX_DEFAULT_PREFIX_REPLY={{ matrix_bot_chatgpt_matrix_default_prefix_reply|lower }} - -MATRIX_BLACKLIST={{ matrix_bot_chatgpt_matrix_blacklist }} -MATRIX_WHITELIST={{ matrix_bot_chatgpt_matrix_whitelist }} - -MATRIX_AUTOJOIN={{ matrix_bot_chatgpt_matrix_autojoin|lower }} -MATRIX_ENCRYPTION={{ matrix_bot_chatgpt_matrix_encryption|lower }} -MATRIX_THREADS={{ matrix_bot_chatgpt_matrix_threads|lower }} -MATRIX_RICH_TEXT={{ matrix_bot_chatgpt_matrix_rich_text|lower }} - -CHATGPT_PROMPT_PREFIX={{ matrix_bot_chatgpt_matrix_bot_prompt_prefix }} - -DATA_PATH=/data/ - -{{ matrix_bot_chatgpt_environment_variables_extension }} diff --git a/roles/custom/matrix-bot-chatgpt/templates/systemd/matrix-bot-chatgpt.service.j2 b/roles/custom/matrix-bot-chatgpt/templates/systemd/matrix-bot-chatgpt.service.j2 deleted file mode 100644 index 01b0763a4..000000000 --- a/roles/custom/matrix-bot-chatgpt/templates/systemd/matrix-bot-chatgpt.service.j2 +++ /dev/null @@ -1,49 +0,0 @@ -#jinja2: lstrip_blocks: "True" -[Unit] -Description=Matrix chatgpt bot -{% for service in matrix_bot_chatgpt_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_bot_chatgpt_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ matrix_bot_chatgpt_container_stop_grace_time_seconds }} matrix-bot-chatgpt 2>/dev/null || true' -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-chatgpt 2>/dev/null || true' - -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ - --rm \ - --name=matrix-bot-chatgpt \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --read-only \ - --tmpfs /tmp \ - --network={{ matrix_bot_chatgpt_container_network }} \ - --env-file={{ matrix_bot_chatgpt_config_path }}/env \ - --mount type=bind,src={{ matrix_bot_chatgpt_data_path }},dst=/data \ - --env HOME=/data/home \ - {% for arg in matrix_bot_chatgpt_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_bot_chatgpt_container_image }} - -{% for network in matrix_bot_chatgpt_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-bot-chatgpt -{% endfor %} - -ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-bot-chatgpt - -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ matrix_bot_chatgpt_container_stop_grace_time_seconds }} matrix-bot-chatgpt 2>/dev/null || true' -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-chatgpt 2>/dev/null || true' -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-bot-chatgpt - -[Install] -WantedBy=multi-user.target diff --git a/roles/custom/matrix-bot-draupnir/defaults/main.yml b/roles/custom/matrix-bot-draupnir/defaults/main.yml index 57db9448d..a4202bba1 100644 --- a/roles/custom/matrix-bot-draupnir/defaults/main.yml +++ b/roles/custom/matrix-bot-draupnir/defaults/main.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2023 - 2025 Catalan Lover +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # A moderation tool for Matrix # Project source code URL: https://github.com/the-draupnir-project/Draupnir @@ -5,13 +12,15 @@ matrix_bot_draupnir_enabled: true # renovate: datasource=docker depName=gnuxie/draupnir -matrix_bot_draupnir_version: "v2.1.0" +matrix_bot_draupnir_version: "v2.9.0" matrix_bot_draupnir_container_image_self_build: false matrix_bot_draupnir_container_image_self_build_repo: "https://github.com/the-draupnir-project/Draupnir.git" -matrix_bot_draupnir_docker_image: "{{ matrix_bot_draupnir_docker_image_name_prefix }}gnuxie/draupnir:{{ matrix_bot_draupnir_version }}" -matrix_bot_draupnir_docker_image_name_prefix: "{{ 'localhost/' if matrix_bot_draupnir_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_bot_draupnir_docker_image: "{{ matrix_bot_draupnir_docker_image_registry_prefix }}gnuxie/draupnir:{{ matrix_bot_draupnir_version }}" +matrix_bot_draupnir_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_draupnir_container_image_self_build else matrix_bot_draupnir_docker_image_registry_prefix_upstream }}" +matrix_bot_draupnir_docker_image_registry_prefix_upstream: "{{ matrix_bot_draupnir_docker_image_registry_prefix_upstream_default }}" +matrix_bot_draupnir_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_bot_draupnir_docker_image_force_pull: "{{ matrix_bot_draupnir_docker_image.endswith(':latest') }}" matrix_bot_draupnir_base_path: "{{ matrix_base_data_path }}/draupnir" @@ -19,9 +28,19 @@ matrix_bot_draupnir_config_path: "{{ matrix_bot_draupnir_base_path }}/config" matrix_bot_draupnir_data_path: "{{ matrix_bot_draupnir_base_path }}/data" matrix_bot_draupnir_docker_src_files_path: "{{ matrix_bot_draupnir_base_path }}/docker-src" -matrix_bot_draupnir_abuse_reporting_enabled: false -matrix_bot_draupnir_web_enabled: "{{ matrix_bot_draupnir_abuse_reporting_enabled }}" -matrix_bot_draupnir_display_reports: "{{ matrix_bot_draupnir_abuse_reporting_enabled }}" +matrix_bot_draupnir_config_web_enabled: "{{ matrix_bot_draupnir_config_web_abuseReporting or matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled }}" # noqa var-naming + +matrix_bot_draupnir_config_web_abuseReporting: false # noqa var-naming + +matrix_bot_draupnir_config_web_port: 8080 + +# These variables are used for turning on the integration between the synapseHTTPAntispam module and Draupnir. +# Authorisation is a shared secret between Draupnir and the module just like is used by Appservices and the homeserver +# therefore the same creation mechanism is used here too. +matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled: false # noqa var-naming +matrix_bot_draupnir_config_web_synapseHTTPAntispam_authorization: '' # noqa var-naming + +matrix_bot_draupnir_config_displayReports: "{{ matrix_bot_draupnir_config_web_abuseReporting }}" # noqa var-naming matrix_bot_draupnir_container_network: "" @@ -48,7 +67,7 @@ matrix_bot_draupnir_systemd_wanted_services_list: [] # Whether Draupnir should talk to the homeserver through Pantalaimon # If true, then other variables must be provided including pointing -# `matrix_bot_draupnir_homeserver_url` to the Pantalaimon URL. +# `matrix_bot_draupnir_config_homeserverUrl` to the Pantalaimon URL. # # The upstream project discourages enabling this option, because it is # known that running Draupnir along with Pantalaimon breaks all workflows that involve @@ -62,39 +81,41 @@ matrix_bot_draupnir_pantalaimon_breakage_ignore: false # Tells the bot if it should use its native E2EE support in the form of experimental Rust Crypto in the bot SDK. # This option is mutually exclusive with `matrix_bot_draupnir_pantalaimon_use`. # Rust Crypto requires a clean access token that has not touched E2EE so curl is recommended as a method to obtain it. -matrix_bot_draupnir_enable_experimental_rust_crypto: false +matrix_bot_draupnir_config_experimentalRustCrypto: false # noqa var-naming # The access token for the bot user. Required if Pantalaimon is NOT used. # (Otherwise provide `matrix_bot_draupnir_pantalaimon_username` and `matrix_bot_draupnir_pantalaimon_password` instead.) -matrix_bot_draupnir_access_token: "" +matrix_bot_draupnir_config_accessToken: "" # noqa var-naming # Username and password for the bot. Required if Pantalaimon is used. -# (Otherwise provide `matrix_bot_draupnir_access_token` instead.) +# (Otherwise provide `matrix_bot_draupnir_config_accessToken` instead.) matrix_bot_draupnir_pantalaimon_username: "" matrix_bot_draupnir_pantalaimon_password: "" # Username and password the bot uses for logging in directly. If Pantalaimon is used, # these values become the values of `matrix_bot_draupnir_pantalaimon_username` and `matrix_bot_draupnir_pantalaimon_password` +# These config options do not follow the common naming schema as to not cause user confusion over them being called Pantalaimon when using native login. matrix_bot_draupnir_login: "{{ matrix_bot_draupnir_pantalaimon_username if matrix_bot_draupnir_pantalaimon_use == 'true' else 'bot.draupnir' }}" matrix_bot_draupnir_password: "{{ matrix_bot_draupnir_pantalaimon_password }}" # Controls if we activate the config block for Pantalaimon for now. Its name will # probably be changed for our usecase due to Draupnir's push to scrub Pantalaimon from the codebase. -matrix_bot_draupnir_login_native: "" +# This configuration option does not follow the common naming schema as its not controlling a config key directly. +matrix_bot_draupnir_login_native: false # The room ID where people can use the bot. The bot has no access controls, so # anyone in this room can use the bot - secure your room! # This should be a room alias or room ID - not a matrix.to URL. # Note: Draupnir is fairly verbose - expect a lot of messages from it. -matrix_bot_draupnir_management_room: "" +matrix_bot_draupnir_config_managementRoom: "" # noqa var-naming # Endpoint URL that Draupnir uses to interact with the Matrix homeserver (client-server API). # Set this to the Pantalaimon URL if you're using that. -matrix_bot_draupnir_homeserver_url: "" +matrix_bot_draupnir_config_homeserverUrl: "" # noqa var-naming # Endpoint URL that Draupnir could use to fetch events related to reports (client-server API and /_synapse/). # Only set this to the public-internet homeserver client API URL. Do NOT set this to the Pantalaimon URL. -matrix_bot_draupnir_raw_homeserver_url: "" +matrix_bot_draupnir_config_rawHomeserverUrl: "" # noqa var-naming # Disable Server ACL is used if you do not want to give the bot the right to apply Server ACLs in rooms without complaints from the bot. # This setting is described the following way in the configuration. @@ -104,12 +125,37 @@ matrix_bot_draupnir_raw_homeserver_url: "" # It is recommended to consult with people from the upstream project beforehand. # # It is exposed here because it is common enough to be valid to expose. -matrix_bot_draupnir_disable_server_acl: "false" +matrix_bot_draupnir_config_disableServerACL: false # noqa var-naming + +# Control if Draupnir wants for the Synapse Admin API to be exposed internally to containers, therefore giving Draupnir Access. +matrix_bot_draupnir_admin_api_enabled: "{{ matrix_bot_draupnir_config_admin_enableMakeRoomAdminCommand }}" + +# Controls if the Draupnir room hijack command is activated or not. +# Also see `matrix_bot_draupnir_admin_api_enabled`. +matrix_bot_draupnir_config_admin_enableMakeRoomAdminCommand: false # noqa var-naming # Controls if the room state backing store is activated. # Room state backing store makes restarts of the bot lightning fast as the bot does not suffer from amnesia. # This config option has diminished improvements for bots on extremely fast homeservers or very very small bots on fast homeservers. -matrix_bot_draupnir_enable_room_state_backing_store: "true" +matrix_bot_draupnir_config_roomStateBackingStore_enabled: true # noqa var-naming + +matrix_bot_draupnir_web_url: 'http://matrix-bot-draupnir' + +# This controls the URL that the module targets in Draupnir. +matrix_bot_draupnir_synapse_http_antispam_config_base_url: "{{ matrix_bot_draupnir_web_url }}:{{ matrix_bot_draupnir_config_web_port }}/api/1/spam_check" + +# These variables control the configuration of the Synapse module as the configuration is highly consumer dependent. +# Therefore the module is configured from Draupnir because the consumer of the module determines what settings are relevant. + +matrix_bot_draupnir_synapse_http_antispam_config_enabled_callbacks: + - user_may_invite + - user_may_join_room + +matrix_bot_draupnir_synapse_http_antispam_config_fail_open: + user_may_invite: true + user_may_join_room: true + +matrix_bot_draupnir_synapse_http_antispam_config_async: {} # Default configuration template which covers the generic use case. # You can customize it by controlling the various variables inside it. @@ -139,13 +185,13 @@ matrix_bot_draupnir_configuration: "{{ matrix_bot_draupnir_configuration_yaml | # See `matrix_synapse_container_labels_traefik_enabled` or `matrix_synapse_container_labels_matrix_related_labels_enabled` matrix_bot_draupnir_container_labels_traefik_enabled: false matrix_bot_draupnir_container_labels_traefik_docker_network: "{{ matrix_draupnir_bot_container_network }}" -matrix_bot_draupnir_container_labels_traefik_hostname: "{{ matrix_synapse_container_labels_traefik_hostname }}" -matrix_bot_draupnir_container_labels_traefik_path_regexp: "^/_matrix/client/(r0|v3)/rooms/([^/]*)/report/" -matrix_bot_draupnir_container_labels_traefik_rule: "Host(`{{ matrix_bot_draupnir_container_labels_traefik_hostname }}`) && PathRegexp(`{{ matrix_bot_draupnir_container_labels_traefik_path_regexp }}`)" -matrix_bot_draupnir_container_labels_traefik_priority: 0 -matrix_bot_draupnir_container_labels_traefik_entrypoints: "{{ matrix_synapse_container_labels_traefik_entrypoints }}" -matrix_bot_draupnir_container_labels_traefik_tls: "{{ matrix_bot_draupnir_container_labels_traefik_entrypoints != 'web' }}" -matrix_bot_draupnir_container_labels_traefik_tls_certResolver: "{{ matrix_synapse_container_labels_traefik_tls_certResolver }}" # noqa var-naming +matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_hostname: "{{ matrix_synapse_container_labels_traefik_hostname }}" # noqa var-naming +matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_path_regexp: "^/_matrix/client/(r0|v3)/rooms/([^/]*)/report/(.*)$" # noqa var-naming +matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_rule: "Host(`{{ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_hostname }}`) && PathRegexp(`{{ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_path_regexp }}`)" # noqa var-naming +matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_priority: 0 # noqa var-naming +matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_entrypoints: "{{ matrix_synapse_container_labels_traefik_entrypoints }}" # noqa var-naming +matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls: "{{ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_entrypoints != 'web' }}" # noqa var-naming +matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls_certResolver: "{{ matrix_synapse_container_labels_traefik_tls_certResolver }}" # noqa var-naming # matrix_bot_draupnir_container_labels_traefik_labels_additional_labels contains a multiline string with additional labels to add to the container label file. # See `../templates/labels.j2` for details. # diff --git a/roles/custom/matrix-bot-draupnir/tasks/main.yml b/roles/custom/matrix-bot-draupnir/tasks/main.yml index 66c7cd06e..1a22fef82 100644 --- a/roles/custom/matrix-bot-draupnir/tasks/main.yml +++ b/roles/custom/matrix-bot-draupnir/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2023 Catalan Lover +# SPDX-FileCopyrightText: 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bot-draupnir/tasks/setup_install.yml b/roles/custom/matrix-bot-draupnir/tasks/setup_install.yml index 0ddf994e7..5693da0a0 100644 --- a/roles/custom/matrix-bot-draupnir/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-draupnir/tasks/setup_install.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2023 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2023 Catalan Lover +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: @@ -8,8 +16,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_bot_draupnir_base_path }}", when: true} - {path: "{{ matrix_bot_draupnir_config_path }}", when: true} @@ -21,8 +29,8 @@ ansible.builtin.template: src: "{{ item.src }}" dest: "{{ item.dest }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0644 with_items: - src: "{{ role_path }}/templates/labels.j2" @@ -47,7 +55,7 @@ version: "{{ matrix_bot_draupnir_docker_image.split(':')[1] }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_bot_draupnir_git_pull_results when: "matrix_bot_draupnir_container_image_self_build | bool" @@ -67,8 +75,8 @@ content: "{{ matrix_bot_draupnir_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_bot_draupnir_config_path }}/production.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-bot-draupnir container network is created community.general.docker_network: diff --git a/roles/custom/matrix-bot-draupnir/tasks/setup_uninstall.yml b/roles/custom/matrix-bot-draupnir/tasks/setup_uninstall.yml index 10583a0bc..ff9d72767 100644 --- a/roles/custom/matrix-bot-draupnir/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bot-draupnir/tasks/setup_uninstall.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2023 Catalan Lover +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-bot-draupnir service diff --git a/roles/custom/matrix-bot-draupnir/tasks/validate_config.yml b/roles/custom/matrix-bot-draupnir/tasks/validate_config.yml index 20acf748d..0bfec3996 100644 --- a/roles/custom/matrix-bot-draupnir/tasks/validate_config.yml +++ b/roles/custom/matrix-bot-draupnir/tasks/validate_config.yml @@ -1,27 +1,72 @@ +# SPDX-FileCopyrightText: 2023 - 2025 MDAD project contributors +# SPDX-FileCopyrightText: 2023 - 2025 Catalan Lover +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- +- name: (Deprecation) Catch and report renamed Draupnir 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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_bot_draupnir_container_image_name_prefix', 'new': 'matrix_bot_draupnir_container_image_registry_prefix'} + - {'old': 'matrix_bot_draupnir_enable_room_state_backing_store', 'new': 'matrix_bot_draupnir_config_roomStateBackingStore_enabled'} + - {'old': 'matrix_bot_draupnir_disable_server_acl', 'new': 'matrix_bot_draupnir_config_disableServerACL'} + - {'old': 'matrix_bot_draupnir_enable_experimental_rust_crypto', 'new': 'matrix_bot_draupnir_config_experimentalRustCrypto'} + - {'old': 'matrix_bot_draupnir_access_token', 'new': 'matrix_bot_draupnir_config_accessToken'} + - {'old': 'matrix_bot_draupnir_management_room', 'new': 'matrix_bot_draupnir_config_managementRoom'} + - {'old': 'matrix_bot_draupnir_homeserver_url', 'new': 'matrix_bot_draupnir_config_homeserverUrl'} + - {'old': 'matrix_bot_draupnir_raw_homeserver_url', 'new': 'matrix_bot_draupnir_config_rawHomeserverUrl'} + - {'old': 'matrix_bot_draupnir_web_enabled', 'new': 'matrix_bot_draupnir_config_web_enabled'} + - {'old': 'matrix_bot_draupnir_abuse_reporting_enabled', 'new': 'matrix_bot_draupnir_config_web_abuseReporting'} + - {'old': 'matrix_bot_draupnir_display_reports', 'new': 'matrix_bot_draupnir_config_displayReports'} + - {'old': 'matrix_bot_draupnir_container_labels_traefik_hostname', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_hostname'} + - {'old': 'matrix_bot_draupnir_container_labels_traefik_path_regexp', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_path_regexp'} + - {'old': 'matrix_bot_draupnir_container_labels_traefik_rule', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_rule'} + - {'old': 'matrix_bot_draupnir_container_labels_traefik_priority', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_priority'} + - {'old': 'matrix_bot_draupnir_container_labels_traefik_entrypoints', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_entrypoints'} + - {'old': 'matrix_bot_draupnir_container_labels_traefik_tls', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls'} + - {'old': 'matrix_bot_draupnir_container_labels_traefik_tls_certResolver', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls_certResolver'} + - name: Fail if required matrix-bot-draupnir variables are undefined ansible.builtin.fail: msg: "The `{{ item.name }}` variable must be defined and have a non-null value." with_items: - - {'name': 'matrix_bot_draupnir_access_token', when: "{{ not matrix_bot_draupnir_pantalaimon_use }}"} - - {'name': 'matrix_bot_draupnir_access_token', when: "{{ matrix_bot_draupnir_enable_experimental_rust_crypto }}"} - - {'name': 'matrix_bot_draupnir_management_room', when: true} + - {'name': 'matrix_bot_draupnir_config_accessToken', when: "{{ not matrix_bot_draupnir_pantalaimon_use and not matrix_bot_draupnir_login_native }}"} + - {'name': 'matrix_bot_draupnir_config_accessToken', when: "{{ matrix_bot_draupnir_config_experimentalRustCrypto }}"} + - {'name': 'matrix_bot_draupnir_config_managementRoom', when: true} - {'name': 'matrix_bot_draupnir_container_network', when: true} - - {'name': 'matrix_bot_draupnir_homeserver_url', when: true} - - {'name': 'matrix_bot_draupnir_raw_homeserver_url', when: true} + - {'name': 'matrix_bot_draupnir_config_homeserverUrl', when: true} + - {'name': 'matrix_bot_draupnir_config_rawHomeserverUrl', when: true} - {'name': 'matrix_bot_draupnir_pantalaimon_username', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"} - {'name': 'matrix_bot_draupnir_pantalaimon_password', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"} - when: "item.when | bool and (vars[item.name] == '' or vars[item.name] is none)" + when: "item.when | bool and (lookup('vars', item.name, default='') == '' or lookup('vars', item.name, default='') is none)" + +- name: Fail if Draupnir room hijacking enabled without enabling the Synapse Admin API + ansible.builtin.fail: + msg: "When matrix_bot_draupnir_config_admin_enableMakeRoomAdminCommand is enabled, matrix_bot_draupnir_admin_api_enabled must also be enabled" + when: "matrix_bot_draupnir_config_admin_enableMakeRoomAdminCommand | bool and not matrix_bot_draupnir_admin_api_enabled | bool" - name: Fail if inappropriate variables are defined ansible.builtin.fail: msg: "The `{{ item.name }}` variable must be undefined or have a null value." with_items: - - {'name': 'matrix_bot_draupnir_access_token', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"} - - {'name': 'matrix_bot_draupnir_access_token', when: "{{ matrix_bot_draupnir_login_native }}"} - - {'name': 'matrix_bot_draupnir_pantalaimon_use', when: "{{ matrix_bot_draupnir_enable_experimental_rust_crypto }}"} - when: "item.when | bool and not (vars[item.name] == '' or vars[item.name] is none)" + - {'name': 'matrix_bot_draupnir_config_accessToken', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"} + - {'name': 'matrix_bot_draupnir_config_accessToken', when: "{{ matrix_bot_draupnir_login_native }}"} + when: "item.when | bool and not (lookup('vars', item.name, default='') == '' or lookup('vars', item.name, default='') is none)" + +- name: Fail when matrix_bot_draupnir_config_experimentalRustCrypto is enabled together with matrix_bot_draupnir_pantalaimon_use + ansible.builtin.fail: + msg: >- + Your configuration is trying to enable matrix_bot_draupnir_config_experimentalRustCrypto and matrix_bot_draupnir_pantalaimon_use at the same time. + These settings are mutually incompatible and therefore can't be used at the same time. + when: + - matrix_bot_draupnir_pantalaimon_use + - matrix_bot_draupnir_config_experimentalRustCrypto - when: "matrix_bot_draupnir_pantalaimon_use == 'true' and matrix_bot_draupnir_pantalaimon_breakage_ignore == 'false'" block: @@ -32,6 +77,6 @@ devture_playbook_runtime_messages_list | default([]) + [ - "Note: Draupnir does not support running with Pantalaimon as it would break all workflows that involve answering prompts with reactions. To enable E2EE for Draupnir, it is recommended to use matrix_bot_draupnir_enable_experimental_rust_crypto instead. This warning can be disabled by setting matrix_bot_draupnir_pantalaimon_breakage_ignore to true." + "Note: Draupnir does not support running with Pantalaimon as it would break all workflows that involve answering prompts with reactions. To enable E2EE for Draupnir, it is recommended to use matrix_bot_draupnir_config_experimentalRustCrypto instead. This warning can be disabled by setting matrix_bot_draupnir_pantalaimon_breakage_ignore to true." ] }} diff --git a/roles/custom/matrix-bot-draupnir/templates/labels.j2 b/roles/custom/matrix-bot-draupnir/templates/labels.j2 index f24a77ddf..15740adf5 100644 --- a/roles/custom/matrix-bot-draupnir/templates/labels.j2 +++ b/roles/custom/matrix-bot-draupnir/templates/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2024 MDAD project contributors +SPDX-FileCopyrightText: 2025 Catalan Lover + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_bot_draupnir_container_labels_traefik_enabled %} traefik.enable=true @@ -5,8 +12,9 @@ traefik.enable=true traefik.docker.network={{ matrix_bot_draupnir_container_labels_traefik_docker_network }} {% endif %} -traefik.http.services.matrix-bot-draupnir.loadbalancer.server.port=8080 +traefik.http.services.matrix-bot-draupnir.loadbalancer.server.port={{ matrix_bot_draupnir_config_web_port }} +{% if matrix_bot_draupnir_config_web_abuseReporting %} ############################################################ # # # Abuse Reports (/_matrix/client/../rooms/../report) # @@ -15,32 +23,32 @@ traefik.http.services.matrix-bot-draupnir.loadbalancer.server.port=8080 {% set middlewares = [] %} -traefik.http.middlewares.matrix-bot-draupnir-redirect.replacepathregex.regex=^/_matrix/client/(r0|v3)/rooms/([^/]*)/report/(.*)$ -traefik.http.middlewares.matrix-bot-draupnir-redirect.replacepathregex.replacement=/api/1/report/$2/$3 +traefik.http.middlewares.matrix-bot-draupnir-web-abuseReporting-redirect.replacepathregex.regex={{ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_path_regexp }} +traefik.http.middlewares.matrix-bot-draupnir-web-abuseReporting-redirect.replacepathregex.replacement=/api/1/report/$2/$3 -{% set middlewares = middlewares + ['matrix-bot-draupnir-redirect'] %} +{% set middlewares = middlewares + ['matrix-bot-draupnir-web-abuseReporting-redirect'] %} -traefik.http.middlewares.matrix-bot-draupnir-cors.headers.accesscontrolalloworiginlist=* -traefik.http.middlewares.matrix-bot-draupnir-cors.headers.accesscontrolallowheaders=Content-Type,Authorization -traefik.http.middlewares.matrix-bot-draupnir-cors.headers.accesscontrolallowmethods=POST,OPTIONS +traefik.http.middlewares.matrix-bot-draupnir-web-abuseReporting-cors.headers.accesscontrolalloworiginlist=* +traefik.http.middlewares.matrix-bot-draupnir-web-abuseReporting-cors.headers.accesscontrolallowheaders=Content-Type,Authorization +traefik.http.middlewares.matrix-bot-draupnir-web-abuseReporting-cors.headers.accesscontrolallowmethods=POST,OPTIONS -{% set middlewares = middlewares + ['matrix-bot-draupnir-cors'] %} +{% set middlewares = middlewares + ['matrix-bot-draupnir-web-abuseReporting-cors'] %} -traefik.http.routers.matrix-bot-draupnir.rule={{ matrix_bot_draupnir_container_labels_traefik_rule }} +traefik.http.routers.matrix-bot-draupnir-web-abuseReporting.rule={{ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_rule }} -{% if matrix_bot_draupnir_container_labels_traefik_priority | int > 0 %} -traefik.http.routers.matrix-bot-draupnir.priority={{ matrix_bot_draupnir_container_labels_traefik_priority }} +{% if matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_priority | int > 0 %} +traefik.http.routers.matrix-bot-draupnir-web-abuseReporting.priority={{ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_priority }} {% endif %} {% if middlewares | length > 0 %} -traefik.http.routers.matrix-bot-draupnir.middlewares={{ middlewares | join(',') }} +traefik.http.routers.matrix-bot-draupnir-web-abuseReporting.middlewares={{ middlewares | join(',') }} {% endif %} -traefik.http.routers.matrix-bot-draupnir.service=matrix-bot-draupnir -traefik.http.routers.matrix-bot-draupnir.entrypoints={{ matrix_bot_draupnir_container_labels_traefik_entrypoints }} -traefik.http.routers.matrix-bot-draupnir.tls={{ matrix_bot_draupnir_container_labels_traefik_tls | to_json }} +traefik.http.routers.matrix-bot-draupnir-web-abuseReporting.service=matrix-bot-draupnir +traefik.http.routers.matrix-bot-draupnir-web-abuseReporting.entrypoints={{ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_entrypoints }} +traefik.http.routers.matrix-bot-draupnir-web-abuseReporting.tls={{ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls | to_json }} -{% if matrix_bot_draupnir_container_labels_traefik_tls %} -traefik.http.routers.matrix-bot-draupnir.tls.certResolver={{ matrix_bot_draupnir_container_labels_traefik_tls_certResolver }} +{% if matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls %} +traefik.http.routers.matrix-bot-draupnir-web-abuseReporting.tls.certResolver={{ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls_certResolver }} {% endif %} ############################################################ @@ -49,5 +57,6 @@ traefik.http.routers.matrix-bot-draupnir.tls.certResolver={{ matrix_bot_draupnir # # ############################################################ {% endif %} +{% endif %} {{ matrix_bot_draupnir_container_labels_traefik_labels_additional_labels }} diff --git a/roles/custom/matrix-bot-draupnir/templates/production.yaml.j2 b/roles/custom/matrix-bot-draupnir/templates/production.yaml.j2 index 56b82e322..874a3badd 100644 --- a/roles/custom/matrix-bot-draupnir/templates/production.yaml.j2 +++ b/roles/custom/matrix-bot-draupnir/templates/production.yaml.j2 @@ -1,19 +1,32 @@ -# Endpoint URL that Draupnir uses to interact with the Matrix homeserver (client-server API), -homeserverUrl: {{ matrix_bot_draupnir_homeserver_url | to_json }} +{# +SPDX-FileCopyrightText: 2023 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2023 - 2025 Catalan Lover +SPDX-FileCopyrightText: 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +# Endpoint URL that Draupnir uses to interact with the matrix homeserver (client-server API), +# set this to the pantalaimon URL if you're using that. +homeserverUrl: {{ matrix_bot_draupnir_config_homeserverUrl | to_json }} # Endpoint URL that Draupnir could use to fetch events related to reports (client-server API and /_synapse/), # only set this to the public-internet homeserver client API URL, do NOT set this to the pantalaimon URL. -rawHomeserverUrl: {{ matrix_bot_draupnir_raw_homeserver_url | to_json }} +rawHomeserverUrl: {{ matrix_bot_draupnir_config_rawHomeserverUrl | to_json }} # Matrix Access Token to use, Draupnir will only use this if pantalaimon.use is false. # This option can be loaded from a file by passing "--access-token-path " at the command line, # which would allow using secret management systems such as systemd's service credentials. -accessToken: {{ matrix_bot_draupnir_access_token | to_json }} +accessToken: {{ matrix_bot_draupnir_config_accessToken | to_json }} {% if matrix_bot_draupnir_pantalaimon_use or matrix_bot_draupnir_login_native %} # Options related to Pantalaimon (https://github.com/matrix-org/pantalaimon) pantalaimon: - # Set to `true` when the bot is to login and fetch the access token on its own. + # Whether or not Draupnir will use pantalaimon to access the matrix homeserver, + # set to `true` if you're using pantalaimon. + # + # Be sure to point homeserverUrl to the pantalaimon instance. # # Draupnir will log in using the given username and password once, # then store the resulting access token in a file under dataPath. @@ -25,16 +38,17 @@ pantalaimon: # The password Draupnir will login with. # # After successfully logging in once, this will be ignored, so this value can be blanked after first startup. - # This option can be loaded from a file by passing "--password-path " at the command line, + # This option can be loaded from a file by passing "--pantalaimon-password-path " at the command line, # which would allow using secret management systems such as systemd's service credentials. password: {{ matrix_bot_draupnir_password | to_json }} {% endif %} -# Experimental usage of the matrix-bot-sdk rust crypto. This can not be used with Pantalaimon. -# Make sure Pantalaimon is disabled in Draupnir's configuration. +# Experimental usage of the matrix-bot-sdk rust crypto. +# This can not be used with Pantalaimon. +# Make sure to setup the bot as if you are not using pantalaimon for this. # # Warning: At this time this is not considered production safe. -experimentalRustCrypto: {{ matrix_bot_draupnir_enable_experimental_rust_crypto | to_json }} +experimentalRustCrypto: {{ matrix_bot_draupnir_config_experimentalRustCrypto | to_json }} # The path Draupnir will store its state/data in, leave default ("/data/storage") when using containers. dataPath: "/data" @@ -57,13 +71,7 @@ recordIgnoredInvites: false # # Note: By default, Draupnir is fairly verbose - expect a lot of messages in this room. # (see verboseLogging to adjust this a bit.) -managementRoom: {{ matrix_bot_draupnir_management_room | to_json }} - -# Deprecated and will be removed in a future version. -# Running with verboseLogging is unsupported. -# Whether Draupnir should log a lot more messages in the room, -# mainly involves "all-OK" messages, and debugging messages for when Draupnir checks bans in a room. -verboseLogging: false +managementRoom: {{ matrix_bot_draupnir_config_managementRoom | to_json }} # The log level of terminal (or container) output, # can be one of DEBUG, INFO, WARN and ERROR, in increasing order of importance and severity. @@ -71,10 +79,6 @@ verboseLogging: false # This should be at INFO or DEBUG in order to get support for Draupnir problems. logLevel: "INFO" -# Whether or not Draupnir should synchronize policy lists immediately after startup. -# Equivalent to running '!draupnir sync'. -syncOnStartup: true - # Whether or not Draupnir should check moderation permissions in all protected rooms on startup. # Equivalent to running `!draupnir verify`. verifyPermissionsOnStartup: true @@ -85,7 +89,7 @@ noop: false # Whether or not Draupnir should apply `m.room.server_acl` events. # DO NOT change this to `true` unless you are very confident that you know what you are doing. -disableServerACL: {{ matrix_bot_draupnir_disable_server_acl | to_json }} +disableServerACL: {{ matrix_bot_draupnir_config_disableServerACL | to_json }} # A case-insensitive list of ban reasons to have the bot also automatically redact the user's messages for. # @@ -122,18 +126,17 @@ protectAllJoinedRooms: false # of the homeserver may be more impacted. backgroundDelayMS: 500 -# FIXME: This configuration option is currently broken in the playbook as admin APIs cannot -# be accessed from containers. See https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3389 -# and https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3308 -# Server administration commands, these commands will only work if Draupnir is +# Server administrative features. These will only work if Draupnir is # a global server administrator, and the bot's server is a Synapse instance. -#admin: -# # Whether or not Draupnir can temporarily take control of any eligible account from the local homeserver who's in the room -# # (with enough permissions) to "make" a user an admin. -# # -# # This only works if a local user with enough admin permissions is present in the room. -# enableMakeRoomAdminCommand: false -# +# Please review https://the-draupnir-project.github.io/draupnir-documentation/bot/homeserver-administration +admin: + # Whether to enable the make admin command. + # This command allows Draupnir can temporarily take control of any eligible account + # from the local homeserver in the target room (with enough permissions) to "make" another user an admin. + # + # This only works if a local user with enough admin permissions is present in the room. + enableMakeRoomAdminCommand: {{ matrix_bot_draupnir_config_admin_enableMakeRoomAdminCommand | to_json }} + # Misc options for command handling and commands commands: # Whether or not the `!draupnir` prefix is necessary to submit commands. @@ -191,7 +194,7 @@ commands: # homeserver and know that Draupnir is starting up quickly. If your homeserver can # respond quickly to Draupnir's requests for `/state` then you might not need this option. roomStateBackingStore: - enabled: {{ matrix_bot_draupnir_enable_room_state_backing_store | to_json }} + enabled: {{ matrix_bot_draupnir_config_roomStateBackingStore_enabled | to_json }} # Safe mode provides recovery options for some failure modes when Draupnir # fails to start. For example, if the bot fails to resolve a room alias in @@ -253,14 +256,14 @@ health: # and 1.0 means "trace performance at every opportunity". # tracesSampleRate: 0.5 -{% if matrix_bot_draupnir_web_enabled %} +{% if matrix_bot_draupnir_config_web_enabled %} # Options for exposing web APIs. web: # Whether to enable web APIs. enabled: true # The port to expose the webserver on. Defaults to 8080. - port: 8080 + port: {{ matrix_bot_draupnir_config_web_port | to_json }} # The address to listen for requests on. Defaults to only the current # computer. @@ -279,17 +282,26 @@ web: # to configure a reverse proxy, see e.g. test/nginx.conf abuseReporting: # Whether to enable this feature. - enabled: {{ matrix_bot_draupnir_abuse_reporting_enabled | to_json }} + enabled: {{ matrix_bot_draupnir_config_web_abuseReporting | to_json }} + # Whether to setup a endpoints for synapse-http-antispam + # https://github.com/maunium/synapse-http-antispam + # this is required for some features of Draupnir, + # such as support for room takedown policies. + # + # Please FOLLOW the instructions here: + # https://the-draupnir-project.github.io/draupnir-documentation/bot/synapse-http-antispam + synapseHTTPAntispam: + enabled: {{ matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled | to_json }} + # This is a secret that you must place into your synapse module config + # https://github.com/maunium/synapse-http-antispam?tab=readme-ov-file#configuration + authorization: {{ matrix_bot_draupnir_config_web_synapseHTTPAntispam_authorization | to_json }} {% endif %} -# FIXME: This configuration option is currently broken in the playbook as admin APIs cannot -# be accessed from containers. See https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3389 -# and https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3308 # Whether or not to actively poll synapse for abuse reports, to be used # instead of intercepting client calls to synapse's abuse endpoint, when that # isn't possible/practical. -#pollReports: false +pollReports: false # Whether or not new reports, received either by webapi or polling, # should be printed to our managementRoom. -displayReports: {{ matrix_bot_draupnir_display_reports | to_json }} +displayReports: {{ matrix_bot_draupnir_config_displayReports | to_json }} diff --git a/roles/custom/matrix-bot-draupnir/templates/systemd/matrix-bot-draupnir.service.j2 b/roles/custom/matrix-bot-draupnir/templates/systemd/matrix-bot-draupnir.service.j2 index d83f088f2..e54f1c7d0 100644 --- a/roles/custom/matrix-bot-draupnir/templates/systemd/matrix-bot-draupnir.service.j2 +++ b/roles/custom/matrix-bot-draupnir/templates/systemd/matrix-bot-draupnir.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Draupnir bot {% for service in matrix_bot_draupnir_systemd_wanted_services_list %} @@ -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-bot-draupnir 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-bot-draupnir 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-draupnir 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -25,7 +25,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ --read-only \ --network={{ matrix_bot_draupnir_container_network }} \ {% if matrix_bot_draupnir_container_http_host_bind_port %} - -p {{ matrix_bot_draupnir_container_http_host_bind_port }}:8080 \ + -p {{ matrix_bot_draupnir_container_http_host_bind_port }}:{{ matrix_bot_draupnir_config_web_port }} \ {% endif %} --label-file={{ matrix_bot_draupnir_base_path }}/labels \ --mount type=bind,src={{ matrix_bot_draupnir_config_path }},dst=/data/config,ro \ @@ -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-bot-draupnir -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-bot-draupnir 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-bot-draupnir 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-draupnir 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bot-draupnir/templates/systemd/matrix-bot-draupnir.service.j2.license b/roles/custom/matrix-bot-draupnir/templates/systemd/matrix-bot-draupnir.service.j2.license new file mode 100644 index 000000000..e8c361acd --- /dev/null +++ b/roles/custom/matrix-bot-draupnir/templates/systemd/matrix-bot-draupnir.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 - 2024 Catalan Lover +SPDX-FileCopyrightText: 2024 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bot-go-neb/defaults/main.yml b/roles/custom/matrix-bot-go-neb/defaults/main.yml index fd4bd9bd8..5d5e8b97f 100644 --- a/roles/custom/matrix-bot-go-neb/defaults/main.yml +++ b/roles/custom/matrix-bot-go-neb/defaults/main.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Yannick Goossens +# 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 + --- # Go-NEB is a Matrix bot written in Go. It is the successor to Matrix-NEB, the original Matrix bot written in Python. @@ -28,7 +37,9 @@ matrix_bot_go_neb_data_store_path: "{{ matrix_bot_go_neb_data_path }}/store" matrix_bot_go_neb_container_image: "{{ matrix_bot_go_neb_container_image_registry_prefix }}matrixdotorg/go-neb:{{ matrix_bot_go_neb_container_image_tag }}" matrix_bot_go_neb_container_image_tag: "{{ matrix_bot_go_neb_version }}" matrix_bot_go_neb_container_image_force_pull: "{{ matrix_bot_go_neb_container_image.endswith(':latest') }}" -matrix_bot_go_neb_container_image_registry_prefix: docker.io/ +matrix_bot_go_neb_container_image_registry_prefix: "{{ matrix_bot_go_neb_container_image_registry_prefix_upstream }}" +matrix_bot_go_neb_container_image_registry_prefix_upstream: "{{ matrix_bot_go_neb_container_image_registry_prefix_upstream_default }}" +matrix_bot_go_neb_container_image_registry_prefix_upstream_default: "docker.io/" # The base container network. It will be auto-created by this role if it doesn't exist already. matrix_bot_go_neb_container_network: matrix-bot-go-neb diff --git a/roles/custom/matrix-bot-go-neb/tasks/install.yml b/roles/custom/matrix-bot-go-neb/tasks/install.yml index 10002904c..54cdec680 100644 --- a/roles/custom/matrix-bot-go-neb/tasks/install.yml +++ b/roles/custom/matrix-bot-go-neb/tasks/install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2021 Yannick Goossens +# 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 go-neb paths exist @@ -5,8 +15,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_bot_go_neb_config_path }}", when: true} - {path: "{{ matrix_bot_go_neb_data_path }}", when: true} @@ -18,16 +28,16 @@ content: "{{ matrix_bot_go_neb_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_bot_go_neb_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure go-neb support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_bot_go_neb_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - env - labels diff --git a/roles/custom/matrix-bot-go-neb/tasks/main.yml b/roles/custom/matrix-bot-go-neb/tasks/main.yml index 9367419da..09cf4bb84 100644 --- a/roles/custom/matrix-bot-go-neb/tasks/main.yml +++ b/roles/custom/matrix-bot-go-neb/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 Yannick Goossens +# 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-bot-go-neb/tasks/uninstall.yml b/roles/custom/matrix-bot-go-neb/tasks/uninstall.yml index cc5f9fa57..ad862821d 100644 --- a/roles/custom/matrix-bot-go-neb/tasks/uninstall.yml +++ b/roles/custom/matrix-bot-go-neb/tasks/uninstall.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2021 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Yannick Goossens +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-go-neb service diff --git a/roles/custom/matrix-bot-go-neb/tasks/validate_config.yml b/roles/custom/matrix-bot-go-neb/tasks/validate_config.yml index 72bc3cb41..ead635626 100644 --- a/roles/custom/matrix-bot-go-neb/tasks/validate_config.yml +++ b/roles/custom/matrix-bot-go-neb/tasks/validate_config.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2021 Yannick Goossens +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if there's not at least 1 client diff --git a/roles/custom/matrix-bot-go-neb/templates/config.yaml.j2.license b/roles/custom/matrix-bot-go-neb/templates/config.yaml.j2.license new file mode 100644 index 000000000..c74bd679c --- /dev/null +++ b/roles/custom/matrix-bot-go-neb/templates/config.yaml.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 Yannick Goossens +SPDX-FileCopyrightText: 2022 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bot-go-neb/templates/env.j2 b/roles/custom/matrix-bot-go-neb/templates/env.j2 index 22e605e5c..7fd62d5d7 100644 --- a/roles/custom/matrix-bot-go-neb/templates/env.j2 +++ b/roles/custom/matrix-bot-go-neb/templates/env.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + BIND_ADDRESS=:4050 DATABASE_TYPE={{ matrix_bot_go_neb_database_engine }} diff --git a/roles/custom/matrix-bot-go-neb/templates/labels.j2 b/roles/custom/matrix-bot-go-neb/templates/labels.j2 index 1f0123add..4f8d18670 100644 --- a/roles/custom/matrix-bot-go-neb/templates/labels.j2 +++ b/roles/custom/matrix-bot-go-neb/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_bot_go_neb_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bot-go-neb/templates/systemd/matrix-bot-go-neb.service.j2 b/roles/custom/matrix-bot-go-neb/templates/systemd/matrix-bot-go-neb.service.j2 index 876c13829..d27909e4b 100644 --- a/roles/custom/matrix-bot-go-neb/templates/systemd/matrix-bot-go-neb.service.j2 +++ b/roles/custom/matrix-bot-go-neb/templates/systemd/matrix-bot-go-neb.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Go-NEB bot {% for service in matrix_bot_go_neb_systemd_required_services_list %} @@ -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-bot-go-neb 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-bot-go-neb 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-go-neb 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-bot-go-neb -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-bot-go-neb 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-bot-go-neb 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-go-neb 2>/dev/null || true' Restart=always diff --git a/roles/custom/matrix-bot-go-neb/templates/systemd/matrix-bot-go-neb.service.j2.license b/roles/custom/matrix-bot-go-neb/templates/systemd/matrix-bot-go-neb.service.j2.license new file mode 100644 index 000000000..99d44ac5b --- /dev/null +++ b/roles/custom/matrix-bot-go-neb/templates/systemd/matrix-bot-go-neb.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 Yannick Goossens +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bot-honoroit/defaults/main.yml b/roles/custom/matrix-bot-honoroit/defaults/main.yml index 850842db6..0374002e4 100644 --- a/roles/custom/matrix-bot-honoroit/defaults/main.yml +++ b/roles/custom/matrix-bot-honoroit/defaults/main.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# 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 + --- # Honoroit is a helpdesk bot # Project source code URL: https://github.com/etkecc/honoroit @@ -21,9 +30,11 @@ matrix_bot_honoroit_docker_repo_version: "{{ matrix_bot_honoroit_version }}" matrix_bot_honoroit_docker_src_files_path: "{{ matrix_base_data_path }}/honoroit/docker-src" # renovate: datasource=docker depName=ghcr.io/etkecc/honoroit -matrix_bot_honoroit_version: v0.9.26 -matrix_bot_honoroit_docker_image: "{{ matrix_bot_honoroit_docker_image_name_prefix }}etkecc/honoroit:{{ matrix_bot_honoroit_version }}" -matrix_bot_honoroit_docker_image_name_prefix: "{{ 'localhost/' if matrix_bot_honoroit_container_image_self_build else 'ghcr.io/' }}" +matrix_bot_honoroit_version: v0.9.29 +matrix_bot_honoroit_docker_image: "{{ matrix_bot_honoroit_docker_image_registry_prefix }}etkecc/honoroit:{{ matrix_bot_honoroit_version }}" +matrix_bot_honoroit_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_honoroit_container_image_self_build else matrix_bot_honoroit_docker_image_registry_prefix_upstream }}" +matrix_bot_honoroit_docker_image_registry_prefix_upstream: "{{ matrix_bot_honoroit_docker_image_registry_prefix_upstream_default }}" +matrix_bot_honoroit_docker_image_registry_prefix_upstream_default: "ghcr.io/" matrix_bot_honoroit_docker_image_force_pull: "{{ matrix_bot_honoroit_docker_image.endswith(':latest') }}" matrix_bot_honoroit_base_path: "{{ matrix_base_data_path }}/honoroit" @@ -178,6 +189,9 @@ matrix_bot_honoroit_cachesize: '' # List of ignored room IDs matrix_bot_honoroit_ignoredrooms: [] +# If enabled, the bot will not send a warning message in an encrypted room +matrix_bot_honoroit_no_encryption_warning: false + # Ignore messages outside of threads matrix_bot_honoroit_ignorenothread: false diff --git a/roles/custom/matrix-bot-honoroit/tasks/main.yml b/roles/custom/matrix-bot-honoroit/tasks/main.yml index 9b4e29089..4e7dfbc09 100644 --- a/roles/custom/matrix-bot-honoroit/tasks/main.yml +++ b/roles/custom/matrix-bot-honoroit/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-bot-honoroit/tasks/setup_install.yml b/roles/custom/matrix-bot-honoroit/tasks/setup_install.yml index be96d021b..18b3e4932 100644 --- a/roles/custom/matrix-bot-honoroit/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-honoroit/tasks/setup_install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# 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: matrix_bot_honoroit_requires_restart: false @@ -31,8 +41,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_bot_honoroit_config_path }}", when: true} - {path: "{{ matrix_bot_honoroit_data_path }}", when: true} @@ -44,8 +54,8 @@ ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_bot_honoroit_config_path }}/{{ item }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0640 with_items: - env @@ -70,7 +80,7 @@ dest: "{{ matrix_bot_honoroit_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_bot_honoroit_git_pull_results when: "matrix_bot_honoroit_container_image_self_build | bool" diff --git a/roles/custom/matrix-bot-honoroit/tasks/setup_uninstall.yml b/roles/custom/matrix-bot-honoroit/tasks/setup_uninstall.yml index 72df4f013..28456d53c 100644 --- a/roles/custom/matrix-bot-honoroit/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bot-honoroit/tasks/setup_uninstall.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# 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-honoroit service diff --git a/roles/custom/matrix-bot-honoroit/tasks/validate_config.yml b/roles/custom/matrix-bot-honoroit/tasks/validate_config.yml index afd580c2a..6c0c12a19 100644 --- a/roles/custom/matrix-bot-honoroit/tasks/validate_config.yml +++ b/roles/custom/matrix-bot-honoroit/tasks/validate_config.yml @@ -1,12 +1,27 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required Honoroit 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_bot_honoroit_homeserver', when: true} - {'name': 'matrix_bot_honoroit_password', when: true} - {'name': 'matrix_bot_honoroit_roomid', when: true} - {'name': 'matrix_bot_honoroit_database_hostname', when: "{{ matrix_bot_honoroit_database_engine == 'postgres' }}"} + +- name: (Deprecation) Catch and report renamed Honoroit 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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_bot_honoroit_container_image_name_prefix', 'new': 'matrix_bot_honoroit_container_image_registry_prefix'} diff --git a/roles/custom/matrix-bot-honoroit/templates/env.j2 b/roles/custom/matrix-bot-honoroit/templates/env.j2 index e061a3687..5383b6525 100644 --- a/roles/custom/matrix-bot-honoroit/templates/env.j2 +++ b/roles/custom/matrix-bot-honoroit/templates/env.j2 @@ -1,3 +1,12 @@ +{# +SPDX-FileCopyrightText: 2022 - 2025 Nikita Chernyi +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + HONOROIT_LOGIN={{ matrix_bot_honoroit_login }} HONOROIT_PASSWORD={{ matrix_bot_honoroit_password }} HONOROIT_HOMESERVER={{ matrix_bot_honoroit_homeserver }} @@ -5,6 +14,7 @@ HONOROIT_ROOMID={{ matrix_bot_honoroit_roomid }} HONOROIT_DB_DSN={{ matrix_bot_honoroit_database_connection_string }} HONOROIT_DB_DIALECT={{ matrix_bot_honoroit_database_dialect }} HONOROIT_PREFIX={{ matrix_bot_honoroit_prefix }} +HONOROIT_NOENCRYPTIONWARNING={{ matrix_bot_honoroit_no_encryption_warning }} HONOROIT_AUTH_METRICS_LOGIN={{ matrix_bot_honoroit_auth_metrics_login }} HONOROIT_AUTH_METRICS_PASSWORD={{ matrix_bot_honoroit_auth_metrics_password }} HONOROIT_AUTH_METRICS_IPS={{ matrix_bot_honoroit_auth_metrics_ips | default([]) | join(' ') }} diff --git a/roles/custom/matrix-bot-honoroit/templates/labels.j2 b/roles/custom/matrix-bot-honoroit/templates/labels.j2 index 74e357914..4a027ddad 100644 --- a/roles/custom/matrix-bot-honoroit/templates/labels.j2 +++ b/roles/custom/matrix-bot-honoroit/templates/labels.j2 @@ -1,3 +1,10 @@ +{# +SPDX-FileCopyrightText: 2023 - 2024 Nikita Chernyi +SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_bot_honoroit_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bot-honoroit/templates/systemd/matrix-bot-honoroit.service.j2 b/roles/custom/matrix-bot-honoroit/templates/systemd/matrix-bot-honoroit.service.j2 index 2749ec520..1fcbbb03c 100644 --- a/roles/custom/matrix-bot-honoroit/templates/systemd/matrix-bot-honoroit.service.j2 +++ b/roles/custom/matrix-bot-honoroit/templates/systemd/matrix-bot-honoroit.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix helpdesk bot {% for service in matrix_bot_honoroit_systemd_required_services_list %} @@ -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-bot-honoroit 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-bot-honoroit 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-honoroit 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-bot-honoroit -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-bot-honoroit 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-bot-honoroit 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-honoroit 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bot-honoroit/templates/systemd/matrix-bot-honoroit.service.j2.license b/roles/custom/matrix-bot-honoroit/templates/systemd/matrix-bot-honoroit.service.j2.license new file mode 100644 index 000000000..09e19b00a --- /dev/null +++ b/roles/custom/matrix-bot-honoroit/templates/systemd/matrix-bot-honoroit.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2023 Nikita Chernyi + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml b/roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml index 9423e8fad..889ad62c8 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml +++ b/roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Erick Wibben +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-registration-bot creates and manages registration tokens for a Matrix server # Project source code URL: https://github.com/moan0s/matrix-registration-bot @@ -11,8 +21,11 @@ matrix_bot_matrix_registration_bot_docker_src_files_path: "{{ matrix_bot_matrix_ # renovate: datasource=docker depName=moanos/matrix-registration-bot matrix_bot_matrix_registration_bot_version: 1.3.0 matrix_bot_matrix_registration_bot_docker_iteration: 0 -matrix_bot_matrix_registration_bot_docker_tag: "{{ matrix_bot_matrix_registration_bot_version }}-{{ matrix_bot_matrix_registration_bot_docker_iteration}}" -matrix_bot_matrix_registration_bot_docker_image: "{{ matrix_container_global_registry_prefix }}moanos/matrix-registration-bot:{{ matrix_bot_matrix_registration_bot_docker_tag }}" +matrix_bot_matrix_registration_bot_docker_tag: "{{ matrix_bot_matrix_registration_bot_version }}-{{ matrix_bot_matrix_registration_bot_docker_iteration }}" +matrix_bot_matrix_registration_bot_docker_image: "{{ matrix_bot_matrix_registration_bot_docker_image_registry_prefix }}moanos/matrix-registration-bot:{{ matrix_bot_matrix_registration_bot_docker_tag }}" +matrix_bot_matrix_registration_bot_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_matrix_registration_bot_container_image_self_build else matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream }}" +matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream: "{{ matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream_default }}" +matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_bot_matrix_registration_bot_docker_image_force_pull: "{{ matrix_bot_matrix_registration_bot_docker_image.endswith(':latest') }}" matrix_bot_matrix_registration_bot_base_path: "{{ matrix_base_data_path }}/matrix-registration-bot" @@ -30,6 +43,9 @@ matrix_bot_matrix_registration_bot_matrix_user_id: '@{{ matrix_bot_matrix_regist # The bot's password (can also be used to login via a client like Element Web) matrix_bot_matrix_registration_bot_bot_password: '' +# Optional bot command prefix +matrix_bot_matrix_registration_bot_bot_prefix: "" + # Homeserver base URL matrix_bot_matrix_registration_bot_api_base_url: "{{ matrix_homeserver_url }}" diff --git a/roles/custom/matrix-bot-matrix-registration-bot/tasks/clean_cache.yml b/roles/custom/matrix-bot-matrix-registration-bot/tasks/clean_cache.yml index ae4433b8f..5e599ec50 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/tasks/clean_cache.yml +++ b/roles/custom/matrix-bot-matrix-registration-bot/tasks/clean_cache.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Julian-Samuel Gebühr +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Delete cache files @@ -5,8 +9,8 @@ state: "{{ item }}" path: "{{ matrix_bot_matrix_registration_bot_data_path }}" mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - absent - directory diff --git a/roles/custom/matrix-bot-matrix-registration-bot/tasks/main.yml b/roles/custom/matrix-bot-matrix-registration-bot/tasks/main.yml index cd11c1d5d..b420f4cde 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/tasks/main.yml +++ b/roles/custom/matrix-bot-matrix-registration-bot/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_install.yml b/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_install.yml index a05c04109..e9956a335 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_install.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-registration-bot paths exist @@ -5,8 +13,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_bot_matrix_registration_bot_config_path }}", when: true} - {path: "{{ matrix_bot_matrix_registration_bot_data_path }}", when: true} @@ -17,8 +25,8 @@ ansible.builtin.template: src: "{{ role_path }}/templates/config.yaml.j2" dest: "{{ matrix_bot_matrix_registration_bot_config_path }}/config.yaml" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0640 - name: Ensure matrix-registration-bot image is pulled @@ -42,7 +50,7 @@ dest: "{{ matrix_bot_matrix_registration_bot_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_bot_matrix_registration_bot_git_pull_results - name: Ensure matrix-registration-bot image is built diff --git a/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_uninstall.yml b/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_uninstall.yml index b83ea783b..662f8e5da 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-matrix-registration-bot service diff --git a/roles/custom/matrix-bot-matrix-registration-bot/tasks/validate_config.yml b/roles/custom/matrix-bot-matrix-registration-bot/tasks/validate_config.yml index fb5e7de5c..cf6946fd9 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/tasks/validate_config.yml +++ b/roles/custom/matrix-bot-matrix-registration-bot/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required settings not defined ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`). - when: "vars[item] == ''" + when: "lookup('vars', item, default='') == ''" with_items: - "matrix_bot_matrix_registration_bot_bot_password" - "matrix_bot_matrix_registration_bot_api_base_url" @@ -13,8 +19,8 @@ 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_bot_matrix_registration_bot_bot_access_token', 'new': ''} - {'old': 'matrix_bot_matrix_registration_bot_matrix_homeserver_url', 'new': 'matrix_bot_matrix_registration_bot_api_base_url'} diff --git a/roles/custom/matrix-bot-matrix-registration-bot/templates/config.yaml.j2 b/roles/custom/matrix-bot-matrix-registration-bot/templates/config.yaml.j2 index 7ea2b9d0a..c5738594d 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/templates/config.yaml.j2 +++ b/roles/custom/matrix-bot-matrix-registration-bot/templates/config.yaml.j2 @@ -1,7 +1,16 @@ +{# +SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + bot: server: {{ matrix_bot_matrix_registration_bot_bot_server|to_json }} username: {{ matrix_bot_matrix_registration_bot_matrix_user_id_localpart|to_json }} password: {{ matrix_bot_matrix_registration_bot_bot_password|to_json }} + prefix: {{ matrix_bot_matrix_registration_bot_bot_prefix|to_json }} api: # API endpoint of the registration tokens @@ -13,4 +22,3 @@ api: logging: level: {{ matrix_bot_matrix_registration_bot_logging_level|to_json }} - diff --git a/roles/custom/matrix-bot-matrix-registration-bot/templates/systemd/matrix-bot-matrix-registration-bot.service.j2 b/roles/custom/matrix-bot-matrix-registration-bot/templates/systemd/matrix-bot-matrix-registration-bot.service.j2 index d12d2f588..5d78bacfc 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/templates/systemd/matrix-bot-matrix-registration-bot.service.j2 +++ b/roles/custom/matrix-bot-matrix-registration-bot/templates/systemd/matrix-bot-matrix-registration-bot.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix registration bot {% for service in matrix_bot_matrix_registration_bot_systemd_required_services_list %} @@ -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-bot-matrix-registration-bot 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-bot-matrix-registration-bot 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-matrix-registration-bot 2>/dev/null || true' 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-bot-matrix-registration-bot -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-bot-matrix-registration-bot 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-bot-matrix-registration-bot 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-matrix-registration-bot 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bot-matrix-registration-bot/templates/systemd/matrix-bot-matrix-registration-bot.service.j2.license b/roles/custom/matrix-bot-matrix-registration-bot/templates/systemd/matrix-bot-matrix-registration-bot.service.j2.license new file mode 100644 index 000000000..3a4dec62d --- /dev/null +++ b/roles/custom/matrix-bot-matrix-registration-bot/templates/systemd/matrix-bot-matrix-registration-bot.service.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Erick Wibben +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml b/roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml index e6074f70a..c53e5a739 100644 --- a/roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml +++ b/roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2021 Richard Meyer +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-reminder-bot is a bot for one-off and recurring reminders # Project source code URL: https://github.com/anoadragon453/matrix-reminder-bot @@ -10,9 +20,11 @@ matrix_bot_matrix_reminder_bot_docker_repo_version: "{{ 'master' if matrix_bot_m matrix_bot_matrix_reminder_bot_docker_src_files_path: "{{ matrix_base_data_path }}/matrix-reminder-bot/docker-src" # renovate: datasource=docker depName=ghcr.io/anoadragon453/matrix-reminder-bot -matrix_bot_matrix_reminder_bot_version: v0.3.0 -matrix_bot_matrix_reminder_bot_docker_image: "{{ matrix_bot_matrix_reminder_bot_docker_image_name_prefix }}anoadragon453/matrix-reminder-bot:{{ matrix_bot_matrix_reminder_bot_version }}" -matrix_bot_matrix_reminder_bot_docker_image_name_prefix: "{{ 'localhost/' if matrix_bot_matrix_reminder_bot_container_image_self_build else 'ghcr.io/' }}" +matrix_bot_matrix_reminder_bot_version: v0.4.0 +matrix_bot_matrix_reminder_bot_docker_image: "{{ matrix_bot_matrix_reminder_bot_docker_image_registry_prefix }}anoadragon453/matrix-reminder-bot:{{ matrix_bot_matrix_reminder_bot_version }}" +matrix_bot_matrix_reminder_bot_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_matrix_reminder_bot_container_image_self_build else matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream }}" +matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream: "{{ matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream_default }}" +matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream_default: "ghcr.io/" matrix_bot_matrix_reminder_bot_docker_image_force_pull: "{{ matrix_bot_matrix_reminder_bot_docker_image.endswith(':latest') }}" matrix_bot_matrix_reminder_bot_base_path: "{{ matrix_base_data_path }}/matrix-reminder-bot" diff --git a/roles/custom/matrix-bot-matrix-reminder-bot/tasks/main.yml b/roles/custom/matrix-bot-matrix-reminder-bot/tasks/main.yml index f475afc06..aaef35450 100644 --- a/roles/custom/matrix-bot-matrix-reminder-bot/tasks/main.yml +++ b/roles/custom/matrix-bot-matrix-reminder-bot/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-bot-matrix-reminder-bot/tasks/setup_install.yml b/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_install.yml index 4db0372f9..664b042a8 100644 --- a/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Stuart Mumford +# SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors +# 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: @@ -32,8 +43,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_bot_matrix_reminder_bot_config_path }}", when: true} - {path: "{{ matrix_bot_matrix_reminder_bot_data_path }}", when: true} @@ -60,7 +71,7 @@ dest: "{{ matrix_bot_matrix_reminder_bot_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_bot_matrix_reminder_bot_git_pull_results when: "matrix_bot_matrix_reminder_bot_container_image_self_build | bool" @@ -81,8 +92,8 @@ content: "{{ matrix_bot_matrix_reminder_bot_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_bot_matrix_reminder_bot_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-reminder-bot container network is created community.general.docker_network: diff --git a/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_uninstall.yml b/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_uninstall.yml index 512c0f2dd..55d89ffbf 100644 --- a/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bot-matrix-reminder-bot/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-matrix-reminder-bot service diff --git a/roles/custom/matrix-bot-matrix-reminder-bot/tasks/validate_config.yml b/roles/custom/matrix-bot-matrix-reminder-bot/tasks/validate_config.yml index 072e392bd..51fb49de5 100644 --- a/roles/custom/matrix-bot-matrix-reminder-bot/tasks/validate_config.yml +++ b/roles/custom/matrix-bot-matrix-reminder-bot/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: Fail if required matrix-reminder-bot settings not defined ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_bot_matrix_reminder_bot_matrix_user_password', when: true} - {'name': 'matrix_bot_matrix_reminder_bot_reminders_timezone', when: true} @@ -16,7 +22,8 @@ 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_bot_matrix_reminder_bot_container_self_build', 'new': 'matrix_bot_matrix_reminder_bot_container_image_self_build'} + - {'old': 'matrix_bot_matrix_reminder_bot_container_image_name_prefix', 'new': 'matrix_bot_matrix_reminder_bot_container_image_registry_prefix'} diff --git a/roles/custom/matrix-bot-matrix-reminder-bot/templates/config.yaml.j2.license b/roles/custom/matrix-bot-matrix-reminder-bot/templates/config.yaml.j2.license new file mode 100644 index 000000000..89e5ea1b7 --- /dev/null +++ b/roles/custom/matrix-bot-matrix-reminder-bot/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2024 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-bot-matrix-reminder-bot/templates/systemd/matrix-bot-matrix-reminder-bot.service.j2 b/roles/custom/matrix-bot-matrix-reminder-bot/templates/systemd/matrix-bot-matrix-reminder-bot.service.j2 index ecd59bd7b..0453cf934 100644 --- a/roles/custom/matrix-bot-matrix-reminder-bot/templates/systemd/matrix-bot-matrix-reminder-bot.service.j2 +++ b/roles/custom/matrix-bot-matrix-reminder-bot/templates/systemd/matrix-bot-matrix-reminder-bot.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix reminder bot {% for service in matrix_bot_matrix_reminder_bot_systemd_required_services_list %} @@ -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-bot-matrix-reminder-bot 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-bot-matrix-reminder-bot 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-matrix-reminder-bot 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-bot-matrix-reminder-bot -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-bot-matrix-reminder-bot 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-bot-matrix-reminder-bot 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-matrix-reminder-bot 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bot-matrix-reminder-bot/templates/systemd/matrix-bot-matrix-reminder-bot.service.j2.license b/roles/custom/matrix-bot-matrix-reminder-bot/templates/systemd/matrix-bot-matrix-reminder-bot.service.j2.license new file mode 100644 index 000000000..ba251d31b --- /dev/null +++ b/roles/custom/matrix-bot-matrix-reminder-bot/templates/systemd/matrix-bot-matrix-reminder-bot.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-bot-maubot/defaults/main.yml b/roles/custom/matrix-bot-maubot/defaults/main.yml index 1ba960dca..a7ea31e90 100644 --- a/roles/custom/matrix-bot-maubot/defaults/main.yml +++ b/roles/custom/matrix-bot-maubot/defaults/main.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 Stuart Mumford +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +# SPDX-FileCopyrightText: 2024 Fabio Bonelli +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # maubot is a plugin-based Matrix bot system. @@ -20,9 +30,11 @@ matrix_bot_maubot_docker_repo: "https://mau.dev/maubot/maubot.git" matrix_bot_maubot_docker_repo_version: "{{ 'master' if matrix_bot_maubot_version == 'latest' else matrix_bot_maubot_version }}" # renovate: datasource=docker depName=dock.mau.dev/maubot/maubot -matrix_bot_maubot_version: v0.5.1 -matrix_bot_maubot_docker_image: "{{ matrix_bot_maubot_docker_image_name_prefix }}maubot/maubot:{{ matrix_bot_maubot_version }}" -matrix_bot_maubot_docker_image_name_prefix: "{{ 'localhost/' if matrix_bot_maubot_container_image_self_build else 'dock.mau.dev/' }}" +matrix_bot_maubot_version: v0.6.0 +matrix_bot_maubot_docker_image: "{{ matrix_bot_maubot_docker_image_registry_prefix }}maubot/maubot:{{ matrix_bot_maubot_version }}" +matrix_bot_maubot_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_maubot_container_image_self_build else matrix_bot_maubot_docker_image_registry_prefix_upstream }}" +matrix_bot_maubot_docker_image_registry_prefix_upstream: "{{ matrix_bot_maubot_docker_image_registry_prefix_upstream_default }}" +matrix_bot_maubot_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_bot_maubot_docker_image_force_pull: "{{ matrix_bot_maubot_docker_image.endswith(':latest') }}" # matrix_bot_maubot_docker_image_customized is the name of the locally built maubot image diff --git a/roles/custom/matrix-bot-maubot/tasks/main.yml b/roles/custom/matrix-bot-maubot/tasks/main.yml index d954a452a..b17fe4200 100644 --- a/roles/custom/matrix-bot-maubot/tasks/main.yml +++ b/roles/custom/matrix-bot-maubot/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bot-maubot/tasks/setup_install.yml b/roles/custom/matrix-bot-maubot/tasks/setup_install.yml index 1c6f17404..75f710ad0 100644 --- a/roles/custom/matrix-bot-maubot/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-maubot/tasks/setup_install.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2022 Stuart Mumford +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure maubot paths exist @@ -5,8 +14,8 @@ path: "{{ item.path }}" state: directory mode: 0755 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_bot_maubot_base_path }}", when: true} - {path: "{{ matrix_bot_maubot_config_path }}", when: true} @@ -22,8 +31,8 @@ ansible.builtin.template: src: "{{ role_path }}/templates/config.yaml.j2" dest: "{{ matrix_bot_maubot_config_path }}/config.yaml" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: "u=rwx" - name: Ensure maubot image is pulled @@ -47,7 +56,7 @@ dest: "{{ matrix_bot_maubot_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_bot_maubot_git_pull_results - name: Ensure maubot image is built @@ -67,8 +76,8 @@ ansible.builtin.template: src: "{{ role_path }}/templates/customizations/Dockerfile.j2" dest: "{{ matrix_bot_maubot_customized_docker_src_files_path }}/Dockerfile" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0640 register: matrix_bot_maubot_container_image_customizations_dockerfile_result @@ -87,8 +96,8 @@ src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_bot_maubot_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels diff --git a/roles/custom/matrix-bot-maubot/tasks/setup_uninstall.yml b/roles/custom/matrix-bot-maubot/tasks/setup_uninstall.yml index 9d7695763..b5d6c15d6 100644 --- a/roles/custom/matrix-bot-maubot/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bot-maubot/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-maubot service diff --git a/roles/custom/matrix-bot-maubot/tasks/validate_config.yml b/roles/custom/matrix-bot-maubot/tasks/validate_config.yml index 297cec952..f1a247aee 100644 --- a/roles/custom/matrix-bot-maubot/tasks/validate_config.yml +++ b/roles/custom/matrix-bot-maubot/tasks/validate_config.yml @@ -1,21 +1,29 @@ +# SPDX-FileCopyrightText: 2022 - 2025 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: (Deprecation) Catch and report renamed maubot 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_bot_maubot_management_interface_port', 'new': 'matrix_bot_maubot_server_port'} - {'old': 'matrix_bot_maubot_management_interface_http_bind_port', 'new': 'matrix_bot_maubot_container_management_interface_http_bind_port'} - {'old': 'matrix_bot_maubot_registration_shared_secret', 'new': 'matrix_bot_maubot_homeserver_secret'} + - {'old': 'matrix_bot_maubot_container_image_name_prefix', 'new': 'matrix_bot_maubot_container_image_registry_prefix'} - name: Fail if required maubot 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_bot_maubot_hostname', when: true} - {'name': 'matrix_bot_maubot_path_prefix', when: true} diff --git a/roles/custom/matrix-bot-maubot/templates/config.yaml.j2 b/roles/custom/matrix-bot-maubot/templates/config.yaml.j2 index 73c75ce58..e5c5be630 100644 --- a/roles/custom/matrix-bot-maubot/templates/config.yaml.j2 +++ b/roles/custom/matrix-bot-maubot/templates/config.yaml.j2 @@ -1,3 +1,12 @@ +{# +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 Stuart Mumford +SPDX-FileCopyrightText: 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # The full URI to the database. SQLite and Postgres are fully supported. # Other DBMSes supported by SQLAlchemy may or may not work. # Format examples: diff --git a/roles/custom/matrix-bot-maubot/templates/customizations/Dockerfile.j2 b/roles/custom/matrix-bot-maubot/templates/customizations/Dockerfile.j2 index 0f2f4e508..f580a96af 100644 --- a/roles/custom/matrix-bot-maubot/templates/customizations/Dockerfile.j2 +++ b/roles/custom/matrix-bot-maubot/templates/customizations/Dockerfile.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True FROM {{ matrix_bot_maubot_docker_image }} {{ matrix_bot_maubot_container_image_customizations_dockerfile_body_custom }} diff --git a/roles/custom/matrix-bot-maubot/templates/customizations/Dockerfile.j2.license b/roles/custom/matrix-bot-maubot/templates/customizations/Dockerfile.j2.license new file mode 100644 index 000000000..e64bd56b9 --- /dev/null +++ b/roles/custom/matrix-bot-maubot/templates/customizations/Dockerfile.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-bot-maubot/templates/labels.j2 b/roles/custom/matrix-bot-maubot/templates/labels.j2 index 4c4592e89..e937775d4 100644 --- a/roles/custom/matrix-bot-maubot/templates/labels.j2 +++ b/roles/custom/matrix-bot-maubot/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_bot_maubot_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bot-maubot/templates/systemd/matrix-bot-maubot.service.j2 b/roles/custom/matrix-bot-maubot/templates/systemd/matrix-bot-maubot.service.j2 index 25ba29a46..36082f58c 100644 --- a/roles/custom/matrix-bot-maubot/templates/systemd/matrix-bot-maubot.service.j2 +++ b/roles/custom/matrix-bot-maubot/templates/systemd/matrix-bot-maubot.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Maubot {% for service in matrix_bot_maubot_systemd_required_services_list %} @@ -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-bot-maubot 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-bot-maubot 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-maubot 2>/dev/null || true' {# @@ -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-bot-maubot -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-bot-maubot 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-bot-maubot 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-maubot 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bot-maubot/templates/systemd/matrix-bot-maubot.service.j2.license b/roles/custom/matrix-bot-maubot/templates/systemd/matrix-bot-maubot.service.j2.license new file mode 100644 index 000000000..c34c637f0 --- /dev/null +++ b/roles/custom/matrix-bot-maubot/templates/systemd/matrix-bot-maubot.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr +SPDX-FileCopyrightText: 2022 Stuart Mumford + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bot-mjolnir/defaults/main.yml b/roles/custom/matrix-bot-mjolnir/defaults/main.yml index cba27a58d..317876625 100644 --- a/roles/custom/matrix-bot-mjolnir/defaults/main.yml +++ b/roles/custom/matrix-bot-mjolnir/defaults/main.yml @@ -1,3 +1,15 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Aaron Raimist +# SPDX-FileCopyrightText: 2021 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2022 Chirayu Desai +# 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 + --- # A moderation tool for Matrix # Project source code URL: https://github.com/matrix-org/mjolnir @@ -5,13 +17,15 @@ matrix_bot_mjolnir_enabled: true # renovate: datasource=docker depName=matrixdotorg/mjolnir -matrix_bot_mjolnir_version: "v1.9.2" +matrix_bot_mjolnir_version: "v1.11.0" matrix_bot_mjolnir_container_image_self_build: false matrix_bot_mjolnir_container_image_self_build_repo: "https://github.com/matrix-org/mjolnir.git" -matrix_bot_mjolnir_docker_image: "{{ matrix_bot_mjolnir_docker_image_name_prefix }}matrixdotorg/mjolnir:{{ matrix_bot_mjolnir_version }}" -matrix_bot_mjolnir_docker_image_name_prefix: "{{ 'localhost/' if matrix_bot_mjolnir_container_image_self_build else matrix_container_global_registry_prefix }}" +matrix_bot_mjolnir_docker_image: "{{ matrix_bot_mjolnir_docker_image_registry_prefix }}matrixdotorg/mjolnir:{{ matrix_bot_mjolnir_version }}" +matrix_bot_mjolnir_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_mjolnir_container_image_self_build else matrix_bot_mjolnir_docker_image_registry_prefix_upstream }}" +matrix_bot_mjolnir_docker_image_registry_prefix_upstream: "{{ matrix_bot_mjolnir_docker_image_registry_prefix_upstream_default }}" +matrix_bot_mjolnir_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_bot_mjolnir_docker_image_force_pull: "{{ matrix_bot_mjolnir_docker_image.endswith(':latest') }}" matrix_bot_mjolnir_base_path: "{{ matrix_base_data_path }}/mjolnir" diff --git a/roles/custom/matrix-bot-mjolnir/tasks/main.yml b/roles/custom/matrix-bot-mjolnir/tasks/main.yml index 03f5ba905..433827c1d 100644 --- a/roles/custom/matrix-bot-mjolnir/tasks/main.yml +++ b/roles/custom/matrix-bot-mjolnir/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# 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-bot-mjolnir/tasks/setup_install.yml b/roles/custom/matrix-bot-mjolnir/tasks/setup_install.yml index 082948344..8aea69a3c 100644 --- a/roles/custom/matrix-bot-mjolnir/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-mjolnir/tasks/setup_install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# 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 + --- - ansible.builtin.set_fact: @@ -8,8 +18,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_bot_mjolnir_base_path }}", when: true} - {path: "{{ matrix_bot_mjolnir_config_path }}", when: true} @@ -36,7 +46,7 @@ version: "{{ matrix_bot_mjolnir_docker_image.split(':')[1] }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_bot_mjolnir_git_pull_results when: "matrix_bot_mjolnir_container_image_self_build | bool" @@ -56,8 +66,8 @@ content: "{{ matrix_bot_mjolnir_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_bot_mjolnir_config_path }}/production.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-bot-mjolnir container network is created community.general.docker_network: diff --git a/roles/custom/matrix-bot-mjolnir/tasks/setup_uninstall.yml b/roles/custom/matrix-bot-mjolnir/tasks/setup_uninstall.yml index 06be71e15..08ea3b95f 100644 --- a/roles/custom/matrix-bot-mjolnir/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bot-mjolnir/tasks/setup_uninstall.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-bot-mjolnir service diff --git a/roles/custom/matrix-bot-mjolnir/tasks/validate_config.yml b/roles/custom/matrix-bot-mjolnir/tasks/validate_config.yml index 7fd67e589..91622e32f 100644 --- a/roles/custom/matrix-bot-mjolnir/tasks/validate_config.yml +++ b/roles/custom/matrix-bot-mjolnir/tasks/validate_config.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-bot-mjolnir variables are undefined @@ -11,11 +18,20 @@ - {'name': 'matrix_bot_mjolnir_raw_homeserver_url', when: true} - {'name': 'matrix_bot_mjolnir_pantalaimon_username', when: "{{ matrix_bot_mjolnir_pantalaimon_use }}"} - {'name': 'matrix_bot_mjolnir_pantalaimon_password', when: "{{ matrix_bot_mjolnir_pantalaimon_use }}"} - when: "item.when | bool and (vars[item.name] == '' or vars[item.name] is none)" + when: "item.when | bool and (lookup('vars', item.name, default='') == '' or lookup('vars', item.name, default='') is none)" - name: Fail if inappropriate variables are defined ansible.builtin.fail: msg: "The `{{ item.name }}` variable must be undefined or have a null value." with_items: - {'name': 'matrix_bot_mjolnir_access_token', when: "{{ matrix_bot_mjolnir_pantalaimon_use }}"} - when: "item.when | bool and not (vars[item.name] == '' or vars[item.name] is none)" + when: "item.when | bool and not (lookup('vars', item.name, default='') == '' or lookup('vars', item.name, default='') is none)" + +- name: (Deprecation) Catch and report renamed Mjolnir 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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_bot_mjolnir_container_image_name_prefix', 'new': 'matrix_bot_mjolnir_container_image_registry_prefix'} diff --git a/roles/custom/matrix-bot-mjolnir/templates/production.yaml.j2 b/roles/custom/matrix-bot-mjolnir/templates/production.yaml.j2 index ec2b0ea28..00e7ab7e0 100644 --- a/roles/custom/matrix-bot-mjolnir/templates/production.yaml.j2 +++ b/roles/custom/matrix-bot-mjolnir/templates/production.yaml.j2 @@ -1,3 +1,12 @@ +{# +SPDX-FileCopyrightText: 2021 Aaron Raimist +SPDX-FileCopyrightText: 2022 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + # Endpoint URL that Mjolnir uses to interact with the Matrix homeserver (client-server API), # set this to the pantalaimon URL if you're using that. homeserverUrl: {{ matrix_bot_mjolnir_homeserver_url | to_json }} diff --git a/roles/custom/matrix-bot-mjolnir/templates/systemd/matrix-bot-mjolnir.service.j2 b/roles/custom/matrix-bot-mjolnir/templates/systemd/matrix-bot-mjolnir.service.j2 index b87601891..9c2933489 100644 --- a/roles/custom/matrix-bot-mjolnir/templates/systemd/matrix-bot-mjolnir.service.j2 +++ b/roles/custom/matrix-bot-mjolnir/templates/systemd/matrix-bot-mjolnir.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mjolnir bot {% for service in matrix_bot_mjolnir_systemd_wanted_services_list %} @@ -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-bot-mjolnir 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-bot-mjolnir 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-mjolnir 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -30,7 +30,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ {{ arg }} \ {% endfor %} {{ matrix_bot_mjolnir_docker_image }} \ - bot --mjolnir-config /data/config/production.yaml + bot --mjolnir-config /data/config/production.yaml {% for network in matrix_bot_mjolnir_container_additional_networks %} ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-bot-mjolnir @@ -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-bot-mjolnir -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-bot-mjolnir 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-bot-mjolnir 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bot-mjolnir 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bot-mjolnir/templates/systemd/matrix-bot-mjolnir.service.j2.license b/roles/custom/matrix-bot-mjolnir/templates/systemd/matrix-bot-mjolnir.service.j2.license new file mode 100644 index 000000000..4ec9445b4 --- /dev/null +++ b/roles/custom/matrix-bot-mjolnir/templates/systemd/matrix-bot-mjolnir.service.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2021 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2021 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2021 Aaron Raimist + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-appservice-discord/defaults/main.yml b/roles/custom/matrix-bridge-appservice-discord/defaults/main.yml index 64b2d7db8..8a2d35c78 100644 --- a/roles/custom/matrix-bridge-appservice-discord/defaults/main.yml +++ b/roles/custom/matrix-bridge-appservice-discord/defaults/main.yml @@ -1,3 +1,16 @@ +# SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Daniel Løvbrøtte Olsen +# SPDX-FileCopyrightText: 2020 John Goerzen +# SPDX-FileCopyrightText: 2021 - 2023 MDAD project contributors +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2022 Jim Myhrberg +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-appservice-discord is a Matrix <-> Discord bridge # Project source code URL: https://github.com/matrix-org/matrix-appservice-discord @@ -7,8 +20,10 @@ matrix_appservice_discord_container_image_self_build: false # renovate: datasource=docker depName=ghcr.io/matrix-org/matrix-appservice-discord matrix_appservice_discord_version: v4.0.0 -matrix_appservice_discord_docker_image: "{{ matrix_appservice_discord_docker_image_name_prefix }}matrix-org/matrix-appservice-discord:{{ matrix_appservice_discord_version }}" -matrix_appservice_discord_docker_image_name_prefix: "{{ 'localhost/' if matrix_appservice_discord_container_image_self_build else 'ghcr.io/' }}" +matrix_appservice_discord_docker_image: "{{ matrix_appservice_discord_docker_image_registry_prefix }}matrix-org/matrix-appservice-discord:{{ matrix_appservice_discord_version }}" +matrix_appservice_discord_docker_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_discord_container_image_self_build else matrix_appservice_discord_docker_image_registry_prefix_upstream }}" +matrix_appservice_discord_docker_image_registry_prefix_upstream: "{{ matrix_appservice_discord_docker_image_registry_prefix_upstream_default }}" +matrix_appservice_discord_docker_image_registry_prefix_upstream_default: "ghcr.io/" matrix_appservice_discord_docker_image_force_pull: "{{ matrix_appservice_discord_docker_image.endswith(':latest') }}" matrix_appservice_discord_base_path: "{{ matrix_base_data_path }}/appservice-discord" @@ -104,7 +119,7 @@ matrix_appservice_discord_configuration_extension: "{{ matrix_appservice_discord matrix_appservice_discord_configuration: "{{ matrix_appservice_discord_configuration_yaml | from_yaml | combine(matrix_appservice_discord_configuration_extension, recursive=True) }}" matrix_appservice_discord_registration_yaml: | - #jinja2: lstrip_blocks: "True" + #jinja2: lstrip_blocks: True id: appservice-discord as_token: "{{ matrix_appservice_discord_appservice_token }}" hs_token: "{{ matrix_appservice_discord_homeserver_token }}" diff --git a/roles/custom/matrix-bridge-appservice-discord/tasks/main.yml b/roles/custom/matrix-bridge-appservice-discord/tasks/main.yml index 88a772204..617a70849 100644 --- a/roles/custom/matrix-bridge-appservice-discord/tasks/main.yml +++ b/roles/custom/matrix-bridge-appservice-discord/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-bridge-appservice-discord/tasks/setup_install.yml b/roles/custom/matrix-bridge-appservice-discord/tasks/setup_install.yml index f847c743a..578cb4b37 100644 --- a/roles/custom/matrix-bridge-appservice-discord/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-appservice-discord/tasks/setup_install.yml @@ -1,3 +1,16 @@ +# SPDX-FileCopyrightText: 2019 - 2020 MDAD project contributors +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# 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: @@ -43,8 +56,8 @@ path: "{{ item }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - "{{ matrix_appservice_discord_base_path }}" - "{{ matrix_appservice_discord_config_path }}" @@ -80,16 +93,16 @@ content: "{{ matrix_appservice_discord_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_discord_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure AppService Discord registration.yaml installed ansible.builtin.copy: content: "{{ matrix_appservice_discord_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_discord_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" # If `matrix_appservice_discord_client_id` hasn't changed, the same invite link would be generated. # We intentionally suppress Ansible changes. diff --git a/roles/custom/matrix-bridge-appservice-discord/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-appservice-discord/tasks/setup_uninstall.yml index ca2354c63..fb164945c 100644 --- a/roles/custom/matrix-bridge-appservice-discord/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-appservice-discord/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-appservice-discord service diff --git a/roles/custom/matrix-bridge-appservice-discord/tasks/validate_config.yml b/roles/custom/matrix-bridge-appservice-discord/tasks/validate_config.yml index 8b9d1d160..6b46cbcb8 100644 --- a/roles/custom/matrix-bridge-appservice-discord/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-appservice-discord/tasks/validate_config.yml @@ -1,10 +1,15 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required appservice-discord 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_appservice_discord_client_id', when: true} - {'name': 'matrix_appservice_discord_bot_token', when: true} @@ -18,10 +23,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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_appservice_discord_container_expose_client_server_api_port', 'new': ''} + - {'old': 'matrix_appservice_discord_container_image_name_prefix', 'new': 'matrix_appservice_discord_docker_image_registry_prefix'} - name: Require a valid database engine ansible.builtin.fail: diff --git a/roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2 b/roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2 index a304a4f24..63c45d020 100644 --- a/roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2 @@ -1,8 +1,8 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True bridge: # Domain part of the bridge, e.g. matrix.org domain: {{ matrix_appservice_discord_bridge_domain|to_json }} - # This should be your publically facing URL because Discord may use it to + # This should be your publicly facing URL because Discord may use it to # fetch media from the media store. homeserverUrl: {{ matrix_appservice_discord_bridge_homeserverUrl|to_json }} # Interval at which to process users in the 'presence queue'. If you have diff --git a/roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2.license new file mode 100644 index 000000000..9747b420b --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 MDAD project contributors +SPDX-FileCopyrightText: 2022 Jim Myhrberg +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-appservice-discord/templates/systemd/matrix-appservice-discord.service.j2 b/roles/custom/matrix-bridge-appservice-discord/templates/systemd/matrix-appservice-discord.service.j2 index 3a5c9f060..a832b991f 100644 --- a/roles/custom/matrix-bridge-appservice-discord/templates/systemd/matrix-appservice-discord.service.j2 +++ b/roles/custom/matrix-bridge-appservice-discord/templates/systemd/matrix-appservice-discord.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Appservice Discord bridge {% for service in matrix_appservice_discord_systemd_required_services_list %} @@ -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-appservice-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-appservice-discord 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-discord 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-appservice-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-appservice-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-appservice-discord 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-discord 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-appservice-discord/templates/systemd/matrix-appservice-discord.service.j2.license b/roles/custom/matrix-bridge-appservice-discord/templates/systemd/matrix-appservice-discord.service.j2.license new file mode 100644 index 000000000..894501b8a --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-discord/templates/systemd/matrix-appservice-discord.service.j2.license @@ -0,0 +1,7 @@ +SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2019 MDAD project contributors +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-appservice-irc/defaults/main.yml b/roles/custom/matrix-bridge-appservice-irc/defaults/main.yml index 4ae0d8655..7ea0ee4cc 100644 --- a/roles/custom/matrix-bridge-appservice-irc/defaults/main.yml +++ b/roles/custom/matrix-bridge-appservice-irc/defaults/main.yml @@ -1,3 +1,24 @@ +# SPDX-FileCopyrightText: 2019 - 2020 Lee Verberne +# SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Aaron Raimist +# SPDX-FileCopyrightText: 2019 Alexander Acevedo +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2019 Hugues Morisset +# SPDX-FileCopyrightText: 2019 Lyubomir Popov +# SPDX-FileCopyrightText: 2019 Sylvia van Os +# SPDX-FileCopyrightText: 2020 John Goerzen +# SPDX-FileCopyrightText: 2021 - 2023 Thom Wiggers +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2021 Joseph Walton-Rivers +# SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis +# SPDX-FileCopyrightText: 2021 Sebastian Gumprich +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # Matrix Appservice IRC is a Matrix <-> IRC bridge # Project source code URL: https://github.com/matrix-org/matrix-appservice-irc @@ -13,10 +34,12 @@ matrix_appservice_irc_docker_src_files_path: "{{ matrix_base_data_path }}/appser # It's a bare version number now. We try to somewhat retain compatibility below. # renovate: datasource=docker depName=docker.io/matrixdotorg/matrix-appservice-irc matrix_appservice_irc_version: 1.0.1 -matrix_appservice_irc_docker_image: "{{ matrix_container_global_registry_prefix }}matrixdotorg/matrix-appservice-irc:{{ matrix_appservice_irc_docker_image_tag }}" +matrix_appservice_irc_docker_image: "{{ matrix_appservice_irc_docker_image_registry_prefix }}matrixdotorg/matrix-appservice-irc:{{ matrix_appservice_irc_docker_image_tag }}" +matrix_appservice_irc_docker_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_irc_container_image_self_build else matrix_appservice_irc_docker_image_registry_prefix_upstream }}" +matrix_appservice_irc_docker_image_registry_prefix_upstream: "{{ matrix_appservice_irc_docker_image_registry_prefix_upstream_default }}" +matrix_appservice_irc_docker_image_registry_prefix_upstream_default: docker.io/ matrix_appservice_irc_docker_image_tag: "{{ 'latest' if matrix_appservice_irc_version == 'latest' else ('release-' + matrix_appservice_irc_version) }}" matrix_appservice_irc_docker_image_force_pull: "{{ matrix_appservice_irc_docker_image.endswith(':latest') }}" -matrix_appservice_irc_docker_image_name_prefix: "{{ 'localhost/' if matrix_appservice_irc_container_image_self_build else matrix_container_global_registry_prefix }}" matrix_appservice_irc_base_path: "{{ matrix_base_data_path }}/appservice-irc" matrix_appservice_irc_config_path: "{{ matrix_appservice_irc_base_path }}/config" @@ -335,7 +358,7 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming # # not apply an idle timeout. This value is ignored if this IRC server is # # mirroring Matrix membership lists to IRC. Default: 172800 (48 hours) # idleTimeout: 10800 -# # The number of millseconds to wait between consecutive reconnections if a +# # The number of milliseconds to wait between consecutive reconnections if a # # client gets disconnected. Setting to 0 will cause the scheduling to be # # disabled, i.e. it will be scheduled immediately (with jitter. # # Otherwise, the scheduling interval will be used such that one client diff --git a/roles/custom/matrix-bridge-appservice-irc/tasks/main.yml b/roles/custom/matrix-bridge-appservice-irc/tasks/main.yml index d46698480..ba6332519 100644 --- a/roles/custom/matrix-bridge-appservice-irc/tasks/main.yml +++ b/roles/custom/matrix-bridge-appservice-irc/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-bridge-appservice-irc/tasks/migrate_nedb_to_postgres.yml b/roles/custom/matrix-bridge-appservice-irc/tasks/migrate_nedb_to_postgres.yml index 47d796886..eafa0c58f 100644 --- a/roles/custom/matrix-bridge-appservice-irc/tasks/migrate_nedb_to_postgres.yml +++ b/roles/custom/matrix-bridge-appservice-irc/tasks/migrate_nedb_to_postgres.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Jez Cope +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if Postgres not enabled @@ -73,6 +80,6 @@ devture_playbook_runtime_messages_list | default([]) + [ - "Note: Your appservice-irc database files have been imported into Postgres. The original database files have been moved from `{{ matrix_appservice_irc_data_path }}/*.db` to `{{ matrix_appservice_irc_data_path }}/*.db.backup`. When you've confirmed that the import went well and everything works, you should be able to safely delete these files." + "Note: Your appservice-irc database files have been imported into Postgres. The original database files have been moved from `" + matrix_appservice_irc_data_path + "/*.db` to `" + matrix_appservice_irc_data_path + "/*.db.backup`. When you've confirmed that the import went well and everything works, you should be able to safely delete these files." ] }} diff --git a/roles/custom/matrix-bridge-appservice-irc/tasks/setup_install.yml b/roles/custom/matrix-bridge-appservice-irc/tasks/setup_install.yml index 4e91e073f..79b51ab6f 100644 --- a/roles/custom/matrix-bridge-appservice-irc/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-appservice-irc/tasks/setup_install.yml @@ -1,3 +1,16 @@ +# SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 Dan Arnfield +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# 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.include_role: @@ -9,8 +22,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_appservice_irc_base_path }}", when: true} - {path: "{{ matrix_appservice_irc_config_path }}", when: true} @@ -84,7 +97,7 @@ dest: "{{ matrix_appservice_irc_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_appservice_irc_git_pull_results when: "matrix_appservice_irc_enabled | bool and matrix_appservice_irc_container_image_self_build | bool" @@ -105,15 +118,15 @@ content: "{{ matrix_appservice_irc_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_irc_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Generate Appservice IRC passkey if it doesn't exist ansible.builtin.shell: cmd: "{{ matrix_host_command_openssl }} genpkey -out {{ matrix_appservice_irc_data_path }}/passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048" creates: "{{ matrix_appservice_irc_data_path }}/passkey.pem" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" # In the past, we used to generate the passkey.pem file with root, so permissions may not be okay. # Fix it. @@ -121,8 +134,8 @@ ansible.builtin.file: path: "{{ matrix_appservice_irc_data_path }}/passkey.pem" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" # Ideally, we'd like to generate the final registration.yaml file by ourselves. # @@ -185,8 +198,8 @@ content: "{{ matrix_appservice_irc_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_irc_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-appservice-irc container network is created community.general.docker_network: diff --git a/roles/custom/matrix-bridge-appservice-irc/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-appservice-irc/tasks/setup_uninstall.yml index f16d3763f..371c42503 100644 --- a/roles/custom/matrix-bridge-appservice-irc/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-appservice-irc/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-appservice-irc service diff --git a/roles/custom/matrix-bridge-appservice-irc/tasks/validate_config.yml b/roles/custom/matrix-bridge-appservice-irc/tasks/validate_config.yml index 5d76def1b..00124dc40 100644 --- a/roles/custom/matrix-bridge-appservice-irc/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-appservice-irc/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# SPDX-FileCopyrightText: 2019 - 2025 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 appservice-irc 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_appservice_irc_appservice_token', when: true} - {'name': 'matrix_appservice_irc_homeserver_url', when: true} @@ -32,8 +38,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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_appservice_irc_container_expose_client_server_api_port', 'new': ''} - {'old': 'matrix_appservice_irc_container_self_build', 'new': 'matrix_appservice_irc_container_image_self_build'} + - {'old': 'matrix_appservice_irc_docker_image_name_prefix', 'new': 'matrix_appservice_irc_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-appservice-irc/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-appservice-irc/templates/config.yaml.j2.license new file mode 100644 index 000000000..919fa142d --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-irc/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev +SPDX-FileCopyrightText: 2020 MDAD project contributors +SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-appservice-irc/templates/systemd/matrix-appservice-irc.service.j2 b/roles/custom/matrix-bridge-appservice-irc/templates/systemd/matrix-appservice-irc.service.j2 index c13acfe09..aa26ff78b 100644 --- a/roles/custom/matrix-bridge-appservice-irc/templates/systemd/matrix-appservice-irc.service.j2 +++ b/roles/custom/matrix-bridge-appservice-irc/templates/systemd/matrix-appservice-irc.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Appservice IRC bridge {% for service in matrix_appservice_irc_systemd_required_services_list %} @@ -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-appservice-irc 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-appservice-irc 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-irc 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-appservice-irc -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-appservice-irc 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-appservice-irc 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-irc 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-appservice-irc/templates/systemd/matrix-appservice-irc.service.j2.license b/roles/custom/matrix-bridge-appservice-irc/templates/systemd/matrix-appservice-irc.service.j2.license new file mode 100644 index 000000000..cadd27bdd --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-irc/templates/systemd/matrix-appservice-irc.service.j2.license @@ -0,0 +1,7 @@ +SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2019 Hugues De Keyzer +SPDX-FileCopyrightText: 2019 MDAD project contributors +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-appservice-kakaotalk/defaults/main.yml b/roles/custom/matrix-bridge-appservice-kakaotalk/defaults/main.yml index 09d6daa2b..8a25b6205 100644 --- a/roles/custom/matrix-bridge-appservice-kakaotalk/defaults/main.yml +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/defaults/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-appservice-kakaotalk is a Matrix <-> Kakaotalk bridge # Project source code URL: https://src.miscworks.net/fair/matrix-appservice-kakaotalk/ @@ -29,13 +35,17 @@ matrix_appservice_kakaotalk_container_image_self_build_repo: "https://src.miscwo matrix_appservice_kakaotalk_container_image_self_build_repo_version: "{{ 'master' if matrix_appservice_kakaotalk_version == 'latest' else matrix_appservice_kakaotalk_version }}" matrix_appservice_kakaotalk_node_version: "{{ matrix_appservice_kakaotalk_version }}" -matrix_appservice_kakaotalk_node_docker_image: "{{ matrix_appservice_kakaotalk_node_docker_image_prefix }}fair/matrix-appservice-kakaotalk-node:{{ matrix_appservice_kakaotalk_node_version }}" -matrix_appservice_kakaotalk_node_docker_image_prefix: "localhost/" +matrix_appservice_kakaotalk_node_docker_image: "{{ matrix_appservice_kakaotalk_node_docker_image_registry_prefix }}fair/matrix-appservice-kakaotalk-node:{{ matrix_appservice_kakaotalk_node_version }}" +matrix_appservice_kakaotalk_node_docker_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_kakaotalk_container_image_self_build else matrix_appservice_kakaotalk_node_docker_image_registry_prefix_upstream }}" +matrix_appservice_kakaotalk_node_docker_image_registry_prefix_upstream: "{{ matrix_appservice_kakaotalk_node_docker_image_registry_prefix_upstream_default }}" +matrix_appservice_kakaotalk_node_docker_image_registry_prefix_upstream_default: "" matrix_appservice_kakaotalk_node_docker_image_force_pull: "{{ matrix_appservice_kakaotalk_node_docker_image.endswith(':latest') }}" matrix_appservice_kakaotalk_version: 86c038fd2ffee5e0aebf65136f085cce7e38b54e -matrix_appservice_kakaotalk_docker_image: "{{ matrix_appservice_kakaotalk_docker_image_name_prefix }}fair/matrix-appservice-kakaotalk:{{ matrix_appservice_kakaotalk_version }}" -matrix_appservice_kakaotalk_docker_image_name_prefix: "localhost/" +matrix_appservice_kakaotalk_docker_image: "{{ matrix_appservice_kakaotalk_docker_image_registry_prefix }}fair/matrix-appservice-kakaotalk:{{ matrix_appservice_kakaotalk_version }}" +matrix_appservice_kakaotalk_docker_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_kakaotalk_container_image_self_build else matrix_appservice_kakaotalk_docker_image_registry_prefix_upstream }}" +matrix_appservice_kakaotalk_docker_image_registry_prefix_upstream: "{{ matrix_appservice_kakaotalk_docker_image_registry_prefix_upstream_default }}" +matrix_appservice_kakaotalk_docker_image_registry_prefix_upstream_default: "" matrix_appservice_kakaotalk_docker_image_force_pull: "{{ matrix_appservice_kakaotalk_docker_image.endswith(':latest') }}" matrix_appservice_kakaotalk_base_path: "{{ matrix_base_data_path }}/appservice-kakaotalk" @@ -47,6 +57,9 @@ matrix_appservice_kakaotalk_command_prefix: "!kt" matrix_appservice_kakaotalk_homeserver_address: "" matrix_appservice_kakaotalk_homeserver_domain: '{{ matrix_domain }}' +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_appservice_kakaotalk_homeserver_async_media: false matrix_appservice_kakaotalk_appservice_address: 'http://matrix-appservice-kakaotalk:11115' @@ -172,7 +185,7 @@ matrix_appservice_kakaotalk_configuration: "{{ matrix_appservice_kakaotalk_confi # # The side-effect of this lookup is that Ansible would even parse the JSON for us, returning a dict. # This is unlike what it does when looking up YAML template files (no automatic parsing there). -matrix_appservice_kakaotalk_node_configuration_default: "{{ lookup('template', 'templates/node-config.json.j2') }}" +matrix_appservice_kakaotalk_node_configuration_default: "{{ lookup('template', 'templates/node-config.json.j2', convert_data=False) | from_json }}" # Your custom JSON configuration for appservice-kakaotalk-node should go to `matrix_appservice_kakaotalk_node_configuration_extension_json`. # This configuration extends the default starting configuration (`matrix_appservice_kakaotalk_node_configuration_default`). diff --git a/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/main.yml b/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/main.yml index 7a360024e..c99b77fbe 100644 --- a/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/main.yml +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/main.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/setup_install.yml b/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/setup_install.yml index 1cb1e6026..291928df8 100644 --- a/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/setup_install.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-appservice-kakaotalk image is pulled @@ -29,8 +35,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_appservice_kakaotalk_base_path }}", when: true} - {path: "{{ matrix_appservice_kakaotalk_config_path }}", when: true} @@ -45,7 +51,7 @@ version: "{{ matrix_appservice_kakaotalk_container_image_self_build_repo_version }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_appservice_kakaotalk_git_pull_results when: "matrix_appservice_kakaotalk_container_image_self_build | bool" @@ -78,24 +84,24 @@ content: "{{ matrix_appservice_kakaotalk_node_configuration | to_nice_json }}" dest: "{{ matrix_appservice_kakaotalk_config_path }}/node-config.json" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-appservice-kakaotalk config.yaml installed ansible.builtin.copy: content: "{{ matrix_appservice_kakaotalk_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_kakaotalk_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-appservice-kakaotalk registration.yaml installed ansible.builtin.copy: content: "{{ matrix_appservice_kakaotalk_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_kakaotalk_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-appservice-kakaotalk container network is created community.general.docker_network: diff --git a/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/setup_uninstall.yml index e258b9ab2..f92960991 100644 --- a/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/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-appservice-kakaotalk service diff --git a/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/validate_config.yml b/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/validate_config.yml index bcb670146..a22214c05 100644 --- a/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/tasks/validate_config.yml @@ -1,13 +1,28 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required appservice-kakaotalk 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_appservice_kakaotalk_appservice_token', when: true} - {'name': 'matrix_appservice_kakaotalk_homeserver_address', when: true} - {'name': 'matrix_appservice_kakaotalk_homeserver_token', when: true} - {'name': 'matrix_appservice_kakaotalk_database_hostname', when: "{{ matrix_appservice_kakaotalk_database_engine == 'postgres' }}"} - {'name': 'matrix_appservice_kakaotalk_container_network', when: true} + +- name: (Deprecation) Catch and report renamed appservice-kakaotalk variables + ansible.builtin.fail: + msg: >- + Your configuration contains a variable, which now has a different name. + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_appservice_kakaotalk_node_docker_image_name_prefix', 'new': 'matrix_appservice_kakaotalk_node_docker_image_registry_prefix'} + - {'old': 'matrix_appservice_kakaotalk_docker_image_name_prefix', 'new': 'matrix_appservice_kakaotalk_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-appservice-kakaotalk/templates/config.yaml.j2 b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/config.yaml.j2 index 709a59934..0f76a976b 100644 --- a/roles/custom/matrix-bridge-appservice-kakaotalk/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/config.yaml.j2 @@ -21,7 +21,7 @@ homeserver: message_send_checkpoint_endpoint: null # Whether asynchronous uploads via MSC2246 should be enabled for media. # Requires a media repo that supports MSC2246. - async_media: false + async_media: {{ matrix_appservice_kakaotalk_homeserver_async_media | to_json }} # Application service host/registration related details # Changing these values requires regeneration of the registration. diff --git a/roles/custom/matrix-bridge-appservice-kakaotalk/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/config.yaml.j2.license new file mode 100644 index 000000000..8b6d0c244 --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/config.yaml.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2022 MDAD project contributors +SPDX-FileCopyrightText: 2022 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-bridge-appservice-kakaotalk/templates/node-config.json.j2.license b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/node-config.json.j2.license new file mode 100644 index 000000000..7b1e56adc --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/node-config.json.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-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk-node.service.j2 b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk-node.service.j2 index bb971f77a..cac295057 100644 --- a/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk-node.service.j2 +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk-node.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=appservice-kakaotalk-node bridge helper {% for service in matrix_appservice_kakaotalk_node_systemd_required_services_list %} @@ -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-appservice-kakaotalk-node 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-appservice-kakaotalk-node 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-kakaotalk-node 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-appservice-kakaotalk-node -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-appservice-kakaotalk-node 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-appservice-kakaotalk-node 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-kakaotalk-node 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk-node.service.j2.license b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk-node.service.j2.license new file mode 100644 index 000000000..b2bdc9cb4 --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk-node.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk.service.j2 b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk.service.j2 index fae5f25a1..3c5e15b3a 100644 --- a/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk.service.j2 +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=appservice-kakaotalk bridge {% for service in matrix_appservice_kakaotalk_systemd_required_services_list %} @@ -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-appservice-kakaotalk 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-appservice-kakaotalk 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-kakaotalk 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-appservice-kakaotalk -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-appservice-kakaotalk 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-appservice-kakaotalk 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-kakaotalk 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk.service.j2.license b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk.service.j2.license new file mode 100644 index 000000000..7b1e56adc --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-kakaotalk/templates/systemd/matrix-appservice-kakaotalk.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-bridge-appservice-slack/defaults/main.yml b/roles/custom/matrix-bridge-appservice-slack/defaults/main.yml index b5c6f6bf9..4a8eb2dc7 100644 --- a/roles/custom/matrix-bridge-appservice-slack/defaults/main.yml +++ b/roles/custom/matrix-bridge-appservice-slack/defaults/main.yml @@ -1,3 +1,19 @@ +# SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Daniel Wiegreffe +# SPDX-FileCopyrightText: 2021 Ahmad Haghighi +# SPDX-FileCopyrightText: 2021 Béla Becker +# SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis +# SPDX-FileCopyrightText: 2021 boris runakov +# SPDX-FileCopyrightText: 2022 Didier 'OdyX' Raboud +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Fabio Bonelli +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # matrix-appservice-slack is a Matrix <-> Slack bridge # Project source code URL: https://github.com/matrix-org/matrix-appservice-slack @@ -17,7 +33,10 @@ matrix_appservice_slack_docker_src_files_path: "{{ matrix_base_data_path }}/apps # It's a bare version number now. We try to somewhat retain compatibility below. # renovate: datasource=docker depName=docker.io/matrixdotorg/matrix-appservice-slack matrix_appservice_slack_version: 2.1.2 -matrix_appservice_slack_docker_image: "{{ matrix_container_global_registry_prefix }}matrixdotorg/matrix-appservice-slack:{{ matrix_appservice_slack_docker_image_tag }}" +matrix_appservice_slack_docker_image: "{{ matrix_appservice_slack_docker_image_registry_prefix }}matrixdotorg/matrix-appservice-slack:{{ matrix_appservice_slack_docker_image_tag }}" +matrix_appservice_slack_docker_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_slack_container_image_self_build else matrix_appservice_slack_docker_image_registry_prefix_upstream }}" +matrix_appservice_slack_docker_image_registry_prefix_upstream: "{{ matrix_appservice_slack_docker_image_registry_prefix_upstream_default }}" +matrix_appservice_slack_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_appservice_slack_docker_image_tag: "{{ 'latest' if matrix_appservice_slack_version == 'latest' else ('release-' + matrix_appservice_slack_version) }}" matrix_appservice_slack_docker_image_force_pull: "{{ matrix_appservice_slack_docker_image.endswith(':latest') }}" diff --git a/roles/custom/matrix-bridge-appservice-slack/tasks/main.yml b/roles/custom/matrix-bridge-appservice-slack/tasks/main.yml index c98dc5198..c9251c190 100644 --- a/roles/custom/matrix-bridge-appservice-slack/tasks/main.yml +++ b/roles/custom/matrix-bridge-appservice-slack/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2019 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-appservice-slack/tasks/migrate_nedb_to_postgres.yml b/roles/custom/matrix-bridge-appservice-slack/tasks/migrate_nedb_to_postgres.yml index b3a6ee937..3f3500da7 100644 --- a/roles/custom/matrix-bridge-appservice-slack/tasks/migrate_nedb_to_postgres.yml +++ b/roles/custom/matrix-bridge-appservice-slack/tasks/migrate_nedb_to_postgres.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if Postgres not enabled @@ -69,6 +75,6 @@ devture_playbook_runtime_messages_list | default([]) + [ - "Note: Your appservice-slack database files have been imported into Postgres. The original database files have been moved from `{{ matrix_appservice_slack_data_path }}/*.db` to `{{ matrix_appservice_slack_data_path }}/*.db.backup`. When you've confirmed that the import went well and everything works, you should be able to safely delete these files." + "Note: Your appservice-slack database files have been imported into Postgres. The original database files have been moved from `" + matrix_appservice_slack_data_path + "/*.db` to `" + matrix_appservice_slack_data_path + "/*.db.backup`. When you've confirmed that the import went well and everything works, you should be able to safely delete these files." ] }} diff --git a/roles/custom/matrix-bridge-appservice-slack/tasks/setup_install.yml b/roles/custom/matrix-bridge-appservice-slack/tasks/setup_install.yml index 619276bdb..496c4556e 100644 --- a/roles/custom/matrix-bridge-appservice-slack/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-appservice-slack/tasks/setup_install.yml @@ -1,3 +1,15 @@ +# SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2020 Chris van Dijk +# 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 + --- - name: Ensure AppService Slack paths exist @@ -5,8 +17,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_appservice_slack_base_path }}", when: true} - {path: "{{ matrix_appservice_slack_config_path }}", when: true} @@ -50,7 +62,7 @@ dest: "{{ matrix_appservice_slack_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_appservice_slack_git_pull_results when: "matrix_appservice_slack_container_image_self_build | bool" @@ -71,16 +83,16 @@ content: "{{ matrix_appservice_slack_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_slack_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure appservice-slack registration.yaml installed ansible.builtin.copy: content: "{{ matrix_appservice_slack_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_appservice_slack_config_path }}/slack-registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-appservice-slack container network is created community.general.docker_network: @@ -94,8 +106,8 @@ src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_appservice_slack_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels diff --git a/roles/custom/matrix-bridge-appservice-slack/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-appservice-slack/tasks/setup_uninstall.yml index 51c77fef0..e37cfb046 100644 --- a/roles/custom/matrix-bridge-appservice-slack/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-appservice-slack/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2019 - 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-appservice-slack service diff --git a/roles/custom/matrix-bridge-appservice-slack/tasks/validate_config.yml b/roles/custom/matrix-bridge-appservice-slack/tasks/validate_config.yml index d6d802dd3..ceb4e4a75 100644 --- a/roles/custom/matrix-bridge-appservice-slack/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-appservice-slack/tasks/validate_config.yml @@ -1,10 +1,17 @@ +# SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 boris runakov +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required appservice-slack 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_appservice_slack_control_room_id', when: true} - {'name': 'matrix_appservice_slack_appservice_token', when: true} @@ -20,7 +27,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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_appservice_slack_container_self_build', 'new': 'matrix_appservice_slack_container_image_self_build'} diff --git a/roles/custom/matrix-bridge-appservice-slack/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-appservice-slack/templates/config.yaml.j2.license new file mode 100644 index 000000000..52f246738 --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-slack/templates/config.yaml.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2020 - 2022 MDAD project contributors +SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Didier 'OdyX' Raboud +SPDX-FileCopyrightText: 2024 Fabio Bonelli + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-appservice-slack/templates/labels.j2 b/roles/custom/matrix-bridge-appservice-slack/templates/labels.j2 index 5e025ae12..212902fde 100644 --- a/roles/custom/matrix-bridge-appservice-slack/templates/labels.j2 +++ b/roles/custom/matrix-bridge-appservice-slack/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_appservice_slack_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-appservice-slack/templates/systemd/matrix-appservice-slack.service.j2 b/roles/custom/matrix-bridge-appservice-slack/templates/systemd/matrix-appservice-slack.service.j2 index 6445f06af..7c50d692c 100644 --- a/roles/custom/matrix-bridge-appservice-slack/templates/systemd/matrix-appservice-slack.service.j2 +++ b/roles/custom/matrix-bridge-appservice-slack/templates/systemd/matrix-appservice-slack.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Appservice Slack bridge {% for service in matrix_appservice_slack_systemd_required_services_list %} @@ -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-appservice-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-appservice-slack 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-slack 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-appservice-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-appservice-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-appservice-slack 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-slack 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-appservice-slack/templates/systemd/matrix-appservice-slack.service.j2.license b/roles/custom/matrix-bridge-appservice-slack/templates/systemd/matrix-appservice-slack.service.j2.license new file mode 100644 index 000000000..c395d00d7 --- /dev/null +++ b/roles/custom/matrix-bridge-appservice-slack/templates/systemd/matrix-appservice-slack.service.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2019 MDAD project contributors +SPDX-FileCopyrightText: 2020 - 2025 Slavi Pantaleev +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-appservice-webhooks/defaults/main.yml b/roles/custom/matrix-bridge-appservice-webhooks/defaults/main.yml deleted file mode 100644 index aaa8d564f..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/defaults/main.yml +++ /dev/null @@ -1,124 +0,0 @@ ---- -# matrix-appservice-webhooks is a Matrix <-> webhook bridge -# Project source code URL: https://github.com/redoonetworks/matrix-appservice-webhooks - -matrix_appservice_webhooks_enabled: true - -matrix_appservice_webhooks_scheme: https -matrix_appservice_webhooks_hostname: '' -matrix_appservice_webhooks_path_prefix: /appservice-webhooks - -matrix_appservice_webhooks_container_image_self_build: false -matrix_appservice_webhooks_container_image_self_build_repo: "https://github.com/redoonetworks/matrix-appservice-webhooks" -matrix_appservice_webhooks_container_image_self_build_repo_version: "{{ 'master' if matrix_appservice_webhooks_version == 'latest' else matrix_appservice_webhooks_version }}" -matrix_appservice_webhooks_container_image_self_build_repo_dockerfile_path: "Dockerfile" - -matrix_appservice_webhooks_version: v1.0.3-01 -matrix_appservice_webhooks_docker_image: "{{ matrix_appservice_webhooks_docker_image_name_prefix }}redoonetworks/matrix-appservice-webhooks:{{ matrix_appservice_webhooks_version }}" -matrix_appservice_webhooks_docker_image_name_prefix: "{{ 'localhost/' if matrix_appservice_webhooks_container_image_self_build else matrix_container_global_registry_prefix }}" -matrix_appservice_webhooks_docker_image_force_pull: "{{ matrix_appservice_webhooks_docker_image.endswith(':latest') }}" - -matrix_appservice_webhooks_base_path: "{{ matrix_base_data_path }}/appservice-webhooks" -matrix_appservice_webhooks_config_path: "{{ matrix_appservice_webhooks_base_path }}/config" -matrix_appservice_webhooks_data_path: "{{ matrix_appservice_webhooks_base_path }}/data" -matrix_appservice_webhooks_docker_src_files_path: "{{ matrix_appservice_webhooks_base_path }}/docker-src" - -# If nginx-proxy is disabled, the bridge itself expects its endpoint to be on its own domain (e.g. "localhost:6789") -matrix_appservice_webhooks_public_endpoint: "{{ matrix_appservice_webhooks_path_prefix }}" -matrix_appservice_webhooks_inbound_uri_prefix: "{{ matrix_appservice_webhooks_scheme }}://{{ matrix_appservice_webhooks_hostname }}{{ matrix_appservice_webhooks_public_endpoint }}" - -matrix_appservice_webhooks_bot_name: 'webhookbot' -matrix_appservice_webhooks_user_prefix: '_webhook_' - -# Controls the webhooks_PORT and MATRIX_PORT of the installation -matrix_appservice_webhooks_matrix_port: 6789 - -# Controls whether the appservice-webhooks container exposes its HTTP port (tcp/6789 in the container). -# -# Takes an ":" or "" value (e.g. "127.0.0.1:9999"), or empty string to not expose. -matrix_appservice_webhooks_container_http_host_bind_port: '' - -matrix_appservice_webhooks_container_network: "" - -matrix_appservice_webhooks_container_additional_networks: "{{ matrix_appservice_webhooks_container_additional_networks_auto + matrix_appservice_webhooks_container_additional_networks_custom }}" -matrix_appservice_webhooks_container_additional_networks_auto: [] -matrix_appservice_webhooks_container_additional_networks_custom: [] - -# matrix_appservice_webhooks_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_appservice_webhooks_container_labels_additional_labels`. -matrix_appservice_webhooks_container_labels_traefik_enabled: true -matrix_appservice_webhooks_container_labels_traefik_docker_network: "{{ matrix_appservice_webhooks_container_network }}" -matrix_appservice_webhooks_container_labels_traefik_entrypoints: web-secure -matrix_appservice_webhooks_container_labels_traefik_tls_certResolver: default # noqa var-naming - -# Controls whether labels will be added that expose matrix-appservice-webhook's public endpoints -matrix_appservice_webhooks_container_labels_public_endpoint_enabled: true -matrix_appservice_webhooks_container_labels_public_endpoint_hostname: "{{ matrix_appservice_webhooks_hostname }}" -matrix_appservice_webhooks_container_labels_public_endpoint_prefix: "{{ matrix_appservice_webhooks_path_prefix }}" -matrix_appservice_webhooks_container_labels_public_endpoint_traefik_rule: "Host(`{{ matrix_appservice_webhooks_container_labels_public_endpoint_hostname }}`) && PathPrefix(`{{ matrix_appservice_webhooks_path_prefix }}`)" -matrix_appservice_webhooks_container_labels_public_endpoint_traefik_priority: 0 -matrix_appservice_webhooks_container_labels_public_endpoint_traefik_entrypoints: "{{ matrix_appservice_webhooks_container_labels_traefik_entrypoints }}" -matrix_appservice_webhooks_container_labels_public_endpoint_traefik_tls: "{{ matrix_appservice_webhooks_container_labels_public_endpoint_traefik_entrypoints != 'web' }}" -matrix_appservice_webhooks_container_labels_public_endpoint_traefik_tls_certResolver: "{{ matrix_appservice_webhooks_container_labels_traefik_tls_certResolver }}" # noqa var-naming - -# matrix_appservice_webhooks_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_appservice_webhooks_container_labels_additional_labels: | -# my.label=1 -# another.label="here" -matrix_appservice_webhooks_container_labels_additional_labels: '' - -# A list of extra arguments to pass to the container -matrix_appservice_webhooks_container_extra_arguments: [] - -# List of systemd services that matrix-appservice-webhooks.service depends on. -matrix_appservice_webhooks_systemd_required_services_list: "{{ matrix_appservice_webhooks_systemd_required_services_list_default + matrix_appservice_webhooks_systemd_required_services_list_auto + matrix_appservice_webhooks_systemd_required_services_list_custom }}" -matrix_appservice_webhooks_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_appservice_webhooks_systemd_required_services_list_auto: [] -matrix_appservice_webhooks_systemd_required_services_list_custom: [] - -# List of systemd services that matrix-appservice-webhooks.service wants -matrix_appservice_webhooks_systemd_wanted_services_list: [] - -matrix_appservice_webhooks_homeserver_media_url: "{{ matrix_server_fqn_matrix }}" -matrix_appservice_webhooks_homeserver_url: "" -matrix_appservice_webhooks_homeserver_domain: "{{ matrix_domain }}" -matrix_appservice_webhooks_appservice_url: 'http://matrix-appservice-webhooks' - -matrix_appservice_webhooks_appservice_token: '' -matrix_appservice_webhooks_homeserver_token: '' -matrix_appservice_webhooks_id_token: '' -matrix_appservice_webhooks_api_secret: '' - -# Valid values: info, verbose -matrix_appservice_webhooks_log_level: 'info' - -matrix_appservice_webhooks_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" - -matrix_appservice_webhooks_configuration_extension_yaml: | - # - -matrix_appservice_webhooks_configuration_extension: "{{ matrix_appservice_webhooks_configuration_extension_yaml | from_yaml if matrix_appservice_webhooks_configuration_extension_yaml | from_yaml else {} }}" - -matrix_appservice_webhooks_configuration: "{{ matrix_appservice_webhooks_configuration_yaml | from_yaml | combine(matrix_appservice_webhooks_configuration_extension, recursive=True) }}" - -matrix_appservice_webhooks_registration_yaml: | - id: "{{ matrix_appservice_webhooks_id_token }}" - hs_token: "{{ matrix_appservice_webhooks_homeserver_token }}" - as_token: "{{ matrix_appservice_webhooks_appservice_token }}" - namespaces: - users: - - exclusive: true - regex: '^@{{ matrix_appservice_webhooks_user_prefix | regex_escape }}.*:{{ matrix_domain | regex_escape }}$' - aliases: [] - rooms: [] - url: "{{ matrix_appservice_webhooks_appservice_url }}:{{ matrix_appservice_webhooks_matrix_port }}" - sender_localpart: _webhook - rate_limited: false - protocols: null - -matrix_appservice_webhooks_registration: "{{ matrix_appservice_webhooks_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-appservice-webhooks/tasks/main.yml b/roles/custom/matrix-bridge-appservice-webhooks/tasks/main.yml deleted file mode 100644 index b8d8c8cd4..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- tags: - - setup-all - - setup-appservice-webhooks - - install-all - - install-appservice-webhooks - block: - - when: matrix_appservice_webhooks_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_appservice_webhooks_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-appservice-webhooks - block: - - when: not matrix_appservice_webhooks_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" diff --git a/roles/custom/matrix-bridge-appservice-webhooks/tasks/setup_install.yml b/roles/custom/matrix-bridge-appservice-webhooks/tasks/setup_install.yml deleted file mode 100644 index 2896c7580..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/tasks/setup_install.yml +++ /dev/null @@ -1,105 +0,0 @@ ---- - -- name: Ensure matrix-appservice-webhooks paths exist - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_appservice_webhooks_base_path }}", when: true} - - {path: "{{ matrix_appservice_webhooks_config_path }}", when: true} - - {path: "{{ matrix_appservice_webhooks_data_path }}", when: true} - - {path: "{{ matrix_appservice_webhooks_docker_src_files_path }}", when: "{{ matrix_appservice_webhooks_container_image_self_build }}"} - when: "item.when | bool" - -- name: Ensure matrix-appservice-webhooks container image is pulled - community.docker.docker_image: - name: "{{ matrix_appservice_webhooks_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_appservice_webhooks_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_appservice_webhooks_docker_image_force_pull }}" - when: "not matrix_appservice_webhooks_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_appservice_webhooks_container_image_self_build | bool" - block: - - name: Ensure matrix-appservice-webhooks repository is present on self-build - ansible.builtin.git: - repo: "{{ matrix_appservice_webhooks_container_image_self_build_repo }}" - dest: "{{ matrix_appservice_webhooks_docker_src_files_path }}" - version: "{{ matrix_appservice_webhooks_container_image_self_build_repo_version }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_appservice_webhooks_git_pull_results - - - name: Ensure matrix-appservice-webhooks container image is built - community.docker.docker_image: - name: "{{ matrix_appservice_webhooks_docker_image }}" - source: build - force_source: "{{ matrix_appservice_webhooks_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_appservice_webhooks_git_pull_results.changed }}" - build: - dockerfile: "{{ matrix_appservice_webhooks_container_image_self_build_repo_dockerfile_path }}" - path: "{{ matrix_appservice_webhooks_docker_src_files_path }}" - pull: true - -- name: Ensure matrix-appservice-webhooks config is installed - ansible.builtin.copy: - content: "{{ matrix_appservice_webhooks_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_appservice_webhooks_config_path }}/config.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure matrix-appservice-webhooks schema.yml template exists - ansible.builtin.template: - src: "{{ role_path }}/templates/schema.yml.j2" - dest: "{{ matrix_appservice_webhooks_config_path }}/schema.yml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure matrix-appservice-webhooks database.json template exists - ansible.builtin.template: - src: "{{ role_path }}/templates/database.json.j2" - dest: "{{ matrix_appservice_webhooks_data_path }}/database.json" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure appservice-webhooks registration.yaml installed - ansible.builtin.copy: - content: "{{ matrix_appservice_webhooks_registration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_appservice_webhooks_config_path }}/webhooks-registration.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure matrix-appservice-webhooks container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_appservice_webhooks_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-appservice-webhooks support files installed - ansible.builtin.template: - src: "{{ role_path }}/templates/{{ item }}.j2" - dest: "{{ matrix_appservice_webhooks_base_path }}/{{ item }}" - mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - labels - -- name: Ensure matrix-appservice-webhooks.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-appservice-webhooks.service.j2" - dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-webhooks.service" - mode: 0644 diff --git a/roles/custom/matrix-bridge-appservice-webhooks/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-appservice-webhooks/tasks/setup_uninstall.yml deleted file mode 100644 index c47b724cf..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/tasks/setup_uninstall.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- name: Check existence of matrix-appservice-webhooks service - ansible.builtin.stat: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-webhooks.service" - register: matrix_appservice_webhooks_service_stat - -- when: matrix_appservice_webhooks_service_stat.stat.exists | bool - block: - - name: Ensure matrix-appservice-webhooks is stopped - ansible.builtin.service: - name: matrix-appservice-webhooks - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-appservice-webhooks.service doesn't exist - ansible.builtin.file: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-webhooks.service" - state: absent diff --git a/roles/custom/matrix-bridge-appservice-webhooks/tasks/validate_config.yml b/roles/custom/matrix-bridge-appservice-webhooks/tasks/validate_config.yml deleted file mode 100644 index fa8a75fc2..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/tasks/validate_config.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- - -- name: Fail if required matrix-appservice-webhooks settings not defined - ansible.builtin.fail: - msg: >- - You need to define a required configuration setting (`{{ item }}`). - when: "vars[item] == ''" - with_items: - - matrix_appservice_webhooks_appservice_token - - matrix_appservice_webhooks_homeserver_url - - matrix_appservice_webhooks_homeserver_token - - matrix_appservice_webhooks_id_token - - matrix_appservice_webhooks_api_secret - - matrix_appservice_webhooks_container_network - - matrix_appservice_webhooks_hostname - - matrix_appservice_webhooks_path_prefix diff --git a/roles/custom/matrix-bridge-appservice-webhooks/templates/config.yaml.j2 b/roles/custom/matrix-bridge-appservice-webhooks/templates/config.yaml.j2 deleted file mode 100644 index 49751624b..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/templates/config.yaml.j2 +++ /dev/null @@ -1,28 +0,0 @@ -#jinja2: lstrip_blocks: True -# Configuration specific to the application service. All fields (unless otherwise marked) are required. -homeserver: - # The domain for the client-server API calls. - url: "{{ matrix_appservice_webhooks_homeserver_url }}" - - # The domain part for user IDs on this home server. Usually, but not always, this is the same as the - # home server's URL. - domain: "{{ matrix_domain }}" - -# Configuration specific to the bridge. All fields (unless otherwise marked) are required. -webhookBot: - # The localpart to use for the bot. May require re-registering the application service. - localpart: "_webhook" - -# Provisioning API options -provisioning: - # Your secret for the API. Required for all provisioning API requests. - secret: '{{ matrix_appservice_webhooks_api_secret }}' - -# Configuration related to the web portion of the bridge. Handles the inbound webhooks -web: - hookUrlBase: "{{ matrix_appservice_webhooks_inbound_uri_prefix }}" - -logging: - console: true - consoleLevel: {{ matrix_appservice_webhooks_log_level }} - writeFiles: false diff --git a/roles/custom/matrix-bridge-appservice-webhooks/templates/database.json.j2 b/roles/custom/matrix-bridge-appservice-webhooks/templates/database.json.j2 deleted file mode 100644 index e70f1d832..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/templates/database.json.j2 +++ /dev/null @@ -1,13 +0,0 @@ -{ - "defaultEnv": { - "ENV": "NODE_ENV" - }, - "development": { - "driver": "sqlite3", - "filename": "/data/development.db" - }, - "production": { - "driver": "sqlite3", - "filename": "/data/production.db" - } -} diff --git a/roles/custom/matrix-bridge-appservice-webhooks/templates/labels.j2 b/roles/custom/matrix-bridge-appservice-webhooks/templates/labels.j2 deleted file mode 100644 index 2749af957..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/templates/labels.j2 +++ /dev/null @@ -1,44 +0,0 @@ -{% if matrix_appservice_webhooks_container_labels_traefik_enabled %} -traefik.enable=true - -{% if matrix_appservice_webhooks_container_labels_traefik_docker_network %} -traefik.docker.network={{ matrix_appservice_webhooks_container_labels_traefik_docker_network }} -{% endif %} - -traefik.http.services.matrix-appservice-webhooks.loadbalancer.server.port={{ matrix_appservice_webhooks_matrix_port }} - -{% if matrix_appservice_webhooks_container_labels_public_endpoint_enabled %} -############################################################ -# # -# Public # -# # -############################################################ - -traefik.http.middlewares.matrix-appservice-webhooks-public-strip-prefix.stripprefix.prefixes={{ matrix_appservice_webhooks_container_labels_public_endpoint_prefix }} - -traefik.http.routers.matrix-appservice-webhooks-public.rule={{ matrix_appservice_webhooks_container_labels_public_endpoint_traefik_rule }} -traefik.http.routers.matrix-appservice-webhooks-public.middlewares=matrix-appservice-webhooks-public-strip-prefix - -{% if matrix_appservice_webhooks_container_labels_public_endpoint_traefik_priority | int > 0 %} -traefik.http.routers.matrix-appservice-webhooks-public.priority={{ matrix_appservice_webhooks_container_labels_public_endpoint_traefik_priority }} -{% endif %} - -traefik.http.routers.matrix-appservice-webhooks-public.service=matrix-appservice-webhooks -traefik.http.routers.matrix-appservice-webhooks-public.entrypoints={{ matrix_appservice_webhooks_container_labels_public_endpoint_traefik_entrypoints }} - -traefik.http.routers.matrix-appservice-webhooks-public.tls={{ matrix_appservice_webhooks_container_labels_public_endpoint_traefik_tls | to_json }} -{% if matrix_appservice_webhooks_container_labels_public_endpoint_traefik_tls %} -traefik.http.routers.matrix-appservice-webhooks-public.tls.certResolver={{ matrix_appservice_webhooks_container_labels_public_endpoint_traefik_tls_certResolver }} -{% endif %} - -############################################################ -# # -# /Public # -# # -############################################################ -{% endif %} - - -{% endif %} - -{{ matrix_appservice_webhooks_container_labels_additional_labels }} diff --git a/roles/custom/matrix-bridge-appservice-webhooks/templates/schema.yml.j2 b/roles/custom/matrix-bridge-appservice-webhooks/templates/schema.yml.j2 deleted file mode 100644 index e999555de..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/templates/schema.yml.j2 +++ /dev/null @@ -1,54 +0,0 @@ -"$schema": "http://json-schema.org/draft-04/schema#" -type: "object" -properties: - provisioning: - type: "object" - properties: - secret: - type: "string" - homeserver: - type: "object" - properties: - domain: - type: "string" - url: - type: "string" - mediaUrl: - type: "string" - web: - type: "object" - properties: - hookUrlBase: - type: "string" - webhookBot: - type: "object" - properties: - localpart: - type: "string" - appearance: - type: "object" - properties: - displayName: - type: "string" - avatarUrl: - type: "string" - logging: - type: "object" - properties: - file: - type: "string" - console: - type: "boolean" - consoleLevel: - type: "string" - fileLevel: - type: "string" - writeFiles: - type: "boolean" - rotate: - type: "object" - properties: - size: - type: "number" - count: - type: "number" diff --git a/roles/custom/matrix-bridge-appservice-webhooks/templates/systemd/matrix-appservice-webhooks.service.j2 b/roles/custom/matrix-bridge-appservice-webhooks/templates/systemd/matrix-appservice-webhooks.service.j2 deleted file mode 100644 index b1168cb7f..000000000 --- a/roles/custom/matrix-bridge-appservice-webhooks/templates/systemd/matrix-appservice-webhooks.service.j2 +++ /dev/null @@ -1,51 +0,0 @@ -#jinja2: lstrip_blocks: "True" -[Unit] -Description=Matrix Appservice webhooks bridge -{% for service in matrix_appservice_webhooks_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_appservice_webhooks_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-appservice-webhooks 2>/dev/null || true' -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-webhooks 2>/dev/null || true' - -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ - --rm \ - --name=matrix-appservice-webhooks \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --network={{ matrix_appservice_webhooks_container_network }} \ - {% if matrix_appservice_webhooks_container_http_host_bind_port %} - -p {{ matrix_appservice_webhooks_container_http_host_bind_port }}:{{matrix_appservice_webhooks_matrix_port}} \ - {% endif %} - --mount type=bind,src={{ matrix_appservice_webhooks_config_path }},dst=/config \ - --mount type=bind,src={{ matrix_appservice_webhooks_data_path }},dst=/data \ - --label-file={{ matrix_appservice_webhooks_base_path }}/labels \ - {% for arg in matrix_appservice_webhooks_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_appservice_webhooks_docker_image }} \ - node index.js -p {{ matrix_appservice_webhooks_matrix_port }} -c /config/config.yaml -f /config/webhooks-registration.yaml - -{% for network in matrix_appservice_webhooks_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-appservice-webhooks -{% endfor %} - -ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-appservice-webhooks - -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-appservice-webhooks 2>/dev/null || true' -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-appservice-webhooks 2>/dev/null || true' -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-appservice-webhooks - -[Install] -WantedBy=multi-user.target diff --git a/roles/custom/matrix-bridge-beeper-linkedin/defaults/main.yml b/roles/custom/matrix-bridge-beeper-linkedin/defaults/main.yml index fcba1e9b6..5fc9a2c40 100644 --- a/roles/custom/matrix-bridge-beeper-linkedin/defaults/main.yml +++ b/roles/custom/matrix-bridge-beeper-linkedin/defaults/main.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Alexandar Mechev +# SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Cody Wyatt Neiman +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Paul ALNET +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # beeper-linkedin is a Matrix <-> LinkedIn bridge # Project source code URL: https://github.com/beeper/linkedin @@ -8,9 +19,11 @@ matrix_beeper_linkedin_enabled: true matrix_beeper_linkedin_version: latest # See: https://github.com/beeper/linkedin/pkgs/container/linkedin -matrix_beeper_linkedin_docker_image: "{{ matrix_beeper_linkedin_docker_image_name_prefix }}beeper/linkedin:{{ matrix_beeper_linkedin_docker_image_tag }}" +matrix_beeper_linkedin_docker_image: "{{ matrix_beeper_linkedin_docker_image_registry_prefix }}beeper/linkedin:{{ matrix_beeper_linkedin_docker_image_tag }}" matrix_beeper_linkedin_docker_image_force_pull: "{{ matrix_beeper_linkedin_docker_image_tag.startswith('latest') }}" -matrix_beeper_linkedin_docker_image_name_prefix: "{{ 'localhost/' if matrix_beeper_linkedin_container_image_self_build else 'ghcr.io/' }}" +matrix_beeper_linkedin_docker_image_registry_prefix: "{{ 'localhost/' if matrix_beeper_linkedin_container_image_self_build else matrix_beeper_linkedin_docker_image_registry_prefix_upstream }}" +matrix_beeper_linkedin_docker_image_registry_prefix_upstream: "{{ matrix_beeper_linkedin_docker_image_registry_prefix_upstream_default }}" +matrix_beeper_linkedin_docker_image_registry_prefix_upstream_default: "ghcr.io/" matrix_beeper_linkedin_docker_image_tag: "{{ 'latest' if matrix_beeper_linkedin_version == 'master' else matrix_beeper_linkedin_version }}" matrix_beeper_linkedin_container_image_self_build: false @@ -24,6 +37,9 @@ matrix_beeper_linkedin_docker_src_files_path: "{{ matrix_beeper_linkedin_base_pa matrix_beeper_linkedin_homeserver_address: "" matrix_beeper_linkedin_homeserver_domain: "{{ matrix_domain }}" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_beeper_linkedin_homeserver_async_media: false matrix_beeper_linkedin_appservice_address: "http://matrix-beeper-linkedin:29319" matrix_beeper_linkedin_bridge_presence: true @@ -154,5 +170,6 @@ matrix_beeper_linkedin_registration_yaml: | - exclusive: true regex: '^@{{ matrix_beeper_linkedin_appservice_bot_username | regex_escape }}:{{ matrix_beeper_linkedin_homeserver_domain | regex_escape }}$' de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true matrix_beeper_linkedin_registration: "{{ matrix_beeper_linkedin_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-beeper-linkedin/tasks/main.yml b/roles/custom/matrix-bridge-beeper-linkedin/tasks/main.yml index 56eb91e52..34a4ea3dd 100644 --- a/roles/custom/matrix-bridge-beeper-linkedin/tasks/main.yml +++ b/roles/custom/matrix-bridge-beeper-linkedin/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 Alexandar Mechev +# 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-beeper-linkedin/tasks/setup_install.yml b/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_install.yml index 7d27b1559..5149ddf13 100644 --- a/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_install.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Alexandar Mechev +# SPDX-FileCopyrightText: 2022 Cody Wyatt 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 Beeper LinkedIn paths exists @@ -5,8 +16,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_beeper_linkedin_base_path }}", when: true} - {path: "{{ matrix_beeper_linkedin_config_path }}", when: true} @@ -19,16 +30,16 @@ content: "{{ matrix_beeper_linkedin_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_beeper_linkedin_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure beeper-linkedin registration.yaml installed ansible.builtin.copy: content: "{{ matrix_beeper_linkedin_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_beeper_linkedin_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure Beeper LinkedIn container image is pulled community.docker.docker_image: @@ -51,7 +62,7 @@ version: "{{ matrix_beeper_linkedin_container_image_self_build_branch }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_beeper_linkedin_git_pull_results # Building the container image (using the default Dockerfile) requires that a docker-requirements.txt file be generated. diff --git a/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_uninstall.yml index 4d3334692..aea2f34cf 100644 --- a/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Alexandar Mechev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-beeper-linkedin service diff --git a/roles/custom/matrix-bridge-beeper-linkedin/tasks/validate_config.yml b/roles/custom/matrix-bridge-beeper-linkedin/tasks/validate_config.yml index cbf77eb71..2d9cbb3e6 100644 --- a/roles/custom/matrix-bridge-beeper-linkedin/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-beeper-linkedin/tasks/validate_config.yml @@ -1,10 +1,17 @@ +# SPDX-FileCopyrightText: 2021 Alexandar Mechev +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required beeper-linkedin 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_beeper_linkedin_appservice_token', when: true} - {'name': 'matrix_beeper_linkedin_homeserver_address', when: true} @@ -16,7 +23,8 @@ 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_beeper_linkedin_login_shared_secret', 'new': ''} + - {'old': 'matrix_beeper_linkedin_docker_image_name_prefix', 'new': 'matrix_beeper_linkedin_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-beeper-linkedin/templates/config.yaml.j2 b/roles/custom/matrix-bridge-beeper-linkedin/templates/config.yaml.j2 index d73988cdf..2213b1fde 100644 --- a/roles/custom/matrix-bridge-beeper-linkedin/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-beeper-linkedin/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Homeserver details homeserver: # The address that this appservice can use to connect to the homeserver. @@ -21,7 +21,7 @@ homeserver: message_send_checkpoint_endpoint: null # Whether asynchronous uploads via MSC2246 should be enabled for media. # Requires a media repo that supports MSC2246. - async_media: false + async_media: {{ matrix_beeper_linkedin_homeserver_async_media | to_json }} # Application service host/registration related details # Changing these values requires regeneration of the registration. @@ -67,7 +67,7 @@ appservice: bot_username: {{ matrix_beeper_linkedin_appservice_bot_username | to_json }} # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty # to leave display name/avatar as-is. - bot_displayname: {{ matrix_beeper_linkedin_appservice_bot_displayname | to_json }} + bot_displayname: {{ matrix_beeper_linkedin_appservice_bot_displayname | to_json(ensure_ascii=False) }} bot_avatar: {{ matrix_beeper_linkedin_appservice_bot_avatar | to_json }} # Whether or not to receive ephemeral events via appservice transactions. diff --git a/roles/custom/matrix-bridge-beeper-linkedin/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-beeper-linkedin/templates/config.yaml.j2.license new file mode 100644 index 000000000..fa76a7a16 --- /dev/null +++ b/roles/custom/matrix-bridge-beeper-linkedin/templates/config.yaml.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2021 Alexandar Mechev +SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +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-bridge-beeper-linkedin/templates/systemd/matrix-beeper-linkedin.service.j2 b/roles/custom/matrix-bridge-beeper-linkedin/templates/systemd/matrix-beeper-linkedin.service.j2 index 1b1cc582b..10ca9af5f 100644 --- a/roles/custom/matrix-bridge-beeper-linkedin/templates/systemd/matrix-beeper-linkedin.service.j2 +++ b/roles/custom/matrix-bridge-beeper-linkedin/templates/systemd/matrix-beeper-linkedin.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Beeper Linkedin bridge {% for service in matrix_beeper_linkedin_systemd_required_services_list %} @@ -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-beeper-linkedin 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-beeper-linkedin 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-beeper-linkedin 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-beeper-linkedin -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-beeper-linkedin 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-beeper-linkedin 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-beeper-linkedin 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-beeper-linkedin/templates/systemd/matrix-beeper-linkedin.service.j2.license b/roles/custom/matrix-bridge-beeper-linkedin/templates/systemd/matrix-beeper-linkedin.service.j2.license new file mode 100644 index 000000000..a6a2062ab --- /dev/null +++ b/roles/custom/matrix-bridge-beeper-linkedin/templates/systemd/matrix-beeper-linkedin.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 Alexandar Mechev +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-go-skype-bridge/defaults/main.yml b/roles/custom/matrix-bridge-go-skype-bridge/defaults/main.yml deleted file mode 100644 index a8e29d547..000000000 --- a/roles/custom/matrix-bridge-go-skype-bridge/defaults/main.yml +++ /dev/null @@ -1,151 +0,0 @@ ---- -# Go Skype Bridge is a Matrix <-> Skype bridge -# Project source code URL: https://github.com/kelaresg/go-skype-bridge - -matrix_go_skype_bridge_enabled: true - -matrix_go_skype_bridge_container_image_self_build: false -matrix_go_skype_bridge_container_image_self_build_repo: "https://github.com/kelaresg/go-skype-bridge.git" -matrix_go_skype_bridge_container_image_self_build_branch: "{{ 'master' if matrix_go_skype_bridge_version == 'latest' else matrix_go_skype_bridge_version }}" - -# renovate: datasource=docker depName=nodefyme/go-skype-bridge -matrix_go_skype_bridge_version: latest -matrix_go_skype_bridge_docker_image: "{{ matrix_go_skype_bridge_docker_image_name_prefix }}nodefyme/go-skype-bridge:{{ matrix_go_skype_bridge_version }}" -matrix_go_skype_bridge_docker_image_name_prefix: "{{ 'localhost/' if matrix_go_skype_bridge_container_image_self_build else matrix_container_global_registry_prefix }}" -matrix_go_skype_bridge_docker_image_force_pull: "{{ matrix_go_skype_bridge_docker_image.endswith(':latest') }}" - -matrix_go_skype_bridge_base_path: "{{ matrix_base_data_path }}/go-skype-bridge" -matrix_go_skype_bridge_config_path: "{{ matrix_go_skype_bridge_base_path }}/config" -matrix_go_skype_bridge_data_path: "{{ matrix_go_skype_bridge_base_path }}/data" -matrix_go_skype_bridge_docker_src_files_path: "{{ matrix_go_skype_bridge_base_path }}/docker-src" - -matrix_go_skype_bridge_homeserver_address: "" -matrix_go_skype_bridge_homeserver_domain: "{{ matrix_domain }}" -matrix_go_skype_bridge_appservice_address: 'http://matrix-go-skype-bridge:8080' - -matrix_go_skype_bridge_container_network: "" - -matrix_go_skype_bridge_container_additional_networks: "{{ matrix_go_skype_bridge_container_additional_networks_auto + matrix_go_skype_bridge_container_additional_networks_custom }}" -matrix_go_skype_bridge_container_additional_networks_auto: [] -matrix_go_skype_bridge_container_additional_networks_custom: [] - -# A list of extra arguments to pass to the container -matrix_go_skype_bridge_container_extra_arguments: [] - -# List of systemd services that matrix-go-skype-bridge.service depends on. -matrix_go_skype_bridge_systemd_required_services_list: "{{ matrix_go_skype_bridge_systemd_required_services_list_default + matrix_go_skype_bridge_systemd_required_services_list_auto + matrix_go_skype_bridge_systemd_required_services_list_custom }}" -matrix_go_skype_bridge_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_go_skype_bridge_systemd_required_services_list_auto: [] -matrix_go_skype_bridge_systemd_required_services_list_custom: [] - -# List of systemd services that matrix-go-skype-bridge.service wants -matrix_go_skype_bridge_systemd_wanted_services_list: [] - -matrix_go_skype_bridge_appservice_token: '' -matrix_go_skype_bridge_homeserver_token: '' - -matrix_go_skype_bridge_appservice_bot_username: skypebridgebot - -matrix_go_skype_bridge_command_prefix: "!skype" - -# Whether or not created rooms should have federation enabled. -# If false, created portal rooms will never be federated. -matrix_go_skype_bridge_federate_rooms: true - -# Database-related configuration fields. -# -# To use SQLite, stick to these defaults. -# -# To use Postgres: -# - change the engine (`matrix_go_skype_bridge_database_engine: 'postgres'`) -# - adjust your database credentials via the `matrix_go_skype_bridge_database_*` variables -matrix_go_skype_bridge_database_engine: 'sqlite' - -matrix_go_skype_bridge_sqlite_database_path_local: "{{ matrix_go_skype_bridge_data_path }}/go-skype-bridge.db" -matrix_go_skype_bridge_sqlite_database_path_in_container: "/data/go-skype-bridge.db" - -matrix_go_skype_bridge_database_username: 'matrix_go_skype_bridge' -matrix_go_skype_bridge_database_password: 'some-password' -matrix_go_skype_bridge_database_hostname: '' -matrix_go_skype_bridge_database_port: 5432 -matrix_go_skype_bridge_database_name: 'matrix_go_skype_bridge' -matrix_go_skype_bridge_database_sslmode: disable - -matrix_go_skype_bridge_database_connection_string: 'postgresql://{{ matrix_go_skype_bridge_database_username }}:{{ matrix_go_skype_bridge_database_password }}@{{ matrix_go_skype_bridge_database_hostname }}:{{ matrix_go_skype_bridge_database_port }}/{{ matrix_go_skype_bridge_database_name }}?sslmode={{ matrix_go_skype_bridge_database_sslmode }}' - -matrix_go_skype_bridge_appservice_database_type: "{{ - { - 'sqlite': 'sqlite3', - 'postgres':'postgres', - }[matrix_go_skype_bridge_database_engine] -}}" - -matrix_go_skype_bridge_appservice_database_uri: "{{ - { - 'sqlite': matrix_go_skype_bridge_sqlite_database_path_in_container, - 'postgres': matrix_go_skype_bridge_database_connection_string, - }[matrix_go_skype_bridge_database_engine] -}}" - -# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth). -matrix_go_skype_bridge_login_shared_secret: '' -matrix_go_skype_bridge_bridge_login_shared_secret_map: - "{{ {matrix_go_skype_bridge_homeserver_domain: matrix_go_skype_bridge_login_shared_secret} if matrix_go_skype_bridge_login_shared_secret else {} }}" - -# Servers to always allow double puppeting from -matrix_go_skype_bridge_bridge_double_puppet_server_map: - "{{ matrix_go_skype_bridge_homeserver_domain : matrix_go_skype_bridge_homeserver_address }}" - -# Enable End-to-bridge encryption -matrix_go_skype_bridge_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" -matrix_go_skype_bridge_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}" - -# Minimum severity of journal log messages. -# Valid values: fatal, error, warn, info, debug -matrix_go_skype_bridge_log_level: 'warn' - -matrix_go_skype_bridge_bridge_permissions: | - {{ - {matrix_go_skype_bridge_homeserver_domain: 'user'} - | combine({matrix_admin: 'admin'} if matrix_admin else {}) - }} - -# Default go-skype-bridge configuration template which covers the generic use case. -# You can customize it by controlling the various variables inside it. -# -# For a more advanced customization, you can extend the default (see `matrix_go_skype_bridge_configuration_extension_yaml`) -# or completely replace this variable with your own template. -matrix_go_skype_bridge_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" - -matrix_go_skype_bridge_configuration_extension_yaml: | - # Your custom YAML configuration goes here. - # This configuration extends the default starting configuration (`matrix_go_skype_bridge_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_go_skype_bridge_configuration_yaml`. - -matrix_go_skype_bridge_configuration_extension: "{{ matrix_go_skype_bridge_configuration_extension_yaml | from_yaml if matrix_go_skype_bridge_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_go_skype_bridge_configuration_yaml`. -matrix_go_skype_bridge_configuration: "{{ matrix_go_skype_bridge_configuration_yaml | from_yaml | combine(matrix_go_skype_bridge_configuration_extension, recursive=True) }}" - -matrix_go_skype_bridge_registration_yaml: | - id: skype - url: {{ matrix_go_skype_bridge_appservice_address }} - as_token: "{{ matrix_go_skype_bridge_appservice_token }}" - hs_token: "{{ matrix_go_skype_bridge_homeserver_token }}" - # See https://github.com/mautrix/signal/issues/43 - sender_localpart: _bot_{{ matrix_go_skype_bridge_appservice_bot_username }} - rate_limited: false - namespaces: - users: - - regex: '^@skype-(.*):{{ matrix_go_skype_bridge_homeserver_domain | regex_escape }}$' - exclusive: true - - exclusive: true - regex: '^@{{ matrix_go_skype_bridge_appservice_bot_username | regex_escape }}:{{ matrix_go_skype_bridge_homeserver_domain | regex_escape }}$' - de.sorunome.msc2409.push_ephemeral: true - -matrix_go_skype_bridge_registration: "{{ matrix_go_skype_bridge_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-go-skype-bridge/tasks/main.yml b/roles/custom/matrix-bridge-go-skype-bridge/tasks/main.yml deleted file mode 100644 index 7ba914213..000000000 --- a/roles/custom/matrix-bridge-go-skype-bridge/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- tags: - - setup-all - - setup-go-skype-bridge - - install-all - - install-go-skype-bridge - block: - - when: matrix_go_skype_bridge_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_go_skype_bridge_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-go-skype-bridge - block: - - when: not matrix_go_skype_bridge_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" diff --git a/roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_install.yml b/roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_install.yml deleted file mode 100644 index 9d5bed211..000000000 --- a/roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_install.yml +++ /dev/null @@ -1,148 +0,0 @@ ---- - -- ansible.builtin.set_fact: - matrix_go_skype_bridge_requires_restart: false - -- when: "matrix_go_skype_bridge_database_engine == 'postgres'" - block: - - name: Check if an SQLite database already exists - ansible.builtin.stat: - path: "{{ matrix_go_skype_bridge_sqlite_database_path_local }}" - register: matrix_go_skype_bridge_sqlite_database_path_local_stat_result - - - when: "matrix_go_skype_bridge_sqlite_database_path_local_stat_result.stat.exists | bool" - block: - - ansible.builtin.include_role: - name: galaxy/postgres - tasks_from: migrate_db_to_postgres - vars: - postgres_db_migration_request: - src: "{{ matrix_go_skype_bridge_sqlite_database_path_local }}" - dst: "{{ matrix_go_skype_bridge_database_connection_string }}" - caller: "{{ role_path | basename }}" - engine_variable_name: 'matrix_go_skype_bridge_database_engine' - engine_old: 'sqlite' - systemd_services_to_stop: ['matrix-go-skype-bridge.service'] - pgloader_options: ['--with "quote identifiers"'] - - - ansible.builtin.set_fact: - matrix_go_skype_bridge_requires_restart: true - -- name: Ensure Go Skype Bridge paths exists - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_go_skype_bridge_base_path }}", when: true} - - {path: "{{ matrix_go_skype_bridge_config_path }}", when: true} - - {path: "{{ matrix_go_skype_bridge_data_path }}", when: true} - - {path: "{{ matrix_go_skype_bridge_docker_src_files_path }}", when: "{{ matrix_go_skype_bridge_container_image_self_build }}"} - when: item.when | bool - -- name: Ensure Go Skype Bridge image is pulled - community.docker.docker_image: - name: "{{ matrix_go_skype_bridge_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_go_skype_bridge_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_go_skype_bridge_docker_image_force_pull }}" - when: not matrix_go_skype_bridge_container_image_self_build - register: result - retries: "{{ devture_playbook_help_container_retries_count }}" - delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed - -- name: Ensure Go Skype Bridge repository is present on self-build - ansible.builtin.git: - repo: "{{ matrix_go_skype_bridge_container_image_self_build_repo }}" - dest: "{{ matrix_go_skype_bridge_docker_src_files_path }}" - version: "{{ matrix_go_skype_bridge_container_image_self_build_branch }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_go_skype_bridge_git_pull_results - when: "matrix_go_skype_bridge_container_image_self_build | bool" - -- name: Ensure Go Skype Bridge Docker image is built - community.docker.docker_image: - name: "{{ matrix_go_skype_bridge_docker_image }}" - source: build - force_source: "{{ matrix_go_skype_bridge_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_go_skype_bridge_git_pull_results.changed }}" - build: - dockerfile: Dockerfile - path: "{{ matrix_go_skype_bridge_docker_src_files_path }}" - pull: true - when: "matrix_go_skype_bridge_container_image_self_build | bool" - -- name: Check if an old database file exists - ansible.builtin.stat: - path: "{{ matrix_go_skype_bridge_base_path }}/go-skype-bridge.db" - register: matrix_go_skype_bridge_stat_database - -- name: Check if an old Matrix state file exists - ansible.builtin.stat: - path: "{{ matrix_go_skype_bridge_base_path }}/mx-state.json" - register: matrix_go_skype_bridge_stat_mx_state - -- name: (Data relocation) Ensure matrix-go-skype-bridge.service is stopped - ansible.builtin.service: - name: matrix-go-skype-bridge - state: stopped - enabled: false - daemon_reload: true - failed_when: false - when: "matrix_go_skype_bridge_stat_database.stat.exists" - -- name: (Data relocation) Move go-skype-bridge database file to ./data directory - ansible.builtin.command: - cmd: "mv {{ matrix_go_skype_bridge_base_path }}/go-skype-bridge.db {{ matrix_go_skype_bridge_data_path }}/go-skype-bridge.db" - creates: "{{ matrix_go_skype_bridge_data_path }}/go-skype-bridge.db" - removes: "{{ matrix_go_skype_bridge_base_path }}/go-skype-bridge.db" - when: "matrix_go_skype_bridge_stat_database.stat.exists" - -- name: (Data relocation) Move go-skype-bridge mx-state file to ./data directory - ansible.builtin.command: - cmd: "mv {{ matrix_go_skype_bridge_base_path }}/mx-state.json {{ matrix_go_skype_bridge_data_path }}/mx-state.json" - creates: "{{ matrix_go_skype_bridge_data_path }}/mx-state.json" - removes: "{{ matrix_go_skype_bridge_base_path }}/mx-state.json" - when: "matrix_go_skype_bridge_stat_mx_state.stat.exists" - -- name: Ensure go-skype-bridge config.yaml installed - ansible.builtin.copy: - content: "{{ matrix_go_skype_bridge_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_go_skype_bridge_config_path }}/config.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure go-skype-bridge registration.yaml installed - ansible.builtin.copy: - content: "{{ matrix_go_skype_bridge_registration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_go_skype_bridge_config_path }}/registration.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure matrix-go-skype-bridge container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_go_skype_bridge_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-go-skype-bridge.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-go-skype-bridge.service.j2" - dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-go-skype-bridge.service" - mode: 0644 - register: matrix_go_skype_bridge_systemd_service_result - -- name: Ensure matrix-go-skype-bridge.service restarted, if necessary - ansible.builtin.service: - name: "matrix-go-skype-bridge.service" - state: restarted - daemon_reload: true - when: "matrix_go_skype_bridge_requires_restart | bool" diff --git a/roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_uninstall.yml deleted file mode 100644 index d7b5999a1..000000000 --- a/roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_uninstall.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- name: Check existence of matrix-go-skype-bridge service - ansible.builtin.stat: - path: "/etc/systemd/system/matrix-go-skype-bridge.service" - register: matrix_go_skype_bridge_service_stat - -- when: matrix_go_skype_bridge_service_stat.stat.exists | bool - block: - - name: Ensure matrix-go-skype-bridge is stopped - ansible.builtin.service: - name: matrix-go-skype-bridge - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-go-skype-bridge.service doesn't exist - ansible.builtin.file: - path: "/etc/systemd/system/matrix-go-skype-bridge.service" - state: absent diff --git a/roles/custom/matrix-bridge-go-skype-bridge/tasks/validate_config.yml b/roles/custom/matrix-bridge-go-skype-bridge/tasks/validate_config.yml deleted file mode 100644 index 9afe48f6e..000000000 --- a/roles/custom/matrix-bridge-go-skype-bridge/tasks/validate_config.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- - -- name: Fail if required go-skype-bridge 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_go_skype_bridge_appservice_token', when: true} - - {'name': 'matrix_go_skype_bridge_homeserver_address', when: true} - - {'name': 'matrix_go_skype_bridge_homeserver_token', when: true} - - {'name': 'matrix_go_skype_bridge_database_hostname', when: "{{ matrix_go_skype_bridge_database_engine == 'postgres' }}"} - - {'name': 'matrix_go_skype_bridge_container_network', when: true} diff --git a/roles/custom/matrix-bridge-go-skype-bridge/templates/config.yaml.j2 b/roles/custom/matrix-bridge-go-skype-bridge/templates/config.yaml.j2 deleted file mode 100644 index 6e5ac7f52..000000000 --- a/roles/custom/matrix-bridge-go-skype-bridge/templates/config.yaml.j2 +++ /dev/null @@ -1,237 +0,0 @@ -#jinja2: lstrip_blocks: "True" -# Homeserver details. -homeserver: - # The address that this appservice can use to connect to the homeserver. - address: {{ matrix_go_skype_bridge_homeserver_address }} - # The domain of the homeserver (for MXIDs, etc). - domain: {{ matrix_go_skype_bridge_homeserver_domain }} - # If you don’t know what this is, no need to modify(for parse "mention user/reply message, etc") - server_name: matrix.to - -# Application service host/registration related details. -# Changing these values requires regeneration of the registration. -appservice: - # The address that the homeserver can use to connect to this appservice. - address: {{ matrix_go_skype_bridge_appservice_address }} - - # The hostname and port where this appservice should listen. - hostname: 0.0.0.0 - port: 8080 - - # Database config. - database: - # The database type. "sqlite3" and "postgres" are supported. - type: {{ matrix_go_skype_bridge_appservice_database_type|to_json }} - # The database URI. - # SQLite: File name is enough. https://github.com/mattn/go-sqlite3#connection-string - # Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable - uri: {{ matrix_go_skype_bridge_appservice_database_uri|to_json }} - # Maximum number of connections. Mostly relevant for Postgres. - max_open_conns: 20 - max_idle_conns: 2 - - # Settings for provisioning API - provisioning: - # Prefix for the provisioning API paths. - prefix: /_matrix/provision/v1 - # Shared secret for authentication. If set to "disable", the provisioning API will be disabled. - shared_secret: disable - - # The unique ID of this appservice. - id: skype - # Appservice bot details. - bot: - # Username of the appservice bot. - username: skypebridgebot - # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty - # to leave display name/avatar as-is. - displayname: Skype bridge bot - avatar: mxc://matrix.org/kGQUDQyPiwbRXPFkjoBrPyhC - - # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. - as_token: "{{ matrix_go_skype_bridge_appservice_token }}" - hs_token: "{{ matrix_go_skype_bridge_homeserver_token }}" - -# Bridge config -bridge: - # Localpart template of MXIDs for Skype users. - # {{ '{{.}}' }} is replaced with the phone number of the Skype user. - username_template: {{ 'skype-{{.}}' }} - # Displayname template for Skype users. - # {{ '{{.Notify}}' }} - nickname set by the Skype user - # {{ '{{.Jid}}' }} - phone number (international format) - # The following variables are also available, but will cause problems on multi-user instances: - # {{ '{{.Name}}' }} - display name from contact list - # {{ '{{.Short}}' }} - short display name from contact list - # To use multiple if's, you need to use: {{ '{{else if .Name}}' }}, for example: - # "{{ '{{if .Notify}}' }}{{ '{{.Notify}}' }}{{ '{{else if .Name}}' }}{{ '{{.Name}}' }}{{ '{{else}}' }}{{ '{{.Jid}}' }}{{ '{{end}}' }} (WA)" - displayname_template: "{{ '{{if .DisplayName}}' }}{{ '{{.DisplayName}}' }}{{ '{{else}}' }}{{ '{{.PersonId}}' }}{{ '{{end}}' }} (Skype)" - # Localpart template for per-user room grouping community IDs. - # On startup, the bridge will try to create these communities, add all of the specific user's - # portals to the community, and invite the Matrix user to it. - # (Note that, by default, non-admins might not have your homeserver's permission to create - # communities.) - # {{ '{{.Localpart}}' }} is the MXID localpart and {{ '{{.Server}}' }} is the MXID server part of the user. - community_template: skype-{{ '{{.Localpart}}' }}={{ '{{.Server}}' }} - - # Skype connection timeout in seconds. - connection_timeout: 20 - # If Skype doesn't respond within connection_timeout, should the bridge try to fetch the message - # to see if it was actually bridged? Use this if you have problems with sends timing out but actually - # succeeding. - fetch_message_on_timeout: false - # Whether or not the bridge should send a read receipt from the bridge bot when a message has been - # sent to Skype. If fetch_message_on_timeout is enabled, a successful post-timeout fetch will - # trigger a read receipt too. - delivery_receipts: false - # Number of times to regenerate QR code when logging in. - # The regenerated QR code is sent as an edit and essentially multiplies the login timeout (20 seconds) - login_qr_regen_count: 2 - # Maximum number of times to retry connecting on connection error. - max_connection_attempts: 3 - # Number of seconds to wait between connection attempts. - # Negative numbers are exponential backoff: -connection_retry_delay + 1 + 2^attempts - connection_retry_delay: -1 - # Whether or not the bridge should send a notice to the user's management room when it retries connecting. - # If false, it will only report when it stops retrying. - report_connection_retry: true - # Maximum number of seconds to wait for chats to be sent at startup. - # If this is too low and you have lots of chats, it could cause backfilling to fail. - chat_list_wait: 30 - # Maximum number of seconds to wait to sync portals before force unlocking message processing. - # If this is too low and you have lots of chats, it could cause backfilling to fail. - portal_sync_wait: 600 - - # Whether or not to send call start/end notices to Matrix. - call_notices: - start: true - end: true - - # Number of chats to sync for new users. - # Since some of the obtained conversations are not the conversations that the user needs to see, - # the actual number of conversations displayed on the Matrix client will be slightly less than the set value - initial_chat_sync_count: 10 - # Number of old messages to fill when creating new portal rooms. - initial_history_fill_count: 20 - # Whether or not notifications should be turned off while filling initial history. - # Only applicable when using double puppeting. - initial_history_disable_notifications: false - # Maximum number of chats to sync when recovering from downtime. - # Set to -1 to sync all new chats during downtime. - recovery_chat_sync_limit: -1 - # Whether or not to sync history when recovering from downtime. - recovery_history_backfill: true - # Maximum number of seconds since last message in chat to skip - # syncing the chat in any case. This setting will take priority - # over both recovery_chat_sync_limit and initial_chat_sync_count. - # Default is 3 days = 259200 seconds - sync_max_chat_age: 259200 - - # sync contact, Non-martix-standard parameter, defaults to false - sync_contact: false - - # Whether or not to sync with custom puppets to receive EDUs that - # are not normally sent to appservices. - sync_with_custom_puppets: true - - # Servers to always allow double puppeting from - double_puppet_server_map: - "{{ matrix_go_skype_bridge_homeserver_domain }}": {{ matrix_go_skype_bridge_homeserver_address }} - # Allow using double puppeting from any server with a valid client .well-known file. - double_puppet_allow_discovery: false - # Shared secret for https://github.com/devture/matrix-synapse-shared-secret-auth - # - # If set, custom puppets will be enabled automatically for local users - # instead of users having to find an access token and run `login-matrix` - # manually. - login_shared_secret_map: {{ matrix_go_skype_bridge_bridge_login_shared_secret_map|to_json }} - - # Whether or not to invite own Skype user's Matrix puppet into private - # chat portals when backfilling if needed. - # This always uses the default puppet instead of custom puppets due to - # rate limits and timestamp massaging. - invite_own_puppet_for_backfilling: true - # Whether or not to explicitly set the avatar and room name for private - # chat portal rooms. This can be useful if the previous field works fine, - # but causes room avatar/name bugs. - private_chat_portal_meta: true - - # Whether or not thumbnails from Skype should be sent. - # They're disabled by default due to very low resolution. - Skype_thumbnail: false - - # Allow invite permission for user. User can invite any bots to room with Skype - # users (private chat and groups) - allow_user_invite: false - - # The prefix for commands. Only required in non-management rooms. - command_prefix: "{{ matrix_go_skype_bridge_command_prefix }}" - - # End-to-bridge encryption support options. This requires login_shared_secret to be configured - # in order to get a device for the bridge bot. - # - # Additionally, https://github.com/matrix-org/synapse/pull/5758 is required if using a normal - # application service. - encryption: - # Allow encryption, work in group chat rooms with e2ee enabled - allow: {{ matrix_go_skype_bridge_bridge_encryption_allow|to_json }} - # Default to encryption, force-enable encryption in all portals the bridge creates - # This will cause the bridge bot to be in private chats for the encryption to work properly. - # It is recommended to also set private_chat_portal_meta to true when using this. - default: {{ matrix_go_skype_bridge_bridge_encryption_default|to_json }} - - puppet_id: - # when set to true, the matrixid of the contact (puppet) from the bridge to the Matrix will be encrypted into another string - allow: false - # 8 characters - key: '12dsf323' - # Use the username_template prefix. (Warning: At present, username_template cannot be too complicated, otherwise this function may cause unknown errors) - username_template_prefix: 'skype-' - - # Permissions for using the bridge. - # Permitted values: - # relaybot - Talk through the relaybot (if enabled), no access otherwise - # user - Access to use the bridge to chat with a Skype account. - # admin - User level and some additional administration tools - # Permitted keys: - # * - All Matrix users - # domain - All users on that homeserver - # mxid - Specific user - permissions: {{ matrix_go_skype_bridge_bridge_permissions|to_json }} - - relaybot: - # Whether or not relaybot support is enabled. - enabled: false - # The management room for the bot. This is where all status notifications are posted and - # in this room, you can use `!wa ` instead of `!wa relaybot `. Omitting - # the command prefix completely like in user management rooms is not possible. - management: '!qporfwt:example.com' - # List of users to invite to all created rooms that include the relaybot. - invites: [] - # The formats to use when sending messages to Skype via the relaybot. - message_formats: - m.text: "{{ '{{ .Sender.Displayname }}' }}: {{ '{{ .Message }}' }}" - m.notice: "{{ '{{ .Sender.Displayname }}' }}:: {{ '{{ .Message }}' }}" - m.emote: "* {{ '{{ .Sender.Displayname }}' }}: {{ '{{ .Message }}' }}" - m.file: "{{ '{{ .Sender.Displayname }}' }}: sent a file" - m.image: "{{ '{{ .Sender.Displayname }}' }}: sent an image" - m.audio: "{{ '{{ .Sender.Displayname }}' }}: sent an audio file" - m.video: "{{ '{{ .Sender.Displayname }}' }}: sent a video" - m.location: "{{ '{{ .Sender.Displayname }}' }}: sent a location" - -# Logging config. -logging: - # The directory for log files. Will be created if not found. - directory: ./logs - # Available variables: .Date for the file date and .Index for different log files on the same day. - # empy/null = journal logging only - file_name_format: - # Date format for file names in the Go time format: https://golang.org/pkg/time/#pkg-constants - file_date_format: "2006-01-02" - # Log file permissions. - file_mode: 0600 - # Timestamp format for log entries in the Go time format. - timestamp_format: "Jan _2, 2006 15:04:05" - # Minimum severity for log messages. - # Options: debug, info, warn, error, fatal - print_level: {{ matrix_go_skype_bridge_log_level }} diff --git a/roles/custom/matrix-bridge-go-skype-bridge/templates/systemd/matrix-go-skype-bridge.service.j2 b/roles/custom/matrix-bridge-go-skype-bridge/templates/systemd/matrix-go-skype-bridge.service.j2 deleted file mode 100644 index 825d4eb34..000000000 --- a/roles/custom/matrix-bridge-go-skype-bridge/templates/systemd/matrix-go-skype-bridge.service.j2 +++ /dev/null @@ -1,48 +0,0 @@ -#jinja2: lstrip_blocks: "True" -[Unit] -Description=Matrix Go Skype Bridge bridge -{% for service in matrix_go_skype_bridge_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_go_skype_bridge_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-go-skype-bridge 2>/dev/null || true' -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-go-skype-bridge 2>/dev/null || true' - -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ - --rm \ - --name=matrix-go-skype-bridge \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --network={{ matrix_go_skype_bridge_container_network }} \ - --mount type=bind,src={{ matrix_go_skype_bridge_config_path }},dst=/config \ - --mount type=bind,src={{ matrix_go_skype_bridge_data_path }},dst=/data \ - --workdir=/data \ - {% for arg in matrix_go_skype_bridge_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_go_skype_bridge_docker_image }} \ - /usr/bin/matrix-skype -c /config/config.yaml -r /config/registration.yaml - -{% for network in matrix_go_skype_bridge_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-go-skype-bridge -{% endfor %} - -ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-go-skype-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-go-skype-bridge 2>/dev/null || true' -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-go-skype-bridge 2>/dev/null || true' -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-go-skype-bridge - -[Install] -WantedBy=multi-user.target diff --git a/roles/custom/matrix-bridge-heisenbridge/defaults/main.yml b/roles/custom/matrix-bridge-heisenbridge/defaults/main.yml index ee1cea6b4..b1248df8f 100644 --- a/roles/custom/matrix-bridge-heisenbridge/defaults/main.yml +++ b/roles/custom/matrix-bridge-heisenbridge/defaults/main.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Toni Spets +# SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# 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 + --- # Heisenbridge is a bouncer-style Matrix IRC bridge # Project source code URL: https://github.com/hifi/heisenbridge @@ -9,8 +19,11 @@ matrix_heisenbridge_hostname: "{{ matrix_server_fqn_matrix }}" matrix_heisenbridge_path_prefix: "/heisenbridge" # renovate: datasource=docker depName=hif1/heisenbridge -matrix_heisenbridge_version: 1.15.0 -matrix_heisenbridge_docker_image: "{{ matrix_container_global_registry_prefix }}hif1/heisenbridge:{{ matrix_heisenbridge_version }}" +matrix_heisenbridge_version: 1.15.4 +matrix_heisenbridge_docker_image: "{{ matrix_heisenbridge_docker_image_registry_prefix }}hif1/heisenbridge:{{ matrix_heisenbridge_version }}" +matrix_heisenbridge_docker_image_registry_prefix: "{{ matrix_heisenbridge_docker_image_registry_prefix_upstream }}" +matrix_heisenbridge_docker_image_registry_prefix_upstream: "{{ matrix_heisenbridge_docker_image_registry_prefix_upstream_default }}" +matrix_heisenbridge_docker_image_registry_prefix_upstream_default: "docker.io/" matrix_heisenbridge_docker_image_force_pull: "{{ matrix_heisenbridge_docker_image.endswith(':latest') }}" # Set this to your Matrix ID if you want to enforce the owner, otherwise first _local_ user becomes one diff --git a/roles/custom/matrix-bridge-heisenbridge/tasks/main.yml b/roles/custom/matrix-bridge-heisenbridge/tasks/main.yml index b281d00bf..7de077071 100644 --- a/roles/custom/matrix-bridge-heisenbridge/tasks/main.yml +++ b/roles/custom/matrix-bridge-heisenbridge/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 Toni Spets +# 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-heisenbridge/tasks/setup_install.yml b/roles/custom/matrix-bridge-heisenbridge/tasks/setup_install.yml index 9ea3500ff..cbc99b51e 100644 --- a/roles/custom/matrix-bridge-heisenbridge/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-heisenbridge/tasks/setup_install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2021 Toni Spets +# 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 Heisenbridge image is pulled @@ -16,8 +26,8 @@ path: "{{ item }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - "{{ matrix_heisenbridge_base_path }}" @@ -26,16 +36,16 @@ content: "{{ matrix_heisenbridge_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_heisenbridge_base_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure Heisenbridge support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_heisenbridge_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels diff --git a/roles/custom/matrix-bridge-heisenbridge/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-heisenbridge/tasks/setup_uninstall.yml index 090427ca3..ba42105de 100644 --- a/roles/custom/matrix-bridge-heisenbridge/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-heisenbridge/tasks/setup_uninstall.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Michael Sasser +# SPDX-FileCopyrightText: 2021 Toni Spets +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-heisenbridge service diff --git a/roles/custom/matrix-bridge-heisenbridge/tasks/validate_config.yml b/roles/custom/matrix-bridge-heisenbridge/tasks/validate_config.yml index 604df5a56..43f900514 100644 --- a/roles/custom/matrix-bridge-heisenbridge/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-heisenbridge/tasks/validate_config.yml @@ -1,10 +1,15 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required Heisenbridge 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_heisenbridge_container_network', when: true} - {'name': 'matrix_heisenbridge_homeserver_url', when: true} diff --git a/roles/custom/matrix-bridge-heisenbridge/templates/labels.j2 b/roles/custom/matrix-bridge-heisenbridge/templates/labels.j2 index ee54ac8e1..fa2cb1ee1 100644 --- a/roles/custom/matrix-bridge-heisenbridge/templates/labels.j2 +++ b/roles/custom/matrix-bridge-heisenbridge/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_heisenbridge_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-heisenbridge/templates/systemd/matrix-heisenbridge.service.j2 b/roles/custom/matrix-bridge-heisenbridge/templates/systemd/matrix-heisenbridge.service.j2 index e0981b2a7..7810444f4 100644 --- a/roles/custom/matrix-bridge-heisenbridge/templates/systemd/matrix-heisenbridge.service.j2 +++ b/roles/custom/matrix-bridge-heisenbridge/templates/systemd/matrix-heisenbridge.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=a bouncer-style Matrix IRC bridge {% for service in matrix_heisenbridge_systemd_required_services_list %} @@ -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_docker }} stop --time={{ matrix_heisenbridge_container_stop_grace_time_seconds }} matrix-heisenbridge +ExecStartPre=-{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ matrix_heisenbridge_container_stop_grace_time_seconds }} matrix-heisenbridge ExecStartPre=-{{ devture_systemd_docker_base_host_command_docker }} rm matrix-heisenbridge ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -50,7 +50,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network conne ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-heisenbridge -ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ matrix_heisenbridge_container_stop_grace_time_seconds }} matrix-heisenbridge +ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ matrix_heisenbridge_container_stop_grace_time_seconds }} matrix-heisenbridge ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} rm matrix-heisenbridge Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-heisenbridge/templates/systemd/matrix-heisenbridge.service.j2.license b/roles/custom/matrix-bridge-heisenbridge/templates/systemd/matrix-heisenbridge.service.j2.license new file mode 100644 index 000000000..8d056c7ba --- /dev/null +++ b/roles/custom/matrix-bridge-heisenbridge/templates/systemd/matrix-heisenbridge.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 Toni Spets +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-hookshot/defaults/main.yml b/roles/custom/matrix-bridge-hookshot/defaults/main.yml index f4538e143..fe2e298ad 100644 --- a/roles/custom/matrix-bridge-hookshot/defaults/main.yml +++ b/roles/custom/matrix-bridge-hookshot/defaults/main.yml @@ -1,3 +1,15 @@ +# SPDX-FileCopyrightText: 2022 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Arthur Brugière +# SPDX-FileCopyrightText: 2022 Kim Brose +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 Kris Watson +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # A bridge between Matrix and multiple project management services, such as GitHub, GitLab and JIRA. @@ -17,10 +29,12 @@ matrix_hookshot_container_additional_networks_auto: [] matrix_hookshot_container_additional_networks_custom: [] # renovate: datasource=docker depName=halfshot/matrix-hookshot -matrix_hookshot_version: 6.0.2 +matrix_hookshot_version: 7.2.0 -matrix_hookshot_docker_image: "{{ matrix_hookshot_docker_image_name_prefix }}matrix-org/matrix-hookshot:{{ matrix_hookshot_version }}" -matrix_hookshot_docker_image_name_prefix: "{{ 'localhost/' if matrix_hookshot_container_image_self_build else 'ghcr.io/' }}" +matrix_hookshot_docker_image: "{{ matrix_hookshot_docker_image_registry_prefix }}matrix-org/matrix-hookshot:{{ matrix_hookshot_version }}" +matrix_hookshot_docker_image_registry_prefix: "{{ 'localhost/' if matrix_hookshot_container_image_self_build else matrix_hookshot_docker_image_registry_prefix_upstream }}" +matrix_hookshot_docker_image_registry_prefix_upstream: "{{ matrix_hookshot_docker_image_registry_prefix_upstream_default }}" +matrix_hookshot_docker_image_registry_prefix_upstream_default: "ghcr.io/" matrix_hookshot_docker_image_force_pull: "{{ matrix_hookshot_docker_image.endswith(':latest') }}" matrix_hookshot_base_path: "{{ matrix_base_data_path }}/hookshot" @@ -58,9 +72,10 @@ matrix_hookshot_cache_redisUri: "{{ ('redis://' + matrix_hookshot_cache_redis_ho # Controls whether the end-to-bridge encryption support is enabled. # This requires that: # - support to also be enabled in the homeserver, see the documentation of Hookshot. -# - Hookshot to be pointed at a Redis instance via the `matrix_hookshot_cache_redis*` variables. +# - Hookshot to be pointed at a Redis instance via the `matrix_hookshot_cache_redis*` variables. Note that this is configured automatically by the playbook when encryption is enabled. # See: https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html -matrix_hookshot_encryption_enabled: false +# NOTE: Encryption is not currently (2025-12-30) supported when using MAS (https://github.com/matrix-org/matrix-hookshot/issues/1084) +matrix_hookshot_encryption_enabled: "{{ matrix_bridges_encryption_enabled }}" # Controls whether metrics are enabled in the bridge configuration. # Enabling them is usually enough for a local (in-container) Prometheus to consume them. @@ -167,22 +182,15 @@ matrix_hookshot_generic_urlPrefix: "{{ matrix_hookshot_urlprefix }}{{ matrix_hoo matrix_hookshot_generic_userIdPrefix: '_webhooks_' # noqa var-naming matrix_hookshot_generic_allowJsTransformationFunctions: false # noqa var-naming matrix_hookshot_generic_waitForComplete: false # noqa var-naming +matrix_hookshot_generic_sendExpiryNotice: false # noqa var-naming +matrix_hookshot_generic_requireExpiryTime: false # noqa var-naming +matrix_hookshot_generic_maxExpiryTime: "30d" # noqa var-naming matrix_hookshot_feeds_enabled: true matrix_hookshot_feeds_pollIntervalSeconds: 600 # noqa var-naming matrix_hookshot_feeds_pollTimeoutSeconds: 30 # noqa var-naming - -matrix_hookshot_provisioning_enabled: false -# There is no need to edit ports. use matrix_hookshot_container_http_host_bind_ports below to expose ports instead. -matrix_hookshot_provisioning_port: 9002 -matrix_hookshot_provisioning_secret: '' -# Provisioning will be automatically enabled if Dimension is enabled and you have provided a provisioning secret, unless you override it -matrix_hookshot_provisioning_internal: "/v1" -matrix_hookshot_provisioning_hostname: "{{ matrix_hookshot_public_hostname }}" -matrix_hookshot_provisioning_endpoint: "{{ matrix_hookshot_public_endpoint }}{{ matrix_hookshot_provisioning_internal }}" - # Valid values: error, warn, info, debug matrix_hookshot_logging_level: warn @@ -275,15 +283,7 @@ matrix_hookshot_container_labels_widgets_traefik_entrypoints: "{{ matrix_hooksho matrix_hookshot_container_labels_widgets_traefik_tls: "{{ matrix_hookshot_container_labels_widgets_traefik_entrypoints != 'web' }}" matrix_hookshot_container_labels_widgets_traefik_tls_certResolver: "{{ matrix_hookshot_container_labels_traefik_tls_certResolver }}" # noqa var-naming -# Controls whether labels will be added that expose Hookshot's provisioning endpoint -matrix_hookshot_container_labels_provisioning_enabled: "{{ matrix_hookshot_provisioning_enabled }}" -matrix_hookshot_container_labels_provisioning_traefik_rule: "Host(`{{ matrix_hookshot_provisioning_hostname }}`) && PathPrefix(`{{ matrix_hookshot_provisioning_endpoint }}`)" -matrix_hookshot_container_labels_provisioning_traefik_priority: 0 -matrix_hookshot_container_labels_provisioning_traefik_entrypoints: "{{ matrix_hookshot_container_labels_traefik_entrypoints }}" -matrix_hookshot_container_labels_provisioning_traefik_tls: "{{ matrix_hookshot_container_labels_provisioning_traefik_entrypoints != 'web' }}" -matrix_hookshot_container_labels_provisioning_traefik_tls_certResolver: "{{ matrix_hookshot_container_labels_traefik_tls_certResolver }}" # noqa var-naming - -# Controls whether labels will be added that expose Hookshot's provisioning endpoint +# Controls whether labels will be added that expose Hookshot's metrics endpoint matrix_hookshot_container_labels_metrics_enabled: "{{ matrix_hookshot_metrics_enabled and matrix_hookshot_metrics_proxying_enabled }}" matrix_hookshot_container_labels_metrics_traefik_rule: "Host(`{{ matrix_hookshot_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_hookshot_metrics_proxying_path_prefix }}`)" matrix_hookshot_container_labels_metrics_traefik_priority: 0 diff --git a/roles/custom/matrix-bridge-hookshot/tasks/main.yml b/roles/custom/matrix-bridge-hookshot/tasks/main.yml index 89f110dd4..afe5da088 100644 --- a/roles/custom/matrix-bridge-hookshot/tasks/main.yml +++ b/roles/custom/matrix-bridge-hookshot/tasks/main.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 + --- - tags: diff --git a/roles/custom/matrix-bridge-hookshot/tasks/reset_encryption.yml b/roles/custom/matrix-bridge-hookshot/tasks/reset_encryption.yml index 2ae5e7f8f..26c0e3eba 100644 --- a/roles/custom/matrix-bridge-hookshot/tasks/reset_encryption.yml +++ b/roles/custom/matrix-bridge-hookshot/tasks/reset_encryption.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Ensure matrix-hookshot is stopped diff --git a/roles/custom/matrix-bridge-hookshot/tasks/setup_install.yml b/roles/custom/matrix-bridge-hookshot/tasks/setup_install.yml index f76ae653c..68e5ef920 100644 --- a/roles/custom/matrix-bridge-hookshot/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-hookshot/tasks/setup_install.yml @@ -1,3 +1,15 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Arthur Brugière +# 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: 2023 Luke Moch +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.include_role: @@ -9,8 +21,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_hookshot_base_path }}", when: true} - {path: "{{ matrix_hookshot_docker_src_files_path }}", when: "{{ matrix_hookshot_container_image_self_build }}"} @@ -35,7 +47,7 @@ version: "{{ matrix_hookshot_container_image_self_build_branch }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_hookshot_git_pull_results when: "matrix_hookshot_container_image_self_build | bool" @@ -61,7 +73,7 @@ cmd: "{{ matrix_host_command_openssl }} genpkey -out {{ matrix_hookshot_base_path }}/passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:4096" creates: "{{ matrix_hookshot_base_path }}/passkey.pem" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" when: "not hookshot_passkey_file.stat.exists" - name: Ensure hookshot config.yml installed if provided @@ -69,8 +81,8 @@ content: "{{ matrix_hookshot_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_hookshot_base_path }}/config.yml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Validate hookshot config.yml ansible.builtin.command: @@ -95,16 +107,16 @@ content: "{{ matrix_hookshot_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_hookshot_base_path }}/registration.yml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure hookshot github private key file installed if github is enabled ansible.builtin.copy: content: "{{ matrix_hookshot_github_private_key }}" dest: "{{ matrix_hookshot_base_path }}/{{ matrix_hookshot_github_private_key_file }}" mode: 0400 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" when: matrix_hookshot_github_enabled | bool and matrix_hookshot_github_private_key|length > 0 - name: Ensure matrix-hookshot container network is created @@ -119,8 +131,8 @@ src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_hookshot_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels diff --git a/roles/custom/matrix-bridge-hookshot/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-hookshot/tasks/setup_uninstall.yml index b4c72d38a..253bba45a 100644 --- a/roles/custom/matrix-bridge-hookshot/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-hookshot/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-hookshot service diff --git a/roles/custom/matrix-bridge-hookshot/tasks/validate_config.yml b/roles/custom/matrix-bridge-hookshot/tasks/validate_config.yml index de961c186..6a09e3834 100644 --- a/roles/custom/matrix-bridge-hookshot/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-hookshot/tasks/validate_config.yml @@ -1,11 +1,17 @@ +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: (Deprecation) Catch and report renamed Hookshot 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_hookshot_feeds_interval', 'new': 'matrix_hookshot_feeds_pollIntervalSeconds'} - {'old': 'matrix_hookshot_generic_urlprefix', 'new': 'matrix_hookshot_generic_urlPrefix'} @@ -32,12 +38,20 @@ - {'old': 'matrix_hookshot_queue_host', 'new': 'matrix_hookshot_cache_redis_host'} - {'old': 'matrix_hookshot_queue_port', 'new': 'matrix_hookshot_cache_redis_port'} - {'old': 'matrix_hookshot_experimental_encryption_enabled', 'new': 'matrix_hookshot_encryption_enabled'} + - {'old': 'matrix_hookshot_docker_image_name_prefix', 'new': 'matrix_hookshot_docker_image_registry_prefix'} + - {'old': 'matrix_hookshot_provisioning_enabled', 'new': ''} + - {'old': 'matrix_hookshot_provisioning_port', 'new': ''} + - {'old': 'matrix_hookshot_provisioning_secret', 'new': ''} + - {'old': 'matrix_hookshot_provisioning_internal', 'new': ''} + - {'old': 'matrix_hookshot_provisioning_hostname', 'new': ''} + - {'old': 'matrix_hookshot_provisioning_endpoint', 'new': ''} + - {'old': 'matrix_hookshot_container_labels_provisioning_enabled', 'new': ''} - name: Fail if required Hookshot settings not defined ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`). - when: "vars[item] == ''" + when: "lookup('vars', item, default='') == ''" with_items: - "matrix_hookshot_appservice_token" - "matrix_hookshot_homeserver_address" @@ -48,7 +62,7 @@ ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`) to enable GitHub. - when: "matrix_hookshot_github_enabled and vars[item] == ''" + when: "matrix_hookshot_github_enabled and lookup('vars', item, default='') == ''" with_items: - "matrix_hookshot_github_auth_id" - "matrix_hookshot_github_webhook_secret" @@ -57,7 +71,7 @@ ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`) to enable GitHub OAuth. - when: "matrix_hookshot_github_oauth_enabled and vars[item] == ''" + when: "matrix_hookshot_github_oauth_enabled and lookup('vars', item, default='') == ''" with_items: - "matrix_hookshot_github_oauth_client_id" - "matrix_hookshot_github_oauth_client_secret" @@ -66,7 +80,7 @@ ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`) to enable Jira. - when: "matrix_hookshot_jira_enabled and vars[item] == ''" + when: "matrix_hookshot_jira_enabled and lookup('vars', item, default='') == ''" with_items: - "matrix_hookshot_jira_webhook_secret" @@ -74,7 +88,7 @@ ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`) to enable Jira OAuth. - when: "matrix_hookshot_jira_oauth_enabled and vars[item] == ''" + when: "matrix_hookshot_jira_oauth_enabled and lookup('vars', item, default='') == ''" with_items: - "matrix_hookshot_jira_oauth_client_id" - "matrix_hookshot_jira_oauth_client_secret" @@ -85,14 +99,6 @@ You need to define at least one Figma instance in `matrix_hookshot_figma_instances` to enable Figma. when: "matrix_hookshot_figma_enabled and matrix_hookshot_figma_instances | length == 0" -- name: Fail if required provisioning settings not defined - ansible.builtin.fail: - msg: >- - You need to define a required configuration setting (`{{ item }}`) to enable provisioning. - when: "matrix_hookshot_provisioning_enabled and vars[item] == ''" - with_items: - - "matrix_hookshot_provisioning_secret" - - name: Fail if no Redis queue enabled when Hookshot encryption is enabled ansible.builtin.fail: msg: >- @@ -110,4 +116,4 @@ with_items: - matrix_hookshot_proxy_metrics - matrix_hookshot_metrics_endpoint - when: "item in vars" + when: "lookup('ansible.builtin.varnames', ('^' + item + '$'), wantlist=True) | length > 0" diff --git a/roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2 b/roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2 index c476f6b4b..0e993f9d0 100644 --- a/roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True bridge: # Basic homeserver configuration # @@ -80,6 +80,9 @@ generic: userIdPrefix: {{ matrix_hookshot_generic_userIdPrefix | to_json }} allowJsTransformationFunctions: {{ matrix_hookshot_generic_allowJsTransformationFunctions | to_json }} waitForComplete: {{ matrix_hookshot_generic_waitForComplete | to_json }} + sendExpiryNotice: {{ matrix_hookshot_generic_sendExpiryNotice | to_json }} + requireExpiryTime: {{ matrix_hookshot_generic_requireExpiryTime | to_json }} + maxExpiryTime: {{ matrix_hookshot_generic_maxExpiryTime | to_json }} {% endif %} {% if matrix_hookshot_feeds_enabled %} feeds: @@ -89,12 +92,6 @@ feeds: pollIntervalSeconds: {{ matrix_hookshot_feeds_pollIntervalSeconds | to_json }} pollTimeoutSeconds: {{ matrix_hookshot_feeds_pollTimeoutSeconds | to_json }} {% endif %} -{% if matrix_hookshot_provisioning_enabled %} -provisioning: - # (Optional) Provisioning API for integration managers - # - secret: {{ matrix_hookshot_provisioning_secret | to_json }} -{% endif %} passFile: # A passkey used to encrypt tokens stored inside the bridge. # Run openssl genpkey -out passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:4096 to generate @@ -103,7 +100,7 @@ passFile: bot: # (Optional) Define profile information for the bot user # - displayname: {{ matrix_hookshot_bot_displayname | to_json }} + displayname: {{ matrix_hookshot_bot_displayname | to_json(ensure_ascii=False) }} avatar: {{ matrix_hookshot_bot_avatar | to_json }} metrics: # (Optional) Prometheus metrics support @@ -143,7 +140,7 @@ permissions: {{ matrix_hookshot_permissions | to_json }} listeners: # (Optional) HTTP Listener configuration. # Bind resource endpoints to ports and addresses. - # 'resources' may be any of webhooks, widgets, metrics, provisioning, appservice + # 'resources' may be any of webhooks, widgets, metrics # {# always enabled since all services need it #} - port: {{ matrix_hookshot_webhook_port }} @@ -156,12 +153,6 @@ listeners: resources: - metrics {% endif %} -{% if matrix_hookshot_provisioning_enabled %} - - port: {{ matrix_hookshot_provisioning_port }} - bindAddress: 0.0.0.0 - resources: - - provisioning -{% endif %} {% if matrix_hookshot_widgets_enabled %} - port: {{ matrix_hookshot_widgets_port }} bindAddress: 0.0.0.0 diff --git a/roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2.license new file mode 100644 index 000000000..e7fcfb5ab --- /dev/null +++ b/roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2022 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2022 - 2024 Nikita Chernyi +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-hookshot/templates/labels.j2 b/roles/custom/matrix-bridge-hookshot/templates/labels.j2 index 31c035300..68dfaa906 100644 --- a/roles/custom/matrix-bridge-hookshot/templates/labels.j2 +++ b/roles/custom/matrix-bridge-hookshot/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_hookshot_container_labels_traefik_enabled %} traefik.enable=true @@ -8,7 +14,6 @@ traefik.docker.network={{ matrix_hookshot_container_labels_traefik_docker_networ traefik.http.services.matrix-hookshot-webhooks.loadbalancer.server.port={{ matrix_hookshot_webhook_port }} traefik.http.services.matrix-hookshot-appservice.loadbalancer.server.port={{ matrix_hookshot_appservice_port }} traefik.http.services.matrix-hookshot-widgets.loadbalancer.server.port={{ matrix_hookshot_widgets_port }} -traefik.http.services.matrix-hookshot-provisioning.loadbalancer.server.port={{ matrix_hookshot_provisioning_port }} traefik.http.services.matrix-hookshot-metrics.loadbalancer.server.port={{ matrix_hookshot_metrics_port }} {% if matrix_hookshot_container_labels_webhooks_enabled %} @@ -112,37 +117,6 @@ traefik.http.routers.matrix-hookshot-widgets.tls.certResolver={{ matrix_hookshot ############################################################ {% endif %} -{% if matrix_hookshot_container_labels_provisioning_enabled %} -############################################################ -# # -# Provisioning # -# # -############################################################ - -traefik.http.middlewares.matrix-hookshot-provisioning-strip-prefix.stripprefix.prefixes={{ matrix_hookshot_provisioning_endpoint }} - -traefik.http.routers.matrix-hookshot-provisioning.rule={{ matrix_hookshot_container_labels_provisioning_traefik_rule }} -traefik.http.routers.matrix-hookshot-provisioning.middlewares=matrix-hookshot-provisioning-strip-prefix - -{% if matrix_hookshot_container_labels_provisioning_traefik_priority | int > 0 %} -traefik.http.routers.matrix-hookshot-provisioning.priority={{ matrix_hookshot_container_labels_provisioning_traefik_priority }} -{% endif %} - -traefik.http.routers.matrix-hookshot-provisioning.service=matrix-hookshot-provisioning -traefik.http.routers.matrix-hookshot-provisioning.entrypoints={{ matrix_hookshot_container_labels_provisioning_traefik_entrypoints }} - -traefik.http.routers.matrix-hookshot-provisioning.tls={{ matrix_hookshot_container_labels_provisioning_traefik_tls | to_json }} -{% if matrix_hookshot_container_labels_provisioning_traefik_tls %} -traefik.http.routers.matrix-hookshot-provisioning.tls.certResolver={{ matrix_hookshot_container_labels_provisioning_traefik_tls_certResolver }} -{% endif %} - -############################################################ -# # -# /Provisioning # -# # -############################################################ -{% endif %} - {% if matrix_hookshot_container_labels_metrics_enabled %} ############################################################ diff --git a/roles/custom/matrix-bridge-hookshot/templates/registration.yml.j2 b/roles/custom/matrix-bridge-hookshot/templates/registration.yml.j2 index 2e617df76..92eda8e4d 100644 --- a/roles/custom/matrix-bridge-hookshot/templates/registration.yml.j2 +++ b/roles/custom/matrix-bridge-hookshot/templates/registration.yml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True id: matrix-hookshot # This can be anything, but must be unique within your homeserver as_token: {{ matrix_hookshot_appservice_token|to_json }} # This again can be a random string hs_token: {{ matrix_hookshot_homeserver_token|to_json }} # ..as can this @@ -32,5 +32,6 @@ rate_limited: false {% if matrix_hookshot_encryption_enabled %} de.sorunome.msc2409.push_ephemeral: true push_ephemeral: true +receive_ephemeral: true org.matrix.msc3202: true {% endif %} diff --git a/roles/custom/matrix-bridge-hookshot/templates/registration.yml.j2.license b/roles/custom/matrix-bridge-hookshot/templates/registration.yml.j2.license new file mode 100644 index 000000000..00feb2e4f --- /dev/null +++ b/roles/custom/matrix-bridge-hookshot/templates/registration.yml.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2022 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Nikita Chernyi +SPDX-FileCopyrightText: 2024 Kim Brose + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-hookshot/templates/systemd/matrix-hookshot.service.j2 b/roles/custom/matrix-bridge-hookshot/templates/systemd/matrix-hookshot.service.j2 index aca952f1e..5b698e2e1 100644 --- a/roles/custom/matrix-bridge-hookshot/templates/systemd/matrix-hookshot.service.j2 +++ b/roles/custom/matrix-bridge-hookshot/templates/systemd/matrix-hookshot.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=A bridge between Matrix and multiple project management services, such as GitHub, GitLab and JIRA. {% for service in matrix_hookshot_systemd_required_services_list %} @@ -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_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_hookshot_identifier }} +ExecStartPre=-{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_hookshot_identifier }} ExecStartPre=-{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_hookshot_identifier }} ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create --rm --name {{ matrix_hookshot_identifier }} \ --log-driver=none \ @@ -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_hookshot_identifier }} -ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_hookshot_identifier }} +ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_hookshot_identifier }} ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_hookshot_identifier }} Restart=always diff --git a/roles/custom/matrix-bridge-hookshot/templates/systemd/matrix-hookshot.service.j2.license b/roles/custom/matrix-bridge-hookshot/templates/systemd/matrix-hookshot.service.j2.license new file mode 100644 index 000000000..c751d3d6f --- /dev/null +++ b/roles/custom/matrix-bridge-hookshot/templates/systemd/matrix-hookshot.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-bridge-mautrix-bluesky/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-bluesky/defaults/main.yml new file mode 100644 index 000000000..d1b63aeb6 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/defaults/main.yml @@ -0,0 +1,211 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- +# mautrix-bluesky is a Matrix <-> Bluesky bridge +# Project source code URL: https://github.com/mautrix/bluesky + +matrix_mautrix_bluesky_enabled: true + +matrix_mautrix_bluesky_container_image_self_build: false +matrix_mautrix_bluesky_container_image_self_build_repo: "https://github.com/mautrix/bluesky.git" +matrix_mautrix_bluesky_container_image_self_build_repo_version: "{{ 'master' if matrix_mautrix_bluesky_version == 'latest' else matrix_mautrix_bluesky_version }}" + +# renovate: datasource=docker depName=dock.mau.dev/mautrix/bluesky +matrix_mautrix_bluesky_version: v0.2510.0 +# See: https://mau.dev/tulir/mautrix-bluesky/container_registry +matrix_mautrix_bluesky_docker_image: "{{ matrix_mautrix_bluesky_docker_image_registry_prefix }}mautrix/bluesky:{{ matrix_mautrix_bluesky_version }}" +matrix_mautrix_bluesky_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_bluesky_container_image_self_build else matrix_mautrix_bluesky_docker_image_registry_prefix_upstream }}" +matrix_mautrix_bluesky_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_bluesky_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_bluesky_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" +matrix_mautrix_bluesky_docker_image_force_pull: "{{ matrix_mautrix_bluesky_docker_image.endswith(':latest') }}" + +matrix_mautrix_bluesky_base_path: "{{ matrix_base_data_path }}/mautrix-bluesky" +matrix_mautrix_bluesky_config_path: "{{ matrix_mautrix_bluesky_base_path }}/config" +matrix_mautrix_bluesky_data_path: "{{ matrix_mautrix_bluesky_base_path }}/data" +matrix_mautrix_bluesky_docker_src_files_path: "{{ matrix_mautrix_bluesky_base_path }}/docker-src" + +matrix_mautrix_bluesky_homeserver_address: "" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_bluesky_homeserver_async_media: false +matrix_mautrix_bluesky_homeserver_domain: '{{ matrix_domain }}' +matrix_mautrix_bluesky_appservice_address: 'http://matrix-mautrix-bluesky:29340' + +matrix_mautrix_bluesky_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" +matrix_mautrix_bluesky_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" + +# A public address that external services can use to reach this appservice. +matrix_mautrix_bluesky_appservice_public_address: '' + +# Displayname template for Bluesky users. +# {{ .DisplayName }} is replaced with the display name of the Bluesky user. +# {{ .Username }} is replaced with the username of the Bluesky user. +matrix_mautrix_bluesky_network_displayname_template: "{% raw %}{{ .DisplayName }}{% endraw %} (Bluesky)" + +matrix_mautrix_bluesky_bridge_command_prefix: "!bs" + +matrix_mautrix_bluesky_bridge_permissions: | + {{ + {matrix_mautrix_bluesky_homeserver_domain: 'user'} + | combine({matrix_admin: 'admin'} if matrix_admin else {}) + }} + +matrix_mautrix_bluesky_container_network: "" + +matrix_mautrix_bluesky_container_additional_networks: "{{ matrix_mautrix_bluesky_container_additional_networks_auto + matrix_mautrix_bluesky_container_additional_networks_custom }}" +matrix_mautrix_bluesky_container_additional_networks_auto: [] +matrix_mautrix_bluesky_container_additional_networks_custom: [] + +# matrix_mautrix_bluesky_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_mautrix_bluesky_container_labels_additional_labels`. +matrix_mautrix_bluesky_container_labels_traefik_enabled: true +matrix_mautrix_bluesky_container_labels_traefik_docker_network: "{{ matrix_mautrix_bluesky_container_network }}" +matrix_mautrix_bluesky_container_labels_traefik_entrypoints: web-secure +matrix_mautrix_bluesky_container_labels_traefik_tls_certResolver: default # noqa var-naming + +# Controls whether labels will be added that expose mautrix-instagram's metrics +matrix_mautrix_bluesky_container_labels_metrics_enabled: "{{ matrix_mautrix_bluesky_metrics_enabled and matrix_mautrix_bluesky_metrics_proxying_enabled }}" +matrix_mautrix_bluesky_container_labels_metrics_traefik_rule: "Host(`{{ matrix_mautrix_bluesky_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_mautrix_bluesky_metrics_proxying_path_prefix }}`)" +matrix_mautrix_bluesky_container_labels_metrics_traefik_priority: 0 +matrix_mautrix_bluesky_container_labels_metrics_traefik_entrypoints: "{{ matrix_mautrix_bluesky_container_labels_traefik_entrypoints }}" +matrix_mautrix_bluesky_container_labels_metrics_traefik_tls: "{{ matrix_mautrix_bluesky_container_labels_metrics_traefik_entrypoints != 'web' }}" +matrix_mautrix_bluesky_container_labels_metrics_traefik_tls_certResolver: "{{ matrix_mautrix_bluesky_container_labels_traefik_tls_certResolver }}" # noqa var-naming +matrix_mautrix_bluesky_container_labels_metrics_middleware_basic_auth_enabled: false +# See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users +matrix_mautrix_bluesky_container_labels_metrics_middleware_basic_auth_users: '' + +# matrix_mautrix_bluesky_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_mautrix_bluesky_container_labels_additional_labels: | +# my.label=1 +# another.label="here" +matrix_mautrix_bluesky_container_labels_additional_labels: '' + +# A list of extra arguments to pass to the container +matrix_mautrix_bluesky_container_extra_arguments: [] + +# List of systemd services that matrix-mautrix-bluesky.service depends on. +matrix_mautrix_bluesky_systemd_required_services_list: "{{ matrix_mautrix_bluesky_systemd_required_services_list_default + matrix_mautrix_bluesky_systemd_required_services_list_auto + matrix_mautrix_bluesky_systemd_required_services_list_custom }}" +matrix_mautrix_bluesky_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" +matrix_mautrix_bluesky_systemd_required_services_list_auto: [] +matrix_mautrix_bluesky_systemd_required_services_list_custom: [] + +# List of systemd services that matrix-mautrix-bluesky.service wants +matrix_mautrix_bluesky_systemd_wanted_services_list: [] + +matrix_mautrix_bluesky_appservice_token: '' +matrix_mautrix_bluesky_homeserver_token: '' + +# Whether or not created rooms should have federation enabled. +# If false, created portal rooms will never be federated. +matrix_mautrix_bluesky_matrix_federate_rooms: true + +# Database-related configuration fields. +# +# To use Postgres: +# - adjust your database credentials via the `matrix_mautrix_bluesky_postgres_*` variables +matrix_mautrix_bluesky_database_engine: 'postgres' + +matrix_mautrix_bluesky_database_username: 'matrix_mautrix_bluesky' +matrix_mautrix_bluesky_database_password: 'some-password' +matrix_mautrix_bluesky_database_hostname: '' +matrix_mautrix_bluesky_database_port: 5432 +matrix_mautrix_bluesky_database_name: 'matrix_mautrix_bluesky' +matrix_mautrix_bluesky_database_sslmode: disable + +matrix_mautrix_bluesky_database_connection_string: 'postgres://{{ matrix_mautrix_bluesky_database_username }}:{{ matrix_mautrix_bluesky_database_password }}@{{ matrix_mautrix_bluesky_database_hostname }}:{{ matrix_mautrix_bluesky_database_port }}/{{ matrix_mautrix_bluesky_database_name }}?sslmode={{ matrix_mautrix_bluesky_database_sslmode }}' + +matrix_mautrix_bluesky_database_uri: "{{ + { + 'postgres': matrix_mautrix_bluesky_database_connection_string, + }[matrix_mautrix_bluesky_database_engine] +}}" + +matrix_mautrix_bluesky_double_puppet_secrets: "{{ matrix_mautrix_bluesky_double_puppet_secrets_auto | combine(matrix_mautrix_bluesky_double_puppet_secrets_custom) }}" +matrix_mautrix_bluesky_double_puppet_secrets_auto: {} +matrix_mautrix_bluesky_double_puppet_secrets_custom: {} + +matrix_mautrix_bluesky_appservice_bot_username: blueskybot +matrix_mautrix_bluesky_appservice_bot_displayname: Bluesky bridge bot +matrix_mautrix_bluesky_appservice_bot_avatar: mxc://maunium.net/ezAjjDxhiJWGEohmhkpfeHYf + +matrix_mautrix_bluesky_backfill_enabled: true +# Maximum number of messages to backfill in empty rooms +matrix_mautrix_bluesky_backfill_max_initial_messages: 50 + +# Maximum number of missed messages to backfill after bridge restarts +matrix_mautrix_bluesky_backfill_max_catchup_messages: 500 + +# Shared secret for authentication of provisioning API requests. +# If set to "disable", the provisioning API will be disabled. +matrix_mautrix_bluesky_provisioning_shared_secret: disable + +# Minimum severity of journal log messages. +# Valid values: fatal, error, warn, info, debug, trace +matrix_mautrix_bluesky_logging_level: 'warn' + +# Whether or not metrics endpoint should be enabled. +# Enabling them is usually enough for a local (in-container) Prometheus to consume them. +# If metrics need to be consumed by another (external) Prometheus server, consider exposing them via `matrix_mautrix_bluesky_metrics_proxying_enabled`. +matrix_mautrix_bluesky_metrics_enabled: false + +# Controls whether metrics should be exposed on a public URL. +matrix_mautrix_bluesky_metrics_proxying_enabled: false +matrix_mautrix_bluesky_metrics_proxying_hostname: '' +matrix_mautrix_bluesky_metrics_proxying_path_prefix: '' + +# Default configuration template which covers the generic use case. +# You can customize it by controlling the various variables inside it. +# +# For a more advanced customization, you can extend the default (see `matrix_mautrix_bluesky_configuration_extension_yaml`) +# or completely replace this variable with your own template. +matrix_mautrix_bluesky_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" + +matrix_mautrix_bluesky_configuration_extension_yaml: | + # Your custom YAML configuration goes here. + # This configuration extends the default starting configuration (`matrix_mautrix_bluesky_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_mautrix_bluesky_configuration_yaml`. + +matrix_mautrix_bluesky_configuration_extension: "{{ matrix_mautrix_bluesky_configuration_extension_yaml | from_yaml if matrix_mautrix_bluesky_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_bluesky_configuration_yaml`. +matrix_mautrix_bluesky_configuration: "{{ matrix_mautrix_bluesky_configuration_yaml | from_yaml | combine(matrix_mautrix_bluesky_configuration_extension, recursive=True) }}" + +matrix_mautrix_bluesky_registration_yaml: | + id: bluesky + as_token: "{{ matrix_mautrix_bluesky_appservice_token }}" + hs_token: "{{ matrix_mautrix_bluesky_homeserver_token }}" + namespaces: + users: + - exclusive: true + regex: '^@bluesky_.+:{{ matrix_mautrix_bluesky_homeserver_domain | regex_escape }}$' + - exclusive: true + regex: '^@{{ matrix_mautrix_bluesky_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_bluesky_homeserver_domain | regex_escape }}$' + url: {{ matrix_mautrix_bluesky_appservice_address }} + sender_localpart: _bot_{{ matrix_mautrix_bluesky_appservice_bot_username }} + rate_limited: false + de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_bluesky_msc4190_enabled | to_json }} + +matrix_mautrix_bluesky_registration: "{{ matrix_mautrix_bluesky_registration_yaml | from_yaml }}" + +# Enable End-to-bridge encryption +matrix_mautrix_bluesky_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" +matrix_mautrix_bluesky_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}" +matrix_mautrix_bluesky_bridge_encryption_require: false +matrix_mautrix_bluesky_bridge_encryption_appservice: false +matrix_mautrix_bluesky_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_bluesky_bridge_encryption_allow }}" +matrix_mautrix_bluesky_bridge_encryption_pickle_key: mautrix.bridge.e2ee diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/main.yml new file mode 100644 index 000000000..0071485aa --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/main.yml @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- tags: + - setup-all + - setup-mautrix-bluesky + - install-all + - install-mautrix-bluesky + block: + - when: matrix_mautrix_bluesky_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" + + - when: matrix_mautrix_bluesky_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" + +- tags: + - setup-all + - setup-mautrix-bluesky + block: + - when: not matrix_mautrix_bluesky_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_install.yml new file mode 100644 index 000000000..ed2f7e6b9 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_install.yml @@ -0,0 +1,102 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- ansible.builtin.set_fact: + matrix_mautrix_bluesky_requires_restart: false + +- name: Ensure Mautrix Bluesky image is pulled + community.docker.docker_image: + name: "{{ matrix_mautrix_bluesky_docker_image }}" + source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" + force_source: "{{ matrix_mautrix_bluesky_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_mautrix_bluesky_docker_image_force_pull }}" + when: matrix_mautrix_bluesky_enabled | bool and not matrix_mautrix_bluesky_container_image_self_build + register: result + retries: "{{ devture_playbook_help_container_retries_count }}" + delay: "{{ devture_playbook_help_container_retries_delay }}" + until: result is not failed + +- name: Ensure Mautrix Bluesky paths exist + ansible.builtin.file: + path: "{{ item.path }}" + state: directory + mode: 0750 + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + with_items: + - {path: "{{ matrix_mautrix_bluesky_base_path }}", when: true} + - {path: "{{ matrix_mautrix_bluesky_config_path }}", when: true} + - {path: "{{ matrix_mautrix_bluesky_data_path }}", when: true} + - {path: "{{ matrix_mautrix_bluesky_docker_src_files_path }}", when: "{{ matrix_mautrix_bluesky_container_image_self_build }}"} + when: item.when | bool + +- name: Ensure Mautrix Bluesky repository is present on self-build + ansible.builtin.git: + repo: "{{ matrix_mautrix_bluesky_container_image_self_build_repo }}" + version: "{{ matrix_mautrix_bluesky_container_image_self_build_repo_version }}" + dest: "{{ matrix_mautrix_bluesky_docker_src_files_path }}" + force: "yes" + become: true + become_user: "{{ matrix_user_name }}" + register: matrix_mautrix_bluesky_git_pull_results + when: "matrix_mautrix_bluesky_enabled | bool and matrix_mautrix_bluesky_container_image_self_build" + +- name: Ensure Mautrix Bluesky Docker image is built + community.docker.docker_image: + name: "{{ matrix_mautrix_bluesky_docker_image }}" + source: build + force_source: "{{ matrix_mautrix_bluesky_git_pull_results.changed }}" + build: + dockerfile: Dockerfile + path: "{{ matrix_mautrix_bluesky_docker_src_files_path }}" + pull: true + when: "matrix_mautrix_bluesky_enabled | bool and matrix_mautrix_bluesky_container_image_self_build | bool" + +- name: Ensure mautrix-bluesky config.yaml installed + ansible.builtin.copy: + content: "{{ matrix_mautrix_bluesky_configuration | to_nice_yaml(indent=2, width=999999) }}" + dest: "{{ matrix_mautrix_bluesky_config_path }}/config.yaml" + mode: 0644 + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + +- name: Ensure mautrix-bluesky registration.yaml installed + ansible.builtin.copy: + content: "{{ matrix_mautrix_bluesky_registration | to_nice_yaml(indent=2, width=999999) }}" + dest: "{{ matrix_mautrix_bluesky_config_path }}/registration.yaml" + mode: 0644 + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + +- name: Ensure mautrix-bluesky support files installed + ansible.builtin.template: + src: "{{ role_path }}/templates/{{ item }}.j2" + dest: "{{ matrix_mautrix_bluesky_base_path }}/{{ item }}" + mode: 0640 + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + with_items: + - labels + +- name: Ensure matrix-mautrix-bluesky container network is created + community.general.docker_network: + enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" + name: "{{ matrix_mautrix_bluesky_container_network }}" + driver: bridge + driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" + +- name: Ensure matrix-mautrix-bluesky.service installed + ansible.builtin.template: + src: "{{ role_path }}/templates/systemd/matrix-mautrix-bluesky.service.j2" + dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-bluesky.service" + mode: 0644 + +- name: Ensure matrix-mautrix-bluesky.service restarted, if necessary + ansible.builtin.service: + name: "matrix-mautrix-bluesky.service" + state: restarted + daemon_reload: true + when: "matrix_mautrix_bluesky_requires_restart | bool" diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_uninstall.yml new file mode 100644 index 000000000..e38cd26c9 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_uninstall.yml @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Check existence of matrix-mautrix-bluesky service + ansible.builtin.stat: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-bluesky.service" + register: matrix_mautrix_bluesky_service_stat + +- when: matrix_mautrix_bluesky_service_stat.stat.exists | bool + block: + - name: Ensure matrix-mautrix-bluesky is stopped + ansible.builtin.service: + name: matrix-mautrix-bluesky + state: stopped + daemon_reload: true + + - name: Ensure matrix-mautrix-bluesky.service doesn't exist + ansible.builtin.file: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-bluesky.service" + state: absent diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/validate_config.yml new file mode 100644 index 000000000..cc73aedd6 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/validate_config.yml @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# SPDX-FileCopyrightText: 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Fail if required mautrix-bluesky settings not defined + ansible.builtin.fail: + msg: >- + You need to define a required configuration setting (`{{ item.name }}`). + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" + with_items: + - {'name': 'matrix_mautrix_bluesky_appservice_token', when: true} + - {'name': 'matrix_mautrix_bluesky_homeserver_address', when: true} + - {'name': 'matrix_mautrix_bluesky_homeserver_token', when: true} + - {'name': 'matrix_mautrix_bluesky_database_hostname', when: "{{ matrix_mautrix_bluesky_database_engine == 'postgres' }}"} + - {'name': 'matrix_mautrix_bluesky_container_network', when: true} + - {'name': 'matrix_mautrix_bluesky_metrics_proxying_hostname', when: "{{ matrix_mautrix_bluesky_metrics_proxying_enabled }}"} + - {'name': 'matrix_mautrix_bluesky_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_bluesky_metrics_proxying_enabled }}"} + +- name: (Deprecation) Catch and report renamed mautrix-bluesky variables + ansible.builtin.fail: + msg: >- + Your configuration contains a variable, which now has a different name. + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_mautrix_bluesky_docker_image_name_prefix', 'new': 'matrix_mautrix_bluesky_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/templates/config.yaml.j2 b/roles/custom/matrix-bridge-mautrix-bluesky/templates/config.yaml.j2 new file mode 100644 index 000000000..7fbac01d8 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/templates/config.yaml.j2 @@ -0,0 +1,432 @@ +#jinja2: lstrip_blocks: True +# Network-specific config options +network: + # Proxy to use for all Bluesky connections. + proxy: null + # Alternative to proxy: an HTTP endpoint that returns the proxy URL to use for Bluesky connections. + get_proxy_url: null + + # Displayname template for Bluesky users. + # {% raw %} + # {{ .DisplayName }} is replaced with the display name of the Bluesky user. + # {{ .Username }} is replaced with the username of the Bluesky user. + # {% endraw %} + displayname_template: {{ matrix_mautrix_bluesky_network_displayname_template | to_json }} + + # Maximum number of conversations to sync on startup + conversation_sync_limit: 20 + + +# Config options that affect the central bridge module. +bridge: + # The prefix for commands. Only required in non-management rooms. + command_prefix: {{ matrix_mautrix_bluesky_bridge_command_prefix | to_json }} + # Should the bridge create a space for each login containing the rooms that account is in? + personal_filtering_spaces: true + # Whether the bridge should set names and avatars explicitly for DM portals. + # This is only necessary when using clients that don't support MSC4171. + private_chat_portal_meta: true + # Should events be handled asynchronously within portal rooms? + # If true, events may end up being out of order, but slow events won't block other ones. + # This is not yet safe to use. + async_events: false + # Should every user have their own portals rather than sharing them? + # By default, users who are in the same group on the remote network will be + # in the same Matrix room bridged to that group. If this is set to true, + # every user will get their own Matrix room instead. + split_portals: false + # Should the bridge resend `m.bridge` events to all portals on startup? + resend_bridge_info: false + + # Should leaving Matrix rooms be bridged as leaving groups on the remote network? + bridge_matrix_leave: false + # Should room tags only be synced when creating the portal? Tags mean things like favorite/pin and archive/low priority. + # Tags currently can't be synced back to the remote network, so a continuous sync means tagging from Matrix will be undone. + tag_only_on_create: true + # List of tags to allow bridging. If empty, no tags will be bridged. + only_bridge_tags: [m.favourite, m.lowpriority] + # Should room mute status only be synced when creating the portal? + # Like tags, mutes can't currently be synced back to the remote network. + mute_only_on_create: true + + # What should be done to portal rooms when a user logs out or is logged out? + # Permitted values: + # nothing - Do nothing, let the user stay in the portals + # kick - Remove the user from the portal rooms, but don't delete them + # unbridge - Remove all ghosts in the room and disassociate it from the remote chat + # delete - Remove all ghosts and users from the room (i.e. delete it) + cleanup_on_logout: + # Should cleanup on logout be enabled at all? + enabled: false + # Settings for manual logouts (explicitly initiated by the Matrix user) + manual: + # Action for private portals which will never be shared with other Matrix users. + private: nothing + # Action for portals with a relay user configured. + relayed: nothing + # Action for portals which may be shared, but don't currently have any other Matrix users. + shared_no_users: nothing + # Action for portals which have other logged-in Matrix users. + shared_has_users: nothing + # Settings for credentials being invalidated (initiated by the remote network, possibly through user action). + # Keys have the same meanings as in the manual section. + bad_credentials: + private: nothing + relayed: nothing + shared_no_users: nothing + shared_has_users: nothing + + # Settings for relay mode + relay: + # Whether relay mode should be allowed. If allowed, the set-relay command can be used to turn any + # authenticated user into a relaybot for that chat. + enabled: false + # Should only admins be allowed to set themselves as relay users? + # If true, non-admins can only set users listed in default_relays as relays in a room. + admin_only: true + # List of user login IDs which anyone can set as a relay, as long as the relay user is in the room. + default_relays: [] + # The formats to use when sending messages via the relaybot. + # Available variables: + # .Sender.UserID - The Matrix user ID of the sender. + # .Sender.Displayname - The display name of the sender (if set). + # .Sender.RequiresDisambiguation - Whether the sender's name may be confused with the name of another user in the room. + # .Sender.DisambiguatedName - The disambiguated name of the sender. This will be the displayname if set, + # plus the user ID in parentheses if the displayname is not unique. + # If the displayname is not set, this is just the user ID. + # .Message - The `formatted_body` field of the message. + # .Caption - The `formatted_body` field of the message, if it's a caption. Otherwise an empty string. + # .FileName - The name of the file being sent. + message_formats: + m.text: "{% raw %}{{ .Sender.DisambiguatedName }}: {{ .Message }}{% endraw %}" + m.notice: "{% raw %}{{ .Sender.DisambiguatedName }}: {{ .Message }}{% endraw %}" + m.emote: "{% raw %}* {{ .Sender.DisambiguatedName }} {{ .Message }}{% endraw %}" + m.file: "{% raw %}{{ .Sender.DisambiguatedName }} sent a file{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + m.image: "{% raw %}{{ .Sender.DisambiguatedName }} sent an image{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + m.audio: "{% raw %}{{ .Sender.DisambiguatedName }} sent an audio file{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + m.video: "{% raw %}{{ .Sender.DisambiguatedName }} sent a video{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + m.location: "{% raw %}{{ .Sender.DisambiguatedName }} sent a location{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + # For networks that support per-message displaynames (i.e. Slack and Discord), the template for those names. + # This has all the Sender variables available under message_formats (but without the .Sender prefix). + # Note that you need to manually remove the displayname from message_formats above. + displayname_format: "{% raw %}{{ .DisambiguatedName }}{% endraw %}" + + # Permissions for using the bridge. + # Permitted values: + # relay - Talk through the relaybot (if enabled), no access otherwise + # commands - Access to use commands in the bridge, but not login. + # user - Access to use the bridge with puppeting. + # admin - Full access, user level with some additional administration tools. + # Permitted keys: + # * - All Matrix users + # domain - All users on that homeserver + # mxid - Specific user + permissions: {{ matrix_mautrix_bluesky_bridge_permissions | to_json }} + +# Config for the bridge's database. +database: + # The database type. "sqlite3-fk-wal" and "postgres" are supported. + type: postgres + # The database URI. + # SQLite: A raw file path is supported, but `file:?_txlock=immediate` is recommended. + # https://github.com/mattn/go-sqlite3#connection-string + # Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable + # To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql + uri: {{ matrix_mautrix_bluesky_database_uri | to_json }} + # Maximum number of connections. + max_open_conns: 5 + max_idle_conns: 1 + # Maximum connection idle time and lifetime before they're closed. Disabled if null. + # Parsed with https://pkg.go.dev/time#ParseDuration + max_conn_idle_time: null + max_conn_lifetime: null + +# Homeserver details. +homeserver: + # The address that this appservice can use to connect to the homeserver. + # Local addresses without HTTPS are generally recommended when the bridge is running on the same machine, + # but https also works if they run on different machines. + address: {{ matrix_mautrix_bluesky_homeserver_address | to_json }} + # The domain of the homeserver (also known as server_name, used for MXIDs, etc). + domain: {{ matrix_mautrix_bluesky_homeserver_domain | to_json }} + + # What software is the homeserver running? + # Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here. + software: standard + # The URL to push real-time bridge status to. + # If set, the bridge will make POST requests to this URL whenever a user's remote network connection state changes. + # The bridge will use the appservice as_token to authorize requests. + status_endpoint: + # Endpoint for reporting per-message status. + # If set, the bridge will make POST requests to this URL when processing a message from Matrix. + # It will make one request when receiving the message (step BRIDGE), one after decrypting if applicable + # (step DECRYPTED) and one after sending to the remote network (step REMOTE). Errors will also be reported. + # The bridge will use the appservice as_token to authorize requests. + message_send_checkpoint_endpoint: + # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? + async_media: {{ matrix_mautrix_bluesky_homeserver_async_media | to_json }} + + # Should the bridge use a websocket for connecting to the homeserver? + # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, + # mautrix-asmux (deprecated), and hungryserv (proprietary). + websocket: false + # How often should the websocket be pinged? Pinging will be disabled if this is zero. + ping_interval_seconds: 0 + +# Application service host/registration related details. +# Changing these values requires regeneration of the registration (except when noted otherwise) +appservice: + # The address that the homeserver can use to connect to this appservice. + # Like the homeserver address, a local non-https address is recommended when the bridge is on the same machine. + # If the bridge is elsewhere, you must secure the connection yourself (e.g. with https or wireguard) + # If you want to use https, you need to use a reverse proxy. The bridge does not have TLS support built in. + address: {{ matrix_mautrix_bluesky_appservice_address | to_json }} + # A public address that external services can use to reach this appservice. + # This is only needed for things like public media. A reverse proxy is generally necessary when using this field. + # This value doesn't affect the registration file. + public_address: {{ matrix_mautrix_bluesky_appservice_public_address | to_json }} + + # The hostname and port where this appservice should listen. + # For Docker, you generally have to change the hostname to 0.0.0.0. + hostname: 0.0.0.0 + port: 29340 + + # The unique ID of this appservice. + id: bluesky + # Appservice bot details. + bot: + # Username of the appservice bot. + username: {{ matrix_mautrix_bluesky_appservice_bot_username | to_json }} + # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty + # to leave display name/avatar as-is. + displayname: {{ matrix_mautrix_bluesky_appservice_bot_displayname | to_json(ensure_ascii=False) }} + avatar: {{ matrix_mautrix_bluesky_appservice_bot_avatar | to_json }} + + # Whether to receive ephemeral events via appservice transactions. + ephemeral_events: true + # Should incoming events be handled asynchronously? + # This may be necessary for large public instances with lots of messages going through. + # However, messages will not be guaranteed to be bridged in the same order they were sent in. + # This value doesn't affect the registration file. + async_transactions: false + + # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. + as_token: {{ matrix_mautrix_bluesky_appservice_token | to_json }} + hs_token: {{ matrix_mautrix_bluesky_homeserver_token | to_json }} + + # Localpart template of MXIDs for remote users. + # {% raw %}{{.}}{% endraw %} is replaced with the internal ID of the user. + username_template: "{% raw %}bluesky_{{.}}{% endraw %}" + +# Config options that affect the Matrix connector of the bridge. +matrix: + # Whether the bridge should send the message status as a custom com.beeper.message_send_status event. + message_status_events: false + # Whether the bridge should send a read receipt after successfully bridging a message. + delivery_receipts: false + # Whether the bridge should send error notices via m.notice events when a message fails to bridge. + message_error_notices: true + # Whether the bridge should update the m.direct account data event when double puppeting is enabled. + sync_direct_chat_list: true + # Whether created rooms should have federation enabled. If false, created portal rooms + # will never be federated. Changing this option requires recreating rooms. + federate_rooms: {{ matrix_mautrix_bluesky_matrix_federate_rooms | to_json }} + # The threshold as bytes after which the bridge should roundtrip uploads via the disk + # rather than keeping the whole file in memory. + upload_file_threshold: 5242880 + +# Segment-compatible analytics endpoint for tracking some events, like provisioning API login and encryption errors. +analytics: + # API key to send with tracking requests. Tracking is disabled if this is null. + token: null + # Address to send tracking requests to. + url: https://api.segment.io/v1/track + # Optional user ID for tracking events. If null, defaults to using Matrix user ID. + user_id: null + +# Settings for provisioning API +provisioning: + # Prefix for the provisioning API paths. + prefix: /_matrix/provision + # Shared secret for authentication. If set to "generate" or null, a random secret will be generated, + # or if set to "disable", the provisioning API will be disabled. + shared_secret: {{ matrix_mautrix_bluesky_provisioning_shared_secret | to_json }} + # Whether to allow provisioning API requests to be authed using Matrix access tokens. + # This follows the same rules as double puppeting to determine which server to contact to check the token, + # which means that by default, it only works for users on the same server as the bridge. + allow_matrix_auth: true + # Enable debug API at /debug with provisioning authentication. + debug_endpoints: false + +# Some networks require publicly accessible media download links (e.g. for user avatars when using Discord webhooks). +# These settings control whether the bridge will provide such public media access. +public_media: + # Should public media be enabled at all? + # The public_address field under the appservice section MUST be set when enabling public media. + enabled: false + # A key for signing public media URLs. + # If set to "generate", a random key will be generated. + signing_key: "" + # Number of seconds that public media URLs are valid for. + # If set to 0, URLs will never expire. + expiry: 0 + # Length of hash to use for public media URLs. Must be between 0 and 32. + hash_length: 32 + +# Settings for converting remote media to custom mxc:// URIs instead of reuploading. +# More details can be found at https://docs.mau.fi/bridges/go/discord/direct-media.html +direct_media: + # Should custom mxc:// URIs be used instead of reuploading media? + enabled: false + # The server name to use for the custom mxc:// URIs. + # This server name will effectively be a real Matrix server, it just won't implement anything other than media. + # You must either set up .well-known delegation from this domain to the bridge, or proxy the domain directly to the bridge. + server_name: discord-media.example.com + # Optionally a custom .well-known response. This defaults to `server_name:443` + well_known_response: + # Optionally specify a custom prefix for the media ID part of the MXC URI. + media_id_prefix: + # If the remote network supports media downloads over HTTP, then the bridge will use MSC3860/MSC3916 + # media download redirects if the requester supports it. Optionally, you can force redirects + # and not allow proxying at all by setting this to false. + # This option does nothing if the remote network does not support media downloads over HTTP. + allow_proxy: true + # Matrix server signing key to make the federation tester pass, same format as synapse's .signing.key file. + # This key is also used to sign the mxc:// URIs to ensure only the bridge can generate them. + server_key: "" + +# Settings for backfilling messages. +# Note that the exact way settings are applied depends on the network connector. +# See https://docs.mau.fi/bridges/general/backfill.html for more details. +backfill: + # Whether to do backfilling at all. + enabled: {{ matrix_mautrix_bluesky_backfill_enabled | to_json }} + # Maximum number of messages to backfill in empty rooms. + max_initial_messages: {{ matrix_mautrix_bluesky_backfill_max_initial_messages | to_json }} + # Maximum number of missed messages to backfill after bridge restarts. + max_catchup_messages: {{ matrix_mautrix_bluesky_backfill_max_catchup_messages | to_json }} + # If a backfilled chat is older than this number of hours, + # mark it as read even if it's unread on the remote network. + unread_hours_threshold: 720 + # Settings for backfilling threads within other backfills. + threads: + # Maximum number of messages to backfill in a new thread. + max_initial_messages: 50 + # Settings for the backwards backfill queue. This only applies when connecting to + # Beeper as standard Matrix servers don't support inserting messages into history. + queue: + # Should the backfill queue be enabled? + enabled: false + # Number of messages to backfill in one batch. + batch_size: 100 + # Delay between batches in seconds. + batch_delay: 20 + # Maximum number of batches to backfill per portal. + # If set to -1, all available messages will be backfilled. + max_batches: -1 + # Optional network-specific overrides for max batches. + # Interpretation of this field depends on the network connector. + max_batches_override: {} + +# Settings for enabling double puppeting +double_puppet: + # Servers to always allow double puppeting from. + # This is only for other servers and should NOT contain the server the bridge is on. + servers: {} + # Whether to allow client API URL discovery for other servers. When using this option, + # users on other servers can use double puppeting even if their server URLs aren't + # explicitly added to the servers map above. + allow_discovery: false + # Shared secrets for automatic double puppeting. + # See https://docs.mau.fi/bridges/general/double-puppeting.html for instructions. + secrets: {{ matrix_mautrix_bluesky_double_puppet_secrets | to_json }} + +# End-to-bridge encryption support options. +# +# See https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html for more info. +encryption: + # Whether to enable encryption at all. If false, the bridge will not function in encrypted rooms. + allow: {{ matrix_mautrix_bluesky_bridge_encryption_allow | to_json }} + # Whether to force-enable encryption in all bridged rooms. + default: {{ matrix_mautrix_bluesky_bridge_encryption_default | to_json }} + # Whether to require all messages to be encrypted and drop any unencrypted messages. + require: {{ matrix_mautrix_bluesky_bridge_encryption_require | to_json }} + # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. + # This option is not yet compatible with standard Matrix servers like Synapse and should not be used. + appservice: {{ matrix_mautrix_bluesky_bridge_encryption_appservice | to_json }} + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_bluesky_msc4190_enabled | to_json }} + # Whether to enable self-signing for bridges (Only the bridge bot uses this for now) + # Requires msc4190 to replace keys on reset + self_sign: {{ matrix_mautrix_bluesky_self_sign_enabled | to_json }} + # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. + # You must use a client that supports requesting keys from other users to use this feature. + allow_key_sharing: {{ matrix_mautrix_bluesky_bridge_encryption_key_sharing_allow | to_json }} + # Pickle key for encrypting encryption keys in the bridge database. + # If set to generate, a random key will be generated. + pickle_key: {{ matrix_mautrix_bluesky_bridge_encryption_pickle_key | to_json }} + # Options for deleting megolm sessions from the bridge. + delete_keys: + # Beeper-specific: delete outbound sessions when hungryserv confirms + # that the user has uploaded the key to key backup. + delete_outbound_on_ack: false + # Don't store outbound sessions in the inbound table. + dont_store_outbound: false + # Ratchet megolm sessions forward after decrypting messages. + ratchet_on_decrypt: false + # Delete fully used keys (index >= max_messages) after decrypting messages. + delete_fully_used_on_decrypt: false + # Delete previous megolm sessions from same device when receiving a new one. + delete_prev_on_new_session: false + # Delete megolm sessions received from a device when the device is deleted. + delete_on_device_delete: false + # Periodically delete megolm sessions when 2x max_age has passed since receiving the session. + periodically_delete_expired: false + # Delete inbound megolm sessions that don't have the received_at field used for + # automatic ratcheting and expired session deletion. This is meant as a migration + # to delete old keys prior to the bridge update. + delete_outdated_inbound: false + # What level of device verification should be required from users? + # + # Valid levels: + # unverified - Send keys to all device in the room. + # cross-signed-untrusted - Require valid cross-signing, but trust all cross-signing keys. + # cross-signed-tofu - Require valid cross-signing, trust cross-signing keys on first use (and reject changes). + # cross-signed-verified - Require valid cross-signing, plus a valid user signature from the bridge bot. + # Note that creating user signatures from the bridge bot is not currently possible. + # verified - Require manual per-device verification + # (currently only possible by modifying the `trust` column in the `crypto_device` database table). + verification_levels: + # Minimum level for which the bridge should send keys to when bridging messages from the remote network to Matrix. + receive: unverified + # Minimum level that the bridge should accept for incoming Matrix messages. + send: unverified + # Minimum level that the bridge should require for accepting key requests. + share: cross-signed-tofu + # Options for Megolm room key rotation. These options allow you to configure the m.room.encryption event content. + # See https://spec.matrix.org/v1.10/client-server-api/#mroomencryption for more information about that event. + rotation: + # Enable custom Megolm room key rotation settings. Note that these + # settings will only apply to rooms created after this option is set. + enable_custom: false + # The maximum number of milliseconds a session should be used + # before changing it. The Matrix spec recommends 604800000 (a week) + # as the default. + milliseconds: 604800000 + # The maximum number of messages that should be sent with a given a + # session before changing it. The Matrix spec recommends 100 as the + # default. + messages: 100 + # Disable rotating keys when a user's devices change? + # You should not enable this option unless you understand all the implications. + disable_device_change_key_rotation: false + +# Logging config. See https://github.com/tulir/zeroconfig for details. +logging: + min_level: {{ matrix_mautrix_bluesky_logging_level | to_json }} + writers: + - type: stdout + format: pretty-colored diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-bluesky/templates/config.yaml.j2.license new file mode 100644 index 000000000..826be4a75 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/templates/config.yaml.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-bluesky/templates/labels.j2 new file mode 100644 index 000000000..bec40b880 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/templates/labels.j2 @@ -0,0 +1,52 @@ +{# +SPDX-FileCopyrightText: 2025 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +{% if matrix_mautrix_bluesky_container_labels_traefik_enabled %} +traefik.enable=true + +{% if matrix_mautrix_bluesky_container_labels_traefik_docker_network %} +traefik.docker.network={{ matrix_mautrix_bluesky_container_labels_traefik_docker_network }} +{% endif %} + +traefik.http.services.matrix-mautrix-bluesky-metrics.loadbalancer.server.port=8000 + +{% if matrix_mautrix_bluesky_container_labels_metrics_enabled %} +############################################################ +# # +# Metrics # +# # +############################################################ + +{% if matrix_mautrix_bluesky_container_labels_metrics_middleware_basic_auth_enabled %} +traefik.http.middlewares.matrix-mautrix-bluesky-metrics-basic-auth.basicauth.users={{ matrix_mautrix_bluesky_container_labels_metrics_middleware_basic_auth_users }} +traefik.http.routers.matrix-mautrix-bluesky-metrics.middlewares=matrix-mautrix-bluesky-metrics-basic-auth +{% endif %} + +traefik.http.routers.matrix-mautrix-bluesky-metrics.rule={{ matrix_mautrix_bluesky_container_labels_metrics_traefik_rule }} + +{% if matrix_mautrix_bluesky_container_labels_metrics_traefik_priority | int > 0 %} +traefik.http.routers.matrix-mautrix-bluesky-metrics.priority={{ matrix_mautrix_bluesky_container_labels_metrics_traefik_priority }} +{% endif %} + +traefik.http.routers.matrix-mautrix-bluesky-metrics.service=matrix-mautrix-bluesky-metrics +traefik.http.routers.matrix-mautrix-bluesky-metrics.entrypoints={{ matrix_mautrix_bluesky_container_labels_metrics_traefik_entrypoints }} + +traefik.http.routers.matrix-mautrix-bluesky-metrics.tls={{ matrix_mautrix_bluesky_container_labels_metrics_traefik_tls | to_json }} +{% if matrix_mautrix_bluesky_container_labels_metrics_traefik_tls %} +traefik.http.routers.matrix-mautrix-bluesky-metrics.tls.certResolver={{ matrix_mautrix_bluesky_container_labels_metrics_traefik_tls_certResolver }} +{% endif %} + +############################################################ +# # +# /Metrics # +# # +############################################################ +{% endif %} + + +{% endif %} + +{{ matrix_mautrix_bluesky_container_labels_additional_labels }} diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/templates/systemd/matrix-mautrix-bluesky.service.j2 b/roles/custom/matrix-bridge-mautrix-bluesky/templates/systemd/matrix-mautrix-bluesky.service.j2 new file mode 100644 index 000000000..550c6f226 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/templates/systemd/matrix-mautrix-bluesky.service.j2 @@ -0,0 +1,48 @@ +#jinja2: lstrip_blocks: True +[Unit] +Description=Matrix Mautrix Bluesky bridge +{% for service in matrix_mautrix_bluesky_systemd_required_services_list %} +Requires={{ service }} +After={{ service }} +{% endfor %} +{% for service in matrix_mautrix_bluesky_systemd_wanted_services_list %} +Wants={{ service }} +{% endfor %} +DefaultDependencies=no + +[Service] +Type=simple +Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" +ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-bluesky 2>/dev/null || true' +ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-bluesky 2>/dev/null || true' + +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ + --rm \ + --name=matrix-mautrix-bluesky \ + --log-driver=none \ + --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ + --cap-drop=ALL \ + --network={{ matrix_mautrix_bluesky_container_network }} \ + --mount type=bind,src={{ matrix_mautrix_bluesky_config_path }},dst=/config,ro \ + --mount type=bind,src={{ matrix_mautrix_bluesky_data_path }},dst=/data \ + --label-file={{ matrix_mautrix_bluesky_base_path }}/labels \ + {% for arg in matrix_mautrix_bluesky_container_extra_arguments %} + {{ arg }} \ + {% endfor %} + {{ matrix_mautrix_bluesky_docker_image }} \ + /usr/bin/mautrix-bluesky -c /config/config.yaml -r /config/registration.yaml --no-update + +{% for network in matrix_mautrix_bluesky_container_additional_networks %} +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mautrix-bluesky +{% endfor %} + +ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-bluesky + +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-bluesky 2>/dev/null || true' +ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-bluesky 2>/dev/null || true' +Restart=always +RestartSec=30 +SyslogIdentifier=matrix-mautrix-bluesky + +[Install] +WantedBy=multi-user.target diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/templates/systemd/matrix-mautrix-bluesky.service.j2.license b/roles/custom/matrix-bridge-mautrix-bluesky/templates/systemd/matrix-mautrix-bluesky.service.j2.license new file mode 100644 index 000000000..6fe7fc50c --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-bluesky/templates/systemd/matrix-mautrix-bluesky.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-bridge-mautrix-discord/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-discord/defaults/main.yml index 63a40c07f..8663ffa44 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-discord/defaults/main.yml @@ -1,3 +1,11 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2022 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-discord is a Matrix <-> Discord bridge # Project source code URL: https://github.com/mautrix/discord @@ -13,11 +21,13 @@ matrix_mautrix_discord_container_image_self_build_repo: "https://mau.dev/mautrix matrix_mautrix_discord_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_discord_version == 'latest' else matrix_mautrix_discord_version }}" # renovate: datasource=docker depName=dock.mau.dev/mautrix/discord -matrix_mautrix_discord_version: v0.7.2 +matrix_mautrix_discord_version: v0.7.5 # See: https://mau.dev/mautrix/discord/container_registry -matrix_mautrix_discord_docker_image: "{{ matrix_mautrix_discord_docker_image_name_prefix }}mautrix/discord:{{ matrix_mautrix_discord_version }}" -matrix_mautrix_discord_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_discord_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_discord_docker_image: "{{ matrix_mautrix_discord_docker_image_registry_prefix }}mautrix/discord:{{ matrix_mautrix_discord_version }}" +matrix_mautrix_discord_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_discord_container_image_self_build else matrix_mautrix_discord_docker_image_registry_prefix_upstream }}" +matrix_mautrix_discord_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_discord_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_discord_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_discord_docker_image_force_pull: "{{ matrix_mautrix_discord_docker_image.endswith(':latest') }}" matrix_mautrix_discord_base_path: "{{ matrix_base_data_path }}/mautrix-discord" @@ -26,9 +36,14 @@ matrix_mautrix_discord_data_path: "{{ matrix_mautrix_discord_base_path }}/data" matrix_mautrix_discord_docker_src_files_path: "{{ matrix_mautrix_discord_base_path }}/docker-src" matrix_mautrix_discord_homeserver_address: "" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_discord_homeserver_async_media: false matrix_mautrix_discord_homeserver_domain: "{{ matrix_domain }}" matrix_mautrix_discord_appservice_address: "http://matrix-mautrix-discord:8080" +matrix_mautrix_discord_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" + matrix_mautrix_discord_bridge_command_prefix: "!discord" # Publicly accessible base URL that Discord can use to reach the bridge, used for avatars in relay mode. @@ -44,7 +59,7 @@ matrix_mautrix_discord_bridge_avatar_proxy_key: '' matrix_mautrix_discord_bridge_username_template: "{% raw %}discord_{{.}}{% endraw %}" # Displayname template for Discord users. This is also used as the room name in DMs if private_chat_portal_meta is enabled. -matrix_mautrix_discord_bridge_displayname_template: "{% raw %}{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}{% endraw %}" +matrix_mautrix_discord_bridge_displayname_template: "{% raw %}{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}} (Discord){% endraw %}" # Displayname template for Discord channels (bridged as rooms, or spaces when type=4). matrix_mautrix_discord_bridge_channel_name_template: "{% raw %}{{if or (eq .Type 3) (eq .Type 4)}}{{.Name}}{{else}}#{{.Name}}{{end}}{% endraw %}" @@ -214,6 +229,8 @@ matrix_mautrix_discord_registration_yaml: | - exclusive: true regex: '^@{{ matrix_mautrix_discord_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_discord_homeserver_domain | regex_escape }}$' de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_discord_msc4190_enabled | to_json }} matrix_mautrix_discord_registration: "{{ matrix_mautrix_discord_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-mautrix-discord/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-discord/tasks/main.yml index 19698f9f1..dc5ccdd4e 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-discord/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_install.yml index a83092973..58defde8a 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_install.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Sebastian Gumprich +# SPDX-FileCopyrightText: 2024 David Mehren +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: @@ -33,8 +40,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_discord_base_path }}", when: true} - {path: "{{ matrix_mautrix_discord_config_path }}", when: true} @@ -61,7 +68,7 @@ version: "{{ matrix_mautrix_discord_container_image_self_build_branch }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_discord_git_pull_results when: "matrix_mautrix_discord_container_image_self_build | bool" @@ -82,24 +89,24 @@ content: "{{ matrix_mautrix_discord_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_discord_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-discord registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_discord_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_discord_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-discord support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_discord_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels diff --git a/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_uninstall.yml index ade37c2f8..0b5ddc54f 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_uninstall.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mautrix-discord service diff --git a/roles/custom/matrix-bridge-mautrix-discord/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-discord/tasks/validate_config.yml index 25b4773c9..d61b33e97 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-discord/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# SPDX-FileCopyrightText: 2022 - 2025 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-discord 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_discord_appservice_token', when: true} - {'name': 'matrix_mautrix_discord_homeserver_address', when: true} @@ -15,13 +21,14 @@ - {'name': 'matrix_mautrix_discord_container_labels_avatar_proxy_hostname', when: "{{ matrix_mautrix_discord_container_labels_avatar_proxy_enabled }}"} - {'name': 'matrix_mautrix_discord_container_labels_avatar_proxy_path_prefix', when: "{{ matrix_mautrix_discord_container_labels_avatar_proxy_enabled }}"} -- name: (Deprecation) Catch and report renamed settings +- name: (Deprecation) Catch and report renamed mautrix-discord 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_mautrix_discord_login_shared_secret', 'new': ''} - {'old': 'matrix_mautrix_discord_homeserver_public_address', 'new': 'matrix_mautrix_discord_bridge_public_address'} - {'old': 'matrix_mautrix_discord_command_prefix', 'new': 'matrix_mautrix_discord_bridge_command_prefix'} + - {'old': 'matrix_mautrix_discord_docker_image_name_prefix', 'new': 'matrix_mautrix_discord_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-discord/templates/config.yaml.j2 b/roles/custom/matrix-bridge-mautrix-discord/templates/config.yaml.j2 index c859c1149..061cc3c82 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-discord/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Homeserver details. homeserver: # The address that this appservice can use to connect to the homeserver. @@ -16,7 +16,7 @@ homeserver: # Endpoint for reporting per-message status. message_send_checkpoint_endpoint: null # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? - async_media: false + async_media: {{ matrix_mautrix_discord_homeserver_async_media | to_json }} # Should the bridge use a websocket for connecting to the homeserver? # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, @@ -61,7 +61,7 @@ appservice: username: {{ matrix_mautrix_discord_appservice_bot_username | to_json }} # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty # to leave display name/avatar as-is. - displayname: {{ matrix_mautrix_discord_appservice_bot_displayname | to_json }} + displayname: {{ matrix_mautrix_discord_appservice_bot_displayname | to_json(ensure_ascii=False) }} avatar: {{ matrix_mautrix_discord_appservice_bot_avatar | to_json }} # Whether or not to receive ephemeral events via appservice transactions. @@ -268,6 +268,11 @@ bridge: appservice: {{ matrix_mautrix_discord_bridge_encryption_appservice | to_json}} # Require encryption, drop any unencrypted messages. require: {{ matrix_mautrix_discord_bridge_encryption_require | to_json }} + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_discord_msc4190_enabled | to_json }} # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # You must use a client that supports requesting keys from other users to use this feature. allow_key_sharing: {{ matrix_mautrix_discord_bridge_encryption_key_sharing_allow | to_json }} diff --git a/roles/custom/matrix-bridge-mautrix-discord/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-discord/templates/config.yaml.j2.license new file mode 100644 index 000000000..9c33473b5 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-discord/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2022 - 2024 MDAD project contributors +SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 Samuel Meenzen + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-discord/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-discord/templates/labels.j2 index adc265db2..be59b906e 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/templates/labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-discord/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_mautrix_discord_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-mautrix-discord/templates/systemd/matrix-mautrix-discord.service.j2 b/roles/custom/matrix-bridge-mautrix-discord/templates/systemd/matrix-mautrix-discord.service.j2 index cd853e1a9..3a5de31e2 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/templates/systemd/matrix-mautrix-discord.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-discord/templates/systemd/matrix-mautrix-discord.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix Discord bridge {% for service in matrix_mautrix_discord_systemd_required_services_list %} @@ -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-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-mautrix-discord 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-discord 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-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-mautrix-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-mautrix-discord 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-discord 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-discord/templates/systemd/matrix-mautrix-discord.service.j2.license b/roles/custom/matrix-bridge-mautrix-discord/templates/systemd/matrix-mautrix-discord.service.j2.license new file mode 100644 index 000000000..c751d3d6f --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-discord/templates/systemd/matrix-mautrix-discord.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-bridge-mautrix-facebook/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-facebook/defaults/main.yml deleted file mode 100644 index dacd2e24a..000000000 --- a/roles/custom/matrix-bridge-mautrix-facebook/defaults/main.yml +++ /dev/null @@ -1,207 +0,0 @@ ---- -# mautrix-facebook is a Matrix <-> Facebook bridge -# Project source code URL: https://github.com/mautrix/facebook - -matrix_mautrix_facebook_enabled: true - -matrix_mautrix_facebook_container_image_self_build: false -matrix_mautrix_facebook_container_image_self_build_repo: "https://mau.dev/mautrix/facebook.git" - -# renovate: datasource=docker depName=dock.mau.dev/mautrix/facebook -matrix_mautrix_facebook_version: v0.5.1 -matrix_mautrix_facebook_docker_image: "{{ matrix_mautrix_facebook_docker_image_name_prefix }}mautrix/facebook:{{ matrix_mautrix_facebook_version }}" -matrix_mautrix_facebook_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_facebook_container_image_self_build else 'dock.mau.dev/' }}" -matrix_mautrix_facebook_docker_image_force_pull: "{{ matrix_mautrix_facebook_docker_image.endswith(':latest') }}" - -matrix_mautrix_facebook_base_path: "{{ matrix_base_data_path }}/mautrix-facebook" -matrix_mautrix_facebook_config_path: "{{ matrix_mautrix_facebook_base_path }}/config" -matrix_mautrix_facebook_data_path: "{{ matrix_mautrix_facebook_base_path }}/data" -matrix_mautrix_facebook_docker_src_files_path: "{{ matrix_mautrix_facebook_base_path }}/docker-src" - -matrix_mautrix_facebook_command_prefix: "!fb" - -matrix_mautrix_facebook_homeserver_address: "" -matrix_mautrix_facebook_homeserver_domain: '{{ matrix_domain }}' - -# Whether or not the public-facing endpoints should be enabled (web-based login) -matrix_mautrix_facebook_appservice_public_enabled: false -# Mautrix Facebook public endpoint to log in to Facebook -matrix_mautrix_facebook_appservice_public_prefix: '' -matrix_mautrix_facebook_appservice_public_hostname: '' -matrix_mautrix_facebook_appservice_public_external: "{{ ('https://' + matrix_mautrix_facebook_appservice_public_hostname + matrix_mautrix_facebook_appservice_public_prefix) if matrix_mautrix_facebook_appservice_public_enabled else '' }}" - -matrix_mautrix_facebook_appservice_address: 'http://matrix-mautrix-facebook:29319' - -matrix_mautrix_facebook_container_network: "" - -matrix_mautrix_facebook_container_additional_networks: "{{ matrix_mautrix_facebook_container_additional_networks_auto + matrix_mautrix_facebook_container_additional_networks_custom }}" -matrix_mautrix_facebook_container_additional_networks_auto: [] -matrix_mautrix_facebook_container_additional_networks_custom: [] - -# matrix_mautrix_facebook_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_mautrix_facebook_container_labels_additional_labels`. -matrix_mautrix_facebook_container_labels_traefik_enabled: true -matrix_mautrix_facebook_container_labels_traefik_docker_network: "{{ matrix_mautrix_facebook_container_network }}" -matrix_mautrix_facebook_container_labels_traefik_entrypoints: web-secure -matrix_mautrix_facebook_container_labels_traefik_tls_certResolver: default # noqa var-naming - -# Controls whether labels will be added that expose mautrix-facebook's public endpoint -matrix_mautrix_facebook_container_labels_public_endpoint_enabled: "{{ matrix_mautrix_facebook_appservice_public_enabled }}" -matrix_mautrix_facebook_container_labels_public_endpoint_traefik_rule: "Host(`{{ matrix_mautrix_facebook_appservice_public_hostname }}`) && PathPrefix(`{{ matrix_mautrix_facebook_appservice_public_prefix }}`)" -matrix_mautrix_facebook_container_labels_public_endpoint_traefik_priority: 0 -matrix_mautrix_facebook_container_labels_public_endpoint_traefik_entrypoints: "{{ matrix_mautrix_facebook_container_labels_traefik_entrypoints }}" -matrix_mautrix_facebook_container_labels_public_endpoint_traefik_tls: "{{ matrix_mautrix_facebook_container_labels_public_endpoint_traefik_entrypoints != 'web' }}" -matrix_mautrix_facebook_container_labels_public_endpoint_traefik_tls_certResolver: "{{ matrix_mautrix_facebook_container_labels_traefik_tls_certResolver }}" # noqa var-naming - -# Controls whether labels will be added that expose mautrix-facebook's metrics -matrix_mautrix_facebook_container_labels_metrics_enabled: "{{ matrix_mautrix_facebook_metrics_enabled and matrix_mautrix_facebook_metrics_proxying_enabled }}" -matrix_mautrix_facebook_container_labels_metrics_traefik_rule: "Host(`{{ matrix_mautrix_facebook_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_mautrix_facebook_metrics_proxying_path_prefix }}`)" -matrix_mautrix_facebook_container_labels_metrics_traefik_priority: 0 -matrix_mautrix_facebook_container_labels_metrics_traefik_entrypoints: "{{ matrix_mautrix_facebook_container_labels_traefik_entrypoints }}" -matrix_mautrix_facebook_container_labels_metrics_traefik_tls: "{{ matrix_mautrix_facebook_container_labels_metrics_traefik_entrypoints != 'web' }}" -matrix_mautrix_facebook_container_labels_metrics_traefik_tls_certResolver: "{{ matrix_mautrix_facebook_container_labels_traefik_tls_certResolver }}" # noqa var-naming -matrix_mautrix_facebook_container_labels_metrics_middleware_basic_auth_enabled: false -# See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users -matrix_mautrix_facebook_container_labels_metrics_middleware_basic_auth_users: '' - -# matrix_mautrix_facebook_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_mautrix_facebook_container_labels_additional_labels: | -# my.label=1 -# another.label="here" -matrix_mautrix_facebook_container_labels_additional_labels: '' - -# A list of extra arguments to pass to the container -matrix_mautrix_facebook_container_extra_arguments: [] - -# List of systemd services that matrix-mautrix-facebook.service depends on. -matrix_mautrix_facebook_systemd_required_services_list: "{{ matrix_mautrix_facebook_systemd_required_services_list_default + matrix_mautrix_facebook_systemd_required_services_list_auto + matrix_mautrix_facebook_systemd_required_services_list_custom }}" -matrix_mautrix_facebook_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_mautrix_facebook_systemd_required_services_list_auto: [] -matrix_mautrix_facebook_systemd_required_services_list_custom: [] - -# List of systemd services that matrix-mautrix-facebook.service wants -matrix_mautrix_facebook_systemd_wanted_services_list: [] - -matrix_mautrix_facebook_appservice_token: '' -matrix_mautrix_facebook_homeserver_token: '' - -# Whether or not created rooms should have federation enabled. -# If false, created portal rooms will never be federated. -matrix_mautrix_facebook_federate_rooms: true - -# Whether or not metrics endpoint should be enabled. -# Enabling them is usually enough for a local (in-container) Prometheus to consume them. -# If metrics need to be consumed by another (external) Prometheus server, consider exposing them via `matrix_mautrix_facebook_metrics_proxying_enabled`. -matrix_mautrix_facebook_metrics_enabled: false - -# Controls whether metrics should be exposed on a public URL. -matrix_mautrix_facebook_metrics_proxying_enabled: false -matrix_mautrix_facebook_metrics_proxying_hostname: '' -matrix_mautrix_facebook_metrics_proxying_path_prefix: '' - -matrix_mautrix_facebook_bridge_permissions: | - {{ - {'*': 'relay', matrix_mautrix_facebook_homeserver_domain: 'user'} - | combine({matrix_admin: 'admin'} if matrix_admin else {}) - }} - -# Controls whether the matrix-mautrix-facebook container exposes its HTTP port. -# -# Takes an ":" or "" value (e.g. "127.0.0.1:9008"), or empty string to not expose. -matrix_mautrix_facebook_container_http_host_bind_port: '' - -# Database-related configuration fields. -# -# To use SQLite: -# - change the engine (`matrix_mautrix_facebook_database_engine: 'sqlite'`) -# - change to the last bridge version that supported SQLite: -# `matrix_mautrix_facebook_docker_image: "{{ matrix_mautrix_facebook_docker_image_name_prefix }}tulir/mautrix-facebook:da1b4ec596e334325a1589e70829dea46e73064b"` -# - plan your migration to Postgres, as this bridge does not support SQLite anymore (and neither will the playbook in the future). -# -# To use Postgres: -# - adjust your database credentials via the `matrix_mautrix_facebook_database_*` variables -matrix_mautrix_facebook_database_engine: 'postgres' - -matrix_mautrix_facebook_sqlite_database_path_local: "{{ matrix_mautrix_facebook_data_path }}/mautrix-facebook.db" -matrix_mautrix_facebook_sqlite_database_path_in_container: "/data/mautrix-facebook.db" - -matrix_mautrix_facebook_database_username: 'matrix_mautrix_facebook' -matrix_mautrix_facebook_database_password: 'some-password' -matrix_mautrix_facebook_database_hostname: '' -matrix_mautrix_facebook_database_port: 5432 -matrix_mautrix_facebook_database_name: 'matrix_mautrix_facebook' - -matrix_mautrix_facebook_database_connection_string: 'postgres://{{ matrix_mautrix_facebook_database_username }}:{{ matrix_mautrix_facebook_database_password }}@{{ matrix_mautrix_facebook_database_hostname }}:{{ matrix_mautrix_facebook_database_port }}/{{ matrix_mautrix_facebook_database_name }}' - -matrix_mautrix_facebook_appservice_database: "{{ - { - 'sqlite': ('sqlite:///' + matrix_mautrix_facebook_sqlite_database_path_in_container), - 'postgres': matrix_mautrix_facebook_database_connection_string, - }[matrix_mautrix_facebook_database_engine] -}}" - - -# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth). -matrix_mautrix_facebook_login_shared_secret: '' - -matrix_mautrix_facebook_bridge_login_shared_secret_map: "{{ {matrix_mautrix_facebook_homeserver_domain: matrix_mautrix_facebook_login_shared_secret} if matrix_mautrix_facebook_login_shared_secret else {} }}" - -# Enable bridge relay bot functionality -matrix_mautrix_facebook_relay_enabled: "{{ matrix_bridges_relay_enabled }}" - -matrix_mautrix_facebook_appservice_bot_username: facebookbot - -matrix_mautrix_facebook_bridge_presence: true - -# Specifies the default log level for all bridge loggers. -matrix_mautrix_facebook_logging_level: WARNING - -# Default configuration template which covers the generic use case. -# You can customize it by controlling the various variables inside it. -# -# For a more advanced customization, you can extend the default (see `matrix_mautrix_facebook_configuration_extension_yaml`) -# or completely replace this variable with your own template. -matrix_mautrix_facebook_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" - -matrix_mautrix_facebook_configuration_extension_yaml: | - # Your custom YAML configuration goes here. - # This configuration extends the default starting configuration (`matrix_mautrix_facebook_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_mautrix_facebook_configuration_yaml`. - -matrix_mautrix_facebook_configuration_extension: "{{ matrix_mautrix_facebook_configuration_extension_yaml | from_yaml if matrix_mautrix_facebook_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_facebook_configuration_yaml`. -matrix_mautrix_facebook_configuration: "{{ matrix_mautrix_facebook_configuration_yaml | from_yaml | combine(matrix_mautrix_facebook_configuration_extension, recursive=True) }}" - -matrix_mautrix_facebook_registration_yaml: | - id: facebook - as_token: "{{ matrix_mautrix_facebook_appservice_token }}" - hs_token: "{{ matrix_mautrix_facebook_homeserver_token }}" - namespaces: - users: - - exclusive: true - regex: '^@facebook_.+:{{ matrix_mautrix_facebook_homeserver_domain | regex_escape }}$' - - exclusive: true - regex: '^@{{ matrix_mautrix_facebook_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_facebook_homeserver_domain | regex_escape }}$' - url: {{ matrix_mautrix_facebook_appservice_address }} - # See https://github.com/mautrix/signal/issues/43 - sender_localpart: _bot_{{ matrix_mautrix_facebook_appservice_bot_username }} - rate_limited: false - de.sorunome.msc2409.push_ephemeral: true - -matrix_mautrix_facebook_registration: "{{ matrix_mautrix_facebook_registration_yaml | from_yaml }}" - -# Enable End-to-bridge encryption -matrix_mautrix_facebook_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" -matrix_mautrix_facebook_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}" -matrix_mautrix_facebook_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_facebook_bridge_encryption_allow }}" diff --git a/roles/custom/matrix-bridge-mautrix-facebook/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-facebook/tasks/main.yml deleted file mode 100644 index d26ce1733..000000000 --- a/roles/custom/matrix-bridge-mautrix-facebook/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- tags: - - setup-all - - setup-mautrix-facebook - - install-all - - install-mautrix-facebook - block: - - when: matrix_mautrix_facebook_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_mautrix_facebook_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-mautrix-facebook - block: - - when: not matrix_mautrix_facebook_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" diff --git a/roles/custom/matrix-bridge-mautrix-facebook/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-facebook/tasks/setup_install.yml deleted file mode 100644 index 02dd8e511..000000000 --- a/roles/custom/matrix-bridge-mautrix-facebook/tasks/setup_install.yml +++ /dev/null @@ -1,144 +0,0 @@ ---- - -- ansible.builtin.set_fact: - matrix_mautrix_facebook_requires_restart: false - -- when: "matrix_mautrix_facebook_database_engine == 'postgres'" - block: - - name: Check if an SQLite database already exists - ansible.builtin.stat: - path: "{{ matrix_mautrix_facebook_sqlite_database_path_local }}" - register: matrix_mautrix_facebook_sqlite_database_path_local_stat_result - - - when: "matrix_mautrix_facebook_sqlite_database_path_local_stat_result.stat.exists | bool" - block: - - ansible.builtin.include_role: - name: galaxy/postgres - tasks_from: migrate_db_to_postgres - vars: - postgres_db_migration_request: - src: "{{ matrix_mautrix_facebook_sqlite_database_path_local }}" - dst: "{{ matrix_mautrix_facebook_database_connection_string }}" - caller: "{{ role_path | basename }}" - engine_variable_name: 'matrix_mautrix_facebook_database_engine' - engine_old: 'sqlite' - systemd_services_to_stop: ['matrix-mautrix-facebook.service'] - - - ansible.builtin.set_fact: - matrix_mautrix_facebook_requires_restart: true - -- name: Ensure Mautrix Facebook image is pulled - community.docker.docker_image: - name: "{{ matrix_mautrix_facebook_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_mautrix_facebook_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_mautrix_facebook_docker_image_force_pull }}" - when: not matrix_mautrix_facebook_container_image_self_build - register: result - retries: "{{ devture_playbook_help_container_retries_count }}" - delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed - -- name: Ensure Mautrix Facebook paths exist - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_mautrix_facebook_base_path }}", when: true} - - {path: "{{ matrix_mautrix_facebook_config_path }}", when: true} - - {path: "{{ matrix_mautrix_facebook_data_path }}", when: true} - - {path: "{{ matrix_mautrix_facebook_docker_src_files_path }}", when: "{{ matrix_mautrix_facebook_container_image_self_build }}"} - when: item.when | bool - -- name: Ensure Mautrix Facebook repository is present on self-build - ansible.builtin.git: - repo: "{{ matrix_mautrix_facebook_container_image_self_build_repo }}" - dest: "{{ matrix_mautrix_facebook_docker_src_files_path }}" - version: "{{ matrix_mautrix_facebook_docker_image.split(':')[1] }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_mautrix_facebook_git_pull_results - when: "matrix_mautrix_facebook_container_image_self_build | bool" - -- name: Ensure Mautrix Facebook Docker image is built - community.docker.docker_image: - name: "{{ matrix_mautrix_facebook_docker_image }}" - source: build - force_source: "{{ matrix_mautrix_facebook_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_facebook_git_pull_results.changed }}" - build: - dockerfile: Dockerfile - path: "{{ matrix_mautrix_facebook_docker_src_files_path }}" - pull: true - when: "matrix_mautrix_facebook_container_image_self_build | bool" - -- name: Check if an old database file already exists - ansible.builtin.stat: - path: "{{ matrix_mautrix_facebook_base_path }}/mautrix-facebook.db" - register: matrix_mautrix_facebook_stat_database - -- name: (Data relocation) Ensure matrix-mautrix-facebook.service is stopped - ansible.builtin.service: - name: matrix-mautrix-facebook - state: stopped - enabled: false - daemon_reload: true - failed_when: false - when: "matrix_mautrix_facebook_stat_database.stat.exists" - -- name: (Data relocation) Move mautrix-facebook database file to ./data directory - ansible.builtin.command: - cmd: "mv {{ matrix_mautrix_facebook_base_path }}/mautrix-facebook.db {{ matrix_mautrix_facebook_data_path }}/mautrix-facebook.db" - creates: "{{ matrix_mautrix_facebook_data_path }}/mautrix-facebook.db" - removes: "{{ matrix_mautrix_facebook_base_path }}/mautrix-facebook.db" - when: "matrix_mautrix_facebook_stat_database.stat.exists" - -- name: Ensure mautrix-facebook config.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mautrix_facebook_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mautrix_facebook_config_path }}/config.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mautrix-facebook registration.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mautrix_facebook_registration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mautrix_facebook_config_path }}/registration.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mautrix-facebook support files installed - ansible.builtin.template: - src: "{{ role_path }}/templates/{{ item }}.j2" - dest: "{{ matrix_mautrix_facebook_base_path }}/{{ item }}" - mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - labels - -- name: Ensure matrix-mautrix-facebook container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_mautrix_facebook_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-mautrix-facebook.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-mautrix-facebook.service.j2" - dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-facebook.service" - mode: 0644 - -- name: Ensure matrix-mautrix-facebook.service restarted, if necessary - ansible.builtin.service: - name: "matrix-mautrix-facebook.service" - state: restarted - daemon_reload: true - when: "matrix_mautrix_facebook_requires_restart | bool" diff --git a/roles/custom/matrix-bridge-mautrix-facebook/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-facebook/tasks/setup_uninstall.yml deleted file mode 100644 index 566da5b71..000000000 --- a/roles/custom/matrix-bridge-mautrix-facebook/tasks/setup_uninstall.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- name: Check existence of matrix-mautrix-facebook service - ansible.builtin.stat: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-facebook.service" - register: matrix_mautrix_facebook_service_stat - -- when: matrix_mautrix_facebook_service_stat.stat.exists | bool - block: - - name: Ensure matrix-mautrix-facebook is stopped - ansible.builtin.service: - name: matrix-mautrix-facebook - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-mautrix-facebook.service doesn't exist - ansible.builtin.file: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-facebook.service" - state: absent diff --git a/roles/custom/matrix-bridge-mautrix-facebook/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-facebook/tasks/validate_config.yml deleted file mode 100644 index 72961cb0e..000000000 --- a/roles/custom/matrix-bridge-mautrix-facebook/tasks/validate_config.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- - -- name: (Deprecation) Catch and report renamed mautrix-facebook 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 }}`). - when: "item.old in vars" - with_items: - - {'old': 'matrix_mautrix_facebook_public_endpoint', 'new': 'matrix_mautrix_facebook_appservice_public_prefix'} - -- name: Fail if required mautrix-facebook 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_mautrix_facebook_appservice_public_hostname', when: "{{ matrix_mautrix_facebook_appservice_public_enabled }}"} - - {'name': 'matrix_mautrix_facebook_appservice_public_prefix', when: "{{ matrix_mautrix_facebook_appservice_public_enabled }}"} - - {'name': 'matrix_mautrix_facebook_metrics_proxying_hostname', when: "{{ matrix_mautrix_facebook_metrics_proxying_enabled }}"} - - {'name': 'matrix_mautrix_facebook_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_facebook_metrics_proxying_enabled }}"} - - {'name': 'matrix_mautrix_facebook_appservice_token', when: true} - - {'name': 'matrix_mautrix_facebook_homeserver_token', when: true} - - {'name': 'matrix_mautrix_facebook_container_network', when: true} - - {'name': 'matrix_mautrix_facebook_homeserver_address', when: true} - - {'name': 'matrix_mautrix_facebook_database_hostname', when: "{{ matrix_mautrix_facebook_database_engine == 'postgres' }}"} - -- when: "matrix_mautrix_facebook_database_engine == 'sqlite' and matrix_mautrix_facebook_docker_image.endswith(':da1b4ec596e334325a1589e70829dea46e73064b')" - block: - - name: Inject warning if on an old SQLite-supporting version - ansible.builtin.set_fact: - devture_playbook_runtime_messages_list: | - {{ - devture_playbook_runtime_messages_list | default([]) - + - [ - "Note: Your mautrix-facebook bridge is still on SQLite and on the last version that supported it, before support was dropped. Support has been subsequently re-added in v0.3.2, so we advise you to upgrade (by removing your `matrix_mautrix_facebook_docker_image` definition from vars.yml)" - ] - }} diff --git a/roles/custom/matrix-bridge-mautrix-facebook/templates/config.yaml.j2 b/roles/custom/matrix-bridge-mautrix-facebook/templates/config.yaml.j2 deleted file mode 100644 index 7280ec12d..000000000 --- a/roles/custom/matrix-bridge-mautrix-facebook/templates/config.yaml.j2 +++ /dev/null @@ -1,259 +0,0 @@ -#jinja2: lstrip_blocks: "True" -# Homeserver details -homeserver: - # The address that this appservice can use to connect to the homeserver. - address: {{ matrix_mautrix_facebook_homeserver_address }} - # The domain of the homeserver (for MXIDs, etc). - domain: {{ matrix_mautrix_facebook_homeserver_domain }} - # Whether or not to verify the SSL certificate of the homeserver. - # Only applies if address starts with https:// - verify_ssl: true - # Whether or not the homeserver supports asmux-specific endpoints, - # such as /_matrix/client/unstable/net.maunium.asmux/dms for atomically - # updating m.direct. - asmux: false - # Whether asynchronous uploads via MSC2246 should be enabled for media. - # Requires a media repo that supports MSC2246. - async_media: false - -# Application service host/registration related details -# Changing these values requires regeneration of the registration. -appservice: - # The address that the homeserver can use to connect to this appservice. - address: {{ matrix_mautrix_facebook_appservice_address }} - - # The hostname and port where this appservice should listen. - hostname: 0.0.0.0 - port: 29319 - # The maximum body size of appservice API requests (from the homeserver) in mebibytes - # Usually 1 is enough, but on high-traffic bridges you might need to increase this to avoid 413s - max_body_size: 1 - - # The full URI to the database. Only Postgres is currently supported. - database: {{ matrix_mautrix_facebook_appservice_database|to_json }} - - # Public part of web server for out-of-Matrix interaction with the bridge. - public: - # Whether or not the public-facing endpoints should be enabled. - enabled: {{ matrix_mautrix_facebook_appservice_public_enabled|to_json }} - # The prefix to use in the public-facing endpoints. - prefix: {{ matrix_mautrix_facebook_appservice_public_prefix|to_json }} - # The base URL where the public-facing endpoints are available. The prefix is not added - # implicitly. - external: {{ matrix_mautrix_facebook_appservice_public_external|to_json }} - # Allow logging in within Matrix. If false, users can only log in using the web interface. - allow_matrix_login: true - # Segment API key to enable analytics tracking for web server endpoints. Set to null to disable. - # Currently the only events are login start, success and fail. - segment_key: null - - # The unique ID of this appservice. - id: facebook - # Username of the appservice bot. - bot_username: {{ matrix_mautrix_facebook_appservice_bot_username|to_json }} - # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty - # to leave display name/avatar as-is. - bot_displayname: Facebook bridge bot - bot_avatar: mxc://maunium.net/ygtkteZsXnGJLJHRchUwYWak - - # Authentication tokens for AS <-> HS communication. - as_token: "{{ matrix_mautrix_facebook_appservice_token }}" - hs_token: "{{ matrix_mautrix_facebook_homeserver_token }}" - -# Prometheus telemetry config. Requires prometheus-client to be installed. -metrics: - enabled: {{ matrix_mautrix_facebook_metrics_enabled | to_json }} - listen_port: 8000 - -# Bridge config -bridge: - # Localpart template of MXIDs for Facebook users. - # {userid} is replaced with the user ID of the Facebook user. - username_template: "facebook_{userid}" - # Displayname template for Facebook users. - # {displayname} is replaced with the display name of the Facebook user - # as defined below in displayname_preference. - # Keys available for displayname_preference are also available here. - displayname_template: '{displayname} (FB)' - # Available keys: - # "name" (full name) - # "first_name" - # "last_name" - # "nickname" - # "own_nickname" (user-specific!) - displayname_preference: - - name - - first_name - - # The prefix for commands. Only required in non-management rooms. - command_prefix: "{{ matrix_mautrix_facebook_command_prefix }}" - - # Number of chats to sync (and create portals for) on startup/login. - # Set 0 to disable automatic syncing. - initial_chat_sync: 10 - # Whether or not the Facebook users of logged in Matrix users should be - # invited to private chats when the user sends a message from another client. - invite_own_puppet_to_pm: false - # Whether or not to use /sync to get presence, read receipts and typing notifications - # when double puppeting is enabled - sync_with_custom_puppets: true - # Whether or not to update the m.direct account data event when double puppeting is enabled. - # Note that updating the m.direct event is not atomic (except with mautrix-asmux) - # and is therefore prone to race conditions. - sync_direct_chat_list: false - # Servers to always allow double puppeting from - double_puppet_server_map: {} - # example.com: https://example.com - # Allow using double puppeting from any server with a valid client .well-known file. - double_puppet_allow_discovery: false - # Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth - # - # If set, custom puppets will be enabled automatically for local users - # instead of users having to find an access token and run `login-matrix` - # manually. - # If using this for other servers than the bridge's server, - # you must also set the URL in the double_puppet_server_map. - login_shared_secret_map: {{ matrix_mautrix_facebook_bridge_login_shared_secret_map|to_json }} - # Should presence from Facebook be bridged? This doesn't use the same API as the Android app, - # so it might be more suspicious to Facebook. - presence_from_facebook: {{ matrix_mautrix_facebook_bridge_presence|to_json }} - # Whether or not to update avatars when syncing all contacts at startup. - update_avatar_initial_sync: true - # End-to-bridge encryption support options. These require matrix-nio to be installed with pip - # and login_shared_secret to be configured in order to get a device for the bridge bot. - # - # Additionally, https://github.com/matrix-org/synapse/pull/5758 is required if using a normal - # application service. - encryption: - # Allow encryption, work in group chat rooms with e2ee enabled - allow: {{ matrix_mautrix_facebook_bridge_encryption_allow|to_json }} - # Default to encryption, force-enable encryption in all portals the bridge creates - # This will cause the bridge bot to be in private chats for the encryption to work properly. - default: {{ matrix_mautrix_facebook_bridge_encryption_default|to_json }} - # Options for automatic key sharing. - key_sharing: - # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. - # You must use a client that supports requesting keys from other users to use this feature. - allow_key_sharing: {{ matrix_mautrix_facebook_bridge_encryption_key_sharing_allow|to_json }} - # Require the requesting device to have a valid cross-signing signature? - # This doesn't require that the bridge has verified the device, only that the user has verified it. - # Not yet implemented. - require_cross_signing: false - # Require devices to be verified by the bridge? - # Verification by the bridge is not yet implemented. - require_verification: true - # Whether or not the bridge should send a read receipt from the bridge bot when a message has - # been sent to Facebook. - delivery_receipts: false - # Whether to allow inviting arbitrary mxids to portal rooms - allow_invites: false - # Whether or not created rooms should have federation enabled. - # If false, created portal rooms will never be federated. - federate_rooms: {{ matrix_mautrix_facebook_federate_rooms|to_json }} - # Settings for backfilling messages from Facebook. - backfill: - # Whether or not the Facebook users of logged in Matrix users should be - # invited to private chats when backfilling history from Facebook. This is - # usually needed to prevent rate limits and to allow timestamp massaging. - invite_own_puppet: true - # Maximum number of messages to backfill initially. - # Set to 0 to disable backfilling when creating portal. - initial_limit: 0 - # Maximum number of messages to backfill if messages were missed while - # the bridge was disconnected. - # Set to 0 to disable backfilling missed messages. - missed_limit: 1000 - # If using double puppeting, should notifications be disabled - # while the initial backfill is in progress? - disable_notifications: false - periodic_reconnect: - # Interval in seconds in which to automatically reconnect all users. - # This can be used to automatically mitigate the bug where Facebook stops sending messages. - # Set to -1 to disable periodic reconnections entirely. - interval: -1 - # What to do in periodic reconnects. Either "refresh" or "reconnect" - mode: refresh - # Should even disconnected users be reconnected? - always: false - # The number of seconds that a disconnection can last without triggering an automatic re-sync - # and missed message backfilling when reconnecting. - # Set to 0 to always re-sync, or -1 to never re-sync automatically. - resync_max_disconnected_time: 5 - # Should the bridge do a resync on startup? - sync_on_startup: true - # Whether or not temporary disconnections should send notices to the notice room. - # If this is false, disconnections will never send messages and connections will only send - # messages if it was disconnected for more than resync_max_disconnected_time seconds. - temporary_disconnect_notices: false - # Whether or not the bridge should try to "refresh" the connection if a normal reconnection - # attempt fails. - refresh_on_reconnection_fail: false - # Set this to true to tell the bridge to re-send m.bridge events to all rooms on the next run. - # This field will automatically be changed back to false after it, - # except if the config file is not writable. - resend_bridge_info: false - - # Permissions for using the bridge. - # Permitted values: - # user - Use the bridge with puppeting. - # admin - Use and administrate the bridge. - # Permitted keys: - # * - All Matrix users - # domain - All users on that homeserver - # mxid - Specific user - permissions: {{ matrix_mautrix_facebook_bridge_permissions|to_json }} - - relay: - # Whether relay mode should be allowed. If allowed, `!fb set-relay` can be used to turn any - # authenticated user into a relaybot for that chat. - enabled: {{ matrix_mautrix_facebook_relay_enabled }} - # The formats to use when sending messages to Messenger via a relay user. - # - # Available variables: - # $sender_displayname - The display name of the sender (e.g. Example User) - # $sender_username - The username (Matrix ID localpart) of the sender (e.g. alice) - # $sender_mxid - The Matrix ID of the sender (e.g. @alice:example.com) - # $message - The message content - message_formats: - m.text: '$sender_displayname: $message' - m.notice: '$sender_displayname: $message' - m.emote: '* $sender_displayname $message' - m.file: '$sender_displayname sent a file' - m.image: '$sender_displayname sent an image' - m.audio: '$sender_displayname sent an audio file' - m.video: '$sender_displayname sent a video' - m.location: '$sender_displayname sent a location' - -facebook: - device_seed: generate - default_region_hint: ODN - connection_type: WIFI - carrier: Verizon - hni: 311390 - -# Python logging configuration. -# -# See section 16.7.2 of the Python documentation for more info: -# https://docs.python.org/3.6/library/logging.config.html#configuration-dictionary-schema -logging: - version: 1 - formatters: - colored: - (): mautrix_facebook.util.ColorFormatter - format: "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s" - normal: - format: "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s" - handlers: - console: - class: logging.StreamHandler - formatter: colored - loggers: - mau: - level: {{ matrix_mautrix_facebook_logging_level|to_json }} - paho: - level: {{ matrix_mautrix_facebook_logging_level|to_json }} - aiohttp: - level: {{ matrix_mautrix_facebook_logging_level|to_json }} - root: - level: {{ matrix_mautrix_facebook_logging_level|to_json }} - handlers: [console] diff --git a/roles/custom/matrix-bridge-mautrix-facebook/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-facebook/templates/labels.j2 deleted file mode 100644 index d71e7eed2..000000000 --- a/roles/custom/matrix-bridge-mautrix-facebook/templates/labels.j2 +++ /dev/null @@ -1,76 +0,0 @@ -{% if matrix_mautrix_facebook_container_labels_traefik_enabled %} -traefik.enable=true - -{% if matrix_mautrix_facebook_container_labels_traefik_docker_network %} -traefik.docker.network={{ matrix_mautrix_facebook_container_labels_traefik_docker_network }} -{% endif %} - -traefik.http.services.matrix-mautrix-facebook-appservice.loadbalancer.server.port=29319 -traefik.http.services.matrix-mautrix-facebook-metrics.loadbalancer.server.port=8000 - -{% if matrix_mautrix_facebook_container_labels_public_endpoint_enabled %} -############################################################ -# # -# Public # -# # -############################################################ - -traefik.http.routers.matrix-mautrix-facebook-public.rule={{ matrix_mautrix_facebook_container_labels_public_endpoint_traefik_rule }} - -{% if matrix_mautrix_facebook_container_labels_public_endpoint_traefik_priority | int > 0 %} -traefik.http.routers.matrix-mautrix-facebook-public.priority={{ matrix_mautrix_facebook_container_labels_public_endpoint_traefik_priority }} -{% endif %} - -traefik.http.routers.matrix-mautrix-facebook-public.service=matrix-mautrix-facebook-appservice -traefik.http.routers.matrix-mautrix-facebook-public.entrypoints={{ matrix_mautrix_facebook_container_labels_public_endpoint_traefik_entrypoints }} - -traefik.http.routers.matrix-mautrix-facebook-public.tls={{ matrix_mautrix_facebook_container_labels_public_endpoint_traefik_tls | to_json }} -{% if matrix_mautrix_facebook_container_labels_public_endpoint_traefik_tls %} -traefik.http.routers.matrix-mautrix-facebook-public.tls.certResolver={{ matrix_mautrix_facebook_container_labels_public_endpoint_traefik_tls_certResolver }} -{% endif %} - -############################################################ -# # -# /Public # -# # -############################################################ -{% endif %} - - -{% if matrix_mautrix_facebook_container_labels_metrics_enabled %} -############################################################ -# # -# Metrics # -# # -############################################################ - -{% if matrix_mautrix_facebook_container_labels_metrics_middleware_basic_auth_enabled %} -traefik.http.middlewares.matrix-mautrix-facebook-metrics-basic-auth.basicauth.users={{ matrix_mautrix_facebook_container_labels_metrics_middleware_basic_auth_users }} -traefik.http.routers.matrix-mautrix-facebook-metrics.middlewares=matrix-mautrix-facebook-metrics-basic-auth -{% endif %} - -traefik.http.routers.matrix-mautrix-facebook-metrics.rule={{ matrix_mautrix_facebook_container_labels_metrics_traefik_rule }} - -{% if matrix_mautrix_facebook_container_labels_metrics_traefik_priority | int > 0 %} -traefik.http.routers.matrix-mautrix-facebook-metrics.priority={{ matrix_mautrix_facebook_container_labels_metrics_traefik_priority }} -{% endif %} - -traefik.http.routers.matrix-mautrix-facebook-metrics.service=matrix-mautrix-facebook-metrics -traefik.http.routers.matrix-mautrix-facebook-metrics.entrypoints={{ matrix_mautrix_facebook_container_labels_metrics_traefik_entrypoints }} - -traefik.http.routers.matrix-mautrix-facebook-metrics.tls={{ matrix_mautrix_facebook_container_labels_metrics_traefik_tls | to_json }} -{% if matrix_mautrix_facebook_container_labels_metrics_traefik_tls %} -traefik.http.routers.matrix-mautrix-facebook-metrics.tls.certResolver={{ matrix_mautrix_facebook_container_labels_metrics_traefik_tls_certResolver }} -{% endif %} - -############################################################ -# # -# /Metrics # -# # -############################################################ -{% endif %} - - -{% endif %} - -{{ matrix_mautrix_facebook_container_labels_additional_labels }} diff --git a/roles/custom/matrix-bridge-mautrix-facebook/templates/systemd/matrix-mautrix-facebook.service.j2 b/roles/custom/matrix-bridge-mautrix-facebook/templates/systemd/matrix-mautrix-facebook.service.j2 deleted file mode 100644 index 3fbb4ad24..000000000 --- a/roles/custom/matrix-bridge-mautrix-facebook/templates/systemd/matrix-mautrix-facebook.service.j2 +++ /dev/null @@ -1,51 +0,0 @@ -#jinja2: lstrip_blocks: "True" -[Unit] -Description=Matrix Mautrix Facebook bridge -{% for service in matrix_mautrix_facebook_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_mautrix_facebook_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-facebook 2>/dev/null || true' -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-facebook 2>/dev/null || true' - -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ - --rm \ - --name=matrix-mautrix-facebook \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --network={{ matrix_mautrix_facebook_container_network }} \ - {% if matrix_mautrix_facebook_appservice_public_enabled and matrix_mautrix_facebook_container_http_host_bind_port %} - -p {{ matrix_mautrix_facebook_container_http_host_bind_port }}:29319 \ - {% endif %} - --mount type=bind,src={{ matrix_mautrix_facebook_config_path }},dst=/config \ - --mount type=bind,src={{ matrix_mautrix_facebook_data_path }},dst=/data \ - --label-file={{ matrix_mautrix_facebook_base_path }}/labels \ - {% for arg in matrix_mautrix_facebook_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_mautrix_facebook_docker_image }} \ - python3 -m mautrix_facebook -c /config/config.yaml --no-update - -{% for network in matrix_mautrix_facebook_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mautrix-facebook -{% endfor %} - -ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-facebook - -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-facebook 2>/dev/null || true' -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-facebook 2>/dev/null || true' -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-mautrix-facebook - -[Install] -WantedBy=multi-user.target diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-gmessages/defaults/main.yml index c2409ec61..cc266a5df 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-gmessages/defaults/main.yml @@ -1,3 +1,12 @@ +# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2023 Cody Wyatt Neiman +# SPDX-FileCopyrightText: 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +# SPDX-FileCopyrightText: 2024 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-gmessages is a Matrix <-> gmessages bridge # Project source code URL: https://github.com/mautrix/gmessages @@ -9,11 +18,13 @@ matrix_mautrix_gmessages_container_image_self_build_repo: "https://github.com/ma matrix_mautrix_gmessages_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_gmessages_version == 'latest' else matrix_mautrix_gmessages_version }}" # renovate: datasource=docker depName=dock.mau.dev/mautrix/gmessages -matrix_mautrix_gmessages_version: v0.6.0 +matrix_mautrix_gmessages_version: v0.2511.0 # See: https://mau.dev/mautrix/gmessages/container_registry -matrix_mautrix_gmessages_docker_image: "{{ matrix_mautrix_gmessages_docker_image_name_prefix }}mautrix/gmessages:{{ matrix_mautrix_gmessages_version }}" -matrix_mautrix_gmessages_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_gmessages_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_gmessages_docker_image: "{{ matrix_mautrix_gmessages_docker_image_registry_prefix }}mautrix/gmessages:{{ matrix_mautrix_gmessages_version }}" +matrix_mautrix_gmessages_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_gmessages_container_image_self_build else matrix_mautrix_gmessages_docker_image_registry_prefix_upstream }}" +matrix_mautrix_gmessages_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_gmessages_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_gmessages_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_gmessages_docker_image_force_pull: "{{ matrix_mautrix_gmessages_docker_image.endswith(':latest') }}" matrix_mautrix_gmessages_base_path: "{{ matrix_base_data_path }}/mautrix-gmessages" @@ -22,9 +33,15 @@ matrix_mautrix_gmessages_data_path: "{{ matrix_mautrix_gmessages_base_path }}/da matrix_mautrix_gmessages_docker_src_files_path: "{{ matrix_mautrix_gmessages_base_path }}/docker-src" matrix_mautrix_gmessages_homeserver_address: "" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_gmessages_homeserver_async_media: false matrix_mautrix_gmessages_homeserver_domain: "{{ matrix_domain }}" matrix_mautrix_gmessages_appservice_address: "http://matrix-mautrix-gmessages:8080" +matrix_mautrix_gmessages_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" +matrix_mautrix_gmessages_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" + matrix_mautrix_gmessages_backfill_enabled: true matrix_mautrix_gmessages_backfill_max_initial_messages: 50 matrix_mautrix_gmessages_backfill_max_catchup_messages: 500 @@ -151,7 +168,7 @@ matrix_mautrix_gmessages_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix # For compatibility with the older Gmessages bridge, you may wish to set the pickle key to: "go.mau.fi/mautrix-gmessages" matrix_mautrix_gmessages_bridge_encryption_pickle_key: mautrix.bridge.e2ee -matrix_mautrix_gmessages_network_displayname_template: "{% raw %}{{or .FullName .PhoneNumber}}{% endraw %}" +matrix_mautrix_gmessages_network_displayname_template: "{% raw %}{{or .FullName .PhoneNumber}} (GMessages){% endraw %}" matrix_mautrix_gmessages_appservice_username_template: "{% raw %}gmessages_{{.}}{% endraw %}" matrix_mautrix_gmessages_public_media_signing_key: '' @@ -201,5 +218,7 @@ matrix_mautrix_gmessages_registration_yaml: | - exclusive: true regex: '^@{{ matrix_mautrix_gmessages_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_gmessages_homeserver_domain | regex_escape }}$' de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_gmessages_msc4190_enabled | to_json }} matrix_mautrix_gmessages_registration: "{{ matrix_mautrix_gmessages_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/main.yml index 4ca9e19fe..df53f0892 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/main.yml @@ -1,3 +1,8 @@ +# SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - tags: diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_install.yml index 5a3e59f75..f1cb7af83 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_install.yml @@ -1,3 +1,10 @@ +# SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +# SPDX-FileCopyrightText: 2024 David Mehren +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - ansible.builtin.set_fact: @@ -33,8 +40,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_gmessages_base_path }}", when: true} - {path: "{{ matrix_mautrix_gmessages_config_path }}", when: true} @@ -61,7 +68,7 @@ version: "{{ matrix_mautrix_gmessages_container_image_self_build_branch }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_gmessages_git_pull_results when: "matrix_mautrix_gmessages_container_image_self_build | bool" @@ -115,16 +122,16 @@ content: "{{ matrix_mautrix_gmessages_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_gmessages_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-gmessages registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_gmessages_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_gmessages_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-mautrix-gmessages.service installed ansible.builtin.template: @@ -137,8 +144,8 @@ src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_gmessages_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_uninstall.yml index e324a523e..e0fae19e7 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_uninstall.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mautrix-gmessages service diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/validate_config.yml index 7f2510a1f..ddd142b72 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mautrix-gmessages 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_gmessages_appservice_token', when: true} - {'name': 'matrix_mautrix_gmessages_homeserver_address', when: true} @@ -18,10 +24,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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_mautrix_gmessages_log_level', 'new': 'matrix_mautrix_gmessages_logging_level'} - {'old': 'matrix_mautrix_gmessages_bridge_mute_bridging', 'new': ''} - {'old': 'matrix_mautrix_gmessages_login_shared_secret', 'new': ''} - {'old': 'matrix_mautrix_gmessages_bridge_login_shared_secret_map', 'new': 'matrix_mautrix_gmessages_double_puppet_secrets_custom'} + - {'old': 'matrix_mautrix_gmessages_docker_image_name_prefix', 'new': 'matrix_mautrix_gmessages_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/templates/config.yaml.j2 b/roles/custom/matrix-bridge-mautrix-gmessages/templates/config.yaml.j2 index 3fd39a78a..ae87f818d 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-gmessages/templates/config.yaml.j2 @@ -1,10 +1,7 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Network-specific config options network: # Displayname template for SMS users. - # {% raw %}{{.FullName}}{% endraw %} - Full name provided by the phone - # {% raw %}{{.FirstName}}{% endraw %} - First name provided by the phone - # {% raw %}{{.PhoneNumber}}{% endraw %} - Formatted phone number provided by the phone displayname_template: {{ matrix_mautrix_gmessages_network_displayname_template | to_json }} # Settings for how the bridge appears to the phone. device_meta: @@ -168,7 +165,7 @@ homeserver: # The bridge will use the appservice as_token to authorize requests. message_send_checkpoint_endpoint: # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? - async_media: false + async_media: {{ matrix_mautrix_gmessages_homeserver_async_media | to_json }} # Should the bridge use a websocket for connecting to the homeserver? # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, @@ -354,6 +351,14 @@ encryption: # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. # This option is not yet compatible with standard Matrix servers like Synapse and should not be used. appservice: {{ matrix_mautrix_gmessages_bridge_encryption_appservice | to_json }} + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_gmessages_msc4190_enabled | to_json }} + # Whether to enable self-signing for bridges (Only the bridge bot uses this for now) + # Requires msc4190 to replace keys on reset + self_sign: {{ matrix_mautrix_gmessages_self_sign_enabled | to_json }} # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # You must use a client that supports requesting keys from other users to use this feature. allow_key_sharing: {{ matrix_mautrix_gmessages_bridge_encryption_key_sharing_allow | to_json }} diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-gmessages/templates/config.yaml.j2.license new file mode 100644 index 000000000..fb1e93f66 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-gmessages/templates/config.yaml.j2.license @@ -0,0 +1,5 @@ +SPDX-FileCopyrightText: 2023 MDAD project contributors +SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-gmessages/templates/labels.j2 index 1beea2c1c..8dfe66067 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/templates/labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-gmessages/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_mautrix_gmessages_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/templates/systemd/matrix-mautrix-gmessages.service.j2 b/roles/custom/matrix-bridge-mautrix-gmessages/templates/systemd/matrix-mautrix-gmessages.service.j2 index f90597730..8c93be942 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/templates/systemd/matrix-mautrix-gmessages.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-gmessages/templates/systemd/matrix-mautrix-gmessages.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix gmessages bridge {% for service in matrix_mautrix_gmessages_systemd_required_services_list %} @@ -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-gmessages 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-gmessages 2>/dev/null || true' ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-gmessages 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ @@ -31,7 +31,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ {{ arg }} \ {% endfor %} {{ matrix_mautrix_gmessages_docker_image }} \ - /usr/bin/mautrix-gmessages -c /config/config.yaml -r /config/registration.yaml + /usr/bin/mautrix-gmessages -c /config/config.yaml -r /config/registration.yaml --no-update {% for network in matrix_mautrix_gmessages_container_additional_networks %} ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mautrix-gmessages @@ -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-gmessages -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-gmessages 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-gmessages 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-gmessages 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/templates/systemd/matrix-mautrix-gmessages.service.j2.license b/roles/custom/matrix-bridge-mautrix-gmessages/templates/systemd/matrix-mautrix-gmessages.service.j2.license new file mode 100644 index 000000000..90f8a2544 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-gmessages/templates/systemd/matrix-mautrix-gmessages.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2023 Shreyas Ajjarapu + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-googlechat/defaults/main.yml index f9ff35681..ee0eb4748 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-googlechat/defaults/main.yml @@ -1,3 +1,14 @@ +# SPDX-FileCopyrightText: 2021 - 2024 MDAD project contributors +# SPDX-FileCopyrightText: 2021 Aaron Raimist +# SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 László Várady +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2022 Ruben Hias +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- # mautrix-googlechat is a Matrix <-> googlechat bridge # Project source code URL: https://github.com/mautrix/googlechat @@ -11,8 +22,10 @@ matrix_mautrix_googlechat_container_image_self_build_repo_version: "{{ 'master' # renovate: datasource=docker depName=dock.mau.dev/mautrix/googlechat matrix_mautrix_googlechat_version: v0.5.2 # See: https://mau.dev/mautrix/googlechat/container_registry -matrix_mautrix_googlechat_docker_image: "{{ matrix_mautrix_googlechat_docker_image_name_prefix }}mautrix/googlechat:{{ matrix_mautrix_googlechat_version }}" -matrix_mautrix_googlechat_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_googlechat_container_image_self_build else 'dock.mau.dev/' }}" +matrix_mautrix_googlechat_docker_image: "{{ matrix_mautrix_googlechat_docker_image_registry_prefix }}mautrix/googlechat:{{ matrix_mautrix_googlechat_version }}" +matrix_mautrix_googlechat_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_googlechat_container_image_self_build else matrix_mautrix_googlechat_docker_image_registry_prefix_upstream }}" +matrix_mautrix_googlechat_docker_image_registry_prefix_upstream: "{{ matrix_mautrix_googlechat_docker_image_registry_prefix_upstream_default }}" +matrix_mautrix_googlechat_docker_image_registry_prefix_upstream_default: "dock.mau.dev/" matrix_mautrix_googlechat_docker_image_force_pull: "{{ matrix_mautrix_googlechat_docker_image.endswith(':latest') }}" matrix_mautrix_googlechat_base_path: "{{ matrix_base_data_path }}/mautrix-googlechat" @@ -186,6 +199,7 @@ matrix_mautrix_googlechat_registration_yaml: | sender_localpart: _bot_{{ matrix_mautrix_googlechat_appservice_bot_username }} rate_limited: false de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true matrix_mautrix_googlechat_registration: "{{ matrix_mautrix_googlechat_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/main.yml index be11089b7..3cdc701da 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/tasks/main.yml +++ b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/main.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# 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-mautrix-googlechat/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_install.yml index 6d8adebf4..84b3ffcc5 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_install.yml @@ -1,3 +1,13 @@ +# SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# 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: @@ -44,8 +54,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_googlechat_base_path }}", when: true} - {path: "{{ matrix_mautrix_googlechat_config_path }}", when: true} @@ -60,7 +70,7 @@ dest: "{{ matrix_mautrix_googlechat_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_googlechat_git_pull_results when: "matrix_mautrix_googlechat_container_image_self_build | bool" @@ -102,24 +112,24 @@ content: "{{ matrix_mautrix_googlechat_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_googlechat_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-googlechat registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_googlechat_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_googlechat_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-googlechat support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_googlechat_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_uninstall.yml index 12b486308..412a08847 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_uninstall.yml +++ b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_uninstall.yml @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Check existence of matrix-mautrix-googlechat service diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/validate_config.yml index 9c8e79d1e..ea1359c35 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/validate_config.yml @@ -1,10 +1,17 @@ +# SPDX-FileCopyrightText: 2021 MDAD project contributors +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required mautrix-googlechat 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_googlechat_public_endpoint', when: true} - {'name': 'matrix_mautrix_googlechat_appservice_token', when: true} @@ -16,3 +23,12 @@ - {'name': 'matrix_mautrix_googlechat_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_googlechat_metrics_proxying_enabled }}"} - {'name': 'matrix_mautrix_googlechat_container_labels_public_endpoint_hostname', when: "{{ matrix_mautrix_googlechat_container_labels_public_endpoint_enabled }}"} - {'name': 'matrix_mautrix_googlechat_container_labels_public_endpoint_path_prefix', when: "{{ matrix_mautrix_googlechat_container_labels_public_endpoint_enabled }}"} + +- name: (Deprecation) Catch and report renamed mautrix-googlechat variables + ansible.builtin.fail: + msg: >- + Your configuration contains a variable, which now has a different name. + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_mautrix_googlechat_docker_image_name_prefix', 'new': 'matrix_mautrix_googlechat_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/templates/config.yaml.j2 b/roles/custom/matrix-bridge-mautrix-googlechat/templates/config.yaml.j2 index e7ee4394f..83b13f6cf 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-googlechat/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Homeserver details homeserver: # The address that this appservice can use to connect to the homeserver. diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-mautrix-googlechat/templates/config.yaml.j2.license new file mode 100644 index 000000000..0e41586c5 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-googlechat/templates/config.yaml.j2.license @@ -0,0 +1,6 @@ +SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors +SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev +SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +SPDX-FileCopyrightText: 2022 László Várady + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-googlechat/templates/labels.j2 index 8f35f5c51..567dc2958 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/templates/labels.j2 +++ b/roles/custom/matrix-bridge-mautrix-googlechat/templates/labels.j2 @@ -1,3 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + {% if matrix_mautrix_googlechat_container_labels_traefik_enabled %} traefik.enable=true diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/templates/systemd/matrix-mautrix-googlechat.service.j2 b/roles/custom/matrix-bridge-mautrix-googlechat/templates/systemd/matrix-mautrix-googlechat.service.j2 index 50cd131a4..ee156134c 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/templates/systemd/matrix-mautrix-googlechat.service.j2 +++ b/roles/custom/matrix-bridge-mautrix-googlechat/templates/systemd/matrix-mautrix-googlechat.service.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix googlechat bridge {% for service in matrix_mautrix_googlechat_systemd_required_services_list %} @@ -13,6 +13,8 @@ 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-mautrix-googlechat 2>/dev/null || true' +ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-googlechat 2>/dev/null || true' ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ --rm \ @@ -39,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-googlechat -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-googlechat 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-googlechat 2>/dev/null || true' ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-googlechat 2>/dev/null || true' Restart=always RestartSec=30 diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/templates/systemd/matrix-mautrix-googlechat.service.j2.license b/roles/custom/matrix-bridge-mautrix-googlechat/templates/systemd/matrix-mautrix-googlechat.service.j2.license new file mode 100644 index 000000000..f91d0b692 --- /dev/null +++ b/roles/custom/matrix-bridge-mautrix-googlechat/templates/systemd/matrix-mautrix-googlechat.service.j2.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2021 MDAD project contributors +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-mautrix-instagram/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-instagram/defaults/main.yml deleted file mode 100644 index 566a01bb5..000000000 --- a/roles/custom/matrix-bridge-mautrix-instagram/defaults/main.yml +++ /dev/null @@ -1,178 +0,0 @@ ---- -# mautrix-instagram is a Matrix <-> Instagram bridge -# Project source code URL: https://github.com/mautrix/instagram - -matrix_mautrix_instagram_enabled: true - -matrix_mautrix_instagram_container_image_self_build: false -matrix_mautrix_instagram_container_image_self_build_repo: "https://github.com/mautrix/instagram.git" -matrix_mautrix_instagram_container_image_self_build_repo_version: "{{ 'master' if matrix_mautrix_instagram_version == 'latest' else matrix_mautrix_instagram_version }}" - -# renovate: datasource=docker depName=dock.mau.dev/mautrix/instagram -matrix_mautrix_instagram_version: v0.3.1 -# See: https://mau.dev/tulir/mautrix-instagram/container_registry -matrix_mautrix_instagram_docker_image: "{{ matrix_mautrix_instagram_docker_image_name_prefix }}mautrix/instagram:{{ matrix_mautrix_instagram_version }}" -matrix_mautrix_instagram_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_instagram_container_image_self_build else 'dock.mau.dev/' }}" -matrix_mautrix_instagram_docker_image_force_pull: "{{ matrix_mautrix_instagram_docker_image.endswith(':latest') }}" - -matrix_mautrix_instagram_base_path: "{{ matrix_base_data_path }}/mautrix-instagram" -matrix_mautrix_instagram_config_path: "{{ matrix_mautrix_instagram_base_path }}/config" -matrix_mautrix_instagram_data_path: "{{ matrix_mautrix_instagram_base_path }}/data" -matrix_mautrix_instagram_docker_src_files_path: "{{ matrix_mautrix_instagram_base_path }}/docker-src" - -matrix_mautrix_instagram_homeserver_address: "" -matrix_mautrix_instagram_homeserver_domain: '{{ matrix_domain }}' -matrix_mautrix_instagram_appservice_address: 'http://matrix-mautrix-instagram:29330' - -matrix_mautrix_instagram_command_prefix: "!ig" - -matrix_mautrix_instagram_bridge_permissions: | - {{ - {'*': 'relay', matrix_mautrix_instagram_homeserver_domain: 'user'} - | combine({matrix_admin: 'admin'} if matrix_admin else {}) - }} - -matrix_mautrix_instagram_container_network: "" - -matrix_mautrix_instagram_container_additional_networks: "{{ matrix_mautrix_instagram_container_additional_networks_auto + matrix_mautrix_instagram_container_additional_networks_custom }}" -matrix_mautrix_instagram_container_additional_networks_auto: [] -matrix_mautrix_instagram_container_additional_networks_custom: [] - -# matrix_mautrix_instagram_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_mautrix_instagram_container_labels_additional_labels`. -matrix_mautrix_instagram_container_labels_traefik_enabled: true -matrix_mautrix_instagram_container_labels_traefik_docker_network: "{{ matrix_mautrix_instagram_container_network }}" -matrix_mautrix_instagram_container_labels_traefik_entrypoints: web-secure -matrix_mautrix_instagram_container_labels_traefik_tls_certResolver: default # noqa var-naming - -# Controls whether labels will be added that expose mautrix-instagram's metrics -matrix_mautrix_instagram_container_labels_metrics_enabled: "{{ matrix_mautrix_instagram_metrics_enabled and matrix_mautrix_instagram_metrics_proxying_enabled }}" -matrix_mautrix_instagram_container_labels_metrics_traefik_rule: "Host(`{{ matrix_mautrix_instagram_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_mautrix_instagram_metrics_proxying_path_prefix }}`)" -matrix_mautrix_instagram_container_labels_metrics_traefik_priority: 0 -matrix_mautrix_instagram_container_labels_metrics_traefik_entrypoints: "{{ matrix_mautrix_instagram_container_labels_traefik_entrypoints }}" -matrix_mautrix_instagram_container_labels_metrics_traefik_tls: "{{ matrix_mautrix_instagram_container_labels_metrics_traefik_entrypoints != 'web' }}" -matrix_mautrix_instagram_container_labels_metrics_traefik_tls_certResolver: "{{ matrix_mautrix_instagram_container_labels_traefik_tls_certResolver }}" # noqa var-naming -matrix_mautrix_instagram_container_labels_metrics_middleware_basic_auth_enabled: false -# See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users -matrix_mautrix_instagram_container_labels_metrics_middleware_basic_auth_users: '' - -# matrix_mautrix_instagram_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_mautrix_instagram_container_labels_additional_labels: | -# my.label=1 -# another.label="here" -matrix_mautrix_instagram_container_labels_additional_labels: '' - -# A list of extra arguments to pass to the container -matrix_mautrix_instagram_container_extra_arguments: [] - -# List of systemd services that matrix-mautrix-instagram.service depends on. -matrix_mautrix_instagram_systemd_required_services_list: "{{ matrix_mautrix_instagram_systemd_required_services_list_default + matrix_mautrix_instagram_systemd_required_services_list_auto + matrix_mautrix_instagram_systemd_required_services_list_custom }}" -matrix_mautrix_instagram_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_mautrix_instagram_systemd_required_services_list_auto: [] -matrix_mautrix_instagram_systemd_required_services_list_custom: [] - -# List of systemd services that matrix-mautrix-instagram.service wants -matrix_mautrix_instagram_systemd_wanted_services_list: [] - -matrix_mautrix_instagram_appservice_token: '' -matrix_mautrix_instagram_homeserver_token: '' - -# Whether or not created rooms should have federation enabled. -# If false, created portal rooms will never be federated. -matrix_mautrix_instagram_federate_rooms: true - -# Whether or not metrics endpoint should be enabled. -# Enabling them is usually enough for a local (in-container) Prometheus to consume them. -# If metrics need to be consumed by another (external) Prometheus server, consider exposing them via `matrix_mautrix_instagram_metrics_proxying_enabled`. -matrix_mautrix_instagram_metrics_enabled: false - -# Controls whether metrics should be exposed on a public URL. -matrix_mautrix_instagram_metrics_proxying_enabled: false -matrix_mautrix_instagram_metrics_proxying_hostname: '' -matrix_mautrix_instagram_metrics_proxying_path_prefix: '' - -# Database-related configuration fields. -# -# To use Postgres: -# - adjust your database credentials via the `matrix_mautrix_instagram_database_*` variables -matrix_mautrix_instagram_database_engine: 'postgres' - -matrix_mautrix_instagram_database_username: 'matrix_mautrix_instagram' -matrix_mautrix_instagram_database_password: 'some-password' -matrix_mautrix_instagram_database_hostname: '' -matrix_mautrix_instagram_database_port: 5432 -matrix_mautrix_instagram_database_name: 'matrix_mautrix_instagram' - -matrix_mautrix_instagram_database_connection_string: 'postgres://{{ matrix_mautrix_instagram_database_username }}:{{ matrix_mautrix_instagram_database_password }}@{{ matrix_mautrix_instagram_database_hostname }}:{{ matrix_mautrix_instagram_database_port }}/{{ matrix_mautrix_instagram_database_name }}' - -matrix_mautrix_instagram_appservice_database: "{{ - { - 'postgres': matrix_mautrix_instagram_database_connection_string, - }[matrix_mautrix_instagram_database_engine] -}}" - - -# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth). -matrix_mautrix_instagram_login_shared_secret: '' - -matrix_mautrix_instagram_bridge_login_shared_secret_map: "{{ {matrix_mautrix_instagram_homeserver_domain: matrix_mautrix_instagram_login_shared_secret} if matrix_mautrix_instagram_login_shared_secret else {} }}" - -# Enable bridge relay bot functionality -matrix_mautrix_instagram_relay_enabled: "{{ matrix_bridges_relay_enabled }}" - -matrix_mautrix_instagram_appservice_bot_username: instagrambot - -matrix_mautrix_instagram_bridge_presence: true - -# Specifies the default log level for all bridge loggers. -matrix_mautrix_instagram_logging_level: WARNING - -# Default configuration template which covers the generic use case. -# You can customize it by controlling the various variables inside it. -# -# For a more advanced customization, you can extend the default (see `matrix_mautrix_instagram_configuration_extension_yaml`) -# or completely replace this variable with your own template. -matrix_mautrix_instagram_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" - -matrix_mautrix_instagram_configuration_extension_yaml: | - # Your custom YAML configuration goes here. - # This configuration extends the default starting configuration (`matrix_mautrix_instagram_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_mautrix_instagram_configuration_yaml`. - -matrix_mautrix_instagram_configuration_extension: "{{ matrix_mautrix_instagram_configuration_extension_yaml | from_yaml if matrix_mautrix_instagram_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_instagram_configuration_yaml`. -matrix_mautrix_instagram_configuration: "{{ matrix_mautrix_instagram_configuration_yaml | from_yaml | combine(matrix_mautrix_instagram_configuration_extension, recursive=True) }}" - -matrix_mautrix_instagram_registration_yaml: | - id: instagram - as_token: "{{ matrix_mautrix_instagram_appservice_token }}" - hs_token: "{{ matrix_mautrix_instagram_homeserver_token }}" - namespaces: - users: - - exclusive: true - regex: '^@instagram_.+:{{ matrix_mautrix_instagram_homeserver_domain | regex_escape }}$' - - exclusive: true - regex: '^@{{ matrix_mautrix_instagram_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_instagram_homeserver_domain | regex_escape }}$' - url: {{ matrix_mautrix_instagram_appservice_address }} - # See https://github.com/mautrix/signal/issues/43 - sender_localpart: _bot_{{ matrix_mautrix_instagram_appservice_bot_username }} - rate_limited: false - de.sorunome.msc2409.push_ephemeral: true - -matrix_mautrix_instagram_registration: "{{ matrix_mautrix_instagram_registration_yaml | from_yaml }}" - -# Enable End-to-bridge encryption -matrix_mautrix_instagram_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" -matrix_mautrix_instagram_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}" -matrix_mautrix_instagram_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_instagram_bridge_encryption_allow }}" diff --git a/roles/custom/matrix-bridge-mautrix-instagram/tasks/main.yml b/roles/custom/matrix-bridge-mautrix-instagram/tasks/main.yml deleted file mode 100644 index a9c63922c..000000000 --- a/roles/custom/matrix-bridge-mautrix-instagram/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- tags: - - setup-all - - setup-mautrix-instagram - - install-all - - install-mautrix-instagram - block: - - when: matrix_mautrix_instagram_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_mautrix_instagram_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-mautrix-instagram - block: - - when: not matrix_mautrix_instagram_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" diff --git a/roles/custom/matrix-bridge-mautrix-instagram/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-instagram/tasks/setup_install.yml deleted file mode 100644 index f355edc3b..000000000 --- a/roles/custom/matrix-bridge-mautrix-instagram/tasks/setup_install.yml +++ /dev/null @@ -1,89 +0,0 @@ ---- - -- name: Ensure Mautrix instagram image is pulled - community.docker.docker_image: - name: "{{ matrix_mautrix_instagram_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_mautrix_instagram_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_mautrix_instagram_docker_image_force_pull }}" - when: not matrix_mautrix_instagram_container_image_self_build - register: result - retries: "{{ devture_playbook_help_container_retries_count }}" - delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed - -- name: Ensure Mautrix instagram paths exist - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_mautrix_instagram_base_path }}", when: true} - - {path: "{{ matrix_mautrix_instagram_config_path }}", when: true} - - {path: "{{ matrix_mautrix_instagram_data_path }}", when: true} - - {path: "{{ matrix_mautrix_instagram_docker_src_files_path }}", when: "{{ matrix_mautrix_instagram_container_image_self_build }}"} - when: item.when | bool - -- name: Ensure Mautrix instagram repository is present on self-build - ansible.builtin.git: - repo: "{{ matrix_mautrix_instagram_container_image_self_build_repo }}" - version: "{{ matrix_mautrix_instagram_container_image_self_build_repo_version }}" - dest: "{{ matrix_mautrix_instagram_docker_src_files_path }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_mautrix_instagram_git_pull_results - when: "matrix_mautrix_instagram_container_image_self_build | bool" - -- name: Ensure Mautrix instagram Docker image is built - community.docker.docker_image: - name: "{{ matrix_mautrix_instagram_docker_image }}" - source: build - force_source: "{{ matrix_mautrix_instagram_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_instagram_git_pull_results.changed }}" - build: - dockerfile: Dockerfile - path: "{{ matrix_mautrix_instagram_docker_src_files_path }}" - pull: true - when: "matrix_mautrix_instagram_container_image_self_build | bool" - -- name: Ensure mautrix-instagram config.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mautrix_instagram_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mautrix_instagram_config_path }}/config.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mautrix-instagram registration.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mautrix_instagram_registration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mautrix_instagram_config_path }}/registration.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mautrix-instagram support files installed - ansible.builtin.template: - src: "{{ role_path }}/templates/{{ item }}.j2" - dest: "{{ matrix_mautrix_instagram_base_path }}/{{ item }}" - mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - labels - -- name: Ensure matrix-mautrix-instagram container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_mautrix_instagram_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-mautrix-instagram.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-mautrix-instagram.service.j2" - dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-instagram.service" - mode: 0644 diff --git a/roles/custom/matrix-bridge-mautrix-instagram/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-mautrix-instagram/tasks/setup_uninstall.yml deleted file mode 100644 index 6ac0f6d52..000000000 --- a/roles/custom/matrix-bridge-mautrix-instagram/tasks/setup_uninstall.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -- name: Check existence of matrix-mautrix-instagram service - ansible.builtin.stat: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-instagram.service" - register: matrix_mautrix_instagram_service_stat - -- when: matrix_mautrix_instagram_service_stat.stat.exists | bool - block: - - name: Ensure matrix-mautrix-instagram is stopped - ansible.builtin.service: - name: matrix-mautrix-instagram - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-mautrix-instagram.service doesn't exist - ansible.builtin.file: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-instagram.service" - state: absent diff --git a/roles/custom/matrix-bridge-mautrix-instagram/tasks/validate_config.yml b/roles/custom/matrix-bridge-mautrix-instagram/tasks/validate_config.yml deleted file mode 100644 index 1a0c1cda7..000000000 --- a/roles/custom/matrix-bridge-mautrix-instagram/tasks/validate_config.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -- name: Fail if required mautrix-instagram 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_mautrix_instagram_appservice_token', when: true} - - {'name': 'matrix_mautrix_instagram_homeserver_address', when: true} - - {'name': 'matrix_mautrix_instagram_homeserver_token', when: true} - - {'name': 'matrix_mautrix_instagram_container_network', when: true} - - {'name': 'matrix_mautrix_instagram_database_hostname', when: "{{ matrix_mautrix_instagram_database_engine == 'postgres' }}"} - - {'name': 'matrix_mautrix_instagram_metrics_proxying_hostname', when: "{{ matrix_mautrix_instagram_metrics_proxying_enabled }}"} - - {'name': 'matrix_mautrix_instagram_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_instagram_metrics_proxying_enabled }}"} diff --git a/roles/custom/matrix-bridge-mautrix-instagram/templates/config.yaml.j2 b/roles/custom/matrix-bridge-mautrix-instagram/templates/config.yaml.j2 deleted file mode 100644 index d200ebcd6..000000000 --- a/roles/custom/matrix-bridge-mautrix-instagram/templates/config.yaml.j2 +++ /dev/null @@ -1,244 +0,0 @@ -#jinja2: lstrip_blocks: "True" -# Homeserver details -homeserver: - # The address that this appservice can use to connect to the homeserver. - address: {{ matrix_mautrix_instagram_homeserver_address }} - # The domain of the homeserver (for MXIDs, etc). - domain: {{ matrix_mautrix_instagram_homeserver_domain }} - # Whether or not to verify the SSL certificate of the homeserver. - # Only applies if address starts with https:// - verify_ssl: true - # Whether or not the homeserver supports asmux-specific endpoints, - # such as /_matrix/client/unstable/net.maunium.asmux/dms for atomically - # updating m.direct. - asmux: false - -# Application service host/registration related details -# Changing these values requires regeneration of the registration. -appservice: - # The address that the homeserver can use to connect to this appservice. - address: {{ matrix_mautrix_instagram_appservice_address }} - # When using https:// the TLS certificate and key files for the address. - tls_cert: false - tls_key: false - - # The hostname and port where this appservice should listen. - hostname: 0.0.0.0 - port: 29330 - # The maximum body size of appservice API requests (from the homeserver) in mebibytes - # Usually 1 is enough, but on high-traffic bridges you might need to increase this to avoid 413s - max_body_size: 1 - - # The full URI to the database. Only Postgres is currently supported. - database: {{ matrix_mautrix_instagram_appservice_database|to_json }} - # Additional arguments for asyncpg.create_pool() - # https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool - database_opts: - min_size: 5 - max_size: 10 - - # The unique ID of this appservice. - id: instagram - # Username of the appservice bot. - bot_username: {{ matrix_mautrix_instagram_appservice_bot_username|to_json }} - # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty - # to leave display name/avatar as-is. - bot_displayname: Instagram bridge bot - bot_avatar: mxc://maunium.net/JxjlbZUlCPULEeHZSwleUXQv - - # Whether or not to receive ephemeral events via appservice transactions. - # Requires MSC2409 support (i.e. Synapse 1.22+). - # You should disable bridge -> sync_with_custom_puppets when this is enabled. - ephemeral_events: false - - # Authentication tokens for AS <-> HS communication. - as_token: "{{ matrix_mautrix_instagram_appservice_token }}" - hs_token: "{{ matrix_mautrix_instagram_homeserver_token }}" - -# Prometheus telemetry config. Requires prometheus-client to be installed. -metrics: - enabled: {{ matrix_mautrix_instagram_metrics_enabled | to_json }} - listen_port: 8000 - -instagram: - # Seed for generating devices. This is secret because the seed is used to generate - # device IDs, which can apparently be used to bypass two-factor authentication after - # logging out, because Instagram is insecure. - device_seed: generate - -# Bridge config -bridge: - # Localpart template of MXIDs for Instagram users. - # {userid} is replaced with the user ID of the Instagram user. - username_template: "instagram_{userid}" - # Displayname template for Instagram users. - # {displayname} is replaced with the display name of the Instagram user. - # {username} is replaced with the username of the Instagram user. - displayname_template: "{username} (Instagram)" - - # Maximum length of displayname - displayname_max_length: 100 - - # Maximum number of seconds since the last activity in a chat to automatically create portals. - portal_create_max_age: 86400 - # Maximum number of chats to fetch for startup sync - chat_sync_limit: 100 - # Whether or not to use /sync to get read receipts and typing notifications - # when double puppeting is enabled - sync_with_custom_puppets: true - # Whether or not to update the m.direct account data event when double puppeting is enabled. - # Note that updating the m.direct event is not atomic (except with mautrix-asmux) - # and is therefore prone to race conditions. - sync_direct_chat_list: false - # Allow using double puppeting from any server with a valid client .well-known file. - double_puppet_allow_discovery: false - # Servers to allow double puppeting from, even if double_puppet_allow_discovery is false. - double_puppet_server_map: {} - # example.com: https://example.com - # Allow using double puppeting from any server with a valid client .well-known file. - double_puppet_allow_discovery: false - # Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth - # - # If set, custom puppets will be enabled automatically for local users - # instead of users having to find an access token and run `login-matrix` - # manually. - # If using this for other servers than the bridge's server, - # you must also set the URL in the double_puppet_server_map. - login_shared_secret_map: - {{ matrix_mautrix_instagram_bridge_login_shared_secret_map|to_json }} - # Whether or not to update avatars when syncing all contacts at startup. - update_avatar_initial_sync: true - # Whether or not created rooms should have federation enabled. - # If false, created portal rooms will never be federated. - federate_rooms: {{ matrix_mautrix_instagram_federate_rooms|to_json }} - # Settings for backfilling messages from Instagram. - backfill: - # Whether or not the Instagram users of logged in Matrix users should be - # invited to private chats when backfilling history from Instagram. This is - # usually needed to prevent rate limits and to allow timestamp massaging. - invite_own_puppet: true - # Maximum number of messages to backfill initially. - # Set to 0 to disable backfilling when creating portal. - initial_limit: 0 - # Maximum number of messages to backfill if messages were missed while - # the bridge was disconnected. - # Set to 0 to disable backfilling missed messages. - missed_limit: 1000 - # If using double puppeting, should notifications be disabled - # while the initial backfill is in progress? - disable_notifications: false - periodic_reconnect: - # Interval in seconds in which to automatically reconnect all users. - # This can be used to automatically mitigate the bug where Instagram stops sending messages. - # Set to -1 to disable periodic reconnections entirely. - interval: -1 - # Whether or not the bridge should backfill chats when reconnecting. - resync: true - # Should even disconnected users be reconnected? - always: false - # End-to-bridge encryption support options. These require matrix-nio to be installed with pip - # and login_shared_secret to be configured in order to get a device for the bridge bot. - # - # Additionally, https://github.com/matrix-org/synapse/pull/5758 is required if using a normal - # application service. - encryption: - # Allow encryption, work in group chat rooms with e2ee enabled - allow: {{ matrix_mautrix_instagram_bridge_encryption_allow|to_json }} - # Default to encryption, force-enable encryption in all portals the bridge creates - # This will cause the bridge bot to be in private chats for the encryption to work properly. - default: {{ matrix_mautrix_instagram_bridge_encryption_default|to_json }} - # Options for automatic key sharing. - key_sharing: - # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. - # You must use a client that supports requesting keys from other users to use this feature. - allow: {{ matrix_mautrix_instagram_bridge_encryption_key_sharing_allow|to_json }} - # Require the requesting device to have a valid cross-signing signature? - # This doesn't require that the bridge has verified the device, only that the user has verified it. - # Not yet implemented. - require_cross_signing: false - # Require devices to be verified by the bridge? - # Verification by the bridge is not yet implemented. - require_verification: true - # Whether or not to explicitly set the avatar and room name for private - # chat portal rooms. This will be implicitly enabled if encryption.default is true. - private_chat_portal_meta: false - # Whether or not the bridge should send a read receipt from the bridge bot when a message has - # been sent to Instagram. - delivery_receipts: false - # Whether or not delivery errors should be reported as messages in the Matrix room. - delivery_error_reports: true - # Set this to true to tell the bridge to re-send m.bridge events to all rooms on the next run. - # This field will automatically be changed back to false after it, - # except if the config file is not writable. - resend_bridge_info: false - # Whether or not unimportant bridge notices should be sent to the user. - # (e.g. connected, disconnected but will retry) - unimportant_bridge_notices: true - - # The prefix for commands. Only required in non-management rooms. - command_prefix: "{{ matrix_mautrix_instagram_command_prefix }}" - # Permissions for using the bridge. - # Permitted values: - # user - Use the bridge with puppeting. - # admin - Use and administrate the bridge. - # Permitted keys: - # * - All Matrix users - # domain - All users on that homeserver - # mxid - Specific user - permissions: {{ matrix_mautrix_instagram_bridge_permissions|to_json }} - # Provisioning API part of the web server for automated portal creation and fetching information. - # Used by things like mautrix-manager (https://github.com/tulir/mautrix-manager). - provisioning: - # Whether or not the provisioning API should be enabled. - enabled: true - # The prefix to use in the provisioning API endpoints. - prefix: /_matrix/provision/v1 - # The shared secret to authorize users of the API. - # Set to "generate" to generate and save a new token. - shared_secret: generate - relay: - # Whether relay mode should be allowed. If allowed, `!ig set-relay` can be used to turn any - # authenticated user into a relaybot for that chat. - enabled: {{ matrix_mautrix_instagram_relay_enabled }} - # The formats to use when sending messages to Instagram via a relay user. - # - # Available variables: - # $sender_displayname - The display name of the sender (e.g. Example User) - # $sender_username - The username (Matrix ID localpart) of the sender (e.g. alice) - # $sender_mxid - The Matrix ID of the sender (e.g. @alice:example.com) - # $message - The message content - # - # Note that Instagram doesn't support captions for images, so images won't include any indication of being relayed. - message_formats: - m.text: '$sender_displayname: $message' - m.notice: '$sender_displayname: $message' - m.emote: '* $sender_displayname $message' - -# Python logging configuration. -# -# See section 16.7.2 of the Python documentation for more info: -# https://docs.python.org/3.6/library/logging.config.html#configuration-dictionary-schema -logging: - version: 1 - formatters: - colored: - (): mautrix_instagram.util.ColorFormatter - format: "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s" - normal: - format: "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s" - handlers: - console: - class: logging.StreamHandler - formatter: colored - loggers: - mau: - level: {{ matrix_mautrix_instagram_logging_level|to_json }} - mauigpapi: - level: {{ matrix_mautrix_instagram_logging_level|to_json }} - paho: - level: {{ matrix_mautrix_instagram_logging_level|to_json }} - aiohttp: - level: {{ matrix_mautrix_instagram_logging_level|to_json }} - root: - level: {{ matrix_mautrix_instagram_logging_level|to_json }} - handlers: [console] diff --git a/roles/custom/matrix-bridge-mautrix-instagram/templates/labels.j2 b/roles/custom/matrix-bridge-mautrix-instagram/templates/labels.j2 deleted file mode 100644 index c67f2264d..000000000 --- a/roles/custom/matrix-bridge-mautrix-instagram/templates/labels.j2 +++ /dev/null @@ -1,46 +0,0 @@ -{% if matrix_mautrix_instagram_container_labels_traefik_enabled %} -traefik.enable=true - -{% if matrix_mautrix_instagram_container_labels_traefik_docker_network %} -traefik.docker.network={{ matrix_mautrix_instagram_container_labels_traefik_docker_network }} -{% endif %} - -traefik.http.services.matrix-mautrix-instagram-metrics.loadbalancer.server.port=8000 - -{% if matrix_mautrix_instagram_container_labels_metrics_enabled %} -############################################################ -# # -# Metrics # -# # -############################################################ - -{% if matrix_mautrix_instagram_container_labels_metrics_middleware_basic_auth_enabled %} -traefik.http.middlewares.matrix-mautrix-instagram-metrics-basic-auth.basicauth.users={{ matrix_mautrix_instagram_container_labels_metrics_middleware_basic_auth_users }} -traefik.http.routers.matrix-mautrix-instagram-metrics.middlewares=matrix-mautrix-instagram-metrics-basic-auth -{% endif %} - -traefik.http.routers.matrix-mautrix-instagram-metrics.rule={{ matrix_mautrix_instagram_container_labels_metrics_traefik_rule }} - -{% if matrix_mautrix_instagram_container_labels_metrics_traefik_priority | int > 0 %} -traefik.http.routers.matrix-mautrix-instagram-metrics.priority={{ matrix_mautrix_instagram_container_labels_metrics_traefik_priority }} -{% endif %} - -traefik.http.routers.matrix-mautrix-instagram-metrics.service=matrix-mautrix-instagram-metrics -traefik.http.routers.matrix-mautrix-instagram-metrics.entrypoints={{ matrix_mautrix_instagram_container_labels_metrics_traefik_entrypoints }} - -traefik.http.routers.matrix-mautrix-instagram-metrics.tls={{ matrix_mautrix_instagram_container_labels_metrics_traefik_tls | to_json }} -{% if matrix_mautrix_instagram_container_labels_metrics_traefik_tls %} -traefik.http.routers.matrix-mautrix-instagram-metrics.tls.certResolver={{ matrix_mautrix_instagram_container_labels_metrics_traefik_tls_certResolver }} -{% endif %} - -############################################################ -# # -# /Metrics # -# # -############################################################ -{% endif %} - - -{% endif %} - -{{ matrix_mautrix_instagram_container_labels_additional_labels }} diff --git a/roles/custom/matrix-bridge-mautrix-instagram/templates/systemd/matrix-mautrix-instagram.service.j2 b/roles/custom/matrix-bridge-mautrix-instagram/templates/systemd/matrix-mautrix-instagram.service.j2 deleted file mode 100644 index e8e6e0f51..000000000 --- a/roles/custom/matrix-bridge-mautrix-instagram/templates/systemd/matrix-mautrix-instagram.service.j2 +++ /dev/null @@ -1,48 +0,0 @@ -#jinja2: lstrip_blocks: "True" -[Unit] -Description=Matrix Mautrix Instagram bridge -{% for service in matrix_mautrix_instagram_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_mautrix_instagram_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-instagram 2>/dev/null || true' -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-instagram 2>/dev/null || true' - -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ - --rm \ - --name=matrix-mautrix-instagram \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --network={{ matrix_mautrix_instagram_container_network }} \ - --mount type=bind,src={{ matrix_mautrix_instagram_config_path }},dst=/config \ - --mount type=bind,src={{ matrix_mautrix_instagram_data_path }},dst=/data \ - --label-file={{ matrix_mautrix_instagram_base_path }}/labels \ - {% for arg in matrix_mautrix_instagram_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_mautrix_instagram_docker_image }} \ - python3 -m mautrix_instagram -c /config/config.yaml --no-update - -{% for network in matrix_mautrix_instagram_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mautrix-instagram -{% endfor %} - -ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-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-mautrix-instagram 2>/dev/null || true' -ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-instagram 2>/dev/null || true' -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-mautrix-instagram - -[Install] -WantedBy=multi-user.target diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/README.md b/roles/custom/matrix-bridge-mautrix-meta-instagram/README.md index 41e9d77d9..a8755d41a 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/README.md +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/README.md @@ -1,3 +1,9 @@ + + # 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..8e7633c68 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.2512.0 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') }}" @@ -107,6 +116,9 @@ matrix_mautrix_meta_instagram_database_sslmode: disable matrix_mautrix_meta_instagram_database_connection_string: 'postgres://{{ matrix_mautrix_meta_instagram_database_username }}:{{ matrix_mautrix_meta_instagram_database_password }}@{{ matrix_mautrix_meta_instagram_database_hostname }}:{{ matrix_mautrix_meta_instagram_database_port }}/{{ matrix_mautrix_meta_instagram_database_name }}?sslmode={{ matrix_mautrix_meta_instagram_database_sslmode }}' matrix_mautrix_meta_instagram_homeserver_address: "" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_meta_instagram_homeserver_async_media: false matrix_mautrix_meta_instagram_homeserver_domain: '{{ matrix_domain }}' matrix_mautrix_meta_instagram_homeserver_token: '' @@ -114,6 +126,9 @@ matrix_mautrix_meta_instagram_appservice_address: "http://{{ matrix_mautrix_meta matrix_mautrix_meta_instagram_appservice_id: "{{ matrix_mautrix_meta_instagram_meta_mode }}" +matrix_mautrix_meta_instagram_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" +matrix_mautrix_meta_instagram_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" + # For Facebook/Messenger, we use the same `@messengerbot:example.com` username regardless of how bridging happens for multiple reasons: # - it's consistent - regardless of how bridging happens, the bridged service is actually Messenger # - it's easy for users - you may change the mode, but the bot is always at `@messengerbot:example.com` @@ -288,5 +303,7 @@ matrix_mautrix_meta_instagram_registration_yaml: | sender_localpart: _bot_{{ matrix_mautrix_meta_instagram_appservice_username }} rate_limited: false de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_meta_instagram_msc4190_enabled | to_json }} matrix_mautrix_meta_instagram_registration: "{{ matrix_mautrix_meta_instagram_registration_yaml | from_yaml }}" 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..c70949ccd 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: @@ -44,8 +49,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_meta_instagram_base_path }}", when: true} - {path: "{{ matrix_mautrix_meta_instagram_config_path }}", when: true} @@ -62,7 +67,7 @@ version: "{{ matrix_mautrix_meta_instagram_container_image.split(':')[1] }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_meta_instagram_git_pull_results - name: Ensure mautrix-meta-instagram container image is built @@ -81,24 +86,24 @@ content: "{{ matrix_mautrix_meta_instagram_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_meta_instagram_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-meta-instagram registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_meta_instagram_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_meta_instagram_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-meta-instagram support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_meta_instagram_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels 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..6df63b15c 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,10 +1,15 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_meta_instagram_metrics_proxying_hostname', when: "{{ matrix_mautrix_meta_instagram_metrics_proxying_enabled }}"} - {'name': 'matrix_mautrix_meta_instagram_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_meta_instagram_metrics_proxying_enabled }}"} @@ -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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_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 b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/config.yaml.j2 index e905b1771..968d4eda9 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Network-specific config options network: # Which service is this bridge for? Available options: @@ -181,7 +181,7 @@ homeserver: # The bridge will use the appservice as_token to authorize requests. message_send_checkpoint_endpoint: # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? - async_media: false + async_media: {{ matrix_mautrix_meta_instagram_homeserver_async_media | to_json }} # Should the bridge use a websocket for connecting to the homeserver? # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, @@ -212,7 +212,7 @@ appservice: username: {{ matrix_mautrix_meta_instagram_appservice_username | to_json }} # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty # to leave display name/avatar as-is. - displayname: {{ matrix_mautrix_meta_instagram_appservice_displayname | to_json }} + displayname: {{ matrix_mautrix_meta_instagram_appservice_displayname | to_json(ensure_ascii=False) }} avatar: {{ matrix_mautrix_meta_instagram_appservice_avatar | to_json }} # Whether to receive ephemeral events via appservice transactions. @@ -367,6 +367,14 @@ encryption: # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. # This option is not yet compatible with standard Matrix servers like Synapse and should not be used. appservice: {{ matrix_mautrix_meta_instagram_bridge_encryption_appservice | to_json }} + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_meta_instagram_msc4190_enabled | to_json }} + # Whether to enable self-signing for bridges (Only the bridge bot uses this for now) + # Requires msc4190 to replace keys on reset + self_sign: {{ matrix_mautrix_meta_instagram_self_sign_enabled | to_json }} # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # You must use a client that supports requesting keys from other users to use this feature. allow_key_sharing: {{ matrix_mautrix_meta_instagram_bridge_encryption_allow_key_sharing | to_json }} 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..e9fc2eccb 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=mautrix-meta bridge ({{ matrix_mautrix_meta_instagram_identifier }}) {% for service in matrix_mautrix_meta_instagram_systemd_required_services_list %} @@ -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..b73fe8be1 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.2512.0 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') }}" @@ -108,12 +117,18 @@ matrix_mautrix_meta_messenger_database_connection_string: 'postgres://{{ matrix_ matrix_mautrix_meta_messenger_homeserver_address: "" matrix_mautrix_meta_messenger_homeserver_domain: '{{ matrix_domain }}' +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_meta_messenger_homeserver_async_media: false matrix_mautrix_meta_messenger_homeserver_token: '' matrix_mautrix_meta_messenger_appservice_address: "http://{{ matrix_mautrix_meta_messenger_identifier }}:29319" matrix_mautrix_meta_messenger_appservice_id: "{{ matrix_mautrix_meta_messenger_meta_mode }}" +matrix_mautrix_meta_messenger_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" +matrix_mautrix_meta_messenger_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" + # For Facebook/Messenger, we use the same `@messengerbot:example.com` username regardless of how bridging happens for multiple reasons: # - it's consistent - regardless of how bridging happens, the bridged service is actually Messenger # - it's easy for users - you may change the mode, but the bot is always at `@messengerbot:example.com` @@ -288,5 +303,7 @@ matrix_mautrix_meta_messenger_registration_yaml: | sender_localpart: _bot_{{ matrix_mautrix_meta_messenger_appservice_username }} rate_limited: false de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_meta_messenger_msc4190_enabled | to_json }} matrix_mautrix_meta_messenger_registration: "{{ matrix_mautrix_meta_messenger_registration_yaml | from_yaml }}" 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..80235cc3a 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: @@ -44,8 +49,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_meta_messenger_base_path }}", when: true} - {path: "{{ matrix_mautrix_meta_messenger_config_path }}", when: true} @@ -62,7 +67,7 @@ version: "{{ matrix_mautrix_meta_messenger_container_image.split(':')[1] }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_meta_messenger_git_pull_results - name: Ensure mautrix-meta-messenger container image is built @@ -81,24 +86,24 @@ content: "{{ matrix_mautrix_meta_messenger_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_meta_messenger_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-meta-messenger registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_meta_messenger_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_meta_messenger_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-meta-messenger support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_meta_messenger_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels 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..5a005f1e2 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,10 +1,15 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_meta_messenger_metrics_proxying_hostname', when: "{{ matrix_mautrix_meta_messenger_metrics_proxying_enabled }}"} - {'name': 'matrix_mautrix_meta_messenger_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_meta_messenger_metrics_proxying_enabled }}"} @@ -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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_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 b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2 index b5f9404b3..2af47d5f8 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Network-specific config options network: # Which service is this bridge for? Available options: @@ -181,7 +181,7 @@ homeserver: # The bridge will use the appservice as_token to authorize requests. message_send_checkpoint_endpoint: # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? - async_media: false + async_media: {{ matrix_mautrix_meta_messenger_homeserver_async_media | to_json }} # Should the bridge use a websocket for connecting to the homeserver? # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, @@ -212,7 +212,7 @@ appservice: username: {{ matrix_mautrix_meta_messenger_appservice_username | to_json }} # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty # to leave display name/avatar as-is. - displayname: {{ matrix_mautrix_meta_messenger_appservice_displayname | to_json }} + displayname: {{ matrix_mautrix_meta_messenger_appservice_displayname | to_json(ensure_ascii=False) }} avatar: {{ matrix_mautrix_meta_messenger_appservice_avatar | to_json }} # Whether to receive ephemeral events via appservice transactions. @@ -367,6 +367,14 @@ encryption: # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. # This option is not yet compatible with standard Matrix servers like Synapse and should not be used. appservice: {{ matrix_mautrix_meta_messenger_bridge_encryption_appservice | to_json }} + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_meta_messenger_msc4190_enabled | to_json }} + # Whether to enable self-signing for bridges (Only the bridge bot uses this for now) + # Requires msc4190 to replace keys on reset + self_sign: {{ matrix_mautrix_meta_messenger_self_sign_enabled | to_json }} # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # You must use a client that supports requesting keys from other users to use this feature. allow_key_sharing: {{ matrix_mautrix_meta_messenger_bridge_encryption_allow_key_sharing | to_json }} 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..adf8a9c4e 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=mautrix-meta bridge ({{ matrix_mautrix_meta_messenger_identifier }}) {% for service in matrix_mautrix_meta_messenger_systemd_required_services_list %} @@ -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 f4e754a41..3da4008f9 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.2512.0 # 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" @@ -24,10 +42,27 @@ matrix_mautrix_signal_docker_src_files_path: "{{ matrix_mautrix_signal_base_path matrix_mautrix_signal_homeserver_address: "" matrix_mautrix_signal_homeserver_domain: "{{ matrix_domain }}" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_signal_homeserver_async_media: false matrix_mautrix_signal_appservice_address: "http://matrix-mautrix-signal:8080" +matrix_mautrix_signal_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" +matrix_mautrix_signal_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" + +matrix_mautrix_signal_extev_polls: false + matrix_mautrix_signal_command_prefix: "!signal" +# Displayname template for Signal users. +# {{.ProfileName}} - The Signal profile name set by the user. +# {{.ContactName}} - The name for the user from your phone's contact list. This is not safe on multi-user instances. +# {{.Nickname}} - The nickname set for the user in the native Signal app. This is not safe on multi-user instances. +# {{.PhoneNumber}} - The phone number of the user. +# {{.UUID}} - The UUID of the Signal user. +# {{.AboutEmoji}} - The emoji set by the user in their profile. +matrix_mautrix_signal_network_displayname_template: '{% raw %}{{or .ProfileName .PhoneNumber "Unknown user"}} (Signal){% endraw %}' + matrix_mautrix_signal_bridge_permissions: | {{ {'*': 'relay', matrix_mautrix_signal_homeserver_domain: 'user'} @@ -192,6 +227,8 @@ matrix_mautrix_signal_registration_yaml: | - exclusive: true regex: '^@{{ matrix_mautrix_signal_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_signal_homeserver_domain | regex_escape }}$' de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_signal_msc4190_enabled | to_json }} matrix_mautrix_signal_registration: "{{ matrix_mautrix_signal_registration_yaml | from_yaml }}" 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..82ef8229a 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: @@ -33,8 +45,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_signal_base_path }}", when: true} - {path: "{{ matrix_mautrix_signal_config_path }}", when: true} @@ -61,7 +73,7 @@ version: "{{ matrix_mautrix_signal_container_image_self_build_branch }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_signal_git_pull_results when: "matrix_mautrix_signal_container_image_self_build | bool" @@ -115,24 +127,24 @@ content: "{{ matrix_mautrix_signal_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_signal_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-signal registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_signal_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_signal_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-signal support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_signal_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels 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..93d99763d 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-signal/tasks/validate_config.yml @@ -1,10 +1,18 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_signal_appservice_token', when: true} - {'name': 'matrix_mautrix_signal_homeserver_address', when: true} @@ -14,12 +22,12 @@ - {'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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_mautrix_signal_log_level', 'new': 'matrix_mautrix_signal_logging_level'} - {'old': 'matrix_mautrix_signal_bridge_restricted_rooms', 'new': ''} @@ -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 b/roles/custom/matrix-bridge-mautrix-signal/templates/config.yaml.j2 index e4af6d962..be9e4bbe1 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-signal/templates/config.yaml.j2 @@ -1,15 +1,8 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Network-specific config options network: # Displayname template for Signal users. - # {% raw %} - # {{.ProfileName}} - The Signal profile name set by the user. - # {{.ContactName}} - The name for the user from your phone's contact list. This is not safe on multi-user instances. - # {{.PhoneNumber}} - The phone number of the user. - # {{.UUID}} - The UUID of the Signal user. - # {{.AboutEmoji}} - The emoji set by the user in their profile. - # {% endraw %} - displayname_template: "{% raw %}{{or .ProfileName .PhoneNumber 'Unknown user'}} (Signal){% endraw %}" + displayname_template: {{ matrix_mautrix_signal_network_displayname_template | to_json }} # Should avatars from the user's contact list be used? This is not safe on multi-user instances. use_contact_avatars: false # Should the bridge request the user's contact list from the phone on startup? @@ -26,6 +19,8 @@ network: # Google Maps: 'https://www.google.com/maps/place/%[1]s,%[2]s' # OpenStreetMap: 'https://www.openstreetmap.org/?mlat=%[1]s&mlon=%[2]s' location_format: 'https://www.google.com/maps/place/%[1]s,%[2]s' + # Should polls be sent using unstable MSC3381 event types? + extev_polls: {{ matrix_mautrix_signal_extev_polls | to_json }} # Config options that affect the central bridge module. bridge: @@ -159,7 +154,7 @@ homeserver: # The bridge will use the appservice as_token to authorize requests. message_send_checkpoint_endpoint: null # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? - async_media: false + async_media: {{ matrix_mautrix_signal_homeserver_async_media | to_json }} # Should the bridge use a websocket for connecting to the homeserver? # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, @@ -334,6 +329,14 @@ encryption: # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. # This option is not yet compatible with standard Matrix servers like Synapse and should not be used. appservice: false + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_signal_msc4190_enabled | to_json }} + # Whether to enable self-signing for bridges (Only the bridge bot uses this for now) + # Requires msc4190 to replace keys on reset + self_sign: {{ matrix_mautrix_signal_self_sign_enabled | to_json }} # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # You must use a client that supports requesting keys from other users to use this feature. allow_key_sharing: {{ matrix_mautrix_signal_bridge_encryption_key_sharing_allow | to_json }} 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..4b06e8529 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix Signal bridge {% for service in matrix_mautrix_signal_systemd_required_services_list %} @@ -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 bf5ed4bd0..6a455935d 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.2511.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" @@ -22,8 +32,35 @@ matrix_mautrix_slack_docker_src_files_path: "{{ matrix_mautrix_slack_base_path } matrix_mautrix_slack_homeserver_address: "" matrix_mautrix_slack_homeserver_domain: "{{ matrix_domain }}" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_slack_homeserver_async_media: false matrix_mautrix_slack_appservice_address: "http://matrix-mautrix-slack:8080" +matrix_mautrix_slack_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" +matrix_mautrix_slack_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" + +# Displayname template for Slack users. Available variables: +# .Name - The username of the user +# .Team.Name - The name of the team the channel is in +# .Team.Domain - The Slack subdomain of the team the channel is in +# .ID - The internal ID of the user +# .IsBot - Whether the user is a bot +# .Profile.DisplayName - The username or real name of the user (depending on settings) +# Variables only available for users (not bots): +# .TeamID - The internal ID of the workspace the user is in +# .TZ - The timezone region of the user (e.g. Europe/London) +# .TZLabel - The label of the timezone of the user (e.g. Greenwich Mean Time) +# .TZOffset - The UTC offset of the timezone of the user (e.g. 0) +# .Profile.RealName - The real name of the user +# .Profile.FirstName - The first name of the user +# .Profile.LastName - The last name of the user +# .Profile.Title - The job title of the user +# .Profile.Pronouns - The pronouns of the user +# .Profile.Email - The email address of the user +# .Profile.Phone - The formatted phone number of the user +matrix_mautrix_slack_network_displayname_template: '{% raw %}{{or .Profile.DisplayName .Profile.RealName .Name}}{{if .IsBot}} (bot){{end}}{% endraw %}' + matrix_mautrix_slack_command_prefix: "!slack" matrix_mautrix_slack_bridge_permissions: | @@ -141,6 +178,8 @@ matrix_mautrix_slack_registration_yaml: | - exclusive: true regex: '^@{{ matrix_mautrix_slack_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_slack_homeserver_domain | regex_escape }}$' de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_slack_msc4190_enabled | to_json }} matrix_mautrix_slack_registration: "{{ matrix_mautrix_slack_registration_yaml | from_yaml }}" @@ -154,3 +193,12 @@ matrix_mautrix_slack_bridge_encryption_pickle_key: maunium.net/go/mautrix-whatsa matrix_mautrix_slack_provisioning_shared_secret: '' matrix_mautrix_slack_public_media_signing_key: '' + +# Controls whether relay mode is enabled +matrix_mautrix_slack_bridge_relay_enabled: "{{ matrix_bridges_relay_enabled }}" + +# Controls whether only admins can set themselves as relay users +matrix_mautrix_slack_bridge_relay_admin_only: true + +# List of user login IDs which anyone can set as a relay, as long as the relay user is in the room +matrix_mautrix_slack_bridge_relay_default_relays: [] 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..51aff979f 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: @@ -33,8 +39,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_slack_base_path }}", when: true} - {path: "{{ matrix_mautrix_slack_config_path }}", when: true} @@ -61,7 +67,7 @@ version: "{{ matrix_mautrix_slack_container_image_self_build_branch }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_slack_git_pull_results when: "matrix_mautrix_slack_container_image_self_build | bool" @@ -82,16 +88,16 @@ content: "{{ matrix_mautrix_slack_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_slack_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-slack registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_slack_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_slack_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-mautrix-slack container network is created community.general.docker_network: 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..0d3adfdec 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-slack/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_slack_appservice_token', when: true} - {'name': 'matrix_mautrix_slack_homeserver_address', when: true} @@ -16,18 +22,19 @@ when: matrix_appservice_slack_enabled | default(False) | bool and matrix_mautrix_slack_appservice_bot_username == matrix_appservice_slack_bot_name | default ('') ansible.builtin.fail: msg: | - The appservice-slack and mautrix-slack components are both enabled and use the same bot username ({{ matrix_mautrix_slack_appservice_bot_username }}), as per their default configuration, which causes a conflcit. + The appservice-slack and mautrix-slack components are both enabled and use the same bot username ({{ matrix_mautrix_slack_appservice_bot_username }}), as per their default configuration, which causes a conflict. To resolve the conflict, make one of these components use a different username. 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_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 b/roles/custom/matrix-bridge-mautrix-slack/templates/config.yaml.j2 index 5c02dd946..f2a2e8782 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-slack/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Network-specific config options network: # Displayname template for Slack users. Available variables: @@ -20,7 +20,7 @@ network: # .Profile.Pronouns - The pronouns of the user # .Profile.Email - The email address of the user # .Profile.Phone - The formatted phone number of the user - displayname_template: '{% raw %}{{or .Profile.DisplayName .Profile.RealName .Name}}{{if .IsBot}} (bot){{end}}{% endraw %}' + displayname_template: {{ matrix_mautrix_slack_network_displayname_template | to_json }} # Channel name template for Slack channels (all types). Available variables: # .Name - The name of the channel # .Team.Name - The name of the team the channel is in @@ -113,12 +113,12 @@ bridge: relay: # Whether relay mode should be allowed. If allowed, the set-relay command can be used to turn any # authenticated user into a relaybot for that chat. - enabled: false + enabled: {{ matrix_mautrix_slack_bridge_relay_enabled | to_json }} # Should only admins be allowed to set themselves as relay users? # If true, non-admins can only set users listed in default_relays as relays in a room. - admin_only: true + admin_only: {{ matrix_mautrix_slack_bridge_relay_admin_only | to_json }} # List of user login IDs which anyone can set as a relay, as long as the relay user is in the room. - default_relays: [] + default_relays: {{ matrix_mautrix_slack_bridge_relay_default_relays | to_json }} # The formats to use when sending messages via the relaybot. # Available variables: # .Sender.UserID - The Matrix user ID of the sender. @@ -197,7 +197,7 @@ homeserver: # The bridge will use the appservice as_token to authorize requests. message_send_checkpoint_endpoint: # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? - async_media: false + async_media: {{ matrix_mautrix_slack_homeserver_async_media | to_json }} # Should the bridge use a websocket for connecting to the homeserver? # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, @@ -371,6 +371,14 @@ encryption: # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. # This option is not yet compatible with standard Matrix servers like Synapse and should not be used. appservice: false + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_slack_msc4190_enabled | to_json }} + # Whether to enable self-signing for bridges (Only the bridge bot uses this for now) + # Requires msc4190 to replace keys on reset + self_sign: {{ matrix_mautrix_slack_self_sign_enabled | to_json }} # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # You must use a client that supports requesting keys from other users to use this feature. allow_key_sharing: {{ matrix_mautrix_slack_bridge_encryption_key_sharing_allow | to_json }} 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..ff2357791 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix Slack bridge {% for service in matrix_mautrix_slack_systemd_required_services_list %} @@ -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..5d19bab12 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" @@ -23,10 +41,12 @@ matrix_mautrix_telegram_docker_repo_version: "{{ 'master' if matrix_mautrix_tele matrix_mautrix_telegram_docker_src_files_path: "{{ matrix_base_data_path }}/mautrix-telegram/docker-src" # renovate: datasource=docker depName=dock.mau.dev/mautrix/telegram -matrix_mautrix_telegram_version: v0.15.2 +matrix_mautrix_telegram_version: v0.15.3 # 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" @@ -59,11 +79,16 @@ matrix_mautrix_telegram_public_endpoint: "{{ matrix_mautrix_telegram_path_prefix matrix_mautrix_telegram_homeserver_address: "" matrix_mautrix_telegram_homeserver_domain: '{{ matrix_domain }}' +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_telegram_homeserver_async_media: false matrix_mautrix_telegram_appservice_address: 'http://matrix-mautrix-telegram:8080' matrix_mautrix_telegram_appservice_public_external: '{{ matrix_mautrix_telegram_scheme }}://{{ matrix_mautrix_telegram_hostname }}{{ matrix_mautrix_telegram_public_endpoint }}' matrix_mautrix_telegram_appservice_bot_username: telegrambot +matrix_mautrix_telegram_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" + # Specifies the default log level for all bridge loggers. matrix_mautrix_telegram_logging_level: WARNING @@ -208,17 +233,19 @@ matrix_mautrix_telegram_registration_yaml: | namespaces: users: - exclusive: true - regex: '^@telegram_.+:{{ matrix_mautrix_telegram_homeserver_domain | regex_escape }}$' + regex: '^@{{ matrix_mautrix_telegram_username_template | replace('{userid}', '.+') }}:{{ matrix_mautrix_telegram_homeserver_domain | regex_escape }}$' - exclusive: true regex: '^@{{ matrix_mautrix_telegram_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_telegram_homeserver_domain | regex_escape }}$' aliases: - exclusive: true - regex: '^#telegram_.+:{{ matrix_mautrix_telegram_homeserver_domain | regex_escape }}$' + regex: '^#{{ matrix_mautrix_telegram_alias_template | replace('{groupname}', '.+') }}:{{ matrix_mautrix_telegram_homeserver_domain | regex_escape }}$' # See https://github.com/mautrix/signal/issues/43 sender_localpart: _bot_{{ matrix_mautrix_telegram_appservice_bot_username }} url: {{ matrix_mautrix_telegram_appservice_address }} rate_limited: false de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_telegram_msc4190_enabled | to_json }} matrix_mautrix_telegram_registration: "{{ matrix_mautrix_telegram_registration_yaml | from_yaml }}" 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..2b9113199 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: @@ -32,8 +49,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_telegram_base_path }}", when: true} - {path: "{{ matrix_mautrix_telegram_config_path }}", when: true} @@ -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" + become_user: "{{ matrix_user_name }}" + 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: @@ -83,7 +100,7 @@ dest: "{{ matrix_mautrix_telegram_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_telegram_git_pull_results when: "matrix_mautrix_telegram_container_image_self_build | bool" @@ -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" @@ -127,24 +144,24 @@ content: "{{ matrix_mautrix_telegram_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_telegram_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-telegram registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_telegram_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_telegram_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-telegram support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_telegram_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels 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..3a234223d 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-telegram/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_telegram_hostname', when: true} - {'name': 'matrix_mautrix_telegram_path_prefix', when: true} @@ -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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_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 b/roles/custom/matrix-bridge-mautrix-telegram/templates/config.yaml.j2 index 6cbd30130..f0b52729d 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-telegram/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Homeserver details homeserver: # The address that this appservice can use to connect to the homeserver. @@ -21,7 +21,7 @@ homeserver: message_send_checkpoint_endpoint: null # Whether asynchronous uploads via MSC2246 should be enabled for media. # Requires a media repo that supports MSC2246. - async_media: false + async_media: {{ matrix_mautrix_telegram_homeserver_async_media | to_json }} # Application service host/registration related details # Changing these values requires regeneration of the registration. @@ -269,6 +269,11 @@ bridge: default: {{ matrix_mautrix_telegram_bridge_encryption_default|to_json }} # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. appservice: false + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_telegram_msc4190_enabled | to_json }} # Require encryption, drop any unencrypted messages. require: false # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. 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..951343147 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix Telegram bridge {% for service in matrix_mautrix_telegram_systemd_required_services_list %} @@ -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 e79db967c..8f1000712 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.2511.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" @@ -21,12 +36,23 @@ matrix_mautrix_twitter_data_path: "{{ matrix_mautrix_twitter_base_path }}/data" matrix_mautrix_twitter_docker_src_files_path: "{{ matrix_mautrix_twitter_base_path }}/docker-src" matrix_mautrix_twitter_homeserver_address: "" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_twitter_homeserver_async_media: false matrix_mautrix_twitter_homeserver_domain: '{{ matrix_domain }}' matrix_mautrix_twitter_appservice_address: 'http://matrix-mautrix-twitter:29327' +matrix_mautrix_twitter_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" +matrix_mautrix_twitter_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" + # A public address that external services can use to reach this appservice. matrix_mautrix_twitter_appservice_public_address: '' +# Displayname template for Twitter users. +# {{ .DisplayName }} is replaced with the display name of the Twitter user. +# {{ .Username }} is replaced with the username of the Twitter user. +matrix_mautrix_twitter_network_displayname_template: "{% raw %}{{ .DisplayName }} (Twitter){% endraw %}" + matrix_mautrix_twitter_bridge_command_prefix: "!tw" matrix_mautrix_twitter_bridge_permissions: | @@ -181,6 +207,7 @@ matrix_mautrix_twitter_registration_yaml: | rate_limited: false de.sorunome.msc2409.push_ephemeral: true receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_twitter_msc4190_enabled | to_json }} matrix_mautrix_twitter_registration: "{{ matrix_mautrix_twitter_registration_yaml | from_yaml }}" 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..ccadf7ef2 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: @@ -20,8 +30,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_twitter_base_path }}", when: true} - {path: "{{ matrix_mautrix_twitter_config_path }}", when: true} @@ -36,7 +46,7 @@ dest: "{{ matrix_mautrix_twitter_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_twitter_git_pull_results when: "matrix_mautrix_twitter_enabled | bool and matrix_mautrix_twitter_container_image_self_build" @@ -56,24 +66,24 @@ content: "{{ matrix_mautrix_twitter_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_twitter_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-twitter registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_twitter_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_twitter_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-twitter support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_twitter_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels 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..94623c041 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-twitter/tasks/validate_config.yml @@ -1,10 +1,17 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_twitter_appservice_token', when: true} - {'name': 'matrix_mautrix_twitter_homeserver_address', when: true} @@ -18,8 +25,8 @@ 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_mautrix_twitter_login_shared_secret', 'new': ''} - {'old': 'matrix_mautrix_twitter_appservice_database', 'new': 'matrix_mautrix_twitter_database_uri'} @@ -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 b/roles/custom/matrix-bridge-mautrix-twitter/templates/config.yaml.j2 index 1a0b474f4..441f0ad41 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-twitter/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Network-specific config options network: # Proxy to use for all Twitter connections. @@ -7,11 +7,7 @@ network: get_proxy_url: null # Displayname template for Twitter users. - # {% raw %} - # {{ .DisplayName }} is replaced with the display name of the Twitter user. - # {{ .Username }} is replaced with the username of the Twitter user. - # {% endraw %} - displayname_template: "{% raw %}{{ .DisplayName }}{% endraw %} (Twitter)" + displayname_template: {{ matrix_mautrix_twitter_network_displayname_template | to_json }} # Maximum number of conversations to sync on startup conversation_sync_limit: 20 @@ -164,7 +160,7 @@ homeserver: # The bridge will use the appservice as_token to authorize requests. message_send_checkpoint_endpoint: # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? - async_media: false + async_media: {{ matrix_mautrix_twitter_homeserver_async_media | to_json }} # Should the bridge use a websocket for connecting to the homeserver? # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, @@ -199,7 +195,7 @@ appservice: username: {{ matrix_mautrix_twitter_appservice_bot_username | to_json }} # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty # to leave display name/avatar as-is. - displayname: {{ matrix_mautrix_twitter_appservice_bot_displayname | to_json }} + displayname: {{ matrix_mautrix_twitter_appservice_bot_displayname | to_json(ensure_ascii=False) }} avatar: {{ matrix_mautrix_twitter_appservice_bot_avatar | to_json }} # Whether to receive ephemeral events via appservice transactions. @@ -209,10 +205,6 @@ appservice: # However, messages will not be guaranteed to be bridged in the same order they were sent in. # This value doesn't affect the registration file. async_transactions: false - # Whether to use MSC4190 instead of appservice login to create the bridge bot device. - # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. - # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). - msc4190: false # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. as_token: {{ matrix_mautrix_twitter_appservice_token | to_json }} @@ -358,6 +350,14 @@ encryption: # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. # This option is not yet compatible with standard Matrix servers like Synapse and should not be used. appservice: {{ matrix_mautrix_twitter_bridge_encryption_appservice | to_json }} + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_twitter_msc4190_enabled | to_json }} + # Whether to enable self-signing for bridges (Only the bridge bot uses this for now) + # Requires msc4190 to replace keys on reset + self_sign: {{ matrix_mautrix_twitter_self_sign_enabled | to_json }} # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # You must use a client that supports requesting keys from other users to use this feature. allow_key_sharing: {{ matrix_mautrix_twitter_bridge_encryption_key_sharing_allow | to_json }} 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..eeccc209b 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix Twitter bridge {% for service in matrix_mautrix_twitter_systemd_required_services_list %} @@ -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 88b40dd81..faa655ddf 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.2512.0 # 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" @@ -23,8 +44,14 @@ matrix_mautrix_whatsapp_docker_src_files_path: "{{ matrix_mautrix_whatsapp_base_ matrix_mautrix_whatsapp_homeserver_address: "" matrix_mautrix_whatsapp_homeserver_domain: "{{ matrix_domain }}" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_mautrix_whatsapp_homeserver_async_media: false matrix_mautrix_whatsapp_appservice_address: "http://matrix-mautrix-whatsapp:8080" +matrix_mautrix_whatsapp_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" +matrix_mautrix_whatsapp_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" + matrix_mautrix_whatsapp_extev_polls: false matrix_mautrix_whatsapp_command_prefix: "!wa" @@ -138,6 +165,13 @@ matrix_mautrix_whatsapp_double_puppet_secrets: "{{ matrix_mautrix_whatsapp_doubl matrix_mautrix_whatsapp_double_puppet_secrets_auto: {} matrix_mautrix_whatsapp_double_puppet_secrets_custom: {} +# Displayname template for WhatsApp users. +# {{.PushName}} - nickname set by the WhatsApp user +# {{.BusinessName}} - validated WhatsApp business name +# {{.Phone}} - phone number (international format) +# {{.FullName}} - Name you set in the contacts list +matrix_mautrix_whatsapp_network_displayname_template: '{% raw %}{{or .BusinessName .PushName .Phone}} (WA){% endraw %}' + # Enable End-to-bridge encryption matrix_mautrix_whatsapp_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" matrix_mautrix_whatsapp_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}" @@ -203,10 +237,12 @@ matrix_mautrix_whatsapp_registration_yaml: | rate_limited: false namespaces: users: - - regex: '^@whatsapp_[0-9]+:{{ matrix_mautrix_whatsapp_homeserver_domain | regex_escape }}$' + - regex: '^@whatsapp_.*:{{ matrix_mautrix_whatsapp_homeserver_domain | regex_escape }}$' exclusive: true - exclusive: true regex: '^@{{ matrix_mautrix_whatsapp_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_whatsapp_homeserver_domain | regex_escape }}$' de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_mautrix_whatsapp_msc4190_enabled | to_json }} matrix_mautrix_whatsapp_registration: "{{ matrix_mautrix_whatsapp_registration_yaml | from_yaml }}" 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..7f85bc379 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: @@ -33,8 +50,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mautrix_whatsapp_base_path }}", when: true} - {path: "{{ matrix_mautrix_whatsapp_config_path }}", when: true} @@ -61,7 +78,7 @@ version: "{{ matrix_mautrix_whatsapp_container_image_self_build_branch }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mautrix_whatsapp_git_pull_results when: "matrix_mautrix_whatsapp_container_image_self_build | bool" @@ -115,24 +132,24 @@ content: "{{ matrix_mautrix_whatsapp_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_whatsapp_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-whatsapp registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mautrix_whatsapp_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mautrix_whatsapp_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-whatsapp support files installed ansible.builtin.template: src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_whatsapp_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - labels 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..ca5ef9458 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/validate_config.yml @@ -1,22 +1,30 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mautrix_whatsapp_appservice_token', when: true} - {'name': 'matrix_mautrix_whatsapp_homeserver_address', when: true} - {'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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_mautrix_whatsapp_log_level', 'new': 'matrix_mautrix_whatsapp_logging_level'} - {'old': 'matrix_mautrix_whatsapp_login_shared_secret', 'new': ''} @@ -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 b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/config.yaml.j2 index 832234832..91b3e801e 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Network-specific config options network: # Device name that's shown in the "WhatsApp Web" section in the mobile app. @@ -16,13 +16,7 @@ network: proxy_only_login: false # Displayname template for WhatsApp users. - # {% raw %} - # {{.PushName}} - nickname set by the WhatsApp user - # {{.BusinessName}} - validated WhatsApp business name - # {{.Phone}} - phone number (international format) - # {{.FullName}} - Name you set in the contacts list - # {% endraw %} - displayname_template: "{% raw %}{{or .BusinessName .PushName .Phone}} (WA){% endraw %}" + displayname_template: {{ matrix_mautrix_whatsapp_network_displayname_template | to_json }} # Should incoming calls send a message to the Matrix room? call_start_notices: true @@ -255,7 +249,7 @@ homeserver: # The bridge will use the appservice as_token to authorize requests. message_send_checkpoint_endpoint: # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? - async_media: false + async_media: {{ matrix_mautrix_whatsapp_homeserver_async_media | to_json }} # Should the bridge use a websocket for connecting to the homeserver? # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, @@ -445,6 +439,14 @@ encryption: # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. # This option is not yet compatible with standard Matrix servers like Synapse and should not be used. appservice: false + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_mautrix_whatsapp_msc4190_enabled | to_json }} + # Whether to enable self-signing for bridges (Only the bridge bot uses this for now) + # Requires msc4190 to replace keys on reset + self_sign: {{ matrix_mautrix_whatsapp_self_sign_enabled | to_json }} # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # You must use a client that supports requesting keys from other users to use this feature. allow_key_sharing: {{ matrix_mautrix_whatsapp_bridge_encryption_key_sharing_allow | to_json }} 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..c496cf33f 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix Whatsapp bridge {% for service in matrix_mautrix_whatsapp_systemd_required_services_list %} @@ -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 \ @@ -31,7 +31,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ {{ arg }} \ {% endfor %} {{ matrix_mautrix_whatsapp_docker_image }} \ - /usr/bin/mautrix-whatsapp -c /config/config.yaml -r /config/registration.yaml + /usr/bin/mautrix-whatsapp -c /config/config.yaml -r /config/registration.yaml --no-update {% for network in matrix_mautrix_whatsapp_container_additional_networks %} ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mautrix-whatsapp @@ -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..80c03a097 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. @@ -19,8 +26,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - path: "{{ matrix_mautrix_wsproxy_base_path }}" when: true @@ -31,8 +38,8 @@ src: "{{ role_path }}/templates/{{ item }}.j2" dest: "{{ matrix_mautrix_wsproxy_base_path }}/{{ item }}" mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - syncproxy-env - wsproxy-labels @@ -56,8 +63,8 @@ path: "{{ item }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - "{{ matrix_mautrix_wsproxy_base_path }}" - "{{ matrix_mautrix_wsproxy_config_path }}" @@ -69,27 +76,27 @@ - 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 }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - 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 }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - 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 }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mautrix-wsproxy container network is created community.general.docker_network: 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..8d0a4860a 100644 --- a/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-mautrix-wsproxy/tasks/validate_config.yml @@ -1,10 +1,15 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`). - when: "vars[item] == ''" + when: "lookup('vars', item, default='') == ''" with_items: - "matrix_mautrix_androidsms_appservice_token" - "matrix_mautrix_androidsms_homeserver_token" 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..c88d92517 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix wsproxy syncproxy {% for service in matrix_mautrix_wsproxy_syncproxy_systemd_required_services_list %} @@ -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..f49beae40 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mautrix wsproxy bridge {% for service in matrix_mautrix_wsproxy_systemd_required_services_list %} @@ -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 deleted file mode 100644 index faf1a770c..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-discord/defaults/main.yml +++ /dev/null @@ -1,129 +0,0 @@ ---- -# Mx Puppet Discord is a Matrix <-> Discord bridge -# Project source code URL: https://gitlab.com/mx-puppet/discord/mx-puppet-discord - -matrix_mx_puppet_discord_enabled: true - -matrix_mx_puppet_discord_container_image_self_build: false -matrix_mx_puppet_discord_container_image_self_build_repo: "https://gitlab.com/mx-puppet/discord/mx-puppet-discord.git" -matrix_mx_puppet_discord_container_image_self_build_version: "{{ 'main' if matrix_mx_puppet_discord_version == 'latest' else matrix_mx_puppet_discord_version }}" -matrix_mx_puppet_discord_container_image_self_build_dockerfile_path: "Dockerfile" - -# Controls whether the mx-puppet-discord container exposes its HTTP port (tcp/8432 in the container). -# -# Takes an ":" or "" value (e.g. "127.0.0.1:8432"), or empty string to not expose. -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_force_pull: "{{ matrix_mx_puppet_discord_docker_image.endswith(':latest') }}" - -matrix_mx_puppet_discord_base_path: "{{ matrix_base_data_path }}/mx-puppet-discord" -matrix_mx_puppet_discord_config_path: "{{ matrix_mx_puppet_discord_base_path }}/config" -matrix_mx_puppet_discord_data_path: "{{ matrix_mx_puppet_discord_base_path }}/data" -matrix_mx_puppet_discord_docker_src_files_path: "{{ matrix_mx_puppet_discord_base_path }}/docker-src" - -matrix_mx_puppet_discord_appservice_port: "8432" - -matrix_mx_puppet_discord_homeserver_address: "" -matrix_mx_puppet_discord_homeserver_domain: '{{ matrix_domain }}' -matrix_mx_puppet_discord_appservice_address: 'http://matrix-mx-puppet-discord:{{ matrix_mx_puppet_discord_appservice_port }}' - -matrix_mx_puppet_discord_bridge_mediaUrl: "{{ matrix_homeserver_url }}" # noqa var-naming - -# "@alice:example.com" to allow a specific user -# "@.*:example.com" to allow users on a specific homeserver -# "@.*" to allow anyone -matrix_mx_puppet_discord_provisioning_whitelist: - - "@.*:{{ matrix_domain | regex_escape }}" - -# Leave empty to disable blacklist -# "@bob:example.com" to disallow a specific user -# "@.*:example.com" to disallow users on a specific homeserver -matrix_mx_puppet_discord_provisioning_blacklist: [] - -matrix_mx_puppet_discord_container_network: "" - -matrix_mx_puppet_discord_container_additional_networks: "{{ matrix_mx_puppet_discord_container_additional_networks_auto + matrix_mx_puppet_discord_container_additional_networks_custom }}" -matrix_mx_puppet_discord_container_additional_networks_auto: [] -matrix_mx_puppet_discord_container_additional_networks_custom: [] - -# A list of extra arguments to pass to the container -matrix_mx_puppet_discord_container_extra_arguments: [] - -# List of systemd services that matrix-puppet-discord.service depends on. -matrix_mx_puppet_discord_systemd_required_services_list: "{{ matrix_mx_puppet_discord_systemd_required_services_list_default + matrix_mx_puppet_discord_systemd_required_services_list_auto + matrix_mx_puppet_discord_systemd_required_services_list_custom }}" -matrix_mx_puppet_discord_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_mx_puppet_discord_systemd_required_services_list_auto: [] -matrix_mx_puppet_discord_systemd_required_services_list_custom: [] - -# List of systemd services that matrix-puppet-discord.service wants -matrix_mx_puppet_discord_systemd_wanted_services_list: [] - -matrix_mx_puppet_discord_appservice_token: '' -matrix_mx_puppet_discord_homeserver_token: '' - -# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth). -matrix_mx_puppet_discord_login_shared_secret: '' - -matrix_mx_puppet_discord_presence_enabled: true -matrix_mx_puppet_discord_presence_interval: 5000 - -# Database configuration -matrix_mx_puppet_discord_database_engine: 'sqlite' - -matrix_mx_puppet_discord_sqlite_database_path_local: "{{ matrix_mx_puppet_discord_data_path }}/database.db" -matrix_mx_puppet_discord_sqlite_database_path_in_container: "/data/database.db" - -matrix_mx_puppet_discord_database_username: matrix_mx_puppet_discord -matrix_mx_puppet_discord_database_password: ~ -matrix_mx_puppet_discord_database_hostname: '' -matrix_mx_puppet_discord_database_port: 5432 -matrix_mx_puppet_discord_database_name: matrix_mx_puppet_discord -matrix_mx_puppet_discord_database_sslmode: disable - -matrix_mx_puppet_discord_database_connection_string: 'postgresql://{{ matrix_mx_puppet_discord_database_username }}:{{ matrix_mx_puppet_discord_database_password }}@{{ matrix_mx_puppet_discord_database_hostname }}:{{ matrix_mx_puppet_discord_database_port }}/{{ matrix_mx_puppet_discord_database_name }}?sslmode={{ matrix_mx_puppet_discord_database_sslmode }}' - -# Default configuration template which covers the generic use case. -# You can customize it by controlling the various variables inside it. -# -# For a more advanced customization, you can extend the default (see `matrix_mx_puppet_discord_configuration_extension_yaml`) -# or completely replace this variable with your own template. -matrix_mx_puppet_discord_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" - -matrix_mx_puppet_discord_configuration_extension_yaml: | - # Your custom YAML configuration goes here. - # This configuration extends the default starting configuration (`matrix_mx_puppet_discord_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_mx_puppet_discord_configuration_yaml`. - -matrix_mx_puppet_discord_configuration_extension: "{{ matrix_mx_puppet_discord_configuration_extension_yaml | from_yaml if matrix_mx_puppet_discord_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_mx_puppet_discord_configuration_yaml`. -matrix_mx_puppet_discord_configuration: "{{ matrix_mx_puppet_discord_configuration_yaml | from_yaml | combine(matrix_mx_puppet_discord_configuration_extension, recursive=True) }}" - -matrix_mx_puppet_discord_registration_yaml: | - as_token: "{{ matrix_mx_puppet_discord_appservice_token }}" - hs_token: "{{ matrix_mx_puppet_discord_homeserver_token }}" - id: discord-puppet - namespaces: - users: - - exclusive: true - regex: '@_discordpuppet_.*:{{ matrix_mx_puppet_discord_homeserver_domain | regex_escape }}' - rooms: [] - aliases: - - exclusive: true - regex: '#_discordpuppet_.*:{{ matrix_mx_puppet_discord_homeserver_domain | regex_escape }}' - protocols: [] - rate_limited: false - sender_localpart: _discordpuppet_bot - url: {{ matrix_mx_puppet_discord_appservice_address }} - de.sorunome.msc2409.push_ephemeral: true - -matrix_mx_puppet_discord_registration: "{{ matrix_mx_puppet_discord_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-discord/tasks/main.yml deleted file mode 100644 index c0300b513..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- tags: - - setup-all - - setup-mx-puppet-discord - - install-all - - install-mx-puppet-discord - block: - - when: matrix_mx_puppet_discord_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_mx_puppet_discord_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-mx-puppet-discord - block: - - when: not matrix_mx_puppet_discord_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" 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 deleted file mode 100644 index 5922c59c3..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_install.yml +++ /dev/null @@ -1,133 +0,0 @@ ---- - -- name: Ensure MX Puppet Discord paths exist - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_mx_puppet_discord_base_path }}", when: true} - - {path: "{{ matrix_mx_puppet_discord_config_path }}", when: true} - - {path: "{{ matrix_mx_puppet_discord_data_path }}", when: true} - - {path: "{{ matrix_mx_puppet_discord_docker_src_files_path }}", when: "{{ matrix_mx_puppet_discord_container_image_self_build }}"} - when: matrix_mx_puppet_discord_enabled | bool and item.when | bool - -- name: Check if an old database file already exists - ansible.builtin.stat: - path: "{{ matrix_mx_puppet_discord_base_path }}/database.db" - register: matrix_mx_puppet_discord_stat_database - -- when: "matrix_mx_puppet_discord_stat_database.stat.exists" - block: - - name: (Data relocation) Ensure matrix-mx-puppet-discord.service is stopped - ansible.builtin.service: - name: matrix-mx-puppet-discord - state: stopped - daemon_reload: true - failed_when: false - - - name: (Data relocation) Move mx-puppet-discord database file to ./data directory - ansible.builtin.command: - cmd: "mv {{ matrix_mx_puppet_discord_base_path }}/database.db {{ matrix_mx_puppet_discord_data_path }}/database.db" - register: matrix_mx_puppet_discord_relocate_database_result - changed_when: matrix_mx_puppet_discord_relocate_database_result.rc == 0 - -- ansible.builtin.set_fact: - matrix_mx_puppet_discord_requires_restart: false - -- when: "matrix_mx_puppet_discord_database_engine == 'postgres'" - block: - - name: Check if an SQLite database already exists - ansible.builtin.stat: - path: "{{ matrix_mx_puppet_discord_sqlite_database_path_local }}" - register: matrix_mx_puppet_discord_sqlite_database_path_local_stat_result - - - when: "matrix_mx_puppet_discord_sqlite_database_path_local_stat_result.stat.exists | bool" - block: - - ansible.builtin.include_role: - name: galaxy/postgres - tasks_from: migrate_db_to_postgres - vars: - postgres_db_migration_request: - src: "{{ matrix_mx_puppet_discord_sqlite_database_path_local }}" - dst: "{{ matrix_mx_puppet_discord_database_connection_string }}" - caller: "{{ role_path | basename }}" - engine_variable_name: 'matrix_mx_puppet_discord_database_engine' - engine_old: 'sqlite' - systemd_services_to_stop: ['matrix-mx-puppet-discord.service'] - - - ansible.builtin.set_fact: - matrix_mx_puppet_discord_requires_restart: true - -- name: Ensure MX Puppet Discord image is pulled - community.docker.docker_image: - name: "{{ matrix_mx_puppet_discord_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_mx_puppet_discord_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_mx_puppet_discord_docker_image_force_pull }}" - when: matrix_mx_puppet_discord_enabled | bool and not matrix_mx_puppet_discord_container_image_self_build - register: result - retries: "{{ devture_playbook_help_container_retries_count }}" - delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed - -- name: Ensure MX Puppet Discord repository is present on self build - ansible.builtin.git: - repo: "{{ matrix_mx_puppet_discord_container_image_self_build_repo }}" - dest: "{{ matrix_mx_puppet_discord_docker_src_files_path }}" - force: "yes" - version: "{{ matrix_mx_puppet_discord_container_image_self_build_version }}" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_mx_puppet_discord_git_pull_results - when: "matrix_mx_puppet_discord_enabled | bool and matrix_mx_puppet_discord_container_image_self_build" - -- name: Ensure MX Puppet Discord Docker image is built - community.docker.docker_image: - name: "{{ matrix_mx_puppet_discord_docker_image }}" - source: build - force_source: "{{ matrix_mx_puppet_discord_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_mx_puppet_discord_git_pull_results.changed }}" - build: - dockerfile: "{{ matrix_mx_puppet_discord_container_image_self_build_dockerfile_path }}" - path: "{{ matrix_mx_puppet_discord_docker_src_files_path }}" - pull: true - when: "matrix_mx_puppet_discord_enabled | bool and matrix_mx_puppet_discord_container_image_self_build | bool" - -- name: Ensure mx-puppet-discord config.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mx_puppet_discord_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mx_puppet_discord_config_path }}/config.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mx-puppet-discord discord-registration.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mx_puppet_discord_registration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mx_puppet_discord_config_path }}/registration.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mx-puppet-discord container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_mx_puppet_discord_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-mx-puppet-discord.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-discord.service.j2" - dest: "/etc/systemd/system/matrix-mx-puppet-discord.service" - mode: 0644 - -- name: Ensure matrix-mx-puppet-discord.service restarted, if necessary - ansible.builtin.service: - name: "matrix-mx-puppet-discord.service" - state: restarted - daemon_reload: true - when: "matrix_mx_puppet_discord_requires_restart | bool" 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 deleted file mode 100644 index c1ed9ec36..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_uninstall.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- name: Check existence of matrix-mx-puppet-discord service - ansible.builtin.stat: - path: "/etc/systemd/system/matrix-mx-puppet-discord.service" - register: matrix_mx_puppet_discord_service_stat - -- when: matrix_mx_puppet_discord_service_stat.stat.exists | bool - block: - - name: Ensure matrix-mx-puppet-discord is stopped - ansible.builtin.service: - name: matrix-mx-puppet-discord - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-mx-puppet-discord.service doesn't exist - ansible.builtin.file: - path: "/etc/systemd/system/matrix-mx-puppet-discord.service" - state: absent 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 deleted file mode 100644 index f5faa2333..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-discord/tasks/validate_config.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- - -- name: Fail if required mx-puppet-discord 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_mx_puppet_discord_appservice_token', when: true} - - {'name': 'matrix_mx_puppet_discord_homeserver_address', when: true} - - {'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} diff --git a/roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2 b/roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2 deleted file mode 100644 index 3db538127..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2 +++ /dev/null @@ -1,125 +0,0 @@ -#jinja2: lstrip_blocks: "True" -bridge: - # Port to host the bridge on - # Used for communication between the homeserver and the bridge - port: {{ matrix_mx_puppet_discord_appservice_port }} - # The host connections to the bridge's webserver are allowed from - bindAddress: 0.0.0.0 - # Public domain of the homeserver - domain: {{ matrix_mx_puppet_discord_homeserver_domain }} - # Reachable URL of the Matrix homeserver - homeserverUrl: {{ matrix_mx_puppet_discord_homeserver_address }} - # Optionally specify a different media URL used for the media store - # - # This is where Discord will download user profile pictures and media - # from - mediaUrl: {{ matrix_mx_puppet_discord_bridge_mediaUrl }} - {% if matrix_mx_puppet_discord_login_shared_secret != '' %} - loginSharedSecretMap: - {{ matrix_domain }}: {{ matrix_mx_puppet_discord_login_shared_secret }} - {% endif %} - # Display name of the bridge bot - displayname: Discord Puppet Bridge - -presence: - # Bridge Discord online/offline status - enabled: {{ matrix_mx_puppet_discord_presence_enabled | to_json }} - # How often to send status to the homeserver in milliseconds - interval: {{ matrix_mx_puppet_discord_presence_interval | to_json }} - -provisioning: - # Regex of Matrix IDs allowed to use the puppet bridge - whitelist: {{ matrix_mx_puppet_discord_provisioning_whitelist|to_json }} - # Allow a specific user - #- "@alice:example\\.com" - # Allow users on a specific homeserver - #- "@.*:example\\.com" - # Allow anyone - #- ".*" - # Regex of Matrix IDs forbidden from using the puppet bridge - #blacklist: - # Disallow a specific user - #- "@bob:example\\.com" - # Disallow users on a specific homeserver - #- "@.*:example\\.com" - blacklist: {{ matrix_mx_puppet_discord_provisioning_blacklist|to_json }} - -relay: - # Regex of Matrix IDs who are allowed to use the bridge in relay mode. - # Relay mode is when a single Discord bot account relays messages of - # multiple Matrix users - # - # Same format as in provisioning - whitelist: {{ matrix_mx_puppet_discord_provisioning_whitelist|to_json }} - blacklist: {{ matrix_mx_puppet_discord_provisioning_blacklist|to_json }} - -selfService: - # Regex of Matrix IDs who are allowed to use bridge self-servicing (plumbed rooms) - # - # Same format as in provisioning - whitelist: {{ matrix_mx_puppet_discord_provisioning_whitelist|to_json }} - blacklist: {{ matrix_mx_puppet_discord_provisioning_blacklist|to_json }} - -# Override the default name patterns for users, rooms and groups -# -# Variable names must be prefixed with a ':' -namePatterns: - # The default displayname for a bridged user - # - # Available variables: - # - # name: username of the user - # discriminator: hashtag of the user (ex. #1234) - user: :name - - # A user's guild-specific displayname - if they've set a custom nick in - # a guild - # - # Available variables: - # - # name: username of the user - # discriminator: hashtag of the user (ex. #1234) - # displayname: the user's custom group-specific nick - # channel: the name of the channel - # guild: the name of the guild - userOverride: :name - - # Room names for bridged Discord channels - # - # Available variables: - # - # name: name of the channel - # guild: name of the guild - room: :name - - # Group names for bridged Discord servers - # - # Available variables: - # - # name: name of the guide - group: :name - -database: -{% if matrix_mx_puppet_discord_database_engine == 'sqlite' %} - # Use SQLite3 as a database backend - # The name of the database file - filename: {{ matrix_mx_puppet_discord_sqlite_database_path_in_container|to_json }} -{% else %} - # Use Postgres as a database backend - # If set, will be used instead of SQLite3 - # Connection string to connect to the Postgres instance - # with username "user", password "pass", host "localhost" and database name "dbname". - # Modify each value as necessary - connString: {{ matrix_mx_puppet_discord_database_connection_string|to_json }} -{% endif %} - -logging: - # Log level of console output - # Allowed values starting with most verbose: - # silly, debug, verbose, info, warn, error - console: warn - # Date and time formatting - lineDateFormat: MMM-D HH:mm:ss.SSS - # Logging files - # Log files are rotated daily by default - files: [] 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 deleted file mode 100644 index 55efcfba4..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2 +++ /dev/null @@ -1,48 +0,0 @@ -#jinja2: lstrip_blocks: "True" -[Unit] -Description=Matrix Mx Puppet Discord bridge -{% for service in matrix_mx_puppet_discord_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_mx_puppet_discord_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --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 }} rm matrix-mx-puppet-discord 2>/dev/null || true' - -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ - --rm \ - --name=matrix-mx-puppet-discord \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --network={{ matrix_mx_puppet_discord_container_network }} \ - -e CONFIG_PATH=/config/config.yaml \ - -e REGISTRATION_PATH=/config/registration.yaml \ - --mount type=bind,src={{ matrix_mx_puppet_discord_config_path }},dst=/config \ - --mount type=bind,src={{ matrix_mx_puppet_discord_data_path }},dst=/data \ - {% for arg in matrix_mx_puppet_discord_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_mx_puppet_discord_docker_image }} - -{% for network in matrix_mx_puppet_discord_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mx-puppet-discord -{% endfor %} - -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 }} rm matrix-mx-puppet-discord 2>/dev/null || true' -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-mx-puppet-discord - -[Install] -WantedBy=multi-user.target 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..5a58f5be9 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" @@ -120,5 +133,6 @@ matrix_mx_puppet_groupme_registration_yaml: | sender_localpart: _groupmepuppet_bot url: {{ matrix_mx_puppet_groupme_appservice_address }} de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true matrix_mx_puppet_groupme_registration: "{{ matrix_mx_puppet_groupme_registration_yaml | from_yaml }}" 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..746471321 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 @@ -5,8 +15,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mx_puppet_groupme_base_path }}", when: true} - {path: "{{ matrix_mx_puppet_groupme_config_path }}", when: true} @@ -81,7 +91,7 @@ dest: "{{ matrix_mx_puppet_groupme_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mx_puppet_groupme_git_pull_results when: "matrix_mx_puppet_groupme_enabled | bool and matrix_mx_puppet_groupme_container_image_self_build" @@ -102,16 +112,16 @@ content: "{{ matrix_mx_puppet_groupme_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mx_puppet_groupme_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mx-puppet-groupme groupme-registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mx_puppet_groupme_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mx_puppet_groupme_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mx-puppet-groupme container network is created community.general.docker_network: 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..b1647db23 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,13 +1,26 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mx_puppet_groupme_appservice_token', when: true} - {'name': 'matrix_mx_puppet_groupme_homeserver_address', when: true} - {'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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + 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 b/roles/custom/matrix-bridge-mx-puppet-groupme/templates/config.yaml.j2 index c3237513d..eddc714e3 100644 --- a/roles/custom/matrix-bridge-mx-puppet-groupme/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True bridge: # Port to host the bridge on # Used for communication between the homeserver and the bridge 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..68fb27490 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mx Puppet Groupme bridge {% for service in matrix_mx_puppet_groupme_systemd_required_services_list %} @@ -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 deleted file mode 100644 index 168c4a3b3..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/defaults/main.yml +++ /dev/null @@ -1,119 +0,0 @@ ---- -# mx-puppet-instagram bridges instagram DMs -# Project source code URL: https://github.com/Sorunome/mx-puppet-instagram - -matrix_mx_puppet_instagram_enabled: true - -matrix_mx_puppet_instagram_container_image_self_build: false -matrix_mx_puppet_instagram_container_image_self_build_repo: "https://github.com/Sorunome/mx-puppet-instagram.git" -matrix_mx_puppet_instagram_container_image_self_build_repo_version: "{{ 'master' if matrix_mx_puppet_instagram_version == 'latest' else matrix_mx_puppet_instagram_version }}" - -# 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_force_pull: "{{ matrix_mx_puppet_instagram_docker_image.endswith(':latest') }}" - -matrix_mx_puppet_instagram_base_path: "{{ matrix_base_data_path }}/mx-puppet-instagram" -matrix_mx_puppet_instagram_config_path: "{{ matrix_mx_puppet_instagram_base_path }}/config" -matrix_mx_puppet_instagram_data_path: "{{ matrix_mx_puppet_instagram_base_path }}/data" -matrix_mx_puppet_instagram_docker_src_files_path: "{{ matrix_mx_puppet_instagram_base_path }}/docker-src" - -matrix_mx_puppet_instagram_appservice_port: "8440" -matrix_mx_puppet_instagram_homeserver_address: "" -matrix_mx_puppet_instagram_homeserver_domain: '{{ matrix_domain }}' -matrix_mx_puppet_instagram_appservice_address: 'http://matrix-mx-puppet-instagram:{{ matrix_mx_puppet_instagram_appservice_port }}' - -# "@alice:example.com" to allow a specific user -# "@.*:example.com" to allow users on a specific homeserver -# "@.*" to allow anyone -matrix_mx_puppet_instagram_provisioning_whitelist: - - "@.*:{{ matrix_domain | regex_escape }}" - -# Leave empty to disable blacklist -# "@bob:example.com" to disallow a specific user -# "@.*:example.com" to disallow users on a specific homeserver -matrix_mx_puppet_instagram_provisioning_blacklist: [] - -matrix_mx_puppet_instagram_container_network: "" - -matrix_mx_puppet_instagram_container_additional_networks: "{{ matrix_mx_puppet_instagram_container_additional_networks_auto + matrix_mx_puppet_instagram_container_additional_networks_custom }}" -matrix_mx_puppet_instagram_container_additional_networks_auto: [] -matrix_mx_puppet_instagram_container_additional_networks_custom: [] - -# A list of extra arguments to pass to the container -matrix_mx_puppet_instagram_container_extra_arguments: [] - -# List of systemd services that matrix-puppet-instagram.service depends on. -matrix_mx_puppet_instagram_systemd_required_services_list: "{{ matrix_mx_puppet_instagram_systemd_required_services_list_default + matrix_mx_puppet_instagram_systemd_required_services_list_auto + matrix_mx_puppet_instagram_systemd_required_services_list_custom }}" -matrix_mx_puppet_instagram_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_mx_puppet_instagram_systemd_required_services_list_auto: [] -matrix_mx_puppet_instagram_systemd_required_services_list_custom: [] - -# List of systemd services that matrix-puppet-instagram.service wants -matrix_mx_puppet_instagram_systemd_wanted_services_list: [] - -matrix_mx_puppet_instagram_appservice_token: '' -matrix_mx_puppet_instagram_homeserver_token: '' - -# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth). -matrix_mx_puppet_instagram_login_shared_secret: '' - -matrix_mx_puppet_instagram_presence_enabled: true -matrix_mx_puppet_instagram_presence_interval: 5000 - -matrix_mx_puppet_instagram_database_engine: sqlite - -matrix_mx_puppet_instagram_sqlite_database_path_local: "{{ matrix_mx_puppet_instagram_data_path }}/database.db" -matrix_mx_puppet_instagram_sqlite_database_path_in_container: "/data/database.db" - -matrix_mx_puppet_instagram_database_username: matrix_mx_puppet_instagram -matrix_mx_puppet_instagram_database_password: ~ -matrix_mx_puppet_instagram_database_hostname: '' -matrix_mx_puppet_instagram_database_port: 5432 -matrix_mx_puppet_instagram_database_name: matrix_mx_puppet_instagram -matrix_mx_puppet_instagram_database_sslmode: disable - -matrix_mx_puppet_instagram_database_connection_string: 'postgresql://{{ matrix_mx_puppet_instagram_database_username }}:{{ matrix_mx_puppet_instagram_database_password }}@{{ matrix_mx_puppet_instagram_database_hostname }}:{{ matrix_mx_puppet_instagram_database_port }}/{{ matrix_mx_puppet_instagram_database_name }}?sslmode={{ matrix_mx_puppet_instagram_database_sslmode }}' - -# Default configuration template which covers the generic use case. -# You can customize it by controlling the various variables inside it. -# -# For a more advanced customization, you can extend the default (see `matrix_mx_puppet_instagram_configuration_extension_yaml`) -# or completely replace this variable with your own template. -matrix_mx_puppet_instagram_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" - -matrix_mx_puppet_instagram_configuration_extension_yaml: | - # Your custom YAML configuration goes here. - # This configuration extends the default starting configuration (`matrix_mx_puppet_instagram_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_mx_puppet_instagram_configuration_yaml`. - -matrix_mx_puppet_instagram_configuration_extension: "{{ matrix_mx_puppet_instagram_configuration_extension_yaml | from_yaml if matrix_mx_puppet_instagram_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_mx_puppet_instagram_configuration_yaml`. -matrix_mx_puppet_instagram_configuration: "{{ matrix_mx_puppet_instagram_configuration_yaml | from_yaml | combine(matrix_mx_puppet_instagram_configuration_extension, recursive=True) }}" - -matrix_mx_puppet_instagram_registration_yaml: | - as_token: "{{ matrix_mx_puppet_instagram_appservice_token }}" - hs_token: "{{ matrix_mx_puppet_instagram_homeserver_token }}" - id: instagram-puppet - namespaces: - users: - - exclusive: true - regex: '@_instagrampuppet_.*:{{ matrix_mx_puppet_instagram_homeserver_domain | regex_escape }}' - rooms: [] - aliases: - - exclusive: true - regex: '#_instagrampuppet_.*:{{ matrix_mx_puppet_instagram_homeserver_domain | regex_escape }}' - protocols: [] - rate_limited: false - sender_localpart: _instagrampuppet_bot - url: {{ matrix_mx_puppet_instagram_appservice_address }} - de.sorunome.msc2409.push_ephemeral: true - -matrix_mx_puppet_instagram_registration: "{{ matrix_mx_puppet_instagram_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/main.yml deleted file mode 100644 index 0d46532ce..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- tags: - - setup-all - - setup-mx-puppet-instagram - - install-all - - install-mx-puppet-instagram - block: - - when: matrix_mx_puppet_instagram_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_mx_puppet_instagram_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-mx-puppet-instagram - block: - - when: not matrix_mx_puppet_instagram_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" 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 deleted file mode 100644 index 47ec55ef7..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_install.yml +++ /dev/null @@ -1,113 +0,0 @@ ---- - -- ansible.builtin.set_fact: - matrix_mx_puppet_instagram_requires_restart: false - -- when: "matrix_mx_puppet_instagram_database_engine == 'postgres'" - block: - - name: Check if an SQLite database already exists - ansible.builtin.stat: - path: "{{ matrix_mx_puppet_instagram_sqlite_database_path_local }}" - register: matrix_mx_puppet_instagram_sqlite_database_path_local_stat_result - - - when: "matrix_mx_puppet_instagram_sqlite_database_path_local_stat_result.stat.exists | bool" - block: - - ansible.builtin.include_role: - name: galaxy/postgres - tasks_from: migrate_db_to_postgres - vars: - postgres_db_migration_request: - src: "{{ matrix_mx_puppet_instagram_sqlite_database_path_local }}" - dst: "{{ matrix_mx_puppet_instagram_database_connection_string }}" - caller: "{{ role_path | basename }}" - engine_variable_name: 'matrix_mx_puppet_instagram_database_engine' - engine_old: 'sqlite' - systemd_services_to_stop: ['matrix-mx-puppet-instagram.service'] - - - ansible.builtin.set_fact: - matrix_mx_puppet_instagram_requires_restart: true - -- name: Ensure mx-puppet-instagram image is pulled - community.docker.docker_image: - name: "{{ matrix_mx_puppet_instagram_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_mx_puppet_instagram_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_mx_puppet_instagram_docker_image_force_pull }}" - when: matrix_mx_puppet_instagram_enabled | bool and not matrix_mx_puppet_instagram_container_image_self_build - register: result - retries: "{{ devture_playbook_help_container_retries_count }}" - delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed - -- name: Ensure mx-puppet-instagram paths exist - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_mx_puppet_instagram_base_path }}", when: true} - - {path: "{{ matrix_mx_puppet_instagram_config_path }}", when: true} - - {path: "{{ matrix_mx_puppet_instagram_data_path }}", when: true} - - {path: "{{ matrix_mx_puppet_instagram_docker_src_files_path }}", when: "{{ matrix_mx_puppet_instagram_container_image_self_build }}"} - when: matrix_mx_puppet_instagram_enabled | bool and item.when | bool - -- name: Ensure mx-puppet-instagram repository is present on self build - ansible.builtin.git: - repo: "{{ matrix_mx_puppet_instagram_container_image_self_build_repo }}" - version: "{{ matrix_mx_puppet_instagram_container_image_self_build_repo_version }}" - dest: "{{ matrix_mx_puppet_instagram_docker_src_files_path }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_mx_puppet_instagram_git_pull_results - when: "matrix_mx_puppet_instagram_enabled | bool and matrix_mx_puppet_instagram_container_image_self_build | bool" - -- name: Ensure mx-puppet-instagram Docker image is built - community.docker.docker_image: - name: "{{ matrix_mx_puppet_instagram_docker_image }}" - source: build - force_source: "{{ matrix_mx_puppet_instagram_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_mx_puppet_instagram_git_pull_results.changed }}" - build: - dockerfile: Dockerfile - path: "{{ matrix_mx_puppet_instagram_docker_src_files_path }}" - pull: true - when: "matrix_mx_puppet_instagram_enabled | bool and matrix_mx_puppet_instagram_container_image_self_build | bool" - -- name: Ensure mx-puppet-instagram config.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mx_puppet_instagram_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mx_puppet_instagram_config_path }}/config.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mx-puppet-instagram-registration.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mx_puppet_instagram_registration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mx_puppet_instagram_config_path }}/registration.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mx-puppet-instagram container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_mx_puppet_instagram_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-mx-puppet-instagram.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-instagram.service.j2" - dest: "/etc/systemd/system/matrix-mx-puppet-instagram.service" - mode: 0644 - -- name: Ensure matrix-mx-puppet-instagram.service restarted, if necessary - ansible.builtin.service: - name: "matrix-mx-puppet-instagram.service" - state: restarted - daemon_reload: true - when: "matrix_mx_puppet_instagram_requires_restart | bool" 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 deleted file mode 100644 index 943c0556a..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_uninstall.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- name: Check existence of matrix-mx-puppet-instagram service - ansible.builtin.stat: - path: "/etc/systemd/system/matrix-mx-puppet-instagram.service" - register: matrix_mx_puppet_instagram_service_stat - -- when: matrix_mx_puppet_instagram_service_stat.stat.exists | bool - block: - - name: Ensure matrix-mx-puppet-instagram is stopped - ansible.builtin.service: - name: matrix-mx-puppet-instagram - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-mx-puppet-instagram.service doesn't exist - ansible.builtin.file: - path: "/etc/systemd/system/matrix-mx-puppet-instagram.service" - state: absent 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 deleted file mode 100644 index 67a2c6978..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/tasks/validate_config.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- - -- name: Fail if required mx-puppet-instagram 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_mx_puppet_instagram_appservice_token', when: true} - - {'name': 'matrix_mx_puppet_instagram_homeserver_address', when: true} - - {'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} diff --git a/roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2 b/roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2 deleted file mode 100644 index 2e15c5b0c..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2 +++ /dev/null @@ -1,69 +0,0 @@ -#jinja2: lstrip_blocks: "True" -bridge: - # Port to host the bridge on - # Used for communication between the homeserver and the bridge - port: {{ matrix_mx_puppet_instagram_appservice_port }} - # The host connections to the bridge's webserver are allowed from - bindAddress: 0.0.0.0 - # Public domain of the homeserver - domain: {{ matrix_mx_puppet_instagram_homeserver_domain }} - # Reachable URL of the Matrix homeserver - homeserverUrl: {{ matrix_mx_puppet_instagram_homeserver_address }} - {% if matrix_mx_puppet_instagram_login_shared_secret != '' %} - loginSharedSecretMap: - {{ matrix_domain }}: {{ matrix_mx_puppet_instagram_login_shared_secret }} - {% endif %} - -presence: - # Bridge Instagram online/offline status - enabled: {{ matrix_mx_puppet_instagram_presence_enabled | to_json }} - # How often to send status to the homeserver in milliseconds - interval: {{ matrix_mx_puppet_instagram_presence_interval | to_json }} - -provisioning: - # Regex of Matrix IDs allowed to use the puppet bridge - whitelist: {{ matrix_mx_puppet_instagram_provisioning_whitelist|to_json }} - # Allow a specific user - #- "@alice:example\\.com" - # Allow users on a specific homeserver - #- "@.*:example\\.com" - # Allow anyone - #- ".*" - # Regex of Matrix IDs forbidden from using the puppet bridge - #blacklist: - # Disallow a specific user - #- "@bob:example\\.com" - # Disallow users on a specific homeserver - #- "@.*:example\\.com" - blacklist: {{ matrix_mx_puppet_instagram_provisioning_blacklist|to_json }} - - # Shared secret for the provisioning API for use by integration managers. - # If this is not set, the provisioning API will not be enabled. - #sharedSecret: random string - # Path prefix for the provisioning API. /v1 will be appended to the prefix automatically. - apiPrefix: /_matrix/provision - -database: -{% if matrix_mx_puppet_instagram_database_engine == 'postgres' %} - # Use Postgres as a database backend - # If set, will be used instead of SQLite3 - # Connection string to connect to the Postgres instance - # with username "user", password "pass", host "localhost" and database name "dbname". - # Modify each value as necessary - connString: {{ matrix_mx_puppet_instagram_database_connection_string|to_json }} -{% else %} - # Use SQLite3 as a database backend - # The name of the database file - filename: {{ matrix_mx_puppet_instagram_sqlite_database_path_in_container|to_json }} -{% endif %} - -logging: - # Log level of console output - # Allowed values starting with most verbose: - # silly, debug, verbose, info, warn, error - console: warn - # Date and time formatting - lineDateFormat: MMM-D HH:mm:ss.SSS - # Logging files - # Log files are rotated daily by default - files: [] 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 deleted file mode 100644 index a3b9d1739..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2 +++ /dev/null @@ -1,48 +0,0 @@ -#jinja2: lstrip_blocks: "True" -[Unit] -Description=Matrix Mx Puppet Instagram bridge -{% for service in matrix_mx_puppet_instagram_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_mx_puppet_instagram_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --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 }} rm matrix-mx-puppet-instagram 2>/dev/null || true' - -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ - --rm \ - --name=matrix-mx-puppet-instagram \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --network={{ matrix_mx_puppet_instagram_container_network }} \ - -e CONFIG_PATH=/config/config.yaml \ - -e REGISTRATION_PATH=/config/registration.yaml \ - --mount type=bind,src={{ matrix_mx_puppet_instagram_config_path }},dst=/config \ - --mount type=bind,src={{ matrix_mx_puppet_instagram_data_path }},dst=/data \ - {% for arg in matrix_mx_puppet_instagram_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_mx_puppet_instagram_docker_image }} - -{% for network in matrix_mx_puppet_instagram_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mx-puppet-instagram -{% endfor %} - -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 }} rm matrix-mx-puppet-instagram 2>/dev/null || true' -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-mx-puppet-instagram - -[Install] -WantedBy=multi-user.target diff --git a/roles/custom/matrix-bridge-mx-puppet-slack/defaults/main.yml b/roles/custom/matrix-bridge-mx-puppet-slack/defaults/main.yml deleted file mode 100644 index b46df5994..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-slack/defaults/main.yml +++ /dev/null @@ -1,166 +0,0 @@ ---- -# Mx Puppet Slack is a Matrix <-> Slack bridge -# Project source code URL: https://gitlab.com/mx-puppet/slack/mx-puppet-slack - -matrix_mx_puppet_slack_enabled: true - -matrix_mx_puppet_slack_scheme: https -matrix_mx_puppet_slack_hostname: '' -matrix_mx_puppet_slack_path_prefix: /slack/oauth - -matrix_mx_puppet_slack_oauth_client_id: '' -matrix_mx_puppet_slack_oauth_client_secret: '' - -matrix_mx_puppet_slack_container_image_self_build: false -matrix_mx_puppet_slack_container_image_self_build_repo: "https://gitlab.com/mx-puppet/slack/mx-puppet-slack.git" -matrix_mx_puppet_slack_container_image_self_build_version: "{{ 'main' if matrix_mx_puppet_slack_version == 'latest' else matrix_mx_puppet_slack_version }}" -matrix_mx_puppet_slack_container_image_self_build_dockerfile_path: "Dockerfile" - -# Controls whether the mx-puppet-slack container exposes its HTTP port (tcp/8432 in the container). -# -# Takes an ":" or "" value (e.g. "127.0.0.1:8432"), or empty string to not expose. -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_force_pull: "{{ matrix_mx_puppet_slack_docker_image.endswith(':latest') }}" - -matrix_mx_puppet_slack_base_path: "{{ matrix_base_data_path }}/mx-puppet-slack" -matrix_mx_puppet_slack_config_path: "{{ matrix_mx_puppet_slack_base_path }}/config" -matrix_mx_puppet_slack_data_path: "{{ matrix_mx_puppet_slack_base_path }}/data" -matrix_mx_puppet_slack_docker_src_files_path: "{{ matrix_mx_puppet_slack_base_path }}/docker-src" - -matrix_mx_puppet_slack_appservice_port: "8432" - -matrix_mx_puppet_slack_homeserver_address: "" -matrix_mx_puppet_slack_homeserver_domain: '{{ matrix_domain }}' -matrix_mx_puppet_slack_appservice_address: 'http://matrix-mx-puppet-slack:{{ matrix_mx_puppet_slack_appservice_port }}' - -matrix_mx_puppet_slack_oauth_enabled: true -matrix_mx_puppet_slack_oauth_redirect_path: "{{ matrix_mx_puppet_slack_path_prefix }}" -matrix_mx_puppet_slack_oauth_redirect_uri: '{{ matrix_mx_puppet_slack_scheme }}://{{ matrix_mx_puppet_slack_hostname }}{{ matrix_mx_puppet_slack_oauth_redirect_path }}' - -# "@alice:example.com" to allow a specific user -# "@.*:example.com" to allow users on a specific homeserver -# "@.*" to allow anyone -matrix_mx_puppet_slack_provisioning_whitelist: - - "@.*:{{ matrix_domain | regex_escape }}" - -# Leave empty to disable blacklist -# "@bob:example.com" to disallow a specific user -# "@.*:example.com" to disallow users on a specific homeserver -matrix_mx_puppet_slack_provisioning_blacklist: [] - -matrix_mx_puppet_slack_container_network: "" - -matrix_mx_puppet_slack_container_additional_networks: "{{ matrix_mx_puppet_slack_container_additional_networks_auto + matrix_mx_puppet_slack_container_additional_networks_custom }}" -matrix_mx_puppet_slack_container_additional_networks_auto: [] -matrix_mx_puppet_slack_container_additional_networks_custom: [] - -# matrix_mx_puppet_slack_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_mx_puppet_slack_container_labels_additional_labels`. -matrix_mx_puppet_slack_container_labels_traefik_enabled: true -matrix_mx_puppet_slack_container_labels_traefik_docker_network: "{{ matrix_mx_puppet_slack_container_network }}" -matrix_mx_puppet_slack_container_labels_traefik_entrypoints: web-secure -matrix_mx_puppet_slack_container_labels_traefik_tls_certResolver: default # noqa var-naming - -# Controls whether labels will be added that expose mx-puppet-slack's public endpoint -matrix_mx_puppet_slack_container_labels_public_endpoint_enabled: true -matrix_mx_puppet_slack_container_labels_public_endpoint_hostname: "{{ matrix_mx_puppet_slack_hostname }}" -matrix_mx_puppet_slack_container_labels_public_endpoint_path_prefix: "{{ matrix_mx_puppet_slack_path_prefix }}" -matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_rule: "Host(`{{ matrix_mx_puppet_slack_container_labels_public_endpoint_hostname }}`) && PathPrefix(`{{ matrix_mx_puppet_slack_container_labels_public_endpoint_path_prefix }}`)" -matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_priority: 0 -matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_entrypoints: "{{ matrix_mx_puppet_slack_container_labels_traefik_entrypoints }}" -matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls: "{{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_entrypoints != 'web' }}" -matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls_certResolver: "{{ matrix_mx_puppet_slack_container_labels_traefik_tls_certResolver }}" # noqa var-naming - -# matrix_mx_puppet_slack_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_mx_puppet_slack_container_labels_additional_labels: | -# my.label=1 -# another.label="here" -matrix_mx_puppet_slack_container_labels_additional_labels: '' - -# A list of extra arguments to pass to the container -matrix_mx_puppet_slack_container_extra_arguments: [] - -# List of systemd services that matrix-puppet-slack.service depends on. -matrix_mx_puppet_slack_systemd_required_services_list: "{{ matrix_mx_puppet_slack_systemd_required_services_list_default + matrix_mx_puppet_slack_systemd_required_services_list_auto + matrix_mx_puppet_slack_systemd_required_services_list_custom }}" -matrix_mx_puppet_slack_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_mx_puppet_slack_systemd_required_services_list_auto: [] -matrix_mx_puppet_slack_systemd_required_services_list_custom: [] - -# List of systemd services that matrix-puppet-slack.service wants -matrix_mx_puppet_slack_systemd_wanted_services_list: [] - -matrix_mx_puppet_slack_appservice_token: '' -matrix_mx_puppet_slack_homeserver_token: '' - -# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth). -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 -matrix_mx_puppet_slack_database_engine: sqlite - -matrix_mx_puppet_slack_sqlite_database_path_local: "{{ matrix_mx_puppet_slack_data_path }}/database.db" -matrix_mx_puppet_slack_sqlite_database_path_in_container: "/data/database.db" - -matrix_mx_puppet_slack_database_username: matrix_mx_puppet_slack -matrix_mx_puppet_slack_database_password: ~ -matrix_mx_puppet_slack_database_hostname: '' -matrix_mx_puppet_slack_database_port: 5432 -matrix_mx_puppet_slack_database_name: matrix_mx_puppet_slack -matrix_mx_puppet_slack_database_sslmode: disable - -matrix_mx_puppet_slack_database_connection_string: 'postgresql://{{ matrix_mx_puppet_slack_database_username }}:{{ matrix_mx_puppet_slack_database_password }}@{{ matrix_mx_puppet_slack_database_hostname }}:{{ matrix_mx_puppet_slack_database_port }}/{{ matrix_mx_puppet_slack_database_name }}?sslmode={{ matrix_mx_puppet_slack_database_sslmode }}' - -# Default configuration template which covers the generic use case. -# You can customize it by controlling the various variables inside it. -# -# For a more advanced customization, you can extend the default (see `matrix_mx_puppet_slack_configuration_extension_yaml`) -# or completely replace this variable with your own template. -matrix_mx_puppet_slack_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" - -matrix_mx_puppet_slack_configuration_extension_yaml: | - # Your custom YAML configuration goes here. - # This configuration extends the default starting configuration (`matrix_mx_puppet_slack_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_mx_puppet_slack_configuration_yaml`. - -matrix_mx_puppet_slack_configuration_extension: "{{ matrix_mx_puppet_slack_configuration_extension_yaml | from_yaml if matrix_mx_puppet_slack_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_mx_puppet_slack_configuration_yaml`. -matrix_mx_puppet_slack_configuration: "{{ matrix_mx_puppet_slack_configuration_yaml | from_yaml | combine(matrix_mx_puppet_slack_configuration_extension, recursive=True) }}" - -matrix_mx_puppet_slack_registration_yaml: | - as_token: "{{ matrix_mx_puppet_slack_appservice_token }}" - hs_token: "{{ matrix_mx_puppet_slack_homeserver_token }}" - id: slack-puppet - namespaces: - users: - - exclusive: true - regex: '@_slackpuppet_.*:{{ matrix_mx_puppet_slack_homeserver_domain | regex_escape }}' - rooms: [] - aliases: - - exclusive: true - regex: '#_slackpuppet_.*:{{ matrix_mx_puppet_slack_homeserver_domain | regex_escape }}' - protocols: [] - rate_limited: false - sender_localpart: _slackpuppet_bot - url: {{ matrix_mx_puppet_slack_appservice_address }} - de.sorunome.msc2409.push_ephemeral: true - -matrix_mx_puppet_slack_registration: "{{ matrix_mx_puppet_slack_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-slack/tasks/main.yml deleted file mode 100644 index d5d3d421e..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- tags: - - setup-all - - setup-mx-puppet-slack - - install-all - - install-mx-puppet-slack - block: - - when: matrix_mx_puppet_slack_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_mx_puppet_slack_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-mx-puppet-slack - block: - - when: not matrix_mx_puppet_slack_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" 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 deleted file mode 100644 index c46a25bd1..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_install.yml +++ /dev/null @@ -1,144 +0,0 @@ ---- - -- name: Ensure MX Puppet Slack paths exist - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_mx_puppet_slack_base_path }}", when: true} - - {path: "{{ matrix_mx_puppet_slack_config_path }}", when: true} - - {path: "{{ matrix_mx_puppet_slack_data_path }}", when: true} - - {path: "{{ matrix_mx_puppet_slack_docker_src_files_path }}", when: "{{ matrix_mx_puppet_slack_container_image_self_build }}"} - when: matrix_mx_puppet_slack_enabled | bool and item.when | bool - -- name: Check if an old database file already exists - ansible.builtin.stat: - path: "{{ matrix_mx_puppet_slack_base_path }}/database.db" - register: matrix_mx_puppet_slack_stat_database - -- name: (Data relocation) Ensure matrix-mx-puppet-slack.service is stopped - ansible.builtin.service: - name: matrix-mx-puppet-slack - state: stopped - enabled: false - daemon_reload: true - failed_when: false - when: "matrix_mx_puppet_slack_stat_database.stat.exists" - -- ansible.builtin.set_fact: - matrix_mx_puppet_slack_requires_restart: false - -- when: "matrix_mx_puppet_slack_database_engine == 'postgres'" - block: - - name: Check if an SQLite database already exists - ansible.builtin.stat: - path: "{{ matrix_mx_puppet_slack_sqlite_database_path_local }}" - register: matrix_mx_puppet_slack_sqlite_database_path_local_stat_result - - - when: "matrix_mx_puppet_slack_sqlite_database_path_local_stat_result.stat.exists | bool" - block: - - ansible.builtin.include_role: - name: galaxy/postgres - tasks_from: migrate_db_to_postgres - vars: - postgres_db_migration_request: - src: "{{ matrix_mx_puppet_slack_sqlite_database_path_local }}" - dst: "{{ matrix_mx_puppet_slack_database_connection_string }}" - caller: "{{ role_path | basename }}" - engine_variable_name: 'matrix_mx_puppet_slack_database_engine' - engine_old: 'sqlite' - systemd_services_to_stop: ['matrix-mx-puppet-slack.service'] - - - ansible.builtin.set_fact: - matrix_mx_puppet_slack_requires_restart: true - -- name: Ensure MX Puppet Slack image is pulled - community.docker.docker_image: - name: "{{ matrix_mx_puppet_slack_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_mx_puppet_slack_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_mx_puppet_slack_docker_image_force_pull }}" - when: matrix_mx_puppet_slack_enabled | bool and not matrix_mx_puppet_slack_container_image_self_build - register: result - retries: "{{ devture_playbook_help_container_retries_count }}" - delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed - -- name: Ensure MX Puppet Slack repository is present on self build - ansible.builtin.git: - repo: "{{ matrix_mx_puppet_slack_container_image_self_build_repo }}" - dest: "{{ matrix_mx_puppet_slack_docker_src_files_path }}" - force: "yes" - version: "{{ matrix_mx_puppet_slack_container_image_self_build_version }}" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_mx_puppet_slack_git_pull_results - when: "matrix_mx_puppet_slack_enabled | bool and matrix_mx_puppet_slack_container_image_self_build" - -- name: Ensure MX Puppet Slack Docker image is built - community.docker.docker_image: - name: "{{ matrix_mx_puppet_slack_docker_image }}" - source: build - force_source: "{{ matrix_mx_puppet_slack_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_mx_puppet_slack_git_pull_results.changed }}" - build: - dockerfile: "{{ matrix_mx_puppet_slack_container_image_self_build_dockerfile_path }}" - path: "{{ matrix_mx_puppet_slack_docker_src_files_path }}" - pull: true - when: "matrix_mx_puppet_slack_enabled | bool and matrix_mx_puppet_slack_container_image_self_build" - -- name: (Data relocation) Move mx-puppet-slack database file to ./data directory - ansible.builtin.command: - cmd: "mv {{ matrix_mx_puppet_slack_base_path }}/database.db {{ matrix_mx_puppet_slack_data_path }}/database.db" - creates: "{{ matrix_mx_puppet_slack_data_path }}/database.db" - removes: "{{ matrix_mx_puppet_slack_base_path }}/database.db" - when: "matrix_mx_puppet_slack_stat_database.stat.exists" - -- name: Ensure mx-puppet-slack config.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mx_puppet_slack_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mx_puppet_slack_config_path }}/config.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mx-puppet-slack slack-registration.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mx_puppet_slack_registration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mx_puppet_slack_config_path }}/registration.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mx-puppet-slack support files installed - ansible.builtin.template: - src: "{{ role_path }}/templates/{{ item }}.j2" - dest: "{{ matrix_mx_puppet_slack_base_path }}/{{ item }}" - mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - labels - -- name: Ensure mx-puppet-slack container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_mx_puppet_slack_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-mx-puppet-slack.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-slack.service.j2" - dest: "/etc/systemd/system/matrix-mx-puppet-slack.service" - mode: 0644 - -- name: Ensure matrix-mx-puppet-slack.service restarted, if necessary - ansible.builtin.service: - name: "matrix-mx-puppet-slack.service" - state: restarted - daemon_reload: true - when: "matrix_mx_puppet_slack_requires_restart | bool" 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 deleted file mode 100644 index 444939198..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_uninstall.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- name: Check existence of matrix-mx-puppet-slack service - ansible.builtin.stat: - path: "/etc/systemd/system/matrix-mx-puppet-slack.service" - register: matrix_mx_puppet_slack_service_stat - -- when: matrix_mx_puppet_slack_service_stat.stat.exists | bool - block: - - name: Ensure matrix-mx-puppet-slack is stopped - ansible.builtin.service: - name: matrix-mx-puppet-slack - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-mx-puppet-slack.service doesn't exist - ansible.builtin.file: - path: "/etc/systemd/system/matrix-mx-puppet-slack.service" - state: absent 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 deleted file mode 100644 index dbc1d0025..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-slack/tasks/validate_config.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- - -- name: Fail if required mx-puppet-slack 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_mx_puppet_slack_hostname', when: true} - - {'name': 'matrix_mx_puppet_slack_path_prefix', when: true} - - {'name': 'matrix_mx_puppet_slack_appservice_token', when: true} - - {'name': 'matrix_mx_puppet_slack_homeserver_address', when: true} - - {'name': 'matrix_mx_puppet_slack_homeserver_token', when: true} - - {'name': 'matrix_mx_puppet_slack_database_hostname', when: "{{ matrix_mx_puppet_slack_database_engine == 'postgres' }}"} - - {'name': 'matrix_mx_puppet_slack_container_network', when: true} - -- name: (Deprecation) Catch and report renamed mx-puppet-slack 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 }}`). - 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': ' 0 %} -traefik.http.routers.matrix-mx-puppet-slack-public.priority={{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_priority }} -{% endif %} - -traefik.http.routers.matrix-mx-puppet-slack-public.service=matrix-mx-puppet-slack -traefik.http.routers.matrix-mx-puppet-slack-public.entrypoints={{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_entrypoints }} - -traefik.http.routers.matrix-mx-puppet-slack-public.tls={{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls | to_json }} -{% if matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls %} -traefik.http.routers.matrix-mx-puppet-slack-public.tls.certResolver={{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls_certResolver }} -{% endif %} - -############################################################ -# # -# /Public # -# # -############################################################ -{% endif %} - - -{% endif %} - -{{ matrix_mx_puppet_slack_container_labels_additional_labels }} diff --git a/roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2 b/roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2 deleted file mode 100644 index a87672dd4..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2 +++ /dev/null @@ -1,52 +0,0 @@ -#jinja2: lstrip_blocks: "True" -[Unit] -Description=Matrix Mx Puppet Slack bridge -{% for service in matrix_mx_puppet_slack_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_mx_puppet_slack_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ 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 \ - --rm \ - --name=matrix-mx-puppet-slack \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --network={{ matrix_mx_puppet_slack_container_network }} \ - {% if matrix_mx_puppet_slack_container_http_host_bind_port %} - -p {{ matrix_mx_puppet_slack_container_http_host_bind_port }}:{{ matrix_mx_puppet_slack_appservice_port }} \ - {% endif %} - -e CONFIG_PATH=/config/config.yaml \ - -e REGISTRATION_PATH=/config/registration.yaml \ - --mount type=bind,src={{ matrix_mx_puppet_slack_config_path }},dst=/config \ - --mount type=bind,src={{ matrix_mx_puppet_slack_data_path }},dst=/data \ - --label-file={{ matrix_mx_puppet_slack_base_path }}/labels \ - {% for arg in matrix_mx_puppet_slack_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_mx_puppet_slack_docker_image }} - -{% for network in matrix_mx_puppet_slack_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mx-puppet-slack -{% endfor %} - -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 }} rm matrix-mx-puppet-slack 2>/dev/null || true' -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-mx-puppet-slack - -[Install] -WantedBy=multi-user.target 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..033c01940 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" @@ -121,5 +134,6 @@ matrix_mx_puppet_steam_registration_yaml: | sender_localpart: _steampuppet_bot url: {{ matrix_mx_puppet_steam_appservice_address }} de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true matrix_mx_puppet_steam_registration: "{{ matrix_mx_puppet_steam_registration_yaml | from_yaml }}" 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..9232c7d63 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 @@ -5,8 +17,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_mx_puppet_steam_base_path }}", when: true} - {path: "{{ matrix_mx_puppet_steam_config_path }}", when: true} @@ -81,7 +93,7 @@ dest: "{{ matrix_mx_puppet_steam_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_mx_puppet_steam_git_pull_results when: "matrix_mx_puppet_steam_enabled | bool and matrix_mx_puppet_steam_container_image_self_build" @@ -102,16 +114,16 @@ content: "{{ matrix_mx_puppet_steam_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mx_puppet_steam_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mx-puppet-steam steam-registration.yaml installed ansible.builtin.copy: content: "{{ matrix_mx_puppet_steam_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_mx_puppet_steam_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure mx-puppet-steam container network is created community.general.docker_network: 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..35d600532 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,13 +1,26 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_mx_puppet_steam_appservice_token', when: true} - {'name': 'matrix_mx_puppet_steam_homeserver_address', when: true} - {'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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + 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 b/roles/custom/matrix-bridge-mx-puppet-steam/templates/config.yaml.j2 index c2d089f7f..3819698ca 100644 --- a/roles/custom/matrix-bridge-mx-puppet-steam/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-mx-puppet-steam/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True bridge: # Port to host the bridge on # Used for communication between the homeserver and the bridge 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..2a376ccef 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Mx Puppet Steam bridge {% for service in matrix_mx_puppet_steam_systemd_required_services_list %} @@ -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 deleted file mode 100644 index 24fc7fc07..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/defaults/main.yml +++ /dev/null @@ -1,170 +0,0 @@ ---- - -# Mx Puppet Twitter is a Matrix <-> Twitter bridge -# Project source code URL: https://github.com/Sorunome/mx-puppet-twitter - -matrix_mx_puppet_twitter_enabled: true - -matrix_mx_puppet_twitter_scheme: https -matrix_mx_puppet_twitter_hostname: '' -matrix_mx_puppet_twitter_path_prefix: /twitter/webhook - -matrix_mx_puppet_twitter_container_image_self_build: false -matrix_mx_puppet_twitter_container_image_self_build_repo: "https://github.com/Sorunome/mx-puppet-twitter.git" - -# Controls whether the mx-puppet-twitter container exposes its HTTP port (tcp/8432 in the container). -# -# Takes an ":" or "" value (e.g. "127.0.0.1:8432"), or empty string to not expose. -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_force_pull: "{{ matrix_mx_puppet_twitter_docker_image.endswith(':latest') }}" - -matrix_mx_puppet_twitter_base_path: "{{ matrix_base_data_path }}/mx-puppet-twitter" -matrix_mx_puppet_twitter_config_path: "{{ matrix_mx_puppet_twitter_base_path }}/config" -matrix_mx_puppet_twitter_data_path: "{{ matrix_mx_puppet_twitter_base_path }}/data" -matrix_mx_puppet_twitter_docker_src_files_path: "{{ matrix_mx_puppet_twitter_base_path }}/docker-src" - -matrix_mx_puppet_twitter_appservice_port: "8432" - -matrix_mx_puppet_twitter_homeserver_address: "" -matrix_mx_puppet_twitter_homeserver_domain: '{{ matrix_domain }}' -matrix_mx_puppet_twitter_appservice_address: 'http://matrix-mx-puppet-twitter:{{ matrix_mx_puppet_twitter_appservice_port }}' - -matrix_mx_puppet_twitter_consumer_key: '' -matrix_mx_puppet_twitter_consumer_secret: '' -matrix_mx_puppet_twitter_access_token: '' -matrix_mx_puppet_twitter_access_token_secret: '' -matrix_mx_puppet_twitter_environment: '' -matrix_mx_puppet_twitter_server_path: "{{ matrix_mx_puppet_twitter_path_prefix }}" -matrix_mx_puppet_twitter_server_url: '{{ matrix_homeserver_url }}{{ matrix_mx_puppet_twitter_server_path }}' - -# "@alice:example.com" to allow a specific user -# "@.*:example.com" to allow users on a specific homeserver -# "@.*" to allow anyone -matrix_mx_puppet_twitter_provisioning_whitelist: - - "@.*:{{ matrix_domain | regex_escape }}" - -# Leave empty to disable blacklist -# "@bob:example.com" to disallow a specific user -# "@.*:example.com" to disallow users on a specific homeserver -matrix_mx_puppet_twitter_provisioning_blacklist: [] - -matrix_mx_puppet_twitter_container_network: "" - -matrix_mx_puppet_twitter_container_additional_networks: "{{ matrix_mx_puppet_twitter_container_additional_networks_auto + matrix_mx_puppet_twitter_container_additional_networks_custom }}" -matrix_mx_puppet_twitter_container_additional_networks_auto: [] -matrix_mx_puppet_twitter_container_additional_networks_custom: [] - -# matrix_mx_puppet_twitter_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_mx_puppet_twitter_container_labels_additional_labels`. -matrix_mx_puppet_twitter_container_labels_traefik_enabled: true -matrix_mx_puppet_twitter_container_labels_traefik_docker_network: "{{ matrix_mx_puppet_twitter_container_network }}" -matrix_mx_puppet_twitter_container_labels_traefik_entrypoints: web-secure -matrix_mx_puppet_twitter_container_labels_traefik_tls_certResolver: default # noqa var-naming - -# Controls whether labels will be added that expose mx-puppet-twitter's public endpoint -matrix_mx_puppet_twitter_container_labels_public_endpoint_enabled: true -matrix_mx_puppet_twitter_container_labels_public_endpoint_hostname: "{{ matrix_mx_puppet_twitter_hostname }}" -matrix_mx_puppet_twitter_container_labels_public_endpoint_path_prefix: "{{ matrix_mx_puppet_twitter_path_prefix }}" -matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_rule: "Host(`{{ matrix_mx_puppet_twitter_container_labels_public_endpoint_hostname }}`) && PathPrefix(`{{ matrix_mx_puppet_twitter_container_labels_public_endpoint_path_prefix }}`)" -matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_priority: 0 -matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_entrypoints: "{{ matrix_mx_puppet_twitter_container_labels_traefik_entrypoints }}" -matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls: "{{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_entrypoints != 'web' }}" -matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls_certResolver: "{{ matrix_mx_puppet_twitter_container_labels_traefik_tls_certResolver }}" # noqa var-naming - -# matrix_mx_puppet_twitter_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_mx_puppet_twitter_container_labels_additional_labels: | -# my.label=1 -# another.label="here" -matrix_mx_puppet_twitter_container_labels_additional_labels: '' - -# A list of extra arguments to pass to the container -matrix_mx_puppet_twitter_container_extra_arguments: [] - -# List of systemd services that mx-puppet-twitter.service depends on. -matrix_mx_puppet_twitter_systemd_required_services_list: "{{ matrix_mx_puppet_twitter_systemd_required_services_list_default + matrix_mx_puppet_twitter_systemd_required_services_list_auto + matrix_mx_puppet_twitter_systemd_required_services_list_custom }}" -matrix_mx_puppet_twitter_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" -matrix_mx_puppet_twitter_systemd_required_services_list_auto: [] -matrix_mx_puppet_twitter_systemd_required_services_list_custom: [] - -# List of systemd services that mx-puppet-twitter.service wants -matrix_mx_puppet_twitter_systemd_wanted_services_list: [] - -matrix_mx_puppet_twitter_appservice_token: '' -matrix_mx_puppet_twitter_homeserver_token: '' - -# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth). -matrix_mx_puppet_twitter_login_shared_secret: '' - -matrix_mx_puppet_twitter_presence_enabled: true -matrix_mx_puppet_twitter_presence_interval: 5000 - -# Database configuration -matrix_mx_puppet_twitter_database_engine: sqlite - -matrix_mx_puppet_twitter_sqlite_database_path_local: "{{ matrix_mx_puppet_twitter_data_path }}/database.db" -matrix_mx_puppet_twitter_sqlite_database_path_in_container: "/data/database.db" - -matrix_mx_puppet_twitter_database_username: mx_puppet_twitter -matrix_mx_puppet_twitter_database_password: ~ -matrix_mx_puppet_twitter_database_hostname: '' -matrix_mx_puppet_twitter_database_port: 5432 -matrix_mx_puppet_twitter_database_name: matrix_mx_puppet_twitter -matrix_mx_puppet_twitter_database_sslmode: disable - -matrix_mx_puppet_twitter_database_connection_string: 'postgresql://{{ matrix_mx_puppet_twitter_database_username }}:{{ matrix_mx_puppet_twitter_database_password }}@{{ matrix_mx_puppet_twitter_database_hostname }}:{{ matrix_mx_puppet_twitter_database_port }}/{{ matrix_mx_puppet_twitter_database_name }}?sslmode={{ matrix_mx_puppet_twitter_database_sslmode }}' - -# Default configuration template which covers the generic use case. -# You can customize it by controlling the various variables inside it. -# -# For a more advanced customization, you can extend the default (see `matrix_mx_puppet_twitter_configuration_extension_yaml`) -# or completely replace this variable with your own template. -matrix_mx_puppet_twitter_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" - -matrix_mx_puppet_twitter_configuration_extension_yaml: | - # Your custom YAML configuration goes here. - # This configuration extends the default starting configuration (`matrix_mx_puppet_twitter_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_mx_puppet_twitter_configuration_yaml`. - -matrix_mx_puppet_twitter_configuration_extension: "{{ matrix_mx_puppet_twitter_configuration_extension_yaml | from_yaml if matrix_mx_puppet_twitter_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_mx_puppet_twitter_configuration_yaml`. -matrix_mx_puppet_twitter_configuration: "{{ matrix_mx_puppet_twitter_configuration_yaml | from_yaml | combine(matrix_mx_puppet_twitter_configuration_extension, recursive=True) }}" - -# The prefix for user IDs and aliases -matrix_mx_puppet_twitter_namespace_prefix: _twitterpuppet_ -matrix_mx_puppet_twitter_bot_localpart: _twitterpuppet_bot - -matrix_mx_puppet_twitter_registration_yaml: | - as_token: "{{ matrix_mx_puppet_twitter_appservice_token }}" - hs_token: "{{ matrix_mx_puppet_twitter_homeserver_token }}" - id: twitter-puppet - namespaces: - users: - - exclusive: true - regex: '@{{ matrix_mx_puppet_twitter_namespace_prefix | regex_escape }}.*:{{ matrix_mx_puppet_twitter_homeserver_domain | regex_escape }}' - rooms: [] - aliases: - - exclusive: true - regex: '#{{ matrix_mx_puppet_twitter_namespace_prefix | regex_escape }}.*:{{ matrix_mx_puppet_twitter_homeserver_domain | regex_escape }}' - protocols: [] - rate_limited: false - sender_localpart: "{{ matrix_mx_puppet_twitter_bot_localpart }}" - url: {{ matrix_mx_puppet_twitter_appservice_address }} - de.sorunome.msc2409.push_ephemeral: true - -matrix_mx_puppet_twitter_registration: "{{ matrix_mx_puppet_twitter_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/main.yml b/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/main.yml deleted file mode 100644 index 3cfe6a793..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- tags: - - setup-all - - setup-mx-puppet-twitter - - install-all - - install-mx-puppet-twitter - block: - - when: matrix_mx_puppet_twitter_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" - - - when: matrix_mx_puppet_twitter_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" - -- tags: - - setup-all - - setup-mx-puppet-twitter - block: - - when: not matrix_mx_puppet_twitter_enabled | bool - ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" 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 deleted file mode 100644 index 8d385dd14..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_install.yml +++ /dev/null @@ -1,144 +0,0 @@ ---- - -- name: Ensure MX Puppet Twitter paths exist - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - {path: "{{ matrix_mx_puppet_twitter_base_path }}", when: true} - - {path: "{{ matrix_mx_puppet_twitter_config_path }}", when: true} - - {path: "{{ matrix_mx_puppet_twitter_data_path }}", when: true} - - {path: "{{ matrix_mx_puppet_twitter_docker_src_files_path }}", when: "{{ matrix_mx_puppet_twitter_container_image_self_build }}"} - when: matrix_mx_puppet_twitter_enabled | bool and item.when | bool - -- name: Check if an old database file already exists - ansible.builtin.stat: - path: "{{ matrix_mx_puppet_twitter_base_path }}/database.db" - register: matrix_mx_puppet_twitter_stat_database - -- name: (Data relocation) Ensure matrix-mx-puppet-twitter.service is stopped - ansible.builtin.service: - name: matrix-mx-puppet-twitter - state: stopped - enabled: false - daemon_reload: true - failed_when: false - when: "matrix_mx_puppet_twitter_stat_database.stat.exists" - -- name: (Data relocation) Move mx-puppet-twitter database file to ./data directory - ansible.builtin.command: - cmd: "mv {{ matrix_mx_puppet_twitter_base_path }}/database.db {{ matrix_mx_puppet_twitter_data_path }}/database.db" - creates: "{{ matrix_mx_puppet_twitter_data_path }}/database.db" - removes: "{{ matrix_mx_puppet_twitter_base_path }}/database.db" - when: "matrix_mx_puppet_twitter_stat_database.stat.exists" - -- ansible.builtin.set_fact: - matrix_mx_puppet_twitter_requires_restart: false - -- when: "matrix_mx_puppet_twitter_database_engine == 'postgres'" - block: - - name: Check if an SQLite database already exists - ansible.builtin.stat: - path: "{{ matrix_mx_puppet_twitter_sqlite_database_path_local }}" - register: matrix_mx_puppet_twitter_sqlite_database_path_local_stat_result - - - when: "matrix_mx_puppet_twitter_sqlite_database_path_local_stat_result.stat.exists | bool" - block: - - ansible.builtin.include_role: - name: galaxy/postgres - tasks_from: migrate_db_to_postgres - vars: - postgres_db_migration_request: - src: "{{ matrix_mx_puppet_twitter_sqlite_database_path_local }}" - dst: "{{ matrix_mx_puppet_twitter_database_connection_string }}" - caller: "{{ role_path | basename }}" - engine_variable_name: 'matrix_mx_puppet_twitter_database_engine' - engine_old: 'sqlite' - systemd_services_to_stop: ['matrix-mx-puppet-twitter.service'] - - - ansible.builtin.set_fact: - matrix_mx_puppet_twitter_requires_restart: true - -- name: Ensure MX Puppet Twitter image is pulled - community.docker.docker_image: - name: "{{ matrix_mx_puppet_twitter_docker_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_mx_puppet_twitter_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_mx_puppet_twitter_docker_image_force_pull }}" - when: matrix_mx_puppet_twitter_enabled | bool and not matrix_mx_puppet_twitter_container_image_self_build - register: result - retries: "{{ devture_playbook_help_container_retries_count }}" - delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed - -- name: Ensure MX Puppet Twitter repository is present on self build - ansible.builtin.git: - repo: "{{ matrix_mx_puppet_twitter_container_image_self_build_repo }}" - version: master - dest: "{{ matrix_mx_puppet_twitter_docker_src_files_path }}" - force: "yes" - become: true - become_user: "{{ matrix_user_username }}" - register: matrix_mx_puppet_twitter_git_pull_results - when: "matrix_mx_puppet_twitter_enabled | bool and matrix_mx_puppet_twitter_container_image_self_build" - -- name: Ensure MX Puppet Twitter Docker image is built - community.docker.docker_image: - name: "{{ matrix_mx_puppet_twitter_docker_image }}" - source: build - force_source: "{{ matrix_mx_puppet_twitter_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_mx_puppet_twitter_git_pull_results.changed }}" - build: - dockerfile: Dockerfile - path: "{{ matrix_mx_puppet_twitter_docker_src_files_path }}" - pull: true - when: "matrix_mx_puppet_twitter_enabled | bool and matrix_mx_puppet_twitter_container_image_self_build" - -- name: Ensure mx-puppet-twitter config.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mx_puppet_twitter_configuration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mx_puppet_twitter_config_path }}/config.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mx-puppet-twitter twitter-registration.yaml installed - ansible.builtin.copy: - content: "{{ matrix_mx_puppet_twitter_registration | to_nice_yaml(indent=2, width=999999) }}" - dest: "{{ matrix_mx_puppet_twitter_config_path }}/registration.yaml" - mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - -- name: Ensure mx-puppet-twitter support files installed - ansible.builtin.template: - src: "{{ role_path }}/templates/{{ item }}.j2" - dest: "{{ matrix_mx_puppet_twitter_base_path }}/{{ item }}" - mode: 0640 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" - with_items: - - labels - -- name: Ensure mx-puppet-twitter container network is created - community.general.docker_network: - enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" - name: "{{ matrix_mx_puppet_twitter_container_network }}" - driver: bridge - driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" - -- name: Ensure matrix-mx-puppet-twitter.service installed - ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-twitter.service.j2" - dest: "/etc/systemd/system/matrix-mx-puppet-twitter.service" - mode: 0644 - -- name: Ensure matrix-mx-puppet-twitter.service restarted, if necessary - ansible.builtin.service: - name: "matrix-mx-puppet-twitter.service" - state: restarted - daemon_reload: true - when: "matrix_mx_puppet_twitter_requires_restart | bool" 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 deleted file mode 100644 index c529f0b34..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_uninstall.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- - -- name: Check existence of matrix-mx-puppet-twitter service - ansible.builtin.stat: - path: "/etc/systemd/system/matrix-mx-puppet-twitter.service" - register: matrix_mx_puppet_twitter_service_stat - -- when: matrix_mx_puppet_twitter_service_stat.stat.exists | bool - block: - - name: Ensure matrix-mx-puppet-twitter is stopped - ansible.builtin.service: - name: matrix-mx-puppet-twitter - state: stopped - enabled: false - daemon_reload: true - - - name: Ensure matrix-mx-puppet-twitter.service doesn't exist - ansible.builtin.file: - path: "/etc/systemd/system/matrix-mx-puppet-twitter.service" - state: absent 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 deleted file mode 100644 index a8f6b0bb0..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/tasks/validate_config.yml +++ /dev/null @@ -1,25 +0,0 @@ ---- - -- name: Fail if required mx-puppet-twitter 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_mx_puppet_twitter_hostname', when: true} - - {'name': 'matrix_mx_puppet_twitter_path_prefix', when: true} - - {'name': 'matrix_mx_puppet_twitter_appservice_token', when: true} - - {'name': 'matrix_mx_puppet_twitter_homeserver_address', when: true} - - {'name': 'matrix_mx_puppet_twitter_homeserver_token', when: true} - - {'name': 'matrix_mx_puppet_twitter_database_hostname', when: "{{ matrix_mx_puppet_twitter_database_engine == 'postgres' }}"} - - {'name': 'matrix_mx_puppet_twitter_container_network', when: true} - -- name: (Deprecation) Catch and report renamed mx-puppet-twitter 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 }}`). - when: "item.old in vars" - with_items: - - {'old': 'matrix_mx_puppet_twitter_webhook_path', 'new': ' 0 %} -traefik.http.routers.matrix-mx-puppet-twitter-public.priority={{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_priority }} -{% endif %} - -traefik.http.routers.matrix-mx-puppet-twitter-public.service=martix-mx-puppet-twitter -traefik.http.routers.matrix-mx-puppet-twitter-public.entrypoints={{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_entrypoints }} - -traefik.http.routers.matrix-mx-puppet-twitter-public.tls={{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls | to_json }} -{% if matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls %} -traefik.http.routers.matrix-mx-puppet-twitter-public.tls.certResolver={{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls_certResolver }} -{% endif %} - -############################################################ -# # -# /Public # -# # -############################################################ -{% endif %} - - -{% endif %} - -{{ matrix_mx_puppet_twitter_container_labels_additional_labels }} diff --git a/roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2 b/roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2 deleted file mode 100644 index 6d2ff145b..000000000 --- a/roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2 +++ /dev/null @@ -1,51 +0,0 @@ -#jinja2: lstrip_blocks: "True" -[Unit] -Description=Matrix Mx Puppet Twitter bridge -{% for service in matrix_mx_puppet_twitter_systemd_required_services_list %} -Requires={{ service }} -After={{ service }} -{% endfor %} -{% for service in matrix_mx_puppet_twitter_systemd_wanted_services_list %} -Wants={{ service }} -{% endfor %} -DefaultDependencies=no - -[Service] -Type=simple -Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" -ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop --time={{ 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 \ - --rm \ - --name=matrix-mx-puppet-twitter \ - --log-driver=none \ - --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ - --cap-drop=ALL \ - --network={{ matrix_mx_puppet_twitter_container_network }} \ - {% if matrix_mx_puppet_twitter_container_http_host_bind_port %} - -p {{ matrix_mx_puppet_twitter_container_http_host_bind_port }}:{{ matrix_mx_puppet_twitter_appservice_port }} \ - {% endif %} - -e CONFIG_PATH=/config/config.yaml \ - -e REGISTRATION_PATH=/config/registration.yaml \ - --mount type=bind,src={{ matrix_mx_puppet_twitter_config_path }},dst=/config \ - --mount type=bind,src={{ matrix_mx_puppet_twitter_data_path }},dst=/data \ - {% for arg in matrix_mx_puppet_twitter_container_extra_arguments %} - {{ arg }} \ - {% endfor %} - {{ matrix_mx_puppet_twitter_docker_image }} - -{% for network in matrix_mx_puppet_twitter_container_additional_networks %} -ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mx-puppet-twitter -{% endfor %} - -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 }} rm matrix-mx-puppet-twitter 2>/dev/null || true' -Restart=always -RestartSec=30 -SyslogIdentifier=matrix-mx-puppet-twitter - -[Install] -WantedBy=multi-user.target diff --git a/roles/custom/matrix-bridge-postmoogle/defaults/main.yml b/roles/custom/matrix-bridge-postmoogle/defaults/main.yml index 99bd6085a..458395e8c 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.28 +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..8214a6372 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`). @@ -53,20 +61,20 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_postmoogle_config_path }}", when: true} - {path: "{{ matrix_postmoogle_data_path }}", when: true} - - {path: "{{ matrix_postmoogle_docker_src_files_path }}", when: matrix_postmoogle_container_image_self_build} + - {path: "{{ matrix_postmoogle_docker_src_files_path }}", when: "{{ matrix_postmoogle_container_image_self_build }}"} when: "item.when | bool" - name: Ensure postmoogle environment variables file created ansible.builtin.template: src: "{{ role_path }}/templates/env.j2" dest: "{{ matrix_postmoogle_config_path }}/env" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0640 - name: Ensure postmoogle image is pulled @@ -88,7 +96,7 @@ dest: "{{ matrix_postmoogle_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_postmoogle_git_pull_results when: "matrix_postmoogle_container_image_self_build | bool" 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..9605d85df 100644 --- a/roles/custom/matrix-bridge-postmoogle/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-postmoogle/tasks/validate_config.yml @@ -1,12 +1,26 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_postmoogle_password', when: true} - {'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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + 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..38ce1b6ba 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Postmoogle bridge {% for service in matrix_postmoogle_systemd_required_services_list %} @@ -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..a8ed64791 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 @@ -5,8 +15,12 @@ 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_version: 0.5.13 +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" @@ -53,7 +67,7 @@ matrix_sms_bridge_provider_android_truststore_password: '' matrix_sms_bridge_configuration_yaml: | - #jinja2: lstrip_blocks: "True" + #jinja2: lstrip_blocks: True # Database connection matrix: 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..46be38205 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 @@ -14,8 +24,8 @@ path: "{{ item }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - "{{ matrix_sms_bridge_base_path }}" - "{{ matrix_sms_bridge_config_path }}" @@ -26,24 +36,24 @@ content: "{{ matrix_sms_bridge_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_sms_bridge_config_path }}/application.yml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-sms-bridge registration.yaml installed ansible.builtin.copy: content: "{{ matrix_sms_bridge_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_sms_bridge_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure android-sms-gateway-server cert installed ansible.builtin.copy: src: "{{ matrix_sms_bridge_provider_android_truststore_local_path }}" dest: "{{ matrix_sms_bridge_config_path }}/matrix-sms-gateway-server.p12" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" when: matrix_sms_bridge_provider_android_truststore_local_path != "" - name: Ensure matrix-sms-bridge container network is created 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..ef1069d29 100644 --- a/roles/custom/matrix-bridge-sms/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-sms/tasks/validate_config.yml @@ -1,10 +1,17 @@ +# 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 ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`). - when: "vars[item] == ''" + when: "lookup('vars', item, default='') == ''" with_items: - "matrix_sms_bridge_appservice_token" - "matrix_sms_bridge_homeserver_hostname" 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..1a3fe2ef1 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix sms bridge {% for service in matrix_sms_bridge_systemd_required_services_list %} @@ -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-steam/defaults/main.yml b/roles/custom/matrix-bridge-steam/defaults/main.yml new file mode 100644 index 000000000..b9aecde72 --- /dev/null +++ b/roles/custom/matrix-bridge-steam/defaults/main.yml @@ -0,0 +1,253 @@ +# SPDX-FileCopyrightText: 2025 Jason LaGuidice +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- +# matrix-steam-bridge is a Matrix <-> Steam bridge +# See: https://github.com/jasonlaguidice/matrix-steam-bridge + +matrix_steam_bridge_enabled: true + +matrix_steam_bridge_container_image_self_build: false +matrix_steam_bridge_container_image_self_build_repo: "https://github.com/jasonlaguidice/matrix-steam-bridge.git" +matrix_steam_bridge_container_image_self_build_repo_version: "{{ 'main' if matrix_steam_bridge_version == 'latest' else matrix_steam_bridge_version }}" + +# renovate: datasource=docker depName=ghcr.io/jasonlaguidice/matrix-steam-bridge +matrix_steam_bridge_version: 1.1.0 +matrix_steam_bridge_docker_image: "{{ matrix_steam_bridge_docker_image_registry_prefix }}jasonlaguidice/matrix-steam-bridge:{{ matrix_steam_bridge_version }}" +matrix_steam_bridge_docker_image_registry_prefix: "{{ 'localhost/' if matrix_steam_bridge_container_image_self_build else matrix_steam_bridge_docker_image_registry_prefix_upstream }}" +matrix_steam_bridge_docker_image_registry_prefix_upstream: "{{ matrix_steam_bridge_docker_image_registry_prefix_upstream_default }}" +matrix_steam_bridge_docker_image_registry_prefix_upstream_default: "ghcr.io/" +matrix_steam_bridge_docker_image_tag: "{{ matrix_steam_bridge_version }}" +matrix_steam_bridge_docker_image_force_pull: "{{ matrix_steam_bridge_docker_image.endswith(':latest') }}" + +matrix_steam_bridge_base_path: "{{ matrix_base_data_path }}/matrix-steam-bridge" +matrix_steam_bridge_config_path: "{{ matrix_steam_bridge_base_path }}/config" +matrix_steam_bridge_data_path: "{{ matrix_steam_bridge_base_path }}/data" +matrix_steam_bridge_docker_src_files_path: "{{ matrix_steam_bridge_base_path }}/docker-src" + +matrix_steam_bridge_homeserver_address: "" +matrix_steam_bridge_homeserver_domain: "{{ matrix_domain }}" +matrix_steam_bridge_appservice_address: "http://matrix-steam-bridge:{{ matrix_steam_bridge_appservice_port }}" +matrix_steam_bridge_appservice_port: "8080" + +matrix_steam_bridge_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" +matrix_steam_bridge_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" + +# matrix -> steam presence +matrix_steam_bridge_network_presence_enabled: true +# Default inactivity state +# This is what the bridge sets it's status to after some time of no user interaction +matrix_steam_bridge_network_presence_inactivity_status: 'invisible' + +# A public address that external services can use to reach this appservice +matrix_steam_bridge_appservice_public_address: "https://{{ matrix_server_fqn_matrix }}" + +# Public media configuration for external access to bridge media +matrix_steam_bridge_public_media_enabled: true +# A key for signing public media URLs. If set to "generate", a random key will be generated. +# This will be auto-generated deterministically if matrix_homeserver_generic_secret_key is set. +matrix_steam_bridge_public_media_signing_key: '' +# Number of seconds that public media URLs are valid for. If set to 0, URLs will never expire. +matrix_steam_bridge_public_media_expiry: 0 +matrix_steam_bridge_public_media_hash_length: 32 + +# Display name template for Steam users. +# Available template variables: +# {{.PersonaName}} - The Steam display name/persona name (most commonly used) +# {{.AccountName}} - The Steam account/login name +# {{.SteamID}} - The numeric Steam ID +# {{.ProfileURL}} - The Steam profile URL +# You can use template functions like {{or}} to provide fallbacks. +matrix_steam_bridge_network_displayname_template: "{% raw %}{{ .PersonaName }} (Steam){% endraw %}" + +matrix_steam_bridge_command_prefix: "!steam" + +matrix_steam_bridge_bridge_permissions: | + {{ + {matrix_steam_bridge_homeserver_domain: 'user'} + | combine ({matrix_admin: 'admin'} if matrix_admin else {}) + }} + +# TODO: May need to set network for public media? +matrix_steam_bridge_container_network: "" + +matrix_steam_bridge_container_additional_networks: "{{ matrix_steam_bridge_container_additional_networks_auto + matrix_steam_bridge_container_additional_networks_custom }}" +matrix_steam_bridge_container_additional_networks_auto: [] +matrix_steam_bridge_container_additional_networks_custom: [] + +# matrix_steam_bridge_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_steam_bridge_container_labels_additional_labels`. +matrix_steam_bridge_container_labels_traefik_enabled: true +matrix_steam_bridge_container_labels_traefik_docker_network: "{{ matrix_steam_bridge_container_network }}" +matrix_steam_bridge_container_labels_traefik_entrypoints: web-secure +matrix_steam_bridge_container_labels_traefik_tls: "{{ matrix_steam_bridge_container_labels_traefik_entrypoints != 'web' }}" +matrix_steam_bridge_container_labels_traefik_tls_certResolver: default # noqa var-naming + +# Controls whether labels will be added that expose mautrix-instagram's metrics +matrix_steam_bridge_container_labels_metrics_enabled: "{{ matrix_steam_bridge_metrics_enabled and matrix_steam_bridge_metrics_proxying_enabled }}" +matrix_steam_bridge_container_labels_metrics_traefik_rule: "Host(`{{ matrix_steam_bridge_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_steam_bridge_metrics_proxying_path_prefix }}`)" +matrix_steam_bridge_container_labels_metrics_traefik_priority: 0 +matrix_steam_bridge_container_labels_metrics_traefik_entrypoints: "{{ matrix_steam_bridge_container_labels_traefik_entrypoints }}" +matrix_steam_bridge_container_labels_metrics_traefik_tls: "{{ matrix_steam_bridge_container_labels_metrics_traefik_entrypoints != 'web' }}" +matrix_steam_bridge_container_labels_metrics_traefik_tls_certResolver: "{{ matrix_steam_bridge_container_labels_traefik_tls_certResolver }}" # noqa var-naming +matrix_steam_bridge_container_labels_metrics_middleware_basic_auth_enabled: false +# See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users +matrix_steam_bridge_container_labels_metrics_middleware_basic_auth_users: '' + +# matrix_steam_bridge_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_steam_bridge_container_labels_additional_labels: | +# my.label=1 +# another.label="here" +matrix_steam_bridge_container_labels_additional_labels: '' + +# A list of extra arguments to pass to the container +matrix_steam_bridge_container_extra_arguments: [] + +# List of systemd services that matrix_steam_bridge.service depends on. +matrix_steam_bridge_systemd_required_services_list: "{{ matrix_steam_bridge_systemd_required_services_list_default + matrix_steam_bridge_systemd_required_services_list_auto + matrix_steam_bridge_systemd_required_services_list_custom }}" +matrix_steam_bridge_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" +matrix_steam_bridge_systemd_required_services_list_auto: [] +matrix_steam_bridge_systemd_required_services_list_custom: [] + +# List of systemd services that matrix_steam_bridge.service wants +matrix_steam_bridge_systemd_wanted_services_list: [] + +matrix_steam_bridge_appservice_token: '' +matrix_steam_bridge_homeserver_token: '' + +# Whether or not created rooms should have federation enabled. +# If false, created portal rooms will never be federated. +matrix_steam_bridge_matrix_federate_rooms: false + +# Bridge configuration options +# Should every user have their own portals rather than sharing them? +matrix_steam_bridge_bridge_split_portals: false + +# Cleanup on logout configuration +matrix_steam_bridge_bridge_cleanup_on_logout_enabled: false +# Valid values for cleanup actions: nothing, kick, unbridge, delete +# nothing - Do nothing, let the user stay in the portals +# kick - Remove the user from the portal rooms, but don't delete them +# unbridge - Remove all ghosts in the room and disassociate it from the remote chat +# delete - Remove all ghosts and users from the room (i.e. delete it) +matrix_steam_bridge_bridge_cleanup_on_logout_manual_private: nothing +matrix_steam_bridge_bridge_cleanup_on_logout_manual_relayed: nothing +matrix_steam_bridge_bridge_cleanup_on_logout_manual_shared_no_users: nothing +matrix_steam_bridge_bridge_cleanup_on_logout_manual_shared_has_users: nothing +matrix_steam_bridge_bridge_cleanup_on_logout_bad_credentials_private: nothing +matrix_steam_bridge_bridge_cleanup_on_logout_bad_credentials_relayed: nothing +matrix_steam_bridge_bridge_cleanup_on_logout_bad_credentials_shared_no_users: nothing +matrix_steam_bridge_bridge_cleanup_on_logout_bad_credentials_shared_has_users: nothing + +# Homeserver configuration options +# Does the homeserver support MSC2246 (async media uploads)? +matrix_steam_bridge_homeserver_async_media: false + +# Database-related configuration fields. +# +# To use Postgres: +# - adjust your database credentials via the `matrix_steam_bridge_postgres_*` variables +matrix_steam_bridge_database_engine: 'postgres' + +matrix_steam_bridge_database_username: 'matrix_steam_bridge' +matrix_steam_bridge_database_password: 'some-password' +matrix_steam_bridge_database_hostname: '' +matrix_steam_bridge_database_port: 5432 +matrix_steam_bridge_database_name: 'matrix_steam_bridge' +matrix_steam_bridge_database_sslmode: disable + +matrix_steam_bridge_database_connection_string: 'postgres://{{ matrix_steam_bridge_database_username }}:{{ matrix_steam_bridge_database_password }}@{{ matrix_steam_bridge_database_hostname }}:{{ matrix_steam_bridge_database_port }}/{{ matrix_steam_bridge_database_name }}?sslmode={{ matrix_steam_bridge_database_sslmode }}' + +matrix_steam_bridge_database_uri: "{{ + { + 'postgres': matrix_steam_bridge_database_connection_string, + }[matrix_steam_bridge_database_engine] +}}" + +matrix_steam_bridge_double_puppet_secrets: "{{ matrix_steam_bridge_double_puppet_secrets_auto | combine(matrix_steam_bridge_double_puppet_secrets_custom) }}" +matrix_steam_bridge_double_puppet_secrets_auto: {} +matrix_steam_bridge_double_puppet_secrets_custom: {} + +matrix_steam_bridge_appservice_bot_username: steambot +matrix_steam_bridge_appservice_bot_displayname: Steam bridge bot +matrix_steam_bridge_appservice_bot_avatar: mxc://shadowdrake.org/EeNKAcrmByNubPwoyceQsBaN + +matrix_steam_bridge_backfill_enabled: true +# Maximum number of messages to backfill in empty rooms +matrix_steam_bridge_backfill_max_initial_messages: 50 + +# Maximum number of missed messages to backfill after bridge restarts +matrix_steam_bridge_backfill_max_catchup_messages: 500 + +# Shared secret for authentication of provisioning API requests. +# If set to "disable", the provisioning API will be disabled. +matrix_steam_bridge_provisioning_shared_secret: disable + +# Minimum severity of journal log messages. +# Valid values: fatal, error, warn, info, debug, trace +matrix_steam_bridge_logging_level: 'warn' + +# Whether or not metrics endpoint should be enabled. +# Enabling them is usually enough for a local (in-container) Prometheus to consume them. +# If metrics need to be consumed by another (external) Prometheus server, consider exposing them via `matrix_steam_bridge_metrics_proxying_enabled`. +matrix_steam_bridge_metrics_enabled: false + +# Controls whether metrics should be exposed on a public URL. +matrix_steam_bridge_metrics_proxying_enabled: false +matrix_steam_bridge_metrics_proxying_hostname: '' +matrix_steam_bridge_metrics_proxying_path_prefix: '' + +# Default configuration template which covers the generic use case. +# You can customize it by controlling the various variables inside it. +# +# For a more advanced customization, you can extend the default (see `matrix_steam_bridge_configuration_extension_yaml`) +# or completely replace this variable with your own template. +matrix_steam_bridge_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" + +matrix_steam_bridge_configuration_extension_yaml: | + # Your custom YAML configuration goes here. + # This configuration extends the default starting configuration (`matrix_steam_bridge_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_steam_bridge_configuration_yaml`. + +matrix_steam_bridge_configuration_extension: "{{ matrix_steam_bridge_configuration_extension_yaml | from_yaml if matrix_steam_bridge_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_steam_bridge_configuration_yaml`. +matrix_steam_bridge_configuration: "{{ matrix_steam_bridge_configuration_yaml | from_yaml | combine(matrix_steam_bridge_configuration_extension, recursive=True) }}" + +matrix_steam_bridge_registration_yaml: | + id: steam + as_token: "{{ matrix_steam_bridge_appservice_token }}" + hs_token: "{{ matrix_steam_bridge_homeserver_token }}" + namespaces: + users: + - exclusive: true + regex: '^@steam_.+:{{ matrix_steam_bridge_homeserver_domain | regex_escape }}$' + - exclusive: true + regex: '^@{{ matrix_steam_bridge_appservice_bot_username | regex_escape }}:{{ matrix_steam_bridge_homeserver_domain | regex_escape }}$' + url: {{ matrix_steam_bridge_appservice_address }} + sender_localpart: _bot_{{ matrix_steam_bridge_appservice_bot_username }} + rate_limited: false + de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true + io.element.msc4190: {{ matrix_steam_bridge_msc4190_enabled | to_json }} + +matrix_steam_bridge_registration: "{{ matrix_steam_bridge_registration_yaml | from_yaml }}" + +# Enable End-to-bridge encryption +matrix_steam_bridge_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" +matrix_steam_bridge_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}" +matrix_steam_bridge_bridge_encryption_require: false +matrix_steam_bridge_bridge_encryption_appservice: false +matrix_steam_bridge_bridge_encryption_key_sharing_allow: "{{ matrix_steam_bridge_bridge_encryption_allow }}" +matrix_steam_bridge_bridge_encryption_pickle_key: mautrix.bridge.e2ee diff --git a/roles/custom/matrix-bridge-steam/tasks/main.yml b/roles/custom/matrix-bridge-steam/tasks/main.yml new file mode 100644 index 000000000..fc28fb7d3 --- /dev/null +++ b/roles/custom/matrix-bridge-steam/tasks/main.yml @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- tags: + - setup-all + - setup-matrix-steam-bridge + - install-all + - install-matrix-steam-bridge + block: + - when: matrix_steam_bridge_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" + + - when: matrix_steam_bridge_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" + +- tags: + - setup-all + - setup-matrix-steam-bridge + block: + - when: not matrix_steam_bridge_enabled | bool + ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" diff --git a/roles/custom/matrix-bridge-steam/tasks/setup_install.yml b/roles/custom/matrix-bridge-steam/tasks/setup_install.yml new file mode 100644 index 000000000..ea1aa31ab --- /dev/null +++ b/roles/custom/matrix-bridge-steam/tasks/setup_install.yml @@ -0,0 +1,102 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- ansible.builtin.set_fact: + matrix_steam_bridge_requires_restart: false + +- name: Ensure Steam bridge image is pulled + community.docker.docker_image: + name: "{{ matrix_steam_bridge_docker_image }}" + source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" + force_source: "{{ matrix_steam_bridge_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_steam_bridge_docker_image_force_pull }}" + when: matrix_steam_bridge_enabled | bool and not matrix_steam_bridge_container_image_self_build + register: result + retries: "{{ devture_playbook_help_container_retries_count }}" + delay: "{{ devture_playbook_help_container_retries_delay }}" + until: result is not failed + +- name: Ensure Steam bridge paths exist + ansible.builtin.file: + path: "{{ item.path }}" + state: directory + mode: 0750 + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + with_items: + - {path: "{{ matrix_steam_bridge_base_path }}", when: true} + - {path: "{{ matrix_steam_bridge_config_path }}", when: true} + - {path: "{{ matrix_steam_bridge_data_path }}", when: true} + - {path: "{{ matrix_steam_bridge_docker_src_files_path }}", when: "{{ matrix_steam_bridge_container_image_self_build }}"} + when: item.when | bool + +- name: Ensure Steam bridge repository is present on self-build + ansible.builtin.git: + repo: "{{ matrix_steam_bridge_container_image_self_build_repo }}" + version: "{{ matrix_steam_bridge_container_image_self_build_repo_version }}" + dest: "{{ matrix_steam_bridge_docker_src_files_path }}" + force: "yes" + become: true + become_user: "{{ matrix_user_name }}" + register: matrix_steam_bridge_git_pull_results + when: "matrix_steam_bridge_enabled | bool and matrix_steam_bridge_container_image_self_build" + +- name: Ensure Steam bridge Docker image is built + community.docker.docker_image: + name: "{{ matrix_steam_bridge_docker_image }}" + source: build + force_source: "{{ matrix_steam_bridge_git_pull_results.changed }}" + build: + dockerfile: Dockerfile + path: "{{ matrix_steam_bridge_docker_src_files_path }}" + pull: true + when: "matrix_steam_bridge_enabled | bool and matrix_steam_bridge_container_image_self_build | bool" + +- name: Ensure matrix-steam-bridge config.yaml installed + ansible.builtin.copy: + content: "{{ matrix_steam_bridge_configuration | to_nice_yaml(indent=2, width=999999) }}" + dest: "{{ matrix_steam_bridge_config_path }}/config.yaml" + mode: 0644 + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + +- name: Ensure matrix-steam-bridge registration.yaml installed + ansible.builtin.copy: + content: "{{ matrix_steam_bridge_registration | to_nice_yaml(indent=2, width=999999) }}" + dest: "{{ matrix_steam_bridge_config_path }}/registration.yaml" + mode: 0644 + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + +- name: Ensure matrix-steam-bridge support files installed + ansible.builtin.template: + src: "{{ role_path }}/templates/{{ item }}.j2" + dest: "{{ matrix_steam_bridge_base_path }}/{{ item }}" + mode: 0640 + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + with_items: + - labels + +- name: Ensure matrix-steam-bridge container network is created + community.general.docker_network: + enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" + name: "{{ matrix_steam_bridge_container_network }}" + driver: bridge + driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" + +- name: Ensure matrix-steam-bridge.service installed + ansible.builtin.template: + src: "{{ role_path }}/templates/systemd/matrix-steam-bridge.service.j2" + dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-steam-bridge.service" + mode: 0644 + +- name: Ensure matrix-steam-bridge.service restarted, if necessary + ansible.builtin.service: + name: "matrix-steam-bridge.service" + state: restarted + daemon_reload: true + when: "matrix_steam_bridge_requires_restart | bool" diff --git a/roles/custom/matrix-bridge-steam/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-steam/tasks/setup_uninstall.yml new file mode 100644 index 000000000..361be0420 --- /dev/null +++ b/roles/custom/matrix-bridge-steam/tasks/setup_uninstall.yml @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Check existence of matrix-steam-bridge service + ansible.builtin.stat: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-steam-bridge.service" + register: matrix_steam_bridge_service_stat + +- when: matrix_steam_bridge_service_stat.stat.exists | bool + block: + - name: Ensure matrix-steam-bridge is stopped + ansible.builtin.service: + name: matrix-steam-bridge + state: stopped + daemon_reload: true + + - name: Ensure matrix-steam-bridge.service doesn't exist + ansible.builtin.file: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-steam-bridge.service" + state: absent diff --git a/roles/custom/matrix-bridge-steam/tasks/validate_config.yml b/roles/custom/matrix-bridge-steam/tasks/validate_config.yml new file mode 100644 index 000000000..6209426b9 --- /dev/null +++ b/roles/custom/matrix-bridge-steam/tasks/validate_config.yml @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: 2025 MDAD project contributors +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- + +- name: Fail if required matrix_steam_bridge settings not defined + ansible.builtin.fail: + msg: >- + You need to define a required configuration setting (`{{ item.name }}`). + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" + with_items: + - {'name': 'matrix_steam_bridge_appservice_token', when: true} + - {'name': 'matrix_steam_bridge_homeserver_address', when: true} + - {'name': 'matrix_steam_bridge_homeserver_token', when: true} + - {'name': 'matrix_steam_bridge_database_hostname', when: "{{ matrix_steam_bridge_database_engine == 'postgres' }}"} + - {'name': 'matrix_steam_bridge_container_network', when: true} + - {'name': 'matrix_steam_bridge_metrics_proxying_hostname', when: "{{ matrix_steam_bridge_metrics_proxying_enabled }}"} + - {'name': 'matrix_steam_bridge_metrics_proxying_path_prefix', when: "{{ matrix_steam_bridge_metrics_proxying_enabled }}"} +# TODO: Confirm additional config isn't mandatory for public_media + +- name: (Deprecation) Catch and report renamed matrix-steam-bridge variables + ansible.builtin.fail: + msg: >- + Your configuration contains a variable, which now has a different name. + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + with_items: + - {'old': 'matrix_steam_bridge_docker_image_name_prefix', 'new': 'matrix_steam_bridge_docker_image_registry_prefix'} diff --git a/roles/custom/matrix-bridge-steam/templates/config.yaml.j2 b/roles/custom/matrix-bridge-steam/templates/config.yaml.j2 new file mode 100644 index 000000000..3704a6523 --- /dev/null +++ b/roles/custom/matrix-bridge-steam/templates/config.yaml.j2 @@ -0,0 +1,475 @@ +#jinja2: lstrip_blocks: True +# Network-specific config options +network: + # Proxy to use for all Steam connections. + proxy: null + # Alternative to proxy: an HTTP endpoint that returns the proxy URL to use for Steam connections. + get_proxy_url: null + + # Displayname template for Steam users. + displayname_template: {{ matrix_steam_bridge_network_displayname_template | to_json }} + + # Maximum number of conversations to sync on startup + conversation_sync_limit: 20 + + steam_bridge_path: ./ + steam_bridge_address: localhost:50051 + steam_bridge_auto_start: true + steam_bridge_startup_timeout: 30 + + # Presence synchronization settings + presence: + # Enable presence tracking from Matrix to Steam + # When enabled, your Steam status will automatically change based on + # your Matrix presence and activity + enabled: {{ matrix_steam_bridge_network_presence_enabled | to_json }} + + # Inactivity timeout in minutes before changing Steam status + # This is used as a fallback when your Matrix server doesn't support + # presence tracking. After this many minutes without Matrix activity, + # your Steam status will change (see inactivity_status below) + # Set to 0 to disable automatic away + inactivity_timeout: 15 + + # Status to set after inactivity timeout + # Valid values: "snooze" (appear away/idle) or "invisible" (appear offline) + inactivity_status: {{ matrix_steam_bridge_network_presence_inactivity_status | to_json }} + # Whether typing events in Matrix should reset the inactivity timer + # When true, typing will count as activity and keep you marked as online + typing_resets_presence: true + + # Whether sending read receipts in Matrix should reset the inactivity timer + # When true, reading messages will count as activity and keep you marked as online + read_receipts_reset_presence: false + + +# Config options that affect the central bridge module. +bridge: + # The prefix for commands. Only required in non-management rooms. + command_prefix: {{ matrix_steam_bridge_command_prefix | to_json }} + # Should the bridge create a space for each login containing the rooms that account is in? + personal_filtering_spaces: true + # Whether the bridge should set names and avatars explicitly for DM portals. + # This is only necessary when using clients that don't support MSC4171. + private_chat_portal_meta: true + # Should events be handled asynchronously within portal rooms? + # If true, events may end up being out of order, but slow events won't block other ones. + # This is not yet safe to use. + async_events: false + # Should every user have their own portals rather than sharing them? + # By default, users who are in the same group on the remote network will be + # in the same Matrix room bridged to that group. If this is set to true, + # every user will get their own Matrix room instead. + split_portals: {{ matrix_steam_bridge_bridge_split_portals | to_json }} + # Should the bridge resend `m.bridge` events to all portals on startup? + resend_bridge_info: false + # Should `m.bridge` events be sent without a state key? + # By default, the bridge uses a unique key that won't conflict with other bridges. + no_bridge_info_state_key: false + # Should bridge connection status be sent to the management room as `m.notice` events? + # These contain the same data that can be posted to an external HTTP server using homeserver -> status_endpoint. + # Allowed values: none, errors, all + bridge_status_notices: errors + # How long after an unknown error should the bridge attempt a full reconnect? + # Must be at least 1 minute. The bridge will add an extra ±20% jitter to this value. + unknown_error_auto_reconnect: null + + # Should leaving Matrix rooms be bridged as leaving groups on the remote network? + bridge_matrix_leave: false + # Should room tags only be synced when creating the portal? Tags mean things like favorite/pin and archive/low priority. + # Tags currently can't be synced back to the remote network, so a continuous sync means tagging from Matrix will be undone. + tag_only_on_create: true + # List of tags to allow bridging. If empty, no tags will be bridged. + only_bridge_tags: [m.favourite, m.lowpriority] + # Should room mute status only be synced when creating the portal? + # Like tags, mutes can't currently be synced back to the remote network. + mute_only_on_create: true + # Should the bridge check the db to ensure that incoming events haven't been handled before + deduplicate_matrix_messages: false + # Should cross-room reply metadata be bridged? + # Most Matrix clients don't support this and servers may reject such messages too. + cross_room_replies: false + + + # What should be done to portal rooms when a user logs out or is logged out? + # Permitted values: + # nothing - Do nothing, let the user stay in the portals + # kick - Remove the user from the portal rooms, but don't delete them + # unbridge - Remove all ghosts in the room and disassociate it from the remote chat + # delete - Remove all ghosts and users from the room (i.e. delete it) + cleanup_on_logout: + # Should cleanup on logout be enabled at all? + enabled: {{ matrix_steam_bridge_bridge_cleanup_on_logout_enabled | to_json }} + # Settings for manual logouts (explicitly initiated by the Matrix user) + manual: + # Action for private portals which will never be shared with other Matrix users. + private: {{ matrix_steam_bridge_bridge_cleanup_on_logout_manual_private | to_json }} + # Action for portals with a relay user configured. + relayed: {{ matrix_steam_bridge_bridge_cleanup_on_logout_manual_relayed | to_json }} + # Action for portals which may be shared, but don't currently have any other Matrix users. + shared_no_users: {{ matrix_steam_bridge_bridge_cleanup_on_logout_manual_shared_no_users | to_json }} + # Action for portals which have other logged-in Matrix users. + shared_has_users: {{ matrix_steam_bridge_bridge_cleanup_on_logout_manual_shared_has_users | to_json }} + # Settings for credentials being invalidated (initiated by the remote network, possibly through user action). + # Keys have the same meanings as in the manual section. + bad_credentials: + private: {{ matrix_steam_bridge_bridge_cleanup_on_logout_bad_credentials_private | to_json }} + relayed: {{ matrix_steam_bridge_bridge_cleanup_on_logout_bad_credentials_relayed | to_json }} + shared_no_users: {{ matrix_steam_bridge_bridge_cleanup_on_logout_bad_credentials_shared_no_users | to_json }} + shared_has_users: {{ matrix_steam_bridge_bridge_cleanup_on_logout_bad_credentials_shared_has_users | to_json }} + + # Settings for relay mode + relay: + # Whether relay mode should be allowed. If allowed, the set-relay command can be used to turn any + # authenticated user into a relaybot for that chat. + enabled: false + # Should only admins be allowed to set themselves as relay users? + # If true, non-admins can only set users listed in default_relays as relays in a room. + admin_only: true + # List of user login IDs which anyone can set as a relay, as long as the relay user is in the room. + default_relays: [] + # The formats to use when sending messages via the relaybot. + # Available variables: + # .Sender.UserID - The Matrix user ID of the sender. + # .Sender.Displayname - The display name of the sender (if set). + # .Sender.RequiresDisambiguation - Whether the sender's name may be confused with the name of another user in the room. + # .Sender.DisambiguatedName - The disambiguated name of the sender. This will be the displayname if set, + # plus the user ID in parentheses if the displayname is not unique. + # If the displayname is not set, this is just the user ID. + # .Message - The `formatted_body` field of the message. + # .Caption - The `formatted_body` field of the message, if it's a caption. Otherwise an empty string. + # .FileName - The name of the file being sent. + message_formats: + m.text: "{% raw %}{{ .Sender.DisambiguatedName }}: {{ .Message }}{% endraw %}" + m.notice: "{% raw %}{{ .Sender.DisambiguatedName }}: {{ .Message }}{% endraw %}" + m.emote: "{% raw %}* {{ .Sender.DisambiguatedName }} {{ .Message }}{% endraw %}" + m.file: "{% raw %}{{ .Sender.DisambiguatedName }} sent a file{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + m.image: "{% raw %}{{ .Sender.DisambiguatedName }} sent an image{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + m.audio: "{% raw %}{{ .Sender.DisambiguatedName }} sent an audio file{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + m.video: "{% raw %}{{ .Sender.DisambiguatedName }} sent a video{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + m.location: "{% raw %}{{ .Sender.DisambiguatedName }} sent a location{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}" + # For networks that support per-message displaynames (i.e. Slack and Discord), the template for those names. + # This has all the Sender variables available under message_formats (but without the .Sender prefix). + # Note that you need to manually remove the displayname from message_formats above. + displayname_format: "{% raw %}{{ .DisambiguatedName }}{% endraw %}" + + # Permissions for using the bridge. + # Permitted values: + # relay - Talk through the relaybot (if enabled), no access otherwise + # commands - Access to use commands in the bridge, but not login. + # user - Access to use the bridge with puppeting. + # admin - Full access, user level with some additional administration tools. + # Permitted keys: + # * - All Matrix users + # domain - All users on that homeserver + # mxid - Specific user + permissions: {{ matrix_steam_bridge_bridge_permissions | to_json }} + +# Config for the bridge's database. +database: + # The database type. "sqlite3-fk-wal" and "postgres" are supported. + type: postgres + # The database URI. + # SQLite: A raw file path is supported, but `file:?_txlock=immediate` is recommended. + # https://github.com/mattn/go-sqlite3#connection-string + # Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable + # To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql + uri: {{ matrix_steam_bridge_database_uri | to_json }} + # Maximum number of connections. + max_open_conns: 5 + max_idle_conns: 2 + # Maximum connection idle time and lifetime before they're closed. Disabled if null. + # Parsed with https://pkg.go.dev/time#ParseDuration + max_conn_idle_time: null + max_conn_lifetime: null + +# Homeserver details. +homeserver: + # The address that this appservice can use to connect to the homeserver. + # Local addresses without HTTPS are generally recommended when the bridge is running on the same machine, + # but https also works if they run on different machines. + address: {{ matrix_steam_bridge_homeserver_address | to_json }} + # The domain of the homeserver (also known as server_name, used for MXIDs, etc). + domain: {{ matrix_steam_bridge_homeserver_domain | to_json }} + + # What software is the homeserver running? + # Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here. + software: standard + # The URL to push real-time bridge status to. + # If set, the bridge will make POST requests to this URL whenever a user's remote network connection state changes. + # The bridge will use the appservice as_token to authorize requests. + status_endpoint: + # Endpoint for reporting per-message status. + # If set, the bridge will make POST requests to this URL when processing a message from Matrix. + # It will make one request when receiving the message (step BRIDGE), one after decrypting if applicable + # (step DECRYPTED) and one after sending to the remote network (step REMOTE). Errors will also be reported. + # The bridge will use the appservice as_token to authorize requests. + message_send_checkpoint_endpoint: + # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? + async_media: {{ matrix_steam_bridge_homeserver_async_media | to_json }} + + # Should the bridge use a websocket for connecting to the homeserver? + # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, + # mautrix-asmux (deprecated), and hungryserv (proprietary). + websocket: false + # How often should the websocket be pinged? Pinging will be disabled if this is zero. + ping_interval_seconds: 0 + +# Application service host/registration related details. +# Changing these values requires regeneration of the registration (except when noted otherwise) +appservice: + # The address that the homeserver can use to connect to this appservice. + # Like the homeserver address, a local non-https address is recommended when the bridge is on the same machine. + # If the bridge is elsewhere, you must secure the connection yourself (e.g. with https or wireguard) + # If you want to use https, you need to use a reverse proxy. The bridge does not have TLS support built in. + address: {{ matrix_steam_bridge_appservice_address | to_json }} + # A public address that external services can use to reach this appservice. + # This is only needed for things like public media. A reverse proxy is generally necessary when using this field. + # This value doesn't affect the registration file. + public_address: {{ matrix_steam_bridge_appservice_public_address | to_json }} + + # The hostname and port where this appservice should listen. + # For Docker, you generally have to change the hostname to 0.0.0.0. + hostname: 0.0.0.0 + port: {{ matrix_steam_bridge_appservice_port }} + + # The unique ID of this appservice. + id: steam + # Appservice bot details. + bot: + # Username of the appservice bot. + username: {{ matrix_steam_bridge_appservice_bot_username | to_json }} + # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty + # to leave display name/avatar as-is. + displayname: {{ matrix_steam_bridge_appservice_bot_displayname | to_json(ensure_ascii=False) }} + avatar: {{ matrix_steam_bridge_appservice_bot_avatar | to_json }} + + # Whether to receive ephemeral events via appservice transactions. + ephemeral_events: true + # Should incoming events be handled asynchronously? + # This may be necessary for large public instances with lots of messages going through. + # However, messages will not be guaranteed to be bridged in the same order they were sent in. + # This value doesn't affect the registration file. + async_transactions: false + + # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify. + as_token: {{ matrix_steam_bridge_appservice_token | to_json }} + hs_token: {{ matrix_steam_bridge_homeserver_token | to_json }} + + # Localpart template of MXIDs for remote users. + # {% raw %}{{.}}{% endraw %} is replaced with the internal ID of the user. + username_template: "{% raw %}steam_{{.}}{% endraw %}" + +# Config options that affect the Matrix connector of the bridge. +matrix: + # Whether the bridge should send the message status as a custom com.beeper.message_send_status event. + message_status_events: false + # Whether the bridge should send a read receipt after successfully bridging a message. + delivery_receipts: false + # Whether the bridge should send error notices via m.notice events when a message fails to bridge. + message_error_notices: true + # Whether the bridge should update the m.direct account data event when double puppeting is enabled. + sync_direct_chat_list: true + # Whether created rooms should have federation enabled. If false, created portal rooms + # will never be federated. Changing this option requires recreating rooms. + federate_rooms: {{ matrix_steam_bridge_matrix_federate_rooms | to_json }} + # The threshold as bytes after which the bridge should roundtrip uploads via the disk + # rather than keeping the whole file in memory. + upload_file_threshold: 5242880 + +# Segment-compatible analytics endpoint for tracking some events, like provisioning API login and encryption errors. +analytics: + # API key to send with tracking requests. Tracking is disabled if this is null. + token: null + # Address to send tracking requests to. + url: https://api.segment.io/v1/track + # Optional user ID for tracking events. If null, defaults to using Matrix user ID. + user_id: null + +# Settings for provisioning API +provisioning: + # Prefix for the provisioning API paths. + prefix: /_matrix/provision + # Shared secret for authentication. If set to "generate" or null, a random secret will be generated, + # or if set to "disable", the provisioning API will be disabled. + shared_secret: {{ matrix_steam_bridge_provisioning_shared_secret | to_json }} + # Whether to allow provisioning API requests to be authed using Matrix access tokens. + # This follows the same rules as double puppeting to determine which server to contact to check the token, + # which means that by default, it only works for users on the same server as the bridge. + allow_matrix_auth: true + # Enable debug API at /debug with provisioning authentication. + debug_endpoints: false + +# Some networks require publicly accessible media download links (e.g. for user avatars when using Discord webhooks). +# These settings control whether the bridge will provide such public media access. +# TODO: Update with public_media config once it's figured out +public_media: + # Should public media be enabled at all? + # The public_address field under the appservice section MUST be set when enabling public media. + enabled: {{ matrix_steam_bridge_public_media_enabled | to_json }} + # A key for signing public media URLs. + # If set to "generate", a random key will be generated. + signing_key: {{ matrix_steam_bridge_public_media_signing_key | to_json }} + # Number of seconds that public media URLs are valid for. + # If set to 0, URLs will never expire. + expiry: {{ matrix_steam_bridge_public_media_expiry | to_json }} + # Length of hash to use for public media URLs. Must be between 0 and 32. + hash_length: {{ matrix_steam_bridge_public_media_hash_length | to_json }} + +# Settings for converting remote media to custom mxc:// URIs instead of reuploading. +# More details can be found at https://docs.mau.fi/bridges/go/discord/direct-media.html +direct_media: + # Should custom mxc:// URIs be used instead of reuploading media? + enabled: false + # The server name to use for the custom mxc:// URIs. + # This server name will effectively be a real Matrix server, it just won't implement anything other than media. + # You must either set up .well-known delegation from this domain to the bridge, or proxy the domain directly to the bridge. + server_name: media.example.com + # Optionally a custom .well-known response. This defaults to `server_name:443` + well_known_response: + # Optionally specify a custom prefix for the media ID part of the MXC URI. + media_id_prefix: + # If the remote network supports media downloads over HTTP, then the bridge will use MSC3860/MSC3916 + # media download redirects if the requester supports it. Optionally, you can force redirects + # and not allow proxying at all by setting this to false. + # This option does nothing if the remote network does not support media downloads over HTTP. + allow_proxy: true + # Matrix server signing key to make the federation tester pass, same format as synapse's .signing.key file. + # This key is also used to sign the mxc:// URIs to ensure only the bridge can generate them. + server_key: "" + +# Settings for backfilling messages. +# Note that the exact way settings are applied depends on the network connector. +# See https://docs.mau.fi/bridges/general/backfill.html for more details. +backfill: + # Whether to do backfilling at all. + enabled: {{ matrix_steam_bridge_backfill_enabled | to_json }} + # Maximum number of messages to backfill in empty rooms. + max_initial_messages: {{ matrix_steam_bridge_backfill_max_initial_messages | to_json }} + # Maximum number of missed messages to backfill after bridge restarts. + max_catchup_messages: {{ matrix_steam_bridge_backfill_max_catchup_messages | to_json }} + # If a backfilled chat is older than this number of hours, + # mark it as read even if it's unread on the remote network. + unread_hours_threshold: 720 + # Settings for backfilling threads within other backfills. + threads: + # Maximum number of messages to backfill in a new thread. + max_initial_messages: 50 + # Settings for the backwards backfill queue. This only applies when connecting to + # Beeper as standard Matrix servers don't support inserting messages into history. + queue: + # Should the backfill queue be enabled? + enabled: false + # Number of messages to backfill in one batch. + batch_size: 100 + # Delay between batches in seconds. + batch_delay: 20 + # Maximum number of batches to backfill per portal. + # If set to -1, all available messages will be backfilled. + max_batches: -1 + # Optional network-specific overrides for max batches. + # Interpretation of this field depends on the network connector. + max_batches_override: {} + +# Settings for enabling double puppeting +double_puppet: + # Servers to always allow double puppeting from. + # This is only for other servers and should NOT contain the server the bridge is on. + servers: {} + # Whether to allow client API URL discovery for other servers. When using this option, + # users on other servers can use double puppeting even if their server URLs aren't + # explicitly added to the servers map above. + allow_discovery: false + # Shared secrets for automatic double puppeting. + # See https://docs.mau.fi/bridges/general/double-puppeting.html for instructions. + secrets: {{ matrix_steam_bridge_double_puppet_secrets | to_json }} + +# End-to-bridge encryption support options. +# +# See https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html for more info. +encryption: + # Whether to enable encryption at all. If false, the bridge will not function in encrypted rooms. + allow: {{ matrix_steam_bridge_bridge_encryption_allow | to_json }} + # Whether to force-enable encryption in all bridged rooms. + default: {{ matrix_steam_bridge_bridge_encryption_default | to_json }} + # Whether to require all messages to be encrypted and drop any unencrypted messages. + require: {{ matrix_steam_bridge_bridge_encryption_require | to_json }} + # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. + # This option is not yet compatible with standard Matrix servers like Synapse and should not be used. + appservice: {{ matrix_steam_bridge_bridge_encryption_appservice | to_json }} + # Whether to use MSC4190 instead of appservice login to create the bridge bot device. + # Requires the homeserver to support MSC4190 and the device masquerading parts of MSC3202. + # Only relevant when using end-to-bridge encryption, required when using encryption with next-gen auth (MSC3861). + # Changing this option requires updating the appservice registration file. + msc4190: {{ matrix_steam_bridge_msc4190_enabled | to_json }} + # Whether to enable self-signing for bridges (Only the bridge bot uses this for now) + # Requires msc4190 to replace keys on reset + self_sign: {{ matrix_steam_bridge_self_sign_enabled | to_json }} + # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. + # You must use a client that supports requesting keys from other users to use this feature. + allow_key_sharing: {{ matrix_steam_bridge_bridge_encryption_key_sharing_allow | to_json }} + # Pickle key for encrypting encryption keys in the bridge database. + # If set to generate, a random key will be generated. + pickle_key: {{ matrix_steam_bridge_bridge_encryption_pickle_key | to_json }} + # Options for deleting megolm sessions from the bridge. + delete_keys: + # Beeper-specific: delete outbound sessions when hungryserv confirms + # that the user has uploaded the key to key backup. + delete_outbound_on_ack: false + # Don't store outbound sessions in the inbound table. + dont_store_outbound: false + # Ratchet megolm sessions forward after decrypting messages. + ratchet_on_decrypt: false + # Delete fully used keys (index >= max_messages) after decrypting messages. + delete_fully_used_on_decrypt: false + # Delete previous megolm sessions from same device when receiving a new one. + delete_prev_on_new_session: false + # Delete megolm sessions received from a device when the device is deleted. + delete_on_device_delete: false + # Periodically delete megolm sessions when 2x max_age has passed since receiving the session. + periodically_delete_expired: false + # Delete inbound megolm sessions that don't have the received_at field used for + # automatic ratcheting and expired session deletion. This is meant as a migration + # to delete old keys prior to the bridge update. + delete_outdated_inbound: false + # What level of device verification should be required from users? + # + # Valid levels: + # unverified - Send keys to all device in the room. + # cross-signed-untrusted - Require valid cross-signing, but trust all cross-signing keys. + # cross-signed-tofu - Require valid cross-signing, trust cross-signing keys on first use (and reject changes). + # cross-signed-verified - Require valid cross-signing, plus a valid user signature from the bridge bot. + # Note that creating user signatures from the bridge bot is not currently possible. + # verified - Require manual per-device verification + # (currently only possible by modifying the `trust` column in the `crypto_device` database table). + verification_levels: + # Minimum level for which the bridge should send keys to when bridging messages from the remote network to Matrix. + receive: unverified + # Minimum level that the bridge should accept for incoming Matrix messages. + send: unverified + # Minimum level that the bridge should require for accepting key requests. + share: cross-signed-tofu + # Options for Megolm room key rotation. These options allow you to configure the m.room.encryption event content. + # See https://spec.matrix.org/v1.10/client-server-api/#mroomencryption for more information about that event. + rotation: + # Enable custom Megolm room key rotation settings. Note that these + # settings will only apply to rooms created after this option is set. + enable_custom: false + # The maximum number of milliseconds a session should be used + # before changing it. The Matrix spec recommends 604800000 (a week) + # as the default. + milliseconds: 604800000 + # The maximum number of messages that should be sent with a given a + # session before changing it. The Matrix spec recommends 100 as the + # default. + messages: 100 + # Disable rotating keys when a user's devices change? + # You should not enable this option unless you understand all the implications. + disable_device_change_key_rotation: false + +# Logging config. See https://github.com/tulir/zeroconfig for details. +logging: + min_level: {{ matrix_steam_bridge_logging_level | to_json }} + writers: + - type: stdout + format: pretty-colored diff --git a/roles/custom/matrix-bridge-steam/templates/config.yaml.j2.license b/roles/custom/matrix-bridge-steam/templates/config.yaml.j2.license new file mode 100644 index 000000000..826be4a75 --- /dev/null +++ b/roles/custom/matrix-bridge-steam/templates/config.yaml.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/roles/custom/matrix-bridge-steam/templates/labels.j2 b/roles/custom/matrix-bridge-steam/templates/labels.j2 new file mode 100644 index 000000000..77fa05a4c --- /dev/null +++ b/roles/custom/matrix-bridge-steam/templates/labels.j2 @@ -0,0 +1,78 @@ +{# +SPDX-FileCopyrightText: 2025 MDAD project contributors + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +{% if matrix_steam_bridge_container_labels_traefik_enabled %} +traefik.enable=true + +{% if matrix_steam_bridge_container_labels_traefik_docker_network %} +traefik.docker.network={{ matrix_steam_bridge_container_labels_traefik_docker_network }} +{% endif %} + +traefik.http.services.matrix-steam-bridge.loadbalancer.server.port={{ matrix_steam_bridge_appservice_port }} +traefik.http.services.matrix-steam-bridge-metrics.loadbalancer.server.port=8000 + +{% if matrix_steam_bridge_container_labels_metrics_enabled %} +############################################################ +# # +# Metrics # +# # +############################################################ + +{% if matrix_steam_bridge_container_labels_metrics_middleware_basic_auth_enabled %} +traefik.http.middlewares.matrix-steam-bridge-metrics-basic-auth.basicauth.users={{ matrix_steam_bridge_container_labels_metrics_middleware_basic_auth_users }} +traefik.http.routers.matrix-steam-bridge-metrics.middlewares=matrix-steam-bridge-metrics-basic-auth +{% endif %} + +traefik.http.routers.matrix-steam-bridge-metrics.rule={{ matrix_steam_bridge_container_labels_metrics_traefik_rule }} + +{% if matrix_steam_bridge_container_labels_metrics_traefik_priority | int > 0 %} +traefik.http.routers.matrix-steam-bridge-metrics.priority={{ matrix_steam_bridge_container_labels_metrics_traefik_priority }} +{% endif %} + +traefik.http.routers.matrix-steam-bridge-metrics.service=matrix-steam-bridge-metrics +traefik.http.routers.matrix-steam-bridge-metrics.entrypoints={{ matrix_steam_bridge_container_labels_metrics_traefik_entrypoints }} + +traefik.http.routers.matrix-steam-bridge-metrics.tls={{ matrix_steam_bridge_container_labels_metrics_traefik_tls | to_json }} +{% if matrix_steam_bridge_container_labels_metrics_traefik_tls %} +traefik.http.routers.matrix-steam-bridge-metrics.tls.certResolver={{ matrix_steam_bridge_container_labels_metrics_traefik_tls_certResolver }} +{% endif %} + +############################################################ +# # +# /Metrics # +# # +############################################################ +{% endif %} + + +{% if matrix_steam_bridge_public_media_enabled %} +############################################################ +# # +# Public Media # +# # +############################################################ + +# Router for public media +traefik.http.routers.matrix-steam-bridge-public-media.rule=Host(`{{ matrix_server_fqn_matrix }}`) && PathPrefix(`/_mautrix/publicmedia/{{ matrix_domain }}/`) +traefik.http.routers.matrix-steam-bridge-public-media.service=matrix-steam-bridge +traefik.http.routers.matrix-steam-bridge-public-media.entrypoints={{ matrix_steam_bridge_container_labels_traefik_entrypoints }} +traefik.http.routers.matrix-steam-bridge-public-media.tls={{ matrix_steam_bridge_container_labels_traefik_tls | to_json }} +{% if matrix_steam_bridge_container_labels_traefik_tls %} +traefik.http.routers.matrix-steam-bridge-public-media.tls.certResolver={{ matrix_steam_bridge_container_labels_traefik_tls_certResolver }} +{% endif %} + + +############################################################ +# # +# /Public Media # +# # +############################################################ +{% endif %} + + +{% endif %} + +{{ matrix_steam_bridge_container_labels_additional_labels }} diff --git a/roles/custom/matrix-bridge-steam/templates/systemd/matrix-steam-bridge.service.j2 b/roles/custom/matrix-bridge-steam/templates/systemd/matrix-steam-bridge.service.j2 new file mode 100644 index 000000000..128f2d6df --- /dev/null +++ b/roles/custom/matrix-bridge-steam/templates/systemd/matrix-steam-bridge.service.j2 @@ -0,0 +1,48 @@ +#jinja2: lstrip_blocks: True +[Unit] +Description=Matrix Steam bridge +{% for service in matrix_steam_bridge_systemd_required_services_list %} +Requires={{ service }} +After={{ service }} +{% endfor %} +{% for service in matrix_steam_bridge_systemd_wanted_services_list %} +Wants={{ service }} +{% endfor %} +DefaultDependencies=no + +[Service] +Type=simple +Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" +ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-steam-bridge 2>/dev/null || true' +ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-steam-bridge 2>/dev/null || true' + +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ + --rm \ + --name=matrix-steam-bridge \ + --log-driver=none \ + --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ + --cap-drop=ALL \ + --network={{ matrix_steam_bridge_container_network }} \ + --mount type=bind,src={{ matrix_steam_bridge_config_path }},dst=/app/config,ro \ + --mount type=bind,src={{ matrix_steam_bridge_data_path }},dst=/app/data \ + --label-file={{ matrix_steam_bridge_base_path }}/labels \ + {% for arg in matrix_steam_bridge_container_extra_arguments %} + {{ arg }} \ + {% endfor %} + {{ matrix_steam_bridge_docker_image }} \ + /usr/bin/steam -c /app/config/config.yaml -r /app/config/registration.yaml --no-update + +{% for network in matrix_steam_bridge_container_additional_networks %} +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-steam-bridge +{% endfor %} + +ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-steam-bridge + +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-steam-bridge 2>/dev/null || true' +ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-steam-bridge 2>/dev/null || true' +Restart=always +RestartSec=30 +SyslogIdentifier=matrix-steam-bridge + +[Install] +WantedBy=multi-user.target diff --git a/roles/custom/matrix-bridge-steam/templates/systemd/matrix-steam-bridge.service.j2.license b/roles/custom/matrix-bridge-steam/templates/systemd/matrix-steam-bridge.service.j2.license new file mode 100644 index 000000000..826be4a75 --- /dev/null +++ b/roles/custom/matrix-bridge-steam/templates/systemd/matrix-steam-bridge.service.j2.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 MDAD project contributors + +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 4c9d9f0b0..cd0e660b6 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. @@ -38,6 +47,9 @@ matrix_wechat_agent_container_src_files_path: "{{ matrix_wechat_base_path }}/age matrix_wechat_homeserver_address: "" matrix_wechat_homeserver_domain: "{{ matrix_domain }}" +# Whether asynchronous uploads via MSC2246 should be enabled for media. +# Requires a homeserver that supports MSC2246 (https://github.com/matrix-org/matrix-spec-proposals/pull/2246). +matrix_wechat_homeserver_async_media: false matrix_wechat_appservice_address: 'http://matrix-wechat:8080' matrix_wechat_container_network: "" @@ -141,6 +153,7 @@ matrix_wechat_registration_yaml: | - exclusive: true regex: '^@{{ matrix_wechat_appservice_bot_username | regex_escape }}:{{ matrix_wechat_homeserver_domain | regex_escape }}$' de.sorunome.msc2409.push_ephemeral: true + receive_ephemeral: true matrix_wechat_registration: "{{ matrix_wechat_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-wechat/tasks/install.yml b/roles/custom/matrix-bridge-wechat/tasks/install.yml index 36d530c75..d0bfbbace 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 @@ -5,8 +10,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_wechat_base_path }}", when: true} - {path: "{{ matrix_wechat_config_path }}", when: true} @@ -36,7 +41,7 @@ version: "{{ matrix_wechat_container_image_self_build_branch }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_wechat_git_pull_results - name: Ensure WeChat Bridge container image is built @@ -71,7 +76,7 @@ version: "{{ matrix_wechat_agent_container_image_self_build_branch }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_wechat_agent_git_pull_results - name: Ensure WeChat Agent container image is built @@ -90,27 +95,28 @@ content: "{{ matrix_wechat_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_wechat_config_path }}/config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure WeChat registration.yaml installed ansible.builtin.copy: content: "{{ matrix_wechat_registration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_wechat_config_path }}/registration.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure Wechat Agent configuration installed ansible.builtin.copy: content: "{{ matrix_wechat_agent_configuration | to_nice_yaml(indent=2, width=999999) }}" dest: "{{ matrix_wechat_config_path }}/agent-config.yaml" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - 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..324cb8e1a 100644 --- a/roles/custom/matrix-bridge-wechat/tasks/validate_config.yml +++ b/roles/custom/matrix-bridge-wechat/tasks/validate_config.yml @@ -1,10 +1,14 @@ +# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required WeChat 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] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_wechat_appservice_token', when: true} - {'name': 'matrix_wechat_homeserver_address', when: true} @@ -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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + 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 b/roles/custom/matrix-bridge-wechat/templates/config.yaml.j2 index e81583a11..86330ed48 100644 --- a/roles/custom/matrix-bridge-wechat/templates/config.yaml.j2 +++ b/roles/custom/matrix-bridge-wechat/templates/config.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True # Homeserver details. homeserver: # The address that this appservice can use to connect to the homeserver. @@ -16,7 +16,7 @@ homeserver: # Endpoint for reporting per-message status. message_send_checkpoint_endpoint: null # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246? - async_media: false + async_media: {{ matrix_wechat_homeserver_async_media | to_json }} # Should the bridge use a websocket for connecting to the homeserver? # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy, 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..9f9a195c2 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix WeChat Agent {% for service in matrix_wechat_systemd_required_services_list %} @@ -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..4c9deb056 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix WeChat Bridge {% for service in matrix_wechat_systemd_required_services_list %} @@ -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-bridge-zulip/defaults/main.yml b/roles/custom/matrix-bridge-zulip/defaults/main.yml new file mode 100644 index 000000000..77ac357f4 --- /dev/null +++ b/roles/custom/matrix-bridge-zulip/defaults/main.yml @@ -0,0 +1,122 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Toni Spets +# SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi +# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 MDAD project contributors +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2023 Samuel Meenzen +# SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- +# MatrixZulipBridge is a puppeting appservice bridge for Zulip +# Project source code URL: https://github.com/GearKite/MatrixZulipBridge + +matrix_zulip_bridge_enabled: true + +matrix_zulip_bridge_scheme: https +matrix_zulip_bridge_hostname: "{{ matrix_server_fqn_matrix }}" +matrix_zulip_bridge_path_prefix: "/zulip" + +# renovate: datasource=docker depName=ghcr.io/gearkite/matrixzulipbridge +matrix_zulip_bridge_version: v0.4.1 +matrix_zulip_bridge_docker_image: "{{ matrix_zulip_bridge_docker_image_registry_prefix }}gearkite/matrixzulipbridge:{{ matrix_zulip_bridge_version }}" +matrix_zulip_bridge_docker_image_registry_prefix: "{{ matrix_zulip_bridge_docker_image_registry_prefix_upstream }}" +matrix_zulip_bridge_docker_image_registry_prefix_upstream: "{{ matrix_zulip_bridge_docker_image_registry_prefix_upstream_default }}" +matrix_zulip_bridge_docker_image_registry_prefix_upstream_default: ghcr.io/ +matrix_zulip_bridge_docker_image_force_pull: "{{ matrix_zulip_bridge_docker_image.endswith(':latest') }}" + +matrix_zulip_bridge_base_path: "{{ matrix_base_data_path }}/zulip" + +matrix_zulip_bridge_container_network: "" + +# The port number in the container +matrix_zulip_bridge_container_http_port: 9898 + +matrix_zulip_bridge_container_additional_networks: "{{ matrix_zulip_bridge_container_additional_networks_auto + matrix_zulip_bridge_container_additional_networks_custom }}" +matrix_zulip_bridge_container_additional_networks_auto: [] +matrix_zulip_bridge_container_additional_networks_custom: [] + +# Controls how long to wait for the container to stop gracefully before killing it. +# We use a small value here, because this container does not seem to handle the SIGTERM signal. +matrix_zulip_bridge_container_stop_grace_time_seconds: 1 + +# matrix_zulip_bridge_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_zulip_bridge_container_labels_additional_labels`. +matrix_zulip_bridge_container_labels_traefik_enabled: true +matrix_zulip_bridge_container_labels_traefik_docker_network: "{{ matrix_zulip_bridge_container_network }}" +matrix_zulip_bridge_container_labels_traefik_hostname: "{{ matrix_zulip_bridge_hostname }}" +matrix_zulip_bridge_container_labels_traefik_path_prefix: "{{ matrix_zulip_bridge_path_prefix }}" +matrix_zulip_bridge_container_labels_traefik_entrypoints: web-secure +matrix_zulip_bridge_container_labels_traefik_tls_certResolver: default # noqa var-naming + +# Controls if the media router is enabled +matrix_zulip_bridge_container_labels_traefik_media_enabled: true +matrix_zulip_bridge_container_labels_traefik_media_hostname: "{{ matrix_zulip_bridge_container_labels_traefik_hostname }}" +# The path prefix must either be `/` or not end with a slash (e.g. `/zulip`). +matrix_zulip_bridge_container_labels_traefik_media_path_prefix: "{{ '' if matrix_zulip_bridge_container_labels_traefik_path_prefix == '/' else (matrix_zulip_bridge_container_labels_traefik_path_prefix) }}/_bridge_zulip/media" +matrix_zulip_bridge_container_labels_traefik_media_rule: "Host(`{{ matrix_zulip_bridge_container_labels_traefik_media_hostname }}`){% if matrix_zulip_bridge_container_labels_traefik_media_path_prefix != '/' %} && PathPrefix(`{{ matrix_zulip_bridge_container_labels_traefik_media_path_prefix }}`){% endif %}" +matrix_zulip_bridge_container_labels_traefik_media_priority: 0 +matrix_zulip_bridge_container_labels_traefik_media_entrypoints: "{{ matrix_zulip_bridge_container_labels_traefik_entrypoints }}" +matrix_zulip_bridge_container_labels_traefik_media_tls: "{{ matrix_zulip_bridge_container_labels_traefik_media_entrypoints != 'web' }}" +matrix_zulip_bridge_container_labels_traefik_media_tls_certResolver: "{{ matrix_zulip_bridge_container_labels_traefik_tls_certResolver }}" # noqa var-naming + +# matrix_zulip_bridge_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_zulip_bridge_container_labels_additional_labels: | +# my.label=1 +# another.label="here" +matrix_zulip_bridge_container_labels_additional_labels: '' + +# A list of extra arguments to pass to the container +matrix_zulip_bridge_container_extra_arguments: [] + +# List of systemd services that service depends on. +matrix_zulip_bridge_systemd_required_services_list: "{{ matrix_zulip_bridge_systemd_required_services_list_default + matrix_zulip_bridge_systemd_required_services_list_auto + matrix_zulip_bridge_systemd_required_services_list_custom }}" +matrix_zulip_bridge_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" +matrix_zulip_bridge_systemd_required_services_list_auto: [] +matrix_zulip_bridge_systemd_required_services_list_custom: [] + +# List of systemd services that service wants +matrix_zulip_bridge_systemd_wanted_services_list: [] + +matrix_zulip_bridge_homeserver_url: "" + +matrix_zulip_bridge_appservice_token: '' +matrix_zulip_bridge_homeserver_token: '' + +matrix_zulip_bridge_config_media_url: "{{ matrix_zulip_bridge_scheme }}://{{ matrix_zulip_bridge_hostname }}" +# This matches the hardcoded `DEFAULT_MEDIA_PATH` in MatrixZulipBridge, but uses `matrix_zulip_bridge_path_prefix` as the path prefix. +# See: https://github.com/GearKite/MatrixZulipBridge/blob/2ba51f3da2ad8bd33460c953ef91a9cfc585a2d4/matrixzulipbridge/__main__.py#L87 +matrix_zulip_bridge_config_media_path: "{{ matrix_zulip_bridge_container_labels_traefik_media_path_prefix }}/v3/download/{netloc}{path}{filename}" +matrix_zulip_bridge_config_media_key: "{{ matrix_zulip_bridge_homeserver_token }}" +matrix_zulip_bridge_config_displayname: "Zulip bridge bot" + +matrix_zulip_bridge_registration_yaml_bridge_zulip: + media_url: "{{ matrix_zulip_bridge_config_media_url }}" + media_path: "{{ matrix_zulip_bridge_config_media_path }}" + media_key: "{{ matrix_zulip_bridge_config_media_key }}" + displayname: "{{ matrix_zulip_bridge_config_displayname }}" + +# Default registration file consumed by both the homeserver and MatrixZulipBridge. +# Besides registration information, it contains configuration (see the Zulip bridge key). +matrix_zulip_bridge_registration_yaml: + id: zulip + url: http://matrix-zulip-bridge:{{ matrix_zulip_bridge_container_http_port }} + as_token: "{{ matrix_zulip_bridge_appservice_token }}" + hs_token: "{{ matrix_zulip_bridge_homeserver_token }}" + rate_limited: false + sender_localpart: zulipbot + namespaces: + users: + - regex: '@zulip_.*' + exclusive: true + aliases: [] + rooms: [] + zulipbridge: "{{ matrix_zulip_bridge_registration_yaml_bridge_zulip }}" + +matrix_zulip_bridge_registration: "{{ matrix_zulip_bridge_registration_yaml | from_yaml }}" diff --git a/roles/custom/matrix-bridge-zulip/tasks/main.yml b/roles/custom/matrix-bridge-zulip/tasks/main.yml new file mode 100644 index 000000000..392023b63 --- /dev/null +++ b/roles/custom/matrix-bridge-zulip/tasks/main.yml @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: 2021 Toni Spets +# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# SPDX-FileCopyrightText: 2025 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- +- name: Perform the Zulip bridge installation tasks + when: matrix_zulip_bridge_enabled | bool + tags: + - setup-all + - setup-bridge-zulip + - install-all + - install-bridge-zulip + block: + - name: Validate the Zulip bridge configuration + ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml" + - name: Install the Zulip bridge + ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml" + +- name: Perform the Zulip bridge uninstallation tasks + when: not matrix_zulip_bridge_enabled | bool + tags: + - setup-all + - setup-bridge-zulip + block: + - name: Uninstall the Zulip bridge + ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" diff --git a/roles/custom/matrix-bridge-zulip/tasks/setup_install.yml b/roles/custom/matrix-bridge-zulip/tasks/setup_install.yml new file mode 100644 index 000000000..f05ba91fc --- /dev/null +++ b/roles/custom/matrix-bridge-zulip/tasks/setup_install.yml @@ -0,0 +1,62 @@ +# SPDX-FileCopyrightText: 2021 Toni Spets +# 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 the Zulip bridge image is pulled + community.docker.docker_image: + name: "{{ matrix_zulip_bridge_docker_image }}" + source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" + force_source: "{{ matrix_zulip_bridge_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_zulip_bridge_docker_image_force_pull }}" + register: result + retries: "{{ devture_playbook_help_container_retries_count }}" + delay: "{{ devture_playbook_help_container_retries_delay }}" + until: result is not failed + +- name: Ensure the Zulip bridge paths exist + ansible.builtin.file: + path: "{{ item }}" + state: directory + mode: "0750" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + with_items: + - "{{ matrix_zulip_bridge_base_path }}" + +- name: Ensure the Zulip bridge registration.yaml installed if provided + ansible.builtin.copy: + content: "{{ matrix_zulip_bridge_registration | to_nice_yaml(indent=2, width=999999) }}" + dest: "{{ matrix_zulip_bridge_base_path }}/registration.yaml" + mode: "0644" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + +- name: Ensure the Zulip bridge support files installed + ansible.builtin.template: + src: "{{ role_path }}/templates/{{ item }}.j2" + dest: "{{ matrix_zulip_bridge_base_path }}/{{ item }}" + mode: "0640" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" + with_items: + - labels + +- name: Ensure the Zulip bridge container network is created + community.general.docker_network: + enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}" + name: "{{ matrix_zulip_bridge_container_network }}" + driver: bridge + driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" + +- name: Ensure matrix-zulip-bridge.service installed + ansible.builtin.template: + src: "{{ role_path }}/templates/systemd/matrix-zulip-bridge.service.j2" + dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-zulip-bridge.service" + mode: "0644" diff --git a/roles/custom/matrix-bridge-zulip/tasks/setup_uninstall.yml b/roles/custom/matrix-bridge-zulip/tasks/setup_uninstall.yml new file mode 100644 index 000000000..e19bba4ed --- /dev/null +++ b/roles/custom/matrix-bridge-zulip/tasks/setup_uninstall.yml @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev +# SPDX-FileCopyrightText: 2021 Michael Sasser +# SPDX-FileCopyrightText: 2021 Toni Spets +# SPDX-FileCopyrightText: 2022 Marko Weltzer +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- +- name: Check existence of matrix-bridge-zulip service + ansible.builtin.stat: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-zulip-bridge.service" + register: matrix_zulip_bridge_service_stat + +- when: matrix_zulip_bridge_service_stat.stat.exists | bool + block: + - name: Ensure matrix-bridge-zulip is stopped + ansible.builtin.service: + name: matrix-zulip-bridge + state: stopped + enabled: false + daemon_reload: true + + - name: Ensure matrix-zulip-bridge.service doesn't exist + ansible.builtin.file: + path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-zulip-bridge.service" + state: absent diff --git a/roles/custom/matrix-bridge-zulip/tasks/validate_config.yml b/roles/custom/matrix-bridge-zulip/tasks/validate_config.yml new file mode 100644 index 000000000..f7be63e07 --- /dev/null +++ b/roles/custom/matrix-bridge-zulip/tasks/validate_config.yml @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# SPDX-FileCopyrightText: 2024 Suguru Hirahara +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +--- +- name: Fail if required the Zulip bridge settings not defined + ansible.builtin.fail: + msg: >- + You need to define a required configuration setting (`{{ item.name }}`). + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" + with_items: + - {"name": "matrix_zulip_bridge_container_network", when: true} + - {"name": "matrix_zulip_bridge_homeserver_url", when: true} diff --git a/roles/custom/matrix-bridge-zulip/templates/labels.j2 b/roles/custom/matrix-bridge-zulip/templates/labels.j2 new file mode 100644 index 000000000..a41889f71 --- /dev/null +++ b/roles/custom/matrix-bridge-zulip/templates/labels.j2 @@ -0,0 +1,58 @@ +{# +SPDX-FileCopyrightText: 2024 Slavi Pantaleev + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +{% if matrix_zulip_bridge_container_labels_traefik_enabled %} +traefik.enable=true + +{% if matrix_zulip_bridge_container_labels_traefik_docker_network %} +traefik.docker.network={{ matrix_zulip_bridge_container_labels_traefik_docker_network }} +{% endif %} + +traefik.http.services.matrix-zulip-bridge.loadbalancer.server.port={{ matrix_zulip_bridge_container_http_port }} + +{% set middlewares = [] %} + +{% if matrix_zulip_bridge_container_labels_traefik_path_prefix != '/' %} +traefik.http.middlewares.matrix-bridge-zulip-strip-prefix.stripprefix.prefixes={{ matrix_zulip_bridge_container_labels_traefik_path_prefix }} +{% set middlewares = middlewares + ['matrix-bridge-zulip-strip-prefix'] %} +{% endif %} + +{% if matrix_zulip_bridge_container_labels_traefik_media_enabled %} +########################################################################## +# # +# Media # +# # +########################################################################## + +traefik.http.routers.matrix-bridge-zulip-media.rule={{ matrix_zulip_bridge_container_labels_traefik_media_rule }} + +{% if matrix_zulip_bridge_container_labels_traefik_media_priority | int > 0 %} +traefik.http.routers.matrix-bridge-zulip-media.priority={{ matrix_zulip_bridge_container_labels_traefik_media_priority }} +{% endif %} + +{% if middlewares | length > 0 %} +traefik.http.routers.matrix-bridge-zulip-media.middlewares={{ middlewares | join(',') }} +{% endif %} + +traefik.http.routers.matrix-bridge-zulip-media.service=matrix-bridge-zulip +traefik.http.routers.matrix-bridge-zulip-media.entrypoints={{ matrix_zulip_bridge_container_labels_traefik_entrypoints }} + +traefik.http.routers.matrix-bridge-zulip-media.tls={{ matrix_zulip_bridge_container_labels_traefik_media_tls | to_json }} +{% if matrix_zulip_bridge_container_labels_traefik_media_entrypoints %} +traefik.http.routers.matrix-bridge-zulip-media.tls.certResolver={{ matrix_zulip_bridge_container_labels_traefik_media_tls_certResolver }} +{% endif %} + +########################################################################## +# # +# /Media # +# # +########################################################################## +{% endif %} + + +{% endif %} + +{{ matrix_zulip_bridge_container_labels_additional_labels }} diff --git a/roles/custom/matrix-bridge-zulip/templates/systemd/matrix-zulip-bridge.service.j2 b/roles/custom/matrix-bridge-zulip/templates/systemd/matrix-zulip-bridge.service.j2 new file mode 100644 index 000000000..15f05f4b3 --- /dev/null +++ b/roles/custom/matrix-bridge-zulip/templates/systemd/matrix-zulip-bridge.service.j2 @@ -0,0 +1,60 @@ +{# +SPDX-FileCopyrightText: 2021 Toni Spets +SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev +SPDX-FileCopyrightText: 2025 Suguru Hirahara + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +[Unit] +Description=a puppeting appservice bridge for Zulip +{% for service in matrix_zulip_bridge_systemd_required_services_list %} +Requires={{ service }} +After={{ service }} +{% endfor %} +{% for service in matrix_zulip_bridge_systemd_wanted_services_list %} +Wants={{ service }} +{% endfor %} +DefaultDependencies=no + +[Service] +Type=simple +Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}" +ExecStartPre=-{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ matrix_zulip_bridge_container_stop_grace_time_seconds }} matrix-bridge-zulip +ExecStartPre=-{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bridge-zulip + +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ + --rm \ + --name=matrix-bridge-zulip \ + --log-driver=none \ + --user={{ matrix_user_uid }}:{{ matrix_user_gid }} \ + --cap-drop=ALL \ + --network={{ matrix_zulip_bridge_container_network }} \ + --mount type=bind,src={{ matrix_zulip_bridge_base_path }},dst=/config \ + --label-file={{ matrix_zulip_bridge_base_path }}/labels \ + {% for arg in matrix_zulip_bridge_container_extra_arguments %} + {{ arg }} \ + {% endfor %} + {{ matrix_zulip_bridge_docker_image }} \ + {% if matrix_zulip_bridge_owner %} + -o {{ matrix_zulip_bridge_owner }} \ + {% endif %} + --config /config/registration.yaml \ + --listen-address 0.0.0.0 \ + --listen-port {{ matrix_zulip_bridge_container_http_port }} \ + {{ matrix_zulip_bridge_homeserver_url }} + +{% for network in matrix_zulip_bridge_container_additional_networks %} +ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-bridge-zulip +{% endfor %} + +ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-bridge-zulip + +ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ matrix_zulip_bridge_container_stop_grace_time_seconds }} matrix-bridge-zulip +ExecStop=-{{ devture_systemd_docker_base_host_command_docker }} rm matrix-bridge-zulip +Restart=always +RestartSec=30 +SyslogIdentifier=matrix-bridge-zulip + +[Install] +WantedBy=multi-user.target diff --git a/roles/custom/matrix-cactus-comments-client/defaults/main.yml b/roles/custom/matrix-cactus-comments-client/defaults/main.yml index e8ff73d08..5b647575d 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.36.0 +matrix_cactus_comments_client_version: 2.40.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') }}" diff --git a/roles/custom/matrix-cactus-comments-client/tasks/install.yml b/roles/custom/matrix-cactus-comments-client/tasks/install.yml index 16fdde5e2..f068fa8d3 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 @@ -5,8 +10,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_cactus_comments_client_base_path }}", when: true} - {path: "{{ matrix_cactus_comments_client_public_path }}", when: true} @@ -16,8 +21,8 @@ ansible.builtin.template: src: "{{ item.src }}" dest: "{{ item.dest }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0644 with_items: - src: "{{ role_path }}/templates/env.j2" @@ -33,15 +38,15 @@ url: "{{ matrix_cactus_comments_client_webclient_js_url }}" dest: "{{ matrix_cactus_comments_client_public_path }}/cactus.js" mode: "{{ matrix_cactus_comments_client_public_path_file_permissions }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Download web client css ansible.builtin.get_url: url: "{{ matrix_cactus_comments_client_webclient_css_url }}" dest: "{{ matrix_cactus_comments_client_public_path }}/style.css" mode: "{{ matrix_cactus_comments_client_public_path_file_permissions }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - when: matrix_cactus_comments_client_local_dir | length > 0 block: @@ -50,15 +55,15 @@ src: "{{ matrix_cactus_comments_client_local_dir }}/src/cactus.js" dest: "{{ matrix_cactus_comments_client_public_path }}/cactus.js" mode: "{{ matrix_cactus_comments_client_public_path_file_permissions }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Upload locally distributed client CSS ansible.builtin.copy: src: "{{ matrix_cactus_comments_client_local_dir }}/src/style.css" dest: "{{ matrix_cactus_comments_client_public_path }}/style.css" mode: "{{ matrix_cactus_comments_client_public_path_file_permissions }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure matrix-cactus-comments-client container image is pulled community.docker.docker_image: 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..b76cc963a 100644 --- a/roles/custom/matrix-cactus-comments-client/tasks/validate_config.yml +++ b/roles/custom/matrix-cactus-comments-client/tasks/validate_config.yml @@ -1,10 +1,14 @@ +# SPDX-FileCopyrightText: 2024 Slavi Pantaleev +# +# SPDX-License-Identifier: AGPL-3.0-or-later + --- - name: Fail if required matrix-cactus-comments-client settings not defined ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`). - when: "vars[item] == ''" + when: "lookup('vars', item, default='') == ''" with_items: - matrix_cactus_comments_client_hostname - matrix_cactus_comments_client_path_prefix 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..995ce5d6f 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=matrix-cactus-comments-client server {% for service in matrix_cactus_comments_client_systemd_required_services_list %} @@ -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 \ @@ -29,7 +29,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ {% endif %} --env-file={{ matrix_cactus_comments_client_base_path }}/env \ --label-file={{ matrix_cactus_comments_client_base_path }}/labels \ - --mount type=bind,src={{ matrix_cactus_comments_client_public_path }},dst=/public,ro \ + --mount type=bind,src={{ matrix_cactus_comments_client_public_path }},dst=/var/public,ro \ {{ matrix_cactus_comments_client_container_image }} {% for network in matrix_cactus_comments_client_container_additional_networks %} @@ -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..f68b6dff2 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 @@ -5,28 +11,28 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_cactus_comments_base_path }}", when: true} - {path: "{{ matrix_cactus_comments_container_tmp_path }}", when: true} - - {path: "{{ matrix_cactus_comments_docker_src_files_path }}", when: matrix_cactus_comments_container_image_self_build} + - {path: "{{ matrix_cactus_comments_docker_src_files_path }}", when: "{{ matrix_cactus_comments_container_image_self_build }}"} when: "item.when | bool" - name: Ensure matrix-cactus-comments environment file created ansible.builtin.template: src: "{{ role_path }}/templates/env.j2" dest: "{{ matrix_cactus_comments_app_service_env_file }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0640 - name: Ensure matrix-cactus-comments appservice file created ansible.builtin.template: src: "{{ role_path }}/templates/cactus_appservice.yaml.j2" dest: "{{ matrix_cactus_comments_app_service_config_file }}" - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" mode: 0640 - name: Ensure matrix-cactus-comments image is pulled @@ -48,7 +54,7 @@ dest: "{{ matrix_cactus_comments_docker_src_files_path }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_cactus_comments_git_pull_results when: "matrix_cactus_comments_container_image_self_build | bool" 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..c1df48a06 100644 --- a/roles/custom/matrix-cactus-comments/tasks/validate_config.yml +++ b/roles/custom/matrix-cactus-comments/tasks/validate_config.yml @@ -1,11 +1,17 @@ +# 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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_bot_cactus_comments_systemd_required_services_list', 'new': 'matrix_cactus_comments_systemd_required_services_list'} - {'old': 'matrix_bot_cactus_comments_systemd_wanted_services_list', 'new': 'matrix_cactus_comments_systemd_wanted_services_list'} @@ -18,7 +24,7 @@ ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`). - when: "vars[item] == ''" + when: "lookup('vars', item, default='') == ''" with_items: - "matrix_cactus_comments_as_token" - "matrix_cactus_comments_hs_token" 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..1178c002f 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Cactus Comments {% for service in matrix_cactus_comments_systemd_required_services_list %} @@ -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 7016240c4..2b5283ce0 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.3.0 -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.10.2 +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" @@ -147,6 +159,9 @@ matrix_client_cinny_self_check_validate_certificates: true # See `matrix_client_cinny_config_homeserverList`. matrix_client_cinny_default_hs_url: "" +# Controls whether the Cinny access log is enabled +matrix_client_cinny_access_log_enabled: true + # Controls the `defaultHomeserver` value in the `config.json` file. matrix_client_cinny_config_defaultHomeserver: 0 # noqa var-naming @@ -176,7 +191,7 @@ matrix_client_cinny_config_featuredCommunities_openAsDefault: false # noqa var- # # The side-effect of this lookup is that Ansible would even parse the JSON for us, returning a dict. # This is unlike what it does when looking up YAML template files (no automatic parsing there). -matrix_client_cinny_configuration_default: "{{ lookup('template', 'templates/config.json.j2') }}" +matrix_client_cinny_configuration_default: "{{ lookup('template', 'templates/config.json.j2', convert_data=False) | from_json }}" # Your custom JSON configuration for Cinny should go to `matrix_client_cinny_configuration_extension_json`. # This configuration extends the default starting configuration (`matrix_client_cinny_configuration_default`). 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..80bff534c 100644 --- a/roles/custom/matrix-client-cinny/tasks/setup_install.yml +++ b/roles/custom/matrix-client-cinny/tasks/setup_install.yml @@ -1,11 +1,20 @@ +# 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: path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_client_cinny_data_path }}", when: true} - {path: "{{ matrix_client_cinny_docker_src_files_path }}", when: "{{ matrix_client_cinny_container_image_self_build }}"} @@ -30,7 +39,7 @@ version: "{{ matrix_client_cinny_docker_image.split(':')[1] }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_client_cinny_git_pull_results when: "matrix_client_cinny_container_image_self_build | bool" @@ -39,16 +48,16 @@ content: "{{ matrix_client_cinny_configuration | to_nice_json }}" dest: "{{ matrix_client_cinny_data_path }}/config.json" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure Cinny additional config files installed ansible.builtin.template: src: "{{ item.src }}" dest: "{{ matrix_client_cinny_data_path }}/{{ item.name }}" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {src: "{{ role_path }}/templates/nginx.conf.j2", name: "nginx.conf"} - {src: "{{ role_path }}/templates/labels.j2", name: "labels"} 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..84719ed47 100644 --- a/roles/custom/matrix-client-cinny/tasks/validate_config.yml +++ b/roles/custom/matrix-client-cinny/tasks/validate_config.yml @@ -1,14 +1,27 @@ +# 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: msg: > You need to define a required configuration setting (`{{ item }}`) to use Cinny. - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_client_cinny_default_hs_url', when: true} - {'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: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" + 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: >- @@ -23,7 +36,7 @@ ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`). - when: "vars[item] == ''" + when: "lookup('vars', item, default='') == ''" with_items: - matrix_client_cinny_container_labels_traefik_hostname - matrix_client_cinny_container_labels_traefik_path_prefix 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 b/roles/custom/matrix-client-cinny/templates/nginx.conf.j2 index 2b70f32d2..a8cc8da68 100644 --- a/roles/custom/matrix-client-cinny/templates/nginx.conf.j2 +++ b/roles/custom/matrix-client-cinny/templates/nginx.conf.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#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. # @@ -32,10 +32,14 @@ http { 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"'; + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + {% if matrix_client_cinny_access_log_enabled %} access_log /var/log/nginx/access.log main; + {% else %} + access_log off; + {% endif %} sendfile on; #tcp_nopush on; 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..0275ee8c7 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Cinny Client {% for service in matrix_client_cinny_systemd_required_services_list %} @@ -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 d536b55e4..c76955979 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 @@ -8,13 +26,15 @@ matrix_client_element_container_image_self_build_repo: "https://github.com/eleme # Controls whether to patch webpack.config.js when self-building, so that building can pass on low-memory systems (< 4 GB RAM): # - https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1357 # - 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 }}" +matrix_client_element_container_image_self_build_low_memory_system_patch_enabled: "{{ ansible_facts['memtotal_mb'] < 4096 }}" -# renovate: datasource=docker depName=vectorim/element-web -matrix_client_element_version: v1.11.92 +# renovate: datasource=docker depName=ghcr.io/element-hq/element-web +matrix_client_element_version: v1.12.7 -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. # @@ -154,6 +186,7 @@ matrix_client_element_integrations_rest_url: "https://scalar.vector.im/api" matrix_client_element_integrations_widgets_urls: ["https://scalar.vector.im/api"] matrix_client_element_integrations_jitsi_widget_url: "https://scalar.vector.im/api/widgets/jitsi.html" matrix_client_element_permalink_prefix: "https://matrix.to" # noqa var-naming +matrix_client_element_mobile_guide_app_variant: "element" matrix_client_element_bug_report_endpoint_url: "https://element.io/bugreports/submit" matrix_client_element_show_lab_settings: true # noqa var-naming # Element public room directory server(s) @@ -180,6 +213,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, @@ -227,7 +321,7 @@ matrix_client_element_setting_defaults_custom_themes: [] # noqa var-naming # # The side-effect of this lookup is that Ansible would even parse the JSON for us, returning a dict. # This is unlike what it does when looking up YAML template files (no automatic parsing there). -matrix_client_element_configuration_default: "{{ lookup('template', 'templates/config.json.j2') }}" +matrix_client_element_configuration_default: "{{ lookup('template', 'templates/config.json.j2', convert_data=False) | from_json }}" # Your custom JSON configuration for Element Web should go to `matrix_client_element_configuration_extension_json`. # This configuration extends the default starting configuration (`matrix_client_element_configuration_default`). @@ -265,7 +359,7 @@ matrix_client_element_location_sharing_enabled: false # # The side-effect of this lookup is that Ansible would even parse the JSON for us, returning a dict. # This is unlike what it does when looking up YAML template files (no automatic parsing there). -matrix_client_element_location_sharing_map_style_default: "{{ lookup('template', 'templates/map_style.json.j2') }}" +matrix_client_element_location_sharing_map_style_default: "{{ lookup('template', 'templates/map_style.json.j2', convert_data=False) | from_json }}" # Your custom JSON configuration for Element location sharing map style should go to `matrix_client_element_location_sharing_map_style_extension_json`. # This configuration extends the default starting configuration (`matrix_client_element_location_sharing_map_style_default`). @@ -322,3 +416,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..a226f5b8a 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 @@ -5,8 +16,8 @@ path: "{{ item.path }}" state: directory mode: 0750 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" with_items: - {path: "{{ matrix_client_element_data_path }}", when: true} - {path: "{{ matrix_client_element_docker_src_files_path }}", when: "{{ matrix_client_element_container_image_self_build }}"} @@ -31,7 +42,7 @@ version: "{{ matrix_client_element_docker_image.split(':')[1] }}" force: "yes" become: true - become_user: "{{ matrix_user_username }}" + become_user: "{{ matrix_user_name }}" register: matrix_client_element_git_pull_results when: "matrix_client_element_container_image_self_build | bool" @@ -64,8 +75,8 @@ content: "{{ matrix_client_element_configuration | to_nice_json }}" dest: "{{ matrix_client_element_data_path }}/config.json" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure Element location sharing map style installed when: matrix_client_element_location_sharing_enabled | bool @@ -73,23 +84,28 @@ content: "{{ matrix_client_element_location_sharing_map_style | to_nice_json }}" dest: "{{ matrix_client_element_data_path }}/map_style.json" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" - name: Ensure Element Web config files installed ansible.builtin.template: src: "{{ item.src }}" dest: "{{ matrix_client_element_data_path }}/{{ item.name }}" mode: 0644 - owner: "{{ matrix_user_username }}" - group: "{{ matrix_user_groupname }}" + owner: "{{ matrix_user_name }}" + group: "{{ matrix_group_name }}" 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..ad44193d0 100644 --- a/roles/custom/matrix-client-element/tasks/validate_config.yml +++ b/roles/custom/matrix-client-element/tasks/validate_config.yml @@ -1,10 +1,16 @@ +# 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 ansible.builtin.fail: msg: > You need to define a required configuration setting (`{{ item }}`) for using Element Web. - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" with_items: - {'name': 'matrix_client_element_default_hs_url', when: true} - {'name': 'matrix_client_element_container_network', when: true} @@ -23,18 +29,16 @@ 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 these variable (`matrix_riot_web_*` -> `matrix_client_element_*`) on your configuration file (vars.yml): {{ lookup('ansible.builtin.varnames', '^matrix_riot_web_.+', wantlist=True) | join(', ') }} Also note that DNS configuration changes may be necessary. - when: "vars | dict2items | selectattr('key', 'match', item.old) | list | items2dict" - with_items: - - {'old': 'matrix_riot_web_.*', 'new': 'matrix_client_element_.*'} + when: "lookup('ansible.builtin.varnames', '^matrix_riot_web_.+', wantlist=True) | length > 0" - name: (Deprecation) Catch and report renamed element-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 }}`). - when: "item.old in vars" + Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml). + when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_client_element_showLabsSettings', 'new': 'matrix_client_element_show_lab_settings'} - {'old': 'matrix_client_element_permalinkPrefix', 'new': 'matrix_client_element_permalink_prefix'} @@ -45,6 +49,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: @@ -52,7 +57,7 @@ ansible.builtin.fail: msg: >- You need to define a required configuration setting (`{{ item }}`). - when: "vars[item] == ''" + when: "lookup('vars', item, default='') | string | length == 0" with_items: - matrix_client_element_container_labels_traefik_hostname - matrix_client_element_container_labels_traefik_path_prefix diff --git a/roles/custom/matrix-client-element/templates/config.json.j2 b/roles/custom/matrix-client-element/templates/config.json.j2 index 9d354a3c2..4a2ec1c5f 100644 --- a/roles/custom/matrix-client-element/templates/config.json.j2 +++ b/roles/custom/matrix-client-element/templates/config.json.j2 @@ -11,6 +11,7 @@ "setting_defaults": { "custom_themes": {{ matrix_client_element_setting_defaults_custom_themes | to_json }} }, + "mobile_guide_app_variant": {{ matrix_client_element_mobile_guide_app_variant | string | to_json }}, "default_theme": {{ matrix_client_element_default_theme | string | to_json }}, "default_country_code": {{ matrix_client_element_default_country_code | string | to_json }}, "permalink_prefix": {{ matrix_client_element_permalink_prefix | string | to_json }}, @@ -45,5 +46,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..0af097112 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 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True [Unit] Description=Matrix Element Web server {% for service in matrix_client_element_systemd_required_services_list %} @@ -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,uid={{ matrix_user_uid }} \ --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 b/roles/custom/matrix-client-element/templates/welcome.html.j2 index f25ac6812..d505e2fa2 100644 --- a/roles/custom/matrix-client-element/templates/welcome.html.j2 +++ b/roles/custom/matrix-client-element/templates/welcome.html.j2 @@ -1,4 +1,4 @@ -#jinja2: lstrip_blocks: "True" +#jinja2: lstrip_blocks: True