mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2026-07-16 03:33:47 +03:00
Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ab80ead1b3 | |||
| 5da2d0e4a5 | |||
| b2788f690a | |||
| 7897d63660 | |||
| 23783f87bc | |||
| eb0af09bf5 | |||
| f93616c06e | |||
| 376786b997 | |||
| de1ba73f40 | |||
| d2f1fa74cc | |||
| 62792b3670 | |||
| a039cc5982 | |||
| 5a9e34c563 | |||
| 534631c1e7 | |||
| 635bb61424 | |||
| c7819f576a | |||
| 435aecc1a8 | |||
| a03faef70f | |||
| 94d8e28306 | |||
| 6b4b7647e4 | |||
| 90d486c4f6 | |||
| 2d436491c6 | |||
| 8b9fe4ce37 | |||
| 639996d3a0 | |||
| f8539f4cbf | |||
| a4915c0b9e | |||
| deb19c46a8 | |||
| 2fe710bdb4 | |||
| ee38b3aac2 | |||
| 506d4ab4c9 | |||
| 44cfd16036 | |||
| b32272ef40 | |||
| d0f877fb86 | |||
| bb1cbdb111 | |||
| f8ea906c19 | |||
| 7f4691aabb | |||
| 85484aed85 | |||
| fa8c764708 | |||
| fba605de34 | |||
| 0b966a4500 | |||
| 93caf43948 | |||
| 4a4ca67465 | |||
| 0f40fe6270 |
@@ -0,0 +1,13 @@
|
||||
# SPDX-FileCopyrightText: 2025 Jonah Aragon
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
FROM ghcr.io/devture/ansible:11.6.0-r0-0
|
||||
|
||||
# Install additional packages
|
||||
RUN apk add --no-cache \
|
||||
pwgen
|
||||
|
||||
# Preserve command history across container restarts
|
||||
RUN SNIPPET="export HISTFILE=/commandhistory/.ash_history" \
|
||||
&& echo "$SNIPPET" >> "/root/.profile"
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "matrix-docker-ansible-deploy",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
"context": ".."
|
||||
},
|
||||
"postCreateCommand": {
|
||||
"Fix Volume Permissions": "chown -R $(whoami): /commandhistory"
|
||||
},
|
||||
"mounts": [
|
||||
{
|
||||
"source": "matrix-docker-ansible-deploy-bashhistory",
|
||||
"target": "/commandhistory",
|
||||
"type": "volume"
|
||||
}
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"EditorConfig.EditorConfig",
|
||||
"redhat.ansible",
|
||||
"redhat.vscode-yaml",
|
||||
"ms-python.python"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
SPDX-FileCopyrightText: 2025 Jonah Aragon
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -32,6 +32,18 @@
|
||||
"dock.mau.dev/mautrix/**"
|
||||
],
|
||||
"allowedVersions": "/^v0\\./"
|
||||
},
|
||||
{
|
||||
"matchFileNames": [
|
||||
".github/workflows/close-stale-issues.yml",
|
||||
".github/workflows/lock-threads.yml",
|
||||
".github/workflows/matrix.yml",
|
||||
".github/workflows/update-translations.yml",
|
||||
"flake.lock",
|
||||
"i18n/requirements.txt",
|
||||
"mise.toml"
|
||||
],
|
||||
"automerge": true
|
||||
}
|
||||
],
|
||||
"pre-commit": {
|
||||
|
||||
@@ -15,7 +15,7 @@ repos:
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.4.2
|
||||
rev: v2.4.3
|
||||
hooks:
|
||||
- id: codespell
|
||||
args: ["--skip=*.po,*.pot,i18n/"]
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
# 2026-07-15
|
||||
|
||||
## Google Voice bridging
|
||||
|
||||
The playbook can now bridge [Google Voice](https://voice.google.com/) via the [mautrix-gvoice](https://github.com/mautrix/gvoice) bridge. Text and media flow both ways, and portal rooms build themselves for your recent conversations.
|
||||
|
||||
Login is by cookie, not a paired phone: you copy the cookies from a browser signed in to voice.google.com and hand them to the bot. Google expires them on its own schedule, so expect to log in again every so often. See [Setting up Mautrix Google Voice bridging](./docs/configuring-playbook-bridge-mautrix-gvoice.md) to get started.
|
||||
|
||||
## matrix-appservice-kakaotalk has been removed from the playbook
|
||||
|
||||
The [matrix-appservice-kakaotalk](./docs/configuring-playbook-bridge-appservice-kakaotalk.md) bridge has been removed from the playbook. This component could only be installed by self-building its source code, and its upstream repository has become unreachable, which makes installation impossible. The bridge was also based on the unmaintained node-kakao library, and there have been reports that using it may get KakaoTalk accounts banned.
|
||||
|
||||
The playbook will let you know if you're using any `matrix_appservice_kakaotalk_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the component manually](./docs/configuring-playbook-bridge-appservice-kakaotalk.md#uninstalling-the-component-manually).
|
||||
|
||||
## Dedicated CAPTCHA variables for Matrix Authentication Service
|
||||
|
||||
[Matrix Authentication Service](./docs/configuring-playbook-matrix-authentication-service.md) can now be protected with CAPTCHA (ReCaptcha v2, Cloudflare Turnstile, or hCaptcha) via dedicated variables, instead of going through `matrix_authentication_service_configuration_extension_yaml`. See the [captcha documentation](./docs/configuring-captcha.md#matrix-authentication-service) for details.
|
||||
|
||||
# 2026-07-14
|
||||
|
||||
## The playbook no longer ships a custom welcome page for Element Web
|
||||
|
||||
Element Web [redesigned its welcome page](https://github.com/element-hq/element-web/pull/33211) (the screen shown at `/#/welcome` before logging in) into a built-in component and no longer loads a custom `welcome.html` file by default. Since the playbook upgraded to an Element Web version containing that change (spring 2026), the custom welcome page the playbook installed (and the variables customizing it) had silently stopped having any effect.
|
||||
|
||||
The playbook now embraces the new upstream behavior and no longer ships its own `welcome.html`. The following variables have been removed and the playbook will let you know if you're still using them: `matrix_client_element_welcome_headline`, `matrix_client_element_welcome_text`, `matrix_client_element_welcome_logo_link` and `matrix_client_element_page_template_welcome_path`.
|
||||
|
||||
Most welcome page customizations keep working, because they go through Element Web's branding configuration, which the new welcome page still honors:
|
||||
|
||||
- a custom logo, via `matrix_client_element_welcome_logo` (or `matrix_client_element_branding_auth_header_logo_url`)
|
||||
- a custom background, via `matrix_client_element_branding_welcome_background_url`
|
||||
|
||||
If you need a fully custom welcome page, you can self-host an HTML page and point Element Web at it, like this:
|
||||
|
||||
```yaml
|
||||
matrix_client_element_configuration_extension_json: |
|
||||
{
|
||||
"embedded_pages": {
|
||||
"welcome_url": "https://example.com/my-welcome.html"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## BorgBackup now includes Synapse's local thumbnails
|
||||
|
||||
For Synapse servers, the built-in [BorgBackup](./docs/configuring-playbook-backup-borg.md) integration no longer excludes the media store's `local_thumbnails` directory from backups.
|
||||
|
||||
Synapse only generates thumbnails of local media at upload time (unless `dynamic_thumbnails` is enabled, which the playbook does not do), and there is no tooling to regenerate them. Restoring a backup made with the previous exclusion list therefore left all previously uploaded local images without thumbnails. The [official Synapse backup guide](https://element-hq.github.io/synapse/latest/usage/administration/backups.html) recommends backing this directory up, and the playbook now follows that recommendation.
|
||||
|
||||
Expect your backups to grow somewhat, depending on how much image media your local users have uploaded. If you prefer the old behavior, you can redefine `backup_borg_location_exclude_patterns` in your `vars.yml`.
|
||||
|
||||
# 2026-07-12
|
||||
|
||||
## matrix-registration-bot has been removed from the playbook
|
||||
|
||||
@@ -116,6 +116,7 @@ Bridges can be used to connect your Matrix installation with third-party communi
|
||||
| [mautrix-slack](https://github.com/mautrix/slack) | ❌ | Bridge to [Slack](https://slack.com/) | [Link](docs/configuring-playbook-bridge-mautrix-slack.md) |
|
||||
| [mautrix-telegram](https://github.com/mautrix/telegram) | ❌ | Bridge to [Telegram](https://telegram.org/) | [Link](docs/configuring-playbook-bridge-mautrix-telegram.md) |
|
||||
| [mautrix-gmessages](https://github.com/mautrix/gmessages) | ❌ | Bridge to [Google Messages](https://messages.google.com/) | [Link](docs/configuring-playbook-bridge-mautrix-gmessages.md) |
|
||||
| [mautrix-gvoice](https://github.com/mautrix/gvoice) | ❌ | Bridge to [Google Voice](https://voice.google.com/) | [Link](docs/configuring-playbook-bridge-mautrix-gvoice.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) |
|
||||
| [matrix-rustpush-bridge](https://github.com/jasonlaguidice/imessage) | ❌ | Bridge to [iMessage](https://support.apple.com/messages) via Apple Push Notification service | [Link](docs/configuring-playbook-bridge-rustpush.md) |
|
||||
@@ -126,7 +127,6 @@ Bridges can be used to connect your Matrix installation with third-party communi
|
||||
| [mautrix-signal](https://github.com/mautrix/signal) | ❌ | Bridge to [Signal](https://www.signal.org/) | [Link](docs/configuring-playbook-bridge-mautrix-signal.md) |
|
||||
| [beeper-linkedin](https://github.com/beeper/linkedin) | ❌ | Bridge to [LinkedIn](https://www.linkedin.com/) | [Link](docs/configuring-playbook-bridge-beeper-linkedin.md) |
|
||||
| [matrix-appservice-irc](https://github.com/matrix-org/matrix-appservice-irc) | ❌ | Bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-appservice-irc.md) |
|
||||
| [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) | ❌ | Bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) | [Link](docs/configuring-playbook-bridge-appservice-kakaotalk.md) |
|
||||
| [matrix-appservice-discord](https://github.com/matrix-org/matrix-appservice-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) | [Link](docs/configuring-playbook-bridge-appservice-discord.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) |
|
||||
|
||||
@@ -50,6 +50,8 @@ This ensures that:
|
||||
|
||||
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).
|
||||
|
||||
💡 If you use [Visual Studio Code](https://code.visualstudio.com/) or [GitHub Codespaces](https://github.com/features/codespaces), the playbook also ships a [dev container](https://containers.dev/) configuration (see the `.devcontainer/` directory) based on this same Ansible Docker image, which can prepare such a containerized Ansible environment for you automatically.
|
||||
|
||||
### Running Ansible in a container on the Matrix server itself
|
||||
|
||||
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:
|
||||
|
||||
@@ -15,6 +15,8 @@ Captcha can be enabled for this home server. This file explains how to do that.
|
||||
|
||||
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.
|
||||
|
||||
If you are using [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md), captcha is configured there instead (it handles registration), and [Cloudflare Turnstile](https://www.cloudflare.com/application-services/products/turnstile/) is supported as well. See [Matrix Authentication Service](#matrix-authentication-service) below.
|
||||
|
||||
## ReCaptcha
|
||||
|
||||
### Getting keys
|
||||
@@ -61,3 +63,16 @@ matrix_dendrite_client_api_recaptcha_api_js_url: 'https://js.hcaptcha.com/1/api.
|
||||
matrix_dendrite_client_api_recaptcha_form_field: 'h-captcha-response'
|
||||
matrix_dendrite_client_api_recaptcha_sitekey_class: 'h-captcha'
|
||||
```
|
||||
|
||||
## Matrix Authentication Service
|
||||
|
||||
When [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) is enabled, registration and other account operations are handled by it, so captcha protection is configured there (the Synapse and Dendrite settings above do not apply).
|
||||
|
||||
Matrix Authentication Service supports [ReCaptcha v2](http://www.google.com/recaptcha/admin), [Cloudflare Turnstile](https://www.cloudflare.com/application-services/products/turnstile/) and [hCaptcha](https://dashboard.hcaptcha.com/sites/new). Obtain a site/secret key pair from your chosen service, then add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
|
||||
|
||||
```yaml
|
||||
# Valid values: recaptcha_v2, cloudflare_turnstile, hcaptcha
|
||||
matrix_authentication_service_config_captcha_service: recaptcha_v2
|
||||
matrix_authentication_service_config_captcha_site_key: 'YOUR_SITE_KEY'
|
||||
matrix_authentication_service_config_captcha_secret_key: 'YOUR_SECRET_KEY'
|
||||
```
|
||||
|
||||
@@ -1,75 +1,26 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2022 Dennis Ciba
|
||||
SPDX-FileCopyrightText: 2022 Slavi Pantaleev
|
||||
SPDX-FileCopyrightText: 2022 - 2026 Slavi Pantaleev
|
||||
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
|
||||
SPDX-FileCopyrightText: 2024 MDAD project contributors
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-->
|
||||
|
||||
# Setting up Appservice Kakaotalk bridging (optional)
|
||||
# Setting up Appservice Kakaotalk bridging (optional, removed)
|
||||
|
||||
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.
|
||||
🪦 The playbook used to be able to install and configure [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) (a bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG)), but no longer includes this component.
|
||||
|
||||
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.
|
||||
The bridge could only be installed by self-building its source code, and its upstream repository has become unreachable, which makes installation impossible. The bridge was also based on the now-unmaintained [node-kakao](https://github.com/storycraft/node-kakao) library, and there have been reports that using it may get your Kakaotalk account banned.
|
||||
|
||||
> [!WARNING]
|
||||
> There have been recent reports (~2022-09-16) that **using this bridge may get your account banned**.
|
||||
## Uninstalling the component manually
|
||||
|
||||
## Prerequisite (optional)
|
||||
If you still have matrix-appservice-kakaotalk 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:
|
||||
|
||||
### Enable Shared Secret Auth
|
||||
|
||||
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_appservice_kakaotalk_enabled: true
|
||||
```
|
||||
|
||||
### Extending the configuration
|
||||
|
||||
There are some additional things you may wish to configure about the bridge.
|
||||
|
||||
Take a look at:
|
||||
|
||||
- `roles/custom/matrix-bridge-appservice-kakaotalk/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
|
||||
- `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
|
||||
|
||||
## Installing
|
||||
|
||||
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
|
||||
|
||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
||||
```sh
|
||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
||||
```
|
||||
|
||||
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 `@kakaotalkbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
||||
|
||||
You then need to send `login --save EMAIL_OR_PHONE_NUMBER` to the bridge bot to enable bridging for your Kakaotalk account. The `--save` flag may be omitted, if you'd rather not save your password.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-appservice-kakaotalk`.
|
||||
|
||||
### Increase logging verbosity
|
||||
|
||||
The default logging level for this component is `WARNING`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
|
||||
|
||||
```yaml
|
||||
matrix_appservice_kakaotalk_logging_level: DEBUG
|
||||
systemctl disable --now matrix-appservice-kakaotalk.service
|
||||
|
||||
systemctl disable --now matrix-appservice-kakaotalk-node.service
|
||||
|
||||
rm -rf /matrix/appservice-kakaotalk
|
||||
```
|
||||
|
||||
@@ -40,6 +40,16 @@ matrix_hookshot_enabled: true
|
||||
# matrix_hookshot_github_private_key: "GITHUB_PRIVATE_KEY_HERE"
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> End-to-bridge encryption also requires the homeserver to support (and have enabled) [MSC2409](https://github.com/matrix-org/matrix-spec-proposals/pull/2409) and [MSC3202](https://github.com/matrix-org/matrix-spec-proposals/pull/3202). If you are using Synapse, enable them by also adding this to your `vars.yml` file:
|
||||
>
|
||||
> ```yaml
|
||||
> matrix_synapse_experimental_features_msc2409_to_device_messages_enabled: true
|
||||
> matrix_synapse_experimental_features_msc3202_transaction_extensions_enabled: true
|
||||
> ```
|
||||
>
|
||||
> These are experimental homeserver-wide features (as is Hookshot's encryption support itself), so enable them deliberately.
|
||||
|
||||
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.
|
||||
|
||||
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).
|
||||
|
||||
@@ -226,7 +226,7 @@ This is the recommended way of setting up Double Puppeting, as it's easier to ac
|
||||
- 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).
|
||||
|
||||
<!-- TODO: remove this note if the Shared Secret Auth service has stopped working or the bridges have been removed -->
|
||||
- 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.
|
||||
- Some bridges like [the deprecated Facebook mautrix bridge](configuring-playbook-bridge-mautrix-facebook.md) 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.
|
||||
|
||||
#### Method 2: manually, by asking each user to provide a working access token
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2026 MDAD project contributors
|
||||
SPDX-FileCopyrightText: 2026 Nikita Chernyi
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-->
|
||||
|
||||
# Setting up Mautrix Google Voice bridging (optional)
|
||||
|
||||
<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>
|
||||
|
||||
The playbook can install and configure [mautrix-gvoice](https://github.com/mautrix/gvoice) for you, for bridging to [Google Voice](https://voice.google.com/).
|
||||
|
||||
See the project's [documentation](https://docs.mau.fi/bridges/go/gvoice/index.html) 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) 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_gvoice_enabled: true
|
||||
```
|
||||
|
||||
### Extending the configuration
|
||||
|
||||
There are some additional things you may wish to configure about the bridge.
|
||||
|
||||
<!-- NOTE: relay mode is not supported for this 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:
|
||||
|
||||
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
|
||||
```sh
|
||||
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
|
||||
```
|
||||
|
||||
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, start a chat with `@gvoicebot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
|
||||
|
||||
Google Voice has no phone to pair and no QR code to scan. It logs in with cookies, which you copy from a browser already signed in to [voice.google.com](https://voice.google.com/) and hand to the bot. It is fiddlier than scanning a code and feels more suspicious than it is, but Google leaves no cleaner door open. The bridge's [official Authentication guide](https://docs.mau.fi/bridges/go/gvoice/authentication.html) has the exact cookies to grab and the steps for grabbing them.
|
||||
|
||||
Those cookies are a login session, and Google expires them on its own schedule. When they lapse the bridge goes quiet and you log in again. Nothing is broken, that is just how cookie auth ages.
|
||||
|
||||
Once you log in, the bridge builds portal rooms for your recent conversations and carries text and media both ways. Don't reach for it to start a brand-new chat or to place a call, though. That ground still belongs to Google Voice, so keep the app around for those.
|
||||
|
||||
## 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-gvoice`.
|
||||
|
||||
### 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_gvoice_logging_level: 'debug'
|
||||
```
|
||||
@@ -71,4 +71,6 @@ matrix_synapse_federation_port_enabled: false
|
||||
matrix_synapse_tls_federation_listener_enabled: false
|
||||
```
|
||||
|
||||
**Note**: `matrix_synapse_federation_port_enabled: false` only makes sense in this specific setup, where federation traffic is served through the client port (because of the `federation` entry in `matrix_synapse_http_listener_resource_names`). If federation still flows through the dedicated federation port on your setup (e.g. another reverse proxy of yours forwarding a custom public port to this playbook's federation port), leave `matrix_synapse_federation_port_enabled` at its default (enabled). Disabling it removes the federation route entirely and breaks such setups.
|
||||
|
||||
**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 <https://federationtester.matrix.org/> without issues.**
|
||||
|
||||
@@ -146,6 +146,8 @@ Bridges can be used to connect your Matrix installation with third-party communi
|
||||
|
||||
- [Setting up Mautrix Google Messages bridging](configuring-playbook-bridge-mautrix-gmessages.md)
|
||||
|
||||
- [Setting up Mautrix Google Voice bridging](configuring-playbook-bridge-mautrix-gvoice.md)
|
||||
|
||||
- [Setting up Mautrix Whatsapp bridging](configuring-playbook-bridge-mautrix-whatsapp.md)
|
||||
|
||||
- [Setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md)
|
||||
@@ -166,8 +168,6 @@ Bridges can be used to connect your Matrix installation with third-party communi
|
||||
|
||||
- [Setting up Appservice Discord bridging](configuring-playbook-bridge-appservice-discord.md)
|
||||
|
||||
- [Setting up Appservice Kakaotalk bridging](configuring-playbook-bridge-appservice-kakaotalk.md)
|
||||
|
||||
- [Setting up Beeper LinkedIn bridging](configuring-playbook-bridge-beeper-linkedin.md)
|
||||
|
||||
- [Setting up matrix-hookshot](configuring-playbook-bridge-hookshot.md) — a bridge between Matrix and multiple project management services, such as [GitHub](https://github.com), [GitLab](https://about.gitlab.com) and [JIRA](https://www.atlassian.com/software/jira).
|
||||
@@ -263,6 +263,8 @@ 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 Kakaotalk bridging](configuring-playbook-bridge-appservice-kakaotalk.md) (removed; the upstream repository has become unreachable and the component could only be installed by self-building it)
|
||||
|
||||
- [Setting up Appservice Slack bridging](configuring-playbook-bridge-appservice-slack.md) (removed; this component has been discontinued)
|
||||
|
||||
- [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))
|
||||
|
||||
@@ -112,7 +112,9 @@ This option is less fragile and generally better.
|
||||
|
||||
On the base domain's server (e.g. `example.com`), you can set up reverse-proxying (or simply a 302 redirect), so that any access for the `/.well-known/matrix` location prefix is forwarded to the Matrix domain's server (e.g. `matrix.example.com`).
|
||||
|
||||
With this method, you **don't need** to add special HTTP headers for [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) reasons (like `Access-Control-Allow-Origin`), because your Matrix server (where requests ultimately go) will be configured by this playbook correctly.
|
||||
With reverse-proxying, 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.
|
||||
|
||||
If you use a 302 redirect instead, be aware that browsers apply CORS checks to every response in the redirect chain, so the redirect response itself must also carry an `Access-Control-Allow-Origin: *` header. Otherwise, web-based Matrix clients (like Element Web) may fail to work even though the final destination sets the header correctly.
|
||||
|
||||
**For nginx**, it would be something like this:
|
||||
|
||||
@@ -155,6 +157,23 @@ example.com {
|
||||
}
|
||||
```
|
||||
|
||||
**Note**: Caddy does not process directives in the order they appear in the Caddyfile, but according to its own [directive order](https://caddyserver.com/docs/caddyfile/directives#directive-order). Notably, `redir` is evaluated before `reverse_proxy`, so a `redir` elsewhere in the same site block (a common way to send the base domain to `www.example.com` or to another site) takes precedence and breaks the well-known reverse-proxying. In such cases, wrap the directives in [`handle`](https://caddyserver.com/docs/caddyfile/directives/handle) blocks to enforce the intended priority:
|
||||
|
||||
```caddy
|
||||
example.com {
|
||||
handle /.well-known/matrix/* {
|
||||
reverse_proxy https://matrix.example.com {
|
||||
header_up Host {upstream_hostport}
|
||||
}
|
||||
}
|
||||
|
||||
handle {
|
||||
# Everything else, e.g. a redirect to some other site
|
||||
redir https://www.example.com{uri}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**For HAProxy**, it would be something like this:
|
||||
|
||||
```haproxy
|
||||
|
||||
@@ -91,6 +91,7 @@ Bridges can be used to connect your Matrix installation with third-party communi
|
||||
| [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/) |
|
||||
| [mautrix-gmessages](configuring-playbook-bridge-mautrix-gmessages.md) | [mautrix/gmessages](https://mau.dev/mautrix/gmessages/container_registry) | ❌ | Bridge to [Google Messages](https://messages.google.com/) |
|
||||
| [mautrix-gvoice](configuring-playbook-bridge-mautrix-gvoice.md) | [mautrix/gvoice](https://mau.dev/mautrix/gvoice/container_registry) | ❌ | Bridge to [Google Voice](https://voice.google.com/) |
|
||||
| [mautrix-whatsapp](configuring-playbook-bridge-mautrix-whatsapp.md) | [mautrix/whatsapp](https://mau.dev/mautrix/whatsapp/container_registry) | ❌ | Bridge to [WhatsApp](https://www.whatsapp.com/) |
|
||||
| [mautrix-wsproxy](configuring-playbook-bridge-mautrix-wsproxy.md) | [mautrix/wsproxy](https://mau.dev/mautrix/wsproxy/container_registry) | ❌ | Bridge to Android SMS or Apple iMessage |
|
||||
| [mautrix-twitter](configuring-playbook-bridge-mautrix-twitter.md) | [mautrix/twitter](https://mau.dev/mautrix/twitter/container_registry) | ❌ | Bridge to [Twitter](https://twitter.com/) |
|
||||
@@ -99,7 +100,6 @@ Bridges can be used to connect your Matrix installation with third-party communi
|
||||
| [mautrix-signal](configuring-playbook-bridge-mautrix-signal.md) | [mautrix/signal](https://mau.dev/mautrix/signal/container_registry) | ❌ | Bridge to [Signal](https://www.signal.org/) |
|
||||
| [beeper-linkedin](configuring-playbook-bridge-beeper-linkedin.md) | [beeper/linkedin](https://ghcr.io/beeper/linkedin) | ❌ | Bridge to [LinkedIn](https://www.linkedin.com/) |
|
||||
| [matrix-appservice-irc](configuring-playbook-bridge-appservice-irc.md) | [matrixdotorg/matrix-appservice-irc](https://hub.docker.com/r/matrixdotorg/matrix-appservice-irc) | ❌ | Bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) |
|
||||
| [matrix-appservice-kakaotalk](configuring-playbook-bridge-appservice-kakaotalk.md) | Self-building | ❌ | Bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) |
|
||||
| [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) | [matrix-org/matrix-appservice-discord](https://ghcr.io/matrix-org/matrix-appservice-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) |
|
||||
| [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 |
|
||||
|
||||
@@ -49,8 +49,8 @@ This is because the Matrix specification expects the federation endpoint to be s
|
||||
```yaml
|
||||
# To let Traefik know which domains' certificates to serve
|
||||
matrix_synapse_container_labels_additional_labels: |
|
||||
traefik.http.routers.matrix-synapse-federation-api.tls.domains.main="example.com"
|
||||
traefik.http.routers.matrix-synapse-federation-api.tls.domains.sans="*.example.com"
|
||||
traefik.http.routers.matrix-synapse-public-federation-api.tls.domains.main="example.com"
|
||||
traefik.http.routers.matrix-synapse-public-federation-api.tls.domains.sans="*.example.com"
|
||||
```
|
||||
|
||||
### Configure the DNS-01 challenge for let's encrypt
|
||||
@@ -137,8 +137,8 @@ matrix_synapse_container_labels_public_federation_api_traefik_rule: PathPrefix(`
|
||||
|
||||
# To let Traefik know which domains' certificates to serve
|
||||
matrix_synapse_container_labels_additional_labels: |
|
||||
traefik.http.routers.matrix-synapse-federation-api.tls.domains.main="example.com"
|
||||
traefik.http.routers.matrix-synapse-federation-api.tls.domains.sans="*.example.com"
|
||||
traefik.http.routers.matrix-synapse-public-federation-api.tls.domains.main="example.com"
|
||||
traefik.http.routers.matrix-synapse-public-federation-api.tls.domains.sans="*.example.com"
|
||||
|
||||
# Add a new ACME configuration without having to disable the default one, since it would have a wide range of side effects
|
||||
traefik_configuration_extension_yaml: |
|
||||
|
||||
@@ -25,6 +25,11 @@ The migration might be a good moment, to "reset" a not properly working bridge.
|
||||
|
||||
Before doing the actual import, **you need to upload your Postgres dump file to the server** (any path is okay).
|
||||
|
||||
> [!WARNING]
|
||||
> Do not import into a database that already contains tables (e.g. one that a service has already initialized and used). As the [official Synapse backup guide](https://element-hq.github.io/synapse/latest/usage/administration/backups.html) puts it: at best this will error, at worst it will lead to subtle database inconsistencies. Import into an empty (freshly created) database instead.
|
||||
|
||||
**Note for Synapse users restoring an older backup**: if the server kept running (and users kept chatting) after the backup you are restoring was made, truncate the `e2e_one_time_keys_json` table after importing and before starting Synapse. Restoring an older backup can otherwise cause already-used one-time keys to be re-issued, leading to message decryption errors for your users. You can do this by [getting a database terminal](maintenance-postgres.md#getting-a-database-terminal), connecting to the Synapse database (`\c synapse`) and running `TRUNCATE e2e_one_time_keys_json;`. Clients will generate and upload fresh one-time keys automatically.
|
||||
|
||||
## Importing
|
||||
|
||||
To import, run this command (make sure to replace `SERVER_PATH_TO_POSTGRES_DUMP_FILE` with a file path on your server):
|
||||
|
||||
@@ -13,6 +13,8 @@ You can manually import your `media_store` files from a previous installation of
|
||||
|
||||
Before doing the actual data restore, **you need to upload your media store directory to the server** (any path is okay).
|
||||
|
||||
You also need the [rsync](https://rsync.samba.org/) utility installed **on the server**, as the import performs a server-side `rsync` synchronization. The playbook does not install it for you. On most distributions, it is available as a package called `rsync`.
|
||||
|
||||
If you are [storing Matrix media files on Amazon S3](configuring-playbook-s3.md) (optional), restoring with this tool is not possible right now.
|
||||
|
||||
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/`)
|
||||
|
||||
@@ -76,6 +76,8 @@ If you are using an [external Postgres server](configuring-playbook-external-pos
|
||||
|
||||
Restoring a backup made this way can be done by [importing it](importing-postgres.md).
|
||||
|
||||
**Note for Synapse users**: the [official Synapse backup guide](https://element-hq.github.io/synapse/latest/usage/administration/backups.html) recommends that the `e2e_one_time_keys_json` table either not be backed up, or be truncated after restoring (before Synapse is started). The full-server dump command above does include it, so if you ever restore a backup that is older than the server's current state, remember to truncate that table as described in [the importing guide](importing-postgres.md).
|
||||
|
||||
## Upgrading PostgreSQL
|
||||
|
||||
Unless you are using an [external Postgres server](configuring-playbook-external-postgres.md), this playbook initially installs Postgres for you.
|
||||
|
||||
@@ -105,6 +105,9 @@ Cache autotuning is **enabled by default** and controlled via the following vari
|
||||
|
||||
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).
|
||||
|
||||
> [!NOTE]
|
||||
> These limits apply **per Synapse process**. If you have [workers](configuring-playbook-synapse.md#load-balancing-with-workers) enabled, the main process and every worker each apply the configured limits independently, so the theoretical aggregate cache memory usage gets multiplied by the number of processes. When running many workers on a memory-constrained server, consider setting these variables to lower, explicitly chosen values.
|
||||
|
||||
To **disable cache auto-tuning**, unset all values:
|
||||
|
||||
```yaml
|
||||
|
||||
@@ -41,6 +41,7 @@ Possibly outdated list of roles where self-building the Docker image is currentl
|
||||
- `matrix-bridge-mautrix-telegram`
|
||||
- `matrix-bridge-mautrix-signal`
|
||||
- `matrix-bridge-mautrix-gmessages`
|
||||
- `matrix-bridge-mautrix-gvoice`
|
||||
- `matrix-bridge-mautrix-whatsapp`
|
||||
- `matrix-bridge-mx-puppet-steam`
|
||||
- `matrix-bot-mjolnir`
|
||||
|
||||
Generated
+6
-6
@@ -3,11 +3,11 @@
|
||||
"agru-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1772059918,
|
||||
"narHash": "sha256-o3ZNyJjDEY2RCwIiBWSjWTo6/DqAVMK+ElTuwAVdZrg=",
|
||||
"lastModified": 1783761807,
|
||||
"narHash": "sha256-EVOf5r2oN2WpgodgTQmGJDPJVhgidIMz97hF6TgCyX8=",
|
||||
"owner": "etkecc",
|
||||
"repo": "agru",
|
||||
"rev": "31a799242c4546ad1f9dbac79abcfafc79daba64",
|
||||
"rev": "9e2ca9d8fa904db04e8d34bf0e7b54287e850298",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -36,11 +36,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1771923393,
|
||||
"narHash": "sha256-Fy0+UXELv9hOE8WjYhJt8fMDLYTU2Dqn3cX4BwoGBos=",
|
||||
"lastModified": 1783816212,
|
||||
"narHash": "sha256-2aZisVTVGSFEk3MYcOiWQp3zvwyzbqpktB69Rcfp150=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ea7f1f06811ce7fcc81d6c6fd4213150c23edcf2",
|
||||
"rev": "3b32825de172d0bc85664f495edb096b10862524",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
};
|
||||
agru = pkgs.buildGo125Module {
|
||||
pname = "agru";
|
||||
version = "0.1.19";
|
||||
version = "0.2.1";
|
||||
src = agru-src;
|
||||
vendorHash = null;
|
||||
};
|
||||
|
||||
+112
-77
@@ -102,8 +102,6 @@ matrix_homeserver_container_extra_arguments_auto: |
|
||||
+
|
||||
(['--mount type=bind,src=' + matrix_appservice_irc_config_path + '/registration.yaml,dst=/matrix-appservice-irc-registration.yaml,ro'] if matrix_appservice_irc_enabled else [])
|
||||
+
|
||||
(['--mount type=bind,src=' + matrix_appservice_kakaotalk_config_path + '/registration.yaml,dst=/matrix-appservice-kakaotalk-registration.yaml,ro'] if matrix_appservice_kakaotalk_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_wechat_config_path + '/registration.yaml,dst=/matrix-wechat-registration.yaml,ro'] if matrix_wechat_enabled else [])
|
||||
@@ -134,6 +132,8 @@ matrix_homeserver_container_extra_arguments_auto: |
|
||||
+
|
||||
(['--mount type=bind,src=' + matrix_mautrix_gmessages_config_path + '/registration.yaml,dst=/matrix-mautrix-gmessages-registration.yaml,ro'] if matrix_mautrix_gmessages_enabled else [])
|
||||
+
|
||||
(['--mount type=bind,src=' + matrix_mautrix_gvoice_config_path + '/registration.yaml,dst=/matrix-mautrix-gvoice-registration.yaml,ro'] if matrix_mautrix_gvoice_enabled else [])
|
||||
+
|
||||
(['--mount type=bind,src=' + matrix_mautrix_whatsapp_config_path + '/registration.yaml,dst=/matrix-mautrix-whatsapp-registration.yaml,ro'] if matrix_mautrix_whatsapp_enabled else [])
|
||||
+
|
||||
(['--mount type=bind,src=' + matrix_mautrix_wsproxy_config_path + '/androidsms-registration.yaml,dst=/matrix-mautrix-androidsms-registration.yaml,ro'] if matrix_mautrix_wsproxy_enabled else [])
|
||||
@@ -161,8 +161,6 @@ matrix_homeserver_app_service_config_files_auto: |
|
||||
+
|
||||
(['/matrix-appservice-irc-registration.yaml'] if matrix_appservice_irc_enabled else [])
|
||||
+
|
||||
(['/matrix-appservice-kakaotalk-registration.yaml'] if matrix_appservice_kakaotalk_enabled else [])
|
||||
+
|
||||
(['/matrix-beeper-linkedin-registration.yaml'] if matrix_beeper_linkedin_enabled else [])
|
||||
+
|
||||
(['/matrix-wechat-registration.yaml'] if matrix_wechat_enabled else [])
|
||||
@@ -193,6 +191,8 @@ matrix_homeserver_app_service_config_files_auto: |
|
||||
+
|
||||
(['/matrix-mautrix-gmessages-registration.yaml'] if matrix_mautrix_gmessages_enabled else [])
|
||||
+
|
||||
(['/matrix-mautrix-gvoice-registration.yaml'] if matrix_mautrix_gvoice_enabled else [])
|
||||
+
|
||||
(['/matrix-mautrix-whatsapp-registration.yaml'] if matrix_mautrix_whatsapp_enabled else [])
|
||||
+
|
||||
(['/matrix-mautrix-androidsms-registration.yaml'] if matrix_mautrix_wsproxy_enabled else [])
|
||||
@@ -370,20 +370,6 @@ devture_systemd_service_manager_services_list_auto: |
|
||||
'groups': ['matrix', 'bridges', 'appservice-irc'],
|
||||
}] if matrix_appservice_irc_enabled else [])
|
||||
+
|
||||
([{
|
||||
'name': 'matrix-appservice-kakaotalk.service',
|
||||
'priority': 2000,
|
||||
'restart_necessary': (matrix_appservice_kakaotalk_restart_necessary | bool),
|
||||
'groups': ['matrix', 'bridges', 'appservice-kakaotalk'],
|
||||
}] if matrix_appservice_kakaotalk_enabled else [])
|
||||
+
|
||||
([{
|
||||
'name': 'matrix-appservice-kakaotalk-node.service',
|
||||
'priority': 1900,
|
||||
'restart_necessary': (matrix_appservice_kakaotalk_restart_necessary | bool),
|
||||
'groups': ['matrix', 'bridges', 'appservice-kakaotalk', 'appservice-kakaotalk-node'],
|
||||
}] if matrix_appservice_kakaotalk_enabled else [])
|
||||
+
|
||||
([{
|
||||
'name': 'matrix-beeper-linkedin.service',
|
||||
'priority': 2000,
|
||||
@@ -503,6 +489,13 @@ devture_systemd_service_manager_services_list_auto: |
|
||||
'groups': ['matrix', 'bridges', 'mautrix-gmessages'],
|
||||
}] if matrix_mautrix_gmessages_enabled else [])
|
||||
+
|
||||
([{
|
||||
'name': 'matrix-mautrix-gvoice.service',
|
||||
'priority': 2000,
|
||||
'restart_necessary': (matrix_mautrix_gvoice_restart_necessary | bool),
|
||||
'groups': ['matrix', 'bridges', 'mautrix-gvoice'],
|
||||
}] if matrix_mautrix_gvoice_enabled else [])
|
||||
+
|
||||
([{
|
||||
'name': 'matrix-mautrix-whatsapp.service',
|
||||
'priority': 2000,
|
||||
@@ -1286,56 +1279,6 @@ matrix_appservice_irc_container_labels_traefik_tls_certResolver: "{{ traefik_cer
|
||||
#
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# matrix-bridge-appservice-kakaotalk
|
||||
#
|
||||
######################################################################
|
||||
|
||||
# We don't enable bridges by default.
|
||||
matrix_appservice_kakaotalk_enabled: false
|
||||
|
||||
matrix_appservice_kakaotalk_systemd_required_services_list_auto: |
|
||||
{{
|
||||
matrix_addons_homeserver_systemd_services_list
|
||||
+
|
||||
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_appservice_kakaotalk_database_hostname == postgres_connection_hostname) else [])
|
||||
}}
|
||||
|
||||
matrix_appservice_kakaotalk_node_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_appservice_kakaotalk_node_container_image_registry_prefix_upstream_default }}"
|
||||
|
||||
matrix_appservice_kakaotalk_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_appservice_kakaotalk_container_image_registry_prefix_upstream_default }}"
|
||||
|
||||
matrix_appservice_kakaotalk_container_network: "{{ matrix_addons_container_network }}"
|
||||
|
||||
matrix_appservice_kakaotalk_container_additional_networks_auto: |-
|
||||
{{
|
||||
(
|
||||
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
|
||||
+
|
||||
([postgres_container_network] if (postgres_enabled and matrix_appservice_kakaotalk_database_hostname == postgres_connection_hostname and matrix_appservice_kakaotalk_container_network != postgres_container_network) else [])
|
||||
) | unique
|
||||
}}
|
||||
|
||||
matrix_appservice_kakaotalk_appservice_token: "{{ (matrix_homeserver_generic_secret_key + ':as.kakao.hs') | hash('sha512') | to_uuid }}"
|
||||
|
||||
matrix_appservice_kakaotalk_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
|
||||
matrix_appservice_kakaotalk_homeserver_token: "{{ (matrix_homeserver_generic_secret_key + ':as.kakao.hs') | hash('sha512') | 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' }}"
|
||||
matrix_appservice_kakaotalk_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
|
||||
matrix_appservice_kakaotalk_database_password: "{{ (matrix_homeserver_generic_secret_key + ':as.kakao.db') | hash('sha512') | to_uuid }}"
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# /matrix-bridge-appservice-kakaotalk
|
||||
#
|
||||
######################################################################
|
||||
|
||||
|
||||
######################################################################
|
||||
#
|
||||
@@ -2267,6 +2210,87 @@ matrix_mautrix_gmessages_database_password: "{{ (matrix_homeserver_generic_secre
|
||||
#
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# matrix-bridge-mautrix-gvoice
|
||||
#
|
||||
######################################################################
|
||||
|
||||
# We don't enable bridges by default.
|
||||
matrix_mautrix_gvoice_enabled: false
|
||||
|
||||
matrix_mautrix_gvoice_systemd_required_services_list_auto: |
|
||||
{{
|
||||
matrix_addons_homeserver_systemd_services_list
|
||||
+
|
||||
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mautrix_gvoice_database_hostname == postgres_connection_hostname) else [])
|
||||
}}
|
||||
|
||||
matrix_mautrix_gvoice_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mautrix_gvoice_container_image_registry_prefix_upstream_default }}"
|
||||
|
||||
matrix_mautrix_gvoice_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}"
|
||||
|
||||
matrix_mautrix_gvoice_container_network: "{{ matrix_addons_container_network }}"
|
||||
|
||||
matrix_mautrix_gvoice_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_gvoice_database_hostname == postgres_connection_hostname and matrix_mautrix_gvoice_container_network != postgres_container_network) else [])
|
||||
+
|
||||
([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_mautrix_gvoice_container_labels_traefik_enabled) else [])
|
||||
) | unique
|
||||
}}
|
||||
|
||||
matrix_mautrix_gvoice_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}"
|
||||
matrix_mautrix_gvoice_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
|
||||
matrix_mautrix_gvoice_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
|
||||
matrix_mautrix_gvoice_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}"
|
||||
|
||||
matrix_mautrix_gvoice_container_labels_metrics_middleware_basic_auth_enabled: "{{ matrix_metrics_exposure_http_basic_auth_enabled }}"
|
||||
matrix_mautrix_gvoice_container_labels_metrics_middleware_basic_auth_users: "{{ matrix_metrics_exposure_http_basic_auth_users }}"
|
||||
|
||||
matrix_mautrix_gvoice_appservice_token: "{{ (matrix_homeserver_generic_secret_key + ':gvoice.as.token') | hash('sha512') | to_uuid }}"
|
||||
|
||||
matrix_mautrix_gvoice_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
|
||||
matrix_mautrix_gvoice_homeserver_token: "{{ (matrix_homeserver_generic_secret_key + ':gvoice.hs.token') | hash('sha512') | to_uuid }}"
|
||||
|
||||
matrix_mautrix_gvoice_provisioning_shared_secret: "{{ (matrix_homeserver_generic_secret_key + ':gvoice.prov') | hash('sha512') | to_uuid }}"
|
||||
|
||||
matrix_mautrix_gvoice_homeserver_async_media: "{{ matrix_homeserver_implementation in ['synapse'] }}"
|
||||
|
||||
matrix_mautrix_gvoice_double_puppet_secrets_auto: |-
|
||||
{{
|
||||
{
|
||||
matrix_mautrix_gvoice_homeserver_domain: ("as_token:" + matrix_appservice_double_puppet_registration_as_token)
|
||||
}
|
||||
if matrix_appservice_double_puppet_enabled
|
||||
else {}
|
||||
}}
|
||||
|
||||
matrix_mautrix_gvoice_metrics_enabled: "{{ prometheus_enabled or matrix_metrics_exposure_enabled }}"
|
||||
|
||||
matrix_mautrix_gvoice_metrics_proxying_enabled: "{{ matrix_mautrix_gvoice_metrics_enabled and matrix_metrics_exposure_enabled }}"
|
||||
matrix_mautrix_gvoice_metrics_proxying_hostname: "{{ matrix_metrics_exposure_hostname }}"
|
||||
matrix_mautrix_gvoice_metrics_proxying_path_prefix: "{{ matrix_metrics_exposure_path_prefix }}/mautrix-gvoice"
|
||||
|
||||
matrix_mautrix_gvoice_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}"
|
||||
matrix_mautrix_gvoice_exposure_enabled: "{{ matrix_bridges_exposure_enabled }}"
|
||||
matrix_mautrix_gvoice_exposure_hostname: "{{ matrix_bridges_exposure_hostname }}"
|
||||
matrix_mautrix_gvoice_exposure_path_prefix: "{{ matrix_bridges_exposure_path_prefix }}/gvoice"
|
||||
|
||||
# Postgres is the default, except if not using internal Postgres server
|
||||
matrix_mautrix_gvoice_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}"
|
||||
matrix_mautrix_gvoice_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
|
||||
matrix_mautrix_gvoice_database_password: "{{ (matrix_homeserver_generic_secret_key + ':maugvoice.db') | hash('sha512') | to_uuid }}"
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# /matrix-bridge-mautrix-gvoice
|
||||
#
|
||||
######################################################################
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# matrix-bridge-mautrix-wsproxy
|
||||
@@ -3378,9 +3402,11 @@ backup_borg_postgresql_databases_auto: "{{ postgres_managed_databases | map(attr
|
||||
backup_borg_location_source_directories:
|
||||
- "{{ matrix_base_data_path }}"
|
||||
|
||||
# local_thumbnails is deliberately NOT excluded: with dynamic_thumbnails disabled (Synapse's default),
|
||||
# nothing regenerates lost thumbnails, so the official Synapse backup guide recommends backing them up.
|
||||
backup_borg_location_exclude_patterns: |
|
||||
{{
|
||||
([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 [])
|
||||
([matrix_synapse_media_store_path + '/remote_content', 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 [])
|
||||
}}
|
||||
@@ -3835,7 +3861,9 @@ jitsi_turns_port: "{{ coturn_container_stun_tls_host_bind_port_tcp.split(':')[-1
|
||||
# Falls back to the scalar.vector.im etherpad in case someone sets `jitsi_etherpad_enabled` to true,
|
||||
# while also setting `etherpad_enabled` to false.
|
||||
jitsi_etherpad_enabled: "{{ etherpad_enabled }}"
|
||||
jitsi_etherpad_base: "{{ etherpad_base_url if etherpad_enabled else 'https://scalar.vector.im/etherpad' }}"
|
||||
# The trailing slash is stripped, because the Jitsi role appends path segments (e.g. `/p/`) itself
|
||||
# and `etherpad_base_url` ends with a slash, which would otherwise produce double-slash URLs.
|
||||
jitsi_etherpad_base: "{{ (etherpad_base_url | regex_replace('/+$', '')) if etherpad_enabled else 'https://scalar.vector.im/etherpad' }}"
|
||||
|
||||
# Allow verification using JWT and matrix-UVS
|
||||
jitsi_prosody_auth_matrix_uvs_sync_power_levels: "{{ matrix_user_verification_service_enabled }}"
|
||||
@@ -4124,12 +4152,6 @@ postgres_managed_databases_auto: |
|
||||
'password': matrix_appservice_irc_database_password,
|
||||
}] if (matrix_appservice_irc_enabled and matrix_appservice_irc_database_engine == 'postgres' and matrix_appservice_irc_database_hostname == postgres_connection_hostname) else [])
|
||||
+
|
||||
([{
|
||||
'name': matrix_appservice_kakaotalk_database_name,
|
||||
'username': matrix_appservice_kakaotalk_database_username,
|
||||
'password': matrix_appservice_kakaotalk_database_password,
|
||||
}] if (matrix_appservice_kakaotalk_enabled and matrix_appservice_kakaotalk_database_engine == 'postgres' and matrix_appservice_kakaotalk_database_hostname == postgres_connection_hostname) else [])
|
||||
+
|
||||
([{
|
||||
'name': matrix_beeper_linkedin_database_name,
|
||||
'username': matrix_beeper_linkedin_database_username,
|
||||
@@ -4202,6 +4224,12 @@ postgres_managed_databases_auto: |
|
||||
'password': matrix_mautrix_gmessages_database_password,
|
||||
}] if (matrix_mautrix_gmessages_enabled and matrix_mautrix_gmessages_database_engine == 'postgres' and matrix_mautrix_gmessages_database_hostname == postgres_connection_hostname) else [])
|
||||
+
|
||||
([{
|
||||
'name': matrix_mautrix_gvoice_database_name,
|
||||
'username': matrix_mautrix_gvoice_database_username,
|
||||
'password': matrix_mautrix_gvoice_database_password,
|
||||
}] if (matrix_mautrix_gvoice_enabled and matrix_mautrix_gvoice_database_engine == 'postgres' and matrix_mautrix_gvoice_database_hostname == postgres_connection_hostname) else [])
|
||||
+
|
||||
([{
|
||||
'name': matrix_mautrix_whatsapp_database_name,
|
||||
'username': matrix_mautrix_whatsapp_database_username,
|
||||
@@ -4248,6 +4276,7 @@ postgres_managed_databases_auto: |
|
||||
'name': prometheus_postgres_exporter_database_name,
|
||||
'username': prometheus_postgres_exporter_database_username,
|
||||
'password': prometheus_postgres_exporter_database_password,
|
||||
'additional_sql_queries': ['GRANT pg_monitor TO "' + prometheus_postgres_exporter_database_username + '";'],
|
||||
}] if (prometheus_postgres_exporter_enabled and prometheus_postgres_exporter_database_hostname == postgres_connection_hostname) else [])
|
||||
+
|
||||
([{
|
||||
@@ -5105,6 +5134,11 @@ matrix_ketesa_config_asManagedUsers_auto: |
|
||||
'^@gmessages_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
|
||||
] if matrix_mautrix_gmessages_enabled else [])
|
||||
+
|
||||
([
|
||||
'^@'+(matrix_mautrix_gvoice_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$',
|
||||
'^@gvoice_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
|
||||
] if matrix_mautrix_gvoice_enabled else [])
|
||||
+
|
||||
([
|
||||
'^@'+(matrix_mautrix_googlechat_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$',
|
||||
'^@googlechat_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
|
||||
@@ -5499,7 +5533,7 @@ grafana_provisioning_datasources_datasources: |
|
||||
}] if prometheus_enabled else [])
|
||||
}}
|
||||
|
||||
grafana_dashboard_download_urls: |
|
||||
grafana_dashboard_download_urls_auto: |
|
||||
{{
|
||||
(matrix_synapse_grafana_dashboard_urls if matrix_homeserver_implementation == 'synapse' and matrix_synapse_metrics_enabled else [])
|
||||
+
|
||||
@@ -5974,6 +6008,7 @@ matrix_static_files_file_matrix_mautrix_property_fi_mau_bridges_auto: |-
|
||||
[
|
||||
matrix_mautrix_bluesky_appservice_public_address if (matrix_mautrix_bluesky_enabled and matrix_mautrix_bluesky_container_labels_traefik_enabled and matrix_mautrix_bluesky_container_labels_exposure_enabled) else '',
|
||||
matrix_mautrix_gmessages_bridge_public_address if (matrix_mautrix_gmessages_enabled and matrix_mautrix_gmessages_container_labels_traefik_enabled and matrix_mautrix_gmessages_container_labels_exposure_enabled) else '',
|
||||
matrix_mautrix_gvoice_bridge_public_address if (matrix_mautrix_gvoice_enabled and matrix_mautrix_gvoice_container_labels_traefik_enabled and matrix_mautrix_gvoice_container_labels_exposure_enabled) else '',
|
||||
matrix_mautrix_meta_instagram_bridge_public_address if (matrix_mautrix_meta_instagram_enabled and matrix_mautrix_meta_instagram_container_labels_traefik_enabled and matrix_mautrix_meta_instagram_container_labels_exposure_enabled) else '',
|
||||
matrix_mautrix_meta_messenger_bridge_public_address if (matrix_mautrix_meta_messenger_enabled and matrix_mautrix_meta_messenger_container_labels_traefik_enabled and matrix_mautrix_meta_messenger_container_labels_exposure_enabled) else '',
|
||||
matrix_mautrix_signal_bridge_public_address if (matrix_mautrix_signal_enabled and matrix_mautrix_signal_container_labels_traefik_enabled and matrix_mautrix_signal_container_labels_exposure_enabled) else '',
|
||||
|
||||
+2332
-2248
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-12 11:50+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -288,11 +288,23 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-client-fluffychat-web.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:72
|
||||
#: ../../../README.md:0
|
||||
msgid "[Commet](https://github.com/commetchat/commet)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "Matrix web client"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "[Link](docs/configuring-playbook-client-commet.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:73
|
||||
msgid "Server Components"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:74
|
||||
#: ../../../README.md:75
|
||||
msgid "Services that run on the server to make the various parts of your installation work."
|
||||
msgstr ""
|
||||
|
||||
@@ -380,11 +392,11 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-matrix-rtc.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:86
|
||||
#: ../../../README.md:87
|
||||
msgid "Authentication"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:88
|
||||
#: ../../../README.md:89
|
||||
msgid "Extend and modify how users are authenticated on your homeserver."
|
||||
msgstr ""
|
||||
|
||||
@@ -448,11 +460,11 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-synapse-simple-antispam.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:98
|
||||
#: ../../../README.md:99
|
||||
msgid "File Storage"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:100
|
||||
#: ../../../README.md:101
|
||||
msgid "Use alternative file storage to the default `media_store` folder."
|
||||
msgstr ""
|
||||
|
||||
@@ -488,11 +500,11 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-matrix-media-repo.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:108
|
||||
#: ../../../README.md:109
|
||||
msgid "Bridges"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:110
|
||||
#: ../../../README.md:111
|
||||
msgid "Bridges can be used to connect your Matrix installation with third-party communication networks."
|
||||
msgstr ""
|
||||
|
||||
@@ -544,6 +556,18 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-bridge-mautrix-gmessages.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "[mautrix-gvoice](https://github.com/mautrix/gvoice)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "Bridge to [Google Voice](https://voice.google.com/)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "[Link](docs/configuring-playbook-bridge-mautrix-gvoice.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "[mautrix-whatsapp](https://github.com/mautrix/whatsapp)"
|
||||
msgstr ""
|
||||
@@ -664,18 +688,6 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-bridge-appservice-irc.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "[matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "Bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "[Link](docs/configuring-playbook-bridge-appservice-kakaotalk.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:0
|
||||
msgid "[matrix-appservice-discord](https://github.com/matrix-org/matrix-appservice-discord)"
|
||||
msgstr ""
|
||||
@@ -796,11 +808,11 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-bridge-postmoogle.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:140
|
||||
#: ../../../README.md:141
|
||||
msgid "Bots"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:142
|
||||
#: ../../../README.md:143
|
||||
msgid "Bots provide various additional functionality to your installation."
|
||||
msgstr ""
|
||||
|
||||
@@ -888,11 +900,11 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-bot-buscarron.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:154
|
||||
#: ../../../README.md:155
|
||||
msgid "Administration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:156
|
||||
#: ../../../README.md:157
|
||||
msgid "Services that help you in administrating and monitoring your Matrix installation."
|
||||
msgstr ""
|
||||
|
||||
@@ -980,11 +992,11 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-synapse-usage-exporter.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:168
|
||||
#: ../../../README.md:169
|
||||
msgid "Misc"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:170
|
||||
#: ../../../README.md:171
|
||||
msgid "Various services that don't fit any other categories."
|
||||
msgstr ""
|
||||
|
||||
@@ -1108,54 +1120,54 @@ msgstr ""
|
||||
msgid "[Link](docs/configuring-playbook-element-call.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:185
|
||||
#: ../../../README.md:186
|
||||
msgid "🆕 Changes"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:187
|
||||
#: ../../../README.md:188
|
||||
msgid "This playbook evolves over time, sometimes with backward-incompatible changes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:189
|
||||
#: ../../../README.md:190
|
||||
msgid "When updating the playbook, refer to [the changelog](CHANGELOG.md) to catch up with what's new."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:191
|
||||
#: ../../../README.md:192
|
||||
msgid "🆘 Support"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:193
|
||||
#: ../../../README.md:194
|
||||
msgid "Matrix room: [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:195
|
||||
#: ../../../README.md:196
|
||||
msgid "IRC channel: `#matrix-docker-ansible-deploy` on the [Libera Chat](https://libera.chat/) IRC network (irc.libera.chat:6697)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:197
|
||||
#: ../../../README.md:198
|
||||
msgid "GitHub issues: [spantaleev/matrix-docker-ansible-deploy/issues](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:199
|
||||
#: ../../../README.md:200
|
||||
msgid "🌐 Translation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:201
|
||||
#: ../../../README.md:202
|
||||
msgid "See the [i18n/README.md](i18n/README.md) file for more information about translation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:203
|
||||
#: ../../../README.md:204
|
||||
msgid "Translations are still work in progress."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:205
|
||||
#: ../../../README.md:206
|
||||
msgid "🤝 Related"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../README.md:207
|
||||
#: ../../../README.md:208
|
||||
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:209
|
||||
#: ../../../README.md:210
|
||||
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 ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-05-19 07:40+0000\n"
|
||||
"POT-Creation-Date: 2026-07-12 15:37+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -101,92 +101,96 @@ msgid "You can either [run Ansible in a container on the Matrix server itself](#
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/ansible.md:53
|
||||
msgid "Running Ansible in a container on the Matrix server itself"
|
||||
msgid "💡 If you use [Visual Studio Code](https://code.visualstudio.com/) or [GitHub Codespaces](https://github.com/features/codespaces), the playbook also ships a [dev container](https://containers.dev/) configuration (see the `.devcontainer/` directory) based on this same Ansible Docker image, which can prepare such a containerized Ansible environment for you automatically."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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:"
|
||||
msgid "Running Ansible in a container on the Matrix server itself"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/ansible.md:57
|
||||
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:59
|
||||
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:58
|
||||
#: ../../../docs/ansible.md:60
|
||||
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:60
|
||||
#: ../../../docs/ansible.md:62
|
||||
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:62
|
||||
#: ../../../docs/ansible.md:64
|
||||
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:64
|
||||
#: ../../../docs/ansible.md:66
|
||||
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:66
|
||||
#: ../../../docs/ansible.md:88
|
||||
#: ../../../docs/ansible.md:68
|
||||
#: ../../../docs/ansible.md:90
|
||||
msgid "Run this from the playbook's directory:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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: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)."
|
||||
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:84
|
||||
msgid "Finally, you can execute `just` or `ansible-playbook …` (e.g. `ansible-playbook --connection=community.docker.nsenter …`) commands as per normal now."
|
||||
#: ../../../docs/ansible.md:107
|
||||
msgid "First, consider running `git config --global --add safe.directory /work` to [resolve directory ownership issues](#resolve-directory-ownership-issues)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/ansible.md:86
|
||||
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:88
|
||||
msgid "Running Ansible in a container on another computer (not the Matrix server)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/ansible.md:101
|
||||
#: ../../../docs/ansible.md:103
|
||||
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:107
|
||||
#: ../../../docs/ansible.md:109
|
||||
msgid "Finally, you execute `just` or `ansible-playbook …` commands as per normal now."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/ansible.md:109
|
||||
#: ../../../docs/ansible.md:111
|
||||
msgid "If you don't use SSH keys for authentication"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/ansible.md:111
|
||||
#: ../../../docs/ansible.md:113
|
||||
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:113
|
||||
#: ../../../docs/ansible.md:115
|
||||
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:119
|
||||
#: ../../../docs/ansible.md:121
|
||||
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:121
|
||||
#: ../../../docs/ansible.md:123
|
||||
msgid "Resolve directory ownership issues"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/ansible.md:123
|
||||
#: ../../../docs/ansible.md:125
|
||||
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:125
|
||||
#: ../../../docs/ansible.md:127
|
||||
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:129
|
||||
#: ../../../docs/ansible.md:131
|
||||
msgid "These errors can be resolved by making `git` trust the playbook directory by running `git config --global --add safe.directory /work`"
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-02-13 10:32+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -33,43 +33,59 @@ msgid "The captcha mechanism used is Google's [ReCaptcha](https://www.google.com
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:18
|
||||
msgid "ReCaptcha"
|
||||
msgid "If you are using [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md), captcha is configured there instead (it handles registration), and [Cloudflare Turnstile](https://www.cloudflare.com/application-services/products/turnstile/) is supported as well. See [Matrix Authentication Service](#matrix-authentication-service) below."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:20
|
||||
#: ../../../docs/configuring-captcha.md:46
|
||||
msgid "Getting keys"
|
||||
msgid "ReCaptcha"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:22
|
||||
#: ../../../docs/configuring-captcha.md:48
|
||||
msgid "Requires a site/secret key pair from:"
|
||||
msgid "Getting keys"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:24
|
||||
msgid "<http://www.google.com/recaptcha/admin>"
|
||||
#: ../../../docs/configuring-captcha.md:50
|
||||
msgid "Requires a site/secret key pair from:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:26
|
||||
msgid "Must be a reCAPTCHA **v2** key using the \"I'm not a robot\" Checkbox option"
|
||||
msgid "<http://www.google.com/recaptcha/admin>"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:28
|
||||
msgid "Setting ReCaptcha keys"
|
||||
msgid "Must be a reCAPTCHA **v2** key using the \"I'm not a robot\" Checkbox option"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:30
|
||||
msgid "Setting ReCaptcha keys"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:32
|
||||
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:44
|
||||
#: ../../../docs/configuring-captcha.md:46
|
||||
msgid "hCaptcha"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:50
|
||||
#: ../../../docs/configuring-captcha.md:52
|
||||
msgid "<https://dashboard.hcaptcha.com/sites/new>"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:52
|
||||
#: ../../../docs/configuring-captcha.md:54
|
||||
msgid "Setting hCaptcha keys"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:67
|
||||
msgid "Matrix Authentication Service"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:69
|
||||
msgid "When [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) is enabled, registration and other account operations are handled by it, so captcha protection is configured there (the Synapse and Dendrite settings above do not apply)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-captcha.md:71
|
||||
msgid "Matrix Authentication Service supports [ReCaptcha v2](http://www.google.com/recaptcha/admin), [Cloudflare Turnstile](https://www.cloudflare.com/application-services/products/turnstile/) and [hCaptcha](https://dashboard.hcaptcha.com/sites/new). Obtain a site/secret key pair from your chosen service, then add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
|
||||
msgstr ""
|
||||
|
||||
+8
-96
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-05-19 07:40+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,109 +17,21 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:10
|
||||
msgid "Setting up Appservice Kakaotalk bridging (optional)"
|
||||
msgid "Setting up Appservice Kakaotalk bridging (optional, removed)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
msgid "🪦 The playbook used to be able to install and configure [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) (a bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG)), but no longer includes this component."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
msgid "The bridge could only be installed by self-building its source code, and its upstream repository has become unreachable, which makes installation impossible. The bridge was also based on the now-unmaintained [node-kakao](https://github.com/storycraft/node-kakao) library, and there have been reports that using it may get your Kakaotalk account banned."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:17
|
||||
msgid "There have been recent reports (~2022-09-16) that **using this bridge may get your account banned**."
|
||||
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:16
|
||||
msgid "Uninstalling the component manually"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:19
|
||||
msgid "Prerequisite (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:21
|
||||
msgid "Enable Shared Secret Auth"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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: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: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:29
|
||||
msgid "Adjusting the playbook configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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:37
|
||||
msgid "Extending the configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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:41
|
||||
msgid "Take a look at:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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: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:46
|
||||
msgid "Installing"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:48
|
||||
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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: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:59
|
||||
msgid "Usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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: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:"
|
||||
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:18
|
||||
msgid "If you still have matrix-appservice-kakaotalk 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 ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-02-13 10:32+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -56,95 +56,103 @@ msgstr ""
|
||||
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:43
|
||||
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:45
|
||||
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:47
|
||||
msgid "Extending the configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:49
|
||||
msgid "There are some additional things you may wish to configure about the bridge."
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:44
|
||||
msgid "End-to-bridge encryption also requires the homeserver to support (and have enabled) [MSC2409](https://github.com/matrix-org/matrix-spec-proposals/pull/2409) and [MSC3202](https://github.com/matrix-org/matrix-spec-proposals/pull/3202). If you are using Synapse, enable them by also adding this to your `vars.yml` file:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:51
|
||||
msgid "Take a look at:"
|
||||
msgid "These are experimental homeserver-wide features (as is Hookshot's encryption support itself), so enable them deliberately."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:53
|
||||
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:55
|
||||
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:57
|
||||
msgid "Extending the configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:59
|
||||
msgid "There are some additional things you may wish to configure about the bridge."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:61
|
||||
msgid "Take a look at:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:63
|
||||
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:54
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:64
|
||||
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:56
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:66
|
||||
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:58
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:68
|
||||
msgid "Installing"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:60
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:70
|
||||
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:67
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:77
|
||||
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:69
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:79
|
||||
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:71
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:81
|
||||
msgid "Usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:73
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:83
|
||||
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:75
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:85
|
||||
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:77
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:87
|
||||
msgid "Send `!hookshot help` to the bot to see the available commands."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:79
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:89
|
||||
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:81
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:91
|
||||
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:83
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:93
|
||||
msgid "Reset crypto store"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:85
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:95
|
||||
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:91
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:101
|
||||
msgid "More setup documentation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:93
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:103
|
||||
msgid "URLs for bridges setup"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:95
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:105
|
||||
msgid "Unless indicated otherwise, the following endpoints are reachable on your `matrix.` subdomain (if the feature is enabled)."
|
||||
msgstr ""
|
||||
|
||||
@@ -276,98 +284,98 @@ msgstr ""
|
||||
msgid "Widgets"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:107
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:117
|
||||
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:109
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:119
|
||||
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:111
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:121
|
||||
msgid "Manage GitHub Private Key with aux role"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:113
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:123
|
||||
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:115
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:125
|
||||
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:116
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:126
|
||||
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:117
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:127
|
||||
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:119
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:129
|
||||
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:130
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:140
|
||||
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:132
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:142
|
||||
msgid "Enable metrics"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:134
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:144
|
||||
msgid "The playbook can enable and configure the metrics of the service for you."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:136
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:146
|
||||
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:138
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:148
|
||||
msgid "To enable the metrics, add the following configuration to your `vars.yml` file:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:145
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:155
|
||||
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:151
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:161
|
||||
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:158
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:168
|
||||
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:160
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:170
|
||||
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:162
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:172
|
||||
msgid "Enable Grafana (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:164
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:174
|
||||
msgid "Probably you wish to enable Grafana along with Prometheus for generating graphs of the metrics."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:166
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:176
|
||||
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:168
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:178
|
||||
msgid "Troubleshooting"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:170
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:180
|
||||
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:172
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:182
|
||||
msgid "Increase logging verbosity"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:174
|
||||
#: ../../../docs/configuring-playbook-bridge-hookshot.md:184
|
||||
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 ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-06-29 17:11+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -286,7 +286,7 @@ msgid "Previously there were multiple different automatic double puppeting metho
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:229
|
||||
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."
|
||||
msgid "Some bridges like [the deprecated Facebook mautrix bridge](configuring-playbook-bridge-mautrix-facebook.md) 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:231
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2018-2026, Slavi Pantaleev, Aine Etke, MDAD community members
|
||||
# This file is distributed under the same license as the matrix-docker-ansible-deploy package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:8
|
||||
msgid "Setting up Mautrix Google Voice bridging (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:10
|
||||
msgid "<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:12
|
||||
msgid "The playbook can install and configure [mautrix-gvoice](https://github.com/mautrix/gvoice) for you, for bridging to [Google Voice](https://voice.google.com/)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:14
|
||||
msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/gvoice/index.html) to learn what it does and why it might be useful to you."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:16
|
||||
msgid "Prerequisite (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:18
|
||||
msgid "Enable Appservice Double Puppet"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:20
|
||||
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-gvoice.md:22
|
||||
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-gvoice.md:24
|
||||
msgid "Adjusting the playbook configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.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-mautrix-gvoice.md:32
|
||||
msgid "Extending the configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:34
|
||||
msgid "There are some additional things you may wish to configure about the bridge."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:37
|
||||
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-gvoice.md:39
|
||||
msgid "Installing"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:41
|
||||
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:48
|
||||
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-gvoice.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. Note these shortcuts run the `ensure-matrix-users-created` tag too."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:52
|
||||
msgid "Usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:54
|
||||
msgid "To use the bridge, start a chat with `@gvoicebot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:56
|
||||
msgid "Google Voice has no phone to pair and no QR code to scan. It logs in with cookies, which you copy from a browser already signed in to [voice.google.com](https://voice.google.com/) and hand to the bot. It is fiddlier than scanning a code and feels more suspicious than it is, but Google leaves no cleaner door open. The bridge's [official Authentication guide](https://docs.mau.fi/bridges/go/gvoice/authentication.html) has the exact cookies to grab and the steps for grabbing them."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:58
|
||||
msgid "Those cookies are a login session, and Google expires them on its own schedule. When they lapse the bridge goes quiet and you log in again. Nothing is broken, that is just how cookie auth ages."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:60
|
||||
msgid "Once you log in, the bridge builds portal rooms for your recent conversations and carries text and media both ways. Don't reach for it to start a brand-new chat or to place a call, though. That ground still belongs to Google Voice, so keep the app around for those."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:62
|
||||
msgid "Troubleshooting"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.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-gvoice`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.md:66
|
||||
msgid "Increase logging verbosity"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-bridge-mautrix-gvoice.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 ""
|
||||
@@ -0,0 +1,141 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2018-2026, Slavi Pantaleev, Aine Etke, MDAD community members
|
||||
# This file is distributed under the same license as the matrix-docker-ansible-deploy package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-12 15:37+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:7
|
||||
msgid "Setting up Commet (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:9
|
||||
msgid "The playbook can install and configure the [Commet](https://github.com/commetchat/commet) Matrix web client for you."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:11
|
||||
msgid "Adjusting DNS records"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:13
|
||||
msgid "By default, this playbook installs Commet on the `commet.` subdomain (`commet.example.com`) and requires you to create a CNAME record for `commet`, which targets `matrix.example.com`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:15
|
||||
msgid "When setting, replace `example.com` with your own."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:17
|
||||
msgid "Adjusting the playbook configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:19
|
||||
msgid "To enable Commet, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:25
|
||||
msgid "Adjusting the Commet URL (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:27
|
||||
msgid "By tweaking the `matrix_client_commet_hostname` and `matrix_client_commet_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-commet.md:29
|
||||
msgid "Example additional configuration for your `vars.yml` file:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:40
|
||||
msgid "After changing the domain, **you may need to adjust your DNS** records to point the Commet domain to the Matrix server."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:42
|
||||
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-commet.md:44
|
||||
msgid "**Note**: `matrix_client_commet_path_prefix` must either be `/` or not end with a slash (e.g. `/commet`)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:46
|
||||
msgid "Adjusting the default homeserver (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:48
|
||||
msgid "Commet is configured with a `default_homeserver` value. By default, the playbook uses `matrix.org`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:50
|
||||
msgid "To change it, add the following configuration to your `vars.yml` file:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:56
|
||||
msgid "Adjusting the Commet version/branch to build (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:58
|
||||
msgid "When self-building the container image (`matrix_client_commet_container_image_self_build: true`), the playbook checks out the Commet source repository and builds an image from it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:60
|
||||
msgid "To build from a different git branch/tag/SHA, set `matrix_client_commet_version` in your `vars.yml` file:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:67
|
||||
msgid "**Note**: by default, the image tag is derived from `matrix_client_commet_version` (`localhost/matrix-client-commet:{{ matrix_client_commet_version }}`). If your branch name contains `/` (e.g. `feature/foo`), override `matrix_client_commet_container_image` (and optionally `matrix_client_commet_container_image_self_build_version_tag`) to a Docker-tag-safe value."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:69
|
||||
msgid "Extending the configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:71
|
||||
msgid "There are some additional things you may wish to configure about the component."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:73
|
||||
msgid "Take a look at:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:75
|
||||
msgid "`roles/custom/matrix-client-commet/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:76
|
||||
msgid "`roles/custom/matrix-client-commet/templates/global_config.json.j2` for the component's default runtime configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:78
|
||||
msgid "Installing"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:80
|
||||
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-commet.md:87
|
||||
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-commet.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. Note these shortcuts run the `ensure-matrix-users-created` tag too."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.md:91
|
||||
msgid "Troubleshooting"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-client-commet.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-client-commet`."
|
||||
msgstr ""
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-05-07 11:16+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -81,5 +81,9 @@ msgid "To make it possible to proxy the federation through a CDN such as CloudFl
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-federation.md:74
|
||||
msgid "**Note**: `matrix_synapse_federation_port_enabled: false` only makes sense in this specific setup, where federation traffic is served through the client port (because of the `federation` entry in `matrix_synapse_http_listener_resource_names`). If federation still flows through the dedicated federation port on your setup (e.g. another reverse proxy of yours forwarding a custom public port to this playbook's federation port), leave `matrix_synapse_federation_port_enabled` at its default (enabled). Disabling it removes the federation route entirely and breaks such setups."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook-federation.md:76
|
||||
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 <https://federationtester.matrix.org/> without issues.**"
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-12 11:50+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -184,410 +184,418 @@ msgstr ""
|
||||
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"
|
||||
#: ../../../docs/configuring-playbook.md:98
|
||||
msgid "[Setting up Commet](configuring-playbook-client-commet.md), if you've enabled [Commet](https://github.com/commetchat/commet), a Matrix web client"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:101
|
||||
msgid "Extend and modify how users are authenticated on your homeserver."
|
||||
msgid "Authentication and user-related"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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)"
|
||||
msgid "Extend and modify how users are authenticated on your homeserver."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:105
|
||||
msgid "[Setting up Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md)"
|
||||
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:107
|
||||
msgid "[Setting up Ketesa](configuring-playbook-ketesa.md)"
|
||||
msgid "[Setting up Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:109
|
||||
msgid "[Setting up the REST authentication password provider module](configuring-playbook-rest-auth.md) (advanced)"
|
||||
msgid "[Setting up Ketesa](configuring-playbook-ketesa.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:111
|
||||
msgid "[Setting up the Shared Secret Auth password provider module](configuring-playbook-shared-secret-auth.md) (advanced)"
|
||||
msgid "[Setting up the REST authentication password provider module](configuring-playbook-rest-auth.md) (advanced)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:113
|
||||
msgid "[Setting up the LDAP authentication password provider module](configuring-playbook-ldap-auth.md) (advanced)"
|
||||
msgid "[Setting up the Shared Secret Auth password provider module](configuring-playbook-shared-secret-auth.md) (advanced)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:115
|
||||
msgid "[Setting up Synapse Simple Antispam](configuring-playbook-synapse-simple-antispam.md) (advanced)"
|
||||
msgid "[Setting up the LDAP authentication password provider module](configuring-playbook-ldap-auth.md) (advanced)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:117
|
||||
msgid "[Setting up Matrix User Verification Service](configuring-playbook-user-verification-service.md) (advanced)"
|
||||
msgid "[Setting up Synapse Simple Antispam](configuring-playbook-synapse-simple-antispam.md) (advanced)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:119
|
||||
msgid "File Storage"
|
||||
msgid "[Setting up Matrix User Verification Service](configuring-playbook-user-verification-service.md) (advanced)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:121
|
||||
msgid "Use alternative file storage to the default `media_store` folder."
|
||||
msgid "File Storage"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:123
|
||||
msgid "[Storing Matrix media files using matrix-media-repo](configuring-playbook-matrix-media-repo.md)"
|
||||
msgid "Use alternative file storage to the default `media_store` folder."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:125
|
||||
msgid "[Storing Synapse media files on Amazon S3 or another compatible Object Storage](configuring-playbook-s3.md)"
|
||||
msgid "[Storing Matrix media files using matrix-media-repo](configuring-playbook-matrix-media-repo.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:127
|
||||
msgid "[Storing Synapse media files on Amazon S3 with Goofys](configuring-playbook-s3-goofys.md)"
|
||||
msgid "[Storing Synapse media files on Amazon S3 or another compatible Object Storage](configuring-playbook-s3.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:129
|
||||
msgid "[Storing Synapse media files on Amazon S3 with synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md)"
|
||||
msgid "[Storing Synapse media files on Amazon S3 with Goofys](configuring-playbook-s3-goofys.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:131
|
||||
msgid "Bridging other networks"
|
||||
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:133
|
||||
msgid "Bridges can be used to connect your Matrix installation with third-party communication networks."
|
||||
msgid "Bridging other networks"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:135
|
||||
msgid "[Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) — a common guide for configuring mautrix bridges"
|
||||
msgid "Bridges can be used to connect your Matrix installation with third-party communication networks."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:137
|
||||
msgid "[Setting up Mautrix Bluesky bridging](configuring-playbook-bridge-mautrix-bluesky.md)"
|
||||
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:139
|
||||
msgid "[Setting up Mautrix Discord bridging](configuring-playbook-bridge-mautrix-discord.md)"
|
||||
msgid "[Setting up Mautrix Bluesky bridging](configuring-playbook-bridge-mautrix-bluesky.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:141
|
||||
msgid "[Setting up Mautrix Telegram bridging](configuring-playbook-bridge-mautrix-telegram.md)"
|
||||
msgid "[Setting up Mautrix Discord bridging](configuring-playbook-bridge-mautrix-discord.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:143
|
||||
msgid "[Setting up Mautrix Slack bridging](configuring-playbook-bridge-mautrix-slack.md)"
|
||||
msgid "[Setting up Mautrix Telegram bridging](configuring-playbook-bridge-mautrix-telegram.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:145
|
||||
msgid "[Setting up Mautrix Google Messages bridging](configuring-playbook-bridge-mautrix-gmessages.md)"
|
||||
msgid "[Setting up Mautrix Slack bridging](configuring-playbook-bridge-mautrix-slack.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:147
|
||||
msgid "[Setting up Mautrix Whatsapp bridging](configuring-playbook-bridge-mautrix-whatsapp.md)"
|
||||
msgid "[Setting up Mautrix Google Messages bridging](configuring-playbook-bridge-mautrix-gmessages.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:149
|
||||
msgid "[Setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md)"
|
||||
msgid "[Setting up Mautrix Google Voice bridging](configuring-playbook-bridge-mautrix-gvoice.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:151
|
||||
msgid "[Setting up Messenger bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-messenger.md)"
|
||||
msgid "[Setting up Mautrix Whatsapp bridging](configuring-playbook-bridge-mautrix-whatsapp.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:153
|
||||
msgid "[Setting up Mautrix Google Chat bridging](configuring-playbook-bridge-mautrix-googlechat.md)"
|
||||
msgid "[Setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:155
|
||||
msgid "[Setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md)"
|
||||
msgid "[Setting up Messenger bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-messenger.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:157
|
||||
msgid "[Setting up Mautrix Signal bridging](configuring-playbook-bridge-mautrix-signal.md)"
|
||||
msgid "[Setting up Mautrix Google Chat bridging](configuring-playbook-bridge-mautrix-googlechat.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:159
|
||||
msgid "[Setting up Mautrix wsproxy for bridging Android SMS or Apple iMessage](configuring-playbook-bridge-mautrix-wsproxy.md)"
|
||||
msgid "[Setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:161
|
||||
msgid "[Setting up RustPush (iMessage) bridging](configuring-playbook-bridge-rustpush.md)"
|
||||
msgid "[Setting up Mautrix Signal bridging](configuring-playbook-bridge-mautrix-signal.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:163
|
||||
msgid "[Setting up Appservice IRC bridging](configuring-playbook-bridge-appservice-irc.md)"
|
||||
msgid "[Setting up Mautrix wsproxy for bridging Android SMS or Apple iMessage](configuring-playbook-bridge-mautrix-wsproxy.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:165
|
||||
msgid "[Setting up Appservice Discord bridging](configuring-playbook-bridge-appservice-discord.md)"
|
||||
msgid "[Setting up RustPush (iMessage) bridging](configuring-playbook-bridge-rustpush.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:167
|
||||
msgid "[Setting up Appservice Kakaotalk bridging](configuring-playbook-bridge-appservice-kakaotalk.md)"
|
||||
msgid "[Setting up Appservice IRC bridging](configuring-playbook-bridge-appservice-irc.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:169
|
||||
msgid "[Setting up Beeper LinkedIn bridging](configuring-playbook-bridge-beeper-linkedin.md)"
|
||||
msgid "[Setting up Appservice Discord bridging](configuring-playbook-bridge-appservice-discord.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:171
|
||||
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)."
|
||||
msgid "[Setting up Beeper LinkedIn bridging](configuring-playbook-bridge-beeper-linkedin.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:173
|
||||
msgid "[Setting up MX Puppet GroupMe bridging](configuring-playbook-bridge-mx-puppet-groupme.md)"
|
||||
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:175
|
||||
msgid "[Setting up Steam bridging](configuring-playbook-bridge-steam.md)"
|
||||
msgid "[Setting up MX Puppet GroupMe bridging](configuring-playbook-bridge-mx-puppet-groupme.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:177
|
||||
msgid "[Setting up MX Puppet Steam bridging](configuring-playbook-bridge-mx-puppet-steam.md)"
|
||||
msgid "[Setting up Steam bridging](configuring-playbook-bridge-steam.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:179
|
||||
msgid "[Setting up Postmoogle email bridging](configuring-playbook-bridge-postmoogle.md)"
|
||||
msgid "[Setting up MX Puppet Steam bridging](configuring-playbook-bridge-mx-puppet-steam.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:181
|
||||
msgid "[Setting up Matrix SMS bridging](configuring-playbook-bridge-matrix-bridge-sms.md)"
|
||||
msgid "[Setting up Postmoogle email bridging](configuring-playbook-bridge-postmoogle.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:183
|
||||
msgid "[Setting up Heisenbridge bouncer-style IRC bridging](configuring-playbook-bridge-heisenbridge.md)"
|
||||
msgid "[Setting up Matrix SMS bridging](configuring-playbook-bridge-matrix-bridge-sms.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:185
|
||||
msgid "[Setting up a Matrix <-> Meshtastic bridge](configuring-playbook-bridge-meshtastic-relay.md)"
|
||||
msgid "[Setting up Heisenbridge bouncer-style IRC bridging](configuring-playbook-bridge-heisenbridge.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:187
|
||||
msgid "[Setting up WeChat bridging](configuring-playbook-bridge-wechat.md)"
|
||||
msgid "[Setting up a Matrix <-> Meshtastic bridge](configuring-playbook-bridge-meshtastic-relay.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:189
|
||||
msgid "Bots"
|
||||
msgid "[Setting up WeChat bridging](configuring-playbook-bridge-wechat.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:191
|
||||
msgid "Bots provide various additional functionality to your installation."
|
||||
msgid "Bots"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:193
|
||||
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 (the privacy-first [Venice](configuring-playbook-bot-baibot.md#venice) we recommend, [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/), and [others](https://github.com/etkecc/baibot/blob/main/docs/providers.md))"
|
||||
msgid "Bots provide various additional functionality to your installation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:195
|
||||
msgid "[Setting up matrix-reminder-bot](configuring-playbook-bot-matrix-reminder-bot.md) — a bot to remind you about stuff"
|
||||
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 (the privacy-first [Venice](configuring-playbook-bot-baibot.md#venice) we recommend, [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:197
|
||||
msgid "[Setting up maubot](configuring-playbook-bot-maubot.md) — a plugin-based Matrix bot system"
|
||||
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:199
|
||||
msgid "[Setting up Honoroit](configuring-playbook-bot-honoroit.md) — a helpdesk bot"
|
||||
msgid "[Setting up maubot](configuring-playbook-bot-maubot.md) — a plugin-based Matrix bot system"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:201
|
||||
msgid "[Setting up Mjolnir](configuring-playbook-bot-mjolnir.md) — a moderation tool/bot"
|
||||
msgid "[Setting up Honoroit](configuring-playbook-bot-honoroit.md) — a helpdesk bot"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:203
|
||||
msgid "[Setting up Draupnir](configuring-playbook-bot-draupnir.md) — a moderation tool/bot, forked from Mjolnir and maintained by its former leader developer"
|
||||
msgid "[Setting up Mjolnir](configuring-playbook-bot-mjolnir.md) — a moderation tool/bot"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:205
|
||||
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"
|
||||
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:207
|
||||
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"
|
||||
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:209
|
||||
msgid "Administration"
|
||||
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:211
|
||||
msgid "Services that help you in administrating and monitoring your Matrix installation."
|
||||
msgid "Administration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:213
|
||||
msgid "[Setting up Prometheus Alertmanager integration via matrix-alertmanager-receiver](configuring-playbook-alertmanager-receiver.md)"
|
||||
msgid "Services that help you in administrating and monitoring your Matrix installation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:215
|
||||
msgid "[Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server](configuring-playbook-prometheus-grafana.md)"
|
||||
msgid "[Setting up Prometheus Alertmanager integration via matrix-alertmanager-receiver](configuring-playbook-alertmanager-receiver.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:217
|
||||
msgid "[Setting up the rageshake bug report server](configuring-playbook-rageshake.md)"
|
||||
msgid "[Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server](configuring-playbook-prometheus-grafana.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:219
|
||||
msgid "[Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md)"
|
||||
msgid "[Setting up the rageshake bug report server](configuring-playbook-rageshake.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:221
|
||||
msgid "[Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:223
|
||||
msgid "Backups:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:222
|
||||
#: ../../../docs/configuring-playbook.md:224
|
||||
msgid "[Setting up BorgBackup](configuring-playbook-backup-borg.md) — a full Matrix server backup solution, including the Postgres database"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:224
|
||||
#: ../../../docs/configuring-playbook.md:226
|
||||
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:226
|
||||
#: ../../../docs/configuring-playbook.md:228
|
||||
msgid "Other specialized services"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:228
|
||||
#: ../../../docs/configuring-playbook.md:230
|
||||
msgid "Various services that don't fit any other categories."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:230
|
||||
#: ../../../docs/configuring-playbook.md:232
|
||||
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:232
|
||||
#: ../../../docs/configuring-playbook.md:234
|
||||
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:234
|
||||
#: ../../../docs/configuring-playbook.md:236
|
||||
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:236
|
||||
#: ../../../docs/configuring-playbook.md:238
|
||||
msgid "[Setting up Matrix RTC](configuring-playbook-matrix-rtc.md) (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:238
|
||||
#: ../../../docs/configuring-playbook.md:240
|
||||
msgid "[Setting up synapse-auto-compressor](configuring-playbook-synapse-auto-compressor.md) for compressing the database on Synapse homeservers"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:240
|
||||
#: ../../../docs/configuring-playbook.md:242
|
||||
msgid "[Setting up Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:242
|
||||
#: ../../../docs/configuring-playbook.md:244
|
||||
msgid "[Setting up Matrix.to](configuring-playbook-matrixto.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:244
|
||||
#: ../../../docs/configuring-playbook.md:246
|
||||
msgid "[Setting up Etherpad](configuring-playbook-etherpad.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:246
|
||||
#: ../../../docs/configuring-playbook.md:248
|
||||
msgid "[Setting up the Jitsi video-conferencing platform](configuring-playbook-jitsi.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:248
|
||||
#: ../../../docs/configuring-playbook.md:250
|
||||
msgid "[Setting up Cactus Comments](configuring-playbook-cactus-comments.md) — a federated comment system built on Matrix"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:250
|
||||
#: ../../../docs/configuring-playbook.md:252
|
||||
msgid "[Setting up Pantalaimon (E2EE aware proxy daemon)](configuring-playbook-pantalaimon.md) (advanced)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:252
|
||||
#: ../../../docs/configuring-playbook.md:254
|
||||
msgid "[Setting up the Sygnal push gateway](configuring-playbook-sygnal.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:254
|
||||
#: ../../../docs/configuring-playbook.md:256
|
||||
msgid "[Setting up the ntfy push notifications server](configuring-playbook-ntfy.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:256
|
||||
#: ../../../docs/configuring-playbook.md:258
|
||||
msgid "Deprecated / unmaintained / removed services"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:258
|
||||
#: ../../../docs/configuring-playbook.md:260
|
||||
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:260
|
||||
#: ../../../docs/configuring-playbook.md:262
|
||||
msgid "[Configuring conduwuit](configuring-playbook-conduwuit.md) (removed; this component has been abandoned and unmaintained)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:262
|
||||
#: ../../../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:264
|
||||
msgid "[Setting up Appservice Slack bridging](configuring-playbook-bridge-appservice-slack.md) (removed; this component has been discontinued)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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))"
|
||||
msgid "[Setting up Appservice Kakaotalk bridging](configuring-playbook-bridge-appservice-kakaotalk.md) (removed; the upstream repository has become unreachable and the component could only be installed by self-building it)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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))"
|
||||
msgid "[Setting up Appservice Slack bridging](configuring-playbook-bridge-appservice-slack.md) (removed; this component has been discontinued)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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))"
|
||||
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: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))"
|
||||
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:274
|
||||
msgid "[Setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md) (removed; Skype has been discontinued since May 2025)"
|
||||
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:276
|
||||
msgid "[Setting up ma1sd Identity Server](configuring-playbook-ma1sd.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook.)"
|
||||
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:278
|
||||
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))"
|
||||
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:280
|
||||
msgid "[Setting up matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) (removed; the repository of the source code has been removed)"
|
||||
msgid "[Setting up ma1sd Identity Server](configuring-playbook-ma1sd.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook.)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:282
|
||||
msgid "[Setting up matrix-registration](configuring-playbook-matrix-registration.md) (removed; this component has been unmaintained)"
|
||||
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:284
|
||||
msgid "[Setting up matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) (removed; this component has been unmaintained)"
|
||||
msgid "[Setting up matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) (removed; the repository of the source code has been removed)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:286
|
||||
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))"
|
||||
msgid "[Setting up matrix-registration](configuring-playbook-matrix-registration.md) (removed; this component has been unmaintained)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:288
|
||||
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))"
|
||||
msgid "[Setting up matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) (removed; this component has been unmaintained)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:290
|
||||
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))"
|
||||
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:292
|
||||
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))"
|
||||
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:294
|
||||
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))"
|
||||
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:296
|
||||
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))"
|
||||
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:298
|
||||
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))"
|
||||
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:300
|
||||
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:302
|
||||
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 ""
|
||||
|
||||
#: ../../../docs/configuring-playbook.md:304
|
||||
msgid "[Setting up Synapse Auto Invite Accept](configuring-playbook-synapse-auto-accept-invite.md) (removed; since Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0) the same feature is available natively.)"
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-02-13 10:32+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -181,73 +181,81 @@ msgid "On the base domain's server (e.g. `example.com`), you can set up reverse-
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
msgid "With reverse-proxying, 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:117
|
||||
msgid "If you use a 302 redirect instead, be aware that browsers apply CORS checks to every response in the redirect chain, so the redirect response itself must also carry an `Access-Control-Allow-Origin: *` header. Otherwise, web-based Matrix clients (like Element Web) may fail to work even though the final destination sets the header correctly."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:119
|
||||
msgid "**For nginx**, it would be something like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:134
|
||||
#: ../../../docs/configuring-well-known.md:136
|
||||
msgid "**For Apache2**, it would be something like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:148
|
||||
#: ../../../docs/configuring-well-known.md:150
|
||||
msgid "**For Caddy 2**, it would be something like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:158
|
||||
msgid "**For HAProxy**, it would be something like this:"
|
||||
#: ../../../docs/configuring-well-known.md:160
|
||||
msgid "**Note**: Caddy does not process directives in the order they appear in the Caddyfile, but according to its own [directive order](https://caddyserver.com/docs/caddyfile/directives#directive-order). Notably, `redir` is evaluated before `reverse_proxy`, so a `redir` elsewhere in the same site block (a common way to send the base domain to `www.example.com` or to another site) takes precedence and breaks the well-known reverse-proxying. In such cases, wrap the directives in [`handle`](https://caddyserver.com/docs/caddyfile/directives/handle) blocks to enforce the intended priority:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:177
|
||||
msgid "**For HAProxy**, it would be something like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:196
|
||||
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:183
|
||||
#: ../../../docs/configuring-well-known.md:202
|
||||
msgid "**For AWS CloudFront**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:185
|
||||
#: ../../../docs/configuring-well-known.md:204
|
||||
msgid "Add a custom origin with matrix.example.com to your distribution"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:186
|
||||
#: ../../../docs/configuring-well-known.md:205
|
||||
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:188
|
||||
#: ../../../docs/configuring-well-known.md:207
|
||||
msgid "Make sure to:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:190
|
||||
#: ../../../docs/configuring-well-known.md:209
|
||||
msgid "**replace `example.com`** in the server configuration with your actual domain name"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:191
|
||||
#: ../../../docs/configuring-well-known.md:210
|
||||
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:193
|
||||
#: ../../../docs/configuring-well-known.md:212
|
||||
msgid "Confirming it works"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:195
|
||||
#: ../../../docs/configuring-well-known.md:214
|
||||
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:197
|
||||
#: ../../../docs/configuring-well-known.md:216
|
||||
msgid "`https://example.com/.well-known/matrix/server`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:198
|
||||
#: ../../../docs/configuring-well-known.md:217
|
||||
msgid "`https://example.com/.well-known/matrix/client`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:199
|
||||
#: ../../../docs/configuring-well-known.md:218
|
||||
msgid "`https://example.com/.well-known/matrix/support`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/configuring-well-known.md:201
|
||||
#: ../../../docs/configuring-well-known.md:220
|
||||
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 ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-12 11:50+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -444,6 +444,18 @@ msgstr ""
|
||||
msgid "Bridge to [Google Messages](https://messages.google.com/)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "[mautrix-gvoice](configuring-playbook-bridge-mautrix-gvoice.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "[mautrix/gvoice](https://mau.dev/mautrix/gvoice/container_registry)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "Bridge to [Google Voice](https://voice.google.com/)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "[mautrix-whatsapp](configuring-playbook-bridge-mautrix-whatsapp.md)"
|
||||
msgstr ""
|
||||
@@ -540,18 +552,6 @@ msgstr ""
|
||||
msgid "Bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "[matrix-appservice-kakaotalk](configuring-playbook-bridge-appservice-kakaotalk.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "Self-building"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "Bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "[matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md)"
|
||||
msgstr ""
|
||||
@@ -884,6 +884,10 @@ msgstr ""
|
||||
msgid "[synapse-usage-exporter](configuring-playbook-synapse-usage-exporter.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "Self-building"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/container-images.md:0
|
||||
msgid "Export the usage statistics of a Synapse homeserver to be scraped by Prometheus."
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-02-13 10:32+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -25,7 +25,7 @@ msgid "You can manually import your database from a previous default installatio
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:14
|
||||
#: ../../../docs/importing-postgres.md:38
|
||||
#: ../../../docs/importing-postgres.md:43
|
||||
msgid "**Notes**:"
|
||||
msgstr ""
|
||||
|
||||
@@ -57,98 +57,106 @@ msgstr ""
|
||||
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:28
|
||||
#: ../../../docs/importing-postgres.md:29
|
||||
msgid "Do not import into a database that already contains tables (e.g. one that a service has already initialized and used). As the [official Synapse backup guide](https://element-hq.github.io/synapse/latest/usage/administration/backups.html) puts it: at best this will error, at worst it will lead to subtle database inconsistencies. Import into an empty (freshly created) database instead."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:31
|
||||
msgid "**Note for Synapse users restoring an older backup**: if the server kept running (and users kept chatting) after the backup you are restoring was made, truncate the `e2e_one_time_keys_json` table after importing and before starting Synapse. Restoring an older backup can otherwise cause already-used one-time keys to be re-issued, leading to message decryption errors for your users. You can do this by [getting a database terminal](maintenance-postgres.md#getting-a-database-terminal), connecting to the Synapse database (`\\c synapse`) and running `TRUNCATE e2e_one_time_keys_json;`. Clients will generate and upload fresh one-time keys automatically."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:33
|
||||
msgid "Importing"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:30
|
||||
#: ../../../docs/importing-postgres.md:35
|
||||
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:40
|
||||
#: ../../../docs/importing-postgres.md:45
|
||||
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:41
|
||||
#: ../../../docs/importing-postgres.md:46
|
||||
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:42
|
||||
#: ../../../docs/importing-postgres.md:47
|
||||
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:44
|
||||
#: ../../../docs/importing-postgres.md:49
|
||||
msgid "Troubleshooting"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:46
|
||||
#: ../../../docs/importing-postgres.md:51
|
||||
msgid "Table Ownership"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:48
|
||||
#: ../../../docs/importing-postgres.md:53
|
||||
msgid "A table ownership issue can occur if you are importing from a Synapse installation which was both:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:50
|
||||
#: ../../../docs/importing-postgres.md:55
|
||||
msgid "migrated from SQLite to Postgres, and"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:51
|
||||
#: ../../../docs/importing-postgres.md:56
|
||||
msgid "used a username other than 'synapse'"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:53
|
||||
#: ../../../docs/importing-postgres.md:58
|
||||
msgid "In this case you may run into the following error during the import task:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:59
|
||||
#: ../../../docs/importing-postgres.md:64
|
||||
msgid "where `synapse_user` is the database username from the previous Synapse installation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:61
|
||||
#: ../../../docs/importing-postgres.md:66
|
||||
msgid "This can be verified by examining the dump for ALTER TABLE statements which set OWNER TO that username:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:73
|
||||
#: ../../../docs/importing-postgres.md:78
|
||||
msgid "It can be worked around by changing the username to `synapse`, for example by using `sed`:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:79
|
||||
#: ../../../docs/importing-postgres.md:84
|
||||
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:81
|
||||
#: ../../../docs/importing-postgres.md:86
|
||||
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:87
|
||||
#: ../../../docs/importing-postgres.md:92
|
||||
msgid "Repeat import"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:89
|
||||
#: ../../../docs/importing-postgres.md:94
|
||||
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:97
|
||||
#: ../../../docs/importing-postgres.md:102
|
||||
msgid "Now on your local machine run `just run-tags setup-postgres` to prepare the database roles etc."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:99
|
||||
#: ../../../docs/importing-postgres.md:104
|
||||
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:105
|
||||
#: ../../../docs/importing-postgres.md:110
|
||||
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:107
|
||||
#: ../../../docs/importing-postgres.md:112
|
||||
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:113
|
||||
#: ../../../docs/importing-postgres.md:118
|
||||
msgid "Hints"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-postgres.md:115
|
||||
#: ../../../docs/importing-postgres.md:120
|
||||
msgid "To open psql terminal run `/matrix/postgres/bin/cli`"
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-02-13 10:32+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -33,25 +33,29 @@ msgid "Before doing the actual data restore, **you need to upload your media sto
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
msgid "You also need the [rsync](https://rsync.samba.org/) utility installed **on the server**, as the import performs a server-side `rsync` synchronization. The playbook does not install it for you. On most distributions, it is available as a package called `rsync`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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/`)"
|
||||
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: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."
|
||||
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:22
|
||||
msgid "Importing"
|
||||
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:24
|
||||
msgid "Importing"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-synapse-media-store.md:26
|
||||
msgid "Run this command (make sure to replace `<server-path-to-media_store>` with a path on your server):"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/importing-synapse-media-store.md:30
|
||||
#: ../../../docs/importing-synapse-media-store.md:32
|
||||
msgid "**Note**: `<server-path-to-media_store>` must be a file path to a `media_store` directory on the server (not on your local machine!)."
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-06-29 17:50+0000\n"
|
||||
"POT-Creation-Date: 2026-07-12 15:37+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -77,245 +77,249 @@ msgid "If you **do** use SSH keys for authentication, **and** use a non-root use
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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)."
|
||||
msgid "Instead of typing the sudo password on each run (`-K`) or storing it in plain text in the inventory hosts file, you can also pull it from the [pass](https://www.passwordstore.org/) password manager by adding `ansible_become_password='{{ lookup(\"community.general.passwordstore\", \"path/to/password\") }}'` to your host line. See the [passwordstore lookup documentation](https://docs.ansible.com/ansible/latest/collections/community/general/passwordstore_lookup.html) for more details."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
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:48
|
||||
msgid "Installing a brand new server (without importing data)"
|
||||
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:50
|
||||
msgid "Installing a brand new server (without importing data)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:52
|
||||
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:56
|
||||
#: ../../../docs/installing.md:58
|
||||
msgid "This will do a full installation and start all Matrix services."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:58
|
||||
#: ../../../docs/installing.md:60
|
||||
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:60
|
||||
#: ../../../docs/installing.md:62
|
||||
msgid "Installing a server into which you'll import old data"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:62
|
||||
#: ../../../docs/installing.md:64
|
||||
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:64
|
||||
#: ../../../docs/installing.md:66
|
||||
msgid "To do the installation **without** starting services, run `ansible-playbook` with the `install-all` tag only:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:71
|
||||
#: ../../../docs/installing.md:73
|
||||
msgid "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:73
|
||||
#: ../../../docs/installing.md:75
|
||||
msgid "When this command completes, services won't be running yet."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:75
|
||||
#: ../../../docs/installing.md:77
|
||||
msgid "You can now:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:77
|
||||
#: ../../../docs/installing.md:79
|
||||
msgid "[Importing an existing SQLite database (from another Synapse installation)](importing-synapse-sqlite.md) (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:79
|
||||
#: ../../../docs/installing.md:81
|
||||
msgid "[Importing an existing Postgres database (from another installation)](importing-postgres.md) (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:81
|
||||
#: ../../../docs/installing.md:83
|
||||
msgid "[Importing `media_store` data files from an existing Synapse installation](importing-synapse-media-store.md) (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:83
|
||||
#: ../../../docs/installing.md:85
|
||||
msgid "… and then proceed to starting all services:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:89
|
||||
#: ../../../docs/installing.md:91
|
||||
msgid "Create your user account"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:91
|
||||
#: ../../../docs/installing.md:93
|
||||
msgid "ℹ️ *You can skip this step if you have installed a server and imported old data to it.*"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:93
|
||||
#: ../../../docs/installing.md:95
|
||||
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:95
|
||||
#: ../../../docs/installing.md:97
|
||||
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:97
|
||||
#: ../../../docs/installing.md:99
|
||||
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:99
|
||||
#: ../../../docs/installing.md:101
|
||||
msgid "**Notes**:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:100
|
||||
#: ../../../docs/installing.md:102
|
||||
msgid "Make sure to adjust `YOUR_USERNAME_HERE` and `YOUR_PASSWORD_HERE`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:101
|
||||
#: ../../../docs/installing.md:103
|
||||
msgid "For `YOUR_USERNAME_HERE`, use a plain username like `alice`, not your full ID (`@alice:example.com`)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:102
|
||||
#: ../../../docs/installing.md:104
|
||||
msgid "Use `admin=yes` to make your user account an administrator of the Matrix server"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:110
|
||||
#: ../../../docs/installing.md:112
|
||||
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:112
|
||||
#: ../../../docs/installing.md:114
|
||||
msgid "For more information, see the documentation for [registering users](registering-users.md)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:114
|
||||
#: ../../../docs/installing.md:116
|
||||
msgid "Finalize the installation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:116
|
||||
#: ../../../docs/installing.md:118
|
||||
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:118
|
||||
#: ../../../docs/installing.md:120
|
||||
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:120
|
||||
#: ../../../docs/installing.md:122
|
||||
msgid "To configure the delegation, you have these two options. Choose one of them according to your situation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:122
|
||||
#: ../../../docs/installing.md:124
|
||||
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:123
|
||||
#: ../../../docs/installing.md:125
|
||||
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:125
|
||||
#: ../../../docs/installing.md:127
|
||||
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:131
|
||||
#: ../../../docs/installing.md:133
|
||||
msgid "After configuring the playbook, run the command below:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:137
|
||||
#: ../../../docs/installing.md:139
|
||||
msgid "**If an error is not returned, the installation has completed and the services have been started successfully**🎉"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:139
|
||||
#: ../../../docs/installing.md:141
|
||||
msgid "Things to do next"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:141
|
||||
#: ../../../docs/installing.md:143
|
||||
msgid "After completing the installation, you can:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:143
|
||||
#: ../../../docs/installing.md:145
|
||||
msgid "[check if services work](maintenance-and-troubleshooting.md#how-to-check-if-services-work)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:144
|
||||
#: ../../../docs/installing.md:146
|
||||
msgid "or [set up additional services](configuring-playbook.md#other-configuration-options) (bridges to other chat networks, bots, etc.)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:145
|
||||
#: ../../../docs/installing.md:147
|
||||
msgid "or learn how to [upgrade services when new versions are released](maintenance-upgrading-services.md)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:146
|
||||
#: ../../../docs/installing.md:148
|
||||
msgid "or learn how to [maintain your server](faq.md#maintenance)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:147
|
||||
#: ../../../docs/installing.md:149
|
||||
msgid "or join some Matrix rooms:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:148
|
||||
#: ../../../docs/installing.md:150
|
||||
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. For tuning guidance on constrained hosts, see [Limit joining heavy rooms on constrained hosts](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:150
|
||||
#: ../../../docs/installing.md:152
|
||||
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:151
|
||||
#: ../../../docs/installing.md:153
|
||||
msgid "or help make this playbook better by contributing (code, documentation, or [coffee/beer](https://liberapay.com/s.pantaleev/donate))"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:153
|
||||
#: ../../../docs/installing.md:155
|
||||
msgid "Installing native Matrix clients on your computer"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:155
|
||||
#: ../../../docs/installing.md:157
|
||||
msgid "As the playbook's aim is to help you to install and manage Matrix services on your server, if you are looking for dedicated native Matrix clients which run on your computer, you need to install ones by yourself. There is a convenient list which introduces known Matrix clients on this page: <https://matrix.org/ecosystem/clients/>"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:157
|
||||
#: ../../../docs/installing.md:159
|
||||
msgid "If you feel overwhelmed by the variety and the number of the available clients, you might want to install [**Komai**](https://github.com/etkecc/komai), a desktop-first Matrix chat application maintained by the team behind the playbook. It is stable, and just works without quirks!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:159
|
||||
#: ../../../docs/installing.md:161
|
||||
msgid "⚠️ Keep the playbook and services up-to-date"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:161
|
||||
#: ../../../docs/installing.md:163
|
||||
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:163
|
||||
#: ../../../docs/installing.md:165
|
||||
msgid "The upstream projects, which this playbook makes use of, occasionally if not often suffer from security vulnerabilities."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:165
|
||||
#: ../../../docs/installing.md:167
|
||||
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:167
|
||||
#: ../../../docs/installing.md:169
|
||||
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:169
|
||||
#: ../../../docs/installing.md:171
|
||||
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:171
|
||||
#: ../../../docs/installing.md:173
|
||||
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:177
|
||||
#: ../../../docs/installing.md:179
|
||||
msgid "**Note**: see [this page on the playbook tags](playbook-tags.md) for more information about those tags."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:179
|
||||
#: ../../../docs/installing.md:181
|
||||
msgid "Make full use of `just` shortcut commands"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/installing.md:181
|
||||
#: ../../../docs/installing.md:183
|
||||
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:183
|
||||
#: ../../../docs/installing.md:185
|
||||
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:185
|
||||
#: ../../../docs/installing.md:187
|
||||
msgid "You can learn about the shortcut commands on this page: [Running `just` commands](just.md)"
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-05-19 07:40+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -149,69 +149,73 @@ msgid "Restoring a backup made this way can be done by [importing it](importing-
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/maintenance-postgres.md:79
|
||||
msgid "Upgrading PostgreSQL"
|
||||
msgid "**Note for Synapse users**: the [official Synapse backup guide](https://element-hq.github.io/synapse/latest/usage/administration/backups.html) recommends that the `e2e_one_time_keys_json` table either not be backed up, or be truncated after restoring (before Synapse is started). The full-server dump command above does include it, so if you ever restore a backup that is older than the server's current state, remember to truncate that table as described in [the importing guide](importing-postgres.md)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
msgid "Upgrading PostgreSQL"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
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:85
|
||||
msgid "Upgrades must be performed manually."
|
||||
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:87
|
||||
msgid "Upgrades must be performed manually."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/maintenance-postgres.md:89
|
||||
msgid "The playbook can upgrade your existing Postgres setup with the following command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/maintenance-postgres.md:93
|
||||
#: ../../../docs/maintenance-postgres.md:95
|
||||
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:95
|
||||
#: ../../../docs/maintenance-postgres.md:97
|
||||
msgid "The auto-upgrade-backup directory stays around forever, until you **manually decide to delete it**."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/maintenance-postgres.md:97
|
||||
#: ../../../docs/maintenance-postgres.md:99
|
||||
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:99
|
||||
#: ../../../docs/maintenance-postgres.md:101
|
||||
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:101
|
||||
#: ../../../docs/maintenance-postgres.md:103
|
||||
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:103
|
||||
#: ../../../docs/maintenance-postgres.md:105
|
||||
msgid "Tuning PostgreSQL"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/maintenance-postgres.md:105
|
||||
#: ../../../docs/maintenance-postgres.md:107
|
||||
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:107
|
||||
#: ../../../docs/maintenance-postgres.md:109
|
||||
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:109
|
||||
#: ../../../docs/maintenance-postgres.md:111
|
||||
msgid "Most users should be fine with the automatically-done tuning. However, you may wish to:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/maintenance-postgres.md:111
|
||||
#: ../../../docs/maintenance-postgres.md:113
|
||||
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:113
|
||||
#: ../../../docs/maintenance-postgres.md:115
|
||||
msgid "**turn automatically-performed tuning off**: override it like this: `postgres_postgres_process_extra_arguments_default: []`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/maintenance-postgres.md:115
|
||||
#: ../../../docs/maintenance-postgres.md:117
|
||||
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 ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-05-19 07:40+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -192,14 +192,18 @@ msgstr ""
|
||||
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:108
|
||||
#: ../../../docs/maintenance-synapse.md:109
|
||||
msgid "These limits apply **per Synapse process**. If you have [workers](configuring-playbook-synapse.md#load-balancing-with-workers) enabled, the main process and every worker each apply the configured limits independently, so the theoretical aggregate cache memory usage gets multiplied by the number of processes. When running many workers on a memory-constrained server, consider setting these variables to lower, explicitly chosen values."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/maintenance-synapse.md:111
|
||||
msgid "To **disable cache auto-tuning**, unset all values:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/maintenance-synapse.md:116
|
||||
#: ../../../docs/maintenance-synapse.md:119
|
||||
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:118
|
||||
#: ../../../docs/maintenance-synapse.md:121
|
||||
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 ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-05-07 11:16+0000\n"
|
||||
"POT-Creation-Date: 2026-07-12 15:37+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -213,229 +213,265 @@ msgid "For your convenience, we have prepared example files of them ([`vars.yml`
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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:"
|
||||
msgid "To start quickly based on these example files, go into the `matrix-docker-ansible-deploy` directory and initialize your configuration, either automatically or manually."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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:95
|
||||
msgid "Copy the sample configuration file: `cp examples/vars.yml inventory/host_vars/matrix.example.com/vars.yml`"
|
||||
msgid "To initialize it automatically (with the base domain and server address pre-filled and secrets generated for you), run:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:96
|
||||
msgid "Copy the sample inventory hosts file: `cp examples/hosts inventory/hosts`"
|
||||
msgid "either: `just add-inventory-host example.com 1.2.3.4` (if you have the [`just`](just.md) tool)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:97
|
||||
msgid "Edit the configuration file (`inventory/host_vars/matrix.example.com/vars.yml`)"
|
||||
msgid "or: `make add-inventory-host domain=example.com ip=1.2.3.4` (if you have the `make` program)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:98
|
||||
msgid "Edit the inventory hosts file (`inventory/hosts`)"
|
||||
#: ../../../docs/quick-start.md:99
|
||||
msgid "… where `example.com` is your \"base domain\" (not `matrix.example.com`) and `1.2.3.4` is your server's external IP address (or domain name)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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:102
|
||||
msgid "**💡 Notes:**"
|
||||
#: ../../../docs/quick-start.md:101
|
||||
msgid "Given a base domain of `example.com`, this creates:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
msgid "an entry for `matrix.example.com` (the Matrix server's default hostname: `matrix.` + your base domain) in the inventory hosts file (`inventory/hosts`)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
msgid "a configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) containing `matrix_domain: example.com` and automatically generated secrets"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
#: ../../../docs/quick-start.md:106
|
||||
msgid "Afterward, edit these 2 files to adjust them further, as necessary. Existing configuration is never overwritten (the command refuses to run if the host is already in your inventory), so it can also be used for adding more hosts later."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:107
|
||||
msgid "Install"
|
||||
#: ../../../docs/quick-start.md:108
|
||||
msgid "To initialize it manually, follow the instructions below:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:109
|
||||
msgid "<sup>This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Installing](installing.md)</sup>"
|
||||
#: ../../../docs/quick-start.md:110
|
||||
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:111
|
||||
msgid "After editing `vars.yml` and `hosts` files, let's start the **installation** procedure."
|
||||
msgid "Copy the sample configuration file: `cp examples/vars.yml inventory/host_vars/matrix.example.com/vars.yml`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:112
|
||||
msgid "Copy the sample inventory hosts file: `cp examples/hosts inventory/hosts`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:113
|
||||
msgid "Update Ansible roles"
|
||||
msgid "Edit the configuration file (`inventory/host_vars/matrix.example.com/vars.yml`)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:115
|
||||
msgid "Before installing, you need to update the Ansible roles that this playbook uses and fetches from outside."
|
||||
#: ../../../docs/quick-start.md:114
|
||||
msgid "Edit the inventory hosts file (`inventory/hosts`)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:117
|
||||
msgid "To update your playbook directory and all upstream Ansible roles, run:"
|
||||
#: ../../../docs/quick-start.md:116
|
||||
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:118
|
||||
msgid "**💡 Notes:**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:119
|
||||
msgid "either: `just update`"
|
||||
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: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`)"
|
||||
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:122
|
||||
msgid "If you don't have either `just` tool or `make` program, you can run the `ansible-galaxy` tool directly after updating the playbook: `git pull; rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force`"
|
||||
#: ../../../docs/quick-start.md:121
|
||||
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:124
|
||||
msgid "Run installation command"
|
||||
#: ../../../docs/quick-start.md:123
|
||||
msgid "Install"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:126
|
||||
msgid "Then, run the command below to start installation:"
|
||||
#: ../../../docs/quick-start.md:125
|
||||
msgid "<sup>This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Installing](installing.md)</sup>"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
#: ../../../docs/quick-start.md:127
|
||||
msgid "After editing `vars.yml` and `hosts` files, let's start the **installation** procedure."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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."
|
||||
#: ../../../docs/quick-start.md:129
|
||||
msgid "Update Ansible roles"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:131
|
||||
msgid "Before installing, you need to update the Ansible roles that this playbook uses and fetches from outside."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:133
|
||||
msgid "To update your playbook directory and all upstream Ansible roles, run:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:135
|
||||
msgid "either: `just update`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:136
|
||||
msgid "Wait until the command completes. If it's all green, everything should be running properly."
|
||||
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:138
|
||||
msgid "Create your user account"
|
||||
msgid "If you don't have either `just` tool or `make` program, you can run the `ansible-galaxy` tool directly after updating the playbook: `git pull; rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:140
|
||||
msgid "<sup>This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Registering users](registering-users.md)</sup>"
|
||||
msgid "Run installation command"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../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: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:146
|
||||
msgid "**💡 Notes**:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:147
|
||||
msgid "Make sure to adjust `YOUR_USERNAME_HERE` and `YOUR_PASSWORD_HERE`"
|
||||
msgid "Then, run the command below to start installation:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:148
|
||||
msgid "For `YOUR_USERNAME_HERE`, use a plain username like `alice`, not your full ID (`@alice:example.com`)"
|
||||
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:150
|
||||
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:152
|
||||
msgid "Wait until the command completes. If it's all green, everything should be running properly."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:154
|
||||
msgid "Create your user account"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:156
|
||||
msgid "<sup>This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Registering users](registering-users.md)</sup>"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:158
|
||||
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:160
|
||||
msgid "Finalize server installation"
|
||||
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:162
|
||||
msgid "<sup>This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Server Delegation](howto-server-delegation.md)</sup>"
|
||||
msgid "**💡 Notes**:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:163
|
||||
msgid "Make sure to adjust `YOUR_USERNAME_HERE` and `YOUR_PASSWORD_HERE`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:164
|
||||
msgid "For `YOUR_USERNAME_HERE`, use a plain username like `alice`, not your full ID (`@alice:example.com`)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:176
|
||||
msgid "Finalize server installation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:178
|
||||
msgid "<sup>This section is optimized for this quick-start guide and is derived from the following full-documentation page: [Server Delegation](howto-server-delegation.md)</sup>"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:180
|
||||
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:166
|
||||
#: ../../../docs/quick-start.md:182
|
||||
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:168
|
||||
#: ../../../docs/quick-start.md:184
|
||||
msgid "To configure the delegation, you have these two options. Choose one of them according to your situation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:170
|
||||
#: ../../../docs/quick-start.md:186
|
||||
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:171
|
||||
#: ../../../docs/quick-start.md:187
|
||||
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:173
|
||||
#: ../../../docs/quick-start.md:189
|
||||
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:179
|
||||
#: ../../../docs/quick-start.md:195
|
||||
msgid "After configuring the playbook, run the command below and wait until it finishes:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:185
|
||||
#: ../../../docs/quick-start.md:201
|
||||
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:187
|
||||
#: ../../../docs/quick-start.md:203
|
||||
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:189
|
||||
#: ../../../docs/quick-start.md:205
|
||||
msgid "Re-run the full setup command any time"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:191
|
||||
#: ../../../docs/quick-start.md:207
|
||||
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:197
|
||||
#: ../../../docs/quick-start.md:213
|
||||
msgid "Log in to your user account"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:199
|
||||
#: ../../../docs/quick-start.md:215
|
||||
msgid "Finally, let's make sure that you can log in to the created account with the specified password."
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:201
|
||||
#: ../../../docs/quick-start.md:217
|
||||
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:203
|
||||
#: ../../../docs/quick-start.md:219
|
||||
msgid "**If you successfully logged in to your account, the installation and configuration have completed successfully**🎉"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:205
|
||||
#: ../../../docs/quick-start.md:221
|
||||
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:207
|
||||
#: ../../../docs/quick-start.md:223
|
||||
msgid "Things to do next"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:209
|
||||
#: ../../../docs/quick-start.md:225
|
||||
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:211
|
||||
#: ../../../docs/quick-start.md:227
|
||||
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:213
|
||||
#: ../../../docs/quick-start.md:229
|
||||
msgid "⚠️Keep the playbook and services up-to-date"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/quick-start.md:215
|
||||
#: ../../../docs/quick-start.md:231
|
||||
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:217
|
||||
#: ../../../docs/quick-start.md:233
|
||||
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:219
|
||||
#: ../../../docs/quick-start.md:235
|
||||
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 ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: matrix-docker-ansible-deploy \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-05-19 07:40+0000\n"
|
||||
"POT-Creation-Date: 2026-07-15 18:16+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -109,37 +109,41 @@ msgid "`matrix-bridge-mautrix-gmessages`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:44
|
||||
msgid "`matrix-bridge-mautrix-whatsapp`"
|
||||
msgid "`matrix-bridge-mautrix-gvoice`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:45
|
||||
msgid "`matrix-bridge-mx-puppet-steam`"
|
||||
msgid "`matrix-bridge-mautrix-whatsapp`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:46
|
||||
msgid "`matrix-bot-mjolnir`"
|
||||
msgid "`matrix-bridge-mx-puppet-steam`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:47
|
||||
msgid "`matrix-bot-honoroit`"
|
||||
msgid "`matrix-bot-mjolnir`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:48
|
||||
msgid "`matrix-bot-matrix-reminder-bot`"
|
||||
msgid "`matrix-bot-honoroit`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:49
|
||||
msgid "`matrix-bot-maubot`"
|
||||
msgid "`matrix-bot-matrix-reminder-bot`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:50
|
||||
msgid "`matrix-bot-maubot`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:51
|
||||
msgid "`matrix-pantalaimon`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:52
|
||||
#: ../../../docs/self-building.md:53
|
||||
msgid "Adding self-building support to other roles is welcome. Feel free to contribute!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../../docs/self-building.md:54
|
||||
#: ../../../docs/self-building.md:55
|
||||
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 ""
|
||||
|
||||
+6
-6
@@ -4,7 +4,7 @@
|
||||
version: v1.0.0-7
|
||||
name: auxiliary
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg.git
|
||||
version: v1.4.4-2.1.4-1
|
||||
version: v1.4.4-2.1.6-1
|
||||
name: backup_borg
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-cinny.git
|
||||
version: v4.12.3-0
|
||||
@@ -33,7 +33,7 @@
|
||||
version: v4.99.1-r0-2-1
|
||||
name: exim_relay
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-grafana.git
|
||||
version: v13.0.2-0
|
||||
version: v13.0.2-1
|
||||
name: grafana
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-hydrogen.git
|
||||
version: v0.5.1-5
|
||||
@@ -42,7 +42,7 @@
|
||||
version: v11031-0
|
||||
name: jitsi
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server.git
|
||||
version: v1.13.3-0
|
||||
version: v1.13.3-1
|
||||
name: livekit_server
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-ntfy.git
|
||||
version: v2.26.0-0
|
||||
@@ -57,7 +57,7 @@
|
||||
version: dd6e15246b7a9a2d921e0b3f9cd8a4a917a1bb2f
|
||||
name: playbook_state_preserver
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres.git
|
||||
version: v18.4-0
|
||||
version: v18.4-2
|
||||
name: postgres
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup.git
|
||||
version: v18-3
|
||||
@@ -69,13 +69,13 @@
|
||||
version: v1.10.0-4
|
||||
name: prometheus_nginxlog_exporter
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter.git
|
||||
version: v1.12.0-0
|
||||
version: v1.12.1-0
|
||||
name: prometheus_node_exporter
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter.git
|
||||
version: v0.20.1-0
|
||||
name: prometheus_postgres_exporter
|
||||
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-sable.git
|
||||
version: v1.19.3-0
|
||||
version: v1.19.4-0
|
||||
name: sable
|
||||
- src: git+https://github.com/devture/com.devture.ansible.role.systemd_docker_base.git
|
||||
version: v1.5.0-0
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
matrix_alertmanager_receiver_enabled: true
|
||||
|
||||
# renovate: datasource=docker depName=docker.io/metio/matrix-alertmanager-receiver
|
||||
matrix_alertmanager_receiver_version: 2026.7.8
|
||||
matrix_alertmanager_receiver_version: 2026.7.15
|
||||
|
||||
matrix_alertmanager_receiver_scheme: https
|
||||
|
||||
|
||||
@@ -260,6 +260,33 @@ matrix_authentication_service_config_account_registration_token_required: false
|
||||
########################################################################################
|
||||
|
||||
|
||||
########################################################################################
|
||||
# #
|
||||
# Captcha configuration #
|
||||
# #
|
||||
########################################################################################
|
||||
|
||||
# Controls the `captcha.service` configuration setting.
|
||||
#
|
||||
# Which service to use for CAPTCHA protection of certain operations (like self-service password registration).
|
||||
# Valid values: recaptcha_v2, cloudflare_turnstile, hcaptcha
|
||||
# When defined, `matrix_authentication_service_config_captcha_site_key` and `matrix_authentication_service_config_captcha_secret_key` must be defined as well.
|
||||
# Leave empty to disable CAPTCHA protection.
|
||||
matrix_authentication_service_config_captcha_service: ""
|
||||
|
||||
# Controls the `captcha.site_key` configuration setting.
|
||||
matrix_authentication_service_config_captcha_site_key: ""
|
||||
|
||||
# Controls the `captcha.secret_key` configuration setting.
|
||||
matrix_authentication_service_config_captcha_secret_key: ""
|
||||
|
||||
########################################################################################
|
||||
# #
|
||||
# /Captcha configuration #
|
||||
# #
|
||||
########################################################################################
|
||||
|
||||
|
||||
########################################################################################
|
||||
# #
|
||||
# Database configuration #
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
- {'name': 'matrix_authentication_service_container_labels_public_compatibility_layer_hostname', when: "{{ matrix_authentication_service_container_labels_public_compatibility_layer_enabled }}"}
|
||||
- {'name': 'matrix_authentication_service_container_labels_internal_compatibility_layer_entrypoints', when: "{{ matrix_authentication_service_container_labels_internal_compatibility_layer_enabled }}"}
|
||||
- {'name': 'matrix_authentication_service_config_email_hostname', when: "{{ matrix_authentication_service_config_email_transport == 'smtp' }}"}
|
||||
- {'name': 'matrix_authentication_service_config_captcha_site_key', when: "{{ matrix_authentication_service_config_captcha_service != '' }}"}
|
||||
- {'name': 'matrix_authentication_service_config_captcha_secret_key', when: "{{ matrix_authentication_service_config_captcha_service != '' }}"}
|
||||
|
||||
- name: Fail if matrix_authentication_service_config_secrets_encryption is not 64 characters long
|
||||
ansible.builtin.fail:
|
||||
@@ -36,6 +38,11 @@
|
||||
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: Fail if matrix_authentication_service_config_captcha_service is invalid
|
||||
ansible.builtin.fail:
|
||||
msg: "matrix_authentication_service_config_captcha_service must be one of: recaptcha_v2, cloudflare_turnstile, or hcaptcha (or empty, to disable CAPTCHA protection)"
|
||||
when: "matrix_authentication_service_config_captcha_service not in ['', 'recaptcha_v2', 'cloudflare_turnstile', 'hcaptcha']"
|
||||
|
||||
- name: (Deprecation) Catch and report renamed matrix-authentication-service settings
|
||||
ansible.builtin.fail:
|
||||
msg: >-
|
||||
|
||||
@@ -72,6 +72,13 @@ account:
|
||||
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 }}
|
||||
|
||||
{% if matrix_authentication_service_config_captcha_service %}
|
||||
captcha:
|
||||
service: {{ matrix_authentication_service_config_captcha_service | to_json }}
|
||||
site_key: {{ matrix_authentication_service_config_captcha_site_key | to_json }}
|
||||
secret_key: {{ matrix_authentication_service_config_captcha_secret_key | to_json }}
|
||||
{% endif %}
|
||||
|
||||
clients: {{ matrix_authentication_service_config_clients | to_json }}
|
||||
|
||||
{% if matrix_authentication_service_config_upstream_oauth2_providers | length > 0 %}
|
||||
|
||||
@@ -16,12 +16,11 @@
|
||||
# Project source code URL: https://github.com/matrix-org/matrix-appservice-discord
|
||||
|
||||
matrix_appservice_discord_enabled: false
|
||||
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_container_image: "{{ matrix_appservice_discord_container_image_registry_prefix }}matrix-org/matrix-appservice-discord:{{ matrix_appservice_discord_version }}"
|
||||
matrix_appservice_discord_container_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_discord_container_image_self_build else matrix_appservice_discord_container_image_registry_prefix_upstream }}"
|
||||
matrix_appservice_discord_container_image_registry_prefix: "{{ matrix_appservice_discord_container_image_registry_prefix_upstream }}"
|
||||
matrix_appservice_discord_container_image_registry_prefix_upstream: "{{ matrix_appservice_discord_container_image_registry_prefix_upstream_default }}"
|
||||
matrix_appservice_discord_container_image_registry_prefix_upstream_default: "ghcr.io/"
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
- {'old': 'matrix_appservice_discord_docker_image_registry_prefix_upstream', 'new': 'matrix_appservice_discord_container_image_registry_prefix_upstream'}
|
||||
- {'old': 'matrix_appservice_discord_docker_image_registry_prefix_upstream_default', 'new': 'matrix_appservice_discord_container_image_registry_prefix_upstream_default'}
|
||||
- {'old': 'matrix_appservice_discord_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'}
|
||||
- {'old': 'matrix_appservice_discord_container_image_self_build', 'new': '<removed> (self-building was never actually implemented for this role, so enabling it only led to image pull failures; the prebuilt image is amd64-only, so on other architectures consider the mautrix-discord bridge instead)'}
|
||||
|
||||
- name: Fail if required appservice-discord settings not defined
|
||||
ansible.builtin.fail:
|
||||
|
||||
@@ -1,233 +0,0 @@
|
||||
# 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/
|
||||
|
||||
matrix_appservice_kakaotalk_enabled: true
|
||||
|
||||
# No images are published for neither of the container images (appservice or node), so we're self-building everything.
|
||||
matrix_appservice_kakaotalk_container_image_self_build: true
|
||||
# matrix_appservice_kakaotalk_container_image_self_build_repo: "https://src.miscworks.net/fair/matrix-appservice-kakaotalk.git"
|
||||
#
|
||||
# hnarjis' fork is used instead of upstream (fair's), because upstream is currently broken.
|
||||
# The following error happens when chatting up the bot without this fix:
|
||||
# [2022-07-25 09:04:53,784] [ERROR@mau.as] Exception in Matrix event handler
|
||||
# Traceback (most recent call last):
|
||||
# File "/usr/lib/python3.9/site-packages/mautrix/appservice/as_handler.py", line 239, in try_handle
|
||||
# await handler_func(event)
|
||||
# File "/usr/lib/python3.9/site-packages/mautrix/bridge/matrix.py", line 820, in int_handle_event
|
||||
# await self.int_handle_invite(evt)
|
||||
# File "/usr/lib/python3.9/site-packages/mautrix/bridge/matrix.py", line 441, in int_handle_invite
|
||||
# inviter = await self.bridge.get_user(evt.sender)
|
||||
# File "/usr/lib/python3.9/site-packages/matrix_appservice_kakaotalk/__main__.py", line 112, in get_user
|
||||
# return await User.get_by_mxid(user_id, create=create)
|
||||
# File "/usr/lib/python3.9/site-packages/mautrix/util/async_getter_lock.py", line 60, in wrapper
|
||||
# return await fn(cls, *args, **kwargs)
|
||||
# File "/usr/lib/python3.9/site-packages/matrix_appservice_kakaotalk/user.py", line 227, in get_by_mxid
|
||||
# user = cls(mxid)
|
||||
# TypeError: __init__() missing 2 required positional arguments: 'force_login' and 'was_connected'
|
||||
matrix_appservice_kakaotalk_container_image_self_build_repo: "https://src.miscworks.net/hnarjis/matrix-appservice-kakaotalk.git"
|
||||
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_container_image: "{{ matrix_appservice_kakaotalk_node_container_image_registry_prefix }}fair/matrix-appservice-kakaotalk-node:{{ matrix_appservice_kakaotalk_node_version }}"
|
||||
matrix_appservice_kakaotalk_node_container_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_kakaotalk_container_image_self_build else matrix_appservice_kakaotalk_node_container_image_registry_prefix_upstream }}"
|
||||
matrix_appservice_kakaotalk_node_container_image_registry_prefix_upstream: "{{ matrix_appservice_kakaotalk_node_container_image_registry_prefix_upstream_default }}"
|
||||
matrix_appservice_kakaotalk_node_container_image_registry_prefix_upstream_default: ""
|
||||
|
||||
matrix_appservice_kakaotalk_version: 86c038fd2ffee5e0aebf65136f085cce7e38b54e
|
||||
matrix_appservice_kakaotalk_container_image: "{{ matrix_appservice_kakaotalk_container_image_registry_prefix }}fair/matrix-appservice-kakaotalk:{{ matrix_appservice_kakaotalk_version }}"
|
||||
matrix_appservice_kakaotalk_container_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_kakaotalk_container_image_self_build else matrix_appservice_kakaotalk_container_image_registry_prefix_upstream }}"
|
||||
matrix_appservice_kakaotalk_container_image_registry_prefix_upstream: "{{ matrix_appservice_kakaotalk_container_image_registry_prefix_upstream_default }}"
|
||||
matrix_appservice_kakaotalk_container_image_registry_prefix_upstream_default: ""
|
||||
|
||||
matrix_appservice_kakaotalk_base_path: "{{ matrix_base_data_path }}/appservice-kakaotalk"
|
||||
matrix_appservice_kakaotalk_config_path: "{{ matrix_appservice_kakaotalk_base_path }}/config"
|
||||
matrix_appservice_kakaotalk_data_path: "{{ matrix_appservice_kakaotalk_base_path }}/data"
|
||||
matrix_appservice_kakaotalk_container_src_files_path: "{{ matrix_appservice_kakaotalk_base_path }}/docker-src"
|
||||
|
||||
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'
|
||||
|
||||
|
||||
# A list of extra arguments to pass to the appservice-kakaotalk container
|
||||
matrix_appservice_kakaotalk_container_extra_arguments: []
|
||||
|
||||
# List of systemd services that matrix-appservice-kakaotalk.service depends on.
|
||||
matrix_appservice_kakaotalk_systemd_required_services_list: "{{ matrix_appservice_kakaotalk_systemd_required_services_list_default + matrix_appservice_kakaotalk_systemd_required_services_list_auto + matrix_appservice_kakaotalk_systemd_required_services_list_custom }}"
|
||||
matrix_appservice_kakaotalk_systemd_required_services_list_default: |-
|
||||
{{
|
||||
([devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [])
|
||||
+
|
||||
['matrix-appservice-kakaotalk-node.service']
|
||||
}}
|
||||
matrix_appservice_kakaotalk_systemd_required_services_list_auto: []
|
||||
matrix_appservice_kakaotalk_systemd_required_services_list_custom: []
|
||||
|
||||
# List of systemd services that matrix-appservice-kakaotalk.service wants
|
||||
matrix_appservice_kakaotalk_systemd_wanted_services_list: []
|
||||
|
||||
matrix_appservice_kakaotalk_container_network: ""
|
||||
|
||||
matrix_appservice_kakaotalk_container_additional_networks: "{{ matrix_appservice_kakaotalk_container_additional_networks_auto + matrix_appservice_kakaotalk_container_additional_networks_custom }}"
|
||||
matrix_appservice_kakaotalk_container_additional_networks_auto: []
|
||||
matrix_appservice_kakaotalk_container_additional_networks_custom: []
|
||||
|
||||
# A list of extra arguments to pass to the appservice-kakaotalk-node container
|
||||
matrix_appservice_kakaotalk_node_container_extra_arguments: []
|
||||
|
||||
# List of systemd services that matrix-appservice-kakaotalk-node.service depends on.
|
||||
matrix_appservice_kakaotalk_node_systemd_required_services_list: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
|
||||
|
||||
# List of systemd services that matrix-appservice-kakaotalk-node.service wants
|
||||
matrix_appservice_kakaotalk_node_systemd_wanted_services_list: []
|
||||
|
||||
matrix_appservice_kakaotalk_appservice_token: ''
|
||||
matrix_appservice_kakaotalk_homeserver_token: ''
|
||||
|
||||
# Whether or not created rooms should have federation enabled.
|
||||
# If false, created portal rooms will never be federated.
|
||||
matrix_appservice_kakaotalk_federate_rooms: true
|
||||
|
||||
# Database-related configuration fields.
|
||||
#
|
||||
# To use SQLite:
|
||||
# - change the engine (`matrix_appservice_kakaotalk_database_engine: 'sqlite'`)
|
||||
# To use Postgres:
|
||||
# - adjust your database credentials via the `matrix_appservice_kakaotalk_database_*` variables
|
||||
matrix_appservice_kakaotalk_database_engine: 'postgres'
|
||||
|
||||
matrix_appservice_kakaotalk_sqlite_database_path_local: "{{ matrix_appservice_kakaotalk_data_path }}/appservice-kakaotalk.db"
|
||||
matrix_appservice_kakaotalk_sqlite_database_path_in_container: "/data/appservice-kakaotalk.db"
|
||||
|
||||
matrix_appservice_kakaotalk_database_username: 'matrix_appservice_kakaotalk'
|
||||
matrix_appservice_kakaotalk_database_password: 'some-password'
|
||||
matrix_appservice_kakaotalk_database_hostname: ''
|
||||
matrix_appservice_kakaotalk_database_port: 5432
|
||||
matrix_appservice_kakaotalk_database_name: 'matrix_appservice_kakaotalk'
|
||||
|
||||
matrix_appservice_kakaotalk_database_connection_string: 'postgres://{{ matrix_appservice_kakaotalk_database_username }}:{{ matrix_appservice_kakaotalk_database_password }}@{{ matrix_appservice_kakaotalk_database_hostname }}:{{ matrix_appservice_kakaotalk_database_port }}/{{ matrix_appservice_kakaotalk_database_name }}'
|
||||
|
||||
matrix_appservice_kakaotalk_appservice_database: "{{ {
|
||||
'sqlite': ('sqlite:///' + matrix_appservice_kakaotalk_sqlite_database_path_in_container),
|
||||
'postgres': matrix_appservice_kakaotalk_database_connection_string,
|
||||
}[matrix_appservice_kakaotalk_database_engine] }}"
|
||||
|
||||
|
||||
# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth).
|
||||
# Also see: matrix_appservice_kakaotalk_bridge_login_shared_secret_map
|
||||
matrix_appservice_kakaotalk_login_shared_secret: ''
|
||||
|
||||
matrix_appservice_kakaotalk_bridge_login_shared_secret_map: "{{ {matrix_appservice_kakaotalk_homeserver_domain: matrix_appservice_kakaotalk_login_shared_secret} if matrix_appservice_kakaotalk_login_shared_secret else {} }}"
|
||||
|
||||
matrix_appservice_kakaotalk_bridge_relay_enabled: "{{ matrix_bridges_relay_enabled }}"
|
||||
|
||||
matrix_appservice_kakaotalk_bridge_permissions: |
|
||||
{{
|
||||
{matrix_appservice_kakaotalk_homeserver_domain: 'user'}
|
||||
| combine({matrix_admin: 'admin'} if matrix_admin else {})
|
||||
}}
|
||||
|
||||
matrix_appservice_kakaotalk_appservice_bot_username: kakaotalkbot
|
||||
matrix_appservice_kakaotalk_user_prefix: 'kakaotalk_'
|
||||
|
||||
# End-to-bridge encryption configuration
|
||||
matrix_appservice_kakaotalk_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}"
|
||||
matrix_appservice_kakaotalk_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}"
|
||||
|
||||
# Specifies the default log level for all bridge loggers.
|
||||
matrix_appservice_kakaotalk_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_appservice_kakaotalk_configuration_extension_yaml`)
|
||||
# or completely replace this variable with your own template.
|
||||
matrix_appservice_kakaotalk_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}"
|
||||
|
||||
matrix_appservice_kakaotalk_configuration_extension_yaml: |
|
||||
# Your custom YAML configuration goes here.
|
||||
# This configuration extends the default starting configuration (`matrix_appservice_kakaotalk_configuration_yaml`).
|
||||
#
|
||||
# You can override individual variables from the default configuration, or introduce new ones.
|
||||
#
|
||||
# If you need something more special, you can take full control by
|
||||
# completely redefining `matrix_appservice_kakaotalk_configuration_yaml`.
|
||||
|
||||
matrix_appservice_kakaotalk_configuration_extension: "{{ matrix_appservice_kakaotalk_configuration_extension_yaml | from_yaml if matrix_appservice_kakaotalk_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_appservice_kakaotalk_configuration_yaml`.
|
||||
matrix_appservice_kakaotalk_configuration: "{{ matrix_appservice_kakaotalk_configuration_yaml | from_yaml | combine(matrix_appservice_kakaotalk_configuration_extension, recursive=True) }}"
|
||||
|
||||
|
||||
# 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_appservice_kakaotalk_node_configuration_extension_yaml`)
|
||||
# or completely replace this variable with your own template.
|
||||
#
|
||||
# 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', 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`).
|
||||
#
|
||||
# You can override individual variables from the default configuration, or introduce new ones.
|
||||
#
|
||||
# If you need something more special, you can take full control by
|
||||
# completely redefining `matrix_appservice_kakaotalk_node_configuration_default`.
|
||||
#
|
||||
# Example configuration extension follows:
|
||||
#
|
||||
# matrix_appservice_kakaotalk_node_configuration_extension_json: |
|
||||
# {
|
||||
# "register_timeout": 5000
|
||||
# }
|
||||
matrix_appservice_kakaotalk_node_configuration_extension_json: '{}'
|
||||
|
||||
matrix_appservice_kakaotalk_node_configuration_extension: "{{ matrix_appservice_kakaotalk_node_configuration_extension_json | from_json if matrix_appservice_kakaotalk_node_configuration_extension_json | from_json is mapping else {} }}"
|
||||
|
||||
# Holds the final appservice-kakaotalk-node configuration (a combination of the default and its extension).
|
||||
# You most likely don't need to touch this variable. Instead, see `matrix_appservice_kakaotalk_node_configuration_default`.
|
||||
matrix_appservice_kakaotalk_node_configuration: "{{ matrix_appservice_kakaotalk_node_configuration_default | combine(matrix_appservice_kakaotalk_node_configuration_extension, recursive=True) }}"
|
||||
|
||||
|
||||
matrix_appservice_kakaotalk_registration_yaml: |
|
||||
id: appservice-kakaotalk
|
||||
as_token: {{ matrix_appservice_kakaotalk_appservice_token | to_json }}
|
||||
hs_token: {{ matrix_appservice_kakaotalk_homeserver_token | to_json }}
|
||||
namespaces:
|
||||
users:
|
||||
- exclusive: true
|
||||
regex: '^@{{ matrix_appservice_kakaotalk_user_prefix | regex_escape }}.*:{{ matrix_appservice_kakaotalk_homeserver_domain | regex_escape }}$'
|
||||
- exclusive: true
|
||||
regex: '^@{{ matrix_appservice_kakaotalk_appservice_bot_username | regex_escape }}:{{ matrix_appservice_kakaotalk_homeserver_domain | regex_escape }}$'
|
||||
url: {{ matrix_appservice_kakaotalk_appservice_address | to_json }}
|
||||
sender_localpart: _appservice_kakaotalk
|
||||
rate_limited: false
|
||||
|
||||
matrix_appservice_kakaotalk_registration: "{{ matrix_appservice_kakaotalk_registration_yaml | from_yaml }}"
|
||||
|
||||
# matrix_appservice_kakaotalk_restart_necessary controls whether the service
|
||||
# will be restarted (when true) or merely started (when false) by the
|
||||
# systemd service manager role (when conditional restart is enabled).
|
||||
#
|
||||
# This value is automatically computed during installation based on whether
|
||||
# any configuration files, the systemd service file, or the container image changed.
|
||||
# The default of `false` means "no restart needed" — appropriate when the role's
|
||||
# installation tasks haven't run (e.g., due to --tags skipping them).
|
||||
matrix_appservice_kakaotalk_restart_necessary: false
|
||||
@@ -1,136 +0,0 @@
|
||||
# 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
|
||||
community.docker.docker_image_pull:
|
||||
name: "{{ matrix_appservice_kakaotalk_container_image }}"
|
||||
pull: always
|
||||
when: not matrix_appservice_kakaotalk_container_image_self_build
|
||||
register: matrix_appservice_kakaotalk_container_image_pull_result
|
||||
retries: "{{ devture_playbook_help_container_retries_count }}"
|
||||
delay: "{{ devture_playbook_help_container_retries_delay }}"
|
||||
until: matrix_appservice_kakaotalk_container_image_pull_result is not failed
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk-node image is pulled
|
||||
community.docker.docker_image_pull:
|
||||
name: "{{ matrix_appservice_kakaotalk_node_container_image }}"
|
||||
pull: always
|
||||
when: not matrix_appservice_kakaotalk_container_image_self_build
|
||||
register: matrix_appservice_kakaotalk_node_container_image_pull_result
|
||||
retries: "{{ devture_playbook_help_container_retries_count }}"
|
||||
delay: "{{ devture_playbook_help_container_retries_delay }}"
|
||||
until: matrix_appservice_kakaotalk_node_container_image_pull_result is not failed
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk paths exist
|
||||
ansible.builtin.file:
|
||||
path: "{{ item.path }}"
|
||||
state: directory
|
||||
mode: '0750'
|
||||
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}
|
||||
- {path: "{{ matrix_appservice_kakaotalk_data_path }}", when: true}
|
||||
- {path: "{{ matrix_appservice_kakaotalk_container_src_files_path }}", when: "{{ matrix_appservice_kakaotalk_container_image_self_build }}"}
|
||||
when: item.when | bool
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk repository is present on self-build
|
||||
ansible.builtin.git:
|
||||
repo: "{{ matrix_appservice_kakaotalk_container_image_self_build_repo }}"
|
||||
dest: "{{ matrix_appservice_kakaotalk_container_src_files_path }}"
|
||||
version: "{{ matrix_appservice_kakaotalk_container_image_self_build_repo_version }}"
|
||||
force: "yes"
|
||||
become: true
|
||||
become_user: "{{ matrix_user_name }}"
|
||||
register: matrix_appservice_kakaotalk_git_pull_results
|
||||
when: "matrix_appservice_kakaotalk_container_image_self_build | bool"
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk-node Docker image is built
|
||||
community.docker.docker_image_build:
|
||||
name: "{{ matrix_appservice_kakaotalk_node_container_image }}"
|
||||
dockerfile: Dockerfile
|
||||
path: "{{ matrix_appservice_kakaotalk_container_src_files_path }}/node"
|
||||
pull: true
|
||||
rebuild: "{{ 'always' if matrix_appservice_kakaotalk_git_pull_results.changed | bool else 'never' }}"
|
||||
when: "matrix_appservice_kakaotalk_container_image_self_build | bool"
|
||||
register: matrix_appservice_kakaotalk_node_container_image_build_result
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk Docker image is built
|
||||
community.docker.docker_image_build:
|
||||
name: "{{ matrix_appservice_kakaotalk_container_image }}"
|
||||
dockerfile: Dockerfile
|
||||
path: "{{ matrix_appservice_kakaotalk_container_src_files_path }}"
|
||||
pull: true
|
||||
rebuild: "{{ 'always' if matrix_appservice_kakaotalk_git_pull_results.changed | bool else 'never' }}"
|
||||
when: "matrix_appservice_kakaotalk_container_image_self_build | bool"
|
||||
register: matrix_appservice_kakaotalk_container_image_build_result
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk-node config.json installed
|
||||
ansible.builtin.copy:
|
||||
content: "{{ matrix_appservice_kakaotalk_node_configuration | to_nice_json }}"
|
||||
dest: "{{ matrix_appservice_kakaotalk_config_path }}/node-config.json"
|
||||
mode: '0644'
|
||||
owner: "{{ matrix_user_name }}"
|
||||
group: "{{ matrix_group_name }}"
|
||||
register: matrix_appservice_kakaotalk_node_config_result
|
||||
|
||||
- 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_name }}"
|
||||
group: "{{ matrix_group_name }}"
|
||||
register: matrix_appservice_kakaotalk_config_result
|
||||
|
||||
- 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_name }}"
|
||||
group: "{{ matrix_group_name }}"
|
||||
register: matrix_appservice_kakaotalk_registration_result
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk container network is created
|
||||
when: matrix_appservice_kakaotalk_container_network != 'host'
|
||||
community.general.docker_network:
|
||||
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
|
||||
name: "{{ matrix_appservice_kakaotalk_container_network }}"
|
||||
driver: bridge
|
||||
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk-node.service installed
|
||||
ansible.builtin.template:
|
||||
src: "{{ role_path }}/templates/systemd/matrix-appservice-kakaotalk-node.service.j2"
|
||||
dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-kakaotalk-node.service"
|
||||
mode: '0644'
|
||||
register: matrix_appservice_kakaotalk_node_systemd_service_result
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk.service installed
|
||||
ansible.builtin.template:
|
||||
src: "{{ role_path }}/templates/systemd/matrix-appservice-kakaotalk.service.j2"
|
||||
dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-kakaotalk.service"
|
||||
mode: '0644'
|
||||
register: matrix_appservice_kakaotalk_systemd_service_result
|
||||
|
||||
- name: Determine whether matrix-appservice-kakaotalk needs a restart
|
||||
ansible.builtin.set_fact:
|
||||
matrix_appservice_kakaotalk_restart_necessary: >-
|
||||
{{
|
||||
matrix_appservice_kakaotalk_node_config_result.changed | default(false)
|
||||
or matrix_appservice_kakaotalk_config_result.changed | default(false)
|
||||
or matrix_appservice_kakaotalk_registration_result.changed | default(false)
|
||||
or matrix_appservice_kakaotalk_node_systemd_service_result.changed | default(false)
|
||||
or matrix_appservice_kakaotalk_systemd_service_result.changed | default(false)
|
||||
or matrix_appservice_kakaotalk_container_image_pull_result.changed | default(false)
|
||||
or matrix_appservice_kakaotalk_node_container_image_pull_result.changed | default(false)
|
||||
or matrix_appservice_kakaotalk_container_image_build_result.changed | default(false)
|
||||
or matrix_appservice_kakaotalk_node_container_image_build_result.changed | default(false)
|
||||
}}
|
||||
@@ -1,40 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2022 Slavi Pantaleev
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
---
|
||||
|
||||
- name: Check existence of matrix-appservice-kakaotalk service
|
||||
ansible.builtin.stat:
|
||||
path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-kakaotalk.service"
|
||||
register: matrix_appservice_kakaotalk_service_stat
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk is stopped
|
||||
ansible.builtin.service:
|
||||
name: matrix-appservice-kakaotalk
|
||||
state: stopped
|
||||
enabled: false
|
||||
daemon_reload: true
|
||||
when: matrix_appservice_kakaotalk_service_stat.stat.exists | bool
|
||||
|
||||
- name: Check existence of matrix-appservice-kakaotalk-node service
|
||||
ansible.builtin.stat:
|
||||
path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-kakaotalk-node.service"
|
||||
register: matrix_appservice_kakaotalk_node_service_stat
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk-node is stopped
|
||||
ansible.builtin.service:
|
||||
name: matrix-appservice-kakaotalk-node
|
||||
state: stopped
|
||||
enabled: false
|
||||
daemon_reload: true
|
||||
when: matrix_appservice_kakaotalk_node_service_stat.stat.exists | bool
|
||||
|
||||
- name: Ensure matrix-appservice-kakaotalk.service files don't exist
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
with_items:
|
||||
- "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-kakaotalk-node.service"
|
||||
- "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-kakaotalk.service"
|
||||
when: matrix_appservice_kakaotalk_service_stat.stat.exists | bool or matrix_appservice_kakaotalk_node_service_stat.stat.exists | bool
|
||||
@@ -1,41 +0,0 @@
|
||||
# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev
|
||||
# SPDX-FileCopyrightText: 2025 Suguru Hirahara
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
---
|
||||
|
||||
- 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_container_image_registry_prefix'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_docker_image_name_prefix', 'new': 'matrix_appservice_kakaotalk_container_image_registry_prefix'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_docker_image', 'new': 'matrix_appservice_kakaotalk_container_image'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_docker_image_force_pull', 'new': 'matrix_appservice_kakaotalk_container_image_force_pull'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_docker_image_registry_prefix', 'new': 'matrix_appservice_kakaotalk_container_image_registry_prefix'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_docker_image_registry_prefix_upstream', 'new': 'matrix_appservice_kakaotalk_container_image_registry_prefix_upstream'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_docker_image_registry_prefix_upstream_default', 'new': 'matrix_appservice_kakaotalk_container_image_registry_prefix_upstream_default'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_docker_src_files_path', 'new': 'matrix_appservice_kakaotalk_container_src_files_path'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_node_docker_image', 'new': 'matrix_appservice_kakaotalk_node_container_image'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_node_docker_image_force_pull', 'new': 'matrix_appservice_kakaotalk_node_container_image_force_pull'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_node_docker_image_registry_prefix', 'new': 'matrix_appservice_kakaotalk_node_container_image_registry_prefix'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_node_docker_image_registry_prefix_upstream', 'new': 'matrix_appservice_kakaotalk_node_container_image_registry_prefix_upstream'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_node_docker_image_registry_prefix_upstream_default', 'new': 'matrix_appservice_kakaotalk_node_container_image_registry_prefix_upstream_default'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'}
|
||||
- {'old': 'matrix_appservice_kakaotalk_node_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'}
|
||||
|
||||
- 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 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}
|
||||
@@ -1,276 +0,0 @@
|
||||
# Homeserver details
|
||||
homeserver:
|
||||
# The address that this appservice can use to connect to the homeserver.
|
||||
address: {{ matrix_appservice_kakaotalk_homeserver_address | to_json }}
|
||||
# The domain of the homeserver (for MXIDs, etc).
|
||||
domain: {{ matrix_appservice_kakaotalk_homeserver_domain | to_json }}
|
||||
# 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
|
||||
# Number of retries for all HTTP requests if the homeserver isn't reachable.
|
||||
http_retry_count: 4
|
||||
# The URL to push real-time bridge status to.
|
||||
# If set, the bridge will make POST requests to this URL whenever a user's MQTT connection state changes.
|
||||
# The bridge will use the appservice as_token to authorize requests.
|
||||
status_endpoint: null
|
||||
# Endpoint for reporting per-message status.
|
||||
message_send_checkpoint_endpoint: null
|
||||
# Whether asynchronous uploads via MSC2246 should be enabled for media.
|
||||
# Requires a media repo that supports MSC2246.
|
||||
async_media: {{ matrix_appservice_kakaotalk_homeserver_async_media | to_json }}
|
||||
|
||||
# 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_appservice_kakaotalk_appservice_address | to_json }}
|
||||
|
||||
# The hostname and port where this appservice should listen.
|
||||
hostname: 0.0.0.0
|
||||
port: 11115
|
||||
# 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. SQLite and Postgres are supported.
|
||||
# Format examples:
|
||||
# SQLite: sqlite:///filename.db
|
||||
# Postgres: postgres://username:password@hostname/dbname
|
||||
database: {{ matrix_appservice_kakaotalk_appservice_database | to_json }}
|
||||
# Additional arguments for asyncpg.create_pool() or sqlite3.connect()
|
||||
# https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool
|
||||
# https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
|
||||
# For sqlite, min_size is used as the connection thread pool size and max_size is ignored.
|
||||
database_opts:
|
||||
min_size: 5
|
||||
max_size: 10
|
||||
|
||||
# The unique ID of this appservice.
|
||||
id: appservice-kakaotalk
|
||||
# Username of the appservice bot.
|
||||
bot_username: {{ matrix_appservice_kakaotalk_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: KakaoTalk bridge bot
|
||||
bot_avatar:
|
||||
|
||||
# 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. Autogenerated; do not modify.
|
||||
as_token: {{ matrix_appservice_kakaotalk_appservice_token | to_json }}
|
||||
hs_token: {{ matrix_appservice_kakaotalk_homeserver_token | to_json }}
|
||||
|
||||
# Prometheus telemetry config. Requires prometheus-client to be installed.
|
||||
metrics:
|
||||
enabled: false
|
||||
listen_port: 8000
|
||||
|
||||
# Manhole config.
|
||||
manhole:
|
||||
# Whether or not opening the manhole is allowed.
|
||||
enabled: false
|
||||
# The path for the unix socket.
|
||||
path: /var/tmp/matrix-appservice-kakaotalk.manhole
|
||||
# The list of UIDs who can be added to the whitelist.
|
||||
# If empty, any UIDs can be specified in the open-manhole command.
|
||||
whitelist:
|
||||
- 0
|
||||
|
||||
# Config for things that are directly sent to KakaoTalk.
|
||||
kakaotalk:
|
||||
device_name: "KakaoTalk Bridge"
|
||||
|
||||
# Bridge config
|
||||
bridge:
|
||||
# Localpart template of MXIDs for KakaoTalk users.
|
||||
# {userid} is replaced with the user ID of the KakaoTalk user.
|
||||
username_template: "{{ matrix_appservice_kakaotalk_user_prefix }}{userid}"
|
||||
# Displayname template for KakaoTalk users.
|
||||
# {displayname} is replaced with the display name of the KakaoTalk user.
|
||||
displayname_template: "{displayname} (KT)"
|
||||
|
||||
# The prefix for commands. Only required in non-management rooms.
|
||||
command_prefix: {{ matrix_appservice_kakaotalk_command_prefix | to_json }}
|
||||
|
||||
# Number of chats to sync (and create portals for) on startup/login.
|
||||
# Set to 0 to disable automatic syncing, or -1 to sync as much as possible.
|
||||
initial_chat_sync: 20
|
||||
# Whether or not the KakaoTalk 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: {}
|
||||
# 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_appservice_kakaotalk_bridge_login_shared_secret_map | 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_appservice_kakaotalk_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_appservice_kakaotalk_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: false
|
||||
# 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 KakaoTalk.
|
||||
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_appservice_kakaotalk_federate_rooms | to_json }}
|
||||
# Settings for backfilling messages from KakaoTalk.
|
||||
backfill:
|
||||
# Whether or not the KakaoTalk users of logged in Matrix users should be
|
||||
# invited to private chats when backfilling history from KakaoTalk. 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, or -1 to backfill as much as possible.
|
||||
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, or -1 to backfill as much as possible.
|
||||
missed_limit: 1000
|
||||
# If using double puppeting, should notifications be disabled
|
||||
# while the initial backfill is in progress?
|
||||
disable_notifications: 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 users remain logged in after being disconnected from chatroom updates?
|
||||
# This is a convenience feature, but might make the bridge look more suspicious to KakaoTalk.
|
||||
remain_logged_in_on_disconnect: true
|
||||
# May the bridge restore user logins with session tokens instead of requiring a password?
|
||||
# This is a convenience feature, but might make the bridge look more suspicious to KakaoTalk.
|
||||
# Note that password-based login will be tried first for users who have saved their password.
|
||||
allow_token_relogin: true
|
||||
# Should the bridge connect users to chatroom updates after a token-based login?
|
||||
# This will disconnect any KakaoTalk PC/bridge sessions that were started since the last connection.
|
||||
# This is a convenience feature, but might make the bridge look more suspicious to KakaoTalk.
|
||||
reconnect_on_token_relogin: true
|
||||
# Should the bridge do a resync for connected users 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: true
|
||||
# Disable bridge notices entirely
|
||||
disable_bridge_notices: 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
|
||||
# Whether or not mute status and tags should only be bridged when the portal room is created.
|
||||
tag_only_on_create: true
|
||||
# If set to true, downloading media from the CDN will use a plain aiohttp client without the usual headers or
|
||||
# other configuration. This may be useful if you don't want to use the default proxy for large files.
|
||||
sandbox_media_download: false
|
||||
|
||||
# Permissions for using the bridge.
|
||||
# Permitted values:
|
||||
# relay - Allowed to be relayed through the bridge, no access to commands.
|
||||
# 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_appservice_kakaotalk_bridge_permissions | to_json }}
|
||||
|
||||
relay:
|
||||
# Whether relay mode should be allowed. If allowed, `!kt set-relay` can be used to turn any
|
||||
# authenticated user into a relaybot for that chat.
|
||||
enabled: {{ matrix_appservice_kakaotalk_bridge_relay_enabled }}
|
||||
# The formats to use when sending messages to KakaoTalk 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: '<b>$sender_displayname</b>: $message'
|
||||
m.notice: '<b>$sender_displayname</b>: $message'
|
||||
m.emote: '* <b>$sender_displayname</b> $message'
|
||||
m.file: 'File from <b>$sender_displayname</b>: $message'
|
||||
m.image: 'Image from <b>$sender_displayname</b>: $message'
|
||||
m.audio: 'Audio from <b>$sender_displayname</b>: $message'
|
||||
m.video: 'Video from <b>$sender_displayname</b>: $message'
|
||||
m.location: '<b>$sender_displayname</b> sent a location'
|
||||
|
||||
rpc:
|
||||
connection:
|
||||
# Either unix or tcp
|
||||
type: tcp
|
||||
# Only for type: unix
|
||||
# path: /rpc/rpc.sock
|
||||
# Only for type: tcp
|
||||
host: matrix-appservice-kakaotalk-node
|
||||
port: 8000
|
||||
|
||||
# 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:
|
||||
(): matrix_appservice_kakaotalk.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_appservice_kakaotalk_logging_level | to_json }}
|
||||
paho:
|
||||
level: {{ matrix_appservice_kakaotalk_logging_level | to_json }}
|
||||
aiohttp:
|
||||
level: {{ matrix_appservice_kakaotalk_logging_level | to_json }}
|
||||
root:
|
||||
level: {{ matrix_appservice_kakaotalk_logging_level | to_json }}
|
||||
handlers: [console]
|
||||
@@ -1,6 +0,0 @@
|
||||
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
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"listen": {
|
||||
"type": "tcp",
|
||||
"host": "0.0.0.0",
|
||||
"port": 8000,
|
||||
"force": false
|
||||
},
|
||||
"register_timeout": 3000,
|
||||
"logging_keys": {
|
||||
"request": ["mxid"],
|
||||
"response": ["status"]
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
SPDX-FileCopyrightText: 2022 Slavi Pantaleev
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
#jinja2: lstrip_blocks: True
|
||||
[Unit]
|
||||
Description=appservice-kakaotalk bridge
|
||||
{% for service in matrix_appservice_kakaotalk_systemd_required_services_list %}
|
||||
Requires={{ service }}
|
||||
After={{ service }}
|
||||
{% endfor %}
|
||||
{% for service in matrix_appservice_kakaotalk_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-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 \
|
||||
--rm \
|
||||
--name=matrix-appservice-kakaotalk \
|
||||
--log-driver=none \
|
||||
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
|
||||
--cap-drop=ALL \
|
||||
--network={{ matrix_appservice_kakaotalk_container_network }} \
|
||||
--mount type=bind,src={{ matrix_appservice_kakaotalk_config_path }},dst=/config,ro \
|
||||
--mount type=bind,src={{ matrix_appservice_kakaotalk_data_path }},dst=/data \
|
||||
{% for arg in matrix_appservice_kakaotalk_container_extra_arguments %}
|
||||
{{ arg }} \
|
||||
{% endfor %}
|
||||
{{ matrix_appservice_kakaotalk_container_image }} \
|
||||
python3 -m matrix_appservice_kakaotalk -c /config/config.yaml --no-update
|
||||
|
||||
{% if matrix_appservice_kakaotalk_container_network != 'host' %}
|
||||
{% for network in matrix_appservice_kakaotalk_container_additional_networks %}
|
||||
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-appservice-kakaotalk
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
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 -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
|
||||
SyslogIdentifier=matrix-appservice-kakaotalk
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
SPDX-FileCopyrightText: 2022 Slavi Pantaleev
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -70,7 +70,8 @@ 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.
|
||||
# - the homeserver to support MSC2409 (to-device messages for appservices) and MSC3202 (encryption-related appservice transaction extensions), and to have them enabled.
|
||||
# These are typically experimental homeserver features which are disabled by default, so they usually need to be enabled explicitly via homeserver-specific configuration.
|
||||
# - 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
|
||||
# NOTE: Encryption is not currently (2025-12-30) supported when using MAS (https://github.com/matrix-org/matrix-hookshot/issues/1084)
|
||||
|
||||
@@ -0,0 +1,249 @@
|
||||
# SPDX-FileCopyrightText: 2026 MDAD project contributors
|
||||
# SPDX-FileCopyrightText: 2026 Nikita Chernyi
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
---
|
||||
# mautrix-gvoice is a Matrix <-> Google Voice bridge
|
||||
# Project source code URL: https://github.com/mautrix/gvoice
|
||||
|
||||
matrix_mautrix_gvoice_enabled: true
|
||||
|
||||
matrix_mautrix_gvoice_container_image_self_build: false
|
||||
matrix_mautrix_gvoice_container_image_self_build_repo: "https://github.com/mautrix/gvoice.git"
|
||||
matrix_mautrix_gvoice_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_gvoice_version == 'latest' else matrix_mautrix_gvoice_version }}"
|
||||
|
||||
# renovate: datasource=docker depName=dock.mau.dev/mautrix/gvoice
|
||||
matrix_mautrix_gvoice_version: v0.2605.0
|
||||
|
||||
# See: https://mau.dev/mautrix/gvoice/container_registry
|
||||
matrix_mautrix_gvoice_container_image: "{{ matrix_mautrix_gvoice_container_image_registry_prefix }}mautrix/gvoice:{{ matrix_mautrix_gvoice_version }}"
|
||||
matrix_mautrix_gvoice_container_image_registry_prefix: "{{ 'localhost/' if matrix_mautrix_gvoice_container_image_self_build else matrix_mautrix_gvoice_container_image_registry_prefix_upstream }}"
|
||||
matrix_mautrix_gvoice_container_image_registry_prefix_upstream: "{{ matrix_mautrix_gvoice_container_image_registry_prefix_upstream_default }}"
|
||||
matrix_mautrix_gvoice_container_image_registry_prefix_upstream_default: "dock.mau.dev/"
|
||||
|
||||
matrix_mautrix_gvoice_base_path: "{{ matrix_base_data_path }}/mautrix-gvoice"
|
||||
matrix_mautrix_gvoice_config_path: "{{ matrix_mautrix_gvoice_base_path }}/config"
|
||||
matrix_mautrix_gvoice_data_path: "{{ matrix_mautrix_gvoice_base_path }}/data"
|
||||
matrix_mautrix_gvoice_container_src_files_path: "{{ matrix_mautrix_gvoice_base_path }}/docker-src"
|
||||
|
||||
matrix_mautrix_gvoice_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_gvoice_homeserver_async_media: false
|
||||
matrix_mautrix_gvoice_homeserver_domain: "{{ matrix_domain }}"
|
||||
matrix_mautrix_gvoice_appservice_address: "http://matrix-mautrix-gvoice:8080"
|
||||
|
||||
# Scheme of the bridge's public address (see `matrix_mautrix_gvoice_bridge_public_address`).
|
||||
matrix_mautrix_gvoice_scheme: https
|
||||
|
||||
# The public base URL at which this bridge's HTTP API is reachable from outside (when exposed).
|
||||
# Used for the provisioning API's external-server (OpenID) flow and for public media links.
|
||||
matrix_mautrix_gvoice_bridge_public_address: "{{ (matrix_mautrix_gvoice_scheme + '://' + matrix_mautrix_gvoice_exposure_hostname + matrix_mautrix_gvoice_exposure_path_prefix) if matrix_mautrix_gvoice_exposure_enabled else '' }}"
|
||||
|
||||
matrix_mautrix_gvoice_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}"
|
||||
matrix_mautrix_gvoice_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}"
|
||||
|
||||
matrix_mautrix_gvoice_backfill_enabled: true
|
||||
matrix_mautrix_gvoice_backfill_max_initial_messages: 50
|
||||
matrix_mautrix_gvoice_backfill_max_catchup_messages: 500
|
||||
matrix_mautrix_gvoice_backfill_unread_hours_threshold: 720
|
||||
matrix_mautrix_gvoice_backfill_threads_max_initial_messages: 50
|
||||
|
||||
matrix_mautrix_gvoice_command_prefix: "!gv"
|
||||
|
||||
matrix_mautrix_gvoice_container_network: ""
|
||||
|
||||
matrix_mautrix_gvoice_container_additional_networks: "{{ matrix_mautrix_gvoice_container_additional_networks_auto + matrix_mautrix_gvoice_container_additional_networks_custom }}"
|
||||
matrix_mautrix_gvoice_container_additional_networks_auto: []
|
||||
matrix_mautrix_gvoice_container_additional_networks_custom: []
|
||||
|
||||
# matrix_mautrix_gvoice_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_gvoice_container_labels_additional_labels`.
|
||||
matrix_mautrix_gvoice_container_labels_traefik_enabled: true
|
||||
matrix_mautrix_gvoice_container_labels_traefik_docker_network: "{{ matrix_mautrix_gvoice_container_network }}"
|
||||
matrix_mautrix_gvoice_container_labels_traefik_entrypoints: web-secure
|
||||
matrix_mautrix_gvoice_container_labels_traefik_tls_certResolver: default # noqa var-naming
|
||||
|
||||
# Controls whether labels will be added that expose mautrix-gvoice' metrics
|
||||
matrix_mautrix_gvoice_container_labels_metrics_enabled: "{{ matrix_mautrix_gvoice_metrics_enabled and matrix_mautrix_gvoice_metrics_proxying_enabled }}"
|
||||
matrix_mautrix_gvoice_container_labels_metrics_traefik_rule: "Host(`{{ matrix_mautrix_gvoice_metrics_proxying_hostname }}`) && PathPrefix(`{{ matrix_mautrix_gvoice_metrics_proxying_path_prefix }}`)"
|
||||
matrix_mautrix_gvoice_container_labels_metrics_traefik_priority: 0
|
||||
matrix_mautrix_gvoice_container_labels_metrics_traefik_entrypoints: "{{ matrix_mautrix_gvoice_container_labels_traefik_entrypoints }}"
|
||||
matrix_mautrix_gvoice_container_labels_metrics_traefik_tls: "{{ matrix_mautrix_gvoice_container_labels_metrics_traefik_entrypoints != 'web' }}"
|
||||
matrix_mautrix_gvoice_container_labels_metrics_traefik_tls_certResolver: "{{ matrix_mautrix_gvoice_container_labels_traefik_tls_certResolver }}" # noqa var-naming
|
||||
matrix_mautrix_gvoice_container_labels_metrics_middleware_basic_auth_enabled: false
|
||||
# See: https://doc.traefik.io/traefik/middlewares/http/basicauth/#users
|
||||
matrix_mautrix_gvoice_container_labels_metrics_middleware_basic_auth_users: ''
|
||||
|
||||
# Controls whether labels will be added that expose mautrix-gvoice' HTTP API
|
||||
# (used by tools like mautrix-manager for bridge login) at `https://<hostname><path_prefix>`.
|
||||
matrix_mautrix_gvoice_container_labels_exposure_enabled: "{{ matrix_mautrix_gvoice_exposure_enabled }}"
|
||||
matrix_mautrix_gvoice_container_labels_exposure_traefik_rule: "Host(`{{ matrix_mautrix_gvoice_exposure_hostname }}`) && PathPrefix(`{{ matrix_mautrix_gvoice_exposure_path_prefix }}`)"
|
||||
matrix_mautrix_gvoice_container_labels_exposure_traefik_priority: 0
|
||||
matrix_mautrix_gvoice_container_labels_exposure_traefik_entrypoints: "{{ matrix_mautrix_gvoice_container_labels_traefik_entrypoints }}"
|
||||
matrix_mautrix_gvoice_container_labels_exposure_traefik_tls: "{{ matrix_mautrix_gvoice_container_labels_exposure_traefik_entrypoints != 'web' }}"
|
||||
matrix_mautrix_gvoice_container_labels_exposure_traefik_tls_certResolver: "{{ matrix_mautrix_gvoice_container_labels_traefik_tls_certResolver }}" # noqa var-naming
|
||||
|
||||
# matrix_mautrix_gvoice_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_gvoice_container_labels_additional_labels: |
|
||||
# my.label=1
|
||||
# another.label="here"
|
||||
matrix_mautrix_gvoice_container_labels_additional_labels: ''
|
||||
|
||||
# A list of extra arguments to pass to the container
|
||||
matrix_mautrix_gvoice_container_extra_arguments: []
|
||||
|
||||
# List of systemd services that matrix-mautrix-gvoice.service depends on.
|
||||
matrix_mautrix_gvoice_systemd_required_services_list: "{{ matrix_mautrix_gvoice_systemd_required_services_list_default + matrix_mautrix_gvoice_systemd_required_services_list_auto + matrix_mautrix_gvoice_systemd_required_services_list_custom }}"
|
||||
matrix_mautrix_gvoice_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
|
||||
matrix_mautrix_gvoice_systemd_required_services_list_auto: []
|
||||
matrix_mautrix_gvoice_systemd_required_services_list_custom: []
|
||||
|
||||
# List of systemd services that matrix-mautrix-gvoice.service wants
|
||||
matrix_mautrix_gvoice_systemd_wanted_services_list: []
|
||||
|
||||
matrix_mautrix_gvoice_appservice_token: ''
|
||||
matrix_mautrix_gvoice_homeserver_token: ''
|
||||
|
||||
matrix_mautrix_gvoice_appservice_bot_username: gvoicebot
|
||||
|
||||
# Minimum severity of journal log messages.
|
||||
# Valid values: fatal, error, warn, info, debug, trace
|
||||
matrix_mautrix_gvoice_logging_level: 'warn'
|
||||
|
||||
# Whether or not created rooms should have federation enabled.
|
||||
# If false, created portal rooms will never be federated.
|
||||
matrix_mautrix_gvoice_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_gvoice_metrics_proxying_enabled`.
|
||||
matrix_mautrix_gvoice_metrics_enabled: false
|
||||
|
||||
# Controls whether metrics should be proxied (exposed) on a public URL.
|
||||
matrix_mautrix_gvoice_metrics_proxying_enabled: false
|
||||
matrix_mautrix_gvoice_metrics_proxying_hostname: ''
|
||||
matrix_mautrix_gvoice_metrics_proxying_path_prefix: ''
|
||||
|
||||
# Controls whether mautrix-gvoice' HTTP API is exposed publicly (used by tools like mautrix-manager for bridge login).
|
||||
matrix_mautrix_gvoice_exposure_enabled: false
|
||||
matrix_mautrix_gvoice_exposure_hostname: ''
|
||||
matrix_mautrix_gvoice_exposure_path_prefix: ''
|
||||
|
||||
# Database-related configuration fields.
|
||||
#
|
||||
# To use SQLite, stick to these defaults.
|
||||
#
|
||||
# To use Postgres:
|
||||
# - change the engine (`matrix_mautrix_gvoice_database_engine: 'postgres'`)
|
||||
# - adjust your database credentials via the `matrix_mautrix_gvoice_database_*` variables
|
||||
matrix_mautrix_gvoice_database_engine: 'sqlite'
|
||||
|
||||
matrix_mautrix_gvoice_sqlite_database_path_local: "{{ matrix_mautrix_gvoice_data_path }}/mautrix-gvoice.db"
|
||||
matrix_mautrix_gvoice_sqlite_database_path_in_container: "/data/mautrix-gvoice.db"
|
||||
|
||||
matrix_mautrix_gvoice_database_username: 'matrix_mautrix_gvoice'
|
||||
matrix_mautrix_gvoice_database_password: 'some-password'
|
||||
matrix_mautrix_gvoice_database_hostname: ''
|
||||
matrix_mautrix_gvoice_database_port: 5432
|
||||
matrix_mautrix_gvoice_database_name: 'matrix_mautrix_gvoice'
|
||||
matrix_mautrix_gvoice_database_sslmode: disable
|
||||
|
||||
matrix_mautrix_gvoice_database_connection_string: 'postgresql://{{ matrix_mautrix_gvoice_database_username }}:{{ matrix_mautrix_gvoice_database_password }}@{{ matrix_mautrix_gvoice_database_hostname }}:{{ matrix_mautrix_gvoice_database_port }}/{{ matrix_mautrix_gvoice_database_name }}?sslmode={{ matrix_mautrix_gvoice_database_sslmode }}'
|
||||
|
||||
matrix_mautrix_gvoice_appservice_database_type: "{{ {
|
||||
'sqlite': 'sqlite3',
|
||||
'postgres': 'postgres',
|
||||
}[matrix_mautrix_gvoice_database_engine] }}"
|
||||
|
||||
matrix_mautrix_gvoice_appservice_database_uri: "{{ {
|
||||
'sqlite': matrix_mautrix_gvoice_sqlite_database_path_in_container,
|
||||
'postgres': matrix_mautrix_gvoice_database_connection_string,
|
||||
}[matrix_mautrix_gvoice_database_engine] }}"
|
||||
|
||||
matrix_mautrix_gvoice_double_puppet_secrets: "{{ matrix_mautrix_gvoice_double_puppet_secrets_auto | combine(matrix_mautrix_gvoice_double_puppet_secrets_custom) }}"
|
||||
matrix_mautrix_gvoice_double_puppet_secrets_auto: {}
|
||||
matrix_mautrix_gvoice_double_puppet_secrets_custom: {}
|
||||
|
||||
# Enable End-to-bridge encryption
|
||||
matrix_mautrix_gvoice_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}"
|
||||
matrix_mautrix_gvoice_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}"
|
||||
matrix_mautrix_gvoice_bridge_encryption_require: false
|
||||
matrix_mautrix_gvoice_bridge_encryption_appservice: false
|
||||
matrix_mautrix_gvoice_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_gvoice_bridge_encryption_allow }}"
|
||||
matrix_mautrix_gvoice_bridge_encryption_pickle_key: mautrix.bridge.e2ee
|
||||
|
||||
matrix_mautrix_gvoice_network_displayname_template: "{% raw %}{{ or .Contact.Name .Name }}{% endraw %}"
|
||||
matrix_mautrix_gvoice_appservice_username_template: "{% raw %}gvoice_{{.}}{% endraw %}"
|
||||
|
||||
matrix_mautrix_gvoice_public_media_signing_key: ''
|
||||
|
||||
# Shared secret for authentication of provisioning API requests.
|
||||
# If set to "disable", the provisioning API will be disabled.
|
||||
matrix_mautrix_gvoice_provisioning_shared_secret: disable
|
||||
|
||||
matrix_mautrix_gvoice_bridge_personal_filtering_spaces: true
|
||||
|
||||
matrix_mautrix_gvoice_bridge_permissions: |
|
||||
{{
|
||||
{'*': 'relay', matrix_mautrix_gvoice_homeserver_domain: 'user'}
|
||||
| combine({matrix_admin: 'admin'} if matrix_admin else {})
|
||||
}}
|
||||
|
||||
# Default mautrix-gvoice 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_gvoice_configuration_extension_yaml`)
|
||||
# or completely replace this variable with your own template.
|
||||
matrix_mautrix_gvoice_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}"
|
||||
|
||||
matrix_mautrix_gvoice_configuration_extension_yaml: |
|
||||
# Your custom YAML configuration goes here.
|
||||
# This configuration extends the default starting configuration (`matrix_mautrix_gvoice_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_gvoice_configuration_yaml`.
|
||||
|
||||
matrix_mautrix_gvoice_configuration_extension: "{{ matrix_mautrix_gvoice_configuration_extension_yaml | from_yaml if matrix_mautrix_gvoice_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_gvoice_configuration_yaml`.
|
||||
matrix_mautrix_gvoice_configuration: "{{ matrix_mautrix_gvoice_configuration_yaml | from_yaml | combine(matrix_mautrix_gvoice_configuration_extension, recursive=True) }}"
|
||||
|
||||
matrix_mautrix_gvoice_registration_yaml: |
|
||||
id: gvoice
|
||||
url: {{ matrix_mautrix_gvoice_appservice_address }}
|
||||
as_token: "{{ matrix_mautrix_gvoice_appservice_token }}"
|
||||
hs_token: "{{ matrix_mautrix_gvoice_homeserver_token }}"
|
||||
# See https://github.com/mautrix/signal/issues/43
|
||||
sender_localpart: _bot_{{ matrix_mautrix_gvoice_appservice_bot_username }}
|
||||
rate_limited: false
|
||||
namespaces:
|
||||
users:
|
||||
- regex: '^@gvoice_.+:{{ matrix_mautrix_gvoice_homeserver_domain | regex_escape }}$'
|
||||
exclusive: true
|
||||
- exclusive: true
|
||||
regex: '^@{{ matrix_mautrix_gvoice_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_gvoice_homeserver_domain | regex_escape }}$'
|
||||
de.sorunome.msc2409.push_ephemeral: true
|
||||
receive_ephemeral: true
|
||||
io.element.msc4190: {{ matrix_mautrix_gvoice_msc4190_enabled | to_json }}
|
||||
|
||||
matrix_mautrix_gvoice_registration: "{{ matrix_mautrix_gvoice_registration_yaml | from_yaml }}"
|
||||
|
||||
# matrix_mautrix_gvoice_restart_necessary controls whether the service
|
||||
# will be restarted (when true) or merely started (when false) by the
|
||||
# systemd service manager role (when conditional restart is enabled).
|
||||
#
|
||||
# This value is automatically computed during installation based on whether
|
||||
# any configuration files, the systemd service file, or the container image changed.
|
||||
# The default of `false` means "no restart needed", appropriate when the role's
|
||||
# installation tasks haven't run (e.g., due to --tags skipping them).
|
||||
matrix_mautrix_gvoice_restart_necessary: false
|
||||
+8
-7
@@ -1,4 +1,5 @@
|
||||
# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev
|
||||
# SPDX-FileCopyrightText: 2026 MDAD project contributors
|
||||
# SPDX-FileCopyrightText: 2026 Nikita Chernyi
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@@ -6,19 +7,19 @@
|
||||
|
||||
- tags:
|
||||
- setup-all
|
||||
- setup-appservice-kakaotalk
|
||||
- setup-mautrix-gvoice
|
||||
- install-all
|
||||
- install-appservice-kakaotalk
|
||||
- install-mautrix-gvoice
|
||||
block:
|
||||
- when: matrix_appservice_kakaotalk_enabled | bool
|
||||
- when: matrix_mautrix_gvoice_enabled | bool
|
||||
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"
|
||||
|
||||
- when: matrix_appservice_kakaotalk_enabled | bool
|
||||
- when: matrix_mautrix_gvoice_enabled | bool
|
||||
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml"
|
||||
|
||||
- tags:
|
||||
- setup-all
|
||||
- setup-appservice-kakaotalk
|
||||
- setup-mautrix-gvoice
|
||||
block:
|
||||
- when: not matrix_appservice_kakaotalk_enabled | bool
|
||||
- when: not matrix_mautrix_gvoice_enabled | bool
|
||||
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml"
|
||||
@@ -0,0 +1,176 @@
|
||||
# SPDX-FileCopyrightText: 2026 MDAD project contributors
|
||||
# SPDX-FileCopyrightText: 2026 Nikita Chernyi
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
---
|
||||
|
||||
- ansible.builtin.set_fact:
|
||||
matrix_mautrix_gvoice_migration_requires_restart: false
|
||||
|
||||
- when: "matrix_mautrix_gvoice_database_engine == 'postgres'"
|
||||
block:
|
||||
- name: Check if an SQLite database already exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ matrix_mautrix_gvoice_sqlite_database_path_local }}"
|
||||
register: matrix_mautrix_gvoice_sqlite_database_path_local_stat_result
|
||||
|
||||
- when: "matrix_mautrix_gvoice_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_gvoice_sqlite_database_path_local }}"
|
||||
dst: "{{ matrix_mautrix_gvoice_database_connection_string }}"
|
||||
caller: "{{ role_path | basename }}"
|
||||
engine_variable_name: 'matrix_mautrix_gvoice_database_engine'
|
||||
engine_old: 'sqlite'
|
||||
systemd_services_to_stop: ['matrix-mautrix-gvoice.service']
|
||||
pgloader_options: ['--with "quote identifiers"']
|
||||
|
||||
- ansible.builtin.set_fact:
|
||||
matrix_mautrix_gvoice_migration_requires_restart: true
|
||||
|
||||
- name: Ensure Mautrix gvoice paths exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ item.path }}"
|
||||
state: directory
|
||||
mode: '0750'
|
||||
owner: "{{ matrix_user_name }}"
|
||||
group: "{{ matrix_group_name }}"
|
||||
with_items:
|
||||
- {path: "{{ matrix_mautrix_gvoice_base_path }}", when: true}
|
||||
- {path: "{{ matrix_mautrix_gvoice_config_path }}", when: true}
|
||||
- {path: "{{ matrix_mautrix_gvoice_data_path }}", when: true}
|
||||
- {path: "{{ matrix_mautrix_gvoice_container_src_files_path }}", when: "{{ matrix_mautrix_gvoice_container_image_self_build }}"}
|
||||
when: item.when | bool
|
||||
|
||||
- name: Ensure Mautrix gvoice image is pulled
|
||||
community.docker.docker_image_pull:
|
||||
name: "{{ matrix_mautrix_gvoice_container_image }}"
|
||||
pull: always
|
||||
when: not matrix_mautrix_gvoice_container_image_self_build
|
||||
register: matrix_mautrix_gvoice_container_image_pull_result
|
||||
retries: "{{ devture_playbook_help_container_retries_count }}"
|
||||
delay: "{{ devture_playbook_help_container_retries_delay }}"
|
||||
until: matrix_mautrix_gvoice_container_image_pull_result is not failed
|
||||
|
||||
- name: Ensure Mautrix gvoice repository is present on self-build
|
||||
ansible.builtin.git:
|
||||
repo: "{{ matrix_mautrix_gvoice_container_image_self_build_repo }}"
|
||||
dest: "{{ matrix_mautrix_gvoice_container_src_files_path }}"
|
||||
version: "{{ matrix_mautrix_gvoice_container_image_self_build_branch }}"
|
||||
force: "yes"
|
||||
become: true
|
||||
become_user: "{{ matrix_user_name }}"
|
||||
register: matrix_mautrix_gvoice_git_pull_results
|
||||
when: "matrix_mautrix_gvoice_container_image_self_build | bool"
|
||||
|
||||
- name: Ensure Mautrix gvoice Docker image is built
|
||||
community.docker.docker_image_build:
|
||||
name: "{{ matrix_mautrix_gvoice_container_image }}"
|
||||
dockerfile: Dockerfile
|
||||
path: "{{ matrix_mautrix_gvoice_container_src_files_path }}"
|
||||
pull: true
|
||||
rebuild: "{{ 'always' if matrix_mautrix_gvoice_git_pull_results.changed | bool else 'never' }}"
|
||||
when: "matrix_mautrix_gvoice_container_image_self_build | bool"
|
||||
register: matrix_mautrix_gvoice_container_image_build_result
|
||||
|
||||
- name: Check if an old database file exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ matrix_mautrix_gvoice_base_path }}/mautrix-gvoice.db"
|
||||
register: matrix_mautrix_gvoice_stat_database
|
||||
|
||||
- name: Check if an old Matrix state file exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ matrix_mautrix_gvoice_base_path }}/mx-state.json"
|
||||
register: matrix_mautrix_gvoice_stat_mx_state
|
||||
|
||||
- name: (Data relocation) Ensure matrix-mautrix-gvoice.service is stopped
|
||||
ansible.builtin.service:
|
||||
name: matrix-mautrix-gvoice
|
||||
state: stopped
|
||||
enabled: false
|
||||
daemon_reload: true
|
||||
failed_when: false
|
||||
when: "matrix_mautrix_gvoice_stat_database.stat.exists"
|
||||
|
||||
- name: (Data relocation) Move mautrix-gvoice database file to ./data directory
|
||||
ansible.builtin.command:
|
||||
cmd: "mv {{ matrix_mautrix_gvoice_base_path }}/mautrix-gvoice.db {{ matrix_mautrix_gvoice_data_path }}/mautrix-gvoice.db"
|
||||
creates: "{{ matrix_mautrix_gvoice_data_path }}/mautrix-gvoice.db"
|
||||
removes: "{{ matrix_mautrix_gvoice_base_path }}/mautrix-gvoice.db"
|
||||
when: "matrix_mautrix_gvoice_stat_database.stat.exists"
|
||||
|
||||
- name: (Data relocation) Move mautrix-gvoice mx-state file to ./data directory
|
||||
ansible.builtin.command:
|
||||
cmd: "mv {{ matrix_mautrix_gvoice_base_path }}/mx-state.json {{ matrix_mautrix_gvoice_data_path }}/mx-state.json"
|
||||
creates: "{{ matrix_mautrix_gvoice_data_path }}/mx-state.json"
|
||||
removes: "{{ matrix_mautrix_gvoice_base_path }}/mx-state.json"
|
||||
when: "matrix_mautrix_gvoice_stat_mx_state.stat.exists"
|
||||
|
||||
- name: Ensure mautrix-gvoice config.yaml installed
|
||||
ansible.builtin.copy:
|
||||
content: "{{ matrix_mautrix_gvoice_configuration | to_nice_yaml(indent=2, width=999999) }}"
|
||||
dest: "{{ matrix_mautrix_gvoice_config_path }}/config.yaml"
|
||||
mode: '0644'
|
||||
owner: "{{ matrix_user_name }}"
|
||||
group: "{{ matrix_group_name }}"
|
||||
register: matrix_mautrix_gvoice_config_result
|
||||
|
||||
- name: Ensure mautrix-gvoice registration.yaml installed
|
||||
ansible.builtin.copy:
|
||||
content: "{{ matrix_mautrix_gvoice_registration | to_nice_yaml(indent=2, width=999999) }}"
|
||||
dest: "{{ matrix_mautrix_gvoice_config_path }}/registration.yaml"
|
||||
mode: '0644'
|
||||
owner: "{{ matrix_user_name }}"
|
||||
group: "{{ matrix_group_name }}"
|
||||
register: matrix_mautrix_gvoice_registration_result
|
||||
|
||||
- name: Ensure matrix-mautrix-gvoice.service installed
|
||||
ansible.builtin.template:
|
||||
src: "{{ role_path }}/templates/systemd/matrix-mautrix-gvoice.service.j2"
|
||||
dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-gvoice.service"
|
||||
mode: '0644'
|
||||
register: matrix_mautrix_gvoice_systemd_service_result
|
||||
|
||||
- name: Ensure mautrix-gvoice support files installed
|
||||
ansible.builtin.template:
|
||||
src: "{{ role_path }}/templates/{{ item }}.j2"
|
||||
dest: "{{ matrix_mautrix_gvoice_base_path }}/{{ item }}"
|
||||
mode: '0640'
|
||||
owner: "{{ matrix_user_name }}"
|
||||
group: "{{ matrix_group_name }}"
|
||||
with_items:
|
||||
- labels
|
||||
register: matrix_mautrix_gvoice_support_files_result
|
||||
|
||||
- name: Ensure matrix-mautrix-gvoice container network is created
|
||||
when: matrix_mautrix_gvoice_container_network != 'host'
|
||||
community.general.docker_network:
|
||||
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
|
||||
name: "{{ matrix_mautrix_gvoice_container_network }}"
|
||||
driver: bridge
|
||||
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"
|
||||
|
||||
- name: Determine whether matrix-mautrix-gvoice needs a restart
|
||||
ansible.builtin.set_fact:
|
||||
matrix_mautrix_gvoice_restart_necessary: >-
|
||||
{{
|
||||
matrix_mautrix_gvoice_migration_requires_restart | default(false)
|
||||
or matrix_mautrix_gvoice_config_result.changed | default(false)
|
||||
or matrix_mautrix_gvoice_registration_result.changed | default(false)
|
||||
or matrix_mautrix_gvoice_support_files_result.changed | default(false)
|
||||
or matrix_mautrix_gvoice_systemd_service_result.changed | default(false)
|
||||
or matrix_mautrix_gvoice_container_image_pull_result.changed | default(false)
|
||||
or matrix_mautrix_gvoice_container_image_build_result.changed | default(false)
|
||||
}}
|
||||
|
||||
- name: Ensure matrix-mautrix-gvoice.service restarted, if necessary
|
||||
ansible.builtin.service:
|
||||
name: "matrix-mautrix-gvoice.service"
|
||||
state: restarted
|
||||
daemon_reload: true
|
||||
when: "matrix_mautrix_gvoice_migration_requires_restart | bool"
|
||||
@@ -0,0 +1,25 @@
|
||||
# SPDX-FileCopyrightText: 2026 MDAD project contributors
|
||||
# SPDX-FileCopyrightText: 2026 Nikita Chernyi
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
---
|
||||
|
||||
- name: Check existence of matrix-mautrix-gvoice service
|
||||
ansible.builtin.stat:
|
||||
path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-gvoice.service"
|
||||
register: matrix_mautrix_gvoice_service_stat
|
||||
|
||||
- when: matrix_mautrix_gvoice_service_stat.stat.exists | bool
|
||||
block:
|
||||
- name: Ensure matrix-mautrix-gvoice is stopped
|
||||
ansible.builtin.service:
|
||||
name: matrix-mautrix-gvoice
|
||||
state: stopped
|
||||
enabled: false
|
||||
daemon_reload: true
|
||||
|
||||
- name: Ensure matrix-mautrix-gvoice.service doesn't exist
|
||||
ansible.builtin.file:
|
||||
path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-gvoice.service"
|
||||
state: absent
|
||||
@@ -0,0 +1,28 @@
|
||||
# SPDX-FileCopyrightText: 2026 MDAD project contributors
|
||||
# SPDX-FileCopyrightText: 2026 Nikita Chernyi
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
---
|
||||
|
||||
- name: (Deprecation) Catch and report renamed 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: []
|
||||
|
||||
- name: Fail if required mautrix-gvoice 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_gvoice_appservice_token', when: true}
|
||||
- {'name': 'matrix_mautrix_gvoice_homeserver_address', when: true}
|
||||
- {'name': 'matrix_mautrix_gvoice_homeserver_token', when: true}
|
||||
- {'name': 'matrix_mautrix_gvoice_database_hostname', when: "{{ matrix_mautrix_gvoice_database_engine == 'postgres' }}"}
|
||||
- {'name': 'matrix_mautrix_gvoice_metrics_proxying_hostname', when: "{{ matrix_mautrix_gvoice_metrics_proxying_enabled }}"}
|
||||
- {'name': 'matrix_mautrix_gvoice_metrics_proxying_path_prefix', when: "{{ matrix_mautrix_gvoice_metrics_proxying_enabled }}"}
|
||||
- {'name': 'matrix_mautrix_gvoice_container_network', when: true}
|
||||
@@ -0,0 +1,413 @@
|
||||
#jinja2: lstrip_blocks: True
|
||||
# Network-specific config options
|
||||
network:
|
||||
# Displayname template for Google Voice contacts.
|
||||
displayname_template: {{ matrix_mautrix_gvoice_network_displayname_template | to_json }}
|
||||
|
||||
|
||||
# Config options that affect the central bridge module.
|
||||
bridge:
|
||||
# The prefix for commands. Only required in non-management rooms.
|
||||
command_prefix: '!gv'
|
||||
# Should the bridge create a space for each login containing the rooms that account is in?
|
||||
personal_filtering_spaces: {{ matrix_mautrix_gvoice_bridge_personal_filtering_spaces | to_json }}
|
||||
# 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: false
|
||||
# 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.
|
||||
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
|
||||
# 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 %}<b>{{ .Sender.DisambiguatedName }}</b>: {{ .Message }}{% endraw %}"
|
||||
m.notice: "{% raw %}<b>{{ .Sender.DisambiguatedName }}</b>: {{ .Message }}{% endraw %}"
|
||||
m.emote: "{% raw %}* <b>{{ .Sender.DisambiguatedName }}</b> {{ .Message }}{% endraw %}"
|
||||
m.file: "{% raw %}<b>{{ .Sender.DisambiguatedName }}</b> sent a file{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}"
|
||||
m.image: "{% raw %}<b>{{ .Sender.DisambiguatedName }}</b> sent an image{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}"
|
||||
m.audio: "{% raw %}<b>{{ .Sender.DisambiguatedName }}</b> sent an audio file{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}"
|
||||
m.video: "{% raw %}<b>{{ .Sender.DisambiguatedName }}</b> sent a video{{ if .Caption }}: {{ .Caption }}{{ end }}{% endraw %}"
|
||||
m.location: "{% raw %}<b>{{ .Sender.DisambiguatedName }}</b> 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_gvoice_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:<path>?_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_gvoice_appservice_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_gvoice_homeserver_address | to_json }}
|
||||
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
||||
domain: {{ matrix_mautrix_gvoice_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_gvoice_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.
|
||||
address: {{ matrix_mautrix_gvoice_appservice_address }}
|
||||
# A public address that external services can use to reach this appservice.
|
||||
# This value doesn't affect the registration file.
|
||||
public_address: {{ matrix_mautrix_gvoice_bridge_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: 8080
|
||||
|
||||
# The unique ID of this appservice.
|
||||
id: gvoice
|
||||
# Appservice bot details.
|
||||
bot:
|
||||
# Username of the appservice bot.
|
||||
username: {{ matrix_mautrix_gvoice_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: Google Voice bridge bot
|
||||
avatar: mxc://maunium.net/VOPtYGBzHLRfPTEzGgNMpeKo
|
||||
|
||||
# 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_gvoice_appservice_token | to_json }}
|
||||
hs_token: {{ matrix_mautrix_gvoice_homeserver_token | to_json }}
|
||||
|
||||
# Localpart template of MXIDs for remote users.
|
||||
# {% raw %}{{.}}{% endraw %} is replaced with the internal ID of the user.
|
||||
username_template: {{ matrix_mautrix_gvoice_appservice_username_template | to_json }}
|
||||
|
||||
# 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: false
|
||||
# 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_gvoice_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_gvoice_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: {{ matrix_mautrix_gvoice_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: 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: 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_gvoice_backfill_enabled | to_json }}
|
||||
# Maximum number of messages to backfill in empty rooms.
|
||||
max_initial_messages: {{ matrix_mautrix_gvoice_backfill_max_initial_messages | to_json }}
|
||||
# Maximum number of missed messages to backfill after bridge restarts.
|
||||
max_catchup_messages: {{ matrix_mautrix_gvoice_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: {{ matrix_mautrix_gvoice_backfill_unread_hours_threshold | to_json }}
|
||||
# Settings for backfilling threads within other backfills.
|
||||
threads:
|
||||
# Maximum number of messages to backfill in a new thread.
|
||||
max_initial_messages: {{ matrix_mautrix_gvoice_backfill_threads_max_initial_messages | to_json }}
|
||||
# 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_gvoice_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_gvoice_bridge_encryption_allow | to_json }}
|
||||
# Whether to force-enable encryption in all bridged rooms.
|
||||
default: {{ matrix_mautrix_gvoice_bridge_encryption_default | to_json }}
|
||||
# Whether to require all messages to be encrypted and drop any unencrypted messages.
|
||||
require: {{ matrix_mautrix_gvoice_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_gvoice_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_gvoice_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_gvoice_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_gvoice_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_gvoice_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_gvoice_logging_level }}
|
||||
writers:
|
||||
- type: stdout
|
||||
format: pretty
|
||||
@@ -0,0 +1,4 @@
|
||||
SPDX-FileCopyrightText: 2026 MDAD project contributors
|
||||
SPDX-FileCopyrightText: 2026 Nikita Chernyi
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -0,0 +1,86 @@
|
||||
{#
|
||||
SPDX-FileCopyrightText: 2026 MDAD project contributors
|
||||
SPDX-FileCopyrightText: 2026 Nikita Chernyi
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#}
|
||||
|
||||
{% if matrix_mautrix_gvoice_container_labels_traefik_enabled %}
|
||||
traefik.enable=true
|
||||
|
||||
{% if matrix_mautrix_gvoice_container_labels_traefik_docker_network %}
|
||||
traefik.docker.network={{ matrix_mautrix_gvoice_container_labels_traefik_docker_network }}
|
||||
{% endif %}
|
||||
|
||||
traefik.http.services.matrix-mautrix-gvoice-metrics.loadbalancer.server.port=8001
|
||||
|
||||
{% if matrix_mautrix_gvoice_container_labels_metrics_enabled %}
|
||||
############################################################
|
||||
# #
|
||||
# Metrics #
|
||||
# #
|
||||
############################################################
|
||||
|
||||
{% if matrix_mautrix_gvoice_container_labels_metrics_middleware_basic_auth_enabled %}
|
||||
traefik.http.middlewares.matrix-mautrix-gvoice-metrics-basic-auth.basicauth.users={{ matrix_mautrix_gvoice_container_labels_metrics_middleware_basic_auth_users }}
|
||||
traefik.http.routers.matrix-mautrix-gvoice-metrics.middlewares=matrix-mautrix-gvoice-metrics-basic-auth
|
||||
{% endif %}
|
||||
|
||||
traefik.http.routers.matrix-mautrix-gvoice-metrics.rule={{ matrix_mautrix_gvoice_container_labels_metrics_traefik_rule }}
|
||||
|
||||
{% if matrix_mautrix_gvoice_container_labels_metrics_traefik_priority | int > 0 %}
|
||||
traefik.http.routers.matrix-mautrix-gvoice-metrics.priority={{ matrix_mautrix_gvoice_container_labels_metrics_traefik_priority }}
|
||||
{% endif %}
|
||||
|
||||
traefik.http.routers.matrix-mautrix-gvoice-metrics.service=matrix-mautrix-gvoice-metrics
|
||||
traefik.http.routers.matrix-mautrix-gvoice-metrics.entrypoints={{ matrix_mautrix_gvoice_container_labels_metrics_traefik_entrypoints }}
|
||||
|
||||
traefik.http.routers.matrix-mautrix-gvoice-metrics.tls={{ matrix_mautrix_gvoice_container_labels_metrics_traefik_tls | to_json }}
|
||||
{% if matrix_mautrix_gvoice_container_labels_metrics_traefik_tls %}
|
||||
traefik.http.routers.matrix-mautrix-gvoice-metrics.tls.certResolver={{ matrix_mautrix_gvoice_container_labels_metrics_traefik_tls_certResolver }}
|
||||
{% endif %}
|
||||
|
||||
############################################################
|
||||
# #
|
||||
# /Metrics #
|
||||
# #
|
||||
############################################################
|
||||
{% endif %}
|
||||
|
||||
{% if matrix_mautrix_gvoice_container_labels_exposure_enabled %}
|
||||
############################################################
|
||||
# #
|
||||
# Bridge API exposure #
|
||||
# #
|
||||
############################################################
|
||||
|
||||
traefik.http.services.matrix-mautrix-gvoice-exposure.loadbalancer.server.port=8080
|
||||
|
||||
traefik.http.middlewares.matrix-mautrix-gvoice-exposure-strip-prefix.stripprefix.prefixes={{ matrix_mautrix_gvoice_exposure_path_prefix }}
|
||||
traefik.http.routers.matrix-mautrix-gvoice-exposure.middlewares=matrix-mautrix-gvoice-exposure-strip-prefix
|
||||
|
||||
traefik.http.routers.matrix-mautrix-gvoice-exposure.rule={{ matrix_mautrix_gvoice_container_labels_exposure_traefik_rule }}
|
||||
|
||||
{% if matrix_mautrix_gvoice_container_labels_exposure_traefik_priority | int > 0 %}
|
||||
traefik.http.routers.matrix-mautrix-gvoice-exposure.priority={{ matrix_mautrix_gvoice_container_labels_exposure_traefik_priority }}
|
||||
{% endif %}
|
||||
|
||||
traefik.http.routers.matrix-mautrix-gvoice-exposure.service=matrix-mautrix-gvoice-exposure
|
||||
traefik.http.routers.matrix-mautrix-gvoice-exposure.entrypoints={{ matrix_mautrix_gvoice_container_labels_exposure_traefik_entrypoints }}
|
||||
|
||||
traefik.http.routers.matrix-mautrix-gvoice-exposure.tls={{ matrix_mautrix_gvoice_container_labels_exposure_traefik_tls | to_json }}
|
||||
{% if matrix_mautrix_gvoice_container_labels_exposure_traefik_tls %}
|
||||
traefik.http.routers.matrix-mautrix-gvoice-exposure.tls.certResolver={{ matrix_mautrix_gvoice_container_labels_exposure_traefik_tls_certResolver }}
|
||||
{% endif %}
|
||||
|
||||
############################################################
|
||||
# #
|
||||
# /Bridge API exposure #
|
||||
# #
|
||||
############################################################
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% endif %}
|
||||
|
||||
{{ matrix_mautrix_gvoice_container_labels_additional_labels }}
|
||||
+21
-18
@@ -1,11 +1,11 @@
|
||||
#jinja2: lstrip_blocks: True
|
||||
[Unit]
|
||||
Description=appservice-kakaotalk-node bridge helper
|
||||
{% for service in matrix_appservice_kakaotalk_node_systemd_required_services_list %}
|
||||
Description=Matrix Mautrix gvoice bridge
|
||||
{% for service in matrix_mautrix_gvoice_systemd_required_services_list %}
|
||||
Requires={{ service }}
|
||||
After={{ service }}
|
||||
{% endfor %}
|
||||
{% for service in matrix_appservice_kakaotalk_node_systemd_wanted_services_list %}
|
||||
{% for service in matrix_mautrix_gvoice_systemd_wanted_services_list %}
|
||||
Wants={{ service }}
|
||||
{% endfor %}
|
||||
DefaultDependencies=no
|
||||
@@ -13,36 +13,39 @@ 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-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_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mautrix-gvoice 2>/dev/null || true'
|
||||
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-gvoice 2>/dev/null || true'
|
||||
|
||||
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
|
||||
--rm \
|
||||
--name=matrix-appservice-kakaotalk-node \
|
||||
--name=matrix-mautrix-gvoice \
|
||||
--log-driver=none \
|
||||
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
|
||||
--cap-drop=ALL \
|
||||
--network={{ matrix_appservice_kakaotalk_container_network }} \
|
||||
--mount type=bind,src={{ matrix_appservice_kakaotalk_config_path }}/node-config.json,dst=/config.json,ro \
|
||||
{% for arg in matrix_appservice_kakaotalk_node_container_extra_arguments %}
|
||||
--network={{ matrix_mautrix_gvoice_container_network }} \
|
||||
--mount type=bind,src={{ matrix_mautrix_gvoice_config_path }},dst=/config \
|
||||
--mount type=bind,src={{ matrix_mautrix_gvoice_data_path }},dst=/data \
|
||||
--label-file={{ matrix_mautrix_gvoice_base_path }}/labels \
|
||||
--workdir=/data \
|
||||
{% for arg in matrix_mautrix_gvoice_container_extra_arguments %}
|
||||
{{ arg }} \
|
||||
{% endfor %}
|
||||
{{ matrix_appservice_kakaotalk_node_container_image }} \
|
||||
node src/main.js --config /config.json
|
||||
{{ matrix_mautrix_gvoice_container_image }} \
|
||||
/usr/bin/mautrix-gvoice -c /config/config.yaml -r /config/registration.yaml --no-update
|
||||
|
||||
{% if matrix_appservice_kakaotalk_container_network != 'host' %}
|
||||
{% for network in matrix_appservice_kakaotalk_container_additional_networks %}
|
||||
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-appservice-kakaotalk-node
|
||||
{% if matrix_mautrix_gvoice_container_network != 'host' %}
|
||||
{% for network in matrix_mautrix_gvoice_container_additional_networks %}
|
||||
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mautrix-gvoice
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-appservice-kakaotalk-node
|
||||
ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mautrix-gvoice
|
||||
|
||||
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'
|
||||
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-gvoice 2>/dev/null || true'
|
||||
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mautrix-gvoice 2>/dev/null || true'
|
||||
Restart=always
|
||||
RestartSec=30
|
||||
SyslogIdentifier=matrix-appservice-kakaotalk-node
|
||||
SyslogIdentifier=matrix-mautrix-gvoice
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
SPDX-FileCopyrightText: 2026 MDAD project contributors
|
||||
SPDX-FileCopyrightText: 2026 Nikita Chernyi
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -316,7 +316,7 @@ matrix_mautrix_meta_instagram_registration_yaml: |
|
||||
namespaces:
|
||||
users:
|
||||
- exclusive: true
|
||||
regex: '^@{{ matrix_mautrix_meta_instagram_bridge_username_prefix }}.+:{{ matrix_mautrix_meta_instagram_homeserver_domain | regex_escape }}$'
|
||||
regex: '^@{{ matrix_mautrix_meta_instagram_bridge_username_prefix | regex_escape }}.+:{{ matrix_mautrix_meta_instagram_homeserver_domain | regex_escape }}$'
|
||||
- exclusive: true
|
||||
regex: '^@{{ matrix_mautrix_meta_instagram_appservice_username | regex_escape }}:{{ matrix_mautrix_meta_instagram_homeserver_domain | regex_escape }}$'
|
||||
url: {{ matrix_mautrix_meta_instagram_appservice_address }}
|
||||
|
||||
@@ -316,7 +316,7 @@ matrix_mautrix_meta_messenger_registration_yaml: |
|
||||
namespaces:
|
||||
users:
|
||||
- exclusive: true
|
||||
regex: '^@{{ matrix_mautrix_meta_messenger_bridge_username_prefix }}.+:{{ matrix_mautrix_meta_messenger_homeserver_domain | regex_escape }}$'
|
||||
regex: '^@{{ matrix_mautrix_meta_messenger_bridge_username_prefix | regex_escape }}.+:{{ matrix_mautrix_meta_messenger_homeserver_domain | regex_escape }}$'
|
||||
- exclusive: true
|
||||
regex: '^@{{ matrix_mautrix_meta_messenger_appservice_username | regex_escape }}:{{ matrix_mautrix_meta_messenger_homeserver_domain | regex_escape }}$'
|
||||
url: {{ matrix_mautrix_meta_messenger_appservice_address }}
|
||||
|
||||
@@ -189,15 +189,10 @@ matrix_client_element_room_directory_servers: ['matrix.org']
|
||||
# Branding of Element
|
||||
matrix_client_element_brand: "Element"
|
||||
|
||||
# URL to Logo on welcome page
|
||||
# URL to the logo shown on the welcome and login pages.
|
||||
# This is the default for `matrix_client_element_branding_auth_header_logo_url` below.
|
||||
matrix_client_element_welcome_logo: "themes/element/img/logos/element-logo.svg"
|
||||
|
||||
# URL of link on welcome image
|
||||
matrix_client_element_welcome_logo_link: "https://element.io"
|
||||
|
||||
matrix_client_element_welcome_headline: "_t(\"welcome_to_element\")"
|
||||
matrix_client_element_welcome_text: "_t(\"powered_by_matrix_with_logo\")"
|
||||
|
||||
# Links, shown in footer of welcome page:
|
||||
# [{"text": "Link text", "url": "https://link.target"}, {"text": "Other link"}]
|
||||
matrix_client_element_branding_auth_footer_links: ~ # noqa var-naming
|
||||
@@ -269,8 +264,6 @@ 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,
|
||||
# point this to a `home.html` template file on your local filesystem.
|
||||
matrix_client_element_embedded_pages_home_path: ~
|
||||
@@ -346,6 +339,10 @@ matrix_client_element_configuration: "{{ matrix_client_element_configuration_def
|
||||
# How to host your own map tile server: https://matrix.org/docs/guides/map-tile-server
|
||||
matrix_client_element_location_sharing_enabled: false
|
||||
|
||||
# Controls the value of the `Access-Control-Allow-Origin` header attached to responses for `map_style.json`.
|
||||
# Element Desktop loads the map style from a `vector://vector` origin, so cross-origin access needs to be allowed.
|
||||
matrix_client_element_location_sharing_map_style_access_control_allow_origin: "*"
|
||||
|
||||
# Default Element location sharing map style configuration template which covers the generic use case.
|
||||
# You can customize it by controlling the various variables inside it.
|
||||
#
|
||||
|
||||
@@ -97,7 +97,6 @@
|
||||
with_items:
|
||||
- {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"
|
||||
register: matrix_client_element_support_files_result
|
||||
@@ -113,6 +112,8 @@
|
||||
state: absent
|
||||
with_items:
|
||||
- {src: "{{ matrix_client_element_embedded_pages_home_path }}", name: "home.html"}
|
||||
# The playbook no longer ships a custom welcome.html (Element Web renders its own built-in welcome page).
|
||||
- {src: ~, name: "welcome.html"}
|
||||
when: "item.src is none"
|
||||
|
||||
- name: Ensure Element Web container network is created
|
||||
|
||||
@@ -30,6 +30,10 @@
|
||||
- {'old': 'matrix_client_element_docker_image_registry_prefix_upstream_default', 'new': 'matrix_client_element_container_image_registry_prefix_upstream_default'}
|
||||
- {'old': 'matrix_client_element_docker_src_files_path', 'new': 'matrix_client_element_container_src_files_path'}
|
||||
- {'old': 'matrix_client_element_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'}
|
||||
- {'old': 'matrix_client_element_welcome_headline', 'new': '<removed> (Element Web now renders its own built-in welcome page and no longer loads the custom welcome.html this variable applied to; a logo and background can still be customized via matrix_client_element_branding_auth_header_logo_url and matrix_client_element_branding_welcome_background_url, and a fully custom page can be self-hosted and wired via embedded_pages.welcome_url in matrix_client_element_configuration_extension_json)'}
|
||||
- {'old': 'matrix_client_element_welcome_text', 'new': '<removed> (Element Web now renders its own built-in welcome page and no longer loads the custom welcome.html this variable applied to; see matrix_client_element_welcome_headline for alternatives)'}
|
||||
- {'old': 'matrix_client_element_welcome_logo_link', 'new': '<removed> (Element Web now renders its own built-in welcome page and no longer loads the custom welcome.html this variable applied to; see matrix_client_element_welcome_headline for alternatives)'}
|
||||
- {'old': 'matrix_client_element_page_template_welcome_path', 'new': '<removed> (Element Web now renders its own built-in welcome page; a fully custom page can be self-hosted and wired via embedded_pages.welcome_url in matrix_client_element_configuration_extension_json)'}
|
||||
|
||||
- name: Fail if required Element Web settings not defined
|
||||
ansible.builtin.fail:
|
||||
|
||||
@@ -51,6 +51,23 @@ traefik.http.routers.matrix-client-element.tls={{ matrix_client_element_containe
|
||||
traefik.http.routers.matrix-client-element.tls.certResolver={{ matrix_client_element_container_labels_traefik_tls_certResolver }}
|
||||
{% endif %}
|
||||
|
||||
{% if matrix_client_element_location_sharing_enabled %}
|
||||
{#
|
||||
A dedicated router for the map style file, which attaches an Access-Control-Allow-Origin header.
|
||||
Element Desktop loads the map style from a `vector://vector` origin, so it needs to be allowed cross-origin access.
|
||||
#}
|
||||
traefik.http.middlewares.matrix-client-element-map-style-add-headers.headers.customresponseheaders.Access-Control-Allow-Origin={{ matrix_client_element_location_sharing_map_style_access_control_allow_origin }}
|
||||
|
||||
traefik.http.routers.matrix-client-element-map-style.rule={{ matrix_client_element_container_labels_traefik_rule }} && Path(`{{ (matrix_client_element_container_labels_traefik_path_prefix ~ '/map_style.json') | regex_replace('^//', '/') }}`)
|
||||
traefik.http.routers.matrix-client-element-map-style.service=matrix-client-element
|
||||
traefik.http.routers.matrix-client-element-map-style.middlewares={{ (middlewares + ['matrix-client-element-map-style-add-headers']) | join(',') }}
|
||||
traefik.http.routers.matrix-client-element-map-style.entrypoints={{ matrix_client_element_container_labels_traefik_entrypoints }}
|
||||
traefik.http.routers.matrix-client-element-map-style.tls={{ matrix_client_element_container_labels_traefik_tls | to_json }}
|
||||
{% if matrix_client_element_container_labels_traefik_tls %}
|
||||
traefik.http.routers.matrix-client-element-map-style.tls.certResolver={{ matrix_client_element_container_labels_traefik_tls_certResolver }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{{ matrix_client_element_container_labels_additional_labels }}
|
||||
|
||||
@@ -43,7 +43,6 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
|
||||
{% if matrix_client_element_embedded_pages_home_path is not none %}
|
||||
--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 %}
|
||||
|
||||
@@ -1,205 +0,0 @@
|
||||
#jinja2: lstrip_blocks: True
|
||||
<style type="text/css">
|
||||
|
||||
/* we deliberately inline style here to avoid flash-of-CSS problems, and to avoid
|
||||
* voodoo where we have to set display: none by default
|
||||
*/
|
||||
|
||||
h1::after {
|
||||
content: "!";
|
||||
}
|
||||
|
||||
.mx_Parent {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
padding: 25px 35px;
|
||||
color: #2e2f32;
|
||||
}
|
||||
|
||||
.mx_Logo {
|
||||
height: 54px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.mx_ButtonGroup {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.mx_ButtonRow {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-justify-content: space-around;
|
||||
-ms-flex-pack: distribute;
|
||||
justify-content: space-around;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-sizing: border-box;
|
||||
margin: 12px 0 0;
|
||||
}
|
||||
|
||||
.mx_ButtonRow > * {
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.mx_ButtonRow > *:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.mx_ButtonRow > *:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.mx_ButtonParent {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
padding: 10px 20px;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: row;
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
border-radius: 4px;
|
||||
width: 150px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 10px center;
|
||||
text-decoration: none;
|
||||
color: #2e2f32 !important;
|
||||
}
|
||||
|
||||
.mx_ButtonLabel {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.mx_Header_title {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
margin: 20px 0 0;
|
||||
}
|
||||
|
||||
.mx_Header_subtitle {
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
margin: 8px 0 0;
|
||||
}
|
||||
|
||||
.mx_ButtonSignIn {
|
||||
background-color: #368BD6;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.mx_ButtonCreateAccount {
|
||||
background-color: #0DBD8B;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.mx_SecondaryButton {
|
||||
background-color: #FFFFFF;
|
||||
color: #2E2F32;
|
||||
}
|
||||
|
||||
.mx_Button_iconSignIn {
|
||||
background-image: url('welcome/images/icon-sign-in.svg');
|
||||
}
|
||||
.mx_Button_iconCreateAccount {
|
||||
background-image: url('welcome/images/icon-create-account.svg');
|
||||
}
|
||||
.mx_Button_iconHelp {
|
||||
background-image: url('welcome/images/icon-help.svg');
|
||||
}
|
||||
.mx_Button_iconRoomDirectory {
|
||||
background-image: url('welcome/images/icon-room-directory.svg');
|
||||
}
|
||||
|
||||
/*
|
||||
.mx_WelcomePage_loggedIn is applied by EmbeddedPage from the Welcome component
|
||||
If it is set on the page, we should show the buttons. Otherwise, we have to assume
|
||||
we don't have an account and should hide them. No account == no guest account either.
|
||||
*/
|
||||
.mx_WelcomePage:not(.mx_WelcomePage_loggedIn) .mx_WelcomePage_guestFunctions {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mx_ButtonRow.mx_WelcomePage_guestFunctions {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.mx_ButtonRow.mx_WelcomePage_guestFunctions > div {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 480px) {
|
||||
.mx_ButtonRow {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.mx_ButtonRow > * {
|
||||
margin: 0 0 10px 0;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div class="mx_Parent">
|
||||
<a href="{{ matrix_client_element_welcome_logo_link }}" target="_blank" rel="noopener">
|
||||
<img src="{{ matrix_client_element_welcome_logo }}" alt="" class="mx_Logo"/>
|
||||
</a>
|
||||
<h1 class="mx_Header_title">{{ matrix_client_element_welcome_headline }}</h1>
|
||||
<h4 class="mx_Header_subtitle">{{ matrix_client_element_welcome_text }}</h4>
|
||||
<div class="mx_ButtonGroup">
|
||||
<div class="mx_ButtonRow">
|
||||
<a href="#/login" class="mx_ButtonParent mx_ButtonSignIn mx_Button_iconSignIn">
|
||||
<div class="mx_ButtonLabel">_t("action|sign_in")</div>
|
||||
</a>
|
||||
{% if matrix_client_element_registration_enabled %}
|
||||
<a href="#/register" class="mx_ButtonParent mx_ButtonCreateAccount mx_Button_iconCreateAccount">
|
||||
<div class="mx_ButtonLabel">_t("action|create_account")</div>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if matrix_client_element_disable_guests != true %}
|
||||
<!-- The comments below are meant to be used by Ansible as a quick way
|
||||
to strip out the marked content when desired.
|
||||
See https://github.com/element-hq/riot-web/issues/8622.
|
||||
TODO: Convert to config option if possible. -->
|
||||
<!-- BEGIN Ansible: Remove these lines when guest access is disabled -->
|
||||
<div class="mx_ButtonRow mx_WelcomePage_guestFunctions">
|
||||
<div>
|
||||
<a href="#/directory" class="mx_ButtonParent mx_SecondaryButton mx_Button_iconRoomDirectory">
|
||||
<div class="mx_ButtonLabel">_t("action|explore_rooms")</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END Ansible: Remove these lines when guest access is disabled -->
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,9 +0,0 @@
|
||||
SPDX-FileCopyrightText: 2019 Daniel Hoffend
|
||||
SPDX-FileCopyrightText: 2019 Hugues De Keyzer
|
||||
SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev
|
||||
SPDX-FileCopyrightText: 2020 Clement Renaud
|
||||
SPDX-FileCopyrightText: 2020 Stefan Warnat
|
||||
SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty
|
||||
SPDX-FileCopyrightText: 2024 MDAD project contributors
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
@@ -14,7 +14,7 @@ matrix_continuwuity_enabled: true
|
||||
matrix_continuwuity_hostname: ''
|
||||
|
||||
# renovate: datasource=docker depName=forgejo.ellis.link/continuwuation/continuwuity
|
||||
matrix_continuwuity_version: v26.6.1
|
||||
matrix_continuwuity_version: v26.6.2
|
||||
|
||||
matrix_continuwuity_container_image: "{{ matrix_continuwuity_container_image_registry_prefix }}/continuwuation/continuwuity:{{ matrix_continuwuity_container_image_tag }}"
|
||||
matrix_continuwuity_container_image_tag: "{{ matrix_continuwuity_version }}"
|
||||
|
||||
@@ -413,6 +413,14 @@ matrix_media_repo_shared_secret_auth_token: "PutSomeRandomSecureValueHere"
|
||||
# thumbnails and other misc data is also stored in these places. The media repo, when looking
|
||||
# for a datastore to use, will always use the smallest datastore first.
|
||||
|
||||
# Controls whether the file datastore is defined in the configuration at all.
|
||||
# A datastore can be defined but disabled for uploads (making it readonly) by keeping this enabled
|
||||
# while setting `matrix_media_repo_datastore_file_for_kinds: []`. This is useful when migrating
|
||||
# media to another datastore, as previously stored media remains readable.
|
||||
# By default, the datastore is defined whenever some kinds are assigned to it, matching the
|
||||
# previous behavior of this role.
|
||||
matrix_media_repo_datastore_file_enabled: "{{ (matrix_media_repo_datastore_file_for_kinds | length) > 0 }}"
|
||||
|
||||
# ID for the file datastore. Any unique alphanumeric string (e.g. generated via `pwgen -s 64 1`).
|
||||
# This value CANNOT be changed after media has been stored — matrix-media-repo ties media to this ID.
|
||||
matrix_media_repo_datastore_file_id: ""
|
||||
@@ -434,6 +442,14 @@ matrix_media_repo_datastore_file_for_kinds: ["thumbnails", "remote_media", "loca
|
||||
# Path to datastore, relative to matrix-media-repo directory root
|
||||
matrix_media_repo_datastore_opts_path: "/data/media"
|
||||
|
||||
# Controls whether the S3 datastore is defined in the configuration at all.
|
||||
# A datastore can be defined but disabled for uploads (making it readonly) by keeping this enabled
|
||||
# while setting `matrix_media_repo_datastore_s3_for_kinds: []`. This is useful when migrating
|
||||
# media to another datastore, as previously stored media remains readable.
|
||||
# By default, the datastore is defined whenever some kinds are assigned to it, matching the
|
||||
# previous behavior of this role.
|
||||
matrix_media_repo_datastore_s3_enabled: "{{ (matrix_media_repo_datastore_s3_for_kinds | length) > 0 }}"
|
||||
|
||||
# ID for the S3 datastore. Any unique alphanumeric string (e.g. generated via `pwgen -s 64 1`).
|
||||
# This value CANNOT be changed after media has been stored — matrix-media-repo ties media to this ID.
|
||||
matrix_media_repo_datastore_s3_id: ""
|
||||
|
||||
@@ -50,5 +50,5 @@
|
||||
- {'name': 'matrix_media_repo_database_hostname', when: true}
|
||||
- {'name': 'matrix_media_repo_container_labels_traefik_internal_media_entrypoints', when: "{{ matrix_media_repo_container_labels_traefik_internal_media_enabled }}"}
|
||||
- {'name': 'matrix_media_repo_container_labels_traefik_internal_matrix_client_media_entrypoints', when: "{{ matrix_media_repo_container_labels_traefik_internal_matrix_client_media_enabled }}"}
|
||||
- {'name': 'matrix_media_repo_datastore_file_id', when: "{{ (matrix_media_repo_datastore_file_for_kinds | length) > 0 }}"}
|
||||
- {'name': 'matrix_media_repo_datastore_s3_id', when: "{{ (matrix_media_repo_datastore_s3_for_kinds | length) > 0 }}"}
|
||||
- {'name': 'matrix_media_repo_datastore_file_id', when: "{{ matrix_media_repo_datastore_file_enabled }}"}
|
||||
- {'name': 'matrix_media_repo_datastore_s3_id', when: "{{ matrix_media_repo_datastore_s3_enabled }}"}
|
||||
|
||||
@@ -198,7 +198,7 @@ sharedSecretAuth:
|
||||
# thumbnails and other misc data is also stored in these places. The media repo, when looking
|
||||
# for a datastore to use, will always use the smallest datastore first.
|
||||
datastores:
|
||||
{% if (matrix_media_repo_datastore_file_for_kinds | length) > 0 %}
|
||||
{% if matrix_media_repo_datastore_file_enabled %}
|
||||
- type: file
|
||||
# ID for this datastore (cannot change). Alphanumeric recommended.
|
||||
id: {{ matrix_media_repo_datastore_file_id | to_json }}
|
||||
@@ -218,7 +218,7 @@ datastores:
|
||||
opts:
|
||||
path: {{ matrix_media_repo_datastore_opts_path | to_json }}
|
||||
{% endif %}
|
||||
{% if (matrix_media_repo_datastore_s3_for_kinds | length) > 0 %}
|
||||
{% if matrix_media_repo_datastore_s3_enabled %}
|
||||
- type: s3
|
||||
# ID for this datastore (cannot change). Alphanumeric recommended.
|
||||
id: {{ matrix_media_repo_datastore_s3_id | to_json }}
|
||||
|
||||
@@ -72,6 +72,7 @@ matrix_prometheus_services_connect_scraper_synapse_workers_enabled: "{{ matrix_p
|
||||
|
||||
matrix_prometheus_services_connect_scraper_synapse_workers_enabled_list: []
|
||||
|
||||
# No {# #} comments inside the block below: indented, they leak whitespace and corrupt the YAML.
|
||||
matrix_prometheus_services_connect_scraper_synapse_workers_static_configs_as_yaml: |
|
||||
{% for worker in matrix_prometheus_services_connect_scraper_synapse_workers_enabled_list %}
|
||||
{% if worker.metrics_port != 0 %}
|
||||
@@ -79,6 +80,7 @@ matrix_prometheus_services_connect_scraper_synapse_workers_static_configs_as_yam
|
||||
labels:
|
||||
instance: {{ matrix_prometheus_services_connect_scraper_synapse_workers_static_configs_instance | to_json }}
|
||||
worker_id: {{ worker.id | to_json }}
|
||||
index: {{ worker.id | regex_search('[0-9]+') | to_json }}
|
||||
job: {{ worker.type | to_json }}
|
||||
app: {{ worker.app | to_json }}
|
||||
{% endif %}
|
||||
@@ -86,7 +88,7 @@ matrix_prometheus_services_connect_scraper_synapse_workers_static_configs_as_yam
|
||||
|
||||
matrix_prometheus_services_connect_scraper_synapse_workers_static_configs_instance: "{{ matrix_domain }}"
|
||||
|
||||
matrix_prometheus_services_connect_scraper_synapse_workers_static_configs: "{{ [] if matrix_prometheus_services_connect_scraper_synapse_workers_enabled_list | length == 0 else matrix_prometheus_services_connect_scraper_synapse_workers_static_configs_as_yaml | from_yaml }}"
|
||||
matrix_prometheus_services_connect_scraper_synapse_workers_static_configs: "{{ [] if matrix_prometheus_services_connect_scraper_synapse_workers_enabled_list | length == 0 else matrix_prometheus_services_connect_scraper_synapse_workers_static_configs_as_yaml | from_yaml or [] }}"
|
||||
|
||||
# Controls whether Postgres (postgres-exporter) shall be scraped
|
||||
matrix_prometheus_services_connect_scraper_postgres_enabled: false
|
||||
|
||||
@@ -43,6 +43,19 @@
|
||||
|
||||
- when: "matrix_synapse_usage_exporter_container_image_self_build | bool"
|
||||
block:
|
||||
# A repository left behind with different file ownership (e.g. cloned by another user in the past)
|
||||
# would make the git update below fail, either with a permission error or with git's
|
||||
# dubious-ownership protection kicking in (which manifests as a confusing
|
||||
# "'origin' does not appear to be a git repository" error, because git ignores
|
||||
# the repository's own configuration in that case).
|
||||
- name: Ensure synapse-usage-exporter repository ownership is correct on self-build
|
||||
ansible.builtin.file:
|
||||
path: "{{ matrix_synapse_usage_exporter_docker_src_files_path }}"
|
||||
state: directory
|
||||
owner: "{{ matrix_user_name }}"
|
||||
group: "{{ matrix_group_name }}"
|
||||
recurse: true
|
||||
|
||||
- name: Ensure synapse-usage-exporter repository is present on self-build
|
||||
ansible.builtin.git:
|
||||
repo: "{{ matrix_synapse_usage_exporter_container_image_self_build_repo }}"
|
||||
@@ -51,6 +64,10 @@
|
||||
force: "yes"
|
||||
become: true
|
||||
become_user: "{{ matrix_user_name }}"
|
||||
environment:
|
||||
GIT_CONFIG_COUNT: "1"
|
||||
GIT_CONFIG_KEY_0: safe.directory
|
||||
GIT_CONFIG_VALUE_0: "{{ matrix_synapse_usage_exporter_docker_src_files_path }}"
|
||||
register: matrix_synapse_usage_exporter_git_pull_results
|
||||
|
||||
- name: Check if synapse-usage-exporter Docker image exists
|
||||
|
||||
@@ -723,6 +723,18 @@
|
||||
The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_bot_matrix_registration_bot_.+', wantlist=True) | join(', ') }}
|
||||
when: "lookup('ansible.builtin.varnames', '^matrix_bot_matrix_registration_bot_.+', wantlist=True) | length > 0"
|
||||
|
||||
- name: (Deprecation) Catch and report matrix-appservice-kakaotalk variables
|
||||
ansible.builtin.fail:
|
||||
msg: |-
|
||||
matrix-appservice-kakaotalk was completely removed from the playbook in July 2026, because its upstream repository became unreachable and the component could only be installed by self-building it.
|
||||
|
||||
Please remove all `matrix_appservice_kakaotalk_*` variables from your configuration file (vars.yml).
|
||||
|
||||
You may also wish to uninstall the component manually. See `docs/configuring-playbook-bridge-appservice-kakaotalk.md` for more information.
|
||||
|
||||
The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_appservice_kakaotalk_.+', wantlist=True) | join(', ') }}
|
||||
when: "lookup('ansible.builtin.varnames', '^matrix_appservice_kakaotalk_.+', wantlist=True) | length > 0"
|
||||
|
||||
- name: (Deprecation) Catch and report matrix-ldap-registration-proxy variables
|
||||
ansible.builtin.fail:
|
||||
msg: |-
|
||||
|
||||
@@ -56,7 +56,6 @@
|
||||
- custom/matrix-alertmanager-receiver
|
||||
- custom/matrix-bridge-appservice-discord
|
||||
- custom/matrix-bridge-appservice-irc
|
||||
- custom/matrix-bridge-appservice-kakaotalk
|
||||
- custom/matrix-bridge-beeper-linkedin
|
||||
- custom/matrix-bridge-wechat
|
||||
- custom/matrix-bridge-mautrix-twitter
|
||||
@@ -66,6 +65,7 @@
|
||||
- custom/matrix-bridge-mautrix-telegram
|
||||
- custom/matrix-bridge-mautrix-signal
|
||||
- custom/matrix-bridge-mautrix-gmessages
|
||||
- custom/matrix-bridge-mautrix-gvoice
|
||||
- custom/matrix-bridge-mautrix-whatsapp
|
||||
- custom/matrix-bridge-mautrix-wsproxy
|
||||
- custom/matrix-bridge-mautrix-discord
|
||||
|
||||
Reference in New Issue
Block a user