Compare commits

..

1 Commits

Author SHA1 Message Date
renovate[bot] 4b3cb88197 Update matrixdotorg/sygnal Docker tag to v0.17.0 2026-05-14 18:25:52 +00:00
538 changed files with 14178 additions and 16010 deletions
-13
View File
@@ -1,13 +0,0 @@
# 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"
-27
View File
@@ -1,27 +0,0 @@
{
"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"
]
}
}
}
-3
View File
@@ -1,3 +0,0 @@
SPDX-FileCopyrightText: 2025 Jonah Aragon
SPDX-License-Identifier: AGPL-3.0-or-later
-25
View File
@@ -25,34 +25,9 @@
"https://github.com/devture/com.devture.ansible.role{/,}**",
"https://github.com/mother-of-all-self-hosting{/,}**"
]
},
{
"description": "mautrix images are dual-tagged (v0.YYMM.PATCH and vYY.MM[.PATCH]). Stick to the v0 scheme: it matches the git tags (needed for self-building) and has a consistent number of components (the calver tags do not, which makes Renovate stop offering updates).",
"matchPackageNames": [
"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": {
"enabled": true
},
"nix": {
"enabled": true,
"lockFileMaintenance": {
"enabled": true
}
}
}
+2 -2
View File
@@ -26,10 +26,10 @@ jobs:
run: pacman -Sy --noconfirm git
- name: Check out
uses: actions/checkout@v7
uses: actions/checkout@v6
- name: Restore prek cache
uses: actions/cache@v6
uses: actions/cache@v5
with:
path: var/prek
key: arch-prek-v1-${{ hashFiles('.pre-commit-config.yaml') }}
+2 -2
View File
@@ -24,7 +24,7 @@ jobs:
name: Update translations
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
@@ -32,7 +32,7 @@ jobs:
# Setting up recommended prerequisites
# See: i18n/README.md
- uses: astral-sh/setup-uv@v8.3.2
- uses: astral-sh/setup-uv@v8.1.0
- uses: extractions/setup-just@v4
# TODO: optimize when we start publishing translations and integrate a Weblate instance
+2 -2
View File
@@ -15,7 +15,7 @@ repos:
- id: trailing-whitespace
- id: end-of-file-fixer
- repo: https://github.com/codespell-project/codespell
rev: v2.4.3
rev: v2.4.2
hooks:
- id: codespell
args: ["--skip=*.po,*.pot,i18n/"]
@@ -24,7 +24,7 @@ repos:
hooks:
- id: reuse
- repo: https://github.com/ansible/ansible-lint
rev: v26.6.0
rev: v26.4.0
hooks:
- id: ansible-lint
files: '^roles/custom/'
-11
View File
@@ -1,16 +1,5 @@
---
extends: default
# Keep this custom configuration compatible with ansible-lint's `yaml` rule.
# See https://docs.ansible.com/projects/lint/rules/yaml/#yamllint-configuration
rules:
braces:
min-spaces-inside: 0
max-spaces-inside: 1
comments:
min-spaces-from-content: 1
comments-indentation: false
line-length: disable
octal-values:
forbid-explicit-octal: true
forbid-implicit-octal: true
-247
View File
@@ -1,250 +1,3 @@
# 2026-07-16
## (Backward Compatibility Break) Bridge variables have been renamed
All bridge roles (`roles/custom/matrix-bridge-*`) now use a uniform variable naming scheme, where the variable prefix matches the role directory name. This adopts the naming policy proposed in [#4705](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4705) and requested in [#5096](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/5096).
Previously, bridge variable prefixes were all over the place (`matrix_mautrix_telegram_*`, `matrix_heisenbridge_*`, `matrix_steam_bridge_*`, etc.). Now, they all follow the same pattern that bot roles (`matrix_bot_<name>_*`) have been using for years: the `matrix-bridge-mautrix-telegram` role uses `matrix_bridge_mautrix_telegram_*` variables, the `matrix-bridge-steam` role uses `matrix_bridge_steam_*` variables, and so on.
Only Ansible variables were renamed. Systemd service names, container names, `/matrix/*` directories, database names and usernames, and appservice registration contents (tokens, bot usernames) all remain the same. No data migration is necessary and bridges keep working as before, once you rename the variables in your `vars.yml` configuration file.
The playbook will let you know if your configuration still uses old-style variable names.
Here is the full rename map:
| Old variable prefix | New variable prefix |
|---------------------|---------------------|
| `matrix_appservice_discord_` | `matrix_bridge_appservice_discord_` |
| `matrix_appservice_irc_` | `matrix_bridge_appservice_irc_` |
| `matrix_beeper_linkedin_` | `matrix_bridge_beeper_linkedin_` |
| `matrix_heisenbridge_` | `matrix_bridge_heisenbridge_` |
| `matrix_hookshot_` | `matrix_bridge_hookshot_` |
| `matrix_mautrix_androidsms_` | `matrix_bridge_mautrix_wsproxy_androidsms_` |
| `matrix_mautrix_bluesky_` | `matrix_bridge_mautrix_bluesky_` |
| `matrix_mautrix_discord_` | `matrix_bridge_mautrix_discord_` |
| `matrix_mautrix_gmessages_` | `matrix_bridge_mautrix_gmessages_` |
| `matrix_mautrix_googlechat_` | `matrix_bridge_mautrix_googlechat_` |
| `matrix_mautrix_gvoice_` | `matrix_bridge_mautrix_gvoice_` |
| `matrix_mautrix_imessage_` | `matrix_bridge_mautrix_wsproxy_imessage_` |
| `matrix_mautrix_meta_instagram_` | `matrix_bridge_mautrix_meta_instagram_` |
| `matrix_mautrix_meta_messenger_` | `matrix_bridge_mautrix_meta_messenger_` |
| `matrix_mautrix_signal_` | `matrix_bridge_mautrix_signal_` |
| `matrix_mautrix_slack_` | `matrix_bridge_mautrix_slack_` |
| `matrix_mautrix_telegram_` | `matrix_bridge_mautrix_telegram_` |
| `matrix_mautrix_twitter_` | `matrix_bridge_mautrix_twitter_` |
| `matrix_mautrix_whatsapp_` | `matrix_bridge_mautrix_whatsapp_` |
| `matrix_mautrix_wsproxy_` | `matrix_bridge_mautrix_wsproxy_` |
| `matrix_meshtastic_relay_` | `matrix_bridge_meshtastic_relay_` |
| `matrix_mx_puppet_groupme_` | `matrix_bridge_mx_puppet_groupme_` |
| `matrix_mx_puppet_steam_` | `matrix_bridge_mx_puppet_steam_` |
| `matrix_postmoogle_` | `matrix_bridge_postmoogle_` |
| `matrix_rustpush_bridge_` | `matrix_bridge_rustpush_` |
| `matrix_sms_bridge_` | `matrix_bridge_sms_` |
| `matrix_steam_bridge_` | `matrix_bridge_steam_` |
| `matrix_wechat_` | `matrix_bridge_wechat_` |
A few special cases beyond the prefix map:
- `matrix_mautrix_signal_wsproxy_syncproxy_connection_string` (a variable of the mautrix-wsproxy role, despite its name) is now `matrix_bridge_mautrix_wsproxy_syncproxy_connection_string`
- `matrix_playbook_migration_matrix_postmoogle_migration_validation_enabled` is now `matrix_playbook_migration_matrix_bridge_postmoogle_migration_validation_enabled`
You can update your `vars.yml` file automatically with this `sed` command (on macOS, use `sed -i ''` instead of `sed -i`):
```sh
sed -i \
-e 's/matrix_appservice_discord_/matrix_bridge_appservice_discord_/g' \
-e 's/matrix_appservice_irc_/matrix_bridge_appservice_irc_/g' \
-e 's/matrix_beeper_linkedin_/matrix_bridge_beeper_linkedin_/g' \
-e 's/matrix_heisenbridge_/matrix_bridge_heisenbridge_/g' \
-e 's/matrix_hookshot_/matrix_bridge_hookshot_/g' \
-e 's/matrix_mautrix_androidsms_/matrix_bridge_mautrix_wsproxy_androidsms_/g' \
-e 's/matrix_mautrix_bluesky_/matrix_bridge_mautrix_bluesky_/g' \
-e 's/matrix_mautrix_discord_/matrix_bridge_mautrix_discord_/g' \
-e 's/matrix_mautrix_gmessages_/matrix_bridge_mautrix_gmessages_/g' \
-e 's/matrix_mautrix_googlechat_/matrix_bridge_mautrix_googlechat_/g' \
-e 's/matrix_mautrix_gvoice_/matrix_bridge_mautrix_gvoice_/g' \
-e 's/matrix_mautrix_imessage_/matrix_bridge_mautrix_wsproxy_imessage_/g' \
-e 's/matrix_mautrix_meta_instagram_/matrix_bridge_mautrix_meta_instagram_/g' \
-e 's/matrix_mautrix_meta_messenger_/matrix_bridge_mautrix_meta_messenger_/g' \
-e 's/matrix_mautrix_signal_wsproxy_syncproxy_connection_string/matrix_bridge_mautrix_wsproxy_syncproxy_connection_string/g' \
-e 's/matrix_mautrix_signal_/matrix_bridge_mautrix_signal_/g' \
-e 's/matrix_mautrix_slack_/matrix_bridge_mautrix_slack_/g' \
-e 's/matrix_mautrix_telegram_/matrix_bridge_mautrix_telegram_/g' \
-e 's/matrix_mautrix_twitter_/matrix_bridge_mautrix_twitter_/g' \
-e 's/matrix_mautrix_whatsapp_/matrix_bridge_mautrix_whatsapp_/g' \
-e 's/matrix_mautrix_wsproxy_/matrix_bridge_mautrix_wsproxy_/g' \
-e 's/matrix_meshtastic_relay_/matrix_bridge_meshtastic_relay_/g' \
-e 's/matrix_mx_puppet_groupme_/matrix_bridge_mx_puppet_groupme_/g' \
-e 's/matrix_mx_puppet_steam_/matrix_bridge_mx_puppet_steam_/g' \
-e 's/matrix_postmoogle_/matrix_bridge_postmoogle_/g' \
-e 's/matrix_rustpush_bridge_/matrix_bridge_rustpush_/g' \
-e 's/matrix_sms_bridge_/matrix_bridge_sms_/g' \
-e 's/matrix_steam_bridge_/matrix_bridge_steam_/g' \
-e 's/matrix_wechat_/matrix_bridge_wechat_/g' \
-e 's/matrix_playbook_migration_matrix_postmoogle_migration_validation_enabled/matrix_playbook_migration_matrix_bridge_postmoogle_migration_validation_enabled/g' \
vars.yml
```
The `sed` command only replaces prefixes followed by an underscore, so values that intentionally match old prefixes (like the default database names, e.g. `matrix_mautrix_telegram`) are not affected.
**Note**: if you have defined your own custom variables whose names embed an old prefix (e.g. `vault_matrix_postmoogle_password` referencing a secret in an Ansible Vault file), the `sed` command renames such references too. Either rename your custom variables to match (including their definitions in encrypted vault files, which `sed` cannot reach), or revert those spots manually.
# 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
The [matrix-registration-bot](./docs/configuring-playbook-bot-matrix-registration-bot.md) service has been removed from the playbook, as it has been unmaintained.
The playbook will let you know if you're using any `matrix_bot_matrix_registration_bot_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the component manually](./docs/configuring-playbook-bot-matrix-registration-bot.md#uninstalling-the-component-manually).
## Continuwuity v26 no longer supports LDAP
The playbook now installs [Continuwuity](./docs/configuring-playbook-continuwuity.md) v26, a major upgrade from the v0.5.x series which **removes LDAP authentication support** (see the [v26.6.0 release notes](https://forgejo.ellis.link/continuwuation/continuwuity/releases/tag/v26.6.0)).
The playbook never exposed dedicated variables for Continuwuity's LDAP support, so most people are unaffected. However, if you had enabled LDAP via `matrix_continuwuity_environment_variables_extension` or a custom configuration template, you'll need to migrate to another authentication method, such as the newly introduced [OpenID Connect support](https://continuwuity.org/guides/oidc).
# 2026-06-29
## Support for running on Synology DSM
Thanks to [cksit](https://github.com/cksit), the playbook can now run on [Synology DSM](https://www.synology.com/dsm) 7 and later.
Synology hosts are detected automatically (via `/etc/synoinfo.conf`), so other systems are unaffected. On DSM, the playbook uses the platform's native user management (`synouser`/`synogroup`), works around a Docker SDK incompatibility, and installs a small boot-fix service that handles a few DSM-specific boot quirks.
To get started, see the new [Configuring Synology DSM](./docs/configuring-playbook-synology.md) documentation page.
## Mautrix bridges now expose their API (for Mautrix Manager and similar tools)
The playbook now exposes the HTTP API of each [mautrix](https://github.com/mautrix) bridge, so tools like [Mautrix Manager](https://github.com/mautrix/manager) can help you log into them. This is especially useful for [mautrix-gmessages](./docs/configuring-playbook-bridge-mautrix-gmessages.md): Google has removed its QR-code login, leaving a [manual cookie-extraction flow](https://docs.mau.fi/bridges/go/gmessages/authentication.html) that tools like Mautrix Manager can streamline.
The API is exposed at `https://matrix.example.com/bridges/SERVICENAME` (for example, `https://matrix.example.com/bridges/gmessages`) and is advertised via a new `/.well-known/matrix/mautrix` file, so compatible tools can discover your bridges automatically. Such tools authenticate with your own Matrix access token, so no bridge secret needs to be shared with them.
This affects all mautrix bridges based on the new bridge framework (bluesky, gmessages, meta-instagram, meta-messenger, signal, slack, telegram, twitter and whatsapp) and is enabled by default.
To learn more (including how to turn it off), see the [Expose the bridge's API](./docs/configuring-playbook-bridge-mautrix-bridges.md#expose-the-bridges-api-for-mautrix-manager-and-similar-tools) section on our common mautrix bridges documentation page.
# 2026-06-28
## baibot now supports Venice, our recommended provider
[baibot](./docs/configuring-playbook-bot-baibot.md) now ships a preset for the [Venice](./docs/configuring-playbook-bot-baibot.md#venice) provider, and it's the one we recommend. It's the most capable provider baibot supports (text generation with vision, file inputs and web search, speech-to-text, text-to-speech, and image generation and editing), and the only one that runs inference with no logging and no training on your data.
Enabling it takes a preset toggle and an API key:
```yaml
matrix_bot_baibot_config_agents_static_definitions_venice_enabled: true
matrix_bot_baibot_config_agents_static_definitions_venice_config_api_key: "YOUR_API_KEY_HERE"
```
[OpenAI](https://openai.com/) and baibot's other providers remain fully supported. To get started, see the [Setting up baibot](./docs/configuring-playbook-bot-baibot.md#venice) documentation page.
# 2026-06-24
## Support for bridging to iMessage via RustPush
Thanks to [jasonlaguidice](https://github.com/jasonlaguidice), the playbook now supports bridging to [iMessage](https://support.apple.com/messages) via a new [RustPush](https://github.com/OpenBubbles/rustpush)-based bridge ([jasonlaguidice/imessage](https://github.com/jasonlaguidice/imessage)).
Unlike the existing [mautrix-wsproxy](./docs/configuring-playbook-bridge-mautrix-wsproxy.md) iMessage bridge, this one talks directly to Apple's push notification service, so it needs neither a running Mac nor a wsproxy on the homeserver. Each user supplies a hardware key extracted from a Mac through the bridge bot's login flow.
To learn more, see our [Setting up RustPush (iMessage) bridging](./docs/configuring-playbook-bridge-rustpush.md) documentation page.
# 2026-05-24
## matrix-ldap-registration-proxy has been removed from the playbook
The [matrix-ldap-registration-proxy](./docs/configuring-playbook-matrix-ldap-registration-proxy.md) service has been removed from the playbook, as the source code and the container image have become unavailable.
The playbook will let you know if you're using any `matrix_ldap_registration_proxy_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the component manually](./docs/configuring-playbook-matrix-ldap-registration-proxy.md#uninstalling-the-component-manually).
# 2026-05-23
## Go-NEB has been removed from the playbook
[Go-NEB](./docs/configuring-playbook-bot-go-neb.md) has been removed from the playbook, as it has been discontinued since June 2023.
The playbook will let you know if you're using any `matrix_bot_go_neb_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bot manually](./docs/configuring-playbook-bot-go-neb.md#uninstalling-go-neb-manually).
# 2026-05-19
## matrix-registration has been removed from the playbook
The [matrix-registration](./docs/configuring-playbook-matrix-registration.md) service has been removed from the playbook, as it has been unmaintained (archived) since November, 2025.
The playbook will let you know if you're using any `matrix_registration_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the component manually](./docs/configuring-playbook-matrix-registration.md#uninstalling-the-component-manually).
# 2026-05-18
## LiveKit Server has been upgraded to v1.12.0
The playbook now ships [LiveKit Server](./docs/configuring-playbook-livekit-server.md) v1.12.0. See the [upstream release notes](https://github.com/livekit/livekit/releases/tag/v1.12.0) for details.
This release tightens TURN security:
- **TURN credentials now carry a TTL** (default: 300 seconds), exposed via `livekit_server_config_turn_ttl_seconds`.
- **TURN no longer relays traffic to restricted peer CIDRs** (loopback, link-local, multicast, private, unspecified) by default. If your setup legitimately requires it, list the ranges in `livekit_server_config_turn_allow_restricted_peer_cidrs`.
For example, to allow TURN to reach the common [RFC1918](https://www.rfc-editor.org/rfc/rfc1918) private ranges, add to your `vars.yml`:
```yaml
livekit_server_config_turn_allow_restricted_peer_cidrs:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
```
Adjust the ranges to match your network. To deny specific CIDRs (taking precedence over the allow list above), use `livekit_server_config_turn_deny_peer_cidrs` in the same shape.
# 2026-05-07
## Tuwunel support
+1 -4
View File
@@ -2,14 +2,11 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
.PHONY: roles lint add-inventory-host
.PHONY: roles lint
help: ## Show this help.
@grep -F -h "##" $(MAKEFILE_LIST) | grep -v grep | sed -e 's/\\$$//' | sed -e 's/##//'
add-inventory-host: ## Adds a new host to the inventory, creating the inventory files if necessary (e.g. `make add-inventory-host domain=example.com ip=1.2.3.4`)
@./bin/add-inventory-host.sh "$(domain)" "$(ip)"
roles: ## Pull roles
rm -rf roles/galaxy
ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force
+5 -4
View File
@@ -65,10 +65,9 @@ Web clients for Matrix that you can host on your own domains.
| [Element Web](https://github.com/element-hq/element-web) | ✅ | Default Matrix web client, configured to connect to your own Synapse server | [Link](docs/configuring-playbook-client-element-web.md) |
| [Hydrogen](https://github.com/element-hq/hydrogen-web) | ❌ | Lightweight Matrix client with legacy and mobile browser support | [Link](docs/configuring-playbook-client-hydrogen.md) |
| [Cinny](https://github.com/ajbura/cinny) | ❌ | Simple, elegant and secure web client | [Link](docs/configuring-playbook-client-cinny.md) |
| [Sable](https://github.com/SableClient/Sable) | ❌ | Simple, elegant and secure web client | [Link](docs/configuring-playbook-client-sable.md) |
| [Sable](https://github.com/7w1/sable) | ❌ | Simple, elegant and secure web client | [Link](docs/configuring-playbook-client-sable.md) |
| [SchildiChat Web](https://schildi.chat/) | ❌ | Based on Element Web, with a more traditional instant messaging experience | [Link](docs/configuring-playbook-client-schildichat-web.md) |
| [FluffyChat Web](https://fluffychat.im/) | ❌ | The cutest messenger in Matrix | [Link](docs/configuring-playbook-client-fluffychat-web.md) |
| [Commet](https://github.com/commetchat/commet) | ❌ | Matrix web client | [Link](docs/configuring-playbook-client-commet.md) |
### Server Components
@@ -93,6 +92,8 @@ Extend and modify how users are authenticated on your homeserver.
| [matrix-synapse-rest-auth](https://github.com/ma1uta/matrix-synapse-rest-password-provider) (advanced) | ❌ | REST authentication password provider module | [Link](docs/configuring-playbook-rest-auth.md) |
|[matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) (advanced) | ❌ | Password provider module | [Link](docs/configuring-playbook-shared-secret-auth.md) |
| [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3) (advanced) | ❌ | LDAP Auth password provider module | [Link](docs/configuring-playbook-ldap-auth.md) |
| [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) (advanced) | ❌ | Proxy that handles Matrix registration requests and forwards them to LDAP | [Link](docs/configuring-playbook-matrix-ldap-registration-proxy.md) |
| [matrix-registration](https://github.com/ZerataX/matrix-registration) | ❌ | Simple python application to have a token based Matrix registration | [Link](docs/configuring-playbook-matrix-registration.md) |
| [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) | ❌ | Service to verify details of a user based on an Open ID token | [Link](docs/configuring-playbook-user-verification-service.md) |
| [synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispam) (advanced) | ❌ | Spam checker module | [Link](docs/configuring-playbook-synapse-simple-antispam.md) |
@@ -116,10 +117,8 @@ 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) |
| [mautrix-bluesky](https://github.com/mautrix/bluesky) | ❌ | Bridge to [Bluesky](https://bsky.social/) | [Link](docs/configuring-playbook-bridge-mautrix-bluesky.md) |
| [mautrix-twitter](https://github.com/mautrix/twitter) | ❌ | Bridge to [Twitter](https://twitter.com/) | [Link](docs/configuring-playbook-bridge-mautrix-twitter.md) |
| [mautrix-googlechat](https://github.com/mautrix/googlechat) | ❌ | Bridge to [Google Chat](https://en.wikipedia.org/wiki/Google_Chat) | [Link](docs/configuring-playbook-bridge-mautrix-googlechat.md) |
@@ -127,6 +126,7 @@ 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) |
@@ -146,6 +146,7 @@ Bots provide various additional functionality to your installation.
| ---- | -------- | ----------- | ------------- |
| [baibot](https://github.com/etkecc/baibot) | ❌ | Bot that exposes the power of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) to you | [Link](docs/configuring-playbook-bot-baibot.md) |
| [matrix-reminder-bot](https://github.com/anoadragon453/matrix-reminder-bot) | ❌ | Bot for scheduling one-off & recurring reminders and alarms | [Link](docs/configuring-playbook-bot-matrix-reminder-bot.md) |
| [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) | ❌ | Bot for invitations by creating and managing registration tokens | [Link](docs/configuring-playbook-bot-matrix-registration-bot.md) |
| [maubot](https://github.com/maubot/maubot) | ❌ | Plugin-based Matrix bot system | [Link](docs/configuring-playbook-bot-maubot.md) |
| [Honoroit](https://github.com/etkecc/honoroit) | ❌ | Helpdesk bot | [Link](docs/configuring-playbook-bot-honoroit.md) |
| [Mjolnir](https://github.com/matrix-org/mjolnir) | ❌ | Moderation tool for Matrix | [Link](docs/configuring-playbook-bot-mjolnir.md) |
-120
View File
@@ -1,120 +0,0 @@
#!/usr/bin/env bash
# SPDX-FileCopyrightText: 2026 MDAD project contributors
# SPDX-FileCopyrightText: 2026 Slavi Pantaleev
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Adds a new host to the inventory, based on the example files in `examples/`:
# - creates `inventory/hosts` (or adds the host to it, if it already exists)
# - creates `inventory/host_vars/matrix.DOMAIN/vars.yml` with strong secrets generated automatically
#
# Existing configuration for the same host is never overwritten - the script refuses to run instead.
#
# Usage: bin/add-inventory-host.sh <base-domain> <server-address>
#
# - <base-domain> is the base domain (`example.com`), not the Matrix server hostname (`matrix.example.com`)
# - <server-address> is the server's external IP address or domain name
set -euo pipefail
base_path="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
if [ $# -ne 2 ]; then
echo "Usage: $0 <base-domain> <server-address>" >&2
echo "Example: $0 example.com 1.2.3.4" >&2
exit 1
fi
domain="$1"
server_address="$2"
if ! printf '%s' "${domain}" | grep -Eq '^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)+$'; then
echo "Error: '${domain}' does not look like a valid domain name" >&2
exit 1
fi
if ! printf '%s' "${server_address}" | grep -Eq '^[A-Za-z0-9.:_-]+$'; then
echo "Error: '${server_address}' does not look like a valid server address (IP address or domain name)" >&2
exit 1
fi
case "${domain}" in
matrix.*)
echo "Warning: you likely need to pass your base domain (example.com), not the Matrix server hostname (matrix.example.com)." >&2
echo "Proceeding anyway. Your Matrix server hostname will be: matrix.${domain}" >&2
;;
esac
matrix_hostname="matrix.${domain}"
hosts_file="${base_path}/inventory/hosts"
vars_dir="${base_path}/inventory/host_vars/${matrix_hostname}"
vars_file="${vars_dir}/vars.yml"
hosts_entry="${matrix_hostname} ansible_host=${server_address} ansible_ssh_user=root"
if [ -e "${vars_dir}" ]; then
echo "Error: ${vars_dir} already exists. Refusing to overwrite it." >&2
exit 1
fi
if [ -f "${hosts_file}" ]; then
if ! grep -q '^\[matrix_servers\]' "${hosts_file}"; then
echo "Error: ${hosts_file} exists, but does not contain a [matrix_servers] section." >&2
echo "Unrecognized inventory format. Add the host to it manually:" >&2
echo "${hosts_entry}" >&2
exit 1
fi
matrix_hostname_pattern="$(printf '%s' "${matrix_hostname}" | sed 's|\.|\\.|g')"
if grep -Eq "^${matrix_hostname_pattern}([[:space:]]|$)" "${hosts_file}"; then
echo "Error: ${hosts_file} already contains an entry for ${matrix_hostname}. Refusing to modify it." >&2
exit 1
fi
fi
generate_secret() {
if command -v pwgen >/dev/null 2>&1; then
pwgen -s 64 1
elif command -v openssl >/dev/null 2>&1; then
openssl rand -base64 192 | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 64
else
head -c 4096 /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 64
fi
}
generic_secret_key="$(generate_secret)"
postgres_password="$(generate_secret)"
for secret in "${generic_secret_key}" "${postgres_password}"; do
if [ "${#secret}" -lt 64 ]; then
echo "Error: failed to generate a secret" >&2
exit 1
fi
done
mkdir -p "${vars_dir}"
sed \
-e "s|^matrix_domain:.*|matrix_domain: ${domain}|" \
-e "s|^matrix_homeserver_generic_secret_key:.*|matrix_homeserver_generic_secret_key: '${generic_secret_key}'|" \
-e "s|^postgres_connection_password:.*|postgres_connection_password: '${postgres_password}'|" \
"${base_path}/examples/vars.yml" > "${vars_file}"
if [ -f "${hosts_file}" ]; then
# Insert the new host right after the [matrix_servers] section header.
hosts_file_tmp="$(mktemp "${hosts_file}.XXXXXX")"
awk -v entry="${hosts_entry}" '{print} $0 ~ /^\[matrix_servers\]/ && !done {print entry; done=1}' \
"${hosts_file}" > "${hosts_file_tmp}"
mv "${hosts_file_tmp}" "${hosts_file}"
else
sed \
-e "s|^matrix\.example\.com .*|${hosts_entry}|" \
"${base_path}/examples/hosts" > "${hosts_file}"
fi
echo "Added host ${matrix_hostname} to the inventory:"
echo "- ${hosts_file}"
echo "- ${vars_file}"
echo ""
echo "Secrets were generated automatically for matrix_homeserver_generic_secret_key and postgres_connection_password."
echo "Review and adjust these files before installing."
+3 -3
View File
@@ -30,12 +30,12 @@ fi
cp -ar $messenger_role_path $instagram_role_path
find "$instagram_role_path" -type f | while read -r file; do
sed --in-place 's/matrix_bridge_mautrix_meta_messenger_/matrix_bridge_mautrix_meta_instagram_/g' "$file"
sed --in-place 's/matrix_mautrix_meta_messenger_/matrix_mautrix_meta_instagram_/g' "$file"
sed --in-place 's/mautrix-meta-messenger/mautrix-meta-instagram/g' "$file"
done
sed --in-place 's/matrix_bridge_mautrix_meta_instagram_meta_mode: \(.*\)/matrix_bridge_mautrix_meta_instagram_meta_mode: instagram/g' $instagram_role_path/defaults/main.yml
sed --in-place 's/matrix_bridge_mautrix_meta_instagram_identifier: \(.*\)/matrix_bridge_mautrix_meta_instagram_identifier: matrix-mautrix-meta-instagram/g' $instagram_role_path/defaults/main.yml
sed --in-place 's/matrix_mautrix_meta_instagram_meta_mode: \(.*\)/matrix_mautrix_meta_instagram_meta_mode: instagram/g' $instagram_role_path/defaults/main.yml
sed --in-place 's/matrix_mautrix_meta_instagram_identifier: \(.*\)/matrix_mautrix_meta_instagram_identifier: matrix-mautrix-meta-instagram/g' $instagram_role_path/defaults/main.yml
# Create the README.md file with the license header
cat > $instagram_role_path/README.md << 'EOF'
-2
View File
@@ -76,8 +76,6 @@ If your server and services experience issues, feel free to come to [our support
- [Alternative architectures](alternative-architectures.md)
- [Configuring Synology DSM](configuring-playbook-synology.md)
- [Container images used by the playbook](container-images.md)
- [Obtaining an Access Token](obtaining-access-tokens.md)
-2
View File
@@ -50,8 +50,6 @@ 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
View File
@@ -15,8 +15,6 @@ 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
@@ -63,16 +61,3 @@ 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'
```
+3 -34
View File
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
🤖 [baibot](https://github.com/etkecc/baibot) (pronounced bye-bot) is a [Matrix](https://matrix.org/) bot developed by [etke.cc](https://etke.cc/) that exposes the power of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) to you. 🤖
It supports many [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md), including the privacy-first [Venice](#venice) we recommend, [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) models, and more.
It supports [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) models, as many well as other [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md).
It's designed as a more private and [✨ featureful](https://github.com/etkecc/baibot/?tab=readme-ov-file#-features) alternative to [matrix-chatgpt-bot](./configuring-playbook-bot-chatgpt.md). See the [baibot](https://github.com/etkecc/baibot) project and its documentation for more information.
@@ -159,38 +159,7 @@ Agents defined statically and those created dynamically (via chat) are named dif
Depending on your propensity for [GitOps](https://en.wikipedia.org/wiki/DevOps#GitOps), you may prefer to define agents statically via Ansible, or you may wish to do it dynamically via chat.
Before proceeding, we recommend reading the upstream documentation on [How to choose a provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#how-to-choose-a-provider) for a side-by-side of what each one can do. In short: we recommend [Venice](#venice), the most capable provider baibot supports and the only one that keeps no logs and trains on nothing. If you'd rather start with the most widely-used option, [OpenAI](#openai) is a solid, well-supported choice too.
#### Venice
[Venice](https://venice.ai/chat?ref=kpXDe6) _(ref link with a $10 bonus for you)_ is the provider we recommend. It's the most capable one baibot supports, and the only one that pairs that full feature set with real privacy: inference runs on Venice's own GPUs or on zero-data-retention partner hardware, so your prompts and replies are stored nowhere and never used for training. It serves both frontier proprietary models and the latest open-source ones.
Venice also leaves the content policy to you instead of imposing its own. Its models answer without the reflexive refusals some hosted services apply, and both text and image generation can handle adult or otherwise sensitive subjects when you need them to. Image generation ships a `safe_mode` that blurs adult content by default; you can turn it off (see the sample config). This pairs naturally with the privacy above: a bot you can speak to candidly, that keeps nothing.
Unlike the [OpenAI Compatible](#openai-compatible) provider (which can also point at Venice, but drops images and can't reach its audio or native image endpoints), this is a first-class integration that exposes Venice's full parameter set: text-generation with vision, file inputs, prompt caching and native web search, plus speech-to-text, text-to-speech, and image generation and editing.
You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [Venice provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#venice) with the help of the playbook's preset variables.
Here's an example **addition** to your `vars.yml` file:
```yaml
matrix_bot_baibot_config_agents_static_definitions_venice_enabled: true
matrix_bot_baibot_config_agents_static_definitions_venice_config_api_key: "YOUR_API_KEY_HERE"
# The preset ships sensible defaults for every purpose, so changing only the API key above is enough
# to get going. Uncomment and adjust any of these if you'd like to use different models:
# matrix_bot_baibot_config_agents_static_definitions_venice_config_text_generation_model_id: kimi-k2-5
# matrix_bot_baibot_config_agents_static_definitions_venice_config_image_generation_model_id: chroma
```
Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/venice`.
Every Venice knob (sampling, caching, reasoning, web-search behavior, voice and image controls) has a matching `matrix_bot_baibot_config_agents_static_definitions_venice_config_*` variable. The [fully-commented sample config](https://github.com/etkecc/baibot/blob/main/docs/sample-provider-configs/venice.yml) explains every one of them.
If you'd like to use more than one model, take a look at the [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset) section below.
💡 You may also wish to use this new agent for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers).
Before proceeding, we recommend reading the upstream documentation on [How to choose a provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#how-to-choose-a-provider). In short, it's probably best to go with [OpenAI](#openai).
#### Anthropic
@@ -405,7 +374,7 @@ Example **additional** `vars.yml` configuration:
# As such, changing any of these values subsequently has no effect on the bot's behavior.
# Once initially configured, the global configuration is managed via bot commands, not via Ansible.
matrix_bot_baibot_config_initial_global_config_handler_catch_all: static/venice
matrix_bot_baibot_config_initial_global_config_handler_catch_all: static/openai
# In this example, there's no need to define any of these below.
# Configuring the catch-all purpose handler is enough.
+253 -12
View File
@@ -1,26 +1,267 @@
<!--
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2021 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2021 Yannick Goossens
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 Nikita Chernyi
SPDX-FileCopyrightText: 2023-2025 MDAD project contributors
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
SPDX-FileCopyrightText: 2025 MDAD project contributors
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Setting up Go-NEB (optional, removed)
# Setting up Go-NEB (optional, unmaintained)
🪦 The playbook used to be able to install and configure [Go-NEB](https://github.com/matrix-org/go-neb), but no longer includes this component as it has been discontinued.
**Note**: [Go-NEB](https://github.com/matrix-org/go-neb) is now an archived (**unmaintained**) project. We recommend not bothering with installing it. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md). Consider using that bot instead of this one.
While not a 1:1 replacement, the bot'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).
The playbook can install and configure [Go-NEB](https://github.com/matrix-org/go-neb) for you.
## Uninstalling Go-NEB manually
Go-NEB is a Matrix bot written in Go. It is the successor to Matrix-NEB, the original Matrix bot written in Python.
If you still have the Go-NEB component installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
See the project's [documentation](https://github.com/matrix-org/go-neb/blob/master/README.md) to learn what it does and why it might be useful to you.
## Prerequisites
### Register the bot account
The playbook does not automatically create users for you. You **need to register the bot user manually** before setting up the bot.
Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`.
You can use the playbook to [register a new user](registering-users.md):
```sh
systemctl disable --now matrix-bot-go-neb.service
rm -rf /matrix/go-neb
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.go-neb password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user
```
### Obtain an access token
The bot requires an access token to be able to connect to your homeserver. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md).
> [!WARNING]
> Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone.
## Adjusting DNS records
By default, this playbook installs Go-NEB on the `goneb.` subdomain (`goneb.example.com`) and requires you to create a CNAME record for `goneb`, which targets `matrix.example.com`.
When setting, replace `example.com` with your own.
## Adjusting the playbook configuration
To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `ACCESS_TOKEN_FOR_GONEB_HERE` and `ACCESS_TOKEN_FOR_ANOTHER_GONEB_HERE` with the ones created [above](#obtain-an-access-token).
```yaml
matrix_bot_go_neb_enabled: true
# You need at least 1 client.
# Use the access token you obtained in the step above.
matrix_bot_go_neb_clients:
- UserID: "@goneb:{{ matrix_domain }}"
AccessToken: "ACCESS_TOKEN_FOR_GONEB_HERE"
DeviceID: "DEVICE1"
HomeserverURL: "{{ matrix_addons_homeserver_client_api_url }}"
Sync: true
AutoJoinRooms: true
DisplayName: "Go-NEB!"
AcceptVerificationFromUsers: [":{{ matrix_domain }}"]
- UserID: "@another_goneb:{{ matrix_domain }}"
AccessToken: "ACCESS_TOKEN_FOR_ANOTHER_GONEB_HERE"
DeviceID: "DEVICE2"
HomeserverURL: "{{ matrix_addons_homeserver_client_api_url }}"
Sync: false
AutoJoinRooms: false
DisplayName: "Go-NEB!"
AcceptVerificationFromUsers: ["^@admin:{{ matrix_domain }}"]
# Optional, for use with the github_cmd, github_webhooks or jira services
matrix_bot_go_neb_realms:
- ID: "github_realm"
Type: "github"
Config: {} # No need for client ID or Secret as Go-NEB isn't generating OAuth URLs
# Optional. The list of *authenticated* sessions which Go-NEB is aware of.
matrix_bot_go_neb_sessions:
- SessionID: "your_github_session"
RealmID: "github_realm"
UserID: "@alice:{{ matrix_domain }}" # This needs to be the username of the person that's allowed to use the !github commands
Config:
# Populate these fields by generating a "Personal Access Token" on github.com
AccessToken: "YOUR_GITHUB_ACCESS_TOKEN"
Scopes: "admin:org_hook,admin:repo_hook,repo,user"
# The list of services which Go-NEB is aware of.
# Delete or modify this list as appropriate.
# See the docs for /configureService for the full list of options:
# https://matrix-org.github.io/go-neb/pkg/github.com/matrix-org/go-neb/api/index.html#ConfigureServiceRequest
# You need at least 1 service.
matrix_bot_go_neb_services:
- ID: "echo_service"
Type: "echo"
UserID: "@goneb:{{ matrix_domain }}"
Config: {}
# Can be obtained from https://developers.giphy.com/dashboard/
- ID: "giphy_service"
Type: "giphy"
UserID: "@goneb:{{ matrix_domain }}" # requires a Syncing client
Config:
api_key: "qwg4672vsuyfsfe"
use_downsized: false
# This service has been dead for over a year :/
- ID: "guggy_service"
Type: "guggy"
UserID: "@goneb:{{ matrix_domain }}" # requires a Syncing client
Config:
api_key: "2356saaqfhgfe"
# API Key via https://developers.google.com/custom-search/v1/introduction
# CX via http://www.google.com/cse/manage/all
# https://stackoverflow.com/questions/6562125/getting-a-cx-id-for-custom-search-google-api-python
# 'Search the entire web' and 'Image search' enabled for best results
- ID: "google_service"
Type: "google"
UserID: "@goneb:{{ matrix_domain }}" # requires a Syncing client
Config:
api_key: "AIzaSyA4FD39m9"
cx: "AIASDFWSRRtrtr"
# Obtain a key via https://api.imgur.com/oauth2/addclient
# Select "oauth2 without callback url"
- ID: "imgur_service"
Type: "imgur"
UserID: "@imgur:{{ matrix_domain }}" # requires a Syncing client
Config:
client_id: "AIzaSyA4FD39m9"
client_secret: "somesecret"
- ID: "wikipedia_service"
Type: "wikipedia"
UserID: "@goneb:{{ matrix_domain }}" # requires a Syncing client
Config:
- ID: "rss_service"
Type: "rssbot"
UserID: "@another_goneb:{{ matrix_domain }}"
Config:
feeds:
"http://lorem-rss.herokuapp.com/feed?unit=second&interval=60":
rooms: ["!qporfwt:{{ matrix_domain }}"]
must_include:
author:
- author1
description:
- lorem
- ipsum
must_not_include:
title:
- Lorem
- Ipsum
- ID: "github_cmd_service"
Type: "github"
UserID: "@goneb:{{ matrix_domain }}" # requires a Syncing client
Config:
RealmID: "github_realm"
# Make sure your BASE_URL can be accessed by Github!
- ID: "github_webhook_service"
Type: "github-webhook"
UserID: "@another_goneb:{{ matrix_domain }}"
Config:
RealmID: "github_realm"
ClientUserID: "@alice:{{ matrix_domain }}" # needs to be an authenticated user so Go-NEB can create webhooks. Check the UserID field in the github_realm in matrix_bot_go_neb_sessions.
Rooms:
"!qporfwt:example.com":
Repos:
"element-hq/synapse":
Events: ["push", "issues"]
"matrix-org/dendron":
Events: ["pull_request"]
"!aaabaa:example.com":
Repos:
"element-hq/synapse":
Events: ["push", "issues"]
"matrix-org/dendron":
Events: ["pull_request"]
- ID: "slackapi_service"
Type: "slackapi"
UserID: "@slackapi:{{ matrix_domain }}"
Config:
Hooks:
"hook1":
RoomID: "!qporfwt:example.com"
MessageType: "m.text" # default is m.text
- ID: "alertmanager_service"
Type: "alertmanager"
UserID: "@alertmanager:{{ matrix_domain }}"
Config:
# This is for information purposes only. It should point to Go-NEB path as follows:
# `/services/hooks/<base64 encoded service ID>`
# Where in this case "service ID" is "alertmanager_service"
# Make sure your BASE_URL can be accessed by the Alertmanager instance!
webhook_url: "http://localhost/services/hooks/YWxlcnRtYW5hZ2VyX3NlcnZpY2U"
# Each room will get the notification with the alert rendered with the given template
rooms:
"!qporfwt:example.com":
text_template: "{% raw %}{{range .Alerts -}} [{{ .Status }}] {{index .Labels \"alertname\" }}: {{index .Annotations \"description\"}} {{ end -}}{% endraw %}"
html_template: "{% raw %}{{range .Alerts -}} {{ $severity := index .Labels \"severity\" }} {{ if eq .Status \"firing\" }} {{ if eq $severity \"critical\"}} <font color='red'><b>[FIRING - CRITICAL]</b></font> {{ else if eq $severity \"warning\"}} <font color='orange'><b>[FIRING - WARNING]</b></font> {{ else }} <b>[FIRING - {{ $severity }}]</b> {{ end }} {{ else }} <font color='green'><b>[RESOLVED]</b></font> {{ end }} {{ index .Labels \"alertname\"}} : {{ index .Annotations \"description\"}} <a href=\"{{ .GeneratorURL }}\">source</a><br/>{{end -}}{% endraw %}"
msg_type: "m.text" # Must be either `m.text` or `m.notice`
```
### Adjusting the Go-NEB URL (optional)
By tweaking the `matrix_bot_go_neb_hostname` and `matrix_bot_go_neb_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `vars.yml` file:
```yaml
# Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for Go-NEB.
matrix_bot_go_neb_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /go-neb subpath
matrix_bot_go_neb_path_prefix: /go-neb
```
After changing the domain, **you may need to adjust your DNS** records to point the Go-NEB domain to the Matrix server.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
### Extending the configuration
There are some additional things you may wish to configure about the bot.
Take a look at:
- `roles/custom/matrix-bot-go-neb/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bot-go-neb/templates/config.yaml.j2` for the bot's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bot_go_neb_configuration_extension_yaml` variable
## Installing
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- 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 bot, invite it to any existing Matrix room (`/invite @bot.go-neb:example.com` where `example.com` is your base domain, not the `matrix.` domain). Make sure you are granted with the sufficient permission if you are not the room owner.
Basic usage is like this: `!echo hi` or `!imgur puppies` or `!giphy matrix`
If you enabled the github_cmd service, send `!github help` to the bot in the room to see the available commands.
You can also refer to the upstream [Documentation](https://github.com/matrix-org/go-neb).
## Troubleshooting
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-bot-go-neb`.
@@ -1,34 +1,103 @@
<!--
SPDX-FileCopyrightText: 2019 Edgars Voroboks
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
SPDX-FileCopyrightText: 2019-2025 MDAD project contributors
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 Chris van Dijk
SPDX-FileCopyrightText: 2020 Tulir Asokan
SPDX-FileCopyrightText: 2020 jens quade
SPDX-FileCopyrightText: 2022 - 2023 Julian-Samuel Gebühr
SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 Erick Wibben
SPDX-FileCopyrightText: 2022 Kim Brose
SPDX-FileCopyrightText: 2022 Kolja Lampe
SPDX-FileCopyrightText: 2022 Travis Ralston
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2022 Yan Minagawa
SPDX-FileCopyrightText: 2022, 2023 Julian-Samuel Gebühr
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
SPDX-FileCopyrightText: 2023 - 2024 MDAD project contributors
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Setting up matrix-registration-bot (optional, removed)
# Setting up matrix-registration-bot (optional)
🪦 The playbook used to be able to install and configure [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot), but no longer includes this component, as it has been unmaintained.
The playbook can install and configure [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) for you.
## Uninstalling the component manually
The bot allows you to easily **create and manage registration tokens** aka. invitation codes. It can be used for an invitation-based server, where you invite someone by sending them a registration token (tokens look like this: `rbalQ0zkaDSRQCOp`). They can register as per normal but have to provide a valid registration token in the final step of the registration process.
If you still have matrix-registration-bot installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
See the project's [documentation](https://github.com/moan0s/matrix-registration-bot/blob/master/README.md) to learn what it does and why it might be useful to you.
## Adjusting the playbook configuration
To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bot_matrix_registration_bot_enabled: true
# By default, the playbook will set use the bot with a username like this: `@bot.matrix-registration-bot:example.com`.
# Uncomment and adjust this part if you'd like to use a username different than the default
# matrix_bot_matrix_registration_bot_matrix_user_id_localpart: bot.matrix-registration-bot
# Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`.
matrix_bot_matrix_registration_bot_bot_password: PASSWORD_FOR_THE_BOT
# Enables registration
matrix_synapse_enable_registration: true
# Restrict registration to users with a token
matrix_synapse_registration_requires_token: true
# Set an optional command prefix for the bot. This can be any arbitrary string, including whitespace.
# Example: "!regbot "
matrix_bot_matrix_registration_bot_bot_prefix: ""
```
The bot account will be created automatically.
### Extending the configuration
There are some additional things you may wish to configure about the bot.
Take a look at:
- `roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bot-matrix-registration-bot/templates/config.yaml.j2` for the bridge's default configuration
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- 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,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the bot password (`matrix_bot_matrix_registration_bot_bot_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [Ketesa](configuring-playbook-ketesa.md) to change it, and then update `matrix_bot_matrix_registration_bot_bot_password` to let the bot know its new password.
## Usage
To use the bot, start a chat with `@bot.matrix-registration-bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
Send `help` to the bot to see the available commands.
You can also refer to the upstream [Usage documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands).
If you have any questions, or if you need help setting it up, read the [troubleshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md) or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de).
To clean the cache (session & encryption data) after you changed the bot's username, changed the login method from access_token to password etc… you can use:
```sh
systemctl disable --now matrix-bot-matrix-registration-bot.service
rm -rf /matrix/matrix-registration-bot
just run-tags bot-matrix-registration-bot-clean-cache
```
## Troubleshooting
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-bot-matrix-registration-bot`.
### Increase logging verbosity
The default logging level for this component is `INFO`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
```yaml
# Valid values: ERROR, INFO, DEBUG
matrix_bot_matrix_registration_bot_logging_level: DEBUG
```
@@ -26,9 +26,9 @@ Create a Discord Application [here](https://discordapp.com/developers/applicatio
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_appservice_discord_enabled: true
matrix_bridge_appservice_discord_client_id: "YOUR DISCORD APP CLIENT ID"
matrix_bridge_appservice_discord_bot_token: "YOUR DISCORD APP BOT TOKEN"
matrix_appservice_discord_enabled: true
matrix_appservice_discord_client_id: "YOUR DISCORD APP CLIENT ID"
matrix_appservice_discord_bot_token: "YOUR DISCORD APP BOT TOKEN"
# As of Synapse 1.90.0, uncomment to enable the backwards compatibility (https://matrix-org.github.io/synapse/latest/upgrade#upgrading-to-v1900) that this bridge needs.
# Note: This deprecated method is considered insecure.
@@ -44,7 +44,7 @@ There are some additional things you may wish to configure about the bridge.
Take a look at:
- `roles/custom/matrix-bridge-appservice-discord/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_appservice_discord_configuration_extension_yaml` variable
- `roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_discord_configuration_extension_yaml` variable
## Installing
@@ -65,7 +65,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju
Self-service bridging allows you to bridge specific and existing Matrix rooms to specific Discord rooms. To enable it, add the following configuration to your `vars.yml` file:
```yaml
matrix_bridge_appservice_discord_bridge_enableSelfServiceBridging: true
matrix_appservice_discord_bridge_enableSelfServiceBridging: true
```
**Note**: If self-service bridging is not enabled, `!discord help` commands will return no results.
@@ -91,14 +91,14 @@ All Matrix rooms created this way are **listed publicly** by default, and you wi
To disable portal bridging, add the following configuration to your `vars.yml` file:
```yaml
matrix_bridge_appservice_discord_bridge_disablePortalBridging: true
matrix_appservice_discord_bridge_disablePortalBridging: true
```
### Usage
To get started with Portal Bridging:
1. To invite the bot to Discord, retrieve the invite link from the `{{ matrix_bridge_appservice_discord_config_path }}/invite_link` file on the server (this defaults to `/matrix/appservice-discord/config/invite_link`). You need to peek at the file on the server via SSH, etc., because it's not available via HTTP(S).
1. To invite the bot to Discord, retrieve the invite link from the `{{ matrix_appservice_discord_config_path }}/invite_link` file on the server (this defaults to `/matrix/appservice-discord/config/invite_link`). You need to peek at the file on the server via SSH, etc., because it's not available via HTTP(S).
2. Room addresses follow this syntax: `#_discord_<guildID>_<channelID>`. You can easily find the guild and channel IDs by logging into Discord in a browser and opening the desired channel. The URL will have this format: `discord.com/channels/<guildID>/<channelID>`.
3. Once you have figured out the appropriate room address, you can join by doing `/join #_discord_<guildID>_<channelID>` in your Matrix client.
@@ -124,7 +124,7 @@ As with all other services, you can find the logs in [systemd-journald](https://
The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file (adapt to your needs) and re-run the playbook:
```yaml
matrix_bridge_appservice_discord_configuration_extension_yaml: |
matrix_appservice_discord_configuration_extension_yaml: |
logging:
# What level should the logger output to the console at.
console: "info" # Valid values: silent, error, warn, http, info, verbose, silly
@@ -20,9 +20,9 @@ See the project's [documentation](https://github.com/matrix-org/matrix-appservic
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_appservice_irc_enabled: true
matrix_appservice_irc_enabled: true
matrix_bridge_appservice_irc_ircService_servers:
matrix_appservice_irc_ircService_servers:
irc.example.com:
name: "ExampleNet"
port: 6697
@@ -76,7 +76,7 @@ There are some additional things you may wish to configure about the bridge.
Take a look at:
- `roles/custom/matrix-bridge-appservice-irc/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bridge-appservice-irc/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_appservice_irc_configuration_extension_yaml` variable
- `roles/custom/matrix-bridge-appservice-irc/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_irc_configuration_extension_yaml` variable
## Installing
@@ -104,7 +104,7 @@ As with all other services, you can find the logs in [systemd-journald](https://
The default logging level for this component is `debug`, and the log is output to the console only. If you want to change the verbosity or enable logging to a file, add the following configuration to your `vars.yml` file (adapt to your needs) and re-run the playbook:
```yaml
matrix_bridge_appservice_irc_configuration_extension_yaml: |
matrix_appservice_irc_configuration_extension_yaml: |
logging:
# Level to log on console/logfile.
# Valid values: error, warn, info, debug
@@ -1,26 +1,75 @@
<!--
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 - 2026 Slavi Pantaleev
SPDX-FileCopyrightText: 2022 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, removed)
# Setting up Appservice Kakaotalk bridging (optional)
🪦 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.
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 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.
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.
## Uninstalling the component manually
> [!WARNING]
> There have been recent reports (~2022-09-16) that **using this bridge may get your account banned**.
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:
## Prerequisite (optional)
```sh
systemctl disable --now matrix-appservice-kakaotalk.service
### Enable Shared Secret Auth
systemctl disable --now matrix-appservice-kakaotalk-node.service
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.
rm -rf /matrix/appservice-kakaotalk
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
```
@@ -29,7 +29,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_beeper_linkedin_enabled: true
matrix_beeper_linkedin_enabled: true
```
### Extending the configuration
@@ -68,7 +68,7 @@ As with all other services, you can find the logs in [systemd-journald](https://
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_bridge_beeper_linkedin_logging_level: DEBUG
matrix_beeper_linkedin_logging_level: DEBUG
```
### Bridge asking for 2FA even if you don't have 2FA enabled
@@ -25,26 +25,26 @@ If you wish to adjust it, see the section [below](#adjusting-the-heisenbridge-ur
To enable Heisenbridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_heisenbridge_enabled: true
matrix_heisenbridge_enabled: true
# Setting the owner is optional as the first local user to DM `@heisenbridge:example.com` will be made the owner.
# If you are not using a local user you must set it as otherwise you can't DM it at all.
matrix_bridge_heisenbridge_owner: "@alice:{{ matrix_domain }}"
matrix_heisenbridge_owner: "@alice:{{ matrix_domain }}"
# Uncomment to enable identd on host port 113/TCP (optional)
# matrix_bridge_heisenbridge_identd_enabled: true
# matrix_heisenbridge_identd_enabled: true
```
### Adjusting the Heisenbridge URL (optional)
By tweaking the `matrix_bridge_heisenbridge_hostname` and `matrix_bridge_heisenbridge_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
By tweaking the `matrix_heisenbridge_hostname` and `matrix_heisenbridge_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `vars.yml` file:
```yaml
# Change the default hostname and path prefix
matrix_bridge_heisenbridge_hostname: heisenbridge.example.com
matrix_bridge_heisenbridge_path_prefix: /
matrix_heisenbridge_hostname: heisenbridge.example.com
matrix_heisenbridge_path_prefix: /
```
If you've changed the default hostname, you may need to create a CNAME record for the Heisenbridge domain (`heisenbridge.example.com`), which targets `matrix.example.com`.
+25 -35
View File
@@ -29,30 +29,20 @@ You need to download the private key file, if you will install the file manually
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).
```yaml
matrix_bridge_hookshot_enabled: true
matrix_hookshot_enabled: true
# Uncomment to enable end-to-bridge encryption.
# See: https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html
# matrix_bridge_hookshot_encryption_enabled: true
# matrix_hookshot_encryption_enabled: true
# Uncomment and paste the contents of GitHub app private key to enable GitHub bridge.
# Alternatively, you can use one of the other methods explained below on the "Manage GitHub Private Key with aux role" section.
# matrix_bridge_hookshot_github_private_key: "GITHUB_PRIVATE_KEY_HERE"
# 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.
For each of the services (GitHub, GitLab, Jira, Figma, and generic webhooks) fill in the respective variables `matrix_bridge_hookshot_service_*` listed in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml) as required.
Take special note of the `matrix_bridge_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).
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).
### Extending the configuration
@@ -61,7 +51,7 @@ There are some additional things you may wish to configure about the bridge.
Take a look at:
- `roles/custom/matrix-bridge-hookshot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_hookshot_configuration_extension_yaml` and `matrix_bridge_hookshot_registration_extension_yaml` variables
- `roles/custom/matrix-bridge-hookshot/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_hookshot_configuration_extension_yaml` and `matrix_hookshot_registration_extension_yaml` variables
Refer the [official instructions](https://matrix-org.github.io/matrix-hookshot/latest/setup.html) and the comments in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml) to learn what the individual options do.
@@ -106,31 +96,31 @@ Unless indicated otherwise, the following endpoints are reachable on your `matri
| Listener | Default path | Variable | Used as |
|---|---|---|---|
| - | `/hookshot/webhooks/` | `matrix_bridge_hookshot_webhook_endpoint` | Webhook-prefix, which affects all webhook-related URLs below |
| generic | `/hookshot/webhooks/webhook` | `matrix_bridge_hookshot_generic_endpoint` | Generic webhooks |
| github oauth | `/hookshot/webhooks/oauth` | `matrix_bridge_hookshot_github_oauth_endpoint` | GitHub "Callback URL" |
| jira oauth | `/hookshot/webhooks/jira/oauth` | `matrix_bridge_hookshot_jira_oauth_endpoint` | Jira OAuth |
| figma endpoint | `/hookshot/webhooks/figma/webhook` | `matrix_bridge_hookshot_figma_endpoint` | Figma |
| appservice | `/hookshot/_matrix/app/` | `matrix_bridge_hookshot_appservice_endpoint` | Matrix server |
| widgets | `/hookshot/widgetapi/` | `matrix_bridge_hookshot_widgets_endpoint` | Widgets |
| - | `/hookshot/webhooks/` | `matrix_hookshot_webhook_endpoint` | Webhook-prefix, which affects all webhook-related URLs below |
| generic | `/hookshot/webhooks/webhook` | `matrix_hookshot_generic_endpoint` | Generic webhooks |
| github oauth | `/hookshot/webhooks/oauth` | `matrix_hookshot_github_oauth_endpoint` | GitHub "Callback URL" |
| jira oauth | `/hookshot/webhooks/jira/oauth` | `matrix_hookshot_jira_oauth_endpoint` | Jira OAuth |
| figma endpoint | `/hookshot/webhooks/figma/webhook` | `matrix_hookshot_figma_endpoint` | Figma |
| appservice | `/hookshot/_matrix/app/` | `matrix_hookshot_appservice_endpoint` | Matrix server |
| widgets | `/hookshot/widgetapi/` | `matrix_hookshot_widgets_endpoint` | Widgets |
Also see the various `matrix_bridge_hookshot_container_labels_*` variables in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml), which expose URLs publicly.
Also see the various `matrix_hookshot_container_labels_*` variables in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml), which expose URLs publicly.
The different listeners are also reachable *internally* in the docker-network via the container's name (configured by `matrix_bridge_hookshot_container_url`) and on different ports (e.g. `matrix_bridge_hookshot_appservice_port`). Read [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml) in detail for more info.
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.
### Manage GitHub Private Key with aux role
The GitHub bridge requires you to install a private key file. This can be done in multiple ways:
- copy the *contents* of the downloaded file and set the variable `matrix_bridge_hookshot_github_private_key` to the contents (see example in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml)).
- somehow copy the file to the path `{{ matrix_bridge_hookshot_base_path }}/{{ matrix_bridge_hookshot_github_private_key_file }}` (default: `/matrix/hookshot/private-key.pem`) on the server manually.
- 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)).
- 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.
- 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.
To use the `aux` role, make sure the `matrix_bridge_hookshot_github_private_key` variable is empty. Then add the following configuration to your `vars.yml` file:
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:
```yaml
aux_file_definitions:
- dest: "{{ matrix_bridge_hookshot_base_path }}/{{ matrix_bridge_hookshot_github_private_key_file }}"
- dest: "{{ matrix_hookshot_base_path }}/{{ matrix_hookshot_github_private_key_file }}"
content: "{{ lookup('file', '/path/to/your-github-private-key.pem') }}"
mode: '0400'
owner: "{{ matrix_user_name }}"
@@ -149,23 +139,23 @@ To enable the metrics, add the following configuration to your `vars.yml` file:
```yaml
# Expose metrics (locally, on the container network).
matrix_bridge_hookshot_metrics_enabled: true
matrix_hookshot_metrics_enabled: true
```
**To collect metrics from an external Prometheus server**, besides enabling metrics as described above, you will also need to enable metrics exposure on `https://matrix.example.com/metrics/hookshot` by adding the following configuration to your `vars.yml` file:
```yaml
matrix_bridge_hookshot_metrics_proxying_enabled: true
matrix_hookshot_metrics_proxying_enabled: true
```
By default metrics are exposed publicly **without** password-protection. To password-protect the metrics with dedicated credentials, add the following configuration to your `vars.yml` file:
```yaml
matrix_bridge_hookshot_container_labels_metrics_middleware_basic_auth_enabled: true
matrix_bridge_hookshot_container_labels_metrics_middleware_basic_auth_users: ''
matrix_hookshot_container_labels_metrics_middleware_basic_auth_enabled: true
matrix_hookshot_container_labels_metrics_middleware_basic_auth_users: ''
```
To `matrix_bridge_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.
To `matrix_hookshot_container_labels_metrics_middleware_basic_auth_users`, set the Basic Authentication credentials (raw `htpasswd` file content) used to protect the endpoint. See https://doc.traefik.io/traefik/middlewares/http/basicauth/#users for details about it.
**Note**: alternatively, you can use `matrix_metrics_exposure_enabled` to expose all services on this `/metrics/*` feature, and you can use `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users` to password-protect the metrics of them. See [this section](configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server) for more information.
@@ -185,5 +175,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: error, warn, info, debug
matrix_bridge_hookshot_logging_level: debug
matrix_hookshot_logging_level: debug
```
@@ -21,23 +21,23 @@ The bridge uses [android-sms-gateway-server](https://github.com/RebekkaMa/androi
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_sms_enabled: true
matrix_sms_bridge_enabled: true
# (optional but recommended) a room ID to a default room
matrix_bridge_sms_default_room: ""
matrix_sms_bridge_default_room: ""
# (optional but recommended) configure your server location
matrix_bridge_sms_default_region: DE
matrix_bridge_sms_default_timezone: Europe/Berlin
matrix_sms_bridge_default_region: DE
matrix_sms_bridge_default_timezone: Europe/Berlin
# Settings to connect to android-sms-gateway-server
matrix_bridge_sms_provider_android_baseurl: https://192.168.24.24:9090
matrix_bridge_sms_provider_android_username: admin
matrix_bridge_sms_provider_android_password: supeSecretPassword
matrix_sms_bridge_provider_android_baseurl: https://192.168.24.24:9090
matrix_sms_bridge_provider_android_username: admin
matrix_sms_bridge_provider_android_password: supeSecretPassword
# (optional) if your android-sms-gateway-server uses a self signed vertificate, the bridge needs a "truststore". This can be the certificate itself.
matrix_bridge_sms_provider_android_truststore_local_path: android-sms-gateway-server.p12
matrix_bridge_sms_provider_android_truststore_password: 123
matrix_sms_bridge_provider_android_truststore_local_path: android-sms-gateway-server.p12
matrix_sms_bridge_provider_android_truststore_password: 123
```
### Extending the configuration
@@ -46,7 +46,7 @@ There are some additional things you may wish to configure about the bridge.
Take a look at:
- `roles/custom/matrix-bridge-sms/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_sms_configuration_extension_yaml` variable
- `roles/custom/matrix-bridge-sms/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_sms_bridge_configuration_extension_yaml` variable
## Installing
@@ -27,7 +27,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_bluesky_enabled: true
matrix_mautrix_bluesky_enabled: true
```
### Extending the configuration
@@ -70,5 +70,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_bluesky_logging_level: 'debug'
matrix_mautrix_bluesky_logging_level: 'debug'
```
@@ -21,12 +21,12 @@ To enable the bridge, add the following configuration to your `inventory/host_va
```yaml
# Replace SERVICENAME with one of: twitter, discord, signal, googlechat, etc.
matrix_bridge_mautrix_SERVICENAME_enabled: true
matrix_mautrix_SERVICENAME_enabled: true
```
**Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_bridge_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively.
**Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively.
There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_bridge_mautrix_telegram_api_id` and `matrix_bridge_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges.
There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_mautrix_telegram_api_id` and `matrix_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges.
### Configure bridge permissions (optional)
@@ -43,7 +43,7 @@ If you don't define the `matrix_admin` in your configuration (e.g. `matrix_admin
**Alternatively** (more verbose, but allows multiple admins to be configured), you can do the same on a per-bridge basis with:
```yaml
matrix_bridge_mautrix_SERVICENAME_configuration_extension_yaml: |
matrix_mautrix_SERVICENAME_configuration_extension_yaml: |
bridge:
permissions:
'@alice:{{ matrix_domain }}': admin
@@ -67,8 +67,8 @@ matrix_bridges_encryption_default: true
**Alternatively**, for a specific bridge:
```yaml
matrix_bridge_mautrix_SERVICENAME_bridge_encryption_enabled: true
matrix_bridge_mautrix_SERVICENAME_bridge_encryption_default: true
matrix_mautrix_SERVICENAME_bridge_encryption_enabled: true
matrix_mautrix_SERVICENAME_bridge_encryption_default: true
```
### Enable relay mode (optional)
@@ -86,16 +86,16 @@ matrix_bridges_relay_enabled: true
**Alternatively**, for a specific bridge:
```yaml
matrix_bridge_mautrix_SERVICENAME_configuration_extension_yaml: |
matrix_mautrix_SERVICENAME_configuration_extension_yaml: |
bridge:
relay:
enabled: true
```
You can only have one `matrix_bridge_mautrix_SERVICENAME_configuration_extension_yaml` definition in `vars.yml` per bridge, so if you need multiple pieces of configuration there, just merge them like this:
You can only have one `matrix_mautrix_SERVICENAME_configuration_extension_yaml` definition in `vars.yml` per bridge, so if you need multiple pieces of configuration there, just merge them like this:
```yaml
matrix_bridge_mautrix_SERVICENAME_configuration_extension_yaml: |
matrix_mautrix_SERVICENAME_configuration_extension_yaml: |
bridge:
relay:
enabled: true
@@ -115,7 +115,7 @@ Use `!prefix set-pl 100` to be able for the bot to modify room settings and invi
By default, only admins are allowed to set themselves as relay users. To allow anyone on your homeserver to set themselves as relay users, add the following configuration to your `vars.yml` file:
```yaml
matrix_bridge_mautrix_SERVICENAME_bridge_relay_admin_only: false
matrix_mautrix_SERVICENAME_bridge_relay_admin_only: false
```
### Set the bot's username (optional)
@@ -123,7 +123,7 @@ matrix_bridge_mautrix_SERVICENAME_bridge_relay_admin_only: false
To set the bot's username, add the following configuration to your `vars.yml` file:
```yaml
matrix_bridge_mautrix_SERVICENAME_appservice_bot_username: "BOTNAME"
matrix_mautrix_SERVICENAME_appservice_bot_username: "BOTNAME"
```
### Configure the logging level (optional)
@@ -131,42 +131,13 @@ matrix_bridge_mautrix_SERVICENAME_appservice_bot_username: "BOTNAME"
To specify the logging level, add the following configuration to your `vars.yml` file:
```yaml
matrix_bridge_mautrix_SERVICENAME_logging_level: warn
matrix_mautrix_SERVICENAME_logging_level: warn
```
Replace `warn` with one of the following to control the verbosity of the logs generated: `trace`, `debug`, `info`, `warn`, `error` or `fatal`.
If you have issues with a service, and are requesting support, the higher levels of logging (those that appear earlier in the list, like `trace`) will generally be more helpful.
### Expose the bridge's API (for Mautrix Manager and similar tools)
Each mautrix bridge runs an HTTP API which tools like [Mautrix Manager](https://github.com/mautrix/manager) can use to help you log into the bridge. This is especially handy for bridges where logging in manually is cumbersome (like [mautrix-gmessages](configuring-playbook-bridge-mautrix-gmessages.md)).
By default, the playbook exposes this API publicly at `https://matrix.example.com/bridges/SERVICENAME` (for example, `https://matrix.example.com/bridges/gmessages`). Such tools authenticate to the bridge with your own Matrix access token, so you never need to share any bridge secret with them.
To make discovery easier, the playbook also serves a `/.well-known/matrix/mautrix` file which advertises all your exposed bridges. Mautrix Manager reads this file and offers your bridges automatically, so you don't need to enter their URLs by hand.
This is all enabled by default. To **disable exposing the API for all bridges**, add the following configuration to your `vars.yml` file:
```yaml
matrix_bridges_exposure_enabled: false
```
**Alternatively**, to disable it for a specific bridge:
```yaml
matrix_bridge_mautrix_SERVICENAME_exposure_enabled: false
```
If you run additional bridges on the same server which are not managed by this playbook and would like compatible tools to discover them as well, you can advertise their base URLs in the `/.well-known/matrix/mautrix` file:
```yaml
matrix_static_files_file_matrix_mautrix_property_fi_mau_bridges_custom:
- https://matrix.example.com/bridges/SOME_OTHER_BRIDGE
```
Only list bridges hosted on (and connected to) this server here, as compatible tools will send your Matrix access token to them. For bridges on other servers, take a look at the `fi.mau.external_bridge_servers` property described in the [Mautrix Manager](https://github.com/mautrix/manager) documentation, which you can add via `matrix_static_files_file_matrix_mautrix_configuration_extension_json`.
### Extending the configuration
There are some additional things you may wish to configure about the bridge.
@@ -174,7 +145,7 @@ There are some additional things you may wish to configure about the bridge.
Take a look at:
- `roles/custom/matrix-bridge-mautrix-SERVICENAME/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bridge-mautrix-SERVICENAME/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_mautrix_SERVICENAME_configuration_extension_yaml` variable
- `roles/custom/matrix-bridge-mautrix-SERVICENAME/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_mautrix_SERVICENAME_configuration_extension_yaml` variable
## Installing
@@ -226,7 +197,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) 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) 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.
#### Method 2: manually, by asking each user to provide a working access token
@@ -39,7 +39,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_discord_enabled: true
matrix_mautrix_discord_enabled: true
```
### Extending the configuration
@@ -96,7 +96,7 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_discord_logging_level: 'debug'
matrix_mautrix_discord_logging_level: 'debug'
```
### Command requires room admin rights when user is creator
@@ -27,7 +27,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_gmessages_enabled: true
matrix_mautrix_gmessages_enabled: true
```
### Extending the configuration
@@ -68,5 +68,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_gmessages_logging_level: 'debug'
matrix_mautrix_gmessages_logging_level: 'debug'
```
@@ -30,7 +30,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the [Google Chat](https://chat.google.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_googlechat_enabled: true
matrix_mautrix_googlechat_enabled: true
```
### Extending the configuration
@@ -70,5 +70,5 @@ As with all other services, you can find the logs in [systemd-journald](https://
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_bridge_mautrix_googlechat_logging_level: DEBUG
matrix_mautrix_googlechat_logging_level: DEBUG
```
@@ -1,73 +0,0 @@
<!--
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_bridge_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_bridge_mautrix_gvoice_logging_level: 'debug'
```
@@ -23,7 +23,7 @@ This documentation page only deals with the bridge's ability to bridge to Instag
If you've been using the [mautrix-instagram](./configuring-playbook-bridge-mautrix-instagram.md) bridge, **you'd better get rid of it first** or the 2 bridges will be in conflict:
- both trying to use `@instagrambot:example.com` as their username. This conflict may be resolved by adjusting `matrix_mautrix_instagram_appservice_bot_username` or `matrix_bridge_mautrix_meta_instagram_appservice_username`
- both trying to use `@instagrambot:example.com` as their username. This conflict may be resolved by adjusting `matrix_mautrix_instagram_appservice_bot_username` or `matrix_mautrix_meta_instagram_appservice_username`
- both trying to bridge the same DMs
To do so, send a `clean-rooms` command to the management room with the old bridge bot (`@instagrambot:example.com`). It gives you a list of portals and groups of portals you may purge. Proceed with sending commands like `clean recommended`, etc.
@@ -41,7 +41,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_meta_instagram_enabled: true
matrix_mautrix_meta_instagram_enabled: true
```
Before proceeding to [re-running the playbook](./installing.md), you may wish to adjust the configuration further. See below.
@@ -83,5 +83,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# This bridge uses zerolog, so valid levels are: panic, fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_meta_instagram_logging_min_level: debug
matrix_mautrix_meta_instagram_logging_min_level: debug
```
@@ -41,7 +41,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_meta_messenger_enabled: true
matrix_mautrix_meta_messenger_enabled: true
```
Before proceeding to [re-running the playbook](./installing.md), you may wish to adjust the configuration further. See below.
@@ -56,7 +56,7 @@ The bridge can pull your Messenger messages via 3 different methods:
- (`facebook-tor`) Facebook via `facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion` ([Tor](https://www.torproject.org/)) — does not currently proxy media downloads
- (default) (`messenger`) Messenger via `messenger.com` — usable even without a Facebook account
You may switch the mode via the `matrix_bridge_mautrix_meta_messenger_meta_mode` variable. The playbook defaults to the `messenger` mode, because it's most universal (every Facebook user has a Messenger account, but the opposite is not true).
You may switch the mode via the `matrix_mautrix_meta_messenger_meta_mode` variable. The playbook defaults to the `messenger` mode, because it's most universal (every Facebook user has a Messenger account, but the opposite is not true).
Note that switching the mode (especially between `facebook*` and `messenger`) will intentionally make the bridge use another database (`matrix_mautrix_meta_facebook` or `matrix_mautrix_meta_messenger`) to isolate the 2 instances. Switching between Tor and non-Tor may be possible without dataloss, but your mileage may vary. Before switching to a new mode, you may wish to de-configure the old one (send `help` to the bridge bot and unbridge your portals, etc.).
@@ -99,5 +99,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# This bridge uses zerolog, so valid levels are: panic, fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_meta_messenger_logging_min_level: debug
matrix_mautrix_meta_messenger_logging_min_level: debug
```
@@ -28,7 +28,7 @@ See the project's [documentation](https://docs.mau.fi/bridges/go/signal/index.ht
If you're running with the Postgres database server integrated by the playbook (which is the default), you don't need to do anything special and can easily proceed with installing.
However, if you're [using an external Postgres server](configuring-playbook-external-postgres.md), you'd need to manually prepare a Postgres database for this bridge and adjust the variables related to that (`matrix_bridge_mautrix_signal_database_*`).
However, if you're [using an external Postgres server](configuring-playbook-external-postgres.md), you'd need to manually prepare a Postgres database for this bridge and adjust the variables related to that (`matrix_mautrix_signal_database_*`).
### Enable Appservice Double Puppet
@@ -41,7 +41,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_signal_enabled: true
matrix_mautrix_signal_enabled: true
```
### Extending the configuration
@@ -83,5 +83,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_signal_logging_level: 'debug'
matrix_mautrix_signal_logging_level: 'debug'
```
@@ -34,7 +34,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_slack_enabled: true
matrix_mautrix_slack_enabled: true
```
### Extending the configuration
@@ -74,5 +74,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_slack_logging_level: 'debug'
matrix_mautrix_slack_logging_level: 'debug'
```
@@ -36,9 +36,9 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `YOUR_TELEGRAM_APP_ID` and `YOUR_TELEGRAM_API_HASH`.
```yaml
matrix_bridge_mautrix_telegram_enabled: true
matrix_bridge_mautrix_telegram_api_id: YOUR_TELEGRAM_APP_ID
matrix_bridge_mautrix_telegram_api_hash: YOUR_TELEGRAM_API_HASH
matrix_mautrix_telegram_enabled: true
matrix_mautrix_telegram_api_id: YOUR_TELEGRAM_APP_ID
matrix_mautrix_telegram_api_hash: YOUR_TELEGRAM_API_HASH
```
### Relaying
@@ -86,5 +86,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_telegram_logging_level: debug
matrix_mautrix_telegram_logging_level: debug
```
@@ -28,7 +28,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_twitter_enabled: true
matrix_mautrix_twitter_enabled: true
```
### Extending the configuration
@@ -69,5 +69,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_twitter_logging_level: 'debug'
matrix_mautrix_twitter_logging_level: 'debug'
```
@@ -34,7 +34,7 @@ See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_whatsapp_enabled: true
matrix_mautrix_whatsapp_enabled: true
```
### Extending the configuration
@@ -76,5 +76,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: fatal, error, warn, info, debug, trace
matrix_bridge_mautrix_whatsapp_logging_level: 'debug'
matrix_mautrix_whatsapp_logging_level: 'debug'
```
@@ -25,26 +25,26 @@ When setting, replace `example.com` with your own.
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mautrix_wsproxy_enabled: true
matrix_mautrix_wsproxy_enabled: true
matrix_bridge_mautrix_wsproxy_androidsms_appservice_token: 'secret token from bridge'
matrix_bridge_mautrix_wsproxy_androidsms_homeserver_token: 'secret token from bridge'
matrix_bridge_mautrix_wsproxy_imessage_appservice_token: 'secret token from bridge'
matrix_bridge_mautrix_wsproxy_imessage_homeserver_token: 'secret token from bridge'
matrix_bridge_mautrix_wsproxy_syncproxy_shared_secret: 'secret token from bridge'
matrix_mautrix_androidsms_appservice_token: 'secret token from bridge'
matrix_mautrix_androidsms_homeserver_token: 'secret token from bridge'
matrix_mautrix_imessage_appservice_token: 'secret token from bridge'
matrix_mautrix_imessage_homeserver_token: 'secret token from bridge'
matrix_mautrix_wsproxy_syncproxy_shared_secret: 'secret token from bridge'
```
Note that the tokens must match what is compiled into the [mautrix-imessage](https://github.com/mautrix/imessage) bridge running on your Mac or Android device.
### Adjusting the wsproxy URL (optional)
By tweaking the `matrix_bridge_mautrix_wsproxy_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
By tweaking the `matrix_mautrix_wsproxy_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
Example additional configuration for your `vars.yml` file:
```yaml
# Change the default hostname
matrix_bridge_mautrix_wsproxy_hostname: ws.example.com
matrix_mautrix_wsproxy_hostname: ws.example.com
```
After changing the domain, **you may need to adjust your DNS** records to point the wsproxy domain to the Matrix server.
@@ -26,42 +26,42 @@ You also need access to a Meshtastic device, connected to the server via one of:
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_meshtastic_relay_enabled: true
matrix_meshtastic_relay_enabled: true
# Password for the bot's Matrix account.
# On first startup, the bridge uses this to log in and persist credentials
# (including End-to-End Encryption material) under its data directory.
# After that, the password can be removed from this variable.
matrix_bridge_meshtastic_relay_matrix_bot_password: "PASSWORD_FOR_THE_BOT"
matrix_meshtastic_relay_matrix_bot_password: "PASSWORD_FOR_THE_BOT"
# How the bridge connects to your Meshtastic device.
# One of: tcp, serial, ble
matrix_bridge_meshtastic_relay_connection_type: tcp
matrix_meshtastic_relay_connection_type: tcp
# For connection_type: tcp
matrix_bridge_meshtastic_relay_tcp_host: "meshtastic.local"
matrix_meshtastic_relay_tcp_host: "meshtastic.local"
# For connection_type: serial
# matrix_bridge_meshtastic_relay_serial_port: "/dev/ttyUSB0"
# matrix_meshtastic_relay_serial_port: "/dev/ttyUSB0"
# For connection_type: ble
# matrix_bridge_meshtastic_relay_ble_address: "AA:BB:CC:DD:EE:FF"
# matrix_meshtastic_relay_ble_address: "AA:BB:CC:DD:EE:FF"
# Matrix rooms to bridge to Meshtastic channels.
matrix_bridge_meshtastic_relay_matrix_rooms_list:
matrix_meshtastic_relay_matrix_rooms_list:
- id: "#meshtastic:{{ matrix_domain }}"
meshtastic_channel: "0"
```
By default, the bot's Matrix ID is `@meshtasticbot:{{ matrix_domain }}`. To change it, adjust `matrix_bridge_meshtastic_relay_matrix_bot_user_id`.
By default, the bot's Matrix ID is `@meshtasticbot:{{ matrix_domain }}`. To change it, adjust `matrix_meshtastic_relay_matrix_bot_user_id`.
### Bluetooth (BLE) connections
When `matrix_bridge_meshtastic_relay_connection_type` is `ble`, the container runs with `--network=host` and bind-mounts the host's DBus socket — both are required for Bluetooth pairing/communication. Only use this connection type if you trust the playbook-managed host and are comfortable with these privileges.
When `matrix_meshtastic_relay_connection_type` is `ble`, the container runs with `--network=host` and bind-mounts the host's DBus socket — both are required for Bluetooth pairing/communication. Only use this connection type if you trust the playbook-managed host and are comfortable with these privileges.
### Serial connections
When `matrix_bridge_meshtastic_relay_connection_type` is `serial`, the host device referenced by `matrix_bridge_meshtastic_relay_serial_port` is passed through to the container. Make sure that `matrix_user_uid` / `matrix_user_gid` have read/write access to that device (e.g. by adding the matrix user to the `dialout` group, or adjusting udev rules).
When `matrix_meshtastic_relay_connection_type` is `serial`, the host device referenced by `matrix_meshtastic_relay_serial_port` is passed through to the container. Make sure that `matrix_user_uid` / `matrix_user_gid` have read/write access to that device (e.g. by adding the matrix user to the `dialout` group, or adjusting udev rules).
### Extending the configuration
@@ -69,7 +69,7 @@ There are some additional things you may wish to configure about the bridge.
Take a look at:
- `roles/custom/matrix-bridge-meshtastic-relay/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override individual `matrix_bridge_meshtastic_relay_*` variables, or make finer-grained adjustments via `matrix_bridge_meshtastic_relay_configuration_extension_yaml`.
- `roles/custom/matrix-bridge-meshtastic-relay/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override individual `matrix_meshtastic_relay_*` variables, or make finer-grained adjustments via `matrix_meshtastic_relay_configuration_extension_yaml`.
## Installing
@@ -86,7 +86,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju
## Usage
Invite the bot to the Matrix rooms listed in `matrix_bridge_meshtastic_relay_matrix_rooms_list` and it will relay between Matrix and the corresponding Meshtastic channel. Messages sent on Meshtastic will appear in Matrix and vice versa.
Invite the bot to the Matrix rooms listed in `matrix_meshtastic_relay_matrix_rooms_list` and it will relay between Matrix and the corresponding Meshtastic channel. Messages sent on Meshtastic will appear in Matrix and vice versa.
See the [project's wiki](https://github.com/jeremiah-k/meshtastic-matrix-relay/wiki) for details about commands, plugins and advanced usage.
@@ -18,7 +18,7 @@ See the project's [documentation](https://gitlab.com/xangelix-pub/matrix/mx-pupp
To enable the [GroupMe](https://groupme.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mx_puppet_groupme_enabled: true
matrix_mx_puppet_groupme_enabled: true
```
## Installing
@@ -20,7 +20,7 @@ See the project's [documentation](https://codeberg.org/icewind/mx-puppet-steam/b
To enable the [Steam](https://steampowered.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_mx_puppet_steam_enabled: true
matrix_mx_puppet_steam_enabled: true
```
## Installing
@@ -24,7 +24,7 @@ Open the following ports on your server to be able to receive incoming emails:
If you don't open these ports, you will still be able to send emails, but not receive any.
These port numbers are configurable via the `matrix_bridge_postmoogle_smtp_host_bind_port` and `matrix_bridge_postmoogle_submission_host_bind_port` variables, but other email servers will try to deliver on these default (standard) ports, so changing them is of little use.
These port numbers are configurable via the `matrix_postmoogle_smtp_host_bind_port` and `matrix_postmoogle_submission_host_bind_port` variables, but other email servers will try to deliver on these default (standard) ports, so changing them is of little use.
## Adjusting DNS records
@@ -44,17 +44,17 @@ To make Postmoogle enable its email sending features, you need to configure MX a
Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_postmoogle_enabled: true
matrix_postmoogle_enabled: true
# Uncomment and adjust this part if you'd like to use a username different than the default
# matrix_bridge_postmoogle_login: postmoogle
# matrix_postmoogle_login: postmoogle
# Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`.
matrix_bridge_postmoogle_password: PASSWORD_FOR_THE_BOT
matrix_postmoogle_password: PASSWORD_FOR_THE_BOT
# Uncomment to add one or more admins to this bridge:
#
# matrix_bridge_postmoogle_admins:
# matrix_postmoogle_admins:
# - '@yourAdminAccount:{{ matrix_domain }}'
#
# … unless you've made yourself an admin of all bots/bridges like this:
@@ -87,7 +87,7 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-use
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the bridge's bot password (`matrix_bridge_postmoogle_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [Ketesa](configuring-playbook-ketesa.md) to change it, and then update `matrix_bridge_postmoogle_password` to let the bot know its new password.
- If you change the bridge's bot password (`matrix_postmoogle_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [Ketesa](configuring-playbook-ketesa.md) to change it, and then update `matrix_postmoogle_password` to let the bot know its new password.
## Usage
@@ -108,5 +108,5 @@ As with all other services, you can find the logs in [systemd-journald](https://
The default logging level for this component is `INFO`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
```yaml
matrix_bridge_postmoogle_loglevel: 'DEBUG'
matrix_postmoogle_loglevel: 'DEBUG'
```
@@ -1,100 +0,0 @@
<!--
SPDX-FileCopyrightText: 2026 MDAD project contributors
SPDX-FileCopyrightText: 2026 Jason LaGuidice
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Setting up RustPush (iMessage) bridging (optional)
> **Note:** This bridge is in early development and may have stability issues. It may not be desirable to deploy this to a large number of users. Your testing and feedback is appreciated.
<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 [RustPush bridge to iMessage](https://github.com/jasonlaguidice/imessage) for you using Apple's push notification service.
See the project's [documentation](https://github.com/jasonlaguidice/imessage/blob/main/README.md) to learn what it does and why it might be useful to you.
## Prerequisites
### Hardware Key Extraction
To use this bridge on Linux (Docker), each user needs a **hardware key** extracted from a real Mac. This key contains hardware identifiers needed for iMessage registration. Hardware keys can be shared by a number of users (approximately 20) before causing issues with Apple.
The key is entered interactively through the bridge bot's login flow (not configured via Ansible variables). See the upstream [README](https://github.com/jasonlaguidice/imessage/blob/main/README.md) for instructions on extracting the key.
If extracted from an Intel Mac, the Mac does not need to remain running after the key is extracted for this bridge to work. Apple Silicon Macs must run a NAC relay and thus must remain running.
### Phone Number Registration (optional)
This bridge can **not** do phone number registration (PNR). The only way to have your phone number registered and used (instead of an Apple ID e-mail address) is to have an iPhone connected to your Apple account. Reference the [BlueBubbles Phone Number Registration Guide](https://docs.bluebubbles.app/server/advanced/registering-a-phone-number-with-your-imessage-account) for information on how to set this up.
### Enable Appservice Double Puppet (optional)
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook.
See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-puppeting-optional) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about setting up Double Puppeting.
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_rustpush_enabled: true
```
### Disable Backfill (optional)
Backfill can be disabled globally if desired via config. By default, the bridge will backfill from iCloud (CloudKit) and APNS if available. Backfill from `chat.db` is only possible when the bridge is running on MacOS.
```yaml
matrix_bridge_rustpush_backfill_enabled: false
```
### Extending the Configuration
There are some additional things you may wish to configure about the bridge.
See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc.
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
**Notes**:
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
To use the bridge, you need to start a chat with `@rustpushbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
After logging in, the bridge will start receiving iMessages and creating portal rooms.
## 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-rustpush-bridge`.
### Increase logging verbosity
The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
```yaml
# Valid values: fatal, error, warn, info, debug, trace
matrix_bridge_rustpush_logging_level: 'debug'
# Enable debug logging for RustPush
matrix_bridge_rustpush_rust_log: "warn,rustpushgo=info,openabsinthe=debug"
```
## Notable Configuration Options
- `matrix_bridge_rustpush_statuskit_notifications` will display StatusKit information for conversation participants. In some clients, this update will cause the DM to be pushed to the top of the conversation list continuously, so this option is disabled by default.
- `matrix_bridge_rustpush_statuskit_notification_style` can be set to either `topic` or `notice`
- `topic` sets the status as a room topic. In supported clients (like Cinny and Sable), this will display `🔕 Focus` as a second line when the person has focus mode enabled.
- `notice` sends an `m.notice` event to the room which will display text in the room but should not generate a notification
+1 -4
View File
@@ -15,7 +15,7 @@ See the project's [documentation](https://github.com/jasonlaguidice/matrix-steam
To enable the [Steam](https://steampowered.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_steam_enabled: true
matrix_steam_bridge_enabled: true
```
## Installing
@@ -46,6 +46,3 @@ Once logged in, send `search [name]` to search through recognized Steam friends.
Chat rooms will automatically be opened as new messages are received.
Send `help` to the bot to see the available commands.
## Notable Configuration Options
- `matrix_bridge_steam_network_presence_topic_enabled` and `matrix_bridge_steam_network_presence_topic_rich_presence_enabled` mirror Steam's [Enhanced Rich Presence](https://partner.steamgames.com/doc/features/enhancedrichpresence) feature in Matrix. This will display the user's current game and rich presence if supported by the game. This sets the DM room's `m.topic` field to achieve this. Some games (like Deadlock) update the rich presence every minute with a match timer. In some clients, the topic update will cause the DM to be pushed to the top of the conversation list continuously, so this option is disabled by default.
+3 -3
View File
@@ -19,7 +19,7 @@ See the project's [documentation](https://github.com/duo/matrix-wechat/blob/mast
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bridge_wechat_enabled: true
matrix_wechat_enabled: true
```
### Extending the configuration
@@ -29,7 +29,7 @@ There are some additional things you may wish to configure about the bridge.
Take a look at:
- `roles/custom/matrix-bridge-wechat/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bridge-wechat/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_wechat_configuration_extension_yaml` variable
- `roles/custom/matrix-bridge-wechat/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_wechat_configuration_extension_yaml` variable
## Installing
@@ -62,5 +62,5 @@ The default logging level for this component is `warn`. If you want to increase
```yaml
# Valid values: fatal, error, warn, info, debug
matrix_bridge_wechat_log_level: 'debug'
matrix_wechat_log_level: 'debug'
```
@@ -1,93 +0,0 @@
<!--
SPDX-FileCopyrightText: 2026 MDAD project contributors
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Setting up Commet (optional)
The playbook can install and configure the [Commet](https://github.com/commetchat/commet) Matrix web client for you.
## Adjusting DNS records
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`.
When setting, replace `example.com` with your own.
## Adjusting the playbook configuration
To enable Commet, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_client_commet_enabled: true
```
### Adjusting the Commet URL (optional)
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.
Example additional configuration for your `vars.yml` file:
```yaml
# Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for Commet.
matrix_client_commet_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /commet subpath
matrix_client_commet_path_prefix: /commet
```
After changing the domain, **you may need to adjust your DNS** records to point the Commet domain to the Matrix server.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
**Note**: `matrix_client_commet_path_prefix` must either be `/` or not end with a slash (e.g. `/commet`).
### Adjusting the default homeserver (optional)
Commet is configured with a `default_homeserver` value. By default, the playbook uses `matrix.org`.
To change it, add the following configuration to your `vars.yml` file:
```yaml
matrix_client_commet_default_homeserver: "{{ matrix_domain }}"
```
### Adjusting the Commet version/branch to build (optional)
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.
To build from a different git branch/tag/SHA, set `matrix_client_commet_version` in your `vars.yml` file:
```yaml
# Examples: "main", "v1.2.3", "feature-branch", "a1b2c3d4"
matrix_client_commet_version: "main"
```
**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.
### Extending the configuration
There are some additional things you may wish to configure about the component.
Take a look at:
- `roles/custom/matrix-client-commet/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-client-commet/templates/global_config.json.j2` for the component's default runtime configuration
## Installing
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- 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.
## Troubleshooting
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-client-commet`.
+1 -1
View File
@@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
# Setting up Sable (optional)
The playbook can install and configure the [Sable](https://github.com/SableClient/Sable) Matrix web client for you.
The playbook can install and configure the [Sable](https://github.com/7w1/sable) Matrix web client for you.
Sable is a web client focusing primarily on simple, elegant and secure interface. It can be installed alongside or instead of [Element Web](./configuring-playbook-client-element-web.md), [Cinny](./configuring-playbook-client-cinny.md) and others.
-2
View File
@@ -71,6 +71,4 @@ 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.**
+2 -2
View File
@@ -13,14 +13,14 @@ SPDX-License-Identifier: AGPL-3.0-or-later
# Setting up Ketesa (optional)
The playbook can install and configure [Ketesa](https://ketesa.app) ([source code](https://github.com/etkecc/ketesa)) for you.
The playbook can install and configure [Ketesa](https://github.com/etkecc/ketesa) for you.
Ketesa is a fully-featured admin interface for Matrix homeservers — manage users, rooms, media, sessions, and more from one clean, responsive web UI. It is the evolution of [Awesome-Technologies/synapse-admin](https://github.com/Awesome-Technologies/synapse-admin): what began as a fork has grown into its own independent project with a redesigned interface, comprehensive Synapse and MAS API coverage, and multi-language support. See the [Ketesa v1.0.0 announcement](https://etke.cc/blog/introducing-ketesa/) for a full overview of what's new.
>[!NOTE]
>
> - Ketesa does not work with other homeserver implementations than Synapse due to API's incompatibility.
> - The latest version of Ketesa is hosted by [etke.cc](https://etke.cc/) at [cloud.ketesa.app](https://cloud.ketesa.app/). If you only need this service occasionally and trust giving your admin credentials to a 3rd party Single Page Application, you can consider using it from there and avoiding the (small) overhead of self-hosting.
> - The latest version of Ketesa is hosted by [etke.cc](https://etke.cc/) at [admin.etke.cc](https://admin.etke.cc/). If you only need this service occasionally and trust giving your admin credentials to a 3rd party Single Page Application, you can consider using it from there and avoiding the (small) overhead of self-hosting.
> - This playbook also supports an alternative management UI in the shape of [Element Admin](./configuring-playbook-element-admin.md). Please note that it's currently less feature-rich than Ketesa and requires [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md).
## Adjusting DNS records (optional)
+7 -1
View File
@@ -11,7 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
The playbook can install and configure the [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3) LDAP Auth password provider for you.
See the project's [documentation](https://github.com/matrix-org/matrix-synapse-ldap3/blob/main/README.md) to learn what it does and why it might be useful to you.
See the project's [documentation](https://github.com/matrix-org/matrix-synapse-ldap3/blob/main/README.rst) to learn what it does and why it might be useful to you.
## Adjusting the playbook configuration
@@ -52,3 +52,9 @@ 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
### Handling user registration
If you wish for users to also be able to make new registrations against LDAP, you may **also** wish to [set up the ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md).
@@ -61,12 +61,6 @@ livekit_server_container_labels_turn_traefik_entrypoints: "<your-livekit-turn-tr
and configuring their own Traefik TCP entrypoint dedicated to LiveKit TURN traffic.
## TURN access controls
LiveKit's embedded TURN server enforces a credential TTL and restricts which peer CIDRs it will relay to. The playbook leaves these at the role's secure defaults, which are appropriate for typical deployments where TURN peers live on the public Internet.
If your setup needs TURN to relay to private/restricted ranges, or you want to override the credential TTL, see the [TURN access controls and credential TTL](https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server/blob/main/docs/configuring-livekit-server.md#turn-access-controls-and-credential-ttl) section of the role's documentation.
## Limitations
LiveKit Server's TURN listener behavior depends on where TLS is terminated:
@@ -1,32 +1,69 @@
<!--
SPDX-FileCopyrightText: 2019 Edgars Voroboks
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
SPDX-FileCopyrightText: 2019-2025 MDAD project contributors
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 Chris van Dijk
SPDX-FileCopyrightText: 2020 Tulir Asokan
SPDX-FileCopyrightText: 2020 jens quade
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2022 Julian-Samuel Gebühr
SPDX-FileCopyrightText: 2022 Kim Brose
SPDX-FileCopyrightText: 2022 Travis Ralston
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2022 Yan Minagawa
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Setting up matrix-ldap-registration-proxy (optional, removed)
# Setting up matrix-ldap-registration-proxy (optional)
🪦 The playbook used to be able to install and configure [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy), but no longer includes this component, as it has become unavailable.
The playbook can install and configure [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) for you.
## Uninstalling the component manually
This proxy handles Matrix registration requests and forwards them to LDAP.
If you still have matrix-ldap-registration-proxy installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:
See the project's [documentation](https://gitlab.com/activism.international/matrix_ldap_registration_proxy/-/blob/main/README.md) to learn what it does and why it might be useful to you.
```sh
systemctl disable --now matrix-ldap-registration-proxy.service
**Note**: This does support the full Matrix specification for registrations. It only provide a very coarse implementation of a basic password registration.
rm -rf /matrix/matrix_ldap_registration_proxy
## Adjusting the playbook configuration
To enable the component, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml
matrix_ldap_registration_proxy_enabled: true
# LDAP credentials
matrix_ldap_registration_proxy_ldap_uri: YOUR_URI_HERE
matrix_ldap_registration_proxy_ldap_base_dn: YOUR_DN_HERE
matrix_ldap_registration_proxy_ldap_user: YOUR_USER_HERE
matrix_ldap_registration_proxy_ldap_password: YOUR_PASSWORD_HERE
```
If you already use the [synapse external password provider via LDAP](configuring-playbook-ldap-auth.md) (that is, you have `matrix_synapse_ext_password_provider_ldap_enabled: true` and other options in your configuration) you can use the following values as configuration:
```yaml
# Use the LDAP values specified for the synapse role to setup LDAP proxy
matrix_ldap_registration_proxy_ldap_uri: "{{ matrix_synapse_ext_password_provider_ldap_uri }}"
matrix_ldap_registration_proxy_ldap_base_dn: "{{ matrix_synapse_ext_password_provider_ldap_base }}"
matrix_ldap_registration_proxy_ldap_user: "{{ matrix_synapse_ext_password_provider_ldap_bind_dn }}"
matrix_ldap_registration_proxy_ldap_password: "{{ matrix_synapse_ext_password_provider_ldap_bind_password }}"
matrix_ldap_registration_proxy_systemd_wanted_services_list_custom:
- matrix-synapse.service
```
### Extending the configuration
There are some additional things you may wish to configure about the component.
Take a look at:
- `roles/custom/matrix-ldap-registration-proxy/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- 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.
## Troubleshooting
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-ldap-registration-proxy`.
+103 -24
View File
@@ -1,36 +1,115 @@
<!--
SPDX-FileCopyrightText: 2019 Edgars Voroboks
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
SPDX-FileCopyrightText: 2019-2025 MDAD project contributors
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 Chris van Dijk
SPDX-FileCopyrightText: 2020 Tulir Asokan
SPDX-FileCopyrightText: 2020 jens quade
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 Kim Brose
SPDX-FileCopyrightText: 2022 Travis Ralston
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2022 Yan Minagawa
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev
SPDX-FileCopyrightText: 2022 MDAD project contributors
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Setting up matrix-registration (optional, removed)
# Setting up matrix-registration (optional)
> [!NOTE]
> This is not related to [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md).
> [!WARNING]
> - This is a poorly maintained and buggy project. It's better to avoid using it.
> - This is not related to [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md)
🪦 The playbook used to be able to install and configure [matrix-registration](https://github.com/ZerataX/matrix-registration), but no longer includes this component, as it has been unmaintained since November, 2025.
The playbook can install and configure [matrix-registration](https://github.com/ZerataX/matrix-registration) for you. It is a simple python application to have a token based Matrix registration.
## Uninstalling the component manually
Use matrix-registration to **create unique registration links**, which people can use to register on your Matrix server. It allows certain people (these having a special link) to register a user account, **keeping your server's registration closed (private)**.
If you still have matrix-registration 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:
**matrix-registration** provides 2 things:
- **an API for creating registration tokens** (unique registration links). This API can be used via `curl` or via the playbook (see [Usage](#usage) below)
- **a user registration page**, where people can use these registration tokens. By default, exposed at `https://matrix.example.com/matrix-registration`
## Adjusting DNS records (optional)
By default, this playbook installs the matrix-registration on the `matrix.` subdomain, at the `/matrix-registration` path (https://matrix.example.com/matrix-registration). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section.
If you wish to adjust it, see the section [below](#adjusting-the-matrix-registration-url-optional) for details about DNS configuration.
## Adjusting the playbook configuration
To enable matrix-registration, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_registration_enabled: true
# Generate a strong secret here. You can create one with a command like `pwgen -s 64 1`.
matrix_registration_admin_secret: "ENTER_SOME_SECRET_HERE"
```
### Adjusting the matrix-registration URL (optional)
By tweaking the `matrix_registration_hostname` and `matrix_registration_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `vars.yml` file:
```yaml
# Change the default hostname and path prefix
matrix_registration_hostname: registration.example.com
matrix_registration_path_prefix: /
```
If you've changed the default hostname, you may need to create a CNAME record for the matrix-registration domain (`registration.example.com`), which targets `matrix.example.com`.
When setting, replace `example.com` with your own.
### Extending the configuration
There are some additional things you may wish to configure about the component.
Take a look at:
- `roles/custom/matrix-registration/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-registration/templates/config.yaml.j2` for the component's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_registration_configuration_extension_yaml` variable
## Installing
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- 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
**matrix-registration** gets exposed at `https://matrix.example.com/matrix-registration`
It provides various [APIs](https://github.com/ZerataX/matrix-registration/wiki/api) — for creating registration tokens, listing tokens, disabling tokens, etc. To make use of all of its capabilities, consider using `curl`.
We make the most common APIs easy to use via the playbook (see below).
### Creating registration tokens
To **create a new user registration token (link)**, use this command:
```sh
systemctl disable --now matrix-registration.service
rm -rf /matrix/matrix-registration
/matrix/postgres/bin/cli-non-interactive -c 'DROP DATABASE matrix_registration;'
ansible-playbook -i inventory/hosts setup.yml \
--tags=generate-matrix-registration-token \
--extra-vars="one_time=yes ex_date=2021-12-31"
```
The above command creates and returns a **one-time use** token, which **expires** on the 31st of December 2021. Adjust the `one_time` and `ex_date` variables as you see fit.
Share the unique registration link (generated by the command above) with users to let them register on your Matrix server.
### Listing registration tokens
To **list the existing user registration tokens**, use this command:
```sh
ansible-playbook -i inventory/hosts setup.yml \
--tags=list-matrix-registration-tokens
```
The shortcut command with `just` program is also available: `just run-tags list-matrix-registration-tokens`
## Troubleshooting
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-registration`.
-179
View File
@@ -1,179 +0,0 @@
<!--
SPDX-FileCopyrightText: 2026 Chiu Ki Sit
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Configuring Synology DSM
This document is a guide for preparing Synology DSM for the installation of the [Matrix Docker Ansible Deploy](https://github.com/spantaleev/matrix-docker-ansible-deploy) project.
> **Note:** Synology DSM is a community-supported platform. It is not officially tested or maintained by the project maintainers. Use at your own discretion.
**Intended audience:** Users already familiar with DSM, SSH, and this Ansible project.
## Assumptions
- DSM version 7 or higher
- `Volume1` is used as the default Docker storage location
- You are using DSM's built-in reverse proxy for handling HTTPS
## How Synology Support Works
The playbook automatically detects Synology DSM by checking for `/etc/synoinfo.conf`. When detected, it:
- Uses `synouser` and `synogroup` (DSM-native tools) instead of standard Linux user management
- Constrains the Python `requests` package to a version compatible with the Docker SDK
- Ensures `/volume1` has shared mount propagation so container bind mounts work correctly
- Deploys a `matrix-synology-boot-fix` service that runs on every boot after Docker is ready
You can override auto-detection by setting `matrix_base_host_is_synology: true` or `false` in your `vars.yml`.
### Matrix Service Account
The playbook creates a `matrix` system account using Synology's `synouser` tool. The account is secured as follows:
- **Expired** (`expired=1`) — the account cannot be used to log in to DSM or any application
You must set a password for this account via `matrix_synology_user_password` in your `vars.yml` (see [vars.yml Configuration](#varsyml-configuration)). The password cannot be used to log in because the account is expired, but a non-empty password is required as an additional security layer.
> If you pre-create the `matrix` user manually before running the playbook, the playbook will not modify the existing account's settings — you are responsible for securing it.
### Boot-fix Service
Synology DSM has two boot-time quirks that the boot-fix service addresses automatically:
1. **`/volume1` shared mount propagation**
Docker requires `/volume1` to be mounted as shared (`mount --make-shared /volume1`) for container bind mounts with `bind-propagation=slave` to work correctly (used by matrix-synapse for its media store). On Synology, this cannot be inserted into the systemd chain before Container Manager starts — doing so causes Container Manager to detect a broken dependency and prompt for repair on every boot. The playbook applies this during setup, and the boot-fix service re-applies it on every subsequent reboot, safely outside Container Manager's dependency chain.
2. **Skipped services at boot**
Synology's systemd drops services with multi-level dependency chains from the boot activation queue (e.g. `matrix-traefik → matrix-container-socket-proxy → docker`). These services show as `inactive` or `failed` after reboot even though they are enabled. The boot-fix service scans for any enabled `matrix-*.service` in either state and starts them automatically.
> **If you previously configured a Task Scheduler entry** (`Control Panel > Task Scheduler`) to run `mount --make-shared /volume1` at boot-up, you can remove it — the boot-fix service now handles this.
## Synology GUI Preparation
1. **Enable SSH**
- `Control Panel` > `Terminal & SNMP` > `Enable SSH service`
2. **Enable SFTP**
- `Control Panel` > `File Service` > `FTP` > `Enable SFTP service` with default port
3. **Enable User Home Directory**
- `Control Panel` > `User & Group` > `Advanced` > `Enable user home service`
4. **Install Container Manager**
- Install from `Package Center`
5. **Configure Reverse Proxy**
- `Control Panel` > `Login Portal` > `Advanced` > `Reverse Proxy`
- Create entries for each service you enable (e.g. Matrix, Element, admin page)
- Example entry:
- Source: `HTTPS` / `matrix.example.com` / port `443`
- Destination: `HTTP` / `localhost` / port `81`
## SSH Preparation
### (Optional but Recommended) Enable SSH Key Authentication
Configure key-based SSH login to avoid password prompts during Ansible runs.
### Set Up the Ansible Environment
Create a project folder and Python virtual environment on the DSM host:
```shell
mkdir ~/path/to/your/project/folder
cd ~/path/to/your/project/folder
python3 -m venv ./myenv
# (optional) activate python virtual environment
# source ./myenv/bin/activate
```
## Inventory Configuration
In your `inventory/hosts` file, set the Python interpreter to your virtual environment:
```ini
# SSH key authentication with empty passphrase example
matrix.example.com ansible_host=<your-dsm-ip> ansible_ssh_user=<dsm-ssh-user> become=true become_user=root ansible_python_interpreter=/volume1/homes/path/to/your/project/folder/myenv/bin/python ansible_sudo_pass='your-password'
```
## vars.yml Configuration
Add the following Synology-specific variables to your `vars.yml`:
```yaml
# Synology-specific settings
# Controls Synology DSM-specific handling. `null` means autodetect (via /etc/synoinfo.conf).
# Set to `true`/`false` to force.
# matrix_base_host_is_synology: true
# Password for the Matrix service account created by the playbook.
# The account is created as expired so this password cannot be used to log in.
matrix_synology_user_password: "your-strong-password"
# User and group that will be created automatically by the playbook
matrix_user_name: "matrix"
matrix_group_name: "matrix"
# Data path on your Synology volume
matrix_base_data_path: "/volume1/docker/matrix"
# Use Synology Container Manager's Docker daemon instead of installing Docker
matrix_playbook_docker_installation_enabled: false
devture_systemd_docker_base_host_command_docker: "/var/packages/ContainerManager/target/usr/bin/docker"
devture_systemd_docker_base_docker_service_name: "pkg-ContainerManager-dockerd.service"
# Use Synology's NTP service
devture_timesync_ntpd_service: "chronyd"
# Reverse proxy settings — use HTTPS at the DSM reverse proxy level
matrix_playbook_ssl_enabled: true
traefik_config_entrypoint_web_secure_enabled: false
# Bind to localhost only — DSM reverse proxy handles public traffic
traefik_container_web_host_bind_port: '127.0.0.1:81'
matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port: '127.0.0.1:8449'
# Trust X-Forwarded-* headers from the local reverse proxy
traefik_config_entrypoint_web_forwardedHeaders_insecure: true
matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom:
forwardedHeaders:
insecure: true
```
## Running the Playbook
```shell
# Full setup
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all
# start
ansible-playbook -i inventory/hosts setup.yml --tags=install-all,start
# Stop all services
ansible-playbook -i inventory/hosts setup.yml --tags=stop
# Apply config changes (always include start to restart running containers)
ansible-playbook -i inventory/hosts setup.yml --tags=stop,setup-all,start
```
> **Important:** Always include `stop` before `setup-all,start` when changing configuration. Running `setup-all` alone does not restart already-running containers.
## Creating Matrix Users
After the services are running, create your first Matrix user:
```shell
# option 1:
sudo docker exec -it matrix-synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -u your_username -p your_password
# option 2:
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=your_username password=your_password admin=yes|no' --tags=register-user
```
+2 -3
View File
@@ -140,16 +140,15 @@ The S3 backend ships with native multipart upload, so no goofys/rclone sidecar i
### RocksDB and cache tuning
Tuwunel embeds RocksDB. The defaults (`rocksdb_compression_algo: zstd`) suit most deployments. For high-throughput servers you may want to enable direct I/O, raise parallelism, and configure a backup path:
Tuwunel embeds RocksDB. The defaults (`rocksdb_compression_algo: zstd`) suit most deployments. For high-throughput servers you may want to enable direct I/O, raise parallelism, and bump the cache modifier:
```yaml
matrix_tuwunel_config_rocksdb_direct_io: true
matrix_tuwunel_config_rocksdb_parallelism_threads: 8
matrix_tuwunel_config_cache_capacity_modifier: 2.0
matrix_tuwunel_config_database_backup_path: /var/lib/tuwunel/backups
```
`matrix_tuwunel_config_cache_capacity_modifier` is left empty by default, so Tuwunel picks a value (`1.0` since v1.7.0, with rebalanced per-cache sizes that already raise memory use). Set it to `2.0` only on small hosts with four or fewer cores; on larger machines the default is recommended.
If you run on ZFS, the [Tuwunel maintenance guide](https://matrix-construct.github.io/tuwunel/maintenance.html#zfs) lists the dataset properties (`recordsize`, `primarycache`, `compression`, `atime`, `logbias`) and config flags (`rocksdb_direct_io`, `rocksdb_allow_fallocate`) you need to adjust to avoid severe write amplification.
To enable Sentry crash reporting, set `matrix_tuwunel_config_sentry_enabled: true`.
+10 -16
View File
@@ -89,14 +89,12 @@ Web clients for Matrix that you can host on your own domains.
- [Setting up Cinny](configuring-playbook-client-cinny.md), if you've enabled [Cinny](https://github.com/ajbura/cinny), a web client focusing primarily on simple, elegant and secure interface
- [Setting up Sable](configuring-playbook-client-sable.md), if you've enabled [Sable](https://github.com/SableClient/Sable), a web client focusing primarily on simple, elegant and secure interface
- [Setting up Sable](configuring-playbook-client-sable.md), if you've enabled [Sable](https://github.com/7w1/sable), a web client focusing primarily on simple, elegant and secure interface
- [Setting up SchildiChat Web](configuring-playbook-client-schildichat-web.md), if you've enabled [SchildiChat Web](https://schildi.chat/), a web client based on [Element Web](https://element.io/) with some extras and tweaks
- [Setting up FluffyChat Web](configuring-playbook-client-fluffychat-web.md), if you've enabled [FluffyChat Web](https://github.com/krille-chan/fluffychat), a cute cross-platform messenger (web, iOS, Android) for Matrix written in [Flutter](https://flutter.dev/)
- [Setting up Commet](configuring-playbook-client-commet.md), if you've enabled [Commet](https://github.com/commetchat/commet), a Matrix web client
### Authentication and user-related
@@ -108,12 +106,16 @@ Extend and modify how users are authenticated on your homeserver.
- [Setting up Ketesa](configuring-playbook-ketesa.md)
- [Setting up matrix-registration](configuring-playbook-matrix-registration.md)
- [Setting up the REST authentication password provider module](configuring-playbook-rest-auth.md) (advanced)
- [Setting up the Shared Secret Auth password provider module](configuring-playbook-shared-secret-auth.md) (advanced)
- [Setting up the LDAP authentication password provider module](configuring-playbook-ldap-auth.md) (advanced)
- [Setting up matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) (advanced)
- [Setting up Synapse Simple Antispam](configuring-playbook-synapse-simple-antispam.md) (advanced)
- [Setting up Matrix User Verification Service](configuring-playbook-user-verification-service.md) (advanced)
@@ -146,8 +148,6 @@ 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)
@@ -162,12 +162,12 @@ Bridges can be used to connect your Matrix installation with third-party communi
- [Setting up Mautrix wsproxy for bridging Android SMS or Apple iMessage](configuring-playbook-bridge-mautrix-wsproxy.md)
- [Setting up RustPush (iMessage) bridging](configuring-playbook-bridge-rustpush.md)
- [Setting up Appservice IRC bridging](configuring-playbook-bridge-appservice-irc.md)
- [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).
@@ -192,10 +192,12 @@ Bridges can be used to connect your Matrix installation with third-party communi
Bots provide various additional functionality to your installation.
- [Setting up baibot](configuring-playbook-bot-baibot.md) — a bot through which you can talk to various [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) services (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))
- [Setting up baibot](configuring-playbook-bot-baibot.md) — a bot through which you can talk to various [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) services ([OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) and [others](https://github.com/etkecc/baibot/blob/main/docs/providers.md))
- [Setting up matrix-reminder-bot](configuring-playbook-bot-matrix-reminder-bot.md) — a bot to remind you about stuff
- [Setting up matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) — a bot to create and manage registration tokens to invite users
- [Setting up maubot](configuring-playbook-bot-maubot.md) — a plugin-based Matrix bot system
- [Setting up Honoroit](configuring-playbook-bot-honoroit.md) — a helpdesk bot
@@ -263,8 +265,6 @@ 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))
@@ -281,12 +281,6 @@ Various services that don't fit any other categories.
- [Setting up matrix-bot-chatgpt](configuring-playbook-bot-chatgpt.md) (unmaintained; the bridge's author suggests taking a look at [baibot](https://github.com/etkecc/baibot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bot-baibot.md))
- [Setting up matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) (removed; the repository of the source code has been removed)
- [Setting up matrix-registration](configuring-playbook-matrix-registration.md) (removed; this component has been unmaintained)
- [Setting up matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) (removed; this component has been unmaintained)
- [Setting up Mautrix Facebook bridging](configuring-playbook-bridge-mautrix-facebook.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-messenger](configuring-playbook-bridge-mautrix-meta-messenger.md))
- [Setting up Mautrix Instagram bridging](configuring-playbook-bridge-mautrix-instagram.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-instagram](configuring-playbook-bridge-mautrix-meta-instagram.md))
+1 -20
View File
@@ -112,9 +112,7 @@ 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 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.
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.
**For nginx**, it would be something like this:
@@ -157,23 +155,6 @@ 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
+4 -5
View File
@@ -67,6 +67,8 @@ Extend and modify how users are authenticated on your homeserver.
| [matrix-synapse-rest-auth](configuring-playbook-rest-auth.md) | (N/A) | ❌ | REST authentication password provider module |
| [matrix-synapse-shared-secret-auth](configuring-playbook-shared-secret-auth.md) | (N/A) | ❌ | Password provider module |
| [matrix-synapse-ldap3](configuring-playbook-ldap-auth.md) (advanced) | (N/A) | ❌ | LDAP Auth password provider module |
| [matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) | [activism.international/matrix_ldap_registration_proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy/container_registry) | ❌ | Proxy that handles Matrix registration requests and forwards them to LDAP |
| [matrix-registration](configuring-playbook-matrix-registration.md) | [zeratax/matrix-registration](https://hub.docker.com/r/devture/zeratax-matrix-registration/) | ❌ | Simple python application to have a token based Matrix registration |
| [Matrix User Verification Service](configuring-playbook-user-verification-service.md) | [matrixdotorg/matrix-user-verification-service](https://hub.docker.com/r/atrixdotorg/matrix-user-verification-service) | ❌ | Service to verify details of a user based on an Open ID token |
| [synapse-simple-antispam](configuring-playbook-synapse-simple-antispam.md) (advanced) | (N/A) | ❌ | Spam checker module |
@@ -91,7 +93,6 @@ 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/) |
@@ -100,6 +101,7 @@ 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 |
@@ -107,7 +109,6 @@ Bridges can be used to connect your Matrix installation with third-party communi
| [Heisenbridge](configuring-playbook-bridge-heisenbridge.md) | [hif1/heisenbridge](https://hub.docker.com/r/hif1/heisenbridge) | ❌ | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) |
| [mx-puppet-groupme](configuring-playbook-bridge-mx-puppet-groupme.md) | [xangelix/mx-puppet-groupme](https://hub.docker.com/r/xangelix/mx-puppet-groupme) | ❌ | Bridge to [GroupMe](https://groupme.com/) |
| [matrix-steam-bridge](configuring-playbook-bridge-steam.md) | [jasonlaguidice/matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge/pkgs/container/matrix-steam-bridge) | ❌ | Bridge to [Steam](https://steampowered.com/) |
| [matrix-rustpush-bridge](configuring-playbook-bridge-rustpush.md) | [jasonlaguidice/imessage](https://github.com/jasonlaguidice/imessage/pkgs/container/imessage) | ❌ | Bridge to [iMessage](https://support.apple.com/messages) via Apple Push Notification service |
| [mx-puppet-steam](configuring-playbook-bridge-mx-puppet-steam.md) | [icewind1991/mx-puppet-steam](https://hub.docker.com/r/icewind1991/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) |
| [Postmoogle](configuring-playbook-bridge-postmoogle.md) | [etke.cc/postmoogle](https://github.com/etkecc/postmoogle/container_registry) | ❌ | Email to Matrix bridge |
@@ -119,6 +120,7 @@ Bots provide various additional functionality to your installation.
| ------- | --------------- | -------- | ----------- |
| [baibot](configuring-playbook-bot-baibot.md) | [etke.cc/baibot](https://ghcr.io/etkecc/baibot) | ❌ | Bot that exposes the power of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) to you |
| [matrix-reminder-bot](configuring-playbook-bot-matrix-reminder-bot.md) | [anoa/matrix-reminder-bot](https://hub.docker.com/r/anoa/matrix-reminder-bot) | ❌ | Bot for scheduling one-off & recurring reminders and alarms |
| [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) | [moanos/matrix-registration-bot](https://hub.docker.com/r/moanos/matrix-registration-bot/) | ❌ | Bot for invitations by creating and managing registration tokens |
| [maubot](configuring-playbook-bot-maubot.md) | [dock.mau.dev/maubot/maubot](https://mau.dev/maubot/maubot/container_registry) | ❌ | Plugin-based Matrix bot system |
| [Honoroit](configuring-playbook-bot-honoroit.md) | [etke.cc/honoroit](https://github.com/etkecc/honoroit/container_registry) | ❌ | Helpdesk bot |
| [Mjolnir](configuring-playbook-bot-mjolnir.md) | [matrixdotorg/mjolnir](https://hub.docker.com/r/matrixdotorg/mjolnir) | ❌ | Moderation tool for Matrix |
@@ -177,9 +179,6 @@ The list of the deprecated or unmaintained services is available [here](configur
| [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) | [matrixdotorg/matrix-appservice-slack](https://hub.docker.com/r/matrixdotorg/matrix-appservice-slack) | ❌ | Bridge to [Slack](https://slack.com/) |
| [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md) | [turt2live/matrix-appservice-webhooks](https://hub.docker.com/r/turt2live/matrix-appservice-webhooks) | ❌ | Bridge for slack compatible webhooks ([ConcourseCI](https://concourse-ci.org/), [Slack](https://slack.com/) etc. pp.) |
| [matrix-chatgpt-bot](configuring-playbook-bot-chatgpt.md) | [matrixgpt/matrix-chatgpt-bot](https://ghcr.io/matrixgpt/matrix-chatgpt-bot) | ❌ | Accessing ChatGPT via your favourite Matrix client |
| [matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) | [activism.international/matrix_ldap_registration_proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy/container_registry) | ❌ | Proxy that handles Matrix registration requests and forwards them to LDAP |
| [matrix-registration](configuring-playbook-matrix-registration.md) | [zeratax/matrix-registration](https://hub.docker.com/r/devture/zeratax-matrix-registration/) | ❌ | Simple python application to have a token based Matrix registration |
| [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) | [moanos/matrix-registration-bot](https://hub.docker.com/r/moanos/matrix-registration-bot/) | ❌ | Bot for invitations by creating and managing registration tokens |
| [mautrix-facebook](configuring-playbook-bridge-mautrix-facebook.md) | [mautrix/facebook](https://mau.dev/mautrix/facebook/container_registry) | ❌ | Bridge to [Facebook](https://facebook.com/) |
| [mautrix-instagram](configuring-playbook-bridge-mautrix-instagram.md) | [mautrix/instagram](https://mau.dev/mautrix/instagram/container_registry) | ❌ | Bridge to [Instagram](https://instagram.com/) |
| [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) | [mx-puppet/discord/mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/container_registry) | ❌ | Bridge to [Discord](https://discordapp.com/) |
-6
View File
@@ -456,12 +456,6 @@ If it is correctly specified, look Traefik's logs (`journalctl -fu matrix-traefi
## Miscellaneous
### The role to manage the service which I deploy has been removed from the playbook. Does this mean that the service can no longer be used on my server?
Not necessarily. Removing the role from the playbook does not always mean that the service has been deprecated by the upstream developers, so as long as the resource such as the Docker image is available, you should be able to keep running it by reverting the specific commit which has removed the role. This essentially means that you will need to maintain your own version of the playbook.
Please keep in mind that you will occasionally need to fix code conflicts if any.
### I would like to see this favorite service of mine integrated and become available on my Matrix server. How can I request it?
You can freely create an issue for feature request on the repository at GitHub [here](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/new/choose). Note this is a community project with no financial backing, and there is not assurance that your request would be eventually picked up by others and the requested feature would become available. The easiest way to get a feature into this project is to just develop it yourself.
+1 -1
View File
@@ -23,7 +23,7 @@ Both methods have their place and will continue to do so. You only need to use j
For simplicity reasons, this playbook recommends you to set up server delegation via a `/.well-known/matrix/server` file. However, that method may have some downsides that are not to your liking. Hence this guide about alternative ways to set up Server Delegation.
**Note**: as an alternative, it is possible to install the server such that it uses only the `matrix.example.com` domain (instead of identifying as the shorter base domain — `example.com`). This should be helpful if you are not in control of anything on the base domain (`example.com`). In this case, you would not need to configure server delegation, but you would need to add other configuration. For more information, see [How do I install on matrix.example.com without involving the base domain?](faq.md#how-do-i-install-on-matrixexamplecom-without-involving-the-base-domain) on our FAQ.
**Note**: as an alternative, it is possible to install the server such that it uses only the `matrix.example.com` domain (instead of identifying as the shorter base domain — `example.com`). This should be helpful if you are not in control of anything on the base domain (`example.com`). In this case, you would not need to configure server delegation, but you would need to add other configuration. For more information, see [How do I install on matrix.example.com without involving the base domain?](faq.md#how-do-i-install-on-matrix-example-com-without-involving-the-base-domain) on our FAQ.
## Server Delegation via a well-known file
+4 -4
View File
@@ -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-public-federation-api.tls.domains.main="example.com"
traefik.http.routers.matrix-synapse-public-federation-api.tls.domains.sans="*.example.com"
traefik.http.routers.matrix-synapse-federation-api.tls.domains.main="example.com"
traefik.http.routers.matrix-synapse-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-public-federation-api.tls.domains.main="example.com"
traefik.http.routers.matrix-synapse-public-federation-api.tls.domains.sans="*.example.com"
traefik.http.routers.matrix-synapse-federation-api.tls.domains.main="example.com"
traefik.http.routers.matrix-synapse-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: |
-5
View File
@@ -25,11 +25,6 @@ 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):
-2
View File
@@ -13,8 +13,6 @@ 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/`)
+3 -11
View File
@@ -1,13 +1,13 @@
<!--
SPDX-FileCopyrightText: 2018 - 2023 Slavi Pantaleev
SPDX-FileCopyrightText: 2018 - 2024 MDAD project contributors
SPDX-FileCopyrightText: 2018 Aaron Raimist
SPDX-FileCopyrightText: 2018-2023 Slavi Pantaleev
SPDX-FileCopyrightText: 2018-2024 MDAD project contributors
SPDX-FileCopyrightText: 2019 Edgars Voroboks
SPDX-FileCopyrightText: 2019 Michael Haak
SPDX-FileCopyrightText: 2020 Kevin Lanni
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
SPDX-FileCopyrightText: 2024 Mitja Jež
SPDX-FileCopyrightText: 2024 Nikita Chernyi
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
SPDX-License-Identifier: AGPL-3.0-or-later
-->
@@ -41,8 +41,6 @@ If you **don't** use SSH keys for authentication, but rather a regular password,
If you **do** use SSH keys for authentication, **and** use a non-root user to *become* root (sudo), you may need to add `-K` (`--ask-become-pass`) to all Ansible commands.
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.
There 2 ways to start the installation process — depending on whether you're [Installing a brand new server (without importing data)](#installing-a-brand-new-server-without-importing-data) or [Installing a server into which you'll import old data](#installing-a-server-into-which-youll-import-old-data).
**Note**: if you are migrating from an old server to a new one, take a look at [this guide](maintenance-migrating.md) instead. This is an easier and more straightforward way than installing a server and importing old data into it.
@@ -152,12 +150,6 @@ After completing the installation, you can:
* or come say Hi in our support room — [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com). You might learn something or get to help someone else new to Matrix hosting.
- or help make this playbook better by contributing (code, documentation, or [coffee/beer](https://liberapay.com/s.pantaleev/donate))
### Installing native Matrix clients on your computer
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/>
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!
### ⚠️ Keep the playbook and services up-to-date
While this playbook helps you to set up Matrix services and maintain them, it will **not** automatically run the maintenance task for you. You will need to update the playbook and re-run it **manually**.
-2
View File
@@ -76,8 +76,6 @@ 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.
-3
View File
@@ -105,9 +105,6 @@ 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
+1 -17
View File
@@ -89,23 +89,7 @@ To install Matrix services with this playbook, you would at least need 2 configu
For your convenience, we have prepared example files of them ([`vars.yml`](../examples/vars.yml) and [`hosts`](../examples/hosts)).
To start quickly based on these example files, go into the `matrix-docker-ansible-deploy` directory and initialize your configuration, either automatically or manually.
To initialize it automatically (with the base domain and server address pre-filled and secrets generated for you), run:
- either: `just add-inventory-host example.com 1.2.3.4` (if you have the [`just`](just.md) tool)
- or: `make add-inventory-host domain=example.com ip=1.2.3.4` (if you have the `make` program)
… 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).
Given a base domain of `example.com`, this creates:
- an entry for `matrix.example.com` (the Matrix server's default hostname: `matrix.` + your base domain) in the inventory hosts file (`inventory/hosts`)
- a configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) containing `matrix_domain: example.com` and automatically generated secrets
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.
To initialize it manually, follow the instructions below:
To start quickly based on these example files, go into the `matrix-docker-ansible-deploy` directory and follow the instructions below:
1. Create a directory to hold your configuration: `mkdir -p inventory/host_vars/matrix.example.com` where `example.com` is your "base domain"
2. Copy the sample configuration file: `cp examples/vars.yml inventory/host_vars/matrix.example.com/vars.yml`
+4
View File
@@ -97,6 +97,10 @@ This `register-user` script actually invokes the `mas-cli manage register-user`
To manage users and your homeserver more easily (via a web interface), you can install [Ketesa](configuring-playbook-ketesa.md) — a fully-featured admin UI covering users, rooms, media, sessions, and MAS management.
## Letting certain users register on your private server
If you'd rather **keep your server private** (public registration closed, as is the default), and **let certain people create accounts by themselves** (instead of creating user accounts manually like this), consider installing and making use of [matrix-registration](configuring-playbook-matrix-registration.md).
## Enabling public user registration
To **open up user registration publicly** (usually **not recommended**), add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
+1 -1
View File
@@ -31,6 +31,7 @@ Possibly outdated list of roles where self-building the Docker image is currentl
- `hydrogen`
- `cinny`
- `sable`
- `matrix-registration`
- `coturn`
- `matrix-corporal`
- `exim-relay`
@@ -41,7 +42,6 @@ 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`
@@ -44,19 +44,27 @@ Custom Nginx Configuration:
client_max_body_size 50M;
```
Then, under the 'Streams' page select `Add Stream`, this time for your federation traffic. Apply the configuration like this:
Again, under the 'Proxy Hosts' page select `Add Proxy Host`, this time for your federation traffic. Apply the proxy's configuration like this:
```md
# Details
# Matrix Federation proxy config
Incoming Port: 8448
Forward Host/IP: IP-ADDRESS-OF-YOUR-MATRIX
Domain Names: matrix.example.com:8448
Scheme: http
Forward Hostname/IP: IP-ADDRESS-OF-YOUR-MATRIX
Forward Port: 8449
Protocols: TCP
# SSL
# Either 'Request a new certificate' or select an existing one
SSL Certificate: matrix.example.com or *.example.com
Force SSL: true
HTTP/2 Support: true
# Advanced
# Allows NPM to listen on the federation port
Custom Nginx Configuration:
listen 8448 ssl http2;
client_max_body_size 50M;
```
Also note, NPM would need to be configured for whatever other services you are using. For example, you would need to create additional proxy hosts for `element.example.com` or `jitsi.example.com`, which would use the forwarding port `81`.
+1 -1
View File
@@ -2,7 +2,7 @@
# This variable acknowledges that you've reviewed breaking changes up to this version.
# The playbook will fail if this is outdated, guiding you through what changed.
# See the changelog: https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/CHANGELOG.md
matrix_playbook_migration_validated_version: v2026.05.18.0
matrix_playbook_migration_validated_version: v2026.04.24.0
# The bare domain name which represents your Matrix identity.
# Matrix user IDs for your server will be of the form (`@alice:example.com`).
Generated
+6 -24
View File
@@ -1,31 +1,15 @@
{
"nodes": {
"agru-src": {
"flake": false,
"locked": {
"lastModified": 1783761807,
"narHash": "sha256-EVOf5r2oN2WpgodgTQmGJDPJVhgidIMz97hF6TgCyX8=",
"owner": "etkecc",
"repo": "agru",
"rev": "9e2ca9d8fa904db04e8d34bf0e7b54287e850298",
"type": "github"
},
"original": {
"owner": "etkecc",
"repo": "agru",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
@@ -36,23 +20,21 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1783816212,
"narHash": "sha256-2aZisVTVGSFEk3MYcOiWQp3zvwyzbqpktB69Rcfp150=",
"lastModified": 1712578459,
"narHash": "sha256-r+rjtYIdwV7mEqFwbvaS7dZSH+3xNW9loR3Rh9C0ifI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3b32825de172d0bc85664f495edb096b10862524",
"rev": "b1a486be09c354e25a18689eb21425e43892e38c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"agru-src": "agru-src",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
+21 -35
View File
@@ -1,45 +1,31 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nixpkgs.url = "github:NixOS/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
agru-src = {
url = "github:etkecc/agru";
flake = false;
};
};
outputs =
{
self,
nixpkgs,
flake-utils,
agru-src,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
outputs = {
self,
nixpkgs,
flake-utils,
}:
flake-utils.lib.eachDefaultSystem
(
system: let
pkgs = import nixpkgs {
inherit system;
};
agru = pkgs.buildGo125Module {
pname = "agru";
version = "0.2.1";
src = agru-src;
vendorHash = null;
};
in
with pkgs;
{
devShells.default = mkShell {
buildInputs = [
just
mise
ansible
agru
];
shellHook = ''
echo "$(ansible --version)"
'';
};
}
with pkgs; {
devShells.default = mkShell {
buildInputs = [
just
mise
ansible
];
shellHook = ''
echo "$(ansible --version)"
'';
};
}
);
}
+1095 -1043
View File
File diff suppressed because it is too large Load Diff
+9 -9
View File
@@ -1,24 +1,24 @@
alabaster==1.0.0
babel==2.18.0
certifi==2026.6.17
charset-normalizer==3.4.9
click==8.4.2
certifi==2026.4.22
charset-normalizer==3.4.7
click==8.3.3
docutils==0.22.4
idna==3.18
idna==3.13
imagesize==2.0.0
Jinja2==3.1.6
linkify-it-py==2.1.0
markdown-it-py==4.2.0
MarkupSafe==3.0.3
mdit-py-plugins==0.6.1
mdit-py-plugins==0.6.0
mdurl==0.1.2
myst-parser==5.1.0
myst-parser==5.0.0
packaging==26.2
Pygments==2.20.0
PyYAML==6.0.3
requests==2.34.2
setuptools==83.0.0
snowballstemmer==3.1.1
requests==2.33.1
setuptools==82.0.1
snowballstemmer==3.0.1
Sphinx==9.1.0
sphinx-intl==2.3.2
sphinx-markdown-builder==0.6.10
File diff suppressed because it is too large Load Diff
+77 -65
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: matrix-docker-ansible-deploy \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-16 13:47+0000\n"
"POT-Creation-Date: 2026-05-07 11: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"
@@ -41,7 +41,7 @@ msgid "🎯 Purpose"
msgstr ""
#: ../../../README.md:7
msgid "This [Ansible](https://www.ansible.com/) playbook is meant to help you run your own [Matrix](http://matrix.org/) homeserver, along with the [various services](#-supported-services) related to that."
msgid "This [Ansible](https://www.ansible.com/) playbook is meant to help you run your own [Matrix](http://matrix.org/) homeserver, along with the [various services](#supported-services) related to that."
msgstr ""
#: ../../../README.md:9
@@ -257,7 +257,7 @@ msgid "[Link](docs/configuring-playbook-client-cinny.md)"
msgstr ""
#: ../../../README.md:0
msgid "[Sable](https://github.com/SableClient/Sable)"
msgid "[Sable](https://github.com/7w1/sable)"
msgstr ""
#: ../../../README.md:0
@@ -288,23 +288,11 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-client-fluffychat-web.md)"
msgstr ""
#: ../../../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
#: ../../../README.md:72
msgid "Server Components"
msgstr ""
#: ../../../README.md:75
#: ../../../README.md:74
msgid "Services that run on the server to make the various parts of your installation work."
msgstr ""
@@ -392,11 +380,11 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-matrix-rtc.md)"
msgstr ""
#: ../../../README.md:87
#: ../../../README.md:86
msgid "Authentication"
msgstr ""
#: ../../../README.md:89
#: ../../../README.md:88
msgid "Extend and modify how users are authenticated on your homeserver."
msgstr ""
@@ -436,6 +424,30 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-ldap-auth.md)"
msgstr ""
#: ../../../README.md:0
msgid "[matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) (advanced)"
msgstr ""
#: ../../../README.md:0
msgid "Proxy that handles Matrix registration requests and forwards them to LDAP"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-matrix-ldap-registration-proxy.md)"
msgstr ""
#: ../../../README.md:0
msgid "[matrix-registration](https://github.com/ZerataX/matrix-registration)"
msgstr ""
#: ../../../README.md:0
msgid "Simple python application to have a token based Matrix registration"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-matrix-registration.md)"
msgstr ""
#: ../../../README.md:0
msgid "[Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service)"
msgstr ""
@@ -460,11 +472,11 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-synapse-simple-antispam.md)"
msgstr ""
#: ../../../README.md:99
#: ../../../README.md:100
msgid "File Storage"
msgstr ""
#: ../../../README.md:101
#: ../../../README.md:102
msgid "Use alternative file storage to the default `media_store` folder."
msgstr ""
@@ -500,11 +512,11 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-matrix-media-repo.md)"
msgstr ""
#: ../../../README.md:109
#: ../../../README.md:110
msgid "Bridges"
msgstr ""
#: ../../../README.md:111
#: ../../../README.md:112
msgid "Bridges can be used to connect your Matrix installation with third-party communication networks."
msgstr ""
@@ -556,18 +568,6 @@ 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 ""
@@ -592,18 +592,6 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-bridge-mautrix-wsproxy.md)"
msgstr ""
#: ../../../README.md:0
msgid "[matrix-rustpush-bridge](https://github.com/jasonlaguidice/imessage)"
msgstr ""
#: ../../../README.md:0
msgid "Bridge to [iMessage](https://support.apple.com/messages) via Apple Push Notification service"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-bridge-rustpush.md)"
msgstr ""
#: ../../../README.md:0
msgid "[mautrix-bluesky](https://github.com/mautrix/bluesky)"
msgstr ""
@@ -641,7 +629,7 @@ msgid "[Link](docs/configuring-playbook-bridge-mautrix-googlechat.md)"
msgstr ""
#: ../../../README.md:0
msgid "[mautrix-meta](https://github.com/mautrix/meta)"
msgid "[mautrix-meta](https://github.com/mautrix/instagram)"
msgstr ""
#: ../../../README.md:0
@@ -688,6 +676,18 @@ 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 ""
@@ -840,6 +840,18 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-bot-matrix-reminder-bot.md)"
msgstr ""
#: ../../../README.md:0
msgid "[matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot)"
msgstr ""
#: ../../../README.md:0
msgid "Bot for invitations by creating and managing registration tokens"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-bot-matrix-registration-bot.md)"
msgstr ""
#: ../../../README.md:0
msgid "[maubot](https://github.com/maubot/maubot)"
msgstr ""
@@ -900,11 +912,11 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-bot-buscarron.md)"
msgstr ""
#: ../../../README.md:155
#: ../../../README.md:156
msgid "Administration"
msgstr ""
#: ../../../README.md:157
#: ../../../README.md:158
msgid "Services that help you in administrating and monitoring your Matrix installation."
msgstr ""
@@ -992,11 +1004,11 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-synapse-usage-exporter.md)"
msgstr ""
#: ../../../README.md:169
#: ../../../README.md:170
msgid "Misc"
msgstr ""
#: ../../../README.md:171
#: ../../../README.md:172
msgid "Various services that don't fit any other categories."
msgstr ""
@@ -1120,54 +1132,54 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-element-call.md)"
msgstr ""
#: ../../../README.md:186
#: ../../../README.md:187
msgid "🆕 Changes"
msgstr ""
#: ../../../README.md:188
#: ../../../README.md:189
msgid "This playbook evolves over time, sometimes with backward-incompatible changes."
msgstr ""
#: ../../../README.md:190
#: ../../../README.md:191
msgid "When updating the playbook, refer to [the changelog](CHANGELOG.md) to catch up with what's new."
msgstr ""
#: ../../../README.md:192
#: ../../../README.md:193
msgid "🆘 Support"
msgstr ""
#: ../../../README.md:194
#: ../../../README.md:195
msgid "Matrix room: [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com)"
msgstr ""
#: ../../../README.md:196
#: ../../../README.md:197
msgid "IRC channel: `#matrix-docker-ansible-deploy` on the [Libera Chat](https://libera.chat/) IRC network (irc.libera.chat:6697)"
msgstr ""
#: ../../../README.md:198
#: ../../../README.md:199
msgid "GitHub issues: [spantaleev/matrix-docker-ansible-deploy/issues](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues)"
msgstr ""
#: ../../../README.md:200
#: ../../../README.md:201
msgid "🌐 Translation"
msgstr ""
#: ../../../README.md:202
#: ../../../README.md:203
msgid "See the [i18n/README.md](i18n/README.md) file for more information about translation."
msgstr ""
#: ../../../README.md:204
#: ../../../README.md:205
msgid "Translations are still work in progress."
msgstr ""
#: ../../../README.md:206
#: ../../../README.md:207
msgid "🤝 Related"
msgstr ""
#: ../../../README.md:208
#: ../../../README.md:209
msgid "You may also be interested in [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) - another Ansible playbook for self-hosting non-Matrix services (see its [List of supported services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md))."
msgstr ""
#: ../../../README.md:210
#: ../../../README.md:211
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 ""
+9 -13
View File
@@ -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-02-13 10:32+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"
@@ -133,41 +133,37 @@ msgid "[Alternative architectures](alternative-architectures.md)"
msgstr ""
#: ../../../docs/README.md:79
msgid "[Configuring Synology DSM](configuring-playbook-synology.md)"
msgstr ""
#: ../../../docs/README.md:81
msgid "[Container images used by the playbook](container-images.md)"
msgstr ""
#: ../../../docs/README.md:83
#: ../../../docs/README.md:81
msgid "[Obtaining an Access Token](obtaining-access-tokens.md)"
msgstr ""
#: ../../../docs/README.md:85
#: ../../../docs/README.md:83
msgid "[Playbook tags](playbook-tags.md)"
msgstr ""
#: ../../../docs/README.md:87
#: ../../../docs/README.md:85
msgid "[Registering users](registering-users.md)"
msgstr ""
#: ../../../docs/README.md:89
#: ../../../docs/README.md:87
msgid "[Running `just` commands](just.md)"
msgstr ""
#: ../../../docs/README.md:91
#: ../../../docs/README.md:89
msgid "[Self-building](self-building.md)"
msgstr ""
#: ../../../docs/README.md:93
#: ../../../docs/README.md:91
msgid "[Uninstalling](uninstalling.md)"
msgstr ""
#: ../../../docs/README.md:95
#: ../../../docs/README.md:93
msgid "[Updating users passwords](updating-users-passwords.md)"
msgstr ""
#: ../../../docs/README.md:97
#: ../../../docs/README.md:95
msgid "[Using Ansible for the playbook](ansible.md)"
msgstr ""
+28 -32
View File
@@ -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 15:37+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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"
@@ -48,8 +48,8 @@ msgstr ""
msgid "If your distro ships with an Ansible version older than this, you may run into issues. Consider [Upgrading Ansible](#upgrading-ansible) or [using Ansible via Docker](#using-ansible-via-docker)."
msgstr ""
#: ../../../docs/ansible.md:28
msgid "One reason for the version requirement being as such is that the playbook by default installs Docker for you using [this Docker role](https://github.com/geerlingguy/ansible-role-docker) which [has a hard requirement on Ansible v2.15.1](https://github.com/geerlingguy/ansible-role-docker/commit/7f44a1d9ad8132819ea9852918bca5dab8757cd0). If you install Docker yourself another way, you can tell the playbook to skip running this role (by adding `matrix_playbook_docker_installation_enabled: false` to your `vars.yml` configuration). It may then be possible to get the playbook running on an older version of Ansible. Still, this is a complication and your mileage may vary. We recommend [upgrading Ansible](#upgrading-ansible) instead of going into uncharted territory."
#: ../../../docs/ansible.md:27
msgid "[!WARNING] One reason for the version requirement being as such is that the playbook by default installs Docker for you using [this Docker role](https://github.com/geerlingguy/ansible-role-docker) which [has a hard requirement on Ansible v2.15.1](https://github.com/geerlingguy/ansible-role-docker/commit/7f44a1d9ad8132819ea9852918bca5dab8757cd0). If you install Docker yourself another way, you can tell the playbook to skip running this role (by adding `matrix_playbook_docker_installation_enabled: false` to your `vars.yml` configuration). It may then be possible to get the playbook running on an older version of Ansible. Still, this is a complication and your mileage may vary. We recommend [upgrading Ansible](#upgrading-ansible) instead of going into uncharted territory."
msgstr ""
#: ../../../docs/ansible.md:30
@@ -101,96 +101,92 @@ msgid "You can either [run Ansible in a container on the Matrix server itself](#
msgstr ""
#: ../../../docs/ansible.md:53
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 "Running Ansible in a container on the Matrix server itself"
msgstr ""
#: ../../../docs/ansible.md:57
#: ../../../docs/ansible.md:55
msgid "To run Ansible in a (Docker) container on the Matrix server itself, you need to have a working Docker installation. Docker is normally installed by the playbook, so this may be a bit of a chicken and egg problem. To solve it:"
msgstr ""
#: ../../../docs/ansible.md:59
#: ../../../docs/ansible.md:57
msgid "you **either** need to install Docker manually first. Follow [the upstream instructions](https://docs.docker.com/engine/install/) for your distribution and consider setting `matrix_playbook_docker_installation_enabled: false` in your `vars.yml` file, to prevent the playbook from installing Docker"
msgstr ""
#: ../../../docs/ansible.md:60
#: ../../../docs/ansible.md:58
msgid "**or** you need to run the playbook in another way (e.g. [Running Ansible in a container on another computer (not the Matrix server)](#running-ansible-in-a-container-on-another-computer-not-the-matrix-server)) at least the first time around"
msgstr ""
#: ../../../docs/ansible.md:62
#: ../../../docs/ansible.md:60
msgid "Once you have a working Docker installation on the server, **clone the playbook** somewhere on the server and configure it as per usual (`inventory/hosts`, `inventory/host_vars/…`, etc.), as described in [configuring the playbook](configuring-playbook.md)."
msgstr ""
#: ../../../docs/ansible.md:64
#: ../../../docs/ansible.md:62
msgid "You would then need to add `ansible_connection=community.docker.nsenter` to the host line in `inventory/hosts`. This tells Ansible to connect to the \"remote\" machine by switching Linux namespaces with [nsenter](https://man7.org/linux/man-pages/man1/nsenter.1.html), instead of using SSH."
msgstr ""
#: ../../../docs/ansible.md:66
#: ../../../docs/ansible.md:64
msgid "Alternatively, you can leave your `inventory/hosts` as is and specify the connection type in **each** `ansible-playbook` call you do later, like this: `just install-all --connection=community.docker.nsenter` (or `ansible-playbook --connection=community.docker.nsenter …`)."
msgstr ""
#: ../../../docs/ansible.md:68
#: ../../../docs/ansible.md:90
#: ../../../docs/ansible.md:66
#: ../../../docs/ansible.md:88
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 "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
#: ../../../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
#: ../../../docs/ansible.md:84
msgid "Finally, you can execute `just` or `ansible-playbook …` (e.g. `ansible-playbook --connection=community.docker.nsenter …`) commands as per normal now."
msgstr ""
#: ../../../docs/ansible.md:88
#: ../../../docs/ansible.md:86
msgid "Running Ansible in a container on another computer (not the Matrix server)"
msgstr ""
#: ../../../docs/ansible.md:103
#: ../../../docs/ansible.md:101
msgid "The above command tries to mount an SSH key (`$HOME/.ssh/id_ed25519`) into the container (at `/root/.ssh/id_ed25519`). If your SSH key is at a different path (not in `$HOME/.ssh/id_ed25519`), adjust that part."
msgstr ""
#: ../../../docs/ansible.md:109
#: ../../../docs/ansible.md:107
msgid "Finally, you execute `just` or `ansible-playbook …` commands as per normal now."
msgstr ""
#: ../../../docs/ansible.md:111
#: ../../../docs/ansible.md:109
msgid "If you don't use SSH keys for authentication"
msgstr ""
#: ../../../docs/ansible.md:113
#: ../../../docs/ansible.md:111
msgid "If you don't use SSH keys for authentication, simply remove that whole line (`--mount type=bind,src$HOME/.ssh/id_ed25519,dst=/root/.ssh/id_ed25519,ro`)."
msgstr ""
#: ../../../docs/ansible.md:115
#: ../../../docs/ansible.md:113
msgid "To authenticate at your server using a password, you need to add a package. So, when you are in the shell of the ansible docker container (the previously used `docker run -it …` command), run:"
msgstr ""
#: ../../../docs/ansible.md:121
#: ../../../docs/ansible.md:119
msgid "Then, to be asked for the password whenever running an `ansible-playbook` command add `--ask-pass` to the arguments of the command."
msgstr ""
#: ../../../docs/ansible.md:123
#: ../../../docs/ansible.md:121
msgid "Resolve directory ownership issues"
msgstr ""
#: ../../../docs/ansible.md:125
#: ../../../docs/ansible.md:123
msgid "Because you're `root` in the container running Ansible and this likely differs from the owner (your regular user account) of the playbook directory outside of the container, certain playbook features which use `git` locally may report warnings such as:"
msgstr ""
#: ../../../docs/ansible.md:127
#: ../../../docs/ansible.md:125
msgid "fatal: unsafe repository ('/work' is owned by someone else) To add an exception for this directory, call: git config --global --add safe.directory /work"
msgstr ""
#: ../../../docs/ansible.md:131
#: ../../../docs/ansible.md:129
msgid "These errors can be resolved by making `git` trust the playbook directory by running `git config --global --add safe.directory /work`"
msgstr ""
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: matrix-docker-ansible-deploy \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-16 13:47+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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,59 +33,43 @@ msgid "The captcha mechanism used is Google's [ReCaptcha](https://www.google.com
msgstr ""
#: ../../../docs/configuring-captcha.md:18
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."
msgid "ReCaptcha"
msgstr ""
#: ../../../docs/configuring-captcha.md:20
msgid "ReCaptcha"
#: ../../../docs/configuring-captcha.md:46
msgid "Getting keys"
msgstr ""
#: ../../../docs/configuring-captcha.md:22
#: ../../../docs/configuring-captcha.md:48
msgid "Getting keys"
msgstr ""
#: ../../../docs/configuring-captcha.md:24
#: ../../../docs/configuring-captcha.md:50
msgid "Requires a site/secret key pair from:"
msgstr ""
#: ../../../docs/configuring-captcha.md:26
#: ../../../docs/configuring-captcha.md:24
msgid "<http://www.google.com/recaptcha/admin>"
msgstr ""
#: ../../../docs/configuring-captcha.md:28
#: ../../../docs/configuring-captcha.md:26
msgid "Must be a reCAPTCHA **v2** key using the \"I'm not a robot\" Checkbox option"
msgstr ""
#: ../../../docs/configuring-captcha.md:30
#: ../../../docs/configuring-captcha.md:28
msgid "Setting ReCaptcha keys"
msgstr ""
#: ../../../docs/configuring-captcha.md:32
#: ../../../docs/configuring-captcha.md:30
msgid "Once registered as above, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-captcha.md:46
#: ../../../docs/configuring-captcha.md:44
msgid "hCaptcha"
msgstr ""
#: ../../../docs/configuring-captcha.md:52
#: ../../../docs/configuring-captcha.md:50
msgid "<https://dashboard.hcaptcha.com/sites/new>"
msgstr ""
#: ../../../docs/configuring-captcha.md:54
#: ../../../docs/configuring-captcha.md:52
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,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-02-13 10:32+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"
@@ -96,8 +96,8 @@ msgstr ""
msgid "traffic destined for the IPv6 address of the server will be forwarded to the containers that handle (and publish) that specific port"
msgstr ""
#: ../../../docs/configuring-ipv6.md:60
msgid "Without enabling this and assuming you have IPv6 `AAAA` DNS records pointing to the server (see [Configuring DNS records for IPv6](#configuring-dns-records-for-ipv6)), IPv6 traffic will still be handled, but NAT64 will be used instead of NAT66. As such, containers will only have an IPv4 address and all IPv6 traffic that reaches them will seem to originate from a local IP. Containers also won't be able to make outgoing (even cross-container) IPv6 requests."
#: ../../../docs/configuring-ipv6.md:59
msgid "[!WARNING] Without enabling this and assuming you have IPv6 `AAAA` DNS records pointing to the server (see [Configuring DNS records for IPv6](#configuring-dns-records-for-ipv6)), IPv6 traffic will still be handled, but NAT64 will be used instead of NAT66. As such, containers will only have an IPv4 address and all IPv6 traffic that reaches them will seem to originate from a local IP. Containers also won't be able to make outgoing (even cross-container) IPv6 requests."
msgstr ""
#: ../../../docs/configuring-ipv6.md:63
@@ -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-02-13 10:32+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"
@@ -64,8 +64,8 @@ msgstr ""
msgid "The bot requires an access token to be able to connect to your homeserver. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md)."
msgstr ""
#: ../../../docs/configuring-playbook-alertmanager-receiver.md:38
msgid "Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone."
#: ../../../docs/configuring-playbook-alertmanager-receiver.md:37
msgid "[!WARNING] Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone."
msgstr ""
#: ../../../docs/configuring-playbook-alertmanager-receiver.md:40
@@ -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-05-07 14:00+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"
@@ -96,8 +96,8 @@ msgstr ""
msgid "This admin room is used to control who has access to your D4A deployment. The room stores this data in the control room state, so your bot must have sufficient power level to send custom state events. This is `50` by default (moderator, as Element clients call this power level)."
msgstr ""
#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:50
msgid "Anyone in this room can control the bot so it is important that you only invite trusted users to this room."
#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:49
msgid "[!WARNING] Anyone in this room can control the bot so it is important that you only invite trusted users to this room."
msgstr ""
#: ../../../docs/configuring-playbook-appservice-draupnir-for-all.md:52
@@ -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-04-03 11:56+0100\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 "🤖 [baibot](https://github.com/etkecc/baibot) (pronounced bye-bot) is a
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:17
msgid "It supports many [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md), including the privacy-first [Venice](#venice) we recommend, [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) models, and more."
msgid "It supports [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) models, as many well as other [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:19
@@ -183,321 +183,290 @@ msgid "Depending on your propensity for [GitOps](https://en.wikipedia.org/wiki/D
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:162
msgid "Before proceeding, we recommend reading the upstream documentation on [How to choose a provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#how-to-choose-a-provider) for a side-by-side of what each one can do. In short: we recommend [Venice](#venice), the most capable provider baibot supports and the only one that keeps no logs and trains on nothing. If you'd rather start with the most widely-used option, [OpenAI](#openai) is a solid, well-supported choice too."
msgid "Before proceeding, we recommend reading the upstream documentation on [How to choose a provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#how-to-choose-a-provider). In short, it's probably best to go with [OpenAI](#openai)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:164
msgid "Venice"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:166
msgid "[Venice](https://venice.ai/chat?ref=kpXDe6) _(ref link with a $10 bonus for you)_ is the provider we recommend. It's the most capable one baibot supports, and the only one that pairs that full feature set with real privacy: inference runs on Venice's own GPUs or on zero-data-retention partner hardware, so your prompts and replies are stored nowhere and never used for training. It serves both frontier proprietary models and the latest open-source ones."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:168
msgid "Venice also leaves the content policy to you instead of imposing its own. Its models answer without the reflexive refusals some hosted services apply, and both text and image generation can handle adult or otherwise sensitive subjects when you need them to. Image generation ships a `safe_mode` that blurs adult content by default; you can turn it off (see the sample config). This pairs naturally with the privacy above: a bot you can speak to candidly, that keeps nothing."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:170
msgid "Unlike the [OpenAI Compatible](#openai-compatible) provider (which can also point at Venice, but drops images and can't reach its audio or native image endpoints), this is a first-class integration that exposes Venice's full parameter set: text-generation with vision, file inputs, prompt caching and native web search, plus speech-to-text, text-to-speech, and image generation and editing."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:172
msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [Venice provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#venice) with the help of the playbook's preset variables."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:174
#: ../../../docs/configuring-playbook-bot-baibot.md:199
#: ../../../docs/configuring-playbook-bot-baibot.md:223
#: ../../../docs/configuring-playbook-bot-baibot.md:254
#: ../../../docs/configuring-playbook-bot-baibot.md:282
msgid "Here's an example **addition** to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:187
msgid "Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/venice`."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:189
msgid "Every Venice knob (sampling, caching, reasoning, web-search behavior, voice and image controls) has a matching `matrix_bot_baibot_config_agents_static_definitions_venice_config_*` variable. The [fully-commented sample config](https://github.com/etkecc/baibot/blob/main/docs/sample-provider-configs/venice.yml) explains every one of them."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:191
#: ../../../docs/configuring-playbook-bot-baibot.md:215
#: ../../../docs/configuring-playbook-bot-baibot.md:246
#: ../../../docs/configuring-playbook-bot-baibot.md:272
#: ../../../docs/configuring-playbook-bot-baibot.md:306
msgid "If you'd like to use more than one model, take a look at the [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset) section below."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:193
#: ../../../docs/configuring-playbook-bot-baibot.md:217
#: ../../../docs/configuring-playbook-bot-baibot.md:248
#: ../../../docs/configuring-playbook-bot-baibot.md:274
#: ../../../docs/configuring-playbook-bot-baibot.md:308
msgid "💡 You may also wish to use this new agent for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:195
msgid "Anthropic"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:197
#: ../../../docs/configuring-playbook-bot-baibot.md:166
msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [Anthropic provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#anthropic) with the help of the playbook's preset variables."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:219
#: ../../../docs/configuring-playbook-bot-baibot.md:168
#: ../../../docs/configuring-playbook-bot-baibot.md:192
#: ../../../docs/configuring-playbook-bot-baibot.md:223
#: ../../../docs/configuring-playbook-bot-baibot.md:251
msgid "Here's an example **addition** to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:184
#: ../../../docs/configuring-playbook-bot-baibot.md:215
#: ../../../docs/configuring-playbook-bot-baibot.md:241
#: ../../../docs/configuring-playbook-bot-baibot.md:275
msgid "If you'd like to use more than one model, take a look at the [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset) section below."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:186
#: ../../../docs/configuring-playbook-bot-baibot.md:217
#: ../../../docs/configuring-playbook-bot-baibot.md:243
#: ../../../docs/configuring-playbook-bot-baibot.md:277
msgid "💡 You may also wish to use this new agent for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:188
msgid "Groq"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:221
#: ../../../docs/configuring-playbook-bot-baibot.md:190
msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [Groq provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#groq) with the help of the playbook's preset variables."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:244
#: ../../../docs/configuring-playbook-bot-baibot.md:213
msgid "Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/groq`."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:250
#: ../../../docs/configuring-playbook-bot-baibot.md:219
msgid "Mistral"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:252
#: ../../../docs/configuring-playbook-bot-baibot.md:221
msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [🇫🇷 Mistral provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#mistral) with the help of the playbook's preset variables."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:270
#: ../../../docs/configuring-playbook-bot-baibot.md:239
msgid "Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/mistral`."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:276
#: ../../../docs/configuring-playbook-bot-baibot.md:245
msgid "OpenAI"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:278
#: ../../../docs/configuring-playbook-bot-baibot.md:247
msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [OpenAI provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openai) with the help of the playbook's preset variables."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:280
#: ../../../docs/configuring-playbook-bot-baibot.md:249
msgid "The OpenAI provider is **only meant to be used with OpenAI's official API** and compatibility with other services (which do not fully adhere to the OpenAI API spec completely) is limited. **If you're targeting an OpenAI-compatible service**, use the [OpenAI Compatible](#openai-compatible) provider instead."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:304
#: ../../../docs/configuring-playbook-bot-baibot.md:273
msgid "Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/openai`."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:310
#: ../../../docs/configuring-playbook-bot-baibot.md:279
msgid "OpenAI Compatible"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:312
#: ../../../docs/configuring-playbook-bot-baibot.md:281
msgid "You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [OpenAI Compatible provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openai-compatible) with the help of the playbook's preset variables."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:314
#: ../../../docs/configuring-playbook-bot-baibot.md:283
msgid "This provider allows you to use OpenAI-compatible API services like [OpenRouter](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openrouter), [Together AI](https://github.com/etkecc/baibot/blob/main/docs/providers.md#together-ai), etc."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:316
#: ../../../docs/configuring-playbook-bot-baibot.md:285
msgid "Some of these popular services already have **shortcut** providers (see [supported providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md#supported-providers) leading to this one behind the scenes — this make it easier to get started."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:318
#: ../../../docs/configuring-playbook-bot-baibot.md:287
msgid "As of this moment, the playbook does not include presets for any of these services, so you'll need to [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:320
#: ../../../docs/configuring-playbook-bot-baibot.md:289
msgid "Configuring additional agents (without a preset)"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:322
#: ../../../docs/configuring-playbook-bot-baibot.md:291
msgid "The Ansible role may be lacking preset variables for some [☁️ provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md), or you may wish to statically-define an agent on the same provider twice (or more) with different configuration."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:324
#: ../../../docs/configuring-playbook-bot-baibot.md:293
msgid "It's possible to inject your own agent configuration using the `matrix_bot_baibot_config_agents_static_definitions_custom` Ansible variable."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:326
#: ../../../docs/configuring-playbook-bot-baibot.md:295
msgid "You can also define providers at runtime, by chatting with the bot, so using Ansible is not a requirement."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:328
#: ../../../docs/configuring-playbook-bot-baibot.md:297
msgid "Below is an an **example** demonstrating **statically-defining agents via Ansible without using presets**:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:367
#: ../../../docs/configuring-playbook-bot-baibot.md:336
msgid "Because these are [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agents, they will be given a `static/` ID prefix and will be named `static/my-openai-gpt-3.5-turbo-agent` and `static/my-ollama-agent`, respectively."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:369
#: ../../../docs/configuring-playbook-bot-baibot.md:338
msgid "💡 To figure out what to put in the `config` section, refer to the [☁️ provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md) page, which contains **sample configuration YAML for each provider**."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:371
#: ../../../docs/configuring-playbook-bot-baibot.md:340
msgid "As with any [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md), defining them means they exist. To actually make use of them, they need to be configured as handlers globally or in a specific room — see [Mixing & matching models](https://github.com/etkecc/baibot/blob/main/docs/features.md#mixing--matching-models)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:373
#: ../../../docs/configuring-playbook-bot-baibot.md:342
msgid "💡 You may also wish to use these new agents for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:375
#: ../../../docs/configuring-playbook-bot-baibot.md:344
msgid "🤝 Configuring initial default handlers"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:377
#: ../../../docs/configuring-playbook-bot-baibot.md:346
msgid "This section is only useful if you're [🤖 Configuring agents via Ansible](#-configuring-agents-via-ansible), as it lets you put these agents to use as soon as the bot starts (by adjusting the bot's **initial global configuration**)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:379
#: ../../../docs/configuring-playbook-bot-baibot.md:348
msgid "If you're not configuring agents via Ansible, you can skip this section."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:381
#: ../../../docs/configuring-playbook-bot-baibot.md:350
msgid "This section is only useful the first time around. **Once initially configured the global configuration cannot be managed Ansible**, but only via bot commands."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:383
#: ../../../docs/configuring-playbook-bot-baibot.md:352
msgid "baibot supports [various purposes](https://github.com/etkecc/baibot/blob/main/docs/features.md):"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:385
#: ../../../docs/configuring-playbook-bot-baibot.md:354
msgid "[💬 text-generation](https://github.com/etkecc/baibot/blob/main/docs/features.md#-text-generation): communicating with you via text"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:387
#: ../../../docs/configuring-playbook-bot-baibot.md:356
msgid "[🦻 speech-to-text](https://github.com/etkecc/baibot/blob/main/docs/features.md#-speech-to-text): turning your voice messages into text"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:389
#: ../../../docs/configuring-playbook-bot-baibot.md:358
msgid "[🗣️ text-to-speech](https://github.com/etkecc/baibot/blob/main/docs/features.md#-text-to-speech): turning bot or users text messages into voice messages"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:391
#: ../../../docs/configuring-playbook-bot-baibot.md:360
msgid "[🖌️ image-generation](https://github.com/etkecc/baibot/blob/main/docs/features.md#-image-generation): generating images based on instructions"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:393
#: ../../../docs/configuring-playbook-bot-baibot.md:362
msgid "❓ catch-all: special purposes, indicating use as a fallback (when no specific handler is configured)"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:395
#: ../../../docs/configuring-playbook-bot-baibot.md:364
msgid "[Mixing & matching models](https://github.com/etkecc/baibot/blob/main/docs/features.md#mixing--matching-models) is made possible by the bot's ability to have different [🤝 handlers](https://github.com/etkecc/baibot/blob/main/docs/configuration/handlers.md) configured for different purposes."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:397
#: ../../../docs/configuring-playbook-bot-baibot.md:366
msgid "This configuration can be done as a global fallback, or per-room. Both of these [🛠️ configurations](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md) are managed at runtime (viat chat), but **the global configuration can have some initial defaults configured via Ansible**."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:399
#: ../../../docs/configuring-playbook-bot-baibot.md:368
msgid "You can configure the **initial values** for these via Ansible, via the `matrix_bot_baibot_config_initial_global_config_handler_*` variables."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:401
#: ../../../docs/configuring-playbook-bot-baibot.md:370
msgid "Example **additional** `vars.yml` configuration:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:418
#: ../../../docs/configuring-playbook-bot-baibot.md:387
msgid "**Note**: these are initial defaults for the bot's global configuration. As such, changing any of these values subsequently has no effect on the bot's behavior. **Once initially configured the global configuration cannot be managed Ansible**, but only via bot commands."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:420
#: ../../../docs/configuring-playbook-bot-baibot.md:389
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:422
#: ../../../docs/configuring-playbook-bot-baibot.md:391
msgid "There are some additional things you may wish to configure about the bot."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:424
#: ../../../docs/configuring-playbook-bot-baibot.md:393
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:426
#: ../../../docs/configuring-playbook-bot-baibot.md:395
msgid "`roles/custom/matrix-bot-baibot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:427
#: ../../../docs/configuring-playbook-bot-baibot.md:396
msgid "`roles/custom/matrix-bot-baibot/templates/config.yaml.j2` for the bot's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bot_baibot_configuration_extension_yaml` variable"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:429
#: ../../../docs/configuring-playbook-bot-baibot.md:398
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:431
#: ../../../docs/configuring-playbook-bot-baibot.md:400
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:438
#: ../../../docs/configuring-playbook-bot-baibot.md:407
msgid "**Notes**:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:440
#: ../../../docs/configuring-playbook-bot-baibot.md:409
msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account when password authentication is used."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:442
#: ../../../docs/configuring-playbook-bot-baibot.md:411
msgid "If you're using access-token authentication, the bot account must already exist and the configured token + device ID must match that account. This mode is mainly for MAS/OIDC setups where password-based bot login is not suitable."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:444
#: ../../../docs/configuring-playbook-bot-baibot.md:413
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:446
#: ../../../docs/configuring-playbook-bot-baibot.md:415
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:448
#: ../../../docs/configuring-playbook-bot-baibot.md:417
msgid "If you change the bot password (`matrix_bot_baibot_config_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [Ketesa](configuring-playbook-ketesa.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password. (This note applies to password authentication mode.)"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:450
#: ../../../docs/configuring-playbook-bot-baibot.md:419
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:452
#: ../../../docs/configuring-playbook-bot-baibot.md:421
msgid "To use the bot, invite it to any existing Matrix room (`/invite @baibot:example.com` where `example.com` is your base domain, not the `matrix.` domain)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:454
#: ../../../docs/configuring-playbook-bot-baibot.md:423
msgid "If you're an allowed bot [👥 user](https://github.com/etkecc/baibot/blob/main/docs/access.md#user) (see [👥 Initial users configuration](#-initial-users-configuration)), the bot will accept your invitation and join the room."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:456
#: ../../../docs/configuring-playbook-bot-baibot.md:425
msgid "After joining, the bot will introduce itself and show information about the [✨ features](https://github.com/etkecc/baibot/blob/main/docs/features.md) that are enabled for it."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:458
#: ../../../docs/configuring-playbook-bot-baibot.md:427
msgid "If you've [🤖 configured one or more agents via Ansible](#-configuring-agents-via-ansible) and have [🤝 configured initial default handlers](#configuring-initial-default-handlers), the bot will immediately be able to make use of these agents for this new room. Otherwise, you will need to configure agents and/or handlers via chat commands."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:460
#: ../../../docs/configuring-playbook-bot-baibot.md:429
msgid "Send `!bai help` to the bot in the room to see the available commands."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:462
#: ../../../docs/configuring-playbook-bot-baibot.md:431
msgid "You can also refer to the upstream [baibot](https://github.com/etkecc/baibot) project's documentation."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:464
#: ../../../docs/configuring-playbook-bot-baibot.md:433
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:466
#: ../../../docs/configuring-playbook-bot-baibot.md:435
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-bot-baibot`."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:468
#: ../../../docs/configuring-playbook-bot-baibot.md:437
msgid "Increase logging verbosity"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:470
#: ../../../docs/configuring-playbook-bot-baibot.md:439
msgid "The default logging level for this service is `info`. If you want to increase the verbosity to `debug` (or even `trace`), add the following configuration to your `vars.yml` file and re-run the playbook:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:484
#: ../../../docs/configuring-playbook-bot-baibot.md:453
msgid "**Alternatively**, you can use a single variable to set the logging level for all of the above (bot + all libraries):"
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-05-07 14:00+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"
@@ -72,8 +72,8 @@ msgstr ""
msgid "Using your own account, create a new invite only room that you will use to manage the bot. This is the room where you will see the status of the bot and where you will send commands to the bot, such as the command to ban a user from another room."
msgstr ""
#: ../../../docs/configuring-playbook-bot-draupnir.md:38
msgid "Anyone in this room can control the bot so it is important that you only invite trusted users to this room."
#: ../../../docs/configuring-playbook-bot-draupnir.md:37
msgid "[!WARNING] Anyone in this room can control the bot so it is important that you only invite trusted users to this room."
msgstr ""
#: ../../../docs/configuring-playbook-bot-draupnir.md:40
@@ -228,8 +228,8 @@ msgstr ""
msgid "Manual access to Synapse's Admin APIs requires an access token for a homeserver admin account. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-draupnir.md:165
msgid "Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone."
#: ../../../docs/configuring-playbook-bot-draupnir.md:164
msgid "[!WARNING] Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone."
msgstr ""
#: ../../../docs/configuring-playbook-bot-draupnir.md:167
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: matrix-docker-ansible-deploy \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-23 05:22+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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"
@@ -16,22 +16,158 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../docs/configuring-playbook-bot-go-neb.md:12
msgid "Setting up Go-NEB (optional, removed)"
#: ../../../docs/configuring-playbook-bot-go-neb.md:11
msgid "Setting up Go-NEB (optional, unmaintained)"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:14
msgid "🪦 The playbook used to be able to install and configure [Go-NEB](https://github.com/matrix-org/go-neb), but no longer includes this component as it has been discontinued."
#: ../../../docs/configuring-playbook-bot-go-neb.md:13
msgid "**Note**: [Go-NEB](https://github.com/matrix-org/go-neb) is now an archived (**unmaintained**) project. We recommend not bothering with installing it. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md). Consider using that bot instead of this one."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:16
msgid "While not a 1:1 replacement, the bot's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md)."
#: ../../../docs/configuring-playbook-bot-go-neb.md:15
msgid "The playbook can install and configure [Go-NEB](https://github.com/matrix-org/go-neb) for you."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:18
msgid "Uninstalling Go-NEB manually"
#: ../../../docs/configuring-playbook-bot-go-neb.md:17
msgid "Go-NEB is a Matrix bot written in Go. It is the successor to Matrix-NEB, the original Matrix bot written in Python."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:20
msgid "If you still have the Go-NEB component installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:"
#: ../../../docs/configuring-playbook-bot-go-neb.md:19
msgid "See the project's [documentation](https://github.com/matrix-org/go-neb/blob/master/README.md) to learn what it does and why it might be useful to you."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:21
msgid "Prerequisites"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:23
msgid "Register the bot account"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:25
msgid "The playbook does not automatically create users for you. You **need to register the bot user manually** before setting up the bot."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:27
msgid "Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:29
msgid "You can use the playbook to [register a new user](registering-users.md):"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:35
msgid "Obtain an access token"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:37
msgid "The bot requires an access token to be able to connect to your homeserver. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:39
msgid "[!WARNING] Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:42
msgid "Adjusting DNS records"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:44
msgid "By default, this playbook installs Go-NEB on the `goneb.` subdomain (`goneb.example.com`) and requires you to create a CNAME record for `goneb`, which targets `matrix.example.com`."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:46
msgid "When setting, replace `example.com` with your own."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:48
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:50
msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file. Make sure to replace `ACCESS_TOKEN_FOR_GONEB_HERE` and `ACCESS_TOKEN_FOR_ANOTHER_GONEB_HERE` with the ones created [above](#obtain-an-access-token)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:214
msgid "Adjusting the Go-NEB URL (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:216
msgid "By tweaking the `matrix_bot_go_neb_hostname` and `matrix_bot_go_neb_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:218
msgid "Example additional configuration for your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:229
msgid "After changing the domain, **you may need to adjust your DNS** records to point the Go-NEB domain to the Matrix server."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:231
msgid "If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:233
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:235
msgid "There are some additional things you may wish to configure about the bot."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:237
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:239
msgid "`roles/custom/matrix-bot-go-neb/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:240
msgid "`roles/custom/matrix-bot-go-neb/templates/config.yaml.j2` for the bot's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bot_go_neb_configuration_extension_yaml` variable"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:242
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:244
msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:251
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:253
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:255
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:257
msgid "To use the bot, invite it to any existing Matrix room (`/invite @bot.go-neb:example.com` where `example.com` is your base domain, not the `matrix.` domain). Make sure you are granted with the sufficient permission if you are not the room owner."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:259
msgid "Basic usage is like this: `!echo hi` or `!imgur puppies` or `!giphy matrix`"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:261
msgid "If you enabled the github_cmd service, send `!github help` to the bot in the room to see the available commands."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:263
msgid "You can also refer to the upstream [Documentation](https://github.com/matrix-org/go-neb)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:265
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-bot-go-neb.md:267
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-bot-go-neb`."
msgstr ""
@@ -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-04-03 11:56+0100\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"
@@ -16,18 +16,118 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:22
msgid "Setting up matrix-registration-bot (optional, removed)"
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:13
msgid "Setting up matrix-registration-bot (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:24
msgid "🪦 The playbook used to be able to install and configure [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot), but no longer includes this component, as it has been unmaintained."
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:15
msgid "The playbook can install and configure [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) for you."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:26
msgid "Uninstalling the component manually"
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:17
msgid "The bot allows you to easily **create and manage registration tokens** aka. invitation codes. It can be used for an invitation-based server, where you invite someone by sending them a registration token (tokens look like this: `rbalQ0zkaDSRQCOp`). They can register as per normal but have to provide a valid registration token in the final step of the registration process."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:28
msgid "If you still have matrix-registration-bot 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:"
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:19
msgid "See the project's [documentation](https://github.com/moan0s/matrix-registration-bot/blob/master/README.md) to learn what it does and why it might be useful to you."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:21
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:23
msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:46
msgid "The bot account will be created automatically."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:48
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:50
msgid "There are some additional things you may wish to configure about the bot."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:52
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:54
msgid "`roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:55
msgid "`roles/custom/matrix-bot-matrix-registration-bot/templates/config.yaml.j2` for the bridge's default configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:57
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:59
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:66
msgid "**Notes**:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:68
msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:70
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:72
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:74
msgid "If you change the bot password (`matrix_bot_matrix_registration_bot_bot_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [Ketesa](configuring-playbook-ketesa.md) to change it, and then update `matrix_bot_matrix_registration_bot_bot_password` to let the bot know its new password."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:76
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:78
msgid "To use the bot, start a chat with `@bot.matrix-registration-bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:80
msgid "Send `help` to the bot to see the available commands."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:82
msgid "You can also refer to the upstream [Usage documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:84
msgid "If you have any questions, or if you need help setting it up, read the [troubleshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md) or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:86
msgid "To clean the cache (session & encryption data) after you changed the bot's username, changed the login method from access_token to password etc… you can use:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:92
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:94
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-bot-matrix-registration-bot`."
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:96
msgid "Increase logging verbosity"
msgstr ""
#: ../../../docs/configuring-playbook-bot-matrix-registration-bot.md:98
msgid "The default logging level for this component is `INFO`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:"
msgstr ""
@@ -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-04-03 11:56+0100\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"
@@ -177,8 +177,8 @@ msgstr ""
msgid "Alternatively, you can refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md). Be aware that you'd better use the **Obtain an access token via curl** method (not **Obtain an access token via Element Web**) as the latter will causes issues to your bot in encrypted rooms. Read [more](https://docs.mau.fi/maubot/usage/basic.html#creating-clients)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-maubot.md:124
msgid "Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone."
#: ../../../docs/configuring-playbook-bot-maubot.md:123
msgid "[!WARNING] Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone."
msgstr ""
#: ../../../docs/configuring-playbook-bot-maubot.md:126
@@ -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-04-03 11:56+0100\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"
@@ -60,9 +60,9 @@ msgstr ""
msgid "The bot requires an access token to be able to connect to your homeserver. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-mjolnir.md:39
#: ../../../docs/configuring-playbook-bot-mjolnir.md:64
msgid "Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone."
#: ../../../docs/configuring-playbook-bot-mjolnir.md:38
#: ../../../docs/configuring-playbook-bot-mjolnir.md:63
msgid "[!WARNING] Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone."
msgstr ""
#: ../../../docs/configuring-playbook-bot-mjolnir.md:41
@@ -142,8 +142,8 @@ msgstr ""
msgid "Using your own account, create a new invite only room that you will use to manage the bot. This is the room where you will see the status of the bot and where you will send commands to the bot, such as the command to ban a user from another room."
msgstr ""
#: ../../../docs/configuring-playbook-bot-mjolnir.md:87
msgid "Anyone in this room can control the bot so it is important that you only invite trusted users to this room."
#: ../../../docs/configuring-playbook-bot-mjolnir.md:86
msgid "[!WARNING] Anyone in this room can control the bot so it is important that you only invite trusted users to this room."
msgstr ""
#: ../../../docs/configuring-playbook-bot-mjolnir.md:89
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: matrix-docker-ansible-deploy \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-16 13:47+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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"
@@ -73,7 +73,7 @@ msgid "`roles/custom/matrix-bridge-appservice-discord/defaults/main.yml` for som
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:47
msgid "`roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_appservice_discord_configuration_extension_yaml` variable"
msgid "`roles/custom/matrix-bridge-appservice-discord/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_discord_configuration_extension_yaml` variable"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:49
@@ -150,7 +150,7 @@ msgid "To get started with Portal Bridging:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:101
msgid "To invite the bot to Discord, retrieve the invite link from the `{{ matrix_bridge_appservice_discord_config_path }}/invite_link` file on the server (this defaults to `/matrix/appservice-discord/config/invite_link`). You need to peek at the file on the server via SSH, etc., because it's not available via HTTP(S)."
msgid "To invite the bot to Discord, retrieve the invite link from the `{{ matrix_appservice_discord_config_path }}/invite_link` file on the server (this defaults to `/matrix/appservice-discord/config/invite_link`). You need to peek at the file on the server via SSH, etc., because it's not available via HTTP(S)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-discord.md:102
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: matrix-docker-ansible-deploy \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-16 13:47+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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"
@@ -57,7 +57,7 @@ msgid "`roles/custom/matrix-bridge-appservice-irc/defaults/main.yml` for some va
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:79
msgid "`roles/custom/matrix-bridge-appservice-irc/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_appservice_irc_configuration_extension_yaml` variable"
msgid "`roles/custom/matrix-bridge-appservice-irc/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_irc_configuration_extension_yaml` variable"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-irc.md:81
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: matrix-docker-ansible-deploy \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-16 13:47+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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,21 +17,109 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:10
msgid "Setting up Appservice Kakaotalk bridging (optional, removed)"
msgid "Setting up Appservice Kakaotalk bridging (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:12
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."
msgid "The playbook can install and configure [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) for you, for bridging to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG). This bridge is based on [node-kakao](https://github.com/storycraft/node-kakao) (now unmaintained) and some [mautrix-facebook](https://github.com/mautrix/facebook) code."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:14
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."
msgid "See the project's [documentation](https://src.miscworks.net/fair/matrix-appservice-kakaotalk/src/branch/master/README.md) to learn what it does and why it might be useful to you."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md:16
msgid "Uninstalling the component manually"
msgid "[!WARNING] There have been recent reports (~2022-09-16) that **using this bridge may get your account banned**."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-kakaotalk.md: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:"
#: ../../../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:"
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-16 13:47+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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"
@@ -57,7 +57,7 @@ msgid "Adjusting the Heisenbridge URL (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:40
msgid "By tweaking the `matrix_bridge_heisenbridge_hostname` and `matrix_bridge_heisenbridge_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one."
msgid "By tweaking the `matrix_heisenbridge_hostname` and `matrix_heisenbridge_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-heisenbridge.md:42
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: matrix-docker-ansible-deploy \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-16 13:47+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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,103 +56,95 @@ 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: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:"
#: ../../../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:51
msgid "These are experimental homeserver-wide features (as is Hookshot's encryption support itself), so enable them deliberately."
#: ../../../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:53
msgid "For each of the services (GitHub, GitLab, Jira, Figma, and generic webhooks) fill in the respective variables `matrix_bridge_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_bridge_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
#: ../../../docs/configuring-playbook-bridge-hookshot.md:47
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:59
#: ../../../docs/configuring-playbook-bridge-hookshot.md:49
msgid "There are some additional things you may wish to configure about the bridge."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:61
#: ../../../docs/configuring-playbook-bridge-hookshot.md:51
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:63
#: ../../../docs/configuring-playbook-bridge-hookshot.md:53
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: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_bridge_hookshot_configuration_extension_yaml` and `matrix_bridge_hookshot_registration_extension_yaml` variables"
#: ../../../docs/configuring-playbook-bridge-hookshot.md:54
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:66
#: ../../../docs/configuring-playbook-bridge-hookshot.md:56
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:68
#: ../../../docs/configuring-playbook-bridge-hookshot.md:58
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:70
#: ../../../docs/configuring-playbook-bridge-hookshot.md:60
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:77
#: ../../../docs/configuring-playbook-bridge-hookshot.md:67
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:79
#: ../../../docs/configuring-playbook-bridge-hookshot.md:69
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:81
#: ../../../docs/configuring-playbook-bridge-hookshot.md:71
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:83
#: ../../../docs/configuring-playbook-bridge-hookshot.md:73
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:85
#: ../../../docs/configuring-playbook-bridge-hookshot.md:75
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:87
#: ../../../docs/configuring-playbook-bridge-hookshot.md:77
msgid "Send `!hookshot help` to the bot to see the available commands."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:89
#: ../../../docs/configuring-playbook-bridge-hookshot.md:79
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:91
#: ../../../docs/configuring-playbook-bridge-hookshot.md:81
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:93
#: ../../../docs/configuring-playbook-bridge-hookshot.md:83
msgid "Reset crypto store"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:95
#: ../../../docs/configuring-playbook-bridge-hookshot.md:85
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:101
#: ../../../docs/configuring-playbook-bridge-hookshot.md:91
msgid "More setup documentation"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:103
#: ../../../docs/configuring-playbook-bridge-hookshot.md:93
msgid "URLs for bridges setup"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:105
#: ../../../docs/configuring-playbook-bridge-hookshot.md:95
msgid "Unless indicated otherwise, the following endpoints are reachable on your `matrix.` subdomain (if the feature is enabled)."
msgstr ""
@@ -181,7 +173,7 @@ msgid "`/hookshot/webhooks/`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
msgid "`matrix_bridge_hookshot_webhook_endpoint`"
msgid "`matrix_hookshot_webhook_endpoint`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
@@ -197,7 +189,7 @@ msgid "`/hookshot/webhooks/webhook`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
msgid "`matrix_bridge_hookshot_generic_endpoint`"
msgid "`matrix_hookshot_generic_endpoint`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
@@ -213,7 +205,7 @@ msgid "`/hookshot/webhooks/oauth`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
msgid "`matrix_bridge_hookshot_github_oauth_endpoint`"
msgid "`matrix_hookshot_github_oauth_endpoint`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
@@ -229,7 +221,7 @@ msgid "`/hookshot/webhooks/jira/oauth`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
msgid "`matrix_bridge_hookshot_jira_oauth_endpoint`"
msgid "`matrix_hookshot_jira_oauth_endpoint`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
@@ -245,7 +237,7 @@ msgid "`/hookshot/webhooks/figma/webhook`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
msgid "`matrix_bridge_hookshot_figma_endpoint`"
msgid "`matrix_hookshot_figma_endpoint`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
@@ -261,7 +253,7 @@ msgid "`/hookshot/_matrix/app/`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
msgid "`matrix_bridge_hookshot_appservice_endpoint`"
msgid "`matrix_hookshot_appservice_endpoint`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
@@ -277,105 +269,105 @@ msgid "`/hookshot/widgetapi/`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
msgid "`matrix_bridge_hookshot_widgets_endpoint`"
msgid "`matrix_hookshot_widgets_endpoint`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:0
msgid "Widgets"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:117
msgid "Also see the various `matrix_bridge_hookshot_container_labels_*` variables in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml), which expose URLs publicly."
#: ../../../docs/configuring-playbook-bridge-hookshot.md:107
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:119
msgid "The different listeners are also reachable *internally* in the docker-network via the container's name (configured by `matrix_bridge_hookshot_container_url`) and on different ports (e.g. `matrix_bridge_hookshot_appservice_port`). Read [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml) in detail for more info."
#: ../../../docs/configuring-playbook-bridge-hookshot.md:109
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:121
#: ../../../docs/configuring-playbook-bridge-hookshot.md:111
msgid "Manage GitHub Private Key with aux role"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:123
#: ../../../docs/configuring-playbook-bridge-hookshot.md:113
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:125
msgid "copy the *contents* of the downloaded file and set the variable `matrix_bridge_hookshot_github_private_key` to the contents (see example in [main.yml](../roles/custom/matrix-bridge-hookshot/defaults/main.yml))."
#: ../../../docs/configuring-playbook-bridge-hookshot.md:115
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:126
msgid "somehow copy the file to the path `{{ matrix_bridge_hookshot_base_path }}/{{ matrix_bridge_hookshot_github_private_key_file }}` (default: `/matrix/hookshot/private-key.pem`) on the server manually."
#: ../../../docs/configuring-playbook-bridge-hookshot.md:116
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:127
#: ../../../docs/configuring-playbook-bridge-hookshot.md:117
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:129
msgid "To use the `aux` role, make sure the `matrix_bridge_hookshot_github_private_key` variable is empty. Then add the following configuration to your `vars.yml` file:"
#: ../../../docs/configuring-playbook-bridge-hookshot.md:119
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:140
#: ../../../docs/configuring-playbook-bridge-hookshot.md:130
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:142
#: ../../../docs/configuring-playbook-bridge-hookshot.md:132
msgid "Enable metrics"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:144
#: ../../../docs/configuring-playbook-bridge-hookshot.md:134
msgid "The playbook can enable and configure the metrics of the service for you."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:146
#: ../../../docs/configuring-playbook-bridge-hookshot.md:136
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:148
#: ../../../docs/configuring-playbook-bridge-hookshot.md:138
msgid "To enable the metrics, add the following configuration to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:155
#: ../../../docs/configuring-playbook-bridge-hookshot.md:145
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:161
#: ../../../docs/configuring-playbook-bridge-hookshot.md:151
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:168
msgid "To `matrix_bridge_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."
#: ../../../docs/configuring-playbook-bridge-hookshot.md:158
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:170
#: ../../../docs/configuring-playbook-bridge-hookshot.md:160
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:172
#: ../../../docs/configuring-playbook-bridge-hookshot.md:162
msgid "Enable Grafana (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:174
#: ../../../docs/configuring-playbook-bridge-hookshot.md:164
msgid "Probably you wish to enable Grafana along with Prometheus for generating graphs of the metrics."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:176
#: ../../../docs/configuring-playbook-bridge-hookshot.md:166
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:178
#: ../../../docs/configuring-playbook-bridge-hookshot.md:168
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:180
#: ../../../docs/configuring-playbook-bridge-hookshot.md:170
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:182
#: ../../../docs/configuring-playbook-bridge-hookshot.md:172
msgid "Increase logging verbosity"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-hookshot.md:184
#: ../../../docs/configuring-playbook-bridge-hookshot.md:174
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-07-16 13:47+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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"
@@ -57,7 +57,7 @@ msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:49
msgid "`roles/custom/matrix-bridge-sms/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_sms_configuration_extension_yaml` variable"
msgid "`roles/custom/matrix-bridge-sms/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_sms_bridge_configuration_extension_yaml` variable"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-matrix-bridge-sms.md:51
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: matrix-docker-ansible-deploy \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-16 13:47+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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"
@@ -41,11 +41,11 @@ msgid "To enable the bridge, add the following configuration to your `inventory/
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:27
msgid "**Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_bridge_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively."
msgid "**Note**: for bridging to Meta's Messenger or Instagram, you would need to add `meta` with an underscore symbol (`_`) or hyphen (`-`) based on the context as prefix to each `SERVICENAME`; add `_` to variables (as in `matrix_mautrix_meta_messenger_configuration_extension_yaml` for example) and `-` to paths of the configuration files (as in `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2`), respectively."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:29
msgid "There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_bridge_mautrix_telegram_api_id` and `matrix_bridge_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges."
msgid "There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_mautrix_telegram_api_id` and `matrix_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:31
@@ -110,7 +110,7 @@ msgid "**for all bridges with relay mode support**:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:95
msgid "You can only have one `matrix_bridge_mautrix_SERVICENAME_configuration_extension_yaml` definition in `vars.yml` per bridge, so if you need multiple pieces of configuration there, just merge them like this:"
msgid "You can only have one `matrix_mautrix_SERVICENAME_configuration_extension_yaml` definition in `vars.yml` per bridge, so if you need multiple pieces of configuration there, just merge them like this:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:109
@@ -154,173 +154,141 @@ msgid "If you have issues with a service, and are requesting support, the higher
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:141
msgid "Expose the bridge's API (for Mautrix Manager and similar tools)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:143
msgid "Each mautrix bridge runs an HTTP API which tools like [Mautrix Manager](https://github.com/mautrix/manager) can use to help you log into the bridge. This is especially handy for bridges where logging in manually is cumbersome (like [mautrix-gmessages](configuring-playbook-bridge-mautrix-gmessages.md))."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:145
msgid "By default, the playbook exposes this API publicly at `https://matrix.example.com/bridges/SERVICENAME` (for example, `https://matrix.example.com/bridges/gmessages`). Such tools authenticate to the bridge with your own Matrix access token, so you never need to share any bridge secret with them."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:147
msgid "To make discovery easier, the playbook also serves a `/.well-known/matrix/mautrix` file which advertises all your exposed bridges. Mautrix Manager reads this file and offers your bridges automatically, so you don't need to enter their URLs by hand."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:149
msgid "This is all enabled by default. To **disable exposing the API for all bridges**, add the following configuration to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:155
msgid "**Alternatively**, to disable it for a specific bridge:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:161
msgid "If you run additional bridges on the same server which are not managed by this playbook and would like compatible tools to discover them as well, you can advertise their base URLs in the `/.well-known/matrix/mautrix` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:168
msgid "Only list bridges hosted on (and connected to) this server here, as compatible tools will send your Matrix access token to them. For bridges on other servers, take a look at the `fi.mau.external_bridge_servers` property described in the [Mautrix Manager](https://github.com/mautrix/manager) documentation, which you can add via `matrix_static_files_file_matrix_mautrix_configuration_extension_json`."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:170
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:172
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:143
msgid "There are some additional things you may wish to configure about the bridge."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:174
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:145
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:176
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:147
msgid "`roles/custom/matrix-bridge-mautrix-SERVICENAME/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:177
msgid "`roles/custom/matrix-bridge-mautrix-SERVICENAME/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_bridge_mautrix_SERVICENAME_configuration_extension_yaml` variable"
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:148
msgid "`roles/custom/matrix-bridge-mautrix-SERVICENAME/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_mautrix_SERVICENAME_configuration_extension_yaml` variable"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:179
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:150
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:181
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:152
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:188
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:159
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:190
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:161
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:192
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:163
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:194
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:165
msgid "To use the bridge, you need to start a chat with `@SERVICENAMEbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:196
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:167
msgid "For details about the next steps, refer to each bridge's individual documentation page."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:198
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:169
msgid "Send `help` to the bot to see the available commands."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:200
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:171
msgid "If you run into trouble, check the [Troubleshooting](#troubleshooting) section below."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:202
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:173
msgid "Set up Double Puppeting (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:204
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:175
msgid "After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:206
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:177
msgid "To set it up, you have 2 ways of going about it."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:208
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:179
msgid "Method 1: automatically, by enabling Appservice Double Puppet (recommended)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:210
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:181
msgid "To set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html), you could enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:212
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:183
msgid "Appservice Double Puppet is a homeserver appservice through which bridges (and potentially other services) can impersonate any user on the homeserver."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:214
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:185
msgid "To enable the Appservice Double Puppet service, add the following configuration to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:220
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:191
msgid "When enabled, double puppeting will automatically be enabled for all bridges that support double puppeting via the appservice method."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:222
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:193
msgid "This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:224
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:195
msgid "**Notes**:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:226
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:197
msgid "Previously there were multiple different automatic double puppeting methods like one with the help of the [Shared Secret Auth password provider module](./configuring-playbook-shared-secret-auth.md), but they have been superseded by this Appservice Double Puppet method. Double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future as the older methods were completely removed in the megabridge rewrites on [the upstream project](https://docs.mau.fi/bridges/general/double-puppeting.html#automatically)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:229
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."
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:200
msgid "Some bridges like [the deprecated Facebook mautrix bridge](configuring-playbook-bridge-mautrix-facebook.md) and [matrix-appservice-kakaotalk](configuring-playbook-bridge-appservice-kakaotalk.md), which is partially based on the Facebook bridge, are compatible with the Shared Secret Auth service only. These bridges automatically perform Double Puppeting if [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:231
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:202
msgid "Method 2: manually, by asking each user to provide a working access token"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:233
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:204
msgid "When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:235
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:206
msgid "retrieve a Matrix access token for yourself. Refer to the documentation on [how to obtain one](obtaining-access-tokens.md)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:237
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:208
msgid "send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:239
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:210
msgid "make sure you don't log out the session for which you obtained an access token some time in the future, as that would break the Double Puppeting feature"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:241
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:212
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:243
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:214
msgid "For troubleshooting information with a specific bridge, please see the playbook documentation about it (some other document in in `docs/`) and the upstream ([mautrix](https://github.com/mautrix)) bridge documentation for that specific bridge."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:245
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:216
msgid "If the bridge's bot doesn't accept the invite to a chat, refer [the official troubleshooting page](https://docs.mau.fi/bridges/general/troubleshooting.html) as well."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:247
#: ../../../docs/configuring-playbook-bridge-mautrix-bridges.md:218
msgid "If you found bugs in mautrix bridges, they should be reported to the upstream project, in the corresponding mautrix repository, not to us."
msgstr ""
@@ -1,121 +0,0 @@
# 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-16 13:47+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 ""
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: matrix-docker-ansible-deploy \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-16 13:47+0000\n"
"POT-Creation-Date: 2026-02-13 10:32+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"
@@ -53,7 +53,7 @@ msgid "If you've been using the [mautrix-instagram](./configuring-playbook-bridg
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:26
msgid "both trying to use `@instagrambot:example.com` as their username. This conflict may be resolved by adjusting `matrix_mautrix_instagram_appservice_bot_username` or `matrix_bridge_mautrix_meta_instagram_appservice_username`"
msgid "both trying to use `@instagrambot:example.com` as their username. This conflict may be resolved by adjusting `matrix_mautrix_instagram_appservice_bot_username` or `matrix_mautrix_meta_instagram_appservice_username`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-meta-instagram.md:27

Some files were not shown because too many files have changed in this diff Show More