196 Commits

Author SHA1 Message Date
github-actions[bot]
258269fd03 Automatic translations update 2026-03-23 07:10:54 +00:00
Slavi Pantaleev
9f109f81ee Add pre-commit check for migration version sync between defaults and examples/vars.yml
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 09:10:01 +02:00
Slavi Pantaleev
9a9392d24a Add migration validation system to catch breaking changes early
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 09:10:01 +02:00
Slavi Pantaleev
4991ce3c90 Check shebang scripts are executable 2026-03-23 08:47:32 +02:00
Slavi Pantaleev
36d0c5d8c3 Mark rebuild helper script executable 2026-03-23 08:45:48 +02:00
renovate[bot]
4174eafd6b chore(deps): update actions/cache action to v5 2026-03-22 18:09:55 +02:00
Slavi Pantaleev
09221fd611 Cache prek hook environments in CI 2026-03-22 18:00:15 +02:00
Slavi Pantaleev
b3153fcc49 Run CI through prek on Arch 2026-03-22 16:52:39 +02:00
Slavi Pantaleev
312cfe9b41 Add prek-based pre-commit workflow 2026-03-22 16:44:04 +02:00
Slavi Pantaleev
b3a0f52824 Add conditional restart support to matrix-synapse-s3-storage-provider-migrate
Register env, database config, scripts, and systemd service/timer results,
compute matrix_synapse_s3_storage_provider_restart_necessary, and wire it
into group_vars/matrix_servers instead of hardcoding restart_necessary: true.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 10:21:59 +02:00
Slavi Pantaleev
27a2b126bc Add conditional restart support to matrix-goofys
Register image pull, env, and systemd service results, compute
matrix_goofys_restart_necessary, and wire it into group_vars/matrix_servers
instead of hardcoding restart_necessary: true.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 10:19:45 +02:00
Slavi Pantaleev
8ae8b83139 Wire backup_borg conditional restart variable into group_vars/matrix_servers
Replace hardcoded restart_necessary: true with the computed
backup_borg_restart_necessary variable that the role already exposes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 10:18:16 +02:00
Slavi Pantaleev
74cc760d00 Wire jitsi conditional restart variables into group_vars/matrix_servers
Replace hardcoded restart_necessary: true with the computed variables
(jitsi_web_restart_necessary, jitsi_prosody_restart_necessary,
jitsi_jicofo_restart_necessary, jitsi_jvb_restart_necessary) that the
jitsi role already exposes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 10:12:27 +02:00
Slavi Pantaleev
c831ce6f63 chore(deps): update MOASH role versions for pull restart fix 2026-03-22 07:41:16 +02:00
Slavi Pantaleev
d3241588e3 Add conditional restart support to 7 roles that previously always restarted
Replace hardcoded restart_necessary: true with computed values for:
conduit, continuwuity, dendrite, element-call, media-repo,
appservice-kakaotalk, and wechat.

Each role now registers results from config, support files, systemd service,
and docker image pull tasks, then computes a restart_necessary variable
from their combined .changed state. group_vars/matrix_servers is updated
to reference these variables instead of hardcoding true.

For dendrite, the systemd service template was also separated out of the
combined support-files with_items loop so it can be independently tracked.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 06:45:58 +02:00
Slavi Pantaleev
b092e126a9 Fix docker image build results not affecting conditional restart for ldap-registration-proxy and matrixto
These roles had conditional restart logic (restart_necessary set_fact) but
the docker_image build task result was not registered or included in the
condition, so a changed image build would not trigger a service restart.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 06:45:47 +02:00
renovate[bot]
5167507989 chore(deps): update ghcr.io/etkecc/baibot docker tag to v1.16.0 2026-03-20 19:03:52 +02:00
renovate[bot]
d7ec806b51 chore(deps): update dependency prometheus_postgres_exporter to v0.19.1-2 2026-03-20 19:01:12 +02:00
renovate[bot]
11fee5e4db chore(deps): update dependency traefik to v3.6.11-1 2026-03-20 19:00:53 +02:00
Suguru Hirahara
5523277bc1 Update prometheus-nginxlog-exporter (v1.10.0-0 → v1.10.0-1) and metrics exposure settings
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-03-20 18:11:25 +09:00
Suguru Hirahara
ed7be50cea Update Prometheus Node Exporter (v1.9.1-14 → v1.9.1-15) and metrics exposure settings
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-03-20 10:43:40 +02:00
Suguru Hirahara
4ac5266efc Update Prometheus Postgres Exporter (v0.19.1-0 → v0.19.1-1) and metrics exposure settings
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-03-20 10:43:40 +02:00
renovate[bot]
392ac0125f chore(deps): update dependency prometheus_node_exporter to v1.9.1-15 2026-03-20 10:42:55 +02:00
renovate[bot]
756e189141 chore(deps): update dependency prometheus_postgres_exporter to v0.19.1-1 2026-03-20 10:42:45 +02:00
renovate[bot]
c55156b394 chore(deps): update dependency traefik to v3.6.11-0 2026-03-20 08:36:23 +02:00
Slavi Pantaleev
446597aac9 Upgrade exim-relay (v4.98.1-r0-2-3 -> v4.99.1-r0-0-0) 2026-03-20 02:41:38 +02:00
Slavi Pantaleev
b942715469 fix(self-check): respect path_prefix in web client self-check URLs
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/5051

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 23:31:13 +02:00
renovate[bot]
aeb71d3543 chore(deps): update ghcr.io/etkecc/honoroit docker tag to v0.9.30 2026-03-19 19:07:29 +02:00
Catalan Lover
54c0b56200 Prepare Draupnir Roles for move to GHCR. 2026-03-19 19:07:19 +02:00
Slavi Pantaleev
12af6da9d0 matrix-authentication-service: add UNIX socket support for playbook-managed Postgres
MAS now connects to the playbook-managed Postgres via a UNIX socket by
default (when available), matching the approach already used by Synapse.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 01:05:10 +02:00
Slavi Pantaleev
f0a5393d48 fix(s3): use postgres unix socket for migrate and shell commands 2026-03-18 15:21:06 +02:00
Slavi Pantaleev
68aca96cbd docs: clarify database_host ignored when postgres sockets are enabled 2026-03-18 15:21:03 +02:00
renovate[bot]
68318ce932 chore(deps): update docker.io/metio/matrix-alertmanager-receiver docker tag to v2026.3.18 2026-03-18 12:11:23 +02:00
renovate[bot]
4e4bccd03a chore(deps): update oci.element.io/element-admin docker tag to v0.1.11 2026-03-17 16:48:28 +02:00
Norman Ziegner
19423864f0 synapse: add missing server_notices configuration variables
Add support for all server_notices settings documented by Synapse:
- room_avatar_url: optional avatar for the server notices room
- room_topic: optional topic for the server notices room
- auto_join: whether users are auto-joined instead of invited (default: false)

Signed-off-by: Norman Ziegner <n.ziegner@hzdr.de>
2026-03-17 16:43:14 +02:00
Slavi Pantaleev
a000abdf19 postgres: stop disabling unix socket support 2026-03-17 15:35:02 +02:00
Slavi Pantaleev
b596319a4a postgres: drop redundant cli socket override 2026-03-17 15:35:02 +02:00
Slavi Pantaleev
f0906e79a9 matrix-synapse: gate postgres sockets on postgres role support 2026-03-17 15:35:02 +02:00
Slavi Pantaleev
2fff4b5b88 matrix-synapse: use clearer socket mount paths 2026-03-17 15:35:02 +02:00
Slavi Pantaleev
e09ea540a0 matrix-synapse: prefer local sockets for db connections 2026-03-17 15:35:02 +02:00
Slavi Pantaleev
bd614abd30 matrix-synapse: avoid network wiring for socket-based db access 2026-03-17 15:35:02 +02:00
Slavi Pantaleev
b6f8a59b50 matrix-synapse: make managed service topology explicit 2026-03-17 15:35:02 +02:00
renovate[bot]
b7d501802c chore(deps): update dependency ntfy to v2.19.2-0 2026-03-17 12:02:14 +02:00
renovate[bot]
1c98e76423 chore(deps): update dependency grafana to v11.6.5-8 2026-03-17 12:01:56 +02:00
renovate[bot]
cb7b13daad chore(deps): update dock.mau.dev/mautrix/twitter docker tag to v0.2603.0 2026-03-16 23:21:19 +02:00
renovate[bot]
7e8f3250f7 chore(deps): update dock.mau.dev/mautrix/slack docker tag to v0.2603.0 2026-03-16 23:21:06 +02:00
renovate[bot]
e145bffb7e chore(deps): update dock.mau.dev/mautrix/whatsapp docker tag to v0.2603.0 2026-03-16 23:20:31 +02:00
renovate[bot]
c3156a1a99 chore(deps): update ghcr.io/element-hq/element-call docker tag to v0.18.0 2026-03-16 23:19:11 +02:00
Slavi Pantaleev
f9811a0e0a matrix-authentication-service: mount Synapse Postgres socket for syn2mas
syn2mas reads Synapse's homeserver.yaml and reuses the database
connection details from there.

When Synapse is configured to reach the integrated Postgres over a UNIX socket,
the temporary syn2mas container was given the config file but not the socket mount,
so migrations could fail even though Synapse itself was configured correctly.

Wire the Synapse socket settings into MAS via playbook vars and mount
the same socket path into the syn2mas container, so migrations work in
socket-based deployments without coupling the MAS role directly to
Synapse role variables.
2026-03-16 22:43:02 +02:00
Slavi Pantaleev
1dac2b5c14 matrix-bridge-hookshot: normalize generated passkey ownership
Similar to c6d33b819. See https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/5033
2026-03-16 16:50:40 +02:00
Slavi Pantaleev
c6d33b819a matrix-authentication-service: normalize generated key ownership
Fix host-generated MAS key ownership and mode after creation so installs recover cleanly when become_user is not honored. Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/5033
2026-03-16 16:49:51 +02:00
renovate[bot]
7e0d86d2ea chore(deps): update ghcr.io/etkecc/postmoogle docker tag to v0.9.29 2026-03-16 11:27:51 +02:00
renovate[bot]
a035d77b1a chore(deps): update dependency ntfy to v2.19.1-0 2026-03-16 11:27:09 +02:00
renovate[bot]
9934bc3e39 chore(deps): update dependency charset-normalizer to v3.4.6 2026-03-16 06:45:30 +02:00
renovate[bot]
a2fd140a61 chore(deps): update dependency ntfy to v2.19.0-0 2026-03-16 06:45:21 +02:00
Slavi Pantaleev
5df7e678f7 matrix-synapse: add an explicit msc4306 feature toggle
Expose Synapse's `msc4306_enabled` experimental flag as a first-class MDAD
variable and wire it into `homeserver.yaml` alongside the other experimental
feature toggles.

This makes thread-subscriptions support explicit in playbook configuration,
rather than requiring operators to inject the upstream flag via raw
`matrix_synapse_configuration_extension_yaml`.

The variable intentionally controls only the Synapse feature flag. It does not
change the default `thread_subscriptions` worker count, which remains `0` in the
standard presets. Keeping those as separate choices avoids auto-starting an
experimental worker just because the upstream feature toggle is enabled.

Refs:
- b99a58719b/synapse/config/experimental.py (L600-L602)
- b99a58719b/synapse/rest/client/versions.py (L183-L184)
2026-03-15 01:26:53 +02:00
Slavi Pantaleev
9af79ce4d2 matrix-synapse: support thread_subscriptions stream writers
Add `thread_subscriptions` as a supported web-facing stream writer in MDAD and
route its unstable client endpoints via the same explicit writer-or-main model
used for the other web-facing stream-backed APIs.

This is not just another generic worker route. Current Synapse gives thread
subscriptions their own `writers.thread_subscriptions` configuration, backs them
with a multi-writer stream, and asserts on store writes that the current
instance is an allowed thread-subscriptions writer.

Explicit early routing is also required here because the subscription endpoint is
room-scoped. In MDAD's specialized-worker model, the existing room-worker regex
would otherwise match `/_matrix/client/unstable/io.element.msc4306/rooms/...`
and steal the request before it reached the correct writer-or-main fallback.

Unlike `device_lists`, support is added without enabling a thread-subscriptions
worker by default in the standard presets. The underlying MSC4306/4308 feature
remains unstable and disabled by default upstream, so the conservative default
is to keep the worker count at `0` and let the new explicit routes fall back to
`main` unless an operator opts in.

Refs:
- b99a58719b/synapse/config/workers.py (L175-L182)
- b99a58719b/synapse/rest/client/thread_subscriptions.py (L38-L247)
- b99a58719b/synapse/storage/databases/main/thread_subscriptions.py (L66-L83)
- b99a58719b/synapse/storage/databases/main/thread_subscriptions.py (L192-L322)
2026-03-15 01:16:24 +02:00
Slavi Pantaleev
0f687a69c5 matrix-synapse: simplify redundant SSO main-override regexes
MDAD keeps `/_synapse/client/*` out of the broad worker-routing model.
Those paths are mounted by current Synapse on client-serving workers, but MDAD's
worker route buckets only match `/_matrix/client/*`, so `/_synapse/client/*`
requests already fall through to the main-process default.

That made the `/_synapse/client/*` branches in the dedicated SSO override regex
redundant. Remove those branches and leave the explicit SSO override focused on
the real `/_matrix/client/.../login/sso/redirect` path family, which would
otherwise be caught by the broad `/login` client-reader routing.

This also removes duplicated ownership of `login/sso/redirect` from the generic
main-override regex so the dedicated SSO override is the single place that
models that path.

Refs:
- b99a58719b/synapse/app/generic_worker.py (L197-L203)
- b99a58719b/synapse/rest/synapse/client/__init__.py (L39-L90)
- b99a58719b/synapse/rest/client/login.py (L636-L643)
2026-03-15 01:02:19 +02:00
Slavi Pantaleev
ec36904671 matrix-synapse: route MSC3814 dehydrated-device APIs to workers
Add the unstable MSC3814 dehydrated-device endpoints to both MDAD
worker-routing models:

- the specialized client_reader bucket
- the broad generic_worker route list

This is not a docs-driven change. Current workers.md does not meaningfully
spell out these paths, but the current Synapse code does mount them via the
normal devices servlet registration path, and non-main client workers do not
skip that servlet group.

That makes these endpoints a good fit for the same worker buckets that already
handle the surrounding device- and E2EE-related client APIs.

Refs:
- b99a58719b/docs/workers.md (synapseappgeneric_worker)
- b99a58719b/synapse/rest/client/devices.py (L256-L459)
- b99a58719b/synapse/rest/__init__.py (L81-L129)
- b99a58719b/synapse/rest/__init__.py (L179-L197)
2026-03-15 00:39:25 +02:00
Slavi Pantaleev
69df322f40 matrix-synapse: split client_reader routes into grouped regexes
The client_reader route bucket had collapsed into one long alternation,
which made small worker-audit edits hard to review. Any endpoint change
rewrote the whole regex and obscured whether we were changing routing
policy or just maintaining the route list.

Refactor the variable into grouped regex entries with comments instead.
This keeps the current specialized-worker policy intact: nginx still
renders the client_reader locations in the same block, and the routes
still target the same upstream bucket. The goal here is to make future
doc/code audits, additions, and removals mechanical and reviewable.

This also matches MDAD's current worker model, where generic workers are
not mixed with the specialized room/sync/client/federation reader
routing buckets, so there is no need to derive this from the generic
worker map.

Refs:
- b99a58719b/docs/workers.md (historical-apps)
- b99a58719b/docs/workers.md (synapseappgeneric_worker)
2026-03-15 00:29:32 +02:00
Slavi Pantaleev
c0044a9b0a matrix-synapse: route MatrixRTC transport discovery to workers
Current Synapse registers the MatrixRTC transport discovery endpoint on
client-serving workers when MSC4143 is enabled, but MDAD does not model
that path in either its client-reader bucket or its broader generic-
worker endpoint list.

Add the unstable MatrixRTC transport discovery route so MDAD's worker
routing matches the current upstream worker surface for this endpoint.
This is a small, isolated routing addition for a simple authenticated
GET endpoint.

Refs:
- b99a58719b/synapse/rest/client/matrixrtc.py (L30-L52)
- b99a58719b/synapse/rest/__init__.py (L81-L129)
- b99a58719b/synapse/rest/__init__.py (L179-L197)
2026-03-15 00:11:58 +02:00
Slavi Pantaleev
63a0e8216b matrix-synapse: route account deactivation like current Synapse
Current Synapse still documents and registers
`/_matrix/client/.../account/deactivate` on client-serving workers when
auth is not delegated. MDAD already routes neighboring account endpoints
such as `account/3pid` and `account/whoami`, but it omitted
`account/deactivate` from both its client-reader bucket and its broader
generic-worker endpoint list.

Add the missing route patterns so MDAD's worker routing matches the
current upstream worker surface in non-delegated-auth deployments. In
MAS / MSC3861 mode the endpoint is not registered upstream anyway, so
this does not expand the effective delegated-auth surface.

Refs:
- b99a58719b/docs/workers.md (synapseappgeneric_worker)
- b99a58719b/synapse/rest/client/account.py (L284-L324)
- b99a58719b/synapse/rest/client/account.py (L913-L920)
2026-03-14 23:49:20 +02:00
Slavi Pantaleev
975f14d2d8 matrix-synapse: route the current Nheko summary endpoint
Synapse currently supports both the deprecated
`/_matrix/client/unstable/im.nheko.summary/rooms/<room>/summary`
route and the recommended
`/_matrix/client/unstable/im.nheko.summary/summary/<room>`
form. MDAD only matched the deprecated shape.

Add the recommended pattern alongside the old one so worker routing
matches the current upstream API surface while preserving backward
compatibility for the deprecated path.

Refs:
- b99a58719b/docs/workers.md (synapseappgeneric_worker)
- b99a58719b/synapse/rest/client/room.py (L1716-L1728)
2026-03-14 23:32:10 +02:00
Slavi Pantaleev
d80ef72fbe matrix-synapse: remove stale client-reader residue and refresh worker comment
Current Synapse no longer exposes device management under
`/_matrix/client/.../account/devices`. The live client API shape is
`/devices`, `/devices/{device_id}`, and `/delete_devices`, and
MDAD already routes those real device-list-sensitive endpoints through
explicit device-list handling.

Keeping `account/devices` in the old client-reader regex therefore only
preserves stale route-model residue. While touching the same area,
refresh the `/_synapse/client/*` comment to reflect current Synapse:
client-serving generic workers now mount a meaningful Synapse-specific
client tree there, but MDAD still intentionally keeps those paths out of
its broad worker regexes because they are deployment-sensitive and
auth-sensitive.

Refs:
- b99a58719b/docs/workers.md (historical-apps)
- b99a58719b/synapse/rest/client/devices.py (L49-L150)
- b99a58719b/synapse/rest/synapse/client/__init__.py (L39-L88)
2026-03-14 23:31:51 +02:00
Slavi Pantaleev
dfe8628fbf matrix-synapse: add routing-focused reverse-proxy access log preset 2026-03-14 02:56:48 +02:00
Slavi Pantaleev
a3ff72ebff matrix-synapse: enable push_rules writer in worker presets 2026-03-14 01:50:07 +02:00
Slavi Pantaleev
df76b1cd5b matrix-synapse: enable device_lists writer in worker presets 2026-03-14 01:49:45 +02:00
Slavi Pantaleev
dafac35a0e matrix-synapse: route stream-backed client endpoints explicitly and add device_lists stream writer support
Some client API endpoints (e.g. keys/upload) are backed by Synapse stream writers and
should not rely on broad worker regexes or route-order fallthrough for correctness.

When explicit per-stream routing is missing, requests may be captured by generic, room, or client_reader workers, instead of:
- going to the configured stream writer
- or to `main` when that stream writer is not enabled

This refactors synapse-reverse-proxy-companion's routing so that web-facing stream-backed endpoint families
are handled explicitly and early, with deterministic writer-or-main fallback.

Add first-class support for the missing `device_lists` stream writer,
generalize the same routing model to `push_rules`,
and remove stale broad-route ownership for device-list-sensitive endpoints.
2026-03-14 01:42:08 +02:00
dependabot[bot]
980d1ccc5b Bump ansible/ansible-lint from 26.1.1 to 26.3.0
Bumps [ansible/ansible-lint](https://github.com/ansible/ansible-lint) from 26.1.1 to 26.3.0.
- [Release notes](https://github.com/ansible/ansible-lint/releases)
- [Commits](https://github.com/ansible/ansible-lint/compare/v26.1.1...v26.3.0)

---
updated-dependencies:
- dependency-name: ansible/ansible-lint
  dependency-version: 26.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 16:11:36 +02:00
Suguru Hirahara
f9fa63fc7e Add noqa var-naming to matrix_client_fluffychat_config_defaultHomeserver
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-03-12 14:48:43 +09:00
renovate[bot]
021285d8d2 chore(deps): update dependency cinny to v4.11.1-0 2026-03-11 20:04:50 +02:00
renovate[bot]
e2d2a341a8 chore(deps): update dependency sphinx-markdown-builder to v0.6.10 2026-03-11 14:50:14 +02:00
renovate[bot]
79a4156a78 chore(deps): update ghcr.io/element-hq/synapse docker tag to v1.149.1 2026-03-11 12:26:30 +02:00
renovate[bot]
d12970c0fd chore(deps): update docker.io/metio/matrix-alertmanager-receiver docker tag to v2026.3.11 2026-03-11 12:19:32 +02:00
Slavi Pantaleev
d4e8da3e0a Bump default OpenAI text-generation model (gpt-5.2 -> gpt-5.4) 2026-03-11 10:05:46 +02:00
renovate[bot]
2237b53979 chore(deps): update dependency traefik to v3.6.10-1 2026-03-11 02:17:55 +02:00
renovate[bot]
0320e671e3 chore(deps): update nginx docker tag to v1.29.6 2026-03-11 01:47:55 +02:00
Jakob S.
0c4bce582f Fix user-verification-service room membership check 2026-03-11 00:57:04 +02:00
renovate[bot]
4e3658bb98 chore(deps): update ghcr.io/element-hq/synapse docker tag to v1.149.0 2026-03-10 22:43:44 +02:00
renovate[bot]
94beb79279 chore(deps): update ghcr.io/element-hq/element-web docker tag to v1.12.12 2026-03-10 22:06:25 +02:00
Slavi Pantaleev
ac559889f9 Upgrade Sable (v1.6.0-0 -> v1.6.0-1) 2026-03-10 21:50:14 +02:00
Aine
12d8015bc4 optional postgres unix socket with synapse 2026-03-10 17:38:16 +00:00
renovate[bot]
a602035383 chore(deps): update dependency sable to v1.6.0-0 2026-03-10 15:08:49 +02:00
renovate[bot]
1898bb5c49 chore(deps): update ghcr.io/element-hq/matrix-authentication-service docker tag to v1.13.0 2026-03-10 15:08:40 +02:00
renovate[bot]
805f3ef892 chore(deps): update dependency setuptools to v82.0.1 2026-03-10 14:07:52 +02:00
renovate[bot]
81b944540b chore(deps): update matrixdotorg/mjolnir docker tag to v1.12.1 2026-03-10 07:38:57 +02:00
Benjamin Blacher
df5b84588b Add support for sticky events (experimental) 2026-03-09 15:51:38 +02:00
Slavi Pantaleev
6b6b74afa9 matrix-synapse-admin: fail when enabled with non-Synapse homeserver 2026-03-08 15:26:21 +02:00
Slavi Pantaleev
677919fc39 Upgrade systemd_service_manager (v3.1.0-0 -> v3.2.0-0) 2026-03-08 14:44:58 +02:00
Aine
f803ad6957 Synapse Admin v0.11.4-etke54 2026-03-08 12:39:11 +00:00
Aine
5d7569adf0 fix borg backup var; update jitsi role 2026-03-08 10:42:50 +00:00
Aine
82caf3a7d3 improve synapse redis socket mounting 2026-03-08 09:56:26 +00:00
Aine
45d5ebd008 fix comments 2026-03-08 08:09:17 +00:00
renovate[bot]
c3437e22e6 chore(deps): update dependency sable to v1.5.1-0 2026-03-08 09:37:46 +02:00
renovate[bot]
d046855f3a chore(deps): update dependency ntfy to v2.18.0-0 2026-03-08 09:37:39 +02:00
renovate[bot]
55ffeb226c chore(deps): update dependency backup_borg to v1.4.3-2.1.1-3 2026-03-08 09:32:40 +02:00
Aine
0c40a03efc allow synapse to use redis unix socket instead of tcp 2026-03-08 07:24:33 +00:00
Aine
86bb61aba0 backup-borg: disable mariadb/mysql/mongodb by default 2026-03-07 20:17:09 +00:00
Aine
87ef61ac56 update valkey 2026-03-07 19:16:49 +00:00
renovate[bot]
6d9b1a8260 chore(deps): update dependency traefik to v3.6.10-0 2026-03-07 13:28:05 +02:00
Slavi Pantaleev
df205a2f77 Upgrade baibot (v1.14.3 -> v1.15.0) and adapt to support optional access-token auth mode
Ref:
- https://github.com/etkecc/baibot/pull/83
- 748d2b7fd4/CHANGELOG.md (2026-03-07-version-1150)
- 748d2b7fd4/docs/configuration/authentication.md
2026-03-07 12:43:48 +02:00
renovate[bot]
7e3b82b80e chore(deps): update dependency backup_borg to v1.4.3-2.1.1-2 2026-03-07 08:17:34 +02:00
renovate[bot]
c3a9772f51 chore(deps): update dependency charset-normalizer to v3.4.5 2026-03-06 11:29:27 +02:00
renovate[bot]
1f3ea18213 chore(deps): update dependency livekit_server to v1.9.12-0 2026-03-05 22:21:57 +02:00
renovate[bot]
0acb1f98e8 chore(deps): update pre-commit hook codespell-project/codespell to v2.4.2 2026-03-05 22:20:16 +02:00
renovate[bot]
58141f9926 chore(deps): update dependency tabulate to v0.10.0 2026-03-05 14:07:03 +02:00
mikhail.sarnov
1ee5c1f416 feat(synapse): add ca_certs_file support for LDAP TLS
Add matrix_synapse_ext_password_provider_ldap_tls_options_ca_certs_file
variable to allow specifying a custom CA certificate file for LDAP TLS
verification. Useful when Synapse is running in a container that does not
trust a private/internal CA by default.

Example usage:
matrix_synapse_ext_password_provider_ldap_tls_options_ca_certs_file: /etc/ssl/certs/my-ca.crt
2026-03-05 14:06:52 +02:00
renovate[bot]
c9bb48ff11 chore(deps): update docker.io/metio/matrix-alertmanager-receiver docker tag to v2026.3.4 2026-03-04 12:11:43 +02:00
Suguru Hirahara
0cbffe695b Update Etherpad (v2.6.1-1 → v2.6.1-2)
Now that UID and GID are not specified by default, it is necessary for the playbook to specify them. MASH playbook has already taken care of them on 9707a4786b/templates/group_vars_mash_servers (L4794-L4795).

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-03-04 11:43:52 +02:00
renovate[bot]
af237ac9c7 chore(deps): update forgejo.ellis.link/continuwuation/continuwuity docker tag to v0.5.6 2026-03-04 07:37:15 +02:00
Slavi Pantaleev
87a799faa6 Fix Commet variable placement in matrix_servers
Move Commet defaults out of the Element section into a dedicated matrix-client-commet block, and add missing matrix_client_commet_enabled default wiring.

Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/5000
2026-03-03 21:41:48 +02:00
D4GU
f5b722b13d Add commet webclient support (#4997) 2026-03-03 17:39:01 +02:00
renovate[bot]
c0be489796 chore(deps): update dependency imagesize to v2 2026-03-03 16:55:06 +02:00
renovate[bot]
2d1be91ac2 chore(deps): update dependency linkify-it-py to v2.1.0 2026-03-03 12:54:52 +02:00
renovate[bot]
bd809f16f3 chore(deps): update dependency uc-micro-py to v2 2026-03-03 12:54:45 +02:00
tripleawwy
58bf4fe34b fix: conditionally include m.identity_server in Element Web config.json
When no identity server is configured, `matrix_client_element_default_is_url`
defaults to `~` (YAML null). The `| string | to_json` filter chain converts
this to the literal string `"None"`, causing Element Web to log errors:

- TypeError: URL constructor: None is not a valid URL
- Invalid base_url for m.identity_server

The well-known template (`.well-known/matrix/client.j2`) already handles
this correctly with a conditional guard (see PR #314). This applies the
same pattern to the Element Web `config.json.j2` template.
2026-03-03 12:50:52 +02:00
renovate[bot]
a787993aaf chore(deps): update dependency imagesize to v1.5.0 2026-03-03 12:49:26 +02:00
Slavi Pantaleev
d5ffc94916 Add support for the Sable client (Cinny fork) 2026-03-03 12:48:59 +02:00
Slavi Pantaleev
4208b4f553 chore: bump livekit role and document TURN relay ports 2026-03-03 09:51:53 +02:00
renovate[bot]
768fdbbde3 chore(deps): update dock.mau.dev/mautrix/signal docker tag to v26.02.2 2026-03-02 19:57:16 +02:00
renovate[bot]
af30790d6a chore(deps): update dependency valkey to v9.0.3-1 2026-03-01 08:10:13 +02:00
renovate[bot]
baa1a29f76 chore(deps): update dependency systemd_service_manager to v3.1.0-0 2026-03-01 04:10:05 +02:00
renovate[bot]
9d6980a175 chore(deps): update dependency systemd_docker_base to v1.5.0-0 2026-03-01 04:09:58 +02:00
parisni
90bcb1f4ee feat: prune empty dir when migrate to s3 storage
OTW many empty dirs are kept
2026-03-01 01:04:22 +02:00
Slavi Pantaleev
46321552b7 docs(changelog): document Synapse S3 prefix wiring behavior change 2026-03-01 00:49:05 +02:00
parisni
0620d6a822 fix: make matrix_synapse_ext_synapse_s3_storage_provider_config_prefix be used 2026-03-01 00:48:59 +02:00
dayton4352
0a653dfeaa Fix link to Matrix RTC configuration document 2026-02-28 08:28:40 +02:00
renovate[bot]
3564155a73 chore(deps): update dock.mau.dev/mautrix/signal docker tag to v26 2026-02-27 23:13:05 +02:00
renovate[bot]
58937731f8 chore(deps): update dependency postgres to v18.3-0 2026-02-27 09:45:29 +02:00
Suguru Hirahara
9bdf84eecf Move the line for coturn down
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-26 13:30:45 +02:00
Suguru Hirahara
c4a05ce06a Replace lines for LiveKit services with one for Matrix RTC stack
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-26 13:30:45 +02:00
Suguru Hirahara
15ffb04293 Fix anchor links to configuring-playbook-element-call.md
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-26 13:30:45 +02:00
Slavi Pantaleev
a949605518 Remove duplicate "Project source code URL" from roles/custom/matrix-synapse/defaults/main.yml
This was causing issues when it's parsed out by certain tools.

Regression since 28afbde971
2026-02-26 12:40:45 +02:00
renovate[bot]
a77250ab97 chore(deps): update dependency prometheus to v3.10.0-0 2026-02-26 12:20:32 +02:00
copilot-swe-agent[bot]
a809f4d124 Changes before error encountered
Co-authored-by: spantaleev <388669+spantaleev@users.noreply.github.com>
2026-02-26 06:57:24 +02:00
copilot-swe-agent[bot]
ceebf644a3 Make exim-relay benefits section more concise
Co-authored-by: spantaleev <388669+spantaleev@users.noreply.github.com>
2026-02-26 06:57:24 +02:00
copilot-swe-agent[bot]
123dbbf191 Add "Why use exim-relay?" section to email documentation
Co-authored-by: spantaleev <388669+spantaleev@users.noreply.github.com>
2026-02-26 06:57:24 +02:00
renovate[bot]
37d45d6772 chore(deps): update dependency prometheus_postgres_exporter to v0.19.1-0 2026-02-26 06:56:08 +02:00
Slavi Pantaleev
28afbde971 Merge Synapse reverse-proxy companion role into matrix-synapse
The companion role was tightly coupled to Synapse through shared tags, worker routing, and lifecycle ordering. Keeping them separate added coordination overhead without practical benefits, especially for parallelized execution.

This merges the role into matrix-synapse while keeping companion logic organized under dedicated reverse_proxy_companion task/template subdirectories.

Compatibility is preserved:
- matrix_synapse_reverse_proxy_companion_* variable names remain unchanged
- install/setup companion-specific tags remain available

Cross-role/global wiring is now in group_vars (matrix-synapse section), while role defaults provide sensible standalone defaults and self-wiring for Synapse-owned values.
2026-02-26 06:51:47 +02:00
Slavi Pantaleev
63b6bf4bc1 Fix Goofys restart guard for non-Synapse setups
Only queue matrix-goofys.service for restart when Synapse is enabled. Goofys is installed from the Synapse role, so non-Synapse homeserver configurations should not try to restart this unit. This mirrors the fix for issue https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4959.
2026-02-25 18:27:47 +02:00
Slavi Pantaleev
39f867a1c9 Fix S3 migration timer restart guard for non-Synapse setups
Only queue matrix-synapse-s3-storage-provider-migrate.timer for restart when Synapse is actually enabled. This prevents setup/install failures when a Synapse-only extension flag is set while using another homeserver implementation, as reported in https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4959.
2026-02-25 18:21:30 +02:00
renovate[bot]
78a08482fa chore(deps): update dependency coturn to v4.9.0-0 2026-02-25 17:17:42 +02:00
renovate[bot]
da86297655 chore(deps): update docker.io/metio/matrix-alertmanager-receiver docker tag to v2026.2.25 2026-02-25 09:57:48 +02:00
renovate[bot]
8417f655af chore(deps): update dependency certifi to v2026.2.25 2026-02-25 09:57:37 +02:00
DrKnees
a7f7a3d002 Update Continuwuity docs for v0.5.5 (#4956) 2026-02-24 23:01:03 +02:00
renovate[bot]
e7419fbafa chore(deps): update dependency valkey to v9.0.3-0 2026-02-24 22:57:52 +02:00
renovate[bot]
8c6c544c90 chore(deps): update matrixdotorg/mjolnir docker tag to v1.12.0 2026-02-24 22:57:33 +02:00
renovate[bot]
b98a6d39c9 chore(deps): update ghcr.io/element-hq/element-call docker tag to v0.17.0 2026-02-24 22:55:31 +02:00
renovate[bot]
93c6587b9d chore(deps): update ghcr.io/element-hq/element-web docker tag to v1.12.11 2026-02-24 16:54:10 +02:00
renovate[bot]
f187cf84d5 chore(deps): update ghcr.io/element-hq/matrix-authentication-service docker tag to v1.12.0 2026-02-24 16:52:38 +02:00
renovate[bot]
ee243a8aab chore(deps): update ghcr.io/element-hq/synapse docker tag to v1.148.0 2026-02-24 16:52:17 +02:00
renovate[bot]
816b95f951 chore(deps): update dependency traefik to v3.6.9-0 2026-02-24 12:06:51 +02:00
renovate[bot]
324ff0dff6 chore(deps): update dependency cinny to v4.10.5-0 2026-02-23 16:30:39 +02:00
Slavi Pantaleev
2e7e034d3a Document room complexity guard for constrained Synapse setups 2026-02-21 18:02:24 +02:00
Slavi Pantaleev
2c29027868 Add configurable Synapse room complexity limit variables 2026-02-21 17:44:31 +02:00
Slavi Pantaleev
1718181ff4 Do not auto-enable Coturn by default
With everything moving to Matrix RTC and Element X on mobile not
supporting legacy calls, most people probably don't need Coturn
auto-enabled.
2026-02-21 17:16:29 +02:00
Slavi Pantaleev
f1d1c50106 Update changelog entry heading for better clarity 2026-02-21 16:33:37 +02:00
Slavi Pantaleev
b55444e44f LiveKit TURN docs clarity update 2026-02-21 16:30:56 +02:00
Slavi Pantaleev
f96dcff028 LiveKit TURN docs and defaults update 2026-02-21 16:20:07 +02:00
Slavi Pantaleev
c6cd76e988 Define matrix-corporal's systemd service manager priority in terms of matrix_homeserver_systemd_service_manager_priority
Related to 4761ff7e9a
2026-02-21 15:50:00 +02:00
Slavi Pantaleev
4761ff7e9a Align homeserver/coturn service priorities to avoid first-start cert race
The startup issue came from a timing dependency around coturn TLS certs:

- `matrix-coturn.service` depends on
  `matrix-traefik-certs-dumper-wait-for-domain@<matrix-fqdn>.service`
- That waiter succeeds only after Traefik has obtained and dumped a cert for
  the Matrix hostname (typically driven by homeserver labels/routes becoming
  active)
- If coturn is started too early, it can block/fail waiting for cert files
  that are not yet present

Historically, coturn priority was mode-dependent:

- `one-by-one`: coturn at 1500 (delayed after homeserver)
- other modes: coturn at 900 (before homeserver)

This could still trigger undesirable startup ordering and confusing behavior
in non-`one-by-one` modes, especially during initial bootstrap/restart flows
where cert availability lags service startup.

This change makes ordering explicit and consistent:

1. Introduce `matrix_homeserver_systemd_service_manager_priority` (default 1000)
   in `roles/custom/matrix-base/defaults/main.yml`.
2. Use that variable for the homeserver service entry in
   `group_vars/matrix_servers`.
3. Set coturn priority relative to homeserver priority in all modes:
   `matrix_homeserver_systemd_service_manager_priority + 500`.
4. Update inline documentation comments in `group_vars/matrix_servers` to
   match the new behavior and rationale.

Result:

- Homeserver/coturn ordering is deterministic and mode-agnostic.
- Coturn is intentionally started later than the homeserver by default,
  reducing first-start certificate wait/fail races.
- Priority intent is now centralized and configurable via a dedicated
  homeserver priority variable.
- Coturn may still be stated earlier, because the homeserver typically
  has a `Wants` "dependency" on it, but that's alright
2026-02-20 23:55:31 +02:00
Slavi Pantaleev
976d2c4cd0 fix(matrix-static-files): restore /.well-known serving with static-web-server v2.41.0
Users reported that /.well-known/matrix/* stopped being served after the image bump to static-web-server v2.41.0.

Regression introduced by commit 32aeaca28b in PR #4951: https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4951

Root cause: upstream changed hidden-file handling defaults, so paths under /.well-known were treated as hidden and no longer served by default.

Fix by explicitly configuring SERVER_IGNORE_HIDDEN_FILES=false in the matrix-static-files role and rendering it as a JSON boolean in the env template, making behavior stable across upstream default changes.
2026-02-20 13:11:16 +02:00
renovate[bot]
32aeaca28b chore(deps): update joseluisq/static-web-server docker tag to v2.41.0 2026-02-20 07:30:24 +02:00
Suguru Hirahara
ee79348254 Update postgres-backup (v18-0 → v18-1)
Use `postgres_backup_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-20 02:49:34 +09:00
Slavi Pantaleev
a1dc468004 Have the Synapse healthcheck be more patient to accommodate slow servers 2026-02-19 13:49:17 +02:00
Suguru Hirahara
0da4c43cf1 Update Etherpad (v2.6.1-0 → v2.6.1-1)
Use `etherpad_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-19 13:24:55 +09:00
Suguru Hirahara
1dfd4dc4ad Update Grafana (v11.6.5-6 → v11.6.5-7)
Use `grafana_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-19 12:47:01 +09:00
Suguru Hirahara
b528f0e6af Update Prometheus (v3.9.1-0 → v3.9.1-1)
Use `prometheus_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-19 12:35:36 +09:00
Suguru Hirahara
f2e961293c Update PostgreSQL Server Exporter (v0.19.0-0 → v0.19.0-1)
Use `prometheus_postgres_exporter_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-19 12:30:25 +09:00
Suguru Hirahara
7bfa823fa3 Update Prometheus node exporter (v1.9.1-13 → v1.9.1-14)
Use `prometheus_node_exporter_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-19 04:49:40 +09:00
Suguru Hirahara
5abd9cfb11 Update ntfy (v2.17.0-0 → v2.17.0-1)
Use `ntfy_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-19 03:14:00 +09:00
Suguru Hirahara
6e4a0ab2a1 Update ddclient (v4.0.0-0 → v4.0.0-1)
Use `ddclient_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-19 02:30:27 +09:00
Suguru Hirahara
1fc1da393d Update Hydrogen (v0.5.1-0 → v0.5.1-1)
Use `hydrogen_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-19 01:59:27 +09:00
Suguru Hirahara
5ee0b4f168 Upgrade Valkey (v9.0.2-0 → v9.0.2-1)
Use `valkey_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-18 18:40:31 +02:00
Suguru Hirahara
3651a07f88 Move an item for coturn down
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-18 16:20:41 +02:00
Suguru Hirahara
0cf3482eb2 Upgrade coturn (v4.8.0-1 → v4.8.0-2)
Use `coturn_restart_necessary`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-18 16:20:41 +02:00
renovate[bot]
6bfcec2d23 chore(deps): update docker.io/metio/matrix-alertmanager-receiver docker tag to v2026.2.18 2026-02-18 11:13:21 +02:00
Slavi Pantaleev
ff2a0be559 Rename matrix_s3_goofys _docker_image vars to _container_image
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 10:36:17 +02:00
Slavi Pantaleev
23203ff9d3 Bump backup_borg and postgres roles, update variable references
backup_borg v1.4.3-2.1.1-0 -> v1.4.3-2.1.1-1 (docker -> container rename)
postgres v18.2-1 -> v18.2-2 (pgloader docker -> container rename)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 10:14:41 +02:00
Slavi Pantaleev
ca2b6b0a27 Rename _docker_ vars to _container_ for kakaotalk, telegram, synapse
These three roles have multiple variable prefixes each:
- kakaotalk: matrix_appservice_kakaotalk + matrix_appservice_kakaotalk_node
- telegram: matrix_mautrix_telegram + matrix_mautrix_telegram_lottieconverter
- synapse: matrix_synapse + matrix_synapse_customized + matrix_synapse_rust_synapse_compress_state

For each: renamed _docker_image* to _container_image* (and _docker_src*,
_docker_repo* where applicable), added deprecation entries in
validate_config.yml, updated group_vars references, and moved
deprecation tasks to the front of validate_config.yml.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 09:48:38 +02:00
Slavi Pantaleev
f0e0f5ec56 Rename _docker_ vars to _container_ across 34 roles
Roles affected: appservice-discord, appservice-irc, beeper-linkedin,
heisenbridge, hookshot, mautrix-bluesky, mautrix-discord,
mautrix-gmessages, mautrix-googlechat, mautrix-signal, mautrix-slack,
mautrix-twitter, mautrix-whatsapp, mautrix-wsproxy, mx-puppet-groupme,
mx-puppet-steam, postmoogle, sms, steam, cactus-comments, element,
fluffychat, schildichat, conduit, corporal, dendrite,
ldap-registration-proxy, media-repo, pantalaimon,
prometheus-nginxlog-exporter, registration, sygnal, synapse-admin,
user-verification-service.

For each role: renamed _docker_image* variables to _container_image*
(and _docker_src_files_path to _container_src_files_path where
applicable), added deprecation entries in validate_config.yml, and
updated group_vars/docs references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:21:13 +02:00
Slavi Pantaleev
78d9f725b3 Rename matrix-bot-mjolnir _docker_ vars to _container_
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
Slavi Pantaleev
acf3d72c47 Rename matrix-bot-maubot _docker_ vars to _container_
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
Slavi Pantaleev
9d4ec45e72 Rename matrix-bot-matrix-reminder-bot _docker_ vars to _container_
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
Slavi Pantaleev
bca2c43368 Rename matrix-bot-matrix-registration-bot _docker_ vars to _container_
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
Slavi Pantaleev
528a32f6c1 Rename matrix-bot-honoroit _docker_ vars to _container_
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
Slavi Pantaleev
893e90a65f Rename matrix-bot-draupnir _docker_ vars to _container_
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
Slavi Pantaleev
426839c287 Rename matrix-bot-buscarron _docker_ vars to _container_
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
Slavi Pantaleev
51a357133b Rename matrix-appservice-draupnir-for-all _docker_ vars to _container_
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
Slavi Pantaleev
dbc71fccf7 Fix Renovate depName for Continuwuity to use the actual Docker image name
The previous depName (forgejo.ellis.link/continuwuation/-/packages/container/continuwuity/)
was a Forgejo web UI path, not the Docker image name. Renovate's docker datasource
needs the image name as used in `docker pull`.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
Slavi Pantaleev
f2ebc00e22 Pin Continuwuity version (main -> v0.5.5) 2026-02-18 08:16:07 +02:00
Slavi Pantaleev
669490f18e Refactor Continuwuity role: add version variable and rename docker to container
Add matrix_continuwuity_version with container_image_tag inheriting from it.
Rename all _docker_image* variables to _container_image* with deprecation notices.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 08:16:07 +02:00
renovate[bot]
dbe4b1db5f chore(deps): update ghcr.io/etkecc/baibot docker tag to v1.14.3 2026-02-18 07:20:23 +02:00
Suguru Hirahara
e5b48f22db Remove synapse-auto-invite-accept (#4943)
* Remove `matrix_synapse_ext_synapse_auto_accept_invite_worker_to_run_on`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Remove `matrix_synapse_ext_synapse_auto_accept_invite_accept_invites_only_direct_messages`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Remove `matrix_synapse_ext_synapse_auto_accept_invite_enabled`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Remove `matrix_synapse_container_image_customizations_auto_accept_invite_installation_enabled`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Remove `matrix_synapse_ext_synapse_auto_accept_invite_version`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Remove `matrix_synapse_ext_synapse_auto_accept_invite_accept_invites_only_from_local_users`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Remove roles/custom/matrix-synapse/tasks/ext/synapse-auto-accept-invite

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Update README.md

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Update container-images.md

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Update configuring-playbook.md

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Update configuring-playbook-synapse-auto-accept-invite.md

Reuse bf744319e0/docs/configuring-playbook-sliding-sync-proxy.md

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Update validate_config.yml

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Update CHANGELOG.md

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

---------

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
Co-authored-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-17 14:37:46 +02:00
Suguru Hirahara
bf744319e0 Relocate prometheus-nginxlog-exporter (#4938)
* Use `ansible-role-prometheus-nginxlog-exporter`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Replace `matrix-prometheus-nginxlog-exporter` and `matrix_prometheus_nginxlog_exporter`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Set `matrix-prometheus-nginxlog-exporter` to `prometheus_nginxlog_exporter_identifier`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Set `prometheus_nginxlog_exporter_container_image_*`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Remove `prometheus_nginxlog_exporter_container_image_registry_prefix_upstream`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Move `prometheus_nginxlog_exporter_base_path` to matrix_servers

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Remove unused variables for exposing the service

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Update configuring-playbook-prometheus-grafana.md

About prometheus-nginxlog-exporter

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Rename `prometheus_nginxlog_exporter_config_namespaces_matrix_source_tags_auto`

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Set variables

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Remove matrix-prometheus-nginxlog-exporter in favor of ansible-role-prometheus-nginxlog-exporter

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Update CHANGELOG.md

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

* Update setup.yml: sort entry

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>

---------

Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
Co-authored-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2026-02-17 13:40:07 +02:00
renovate[bot]
628bddb613 chore(deps): update dock.mau.dev/mautrix/whatsapp docker tag to v0.2602.0 2026-02-17 11:20:33 +02:00
339 changed files with 9090 additions and 10613 deletions

View File

@@ -1,2 +1,2 @@
[codespell]
ignore-words-list = aNULL,brose,doub,Udo,re-use,re-used,registr,shema
ignore-words-list = aNULL,brose,doub,Udo,re-use,re-used,registr,shema,commet,Commet

View File

@@ -9,34 +9,37 @@ name: Matrix CI
on: [push, pull_request] # yamllint disable-line rule:truthy
permissions:
contents: read
jobs:
yamllint:
name: yamllint
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v6
- name: Run yamllint
uses: frenck/action-yamllint@v1.5.0
ansible-lint:
name: ansible-lint
prek:
name: Run prek hooks
runs-on: ubuntu-latest
container:
image: docker.io/archlinux:base-devel
steps:
# git must be installed before checkout so it does a proper clone
# (with .git directory) instead of a tarball download.
- name: Install git
run: pacman -Sy --noconfirm git
- name: Check out
uses: actions/checkout@v6
- name: Run ansible-lint
uses: ansible/ansible-lint@v26.1.1
- name: Restore prek cache
uses: actions/cache@v5
with:
args: "roles/custom"
setup_python: "true"
working_directory: ""
requirements_file: requirements.yml
precommit:
name: Run pre-commit
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Run pre-commit
uses: pre-commit/action@v3.0.1
path: var/prek
key: arch-prek-v1-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Install dependencies
run: pacman -S --noconfirm --needed just mise python
- name: Run prek hooks
run: |
# The checkout action sets safe.directory using its own bundled
# git, which is separate from the pacman-installed git that prek uses.
git config --global --add safe.directory "$GITHUB_WORKSPACE"
just prek-run-on-all

1
.gitignore vendored
View File

@@ -4,6 +4,7 @@
.python-version
.idea/
.direnv/
/var/
# ignore roles pulled by ansible-galaxy
/roles/galaxy/*

View File

@@ -1,22 +1,21 @@
---
default_install_hook_types: [pre-push]
exclude: "LICENSES/"
exclude: "^(LICENSES/|var/)"
# See: https://pre-commit.com/hooks.html
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
# - id: check-executables-have-shebangs
- id: check-added-large-files
- id: check-case-conflict
- id: check-json
- id: check-shebang-scripts-are-executable
- id: check-toml
- id: trailing-whitespace
- id: end-of-file-fixer
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
rev: v2.4.2
hooks:
- id: codespell
args: ["--skip=*.po,*.pot,i18n/"]
@@ -24,3 +23,18 @@ repos:
rev: v6.2.0
hooks:
- id: reuse
- repo: https://github.com/ansible/ansible-lint
rev: v26.3.0
hooks:
- id: ansible-lint
files: '^roles/custom/'
args: ['roles/custom']
pass_filenames: false
- repo: local
hooks:
- id: check-examples-vars-migration-version
name: Check examples/vars.yml migration version matches expected
entry: bin/check-examples-vars-migration-version.sh
language: script
files: '(examples/vars\.yml|roles/custom/matrix_playbook_migration/defaults/main\.yml)'
pass_filenames: false

View File

@@ -1,3 +1,146 @@
# 2026-03-23
## Migration validation system introduced
Previously, when updating your setup, you had to remember to read the [CHANGELOG](CHANGELOG.md) file or risk breakage.
Now, the playbook includes a migration validation system that ensures you're aware of breaking changes before they affect your deployment.
You're now forced to acknowledge each breaking change, unless you wish to live dangerously (see below).
A new `matrix_playbook_migration_validated_version` variable has been introduced.
**New users** who started from the [example `vars.yml`](examples/vars.yml) file already have this variable set and do not need to do anything.
**Existing users** will need to add the following to their `vars.yml` file after reviewing all changelog entries up to now:
```yml
matrix_playbook_migration_validated_version: v2026.03.23.0
```
Going forward, whenever a breaking change is introduced the playbook will:
- bump its expected version value (`matrix_playbook_migration_expected_version`), causing a discrepancy with what you validated (`matrix_playbook_migration_validated_version`)
- fail when you run it with a helpful message listing what changed and linking to the relevant changelog entries
After reviewing and adapting your setup, you simply update the variable to the new version.
If you'd like to live dangerously and skip these checks (not recommended), you can set this once and be done with it:
```yml
matrix_playbook_migration_validated_version: "{{ matrix_playbook_migration_expected_version }}"
```
# 2026-03-19
## Matrix Authentication Service now prefers UNIX sockets for playbook-managed Postgres
When [Matrix Authentication Service](docs/configuring-playbook-matrix-authentication-service.md) (MAS) uses the playbook-managed Postgres service, it now connects to it via a [UNIX socket](https://en.wikipedia.org/wiki/Unix_domain_socket) by default instead of TCP.
This follows the same approach [applied to Synapse](#synapse-now-prefers-unix-sockets-for-playbook-managed-postgres-and-valkey) and reduces unnecessary container-network wiring, keeping local IPC off the network stack.
If you use an external Postgres server for MAS, this does not change your setup.
If you'd like to keep the previous TCP-based behavior, add the following configuration to your `vars.yml`:
```yaml
matrix_authentication_service_config_database_socket_enabled: false
```
# 2026-03-17
## Synapse now prefers UNIX sockets for playbook-managed Postgres and Valkey
When Synapse uses the playbook-managed Postgres and Valkey services, it now connects to them via [UNIX sockets](https://en.wikipedia.org/wiki/Unix_domain_socket) by default instead of TCP.
This reduces unnecessary container-network wiring and keeps local IPC off the network stack, which is a bit simpler and slightly more secure.
If you use an external Postgres server or external Redis/Valkey for Synapse, this does not change your setup.
If you'd like to keep the previous TCP-based behavior, add the following configuration to your `vars.yml`:
```yaml
matrix_synapse_database_socket_enabled: false
matrix_synapse_redis_path_enabled: false
```
# 2026-03-01
## (Potential BC Break) Synapse S3 media prefix is now applied consistently
The `matrix_synapse_ext_synapse_s3_storage_provider_config_prefix` variable is now wired consistently for both:
- the Synapse `s3_storage_provider` module configuration
- the `matrix-synapse-s3-storage-provider-migrate` migration script (`s3_media_upload --prefix`)
Previously, this variable could be set, but was not effectively applied by either of these paths.
**Affects**: users of [synapse-s3-storage-provider](docs/configuring-playbook-synapse-s3-storage-provider.md) who have configured a non-empty `matrix_synapse_ext_synapse_s3_storage_provider_config_prefix` value.
If your bucket data was uploaded without the prefix before this fix, enabling proper prefix usage can make existing objects appear missing until data is migrated/copied to the prefixed key namespace.
# 2026-02-26
## Internal refactor: merged the Synapse reverse-proxy companion role into `matrix-synapse`
The standalone `matrix-synapse-reverse-proxy-companion` role has been merged into the [matrix-synapse](roles/custom/matrix-synapse/) role.
This is not a user-facing change and does not change variable names (`matrix_synapse_reverse_proxy_companion_*` remain the same). The split looked clean on paper, but in practice both parts are tightly coupled through worker routing, tags (`setup-synapse`/`install-synapse`), and lifecycle ordering, so keeping them separate added coordination overhead with little practical benefit.
Compatibility note: existing companion-specific tags (`setup-synapse-reverse-proxy-companion` and `install-synapse-reverse-proxy-companion`) are still available.
With this change, Synapse and its reverse-proxy companion are managed in one role (`matrix-synapse`) while still keeping companion logic in dedicated task/template subdirectories for maintainability.
# 2026-02-21
## (BC Break) coturn is no longer auto-enabled by default
By default, the [coturn](./docs/configuring-playbook-turn.md) TURN server component is no longer enabled for every deployment.
This reduces resources and attach surface for deployments which:
- either don't need calls at all
- or use the modern [Matrix RTC](docs/configuring-playbook-matrix-rtc.md)/[Element Call](docs/configuring-playbook-element-call.md) stack.
Coturn is still auto-enabled when [Jitsi](./docs/configuring-playbook-jitsi.md) is enabled (`jitsi_enabled: true`), because Jitsi still depends on TURN for legacy Matrix integration.
Additionally, Coturn (when enabled) now defaults to using automatic IP detection of your server's external IP address, instead of assuming your Ansible inventory (`ansible_host`) points to a public address and using it for configuring `coturn_turn_external_ip_address`.
To restore the old behavior (needed for legacy call setups), add the following configuration to your `vars.yml`:
```yml
coturn_enabled: true
# If you'd like explicit control over the external IP address (like before), keep this too.
coturn_turn_external_ip_address: "{{ ansible_host }}"
```
## LiveKit TURN TLS is now automatically fronted by playbook-managed Traefik
For deployments that use the playbook-managed Traefik reverse-proxy, LiveKit TURN over TCP is now SSL-terminated at Traefik and passed as plain TCP to LiveKit (`turn.external_tls = true`) by default.
To disable this behavior, set `livekit_server_config_turn_external_tls: false` and the playbook will revert to the old behavior - using traefik-certs-dumper to extract SSL certificates out of Traefik and pass them to LiveKit for explicit SSL termination there.
If you are using `other-traefik-container` or [another reverse-proxy](./configuring-playbook-own-webserver.md), this change does **not** switch behavior automatically. That mode remains using certificate files in the container (Traefik certificates dumper flow) unless you explicitly set the TURN-Traefik mode variables to opt in.
# 2026-02-17
## (BC Break) prometheus-nginxlog-exporter role has been relocated and variable names need adjustments
The role for prometheus-nginxlog-exporter has been relocated to the [mother-of-all-self-hosting](https://github.com/mother-of-all-self-hosting) organization.
Along with the relocation, the `matrix_prometheus_nginxlog_exporter_` prefix on its variable names has been renamed to `prometheus_nginxlog_exporter_`, so you need to adjust your `vars.yml` configuration.
As always, the playbook would let you know about this and point out any variables you may have missed.
## synapse-auto-invite-accept has been removed from the playbook
[synapse-auto-invite-accept](./docs/configuring-playbook-synapse-auto-accept-invite.md) has been removed from the playbook, as the same functionality [has been integrated](https://github.com/element-hq/synapse/pull/17147) to Synapse since [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0).
See [this section](./docs/configuring-playbook-synapse-auto-accept-invite.md#native-alternative) for details about how to enable the function on Synapse.
If you're using any `matrix_synapse_ext_synapse_auto_accept_invite_*` variables, the playbook will let you know which one you'll need to remove from `vars.yml`.
# 2026-02-16
## matrix-appservice-slack has been removed from the playbook
@@ -704,8 +847,8 @@ If upstream synapse-admin picks up the pace and improves, the etke.cc fork may d
If you'd like to switch back to the original synapse-admin software, you can do so by adding the following configuration to your `vars.yml` file:
```yaml
matrix_synapse_admin_docker_image: "{{ matrix_synapse_admin_docker_image_registry_prefix }}awesometechnologies/synapse-admin:{{ matrix_synapse_admin_version }}"
matrix_synapse_admin_docker_image_registry_prefix_upstream: docker.io/
matrix_synapse_admin_container_image: "{{ matrix_synapse_admin_container_image_registry_prefix }}awesometechnologies/synapse-admin:{{ matrix_synapse_admin_version }}"
matrix_synapse_admin_container_image_registry_prefix_upstream: docker.io/
matrix_synapse_admin_version: 0.10.3

View File

@@ -64,6 +64,7 @@ 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/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) |
@@ -74,13 +75,12 @@ Services that run on the server to make the various parts of your installation w
| Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- |
| [PostgreSQL](https://www.postgresql.org/)| ✅ | Database for Synapse. [Using an external PostgreSQL server](docs/configuring-playbook-external-postgres.md) is also possible. | [Link](docs/configuring-playbook-external-postgres.md) |
| [coturn](https://github.com/coturn/coturn) | ✅ | STUN/TURN server for WebRTC audio/video calls | [Link](docs/configuring-playbook-turn.md) |
| [Traefik](https://doc.traefik.io/traefik/) | ✅ | Web server, listening on ports 80, 443 and 8448 - standing in front of all the other services. [Using your own webserver](docs/configuring-playbook-own-webserver.md) is also possible. | [Link](docs/configuring-playbook-traefik.md) |
| [Let's Encrypt](https://letsencrypt.org/) | ✅ | Free SSL certificate, which secures the connection to all components | [Link](docs/configuring-playbook-ssl-certificates.md) |
| [Exim](https://www.exim.org/) | ✅ | Mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server) | [Link](docs/configuring-playbook-email.md) |
| [coturn](https://github.com/coturn/coturn) | ❌ | STUN/TURN server for WebRTC audio/video calls | [Link](docs/configuring-playbook-turn.md) |
| [ddclient](https://github.com/linuxserver/docker-ddclient) | ❌ | Dynamic DNS | [Link](docs/configuring-playbook-dynamic-dns.md) |
| [LiveKit Server](https://github.com/livekit/livekit) | ❌ | WebRTC server for audio/video calls | [Link](docs/configuring-playbook-livekit-server.md) |
| [Livekit JWT Service](https://github.com/livekit/livekit-jwt-service) | ❌ | JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md) | [Link](docs/configuring-playbook-livekit-jwt-service.md) |
| Matrix RTC stack | ❌ | Supporting components ([LiveKit Server](docs/configuring-playbook-livekit-server.md) and [LiveKit JWT Service](docs/configuring-playbook-livekit-jwt-service.md)) for in-app audio/video calls for Matrix clients | [Link](docs/configuring-playbook-matrix-rtc.md) |
### Authentication
@@ -171,7 +171,6 @@ Various services that don't fit any other categories.
| Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- |
| [synapse_auto_accept_invite](https://github.com/matrix-org/synapse-auto-accept-invite) | ❌ | Synapse module to automatically accept invites | [Link](docs/configuring-playbook-synapse-auto-accept-invite.md) |
| [synapse_auto_compressor](https://github.com/matrix-org/rust-synapse-compress-state/#automated-tool-synapse_auto_compressor) | ❌ | Cli tool that automatically compresses `state_groups` database table in background | [Link](docs/configuring-playbook-synapse-auto-compressor.md) |
| [Matrix Corporal](https://github.com/devture/matrix-corporal) (advanced) | ❌ | Reconciliator and gateway for a managed Matrix server | [Link](docs/configuring-playbook-matrix-corporal.md) |
| [Matrix.to](https://github.com/matrix-org/matrix.to) | ❌ | Simple URL redirection service for the Matrix ecosystem | [Link](docs/configuring-playbook-matrixto.md) |

View File

@@ -0,0 +1,35 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2026 Slavi Pantaleev
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Ensures that the migration validated version in examples/vars.yml
# matches the expected version in the matrix_playbook_migration role defaults.
set -euo pipefail
defaults_file="roles/custom/matrix_playbook_migration/defaults/main.yml"
examples_file="examples/vars.yml"
expected_version=$(grep -oP '^matrix_playbook_migration_expected_version:\s*"?\K[^"]+' "$defaults_file")
examples_version=$(grep -oP '^matrix_playbook_migration_validated_version:\s*"?\K[^"]+' "$examples_file")
if [ -z "$expected_version" ]; then
echo "ERROR: Could not extract matrix_playbook_migration_expected_version from $defaults_file"
exit 1
fi
if [ -z "$examples_version" ]; then
echo "ERROR: Could not extract matrix_playbook_migration_validated_version from $examples_file"
exit 1
fi
if [ "$expected_version" != "$examples_version" ]; then
echo "ERROR: Migration version mismatch!"
echo " $defaults_file has expected version: $expected_version"
echo " $examples_file has validated version: $examples_version"
echo ""
echo "Please update $examples_file to match."
exit 1
fi

0
bin/rebuild-mautrix-meta-instagram.sh Normal file → Executable file
View File

View File

@@ -39,16 +39,35 @@ Depending on your current `vars.yml` file and desired configuration, **you may r
To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
Authentication can be configured in one of two mutually-exclusive ways:
- **Password authentication** (`matrix_bot_baibot_config_user_password`) - recommended for most playbook-managed setups, because it integrates with automatic user creation flow used by the playbook, and auto-creates the bot account
- **Access-token authentication** (`matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id`) - useful for specific [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md)/OIDC setups where password authentication is not available or not desired
Even when [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) is enabled, password authentication is still typically the best fit for baibot if you're using a playbook-managed bot account.
For upstream details, see baibot's [🔐 Authentication](https://github.com/etkecc/baibot/blob/main/docs/configuration/authentication.md) documentation.
```yaml
matrix_bot_baibot_enabled: true
# Uncomment and adjust this part if you'd like to use a username different than the default
# matrix_bot_baibot_config_user_mxid_localpart: baibot
# Authentication mode (choose exactly one):
#
# 1) Password authentication (recommended for most setups)
# Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`.
# If you'd like to change this password subsequently, see the details below.
matrix_bot_baibot_config_user_password: 'PASSWORD_FOR_THE_BOT'
# 2) Access-token authentication (for MAS/OIDC-enabled homeservers)
# matrix_bot_baibot_config_user_access_token: 'YOUR_MAS_COMPATIBILITY_TOKEN_HERE'
# matrix_bot_baibot_config_user_device_id: 'BAIBOT'
#
# You can generate a compatibility token for MAS with:
# mas-cli manage issue-compatibility-token <username> [device_id]
# An optional passphrase to use for backing up and recovering the bot's encryption keys.
# You can create one with a command like `pwgen -s 64 1`.
#
@@ -387,13 +406,15 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-use
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account when password authentication is used.
- 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.
- 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_baibot_config_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password.
- If you change the bot password (`matrix_bot_baibot_config_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password. (This note applies to password authentication mode.)
## Usage

View File

@@ -0,0 +1,71 @@
<!--
SPDX-FileCopyrightText: 2022 MDAD project contributors
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
SPDX-FileCopyrightText: 2024 - 2026 Slavi Pantaleev
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Setting up Sable (optional)
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.
## Adjusting DNS records
By default, this playbook installs Sable on the `sable.` subdomain (`sable.example.com`) and requires you to create a CNAME record for `sable`, which targets `matrix.example.com`.
When setting, replace `example.com` with your own.
## Adjusting the playbook configuration
To enable Sable, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
sable_enabled: true
```
### Adjusting the Sable URL (optional)
By tweaking the `sable_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
# Switch to a different domain (`app.example.com`) than the default one (`sable.example.com`)
sable_hostname: "app.{{ matrix_domain }}"
# Expose under the /sable subpath
# sable_path_prefix: /sable
```
After changing the domain, **you may need to adjust your DNS** records to point the Sable domain to the Matrix server.
**Note**: while there is a `sable_path_prefix` variable for changing the path where Sable is served, overriding it is [not possible](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3701), because Sable requires an application rebuild (with a tweaked build config) to be functional under a custom path. You'd need to serve Sable at a dedicated subdomain.
### Extending the configuration
There are some additional things you may wish to configure about the component.
Take a look at:
- `roles/galaxy/sable/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/galaxy/sable/templates/config.json.j2` for the component's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `sable_configuration_extension_json` variable
## Installing
After configuring the playbook and [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- 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-sable`.

View File

@@ -58,9 +58,14 @@ matrix_continuwuity_environment_variables_extension: |
Unlike other homeserver implementations (like Synapse and Dendrite), continuwuity does not support creating users via the command line or via the playbook.
If you followed the instructions above (see [Adjusting the playbook configuration](#adjusting-the-playbook-configuration)), you should have registration enabled and protected by a registration token.
On first startup, Continuwuity creates a special one-time-use registration token and logs it to the server's console. To access this, you will need to SSH into the server and run the following command:
This should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users.
```sh
# Adjust the duration if necessary or remove the whole --since argument
journalctl -u matrix-continuwuity.service --since="10 minutes ago"
```
Find the token, highlight it, and copy it (ctrl+shift+C). This token should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users.
The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**.

View File

@@ -17,6 +17,16 @@ The [Ansible role for exim-relay](https://github.com/mother-of-all-self-hosting/
- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md) online
- 📁 `roles/galaxy/exim_relay/docs/configuring-exim-relay.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)
## Why use exim-relay?
**Benefits of using exim-relay** instead of configuring SMTP directly in each service:
1. **Final delivery capability**: Can deliver emails directly if you don't have an SMTP server
2. **Centralized configuration**: Configure your upstream SMTP server once in exim-relay, then point all services ([Synapse](configuring-playbook-synapse.md), [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md), etc.) there—no need to configure SMTP in each component
3. **Local spooling**: Stores messages locally and retries delivery if your upstream SMTP server is temporarily unavailable
## Firewall settings
No matter whether you send email directly (the default) or you relay email through another host, you'll probably need to allow outgoing traffic for TCP ports 25/587 (depending on configuration).

View File

@@ -18,6 +18,9 @@ SPDX-License-Identifier: AGPL-3.0-or-later
The playbook can install and configure the [Jitsi](https://jitsi.org/) video-conferencing platform for you.
Because Jitsi still requires a TURN server, enabling Jitsi
automatically enables coturn (`coturn_enabled: true`) unless you explicitly disable it.
Jitsi is an open source video-conferencing platform. It can not only be integrated with Element clients ([Element Web](configuring-playbook-client-element-web.md)/Desktop, Android and iOS) as a widget, but also be used as standalone web app.
💡 If you're into experimental technology, you may also be interested in trying out [Element Call](configuring-playbook-element-call.md) - a native Matrix video conferencing application.

View File

@@ -15,7 +15,7 @@ LiveKit Server is an open source project that provides scalable, multi-user conf
The [Ansible role for LiveKit Server](https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring LiveKit Server, you can check them via:
- 🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server/blob/main/docs/configuring-livekit-server.md) online
- 📁 `roles/galaxy/livekit-server/docs/configuring-livekit-server.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)
- 📁 `roles/galaxy/livekit_server/docs/configuring-livekit-server.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)
## Adjusting firewall rules
@@ -29,10 +29,43 @@ To ensure LiveKit Server functions correctly, the following firewall rules and p
- `5350/tcp`: TURN/TCP. Also see the [Limitations](#limitations) section below.
💡 The suggestions above are inspired by the upstream [Ports and Firewall](https://docs.livekit.io/home/self-hosting/ports-firewall/) documentation based on how LiveKit is configured in the playbook. If you've using custom configuration for the LiveKit Server role, you may need to adjust the firewall rules accordingly.
- `30000-30020/udp`: TURN relay range used by LiveKit's embedded TURN server.
💡 The suggestions above are inspired by the upstream [Ports and Firewall](https://docs.livekit.io/home/self-hosting/ports-firewall/) documentation based on how LiveKit is configured in the playbook. If you're using custom configuration for the LiveKit Server role, you may need to adjust firewall rules accordingly.
## TURN TLS handling
When `matrix_playbook_reverse_proxy_type` is `playbook-managed-traefik` (which is the default for this playbook), TURN over TCP is terminated by Traefik and forwarded to LiveKit with `turn.external_tls = true`. In this playbook default, this mode is enabled automatically when SSL is enabled and TURN is enabled.
- The playbook installs a dedicated Traefik TCP entrypoint for TURN (`matrix-livekit-turn`) by default and binds it to `tcp/5350`.
- `livekit_server_config_turn_external_tls` is automatically enabled for this setup.
- Because Traefik handles TLS, LiveKit no longer needs certificate-file paths for TURN in this mode.
To opt out and keep TURN TLS termination in LiveKit itself, set:
```yml
livekit_server_config_turn_external_tls: false
```
In this playbook, certificate paths are managed automatically via `group_vars/matrix_servers` when certificate dumping is enabled.
If your setup uses `other-traefik-container` or [another reverse-proxy](./configuring-playbook-own-webserver.md), behavior is unchanged by default and still relies on certificates being available inside the container as before.
Deployments using `other-traefik-container` can opt into the same Traefik-terminated mode there, by setting:
```yml
livekit_server_config_turn_external_tls: true
livekit_server_container_labels_turn_traefik_enabled: true
livekit_server_container_labels_turn_traefik_entrypoints: "<your-livekit-turn-traffic-entrypoint>"
```
and configuring their own Traefik TCP entrypoint dedicated to LiveKit TURN traffic.
## Limitations
For some reason, LiveKit Server's TURN ports (`3479/udp` and `5350/tcp`) are not reachable over IPv6 regardless of whether you've [enabled IPv6](./configuring-ipv6.md) for your server.
LiveKit Server's TURN listener behavior depends on where TLS is terminated:
It seems like LiveKit Server intentionally only listens on `udp4` and `tcp4` as seen [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L128) and [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L92).
- Direct LiveKit TURN listeners (`livekit_server_config_turn_external_tls: false`) still use IPv4-only sockets for `3479/udp` and `5350/tcp`, so IPv6 connectivity to these endpoints is not possible.
- With [TURN TLS handling](#turn-tls-handling) (`livekit_server_config_turn_external_tls: true`), the playbook's dedicated `matrix-livekit-turn` TCP entrypoint can still listen on both IPv4 and IPv6. Traefik then forwards TURN/TCP to LiveKit.
It appears that LiveKit Server intentionally only listens on `udp4` and `tcp4` in direct mode, as seen [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L128) and [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L92).

View File

@@ -17,8 +17,8 @@ The Matrix RTC stack is a set of supporting components ([LiveKit Server](configu
- A [Synapse](configuring-playbook-synapse.md) homeserver (see the warning below)
- Various experimental features for the Synapse homeserver which Element Call [requires](https://github.com/element-hq/element-call/blob/93ae2aed9841e0b066d515c56bd4c122d2b591b2/docs/self-hosting.md#a-matrix-homeserver) (automatically done when Element Call is enabled)
- A [LiveKit Server](configuring-playbook-livekit-server.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](#decide-between-element-call-vs-just-the-matrix-rtc-stack))
- The [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](#decide-between-element-call-vs-just-the-matrix-rtc-stack))
- A [LiveKit Server](configuring-playbook-livekit-server.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack))
- The [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack))
- A client compatible with Element Call. As of 2025-03-15, that's just [Element Web](configuring-playbook-client-element-web.md) and the Element X mobile clients (iOS and Android).
> [!WARNING]

View File

@@ -83,7 +83,7 @@ See the project's [documentation](https://github.com/martin-helmich/prometheus-n
To enable it, add the following configuration to your `vars.yml` file:
```yaml
matrix_prometheus_nginxlog_exporter_enabled: true
prometheus_nginxlog_exporter_enabled: true
```
If you enable Grafana, a dedicated `NGINX PROXY` Grafana dashboard will be created.
@@ -95,8 +95,8 @@ If you enable Grafana, a dedicated `NGINX PROXY` Grafana dashboard will be creat
At the moment of writing only images for `amd64` and `arm64` architectures are available. The playbook currently does not support [self-building](./self-building.md) a container image on other architectures. You can however use a custom-build image by setting:
```yaml
matrix_prometheus_nginxlog_exporter_docker_image_arch_check_enabled: false
matrix_prometheus_nginxlog_exporter_docker_image: path/to/docker/image:tag
prometheus_nginxlog_exporter_container_image_arch_check_enabled: false
prometheus_nginxlog_exporter_container_image: path/to/docker/image:tag
```
### Extending the configuration
@@ -106,7 +106,7 @@ There are some additional things you may wish to configure about Prometheus and
Take a look at:
- [Prometheus role](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus)'s [`defaults/main.yml`](https://github.com/mother-of-all-self-hosting/ansible-role-prometheus/blob/main/defaults/main.yml) for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `prometheus_configuration_extension_yaml` variable
- `roles/custom/matrix-prometheus-nginxlog-exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/galaxy/prometheus_nginxlog_exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
## Adjusting the playbook configuration — Grafana
@@ -178,11 +178,11 @@ Name | Description
`matrix_metrics_exposure_http_basic_auth_enabled`|Set this to `true` to protect all `https://matrix.example.com/metrics/*` endpoints with [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) (see the other variables below for supplying the actual credentials).
`matrix_metrics_exposure_http_basic_auth_users`|Set this to the Basic Authentication credentials (raw `htpasswd` file content) used to protect `/metrics/*`. This htpasswd-file needs to be generated with the `htpasswd` tool and can include multiple username/password pairs.
`prometheus_node_exporter_enabled`|Set this to `true` to enable the node (general system stats) exporter (locally, on the container network).
`prometheus_node_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the node (general system stats) metrics on `https://matrix.example.com/metrics/node-exporter`.
`prometheus_node_exporter_container_labels_metrics_enabled`|Set this to `true` to expose the node (general system stats) metrics on `https://matrix.example.com/metrics/node-exporter`.
`prometheus_postgres_exporter_enabled`|Set this to `true` to enable the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) (locally, on the container network).
`prometheus_postgres_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) metrics on `https://matrix.example.com/metrics/postgres-exporter`.
`matrix_prometheus_nginxlog_exporter_enabled`|Set this to `true` to enable the [nginx Log exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) (locally, on the container network).
`matrix_prometheus_nginxlog_exporter_metrics_proxying_enabled`|Set this to `true` to expose the [nginx Log exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) metrics on `https://matrix.example.com/metrics/nginxlog`.
`prometheus_postgres_exporter_container_labels_metrics_enabled`|Set this to `true` to expose the [Postgres exporter](#enable-metrics-and-graphs-for-postgres-optional) metrics on `https://matrix.example.com/metrics/postgres-exporter`.
`prometheus_nginxlog_exporter_enabled`|Set this to `true` to enable the [prometheus-nginxlog-exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) (locally, on the container network).
`prometheus_nginxlog_exporter_container_labels_metrics_enabled`|Set this to `true` to expose the [prometheus-nginxlog-exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) metrics on `https://matrix.example.com/metrics/nginxlog`.
### Expose metrics of other services/roles

View File

@@ -1,45 +1,26 @@
<!--
SPDX-FileCopyrightText: 2024 MDAD project contributors
SPDX-FileCopyrightText: 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2024 Suguru Hirahara
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
SPDX-FileCopyrightText: 2019-2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 Tulir Asokan
SPDX-FileCopyrightText: 2021, 2024 MDAD project contributors
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2023 Justin Croonenberghs
SPDX-FileCopyrightText: 2023 Kuba Orlik
SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty
SPDX-FileCopyrightText: 2023 Samuel Meenzen
SPDX-FileCopyrightText: 2024 Fabio Bonelli
SPDX-FileCopyrightText: 2024-2026 Suguru Hirahara
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Setting up Synapse Auto Invite Accept (optional)
# Setting up Synapse Auto Invite Accept (optional, removed)
The playbook can install and configure [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) for you.
In short, it automatically accepts room invites. You can specify that only 1:1 room invites are auto-accepted. Defaults to false if not specified.
See the project's [documentation](https://github.com/matrix-org/synapse-auto-accept-invite/blob/main/README.md) to learn what it does and why it might be useful to you.
**Note**: Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0), the same feature [has been merged](https://github.com/element-hq/synapse/pull/17147) into Synapse (see the [Native alternative](#native-alternative) section below). You'd better use the native feature, instead of the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) 3rd party module.
## Adjusting the playbook configuration
If you decide that you'd like to let this playbook install the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite module for you, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_synapse_ext_synapse_auto_accept_invite_enabled: true
matrix_synapse_ext_synapse_auto_accept_invite_accept_invites_only_direct_messages: true
```
### Synapse worker deployments
In a [workerized Synapse deployment](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/c9a842147e09647c355799ca024d65a5de66b099/docs/configuring-playbook-synapse.md#load-balancing-with-workers) it is possible to run this module on a worker to reduce the load on the main process (Default is `null`). For example, add this to your configuration:
```yaml
matrix_synapse_ext_synapse_auto_accept_invite_worker_to_run_on: 'matrix-synapse-worker-generic-0'
```
There might be an [issue with federation](https://github.com/matrix-org/synapse-auto-accept-invite/issues/18).
🪦 The playbook used to be able to install and configure [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite), but no longer includes this component, as the same functionality [has been integrated](https://github.com/element-hq/synapse/pull/17147) to Synapse since [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0).
## Native alternative
Since Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0), the functionality provided by the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) 3rd party module [has been made](https://github.com/element-hq/synapse/pull/17147) part of Synapse.
Here's example configuration for using the **native** Synapse feature:
```yaml

View File

@@ -177,6 +177,8 @@ By default, we periodically ensure that all local files are uploaded to S3 and a
- … invoked via the `matrix-synapse-s3-storage-provider-migrate.service` service
- … triggered by the `matrix-synapse-s3-storage-provider-migrate.timer` timer, every day at 05:00
The same `migrate` script also prunes empty directories in the local media repository (`remote_content` and `remote_thumbnail`) after upload/delete operations.
So… you don't need to perform any maintenance yourself.
The schedule is defined in the format of systemd timer calendar. To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):

View File

@@ -76,10 +76,33 @@ The only thing you **cannot** do is mix [generic workers](#generic-workers) and
When Synapse workers are enabled, the integrated [Postgres database is tuned](maintenance-postgres.md#tuning-postgresql), so that the maximum number of Postgres connections are increased from `200` to `500`. If you need to decrease or increase the number of maximum Postgres connections further, use the `postgres_max_connections` variable.
A separate Ansible role (`matrix-synapse-reverse-proxy-companion`) and component handles load-balancing for workers. This role/component is automatically enabled when you enable workers. Make sure to use the `setup-all` tag (not `install-all`!) during the playbook's [installation](./installing.md) process, especially if you're disabling workers, so that components may be installed/uninstalled correctly.
The `matrix-synapse` role also manages the `matrix-synapse-reverse-proxy-companion` component for load-balancing with workers. This component is automatically enabled when you enable workers. Make sure to use the `setup-all` tag (not `install-all`!) during the playbook's [installation](./installing.md) process, especially if you're disabling workers, so that components may be installed/uninstalled correctly.
In case any problems occur, make sure to have a look at the [list of synapse issues about workers](https://github.com/element-hq/synapse/issues?q=workers+in%3Atitle) and your `journalctl --unit 'matrix-*'`.
### Limit joining heavy rooms on constrained hosts
If your server is underpowered, joining heavy rooms can cause Synapse to consume a lot of resources and be unavailable for long (while it catches up).
To avoid this, Synapse can be configured to reject joins for remote rooms that are too complex before users enter them.
Complexity is computed as `current_state_events / 500` (Synapse state event count for current room state). When the resulting value is higher than `matrix_synapse_limit_remote_rooms_complexity` and `matrix_synapse_limit_remote_rooms_enabled` is `true`, Synapse blocks joining the room.
We recommend using this as a guardrail on low-resource servers:
```yaml
matrix_synapse_limit_remote_rooms_enabled: true
# Tweak as necessary
matrix_synapse_limit_remote_rooms_complexity: 1.0
# Uncomment and tweak if necessary
# matrix_synapse_limit_remote_rooms_complexity_error: "Your homeserver is unable to join rooms this large or complex. Please speak to your server administrator, or upgrade your instance to join this room."
# If you'd like your admins to be exempt from this limit, uncomment the line below
# matrix_synapse_limit_remote_rooms_admins_can_join: true
```
### Synapse + OpenID Connect for Single-Sign-On
💡 An alternative to setting up OIDC in Synapse is to use [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) (MAS). Newer clients (like Element X) only support SSO-based authentication via MAS and not via the legacy Synapse OIDC setup described below. That said, MAS is still a new experimental service which comes with its own downsides. Consult its documentation to learn if it will be a good fit for your deployment.

View File

@@ -13,34 +13,50 @@ SPDX-License-Identifier: AGPL-3.0-or-later
# Configuring a TURN server (optional, advanced)
By default, this playbook installs and configures the [coturn](https://github.com/coturn/coturn) as a TURN server, through which clients can make audio/video calls even from [NAT](https://en.wikipedia.org/wiki/Network_address_translation)-ed networks. It also configures the Synapse chat server by default, so that it points to the coturn TURN server installed by the playbook. If that's okay, you can skip this document.
By default, the [coturn](https://github.com/coturn/coturn) TURN server component is enabled automatically only when [Jitsi](configuring-playbook-jitsi.md) is enabled. If you're not using Jitsi, coturn is not enabled by default.
If you'd like to stop the playbook installing the server, see the section [below](#disabling-coturn) to check the configuration for disabling it.
If you explicitly need coturn while not using Jitsi, enable it with:
```yaml
coturn_enabled: true
```
and configure its IP-related settings in the section below.
If you'd like coturn to stay disabled even when Jitsi is enabled, or if you prefer to use an external TURN provider, see [disabling coturn](#disabling-coturn) section below.
When Coturn is not enabled, homeservers (like Synapse) would not point to TURN servers and *legacy* audio/video call functionality may fail. If you're using [Matrix RTC](configuring-playbook-matrix-rtc.md) (for [Element Call](configuring-playbook-element-call.md)), you likely don't have a need to enable coturn.
## Adjusting firewall rules
To ensure Coturn functions correctly, the following firewall rules and port forwarding settings are required when coturn is enabled:
- `3478/tcp`: STUN/TURN over TCP
- `3478/udp`: STUN/TURN over UDP
- `5349/tcp`: TURN over TCP
- `5349/udp`: TURN over UDP
- `49152-49172/udp`: TURN/UDP relay range
If LiveKit's embedded TURN is enabled at the same time (for MatrixRTC/Element Call), keep the Coturn relay range distinct from LiveKit's relay range (`livekit_server_config_turn_relay_range_start`/`livekit_server_config_turn_relay_range_end`).
💡 Docker configures the server's internal firewall for you. In most cases, you don't need to do anything special on the host itself.
## Adjusting the playbook configuration
### Define public IP manually (optional)
In the `hosts` file we explicitly ask for your server's external IP address when defining `ansible_host`, because the same value is used for configuring coturn.
If you'd rather use a local IP for `ansible_host`, add the following configuration to your `vars.yml` file. Make sure to replace `YOUR_PUBLIC_IP` with the pubic IP used by the server.
If you enable coturn (either via Jitsi or manually), we recommend that you configure the public IP addresses of your server in the `vars.yml` file:
```yaml
coturn_turn_external_ip_address: "YOUR_PUBLIC_IP"
# You can define multiple IP addresses if your server has multiple external IP addresses
coturn_turn_external_ip_addresses: ["YOUR_PUBLIC_IP"]
```
If you'd like to rely on external IP address auto-detection (not recommended unless you need it), set an empty value to the variable. The playbook will automatically contact an [echoip](https://github.com/mpolden/echoip)-compatible service (`https://ifconfig.co/json` by default) to determine your server's IP address. This API endpoint is configurable via the `coturn_turn_external_ip_address_auto_detection_echoip_service_url` variable.
If you'd like to rely on external IP address auto-detection (not recommended unless you need it), avoid configuring this variable. The playbook will automatically contact an [echoip](https://github.com/mpolden/echoip)-compatible service (`https://ifconfig.co/json` by default) to determine your server's IP address. This API endpoint is configurable via the `coturn_turn_external_ip_address_auto_detection_echoip_service_url` variable.
>[!NOTE]
> You can self-host the echoip service by using the [Mother-of-All-Self-Hosting (MASH)](https://github.com/mother-of-all-self-hosting/mash-playbook) Ansible playbook. See [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/echoip.md) for the instruction to install it with the playbook. If you are wondering how to use it for your Matrix server, refer to [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/setting-up-services-on-mdad-server.md) for the overview.
If your server has multiple external IP addresses, the coturn role offers a different variable for specifying them:
```yaml
# Note: coturn_turn_external_ip_addresses is different than coturn_turn_external_ip_address
coturn_turn_external_ip_addresses: ['1.2.3.4', '4.5.6.7']
```
### Change the authentication mechanism (optional)
The playbook uses the [`auth-secret` authentication method](https://github.com/coturn/coturn/blob/873cabd6a2e5edd7e9cc5662cac3ffe47fe87a8e/README.turnserver#L186-L199) by default, but you may switch to the [`lt-cred-mech` method](https://github.com/coturn/coturn/blob/873cabd6a2e5edd7e9cc5662cac3ffe47fe87a8e/README.turnserver#L178) which [some report](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3191) to be working better.
@@ -119,14 +135,14 @@ Take a look at:
## Disabling coturn
If, for some reason, you'd like for the playbook to not install coturn (or to uninstall it if it was previously installed), add the following configuration to your `vars.yml` file:
Coturn is only enabled by default when [Jitsi](configuring-playbook-jitsi.md) is enabled. In most instances, you don't need to explicitly disable it.
To force the playbook to not install Coturn (even when Jitsi is enabled), add the following configuration to your `vars.yml` file:
```yaml
coturn_enabled: false
```
In that case, Synapse would not point to any coturn servers and audio/video call functionality may fail.
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:

View File

@@ -87,6 +87,8 @@ 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/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/)
@@ -233,8 +235,6 @@ Various services that don't fit any other categories.
- [Setting up Matrix RTC](configuring-playbook-matrix-rtc.md) (optional)
- [Setting up Synapse Auto Invite Accept](configuring-playbook-synapse-auto-accept-invite.md)
- [Setting up synapse-auto-compressor](configuring-playbook-synapse-auto-compressor.md) for compressing the database on Synapse homeservers
- [Setting up Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced)
@@ -290,3 +290,5 @@ Various services that don't fit any other categories.
- [Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Slack bridging](configuring-playbook-bridge-mautrix-slack.md))
- [Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md))
- [Setting up Synapse Auto Invite Accept](configuring-playbook-synapse-auto-accept-invite.md) (removed; since Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0) the same feature is available natively.)

View File

@@ -39,6 +39,7 @@ Web clients for Matrix that you can host on your own domains.
| [Element Web](configuring-playbook-client-element-web.md) | [vectorim/element-web](https://hub.docker.com/r/vectorim/element-web/) | ✅ | Default Matrix web client, configured to connect to your own Synapse server |
| [Hydrogen](configuring-playbook-client-hydrogen.md) | [element-hq/hydrogen-web](https://ghcr.io/element-hq/hydrogen-web) | ❌ | Lightweight Matrix client with legacy and mobile browser support |
| [Cinny](configuring-playbook-client-cinny.md) | [ajbura/cinny](https://hub.docker.com/r/ajbura/cinny) | ❌ | Simple, elegant and secure web client |
| [Sable](configuring-playbook-client-sable.md) | [7w1/sable](https://ghcr.io/7w1/sable) | ❌ | Simple, elegant and secure web client |
| [SchildiChat Web](configuring-playbook-client-schildichat-web.md) | [etke.cc/schildichat-web](https://ghcr.io/etkecc/schildichat-web) | ❌ | Based on Element Web, with a more traditional instant messaging experience |
## Server Components
@@ -149,7 +150,6 @@ Various services that don't fit any other categories.
| Service | Container image | Default? | Description |
| ------- | --------------- | -------- | ----------- |
| [synapse_auto_accept_invite](configuring-playbook-synapse-auto-accept-invite.md) | (N/A) | ❌ | Synapse module to automatically accept invites |
| [synapse_auto_compressor](configuring-playbook-synapse-auto-compressor.md) | [mb-saces/rust-synapse-tools](https://gitlab.com/mb-saces/rust-synapse-tools/container_registry) | ❌ | Cli tool that automatically compresses Synapse's `state_groups` database table in background |
| [Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced) | [devture/matrix-corporal](https://hub.docker.com/r/devture/matrix-corporal/) | ❌ | Reconciliator and gateway for a managed Matrix server |
| [Etherpad](configuring-playbook-etherpad.md) | [etherpad/etherpad](https://hub.docker.com/r/etherpad/etherpad/) | ❌ | Open source collaborative text editor |
@@ -185,3 +185,4 @@ The list of the deprecated or unmaintained services is available [here](configur
| [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) | [mx-puppet/slack/mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/container_registry) | ❌ | Bridge to [Slack](https://slack.com) |
| [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) | [sorunome/mx-puppet-twitter](https://hub.docker.com/r/sorunome/mx-puppet-twitter) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) |
| [sliding-sync](configuring-playbook-sliding-sync-proxy.md) | [matrix-org/sliding-sync](https://ghcr.io/matrix-org/sliding-sync) | ❌ | Sliding Sync support for clients which require it (like old Element X versions, before it got switched to Simplified Sliding Sync) |
| [synapse_auto_accept_invite](configuring-playbook-synapse-auto-accept-invite.md) | (N/A) | ❌ | Synapse module to automatically accept invites |

View File

@@ -305,18 +305,23 @@ See [Serving the base domain](configuring-playbook-base-domain-serving.md).
### How do I optimize this setup for a low-power server?
For a low-power server, it's best to use an alternative homeserver implementation (other than [Synapse](configuring-playbook-synapse.md)).
You can disable some not-so-important services to save on memory.
```yaml
# Disabling this will prevent email-notifications and other such things from working.
exim_relay_enabled: false
```
# You can also disable this to save more RAM,
# at the expense of audio/video calls being unreliable.
coturn_enabled: false
If you've installed [Jitsi](configuring-playbook-jitsi.md) (not installed by default), there are additional optimizations listed on its documentation page that you can perform.
# This makes Synapse not keep track of who is online/offline.
#
#### Synapse-specific optimizations
If you're using [Synapse](configuring-playbook-synapse.md), you can also consider the following optimizations:
```yaml
# Keeping track of this and announcing such online-status in federated rooms with
# hundreds of servers inside is insanely heavy (https://github.com/matrix-org/synapse/issues/3971).
#
@@ -324,18 +329,14 @@ coturn_enabled: false
matrix_synapse_presence_enabled: false
```
You can also consider implementing a restriction on room complexity, in order to prevent users from joining very heavy rooms:
You can also consider [implementing a restriction on room complexity](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts), in order to prevent users from joining very heavy rooms:
```yaml
matrix_synapse_configuration_extension_yaml: |
limit_remote_rooms:
enabled: true
complexity: 1.0 # this limits joining complex (~large) rooms, can be
# increased, but larger values can require more RAM
# See: docs/configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts
matrix_synapse_limit_remote_rooms_enabled: true
matrix_synapse_limit_remote_rooms_complexity: 1.0
```
If you've installed [Jitsi](configuring-playbook-jitsi.md) (not installed by default), there are additional optimizations listed on its documentation page that you can perform.
### I already have Docker on my server. Can you stop installing Docker via the playbook?
Yes, we can stop installing Docker ourselves. Just use this in your `vars.yml` file:

View File

@@ -146,6 +146,7 @@ After completing the installation, you can:
- or learn how to [maintain your server](faq.md#maintenance)
- or join some Matrix rooms:
* via the *Explore rooms* feature in Element Web or some other clients, or by discovering them using this [matrix-static list](https://view.matrix.org). **Note**: joining large rooms may overload small servers.
For tuning guidance on constrained hosts, see [Limit joining heavy rooms on constrained hosts](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts).
* 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))

View File

@@ -83,6 +83,8 @@ You should then be able to browse the adminer database administration GUI at htt
Synapse's presence feature which tracks which users are online and which are offline can use a lot of processing power. You can disable presence by adding `matrix_synapse_presence_enabled: false` to your `vars.yml` file.
On smaller servers, consider limiting joins to very complex rooms with [the room complexity guard](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts).
If you have enough compute resources (CPU & RAM), you can make Synapse better use of them by [enabling load-balancing with workers](configuring-playbook-synapse.md#load-balancing-with-workers).
[Tuning your PostgreSQL database](maintenance-postgres.md#tuning-postgresql) could also improve Synapse performance. The playbook tunes the integrated Postgres database automatically, but based on your needs you may wish to adjust tuning variables manually. If you're using an [external Postgres database](configuring-playbook-external-postgres.md), you will also need to tune Postgres manually.

View File

@@ -57,12 +57,7 @@ We will be using `example.com` as the domain in the following instruction. Pleas
- `80/tcp`: HTTP webserver
- `443/tcp` and `443/udp`: HTTPS webserver
- `3478/tcp`: STUN/TURN over TCP (used by [coturn](./configuring-playbook-turn.md))
- `3478/udp`: STUN/TURN over UDP (used by [coturn](./configuring-playbook-turn.md))
- `5349/tcp`: TURN over TCP (used by [coturn](./configuring-playbook-turn.md))
- `5349/udp`: TURN over UDP (used by [coturn](./configuring-playbook-turn.md))
- `8448/tcp` and `8448/udp`: Matrix Federation API HTTPS webserver. Some components like [Matrix User Verification Service](configuring-playbook-user-verification-service.md#open-matrix-federation-port) require this port to be opened **even with federation disabled**.
- the range `49152-49172/udp`: TURN over UDP
- potentially some other ports, depending on the additional (non-default) services that you enable in the **configuring the playbook** step (later on). Consult each service's documentation page in `docs/` for that.
---------------------------------------------

View File

@@ -30,6 +30,7 @@ Possibly outdated list of roles where self-building the Docker image is currentl
- `matrix-client-element`
- `hydrogen`
- `cinny`
- `sable`
- `matrix-registration`
- `coturn`
- `matrix-corporal`

View File

@@ -1,6 +1,3 @@
# We explicitly ask for your server's external IP address, because the same value is used for configuring coturn.
# If you'd rather use a local IP here, make sure to set up `coturn_turn_external_ip_address`.
#
# To connect using a non-root user (and elevate to root with sudo later),
# replace `ansible_ssh_user=root` with something like this: `ansible_ssh_user=username ansible_become=true ansible_become_user=root`.
# If sudo requires a password, either add `ansible_become_password=PASSWORD_HERE` to the host line
@@ -18,4 +15,4 @@
# to the host line below.
[matrix_servers]
matrix.example.com ansible_host=<your-server's external IP address> ansible_ssh_user=root
matrix.example.com ansible_host=<your-server's domain name or IP address> ansible_ssh_user=root

View File

@@ -1,4 +1,9 @@
---
# 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.03.23.0
# The bare domain name which represents your Matrix identity.
# Matrix user IDs for your server will be of the form (`@alice:example.com`).
#
@@ -53,18 +58,10 @@ devture_systemd_docker_base_ipv6_enabled: true
# The value used here must be shorter than 100 characters.
postgres_connection_password: ''
# By default, we configure coturn's external IP address using the value specified for `ansible_host` in your `inventory/hosts` file.
# If this value is an external IP address, you can skip this section.
# You can limit heavy room joins on constrained hosts.
# See:
# docs/configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts
#
# If `ansible_host` is not the server's external IP address, you have 2 choices:
# 1. Uncomment the line below, to allow IP address auto-detection to happen (more on this below)
# 2. Uncomment and adjust the line below to specify an IP address manually
#
# By default, auto-detection will be attempted using the `https://ifconfig.co/json` API.
# Default values for this are specified in `coturn_turn_external_ip_address_auto_detection_*` variables in the coturn role
# (see `roles/galaxy/coturn/defaults/main.yml`).
#
# If your server has multiple IP addresses, you may define them in another variable which allows a list of addresses.
# Example: `coturn_turn_external_ip_addresses: ['1.2.3.4', '4.5.6.7']`
#
# coturn_turn_external_ip_address: ''
# matrix_synapse_limit_remote_rooms_enabled: true
# matrix_synapse_limit_remote_rooms_complexity: 1.0
# matrix_synapse_limit_remote_rooms_admins_can_join: false

View File

@@ -19,6 +19,7 @@
devShells.default = mkShell {
buildInputs = [
just
mise
ansible
];
shellHook = ''

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,13 @@
alabaster==1.0.0
babel==2.18.0
certifi==2026.1.4
charset-normalizer==3.4.4
certifi==2026.2.25
charset-normalizer==3.4.6
click==8.3.1
docutils==0.22.4
idna==3.11
imagesize==1.4.1
imagesize==2.0.0
Jinja2==3.1.6
linkify-it-py==2.0.3
linkify-it-py==2.1.0
markdown-it-py==4.0.0
MarkupSafe==3.0.3
mdit-py-plugins==0.5.0
@@ -17,17 +17,17 @@ packaging==26.0
Pygments==2.19.2
PyYAML==6.0.3
requests==2.32.5
setuptools==82.0.0
setuptools==82.0.1
snowballstemmer==3.0.1
Sphinx==9.1.0
sphinx-intl==2.3.2
sphinx-markdown-builder==0.6.9
sphinx-markdown-builder==0.6.10
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
tabulate==0.9.0
uc-micro-py==1.0.3
tabulate==0.10.0
uc-micro-py==2.0.0
urllib3==2.6.3

File diff suppressed because it is too large Load Diff

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -244,6 +244,14 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-client-cinny.md)"
msgstr ""
#: ../../../README.md:0
msgid "[Sable](https://github.com/7w1/sable)"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-client-sable.md)"
msgstr ""
#: ../../../README.md:0
msgid "[SchildiChat Web](https://schildi.chat/)"
msgstr ""
@@ -268,11 +276,11 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-client-fluffychat-web.md)"
msgstr ""
#: ../../../README.md:70
#: ../../../README.md:71
msgid "Server Components"
msgstr ""
#: ../../../README.md:72
#: ../../../README.md:73
msgid "Services that run on the server to make the various parts of your installation work."
msgstr ""
@@ -288,18 +296,6 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-external-postgres.md)"
msgstr ""
#: ../../../README.md:0
msgid "[coturn](https://github.com/coturn/coturn)"
msgstr ""
#: ../../../README.md:0
msgid "STUN/TURN server for WebRTC audio/video calls"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-turn.md)"
msgstr ""
#: ../../../README.md:0
msgid "[Traefik](https://doc.traefik.io/traefik/)"
msgstr ""
@@ -336,6 +332,18 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-email.md)"
msgstr ""
#: ../../../README.md:0
msgid "[coturn](https://github.com/coturn/coturn)"
msgstr ""
#: ../../../README.md:0
msgid "STUN/TURN server for WebRTC audio/video calls"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-turn.md)"
msgstr ""
#: ../../../README.md:0
msgid "[ddclient](https://github.com/linuxserver/docker-ddclient)"
msgstr ""
@@ -349,27 +357,15 @@ msgid "[Link](docs/configuring-playbook-dynamic-dns.md)"
msgstr ""
#: ../../../README.md:0
msgid "[LiveKit Server](https://github.com/livekit/livekit)"
msgid "Matrix RTC stack"
msgstr ""
#: ../../../README.md:0
msgid "WebRTC server for audio/video calls"
msgid "Supporting components ([LiveKit Server](docs/configuring-playbook-livekit-server.md) and [LiveKit JWT Service](docs/configuring-playbook-livekit-jwt-service.md)) for in-app audio/video calls for Matrix clients"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-livekit-server.md)"
msgstr ""
#: ../../../README.md:0
msgid "[Livekit JWT Service](https://github.com/livekit/livekit-jwt-service)"
msgstr ""
#: ../../../README.md:0
msgid "JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md)"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-livekit-jwt-service.md)"
msgid "[Link](docs/configuring-playbook-matrix-rtc.md)"
msgstr ""
#: ../../../README.md:85
@@ -692,14 +688,6 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-bridge-appservice-discord.md)"
msgstr ""
#: ../../../README.md:0
msgid "[matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack)"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-bridge-appservice-slack.md)"
msgstr ""
#: ../../../README.md:0
msgid "[matrix-hookshot](https://github.com/matrix-org/matrix-hookshot)"
msgstr ""
@@ -796,11 +784,11 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-bridge-postmoogle.md)"
msgstr ""
#: ../../../README.md:140
#: ../../../README.md:139
msgid "Bots"
msgstr ""
#: ../../../README.md:142
#: ../../../README.md:141
msgid "Bots provide various additional functionality to your installation."
msgstr ""
@@ -900,11 +888,11 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-bot-buscarron.md)"
msgstr ""
#: ../../../README.md:155
#: ../../../README.md:154
msgid "Administration"
msgstr ""
#: ../../../README.md:157
#: ../../../README.md:156
msgid "Services that help you in administrating and monitoring your Matrix installation."
msgstr ""
@@ -992,26 +980,14 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-synapse-usage-exporter.md)"
msgstr ""
#: ../../../README.md:169
#: ../../../README.md:168
msgid "Misc"
msgstr ""
#: ../../../README.md:171
#: ../../../README.md:170
msgid "Various services that don't fit any other categories."
msgstr ""
#: ../../../README.md:0
msgid "[synapse_auto_accept_invite](https://github.com/matrix-org/synapse-auto-accept-invite)"
msgstr ""
#: ../../../README.md:0
msgid "Synapse module to automatically accept invites"
msgstr ""
#: ../../../README.md:0
msgid "[Link](docs/configuring-playbook-synapse-auto-accept-invite.md)"
msgstr ""
#: ../../../README.md:0
msgid "[synapse_auto_compressor](https://github.com/matrix-org/rust-synapse-compress-state/#automated-tool-synapse_auto_compressor)"
msgstr ""
@@ -1132,54 +1108,54 @@ msgstr ""
msgid "[Link](docs/configuring-playbook-element-call.md)"
msgstr ""
#: ../../../README.md:187
#: ../../../README.md:185
msgid "🆕 Changes"
msgstr ""
#: ../../../README.md:189
#: ../../../README.md:187
msgid "This playbook evolves over time, sometimes with backward-incompatible changes."
msgstr ""
#: ../../../README.md:191
#: ../../../README.md:189
msgid "When updating the playbook, refer to [the changelog](CHANGELOG.md) to catch up with what's new."
msgstr ""
#: ../../../README.md:193
#: ../../../README.md:191
msgid "🆘 Support"
msgstr ""
#: ../../../README.md:195
#: ../../../README.md:193
msgid "Matrix room: [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com)"
msgstr ""
#: ../../../README.md:197
#: ../../../README.md:195
msgid "IRC channel: `#matrix-docker-ansible-deploy` on the [Libera Chat](https://libera.chat/) IRC network (irc.libera.chat:6697)"
msgstr ""
#: ../../../README.md:199
#: ../../../README.md:197
msgid "GitHub issues: [spantaleev/matrix-docker-ansible-deploy/issues](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues)"
msgstr ""
#: ../../../README.md:201
#: ../../../README.md:199
msgid "🌐 Translation"
msgstr ""
#: ../../../README.md:203
#: ../../../README.md:201
msgid "See the [i18n/README.md](i18n/README.md) file for more information about translation."
msgstr ""
#: ../../../README.md:205
#: ../../../README.md:203
msgid "Translations are still work in progress."
msgstr ""
#: ../../../README.md:207
#: ../../../README.md:205
msgid "🤝 Related"
msgstr ""
#: ../../../README.md:209
#: ../../../README.md:207
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:211
#: ../../../README.md:209
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 ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -80,369 +80,393 @@ msgstr ""
msgid "To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:78
#: ../../../docs/configuring-playbook-bot-baibot.md:42
msgid "Authentication can be configured in one of two mutually-exclusive ways:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:44
msgid "**Password authentication** (`matrix_bot_baibot_config_user_password`) - recommended for most playbook-managed setups, because it integrates with automatic user creation flow used by the playbook, and auto-creates the bot account"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:45
msgid "**Access-token authentication** (`matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id`) - useful for specific [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md)/OIDC setups where password authentication is not available or not desired"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:47
msgid "Even when [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) is enabled, password authentication is still typically the best fit for baibot if you're using a playbook-managed bot account."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:49
msgid "For upstream details, see baibot's [🔐 Authentication](https://github.com/etkecc/baibot/blob/main/docs/configuration/authentication.md) documentation."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:97
msgid "As mentioned above, **this may not be enough**. Continue with the configuration sections below."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:80
#: ../../../docs/configuring-playbook-bot-baibot.md:99
msgid "👮‍♂️ Administrator configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:82
#: ../../../docs/configuring-playbook-bot-baibot.md:106
#: ../../../docs/configuring-playbook-bot-baibot.md:101
#: ../../../docs/configuring-playbook-bot-baibot.md:125
msgid "This is an addition to the [base configuration](#base-configuration)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:84
#: ../../../docs/configuring-playbook-bot-baibot.md:103
msgid "To specify who is considered a bot [👮‍♂️ Administrator](https://github.com/etkecc/baibot/blob/main/docs/access.md#administrators), you either need to specify `matrix_bot_baibot_config_access_admin_patterns` or `matrix_admin`. The latter is a single variable which affects all bridges and bots."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:86
#: ../../../docs/configuring-playbook-bot-baibot.md:105
msgid "If `matrix_admin` is already configured in your `vars.yml` configuration, you can skip this section."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:88
#: ../../../docs/configuring-playbook-bot-baibot.md:117
#: ../../../docs/configuring-playbook-bot-baibot.md:107
#: ../../../docs/configuring-playbook-bot-baibot.md:136
msgid "**If necessary**, add the following configuration to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:102
#: ../../../docs/configuring-playbook-bot-baibot.md:121
msgid "👥 Initial users configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:104
#: ../../../docs/configuring-playbook-bot-baibot.md:123
msgid "By default, **all users on your homeserver are considered allowed users**. If that's OK, you can skip this section."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:108
#: ../../../docs/configuring-playbook-bot-baibot.md:127
msgid "To specify who is considered a bot [👥 User](https://github.com/etkecc/baibot/blob/main/docs/access.md#user), you may:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:110
#: ../../../docs/configuring-playbook-bot-baibot.md:129
msgid "define an **initial** value for `matrix_bot_baibot_config_initial_global_config_user_patterns` Ansible variable, as shown below"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:111
#: ../../../docs/configuring-playbook-bot-baibot.md:130
msgid "configure the list at runtime via the bot's `!bai access set-users SPACE_SEPARATED_PATTERNS` command"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:113
#: ../../../docs/configuring-playbook-bot-baibot.md:132
msgid "Configuring `matrix_bot_baibot_config_initial_global_config_user_patterns` is optional, but it can be useful to pre-configure the bot with a list of users who should have access to the bot's features."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:115
#: ../../../docs/configuring-playbook-bot-baibot.md:134
msgid "**Note**: Once initially configured, the allowed users list **cannot be managed via Ansible anymore**. It can only be managed subsequently via bot commands."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:129
#: ../../../docs/configuring-playbook-bot-baibot.md:148
msgid "🤖 Configuring agents via Ansible"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:131
#: ../../../docs/configuring-playbook-bot-baibot.md:150
msgid "You are **not required** to define agents [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration) via Ansible. **To get started quickly**, you can **skip this section and define agents at runtime via chat commands** (following the bot's guidance)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:133
#: ../../../docs/configuring-playbook-bot-baibot.md:152
msgid "Privileged users (like the [👮‍♂️ Administrator](#-administrator-configuration), but potentially others too — see the upstream [🔒 access](https://github.com/etkecc/baibot/blob/main/docs/access.md) documentation) can **define agents dynamically at any time** via chat commands."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:135
#: ../../../docs/configuring-playbook-bot-baibot.md:154
msgid "The Ansible role includes preset variables for easily enabling some [🤖 agents](https://github.com/etkecc/baibot/blob/main/docs/agents.md) on various [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md) (e.g. OpenAI, etc)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:137
#: ../../../docs/configuring-playbook-bot-baibot.md:156
msgid "Besides the presets, the Ansible role also includes support for configuring additional statically-defined agents via the `matrix_bot_baibot_config_agents_static_definitions_custom` Ansible variable."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:139
#: ../../../docs/configuring-playbook-bot-baibot.md:158
msgid "Agents defined statically and those created dynamically (via chat) are named differently, so **conflict cannot arise**."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:141
#: ../../../docs/configuring-playbook-bot-baibot.md:160
msgid "Depending on your propensity for [GitOps](https://en.wikipedia.org/wiki/DevOps#GitOps), you may prefer to define agents statically via Ansible, or you may wish to do it dynamically via chat."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:143
#: ../../../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). In short, it's probably best to go with [OpenAI](#openai)."
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:145
#: ../../../docs/configuring-playbook-bot-baibot.md:164
msgid "Anthropic"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:147
#: ../../../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:149
#: ../../../docs/configuring-playbook-bot-baibot.md:173
#: ../../../docs/configuring-playbook-bot-baibot.md:204
#: ../../../docs/configuring-playbook-bot-baibot.md:232
#: ../../../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:165
#: ../../../docs/configuring-playbook-bot-baibot.md:196
#: ../../../docs/configuring-playbook-bot-baibot.md:222
#: ../../../docs/configuring-playbook-bot-baibot.md:256
#: ../../../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:167
#: ../../../docs/configuring-playbook-bot-baibot.md:198
#: ../../../docs/configuring-playbook-bot-baibot.md:224
#: ../../../docs/configuring-playbook-bot-baibot.md:258
#: ../../../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:169
#: ../../../docs/configuring-playbook-bot-baibot.md:188
msgid "Groq"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:171
#: ../../../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:194
#: ../../../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:200
#: ../../../docs/configuring-playbook-bot-baibot.md:219
msgid "Mistral"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:202
#: ../../../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:220
#: ../../../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:226
#: ../../../docs/configuring-playbook-bot-baibot.md:245
msgid "OpenAI"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:228
#: ../../../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:230
#: ../../../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:254
#: ../../../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:260
#: ../../../docs/configuring-playbook-bot-baibot.md:279
msgid "OpenAI Compatible"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:262
#: ../../../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:264
#: ../../../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:266
#: ../../../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:268
#: ../../../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:270
#: ../../../docs/configuring-playbook-bot-baibot.md:289
msgid "Configuring additional agents (without a preset)"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:272
#: ../../../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:274
#: ../../../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:276
#: ../../../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:278
#: ../../../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:317
#: ../../../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:319
#: ../../../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:321
#: ../../../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:323
#: ../../../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:325
#: ../../../docs/configuring-playbook-bot-baibot.md:344
msgid "🤝 Configuring initial default handlers"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:327
#: ../../../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:329
#: ../../../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:331
#: ../../../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:333
#: ../../../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:335
#: ../../../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:337
#: ../../../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:339
#: ../../../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:341
#: ../../../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:343
#: ../../../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:345
#: ../../../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:347
#: ../../../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:349
#: ../../../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:351
#: ../../../docs/configuring-playbook-bot-baibot.md:370
msgid "Example **additional** `vars.yml` configuration:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:368
#: ../../../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:370
#: ../../../docs/configuring-playbook-bot-baibot.md:389
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:372
#: ../../../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:374
#: ../../../docs/configuring-playbook-bot-baibot.md:393
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:376
#: ../../../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:377
#: ../../../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:379
#: ../../../docs/configuring-playbook-bot-baibot.md:398
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:381
#: ../../../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:388
#: ../../../docs/configuring-playbook-bot-baibot.md:407
msgid "**Notes**:"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:390
msgid "The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account."
#: ../../../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:392
#: ../../../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: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:394
#: ../../../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:396
msgid "If you change the bot password (`matrix_bot_baibot_config_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password."
#: ../../../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 [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password. (This note applies to password authentication mode.)"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:398
#: ../../../docs/configuring-playbook-bot-baibot.md:419
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:400
#: ../../../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:402
#: ../../../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:404
#: ../../../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:406
#: ../../../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:408
#: ../../../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:410
#: ../../../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:412
#: ../../../docs/configuring-playbook-bot-baibot.md:433
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:414
#: ../../../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:416
#: ../../../docs/configuring-playbook-bot-baibot.md:437
msgid "Increase logging verbosity"
msgstr ""
#: ../../../docs/configuring-playbook-bot-baibot.md:418
#: ../../../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:432
#: ../../../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 ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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,242 +16,22 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:12
msgid "Setting up Appservice Slack bridging (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:14
msgid "**Notes**:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:15
msgid "Bridging to [Slack](https://slack.com) can also happen via the [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridge supported by the playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:16
msgid "Currently (as of November, 2024) **this component is not available for new installation unless you have already created a classic Slack application** (which the bridge makes use of in order to enable bridging between Slack and Matrix), because the creation of classic Slack applications has been discontinued since June 4 2024. The author of the bridge claims [here](https://github.com/matrix-org/matrix-appservice-slack/issues/789#issuecomment-2172947787) that he plans to support the modern Slack application and until then \"the best (and only) option for new installations is to use the webhook bridging\"."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:18
msgid "The playbook can install and configure [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) for you."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:20
msgid "See the project's [documentation](https://github.com/matrix-org/matrix-appservice-slack/blob/master/README.md) to learn what it does and why it might be useful to you."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:22
msgid "Prerequisites"
msgid "Setting up Appservice Slack bridging (optional, removed)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:24
msgid "Create a Classic Slack App"
msgid "🪦 The playbook used to be able to install and configure [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack), but no longer includes this component, as it had been unavailable for new installation since 2024, and was finally abandoned because the public Matrix.org Slack bridge has been decommissioned on January 14th, 2026."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:26
msgid "First, you need to create a Classic Slack App [here](https://api.slack.com/apps?new_classic_app=1)."
msgid "**Note**: Bridging to [Slack](https://slack.com) can also happen via the [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridge supported by the playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:28
msgid "Name the app \"matrixbot\" (or anything else you'll remember). Select the team/workspace this app will belong to. Click on bot users and add a new bot user. We will use this account to bridge the the rooms."
msgid "Uninstalling the component manually"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:30
msgid "Then, click on Event Subscriptions and enable them and use the request url: `https://matrix.example.com/appservice-slack`."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:32
msgid "Add the following events as `Bot User Events` and save:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:34
msgid "team_domain_change"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:35
msgid "message.channels"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:36
msgid "message.groups (if you want to bridge private channels)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:37
msgid "reaction_added"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:38
msgid "reaction_removed"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:40
msgid "Next, click on \"OAuth & Permissions\" and add the following scopes:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:42
msgid "chat:write:bot"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:43
msgid "users:read"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:44
msgid "reactions:write"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:45
msgid "files:write:user (if you want to bridge files)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:47
msgid "**Note**: In order to make Slack files visible to Matrix users, this bridge will make Slack files visible to anyone with the url (including files in private channels). This is different than the current behavior in Slack, which only allows authenticated access to media posted in private channels. See MSC701 for details."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:49
msgid "Click on \"Install App\" and \"Install App to Workspace\". Note the access tokens shown. You will need the Bot User OAuth Access Token and if you want to bridge files, the OAuth Access Token whenever you link a room."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:51
msgid "Create an administration control room on Matrix"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:53
msgid "Create a new Matrix room to act as the administration control room."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:55
msgid "Note its internal room ID. This can be done in Element Web by sending a message, opening the options for that message and choosing \"view source\". The room ID will be displayed near the top."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:57
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:59
msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:75
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:77
msgid "There are some additional things you may wish to configure about the bridge."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:79
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:81
msgid "`roles/custom/matrix-bridge-appservice-slack/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:82
msgid "`roles/custom/matrix-bridge-appservice-slack/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_slack_configuration_extension_yaml` variable"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:84
msgid "For example, to change the bot's username from `slackbot`, add the following configuration to your `vars.yml` file. Replace `examplebot` with your own."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:91
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:93
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:100
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:102
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:104
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:106
msgid "To use the bridge, you need to send `/invite @slackbot:example.com` to invite the bridge bot user into the admin room."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:108
msgid "If Team Sync is not enabled, for each channel you would like to bridge, perform the following steps:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:110
msgid "Create a Matrix room in the usual manner for your client. Take a note of its Matrix room ID — it will look something like `!qporfwt:example.com`."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:111
msgid "Invite the bot user to both the Slack and Matrix channels you would like to bridge using `/invite @matrixbot` for Slack and `/invite @slackbot:example.com` for Matrix."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:112
msgid "Determine the \"channel ID\" that Slack uses to identify the channel. You can see it when you open a given Slack channel in a browser. The URL reads like this: `https://app.slack.com/client/XXX/<the channel ID>/details/`."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:113
msgid "Issue a link command in the administration control room with these collected values as arguments:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:115
msgid "with file bridging:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:121
msgid "without file bridging:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:127
msgid "These arguments can be shortened to single-letter forms:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:133
msgid "Unlinking"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:135
msgid "Channels can be unlinked again by sending this:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:141
msgid "Unlinking doesn't only disconnect the bridge, but also makes the slackbot leave the bridged Matrix room. So in case you want to re-link later, don't forget to re-invite the slackbot into this room again."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:143
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:145
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-appservice-slack`."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:147
msgid "Linking: \"Room is now pending-name\""
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:149
msgid "This typically means that you haven't used the correct Slack channel ID. Unlink the room and recheck 'Determine the \"channel ID\"' from above."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:151
msgid "Messages work from Matrix to Slack, but not the other way around"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:153
msgid "Check the logs, and if you find the message like below, unlink your room, reinvite the bot and re-link it again."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:155
msgid "`WARN SlackEventHandler Ignoring message from unrecognised Slack channel ID : %s (%s) <the channel ID> <some other ID>`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-appservice-slack.md:157
msgid "This may particularly hit you, if you tried to unsuccessfully link your room multiple times without unlinking it after each failed attempt."
msgid "If you still have matrix-appservice-slack installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:"
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -28,130 +28,146 @@ msgstr ""
msgid "**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) bridge supported by the playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:18
msgid "For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:19
msgid "For personal use with a discord account we recommend the `mautrix-discord` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:21
msgid "The playbook can install and configure [mautrix-discord](https://github.com/mautrix/discord) for you."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:23
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:21
msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/discord/index.html) to learn what it does and why it might be useful to you."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:25
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:23
msgid "Prerequisites"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:25
msgid "There are 3 ways to login to discord using this bridge, either by [scanning a QR code](https://docs.mau.fi/bridges/go/discord/authentication.html#qr-login) using the Discord mobile app, by using a [Discord token](https://docs.mau.fi/bridges/go/discord/authentication.html#token-login), **or** by using a [Discord bot token](https://docs.mau.fi/bridges/go/discord/authentication.html#bot-token-login)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:27
msgid "There are 2 ways to login to discord using this bridge, either by [scanning a QR code](#method-1-login-using-qr-code-recommended) using the Discord mobile app **or** by using a [Discord token](#method-2-login-using-discord-token-not-recommended)."
msgid "⚠️ QR code login is considered a self-bot and is forbidden by Discord. It can result in an account termination. See the [Discord policy](https://support.discord.com/hc/en-us/articles/115002192352-Automated-User-Accounts-Self-Bots)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:29
msgid "If this is a dealbreaker for you, consider using [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md). This comes with its own complexity and limitations, however, so we recommend that you proceed with this one if possible."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:31
msgid "Enable Appservice Double Puppet or Shared Secret Auth (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:33
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:31
msgid "If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:35
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:33
msgid "See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-puppeting-optional) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about setting up Double Puppeting."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:37
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:35
msgid "**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:39
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:37
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:41
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:39
msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:47
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:45
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:49
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:47
msgid "There are some additional things you may wish to configure about the bridge."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:52
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:50
msgid "See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:54
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:52
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:56
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:54
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:63
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:61
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:65
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:63
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:67
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:65
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:69
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:67
msgid "To use the bridge, you need to start a chat with `@discordbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:71
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:69
msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/discord/authentication.html)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:73
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:71
msgid "After logging in, the bridge will create portal rooms for some recent direct messages."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:75
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:73
msgid "Bridge guilds"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:77
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:75
msgid "If you'd like to bridge guilds, send `guilds status` to see the list of guilds, then send `guilds bridge GUILD_ID_HERE` for each guild that you'd like bridged. Make sure to replace `GUILD_ID_HERE` with the guild's ID."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:79
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:77
msgid "After bridging, spaces will be created automatically, and rooms will be created if necessary when messages are received. You can also pass `--entire` to the bridge command to immediately create all rooms."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:81
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:79
msgid "If you want to manually bridge channels, invite the bot to the room you want to bridge, and run `!discord bridge CHANNEL_ID_HERE` to bridge the room. Make sure to replace `CHANNEL_ID_HERE` with the channel's ID."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:81
msgid "Enable relay"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:83
msgid "Troubleshooting"
msgid "The bridge supports using Discord's webhook feature to relay messages from Matrix users who haven't logged into the bridge."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:85
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-mautrix-discord`."
msgid "In a room that has already been bridged, run `!discord set-relay --create`. The bridge will then create a webhook in the bridged discord channel and begin relaying messages. If the discord user does not have access to manage webhooks, run `!discord set-relay --url <url>` with the url of an already created webhook. (See Discords [Intro to webhooks](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks))"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:87
msgid "Increase logging verbosity"
msgid "More information on relaying is available on the [official documentation](https://docs.mau.fi/bridges/go/discord/relay.html)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:89
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:91
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-mautrix-discord`."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:93
msgid "Increase logging verbosity"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:95
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 ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:102
msgid "Command requires room admin rights when user is creator"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-discord.md:104
msgid "[MSC4289](https://github.com/matrix-org/matrix-spec-proposals/blob/main/proposals/4289-privilege-creators.md), introduced in [room version 12](https://spec.matrix.org/unstable/rooms/v12/), gives creators an infinitley high powerlevel. At the time of implementation, mautrix-discord and similar applications may not identify creators as or above admins. Either a separate admin user will need to manage the bridge or the room version should be less than version 12."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,117 +25,105 @@ msgid "<sup>Refer the common guide for configuring mautrix bridges: [Setting up
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:14
msgid "**Note**: bridging to [Slack](https://slack.com/) can also happen via the [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) bridge supported by the playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:15
msgid "For using as a Bot we recommend the [Appservice Slack](configuring-playbook-bridge-appservice-slack.md), because it supports plumbing. Note that it is not available for new installation unless you have already created a classic Slack application, because the creation of classic Slack applications, which this bridge makes use of, has been discontinued."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:16
msgid "For personal use with a slack account we recommend the `mautrix-slack` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Slack bridges supported by the playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:18
msgid "The playbook can install and configure [mautrix-slack](https://github.com/mautrix/slack) for you."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:20
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:16
msgid "See the project's [documentation](https://docs.mau.fi/bridges/go/slack/index.html) to learn what it does and why it might be useful to you."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:22
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:18
msgid "See the [features and roadmap](https://github.com/mautrix/slack/blob/main/ROADMAP.md) for more information."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:24
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:20
msgid "Prerequisites"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:26
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:22
msgid "For using this bridge, you would need to authenticate by **providing your username and password** (legacy) or by using a **token login**. See more information in the [docs](https://docs.mau.fi/bridges/go/slack/authentication.html)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:28
msgid "Note that neither of these methods are officially supported by Slack. [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) uses a Slack bot account which is the only officially supported method for bridging a Slack channel."
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:24
msgid "Note that neither of these methods are officially supported by Slack."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:30
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:26
msgid "Enable Appservice Double Puppet (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:32
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:28
msgid "If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:34
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:30
msgid "See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-puppeting-optional) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about setting up Double Puppeting."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:36
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:32
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:38
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:34
msgid "To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:44
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:40
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:46
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:42
msgid "There are some additional things you may wish to configure about the bridge."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:48
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:44
msgid "See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [relay mode](configuring-playbook-bridge-mautrix-bridges.md#enable-relay-mode-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:50
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:46
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:52
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:48
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:59
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:55
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:61
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:57
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:63
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:59
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:65
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:61
msgid "To use the bridge, you need to start a chat with `@slackbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:67
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:63
msgid "You can then follow instructions on the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/go/slack/authentication.html)."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:69
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:65
msgid "If you authenticated using a token, the recent chats will be bridged automatically (depending on the `conversation_count` setting). Otherwise (i.e. logging with the Discord application), the chats the bot is in will be bridged automatically."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:71
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:67
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:73
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:69
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-mautrix-slack`."
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:75
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:71
msgid "Increase logging verbosity"
msgstr ""
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:77
#: ../../../docs/configuring-playbook-bridge-mautrix-slack.md:73
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 ""

View File

@@ -0,0 +1,113 @@
# 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-03-23 07:10+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../docs/configuring-playbook-client-sable.md:9
msgid "Setting up Sable (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:11
msgid "The playbook can install and configure the [Sable](https://github.com/7w1/sable) Matrix web client for you."
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:13
msgid "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."
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:15
msgid "Adjusting DNS records"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:17
msgid "By default, this playbook installs Sable on the `sable.` subdomain (`sable.example.com`) and requires you to create a CNAME record for `sable`, which targets `matrix.example.com`."
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:19
msgid "When setting, replace `example.com` with your own."
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:21
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:23
msgid "To enable Sable, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:29
msgid "Adjusting the Sable URL (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:31
msgid "By tweaking the `sable_hostname` variable, you can easily make the service available at a **different hostname** than the default one."
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:33
msgid "Example additional configuration for your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:43
msgid "After changing the domain, **you may need to adjust your DNS** records to point the Sable domain to the Matrix server."
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:45
msgid "**Note**: while there is a `sable_path_prefix` variable for changing the path where Sable is served, overriding it is [not possible](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3701), because Sable requires an application rebuild (with a tweaked build config) to be functional under a custom path. You'd need to serve Sable at a dedicated subdomain."
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:47
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:49
msgid "There are some additional things you may wish to configure about the component."
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:51
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:53
msgid "`roles/galaxy/sable/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:54
msgid "`roles/galaxy/sable/templates/config.json.j2` for the component's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `sable_configuration_extension_json` variable"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:56
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:58
msgid "After configuring the playbook and [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:65
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:67
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:69
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-client-sable.md:71
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-client-sable`."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -93,69 +93,69 @@ msgid "Unlike other homeserver implementations (like Synapse and Dendrite), cont
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:61
msgid "If you followed the instructions above (see [Adjusting the playbook configuration](#adjusting-the-playbook-configuration)), you should have registration enabled and protected by a registration token."
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:63
msgid "This should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users."
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:65
msgid "The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**."
msgid "On first startup, Continuwuity creates a special one-time-use registration token and logs it to the server's console. To access this, you will need to SSH into the server and run the following command:"
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:68
msgid "Configuring bridges / appservices"
msgid "Find the token, highlight it, and copy it (ctrl+shift+C). This token should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users."
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:70
msgid "The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**."
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:73
msgid "Configuring bridges / appservices"
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:75
msgid "For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver."
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:72
#: ../../../docs/configuring-playbook-continuwuity.md:77
msgid "For continuwuity, you will have to manually register appservices using the [`!admin appservices register` command](https://continuwuity.org/appservices.html#set-up-the-appservice---general-instructions) sent to the server bot account."
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:74
#: ../../../docs/configuring-playbook-continuwuity.md:79
msgid "The server's bot account has a Matrix ID of `@conduit:example.com` (not `@continuwuity:example.com`!) due to continuwuity's historical legacy. Your first user account would already have been invited to an admin room with this bot."
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:77
#: ../../../docs/configuring-playbook-continuwuity.md:82
msgid "Find the appservice file you'd like to register. This can be any `registration.yaml` file found in the `/matrix` directory, for example `/matrix/mautrix-signal/bridge/registration.yaml`."
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:79
#: ../../../docs/configuring-playbook-continuwuity.md:84
msgid "Then, send its content to the existing admin room:"
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:103
#: ../../../docs/configuring-playbook-continuwuity.md:108
msgid "Migrating from conduwuit"
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:105
#: ../../../docs/configuring-playbook-continuwuity.md:110
msgid "Since Continuwuity is a drop-in replacement for [conduwuit](configuring-playbook-conduwuit.md), migration is possible."
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:107
#: ../../../docs/configuring-playbook-continuwuity.md:112
msgid "Make sure that Continuwuity is properly set up on your `vars.yml` as described above"
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:109
#: ../../../docs/configuring-playbook-continuwuity.md:114
msgid "Make sure that Conduwuit references are removed from your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:111
#: ../../../docs/configuring-playbook-continuwuity.md:116
msgid "Run the installation in a way that installs new services and uninstalls old ones (e.g. `just setup-all`)"
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:113
#: ../../../docs/configuring-playbook-continuwuity.md:118
msgid "Run the playbook with the `continuwuity-migrate-from-conduwuit` tag (e.g. `just run-tags continuwuity-migrate-from-conduwuit`). This migrates data from `/matrix/conduwuit` to `/matrix/continuwuity`"
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:115
#: ../../../docs/configuring-playbook-continuwuity.md:120
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-continuwuity.md:117
#: ../../../docs/configuring-playbook-continuwuity.md:122
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-continuwuity`."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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,89 +41,109 @@ msgid "📁 `roles/galaxy/exim_relay/docs/configuring-exim-relay.md` locally, if
msgstr ""
#: ../../../docs/configuring-playbook-email.md:20
msgid "Firewall settings"
msgid "Why use exim-relay?"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:22
msgid "No matter whether you send email directly (the default) or you relay email through another host, you'll probably need to allow outgoing traffic for TCP ports 25/587 (depending on configuration)."
msgid "**Benefits of using exim-relay** instead of configuring SMTP directly in each service:"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:24
msgid "Docker automatically opens these ports in the server's firewall, so you likely don't need to do anything. If you use another firewall in front of the server, you may need to adjust it."
msgid "**Final delivery capability**: Can deliver emails directly if you don't have an SMTP server"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:26
msgid "Adjusting the playbook configuration"
msgid "**Centralized configuration**: Configure your upstream SMTP server once in exim-relay, then point all services ([Synapse](configuring-playbook-synapse.md), [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md), etc.) there—no need to configure SMTP in each component"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:28
msgid "Enable DKIM authentication to improve deliverability (optional)"
msgid "**Local spooling**: Stores messages locally and retries delivery if your upstream SMTP server is temporarily unavailable"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:30
msgid "By default, exim-relay attempts to deliver emails directly. This may or may not work, depending on your domain configuration."
msgid "Firewall settings"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:32
msgid "To improve email deliverability, you can configure authentication methods such as DKIM (DomainKeys Identified Mail), SPF, and DMARC for your domain. Without setting any of these authentication methods, your outgoing email is most likely to be quarantined as spam at recipient's mail servers."
msgid "No matter whether you send email directly (the default) or you relay email through another host, you'll probably need to allow outgoing traffic for TCP ports 25/587 (depending on configuration)."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:34
msgid "For details about configuring DKIM, refer [this section](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md#enable-dkim-support-optional) on the role's documentation."
msgid "Docker automatically opens these ports in the server's firewall, so you likely don't need to do anything. If you use another firewall in front of the server, you may need to adjust it."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:36
msgid "💡 If you cannot enable DKIM, SPF, or DMARC on your domain for some reason, we recommend relaying email through another SMTP server."
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:38
msgid "Relaying email through another SMTP server (optional)"
msgid "Enable DKIM authentication to improve deliverability (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:40
msgid "**On some cloud providers such as Google Cloud, [port 25 is always blocked](https://cloud.google.com/compute/docs/tutorials/sending-mail/), so sending email directly from your server is not possible.** In this case, you will need to relay email through another SMTP server."
msgid "By default, exim-relay attempts to deliver emails directly. This may or may not work, depending on your domain configuration."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:42
msgid "For details about configuration, refer [this section](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md#relaying-email-through-another-smtp-server) on the role's document."
msgid "To improve email deliverability, you can configure authentication methods such as DKIM (DomainKeys Identified Mail), SPF, and DMARC for your domain. Without setting any of these authentication methods, your outgoing email is most likely to be quarantined as spam at recipient's mail servers."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:44
msgid "Disable mail service (optional)"
msgid "For details about configuring DKIM, refer [this section](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md#enable-dkim-support-optional) on the role's documentation."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:46
msgid "For a low-power server you might probably want to disable exim-relay. To do so, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgid "💡 If you cannot enable DKIM, SPF, or DMARC on your domain for some reason, we recommend relaying email through another SMTP server."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:48
msgid "Relaying email through another SMTP server (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:50
msgid "**On some cloud providers such as Google Cloud, [port 25 is always blocked](https://cloud.google.com/compute/docs/tutorials/sending-mail/), so sending email directly from your server is not possible.** In this case, you will need to relay email through another SMTP server."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:52
msgid "Note that disabling exim-relay will stop email-notifications and other similar functions from working."
msgid "For details about configuration, refer [this section](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md#relaying-email-through-another-smtp-server) on the role's document."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:54
msgid "See [this entry on the FAQ](faq.md#how-do-i-optimize-this-setup-for-a-low-power-server) for other possible optimizations for a low-power server."
msgid "Disable mail service (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:56
msgid "For a low-power server you might probably want to disable exim-relay. To do so, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:62
msgid "Note that disabling exim-relay will stop email-notifications and other similar functions from working."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:64
msgid "See [this entry on the FAQ](faq.md#how-do-i-optimize-this-setup-for-a-low-power-server) for other possible optimizations for a low-power server."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:66
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:58
#: ../../../docs/configuring-playbook-email.md:68
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:65
#: ../../../docs/configuring-playbook-email.md:75
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:67
#: ../../../docs/configuring-playbook-email.md:77
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-email.md:69
#: ../../../docs/configuring-playbook-email.md:79
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-email.md:71
#: ../../../docs/configuring-playbook-email.md:81
msgid "See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay/blob/main/docs/configuring-exim-relay.md#troubleshooting) on the role's documentation for details."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,149 +25,153 @@ msgid "The playbook can install and configure the [Jitsi](https://jitsi.org/) vi
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:21
msgid "Because Jitsi still requires a TURN server, enabling Jitsi automatically enables coturn (`coturn_enabled: true`) unless you explicitly disable it."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:24
msgid "Jitsi is an open source video-conferencing platform. It can not only be integrated with Element clients ([Element Web](configuring-playbook-client-element-web.md)/Desktop, Android and iOS) as a widget, but also be used as standalone web app."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:23
#: ../../../docs/configuring-playbook-jitsi.md:26
msgid "💡 If you're into experimental technology, you may also be interested in trying out [Element Call](configuring-playbook-element-call.md) - a native Matrix video conferencing application."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:25
#: ../../../docs/configuring-playbook-jitsi.md:28
msgid "The [Ansible role for Jitsi](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi) is developed and maintained by [the MASH (mother-of-all-self-hosting) project](https://github.com/mother-of-all-self-hosting). For details about configuring Jitsi, you can check them via:"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:26
#: ../../../docs/configuring-playbook-jitsi.md:29
msgid "🌐 [the role's documentation at the MASH project](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md) online"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:27
#: ../../../docs/configuring-playbook-jitsi.md:30
msgid "📁 `roles/galaxy/jitsi/docs/configuring-jitsi.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:29
#: ../../../docs/configuring-playbook-jitsi.md:32
msgid "Prerequisites"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:31
#: ../../../docs/configuring-playbook-jitsi.md:34
msgid "Before proceeding, make sure to check server's requirements recommended by [the official deployment guide](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-requirements)."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:33
#: ../../../docs/configuring-playbook-jitsi.md:36
msgid "You may need to open some ports to your server, if you use another firewall in front of the server. Refer [the role's documentation](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#prerequisites) to check which ones to be configured."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:35
#: ../../../docs/configuring-playbook-jitsi.md:38
msgid "Adjusting DNS records"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:37
#: ../../../docs/configuring-playbook-jitsi.md:40
msgid "By default, this playbook installs Jitsi on the `jitsi.` subdomain (`jitsi.example.com`) and requires you to create a CNAME record for `jitsi`, which targets `matrix.example.com`."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:39
#: ../../../docs/configuring-playbook-jitsi.md:42
msgid "When setting, replace `example.com` with your own."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:41
#: ../../../docs/configuring-playbook-jitsi.md:44
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:43
#: ../../../docs/configuring-playbook-jitsi.md:46
msgid "To enable Jitsi, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:61
#: ../../../docs/configuring-playbook-jitsi.md:64
msgid "As the most of the necessary settings for the role have been taken care of by the playbook, you can enable Jitsi on your Matrix server with this minimum configuration."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:63
#: ../../../docs/configuring-playbook-jitsi.md:66
msgid "However, **since Jitsi's performance heavily depends on server resource (bandwidth, RAM, and CPU), it is recommended to review settings and optimize them as necessary before deployment.** You can check [here](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#example-configurations) for an example set of configurations to set up a Jitsi instance, focusing on performance. If you will host a large conference, you probably might also want to consider to provision additional JVBs ([Jitsi VideoBridge](https://github.com/jitsi/jitsi-videobridge)). See [here](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#set-up-additional-jvbs-for-more-video-conferences-optional) for details about setting them up with the playbook."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:65
#: ../../../docs/configuring-playbook-jitsi.md:68
msgid "See the role's documentation for details about configuring Jitsi per your preference (such as setting [a custom hostname](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#set-the-hostname) and [the environment variable for running Jitsi in a LAN](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#configure-jvb_advertise_ips-for-running-behind-nat-or-on-a-lan-environment-optional))."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:67
#: ../../../docs/configuring-playbook-jitsi.md:70
msgid "Enable authentication and guests mode (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:69
#: ../../../docs/configuring-playbook-jitsi.md:72
msgid "By default the Jitsi Meet instance **does not require for anyone to log in, and is open to use without an account**."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:71
#: ../../../docs/configuring-playbook-jitsi.md:74
msgid "If you would like to control who is allowed to start meetings on your instance, you'd need to enable Jitsi's authentication and optionally guests mode."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:73
#: ../../../docs/configuring-playbook-jitsi.md:76
msgid "See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#configure-jitsi-authentication-and-guests-mode-optional) on the role's documentation for details about how to configure the authentication and guests mode. The recommended authentication method is `internal` as it also works in federated rooms. If you want to enable authentication with Matrix OpenID making use of [Matrix User Verification Service (UVS)](configuring-playbook-user-verification-service.md), see [here](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#authenticate-using-matrix-openid-auth-type-matrix) for details about how to set it up."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:75
#: ../../../docs/configuring-playbook-jitsi.md:78
msgid "Enable Gravatar (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:77
#: ../../../docs/configuring-playbook-jitsi.md:80
msgid "In the default Jisti Meet configuration, `gravatar.com` is enabled as an avatar service."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:79
#: ../../../docs/configuring-playbook-jitsi.md:82
msgid "Since the Element clients send the URL of configured Matrix avatars to the Jitsi instance, our configuration has disabled the Gravatar service."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:81
#: ../../../docs/configuring-playbook-jitsi.md:84
msgid "To enable the Gravatar service nevertheless, add the following configuration to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:87
#: ../../../docs/configuring-playbook-jitsi.md:90
msgid "[!WARNING] This will result in third party request leaking data to the Gravatar Service (`gravatar.com`, unless configured otherwise). Besides metadata, the Matrix user_id and possibly the room ID (via `referrer` header) will be also sent to the third party."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:90
#: ../../../docs/configuring-playbook-jitsi.md:93
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:92
#: ../../../docs/configuring-playbook-jitsi.md:95
msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:99
#: ../../../docs/configuring-playbook-jitsi.md:102
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:101
#: ../../../docs/configuring-playbook-jitsi.md:104
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:103
#: ../../../docs/configuring-playbook-jitsi.md:106
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:105
#: ../../../docs/configuring-playbook-jitsi.md:108
msgid "You can use the self-hosted Jitsi server in multiple ways:"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:107
#: ../../../docs/configuring-playbook-jitsi.md:110
msgid "**by adding a widget to a room via Element Web** (the one configured by the playbook at `https://element.example.com`). Just start a voice or a video call in a room containing more than 2 members and that would create a Jitsi widget which utilizes your self-hosted Jitsi server."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:109
#: ../../../docs/configuring-playbook-jitsi.md:112
msgid "**directly (without any Matrix integration)**. Just go to `https://jitsi.example.com`, and you can start a videoconference."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:111
#: ../../../docs/configuring-playbook-jitsi.md:114
msgid "Note that you'll need to log in to your Jitsi's account to start a conference if you have configured authentication with `internal` auth."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:113
#: ../../../docs/configuring-playbook-jitsi.md:116
msgid "Check [the official user guide](https://jitsi.github.io/handbook/docs/category/user-guide) for details about how to use Jitsi."
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:115
#: ../../../docs/configuring-playbook-jitsi.md:118
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-jitsi.md:117
#: ../../../docs/configuring-playbook-jitsi.md:120
msgid "See [this section](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/docs/configuring-jitsi.md#troubleshooting) on the role's documentation for details."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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 "🌐 [the role's documentation at the MASH project](https://github.com/mo
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:18
msgid "📁 `roles/galaxy/livekit-server/docs/configuring-livekit-server.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)"
msgid "📁 `roles/galaxy/livekit_server/docs/configuring-livekit-server.md` locally, if you have [fetched the Ansible roles](installing.md#update-ansible-roles)"
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:20
@@ -69,17 +69,69 @@ msgid "`5350/tcp`: TURN/TCP. Also see the [Limitations](#limitations) section be
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:32
msgid "💡 The suggestions above are inspired by the upstream [Ports and Firewall](https://docs.livekit.io/home/self-hosting/ports-firewall/) documentation based on how LiveKit is configured in the playbook. If you've using custom configuration for the LiveKit Server role, you may need to adjust the firewall rules accordingly."
msgid "`30000-30020/udp`: TURN relay range used by LiveKit's embedded TURN server."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:34
msgid "Limitations"
msgid "💡 The suggestions above are inspired by the upstream [Ports and Firewall](https://docs.livekit.io/home/self-hosting/ports-firewall/) documentation based on how LiveKit is configured in the playbook. If you're using custom configuration for the LiveKit Server role, you may need to adjust firewall rules accordingly."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:36
msgid "For some reason, LiveKit Server's TURN ports (`3479/udp` and `5350/tcp`) are not reachable over IPv6 regardless of whether you've [enabled IPv6](./configuring-ipv6.md) for your server."
msgid "TURN TLS handling"
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:38
msgid "It seems like LiveKit Server intentionally only listens on `udp4` and `tcp4` as seen [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L128) and [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L92)."
msgid "When `matrix_playbook_reverse_proxy_type` is `playbook-managed-traefik` (which is the default for this playbook), TURN over TCP is terminated by Traefik and forwarded to LiveKit with `turn.external_tls = true`. In this playbook default, this mode is enabled automatically when SSL is enabled and TURN is enabled."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:40
msgid "The playbook installs a dedicated Traefik TCP entrypoint for TURN (`matrix-livekit-turn`) by default and binds it to `tcp/5350`."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:41
msgid "`livekit_server_config_turn_external_tls` is automatically enabled for this setup."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:42
msgid "Because Traefik handles TLS, LiveKit no longer needs certificate-file paths for TURN in this mode."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:44
msgid "To opt out and keep TURN TLS termination in LiveKit itself, set:"
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:50
msgid "In this playbook, certificate paths are managed automatically via `group_vars/matrix_servers` when certificate dumping is enabled."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:52
msgid "If your setup uses `other-traefik-container` or [another reverse-proxy](./configuring-playbook-own-webserver.md), behavior is unchanged by default and still relies on certificates being available inside the container as before."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:54
msgid "Deployments using `other-traefik-container` can opt into the same Traefik-terminated mode there, by setting:"
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:62
msgid "and configuring their own Traefik TCP entrypoint dedicated to LiveKit TURN traffic."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:64
msgid "Limitations"
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:66
msgid "LiveKit Server's TURN listener behavior depends on where TLS is terminated:"
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:68
msgid "Direct LiveKit TURN listeners (`livekit_server_config_turn_external_tls: false`) still use IPv4-only sockets for `3479/udp` and `5350/tcp`, so IPv6 connectivity to these endpoints is not possible."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:69
msgid "With [TURN TLS handling](#turn-tls-handling) (`livekit_server_config_turn_external_tls: true`), the playbook's dedicated `matrix-livekit-turn` TCP entrypoint can still listen on both IPv4 and IPv6. Traefik then forwards TURN/TCP to LiveKit."
msgstr ""
#: ../../../docs/configuring-playbook-livekit-server.md:71
msgid "It appears that LiveKit Server intentionally only listens on `udp4` and `tcp4` in direct mode, as seen [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L128) and [here](https://github.com/livekit/livekit/blob/154b4d26b769c68a03c096124094b97bf61a996f/pkg/service/turn.go#L92)."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -45,11 +45,11 @@ msgid "Various experimental features for the Synapse homeserver which Element Ca
msgstr ""
#: ../../../docs/configuring-playbook-matrix-rtc.md:20
msgid "A [LiveKit Server](configuring-playbook-livekit-server.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](#decide-between-element-call-vs-just-the-matrix-rtc-stack))"
msgid "A [LiveKit Server](configuring-playbook-livekit-server.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack))"
msgstr ""
#: ../../../docs/configuring-playbook-matrix-rtc.md:21
msgid "The [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](#decide-between-element-call-vs-just-the-matrix-rtc-stack))"
msgid "The [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) (automatically installed when [Element Call or the Matrix RTC stack is enabled](configuring-playbook-element-call.md#decide-between-element-call-vs-just-the-matrix-rtc-stack))"
msgstr ""
#: ../../../docs/configuring-playbook-matrix-rtc.md:22

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -143,7 +143,7 @@ msgid "[Prometheus role](https://github.com/mother-of-all-self-hosting/ansible-r
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:109
msgid "`roles/custom/matrix-prometheus-nginxlog-exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgid "`roles/galaxy/prometheus_nginxlog_exporter/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:111
@@ -291,7 +291,7 @@ msgid "Set this to `true` to enable the node (general system stats) exporter (lo
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:0
msgid "`prometheus_node_exporter_container_labels_traefik_enabled`"
msgid "`prometheus_node_exporter_container_labels_metrics_enabled`"
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:0
@@ -307,7 +307,7 @@ msgid "Set this to `true` to enable the [Postgres exporter](#enable-metrics-and-
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:0
msgid "`prometheus_postgres_exporter_container_labels_traefik_enabled`"
msgid "`prometheus_postgres_exporter_container_labels_metrics_enabled`"
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:0
@@ -315,19 +315,19 @@ msgid "Set this to `true` to expose the [Postgres exporter](#enable-metrics-and-
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:0
msgid "`matrix_prometheus_nginxlog_exporter_enabled`"
msgid "`prometheus_nginxlog_exporter_enabled`"
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:0
msgid "Set this to `true` to enable the [nginx Log exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) (locally, on the container network)."
msgid "Set this to `true` to enable the [prometheus-nginxlog-exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) (locally, on the container network)."
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:0
msgid "`matrix_prometheus_nginxlog_exporter_metrics_proxying_enabled`"
msgid "`prometheus_nginxlog_exporter_container_labels_metrics_enabled`"
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:0
msgid "Set this to `true` to expose the [nginx Log exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) metrics on `https://matrix.example.com/metrics/nginxlog`."
msgid "Set this to `true` to expose the [prometheus-nginxlog-exporter](#enable-metrics-and-graphs-for-nginx-logs-optional) metrics on `https://matrix.example.com/metrics/nginxlog`."
msgstr ""
#: ../../../docs/configuring-playbook-prometheus-grafana.md:187

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -21,125 +21,137 @@ msgid "Setting up Synapse Admin (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:15
msgid "The playbook can install and configure [etkecc/synapse-admin](https://github.com/etkecc/synapse-admin) (a [feature-rich](https://github.com/etkecc/synapse-admin#fork-differences) fork of [Awesome-Technologies/synapse-admin](https://github.com/Awesome-Technologies/synapse-admin), community room: [#synapse-admin:etke.cc](https://matrix.to/#/#synapse-admin:etke.cc)) for you."
msgid "The playbook can install and configure Synapse Admin for you."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:17
msgid "synapse-admin is a web UI tool you can use to **administrate users, rooms, media, etc. on your Matrix server**. It's designed to work with the Synapse homeserver implementation and WON'T work with Dendrite because [Dendrite Admin API](https://element-hq.github.io/dendrite/administration/adminapi) differs from [Synapse Admin API](https://element-hq.github.io/synapse/latest/usage/administration/admin_api/)."
msgid "Synapse Admin is a web UI tool you can use to **administrate users, rooms, media, etc. on your Matrix homeserver**. This playbook is configured to install [etkecc/synapse-admin](https://github.com/etkecc/synapse-admin), which is a [feature-rich](https://github.com/etkecc/synapse-admin#fork-differences) fork of [Awesome-Technologies/synapse-admin](https://github.com/Awesome-Technologies/synapse-admin)."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:19
msgid "💡 **Note**: the latest version of synapse-admin is hosted by [etke.cc](https://etke.cc/) at [admin.etke.cc](https://admin.etke.cc/). If you only need this service occasionally and trust giving your admin credentials to a 3rd party Single Page Application, you can consider using it from there and avoiding the (small) overhead of self-hosting."
msgid "[!NOTE]"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:21
msgid "💡 **Note**: The playbook also supports an alternative management UI in the shape of [Element Admin](./configuring-playbook-element-admin.md). However, it's currently less feature-rich than Synapse Admin and has a dependency on [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md)."
msgid "Synapse Admin does not work with other homeserver implementations than Synapse due to API's incompatibility."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:22
msgid "The latest version of Synapse Admin is hosted by [etke.cc](https://etke.cc/) at [admin.etke.cc](https://admin.etke.cc/). If you only need this service occasionally and trust giving your admin credentials to a 3rd party Single Page Application, you can consider using it from there and avoiding the (small) overhead of self-hosting."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:23
msgid "Adjusting DNS records (optional)"
msgid "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 Synapse Admin and requires [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md)."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:25
msgid "By default, this playbook installs Synapse Admin on the `matrix.` subdomain, at the `/synapse-admin` path (https://matrix.example.com/synapse-admin). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section."
msgid "Adjusting DNS records (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:27
msgid "If you wish to adjust it, see the section [below](#adjusting-the-synapse-admin-url-optional) for details about DNS configuration."
msgid "By default, this playbook installs Synapse Admin on the `matrix.` subdomain, at the `/synapse-admin` path (https://matrix.example.com/synapse-admin). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:29
msgid "Adjusting the playbook configuration"
msgid "If you wish to adjust it, see the section [below](#adjusting-the-synapse-admin-url-optional) for details about DNS configuration."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:31
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:33
msgid "To enable Synapse Admin, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:37
#: ../../../docs/configuring-playbook-synapse-admin.md:39
msgid "**Note**: Synapse Admin requires Synapse's [Admin APIs](https://element-hq.github.io/synapse/latest/usage/administration/admin_api/index.html) to function. Access to them is restricted with a valid access token, so exposing them publicly should not be a real security concern. Still, for additional security, we normally leave them unexposed, following [official Synapse reverse-proxying recommendations](https://element-hq.github.io/synapse/latest/reverse_proxy.html#synapse-administration-endpoints). Because Synapse Admin needs these APIs to function, when installing Synapse Admin, the playbook **automatically** exposes the Synapse Admin API publicly for you. Depending on the homeserver implementation you're using (Synapse, Dendrite), this is equivalent to:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:39
#: ../../../docs/configuring-playbook-synapse-admin.md:41
msgid "for [Synapse](./configuring-playbook-synapse.md) (our default homeserver implementation): `matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true`"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:40
#: ../../../docs/configuring-playbook-synapse-admin.md:42
msgid "for [Dendrite](./configuring-playbook-dendrite.md): `matrix_dendrite_container_labels_public_client_synapse_admin_api_enabled: true`"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:42
#: ../../../docs/configuring-playbook-synapse-admin.md:44
msgid "By default, synapse-admin installation will be [restricted to only work with one homeserver](https://github.com/etkecc/synapse-admin/blob/e21e44362c879ac41f47c580b04210842b6ff3d7/README.md#restricting-available-homeserver) — the one managed by the playbook. To adjust these restrictions, tweak the `matrix_synapse_admin_config_restrictBaseUrl` variable."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:44
#: ../../../docs/configuring-playbook-synapse-admin.md:46
msgid "Adjusting the Synapse Admin URL (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:46
#: ../../../docs/configuring-playbook-synapse-admin.md:48
msgid "By tweaking the `matrix_synapse_admin_hostname` and `matrix_synapse_admin_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:48
#: ../../../docs/configuring-playbook-synapse-admin.md:50
msgid "Example additional configuration for your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:56
#: ../../../docs/configuring-playbook-synapse-admin.md:58
msgid "If you've changed the default hostname, you may need to create a CNAME record for the Synapse Admin domain (`admin.example.com`), which targets `matrix.example.com`."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:58
#: ../../../docs/configuring-playbook-synapse-admin.md:60
msgid "When setting, replace `example.com` with your own."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:60
#: ../../../docs/configuring-playbook-synapse-admin.md:62
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:62
#: ../../../docs/configuring-playbook-synapse-admin.md:64
msgid "There are some additional things you may wish to configure about the component."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:64
#: ../../../docs/configuring-playbook-synapse-admin.md:66
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:66
#: ../../../docs/configuring-playbook-synapse-admin.md:68
msgid "`roles/custom/matrix-synapse-admin/defaults/main.yml` for some variables that you can customize via your `vars.yml` file. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_synapse_admin_configuration_extension_json` variable"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:68
#: ../../../docs/configuring-playbook-synapse-admin.md:70
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:70
#: ../../../docs/configuring-playbook-synapse-admin.md:72
msgid "After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:77
#: ../../../docs/configuring-playbook-synapse-admin.md:79
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:79
#: ../../../docs/configuring-playbook-synapse-admin.md:81
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:81
#: ../../../docs/configuring-playbook-synapse-admin.md:83
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:83
#: ../../../docs/configuring-playbook-synapse-admin.md:85
msgid "After installation, Synapse Admin will be accessible at: `https://matrix.example.com/synapse-admin/`"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:85
#: ../../../docs/configuring-playbook-synapse-admin.md:87
msgid "To use Synapse Admin, you need to have [registered at least one administrator account](registering-users.md) on your server."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:87
#: ../../../docs/configuring-playbook-synapse-admin.md:89
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:89
#: ../../../docs/configuring-playbook-synapse-admin.md:91
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-synapse-admin`."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-admin.md:93
msgid "If you have questions, you can join this community room and feel free to ask: [#synapse-admin:etke.cc](https://matrix.to/#/#synapse-admin:etke.cc)"
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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,54 +16,18 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:9
msgid "Setting up Synapse Auto Invite Accept (optional)"
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:18
msgid "Setting up Synapse Auto Invite Accept (optional, removed)"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:11
msgid "The playbook can install and configure [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) for you."
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:20
msgid "🪦 The playbook used to be able to install and configure [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite), but no longer includes this component, as the same functionality [has been integrated](https://github.com/element-hq/synapse/pull/17147) to Synapse since [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0)."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:13
msgid "In short, it automatically accepts room invites. You can specify that only 1:1 room invites are auto-accepted. Defaults to false if not specified."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:15
msgid "See the project's [documentation](https://github.com/matrix-org/synapse-auto-accept-invite/blob/main/README.md) to learn what it does and why it might be useful to you."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:17
msgid "**Note**: Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0), the same feature [has been merged](https://github.com/element-hq/synapse/pull/17147) into Synapse (see the [Native alternative](#native-alternative) section below). You'd better use the native feature, instead of the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) 3rd party module."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:19
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:21
msgid "If you decide that you'd like to let this playbook install the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite module for you, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:29
msgid "Synapse worker deployments"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:31
msgid "In a [workerized Synapse deployment](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/c9a842147e09647c355799ca024d65a5de66b099/docs/configuring-playbook-synapse.md#load-balancing-with-workers) it is possible to run this module on a worker to reduce the load on the main process (Default is `null`). For example, add this to your configuration:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:37
msgid "There might be an [issue with federation](https://github.com/matrix-org/synapse-auto-accept-invite/issues/18)."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:39
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:22
msgid "Native alternative"
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:41
msgid "Since Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0), the functionality provided by the [synapse-auto-invite-accept](https://github.com/matrix-org/synapse-auto-accept-invite) 3rd party module [has been made](https://github.com/element-hq/synapse/pull/17147) part of Synapse."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:43
#: ../../../docs/configuring-playbook-synapse-auto-accept-invite.md:24
msgid "Here's example configuration for using the **native** Synapse feature:"
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -293,9 +293,13 @@ msgid "… triggered by the `matrix-synapse-s3-storage-provider-migrate.timer` t
msgstr ""
#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:180
msgid "So… you don't need to perform any maintenance yourself."
msgid "The same `migrate` script also prunes empty directories in the local media repository (`remote_content` and `remote_thumbnail`) after upload/delete operations."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:182
msgid "So… you don't need to perform any maintenance yourself."
msgstr ""
#: ../../../docs/configuring-playbook-synapse-s3-storage-provider.md:184
msgid "The schedule is defined in the format of systemd timer calendar. To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):"
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -149,7 +149,7 @@ msgid "When Synapse workers are enabled, the integrated [Postgres database is tu
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:79
msgid "A separate Ansible role (`matrix-synapse-reverse-proxy-companion`) and component handles load-balancing for workers. This role/component is automatically enabled when you enable workers. Make sure to use the `setup-all` tag (not `install-all`!) during the playbook's [installation](./installing.md) process, especially if you're disabling workers, so that components may be installed/uninstalled correctly."
msgid "The `matrix-synapse` role also manages the `matrix-synapse-reverse-proxy-companion` component for load-balancing with workers. This component is automatically enabled when you enable workers. Make sure to use the `setup-all` tag (not `install-all`!) during the playbook's [installation](./installing.md) process, especially if you're disabling workers, so that components may be installed/uninstalled correctly."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:81
@@ -157,141 +157,161 @@ msgid "In case any problems occur, make sure to have a look at the [list of syna
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:83
msgid "Synapse + OpenID Connect for Single-Sign-On"
msgid "Limit joining heavy rooms on constrained hosts"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:85
msgid "💡 An alternative to setting up OIDC in Synapse is to use [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) (MAS). Newer clients (like Element X) only support SSO-based authentication via MAS and not via the legacy Synapse OIDC setup described below. That said, MAS is still a new experimental service which comes with its own downsides. Consult its documentation to learn if it will be a good fit for your deployment."
msgid "If your server is underpowered, joining heavy rooms can cause Synapse to consume a lot of resources and be unavailable for long (while it catches up)."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:87
msgid "If you'd like to use OpenID Connect authentication with Synapse, you'll need some additional configuration."
msgid "To avoid this, Synapse can be configured to reject joins for remote rooms that are too complex before users enter them."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:89
msgid "This example configuration is for [keycloak](https://www.keycloak.org/), an opensource Identity Provider maintained by Red Hat."
msgid "Complexity is computed as `current_state_events / 500` (Synapse state event count for current room state). When the resulting value is higher than `matrix_synapse_limit_remote_rooms_complexity` and `matrix_synapse_limit_remote_rooms_enabled` is `true`, Synapse blocks joining the room."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:91
msgid "For more detailed documentation on available options and how to setup keycloak, see the [Synapse documentation on OpenID Connect with keycloak](https://github.com/element-hq/synapse/blob/develop/docs/openid.md#keycloak)."
msgid "We recommend using this as a guardrail on low-resource servers:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:93
msgid "In case you encounter errors regarding the parsing of the variables, you can try to add `{% raw %}` and `{% endraw %}` blocks around them. For example ;"
#: ../../../docs/configuring-playbook-synapse.md:106
msgid "Synapse + OpenID Connect for Single-Sign-On"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:108
msgid "💡 An alternative to setting up OIDC in Synapse is to use [Matrix Authentication Service](./configuring-playbook-matrix-authentication-service.md) (MAS). Newer clients (like Element X) only support SSO-based authentication via MAS and not via the legacy Synapse OIDC setup described below. That said, MAS is still a new experimental service which comes with its own downsides. Consult its documentation to learn if it will be a good fit for your deployment."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:110
msgid "If you'd like to use OpenID Connect authentication with Synapse, you'll need some additional configuration."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:112
msgid "This example configuration is for [keycloak](https://www.keycloak.org/), an opensource Identity Provider maintained by Red Hat."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:114
msgid "Customizing templates"
msgid "For more detailed documentation on available options and how to setup keycloak, see the [Synapse documentation on OpenID Connect with keycloak](https://github.com/element-hq/synapse/blob/develop/docs/openid.md#keycloak)."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:116
msgid "In case you encounter errors regarding the parsing of the variables, you can try to add `{% raw %}` and `{% endraw %}` blocks around them. For example ;"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:137
msgid "Customizing templates"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:139
msgid "[Templates](https://github.com/element-hq/synapse/blob/develop/docs/templates.md) are used by Synapse for showing **certain web pages** handled by the server, as well as for **email notifications**."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:118
#: ../../../docs/configuring-playbook-synapse.md:141
msgid "This playbook allows you to customize the default templates (see the [`synapse/res/templates` directory](https://github.com/element-hq/synapse/tree/develop/synapse/res/templates))."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:120
#: ../../../docs/configuring-playbook-synapse.md:143
msgid "If template customization is enabled, the playbook will build a custom container image based on the official one."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:122
#: ../../../docs/configuring-playbook-synapse.md:145
msgid "Your custom templates need to live in a public or private git repository. This repository will be cloned during Synapse image customization (during the playbook run)."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:124
#: ../../../docs/configuring-playbook-synapse.md:147
msgid "To enable template customizations, add the following configuration to your `vars.yml` file (adapt to your needs):"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:150
#: ../../../docs/configuring-playbook-synapse.md:173
msgid "As mentioned in Synapse's Templates documentation, Synapse will fall back to its own templates if a template is not found in that directory. Due to this, it's recommended to only store and maintain template files in your repository if you need to make custom changes. Other files (which you don't need to change), should not be duplicated, so that you don't need to worry about getting out-of-sync with the original Synapse templates."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:152
#: ../../../docs/configuring-playbook-synapse.md:175
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:154
#: ../../../docs/configuring-playbook-synapse.md:177
msgid "There are some additional things you may wish to configure about the server."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:156
#: ../../../docs/configuring-playbook-synapse.md:179
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:158
#: ../../../docs/configuring-playbook-synapse.md:181
msgid "`roles/custom/matrix-synapse/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:159
#: ../../../docs/configuring-playbook-synapse.md:182
msgid "`roles/custom/matrix-synapse/templates/synapse/homeserver.yaml.j2` for the server's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_synapse_configuration_extension_yaml` variable"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:161
#: ../../../docs/configuring-playbook-synapse.md:184
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:163
#: ../../../docs/configuring-playbook-synapse.md:186
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:170
#: ../../../docs/configuring-playbook-synapse.md:193
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:172
#: ../../../docs/configuring-playbook-synapse.md:195
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:174
#: ../../../docs/configuring-playbook-synapse.md:197
msgid "Usage"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:176
#: ../../../docs/configuring-playbook-synapse.md:199
msgid "Synapse Admin"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:178
#: ../../../docs/configuring-playbook-synapse.md:201
msgid "With [Synapse Admin](configuring-playbook-synapse-admin.md), certain Synapse administration tasks (managing users and rooms, etc.) can be performed via a web user-interace."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:180
#: ../../../docs/configuring-playbook-synapse.md:203
msgid "The playbook can install and configure Synapse Admin for you. For details about it, see [this page](configuring-playbook-synapse-admin.md)."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:182
#: ../../../docs/configuring-playbook-synapse.md:205
msgid "Monitoring Synapse Metrics with Prometheus and Grafana"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:184
#: ../../../docs/configuring-playbook-synapse.md:207
msgid "This playbook allows you to enable Synapse metrics, which can provide insight into the performance and activity of Synapse."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:186
#: ../../../docs/configuring-playbook-synapse.md:209
msgid "To enable Synapse runtime metrics, see: [Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server](configuring-playbook-prometheus-grafana.md) and [its subsection](configuring-playbook-prometheus-grafana.md#expose-metrics-of-other-services-roles)"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:188
#: ../../../docs/configuring-playbook-synapse.md:211
msgid "To enable Synapse usage metrics, see: [Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md)"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:190
#: ../../../docs/configuring-playbook-synapse.md:213
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:192
#: ../../../docs/configuring-playbook-synapse.md:215
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-synapse`."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:194
#: ../../../docs/configuring-playbook-synapse.md:217
msgid "Increase logging verbosity"
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:196
#: ../../../docs/configuring-playbook-synapse.md:219
msgid "Because Synapse is originally very chatty when it comes to logging, we intentionally reduce its [logging level](https://docs.python.org/3/library/logging.html#logging-levels) from `INFO` to `WARNING`."
msgstr ""
#: ../../../docs/configuring-playbook-synapse.md:198
#: ../../../docs/configuring-playbook-synapse.md:221
msgid "If you'd like to debug an issue or [report a Synapse bug](https://github.com/element-hq/synapse/issues/new/choose) to the developers, it'd be better if you temporarily increase the logging verbosity to `INFO`. To do so, add the following configuration to your `vars.yml` file and re-run the playbook:"
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -21,173 +21,213 @@ msgid "Configuring a TURN server (optional, advanced)"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:16
msgid "By default, this playbook installs and configures the [coturn](https://github.com/coturn/coturn) as a TURN server, through which clients can make audio/video calls even from [NAT](https://en.wikipedia.org/wiki/Network_address_translation)-ed networks. It also configures the Synapse chat server by default, so that it points to the coturn TURN server installed by the playbook. If that's okay, you can skip this document."
msgid "By default, the [coturn](https://github.com/coturn/coturn) TURN server component is enabled automatically only when [Jitsi](configuring-playbook-jitsi.md) is enabled. If you're not using Jitsi, coturn is not enabled by default."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:18
msgid "If you'd like to stop the playbook installing the server, see the section [below](#disabling-coturn) to check the configuration for disabling it."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:20
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:22
msgid "Define public IP manually (optional)"
msgid "If you explicitly need coturn while not using Jitsi, enable it with:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:24
msgid "In the `hosts` file we explicitly ask for your server's external IP address when defining `ansible_host`, because the same value is used for configuring coturn."
msgid "and configure its IP-related settings in the section below."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:26
msgid "If you'd rather use a local IP for `ansible_host`, add the following configuration to your `vars.yml` file. Make sure to replace `YOUR_PUBLIC_IP` with the pubic IP used by the server."
msgid "If you'd like coturn to stay disabled even when Jitsi is enabled, or if you prefer to use an external TURN provider, see [disabling coturn](#disabling-coturn) section below."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:28
msgid "When Coturn is not enabled, homeservers (like Synapse) would not point to TURN servers and *legacy* audio/video call functionality may fail. If you're using [Matrix RTC](configuring-playbook-matrix-rtc.md) (for [Element Call](configuring-playbook-element-call.md)), you likely don't have a need to enable coturn."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:30
msgid "Adjusting firewall rules"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:32
msgid "If you'd like to rely on external IP address auto-detection (not recommended unless you need it), set an empty value to the variable. The playbook will automatically contact an [echoip](https://github.com/mpolden/echoip)-compatible service (`https://ifconfig.co/json` by default) to determine your server's IP address. This API endpoint is configurable via the `coturn_turn_external_ip_address_auto_detection_echoip_service_url` variable."
msgid "To ensure Coturn functions correctly, the following firewall rules and port forwarding settings are required when coturn is enabled:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:34
msgid "[!NOTE] You can self-host the echoip service by using the [Mother-of-All-Self-Hosting (MASH)](https://github.com/mother-of-all-self-hosting/mash-playbook) Ansible playbook. See [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/echoip.md) for the instruction to install it with the playbook. If you are wondering how to use it for your Matrix server, refer to [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/setting-up-services-on-mdad-server.md) for the overview."
msgid "`3478/tcp`: STUN/TURN over TCP"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:35
msgid "`3478/udp`: STUN/TURN over UDP"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:36
msgid "`5349/tcp`: TURN over TCP"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:37
msgid "If your server has multiple external IP addresses, the coturn role offers a different variable for specifying them:"
msgid "`5349/udp`: TURN over UDP"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:38
msgid "`49152-49172/udp`: TURN/UDP relay range"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:40
msgid "If LiveKit's embedded TURN is enabled at the same time (for MatrixRTC/Element Call), keep the Coturn relay range distinct from LiveKit's relay range (`livekit_server_config_turn_relay_range_start`/`livekit_server_config_turn_relay_range_end`)."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:42
msgid "💡 Docker configures the server's internal firewall for you. In most cases, you don't need to do anything special on the host itself."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:44
msgid "Change the authentication mechanism (optional)"
msgid "Adjusting the playbook configuration"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:46
msgid "The playbook uses the [`auth-secret` authentication method](https://github.com/coturn/coturn/blob/873cabd6a2e5edd7e9cc5662cac3ffe47fe87a8e/README.turnserver#L186-L199) by default, but you may switch to the [`lt-cred-mech` method](https://github.com/coturn/coturn/blob/873cabd6a2e5edd7e9cc5662cac3ffe47fe87a8e/README.turnserver#L178) which [some report](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3191) to be working better."
msgid "Define public IP manually (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:48
msgid "To do so, add the following configuration to your `vars.yml` file:"
msgid "If you enable coturn (either via Jitsi or manually), we recommend that you configure the public IP addresses of your server in the `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:54
msgid "Regardless of the selected authentication method, the playbook generates secrets automatically and passes them to the homeserver and coturn."
#: ../../../docs/configuring-playbook-turn.md:55
msgid "If you'd like to rely on external IP address auto-detection (not recommended unless you need it), avoid configuring this variable. The playbook will automatically contact an [echoip](https://github.com/mpolden/echoip)-compatible service (`https://ifconfig.co/json` by default) to determine your server's IP address. This API endpoint is configurable via the `coturn_turn_external_ip_address_auto_detection_echoip_service_url` variable."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:56
msgid "If [Jitsi](configuring-playbook-jitsi.md) is installed, note that switching to `lt-cred-mech` will disable the integration between Jitsi and your coturn server, as Jitsi seems to support the `auth-secret` authentication method only."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:58
msgid "Customize the Coturn hostname (optional)"
#: ../../../docs/configuring-playbook-turn.md:57
msgid "[!NOTE] You can self-host the echoip service by using the [Mother-of-All-Self-Hosting (MASH)](https://github.com/mother-of-all-self-hosting/mash-playbook) Ansible playbook. See [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/echoip.md) for the instruction to install it with the playbook. If you are wondering how to use it for your Matrix server, refer to [this page](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/setting-up-services-on-mdad-server.md) for the overview."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:60
msgid "By default, Coturn uses the same hostname as your Matrix homeserver (the value of `matrix_server_fqn_matrix`, which is typically `matrix.example.com`)."
msgid "Change the authentication mechanism (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:62
msgid "If you'd like to use a custom subdomain for Coturn (e.g., `turn.example.com` or `t.matrix.example.com`), add the following configuration to your `vars.yml` file:"
msgid "The playbook uses the [`auth-secret` authentication method](https://github.com/coturn/coturn/blob/873cabd6a2e5edd7e9cc5662cac3ffe47fe87a8e/README.turnserver#L186-L199) by default, but you may switch to the [`lt-cred-mech` method](https://github.com/coturn/coturn/blob/873cabd6a2e5edd7e9cc5662cac3ffe47fe87a8e/README.turnserver#L178) which [some report](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3191) to be working better."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:68
msgid "The playbook will automatically:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:69
msgid "Configure Coturn to use this hostname"
#: ../../../docs/configuring-playbook-turn.md:64
msgid "To do so, add the following configuration to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:70
msgid "Regardless of the selected authentication method, the playbook generates secrets automatically and passes them to the homeserver and coturn."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:72
msgid "If [Jitsi](configuring-playbook-jitsi.md) is installed, note that switching to `lt-cred-mech` will disable the integration between Jitsi and your coturn server, as Jitsi seems to support the `auth-secret` authentication method only."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:74
msgid "Customize the Coturn hostname (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:76
msgid "By default, Coturn uses the same hostname as your Matrix homeserver (the value of `matrix_server_fqn_matrix`, which is typically `matrix.example.com`)."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:78
msgid "If you'd like to use a custom subdomain for Coturn (e.g., `turn.example.com` or `t.matrix.example.com`), add the following configuration to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:84
msgid "The playbook will automatically:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:85
msgid "Configure Coturn to use this hostname"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:86
msgid "Obtain an SSL certificate for the custom domain via Traefik"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:71
#: ../../../docs/configuring-playbook-turn.md:87
msgid "Update all TURN URIs to point to the custom domain"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:73
#: ../../../docs/configuring-playbook-turn.md:89
msgid "**Note**: Make sure the custom hostname resolves to your server's IP address via DNS before running the playbook."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:75
#: ../../../docs/configuring-playbook-turn.md:91
msgid "Use your own external coturn server (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:77
#: ../../../docs/configuring-playbook-turn.md:93
msgid "If you'd like to use another TURN server (be it coturn or some other one), add the following configuration to your `vars.yml` file. Make sure to replace `HOSTNAME_OR_IP` with your own."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:91
#: ../../../docs/configuring-playbook-turn.md:107
msgid "If you have or want to enable Jitsi, you might want to enable the TURN server there too. If you do not do it, Jitsi will fall back to an upstream service."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:98
#: ../../../docs/configuring-playbook-turn.md:114
msgid "You can put multiple host/port combinations if you'd like to."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:100
#: ../../../docs/configuring-playbook-turn.md:116
msgid "Edit the reloading schedule (optional)"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:102
#: ../../../docs/configuring-playbook-turn.md:118
msgid "By default the service is reloaded on 6:30 a.m. every day based on the `coturn_reload_schedule` variable so that new SSL certificates can kick in. It is defined in the format of systemd timer calendar."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:104
#: ../../../docs/configuring-playbook-turn.md:120
msgid "To edit the schedule, add the following configuration to your `vars.yml` file (adapt to your needs):"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:110
#: ../../../docs/configuring-playbook-turn.md:126
msgid "**Note**: the actual job may run with a delay. See `coturn_reload_schedule_randomized_delay_sec` for its default value."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:112
#: ../../../docs/configuring-playbook-turn.md:128
msgid "Extending the configuration"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:114
#: ../../../docs/configuring-playbook-turn.md:130
msgid "There are some additional things you may wish to configure about the TURN server."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:116
#: ../../../docs/configuring-playbook-turn.md:132
msgid "Take a look at:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:118
#: ../../../docs/configuring-playbook-turn.md:134
msgid "`roles/galaxy/coturn/defaults/main.yml` for some variables that you can customize via your `vars.yml` file"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:120
#: ../../../docs/configuring-playbook-turn.md:136
msgid "Disabling coturn"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:122
msgid "If, for some reason, you'd like for the playbook to not install coturn (or to uninstall it if it was previously installed), add the following configuration to your `vars.yml` file:"
#: ../../../docs/configuring-playbook-turn.md:138
msgid "Coturn is only enabled by default when [Jitsi](configuring-playbook-jitsi.md) is enabled. In most instances, you don't need to explicitly disable it."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:128
msgid "In that case, Synapse would not point to any coturn servers and audio/video call functionality may fail."
#: ../../../docs/configuring-playbook-turn.md:140
msgid "To force the playbook to not install Coturn (even when Jitsi is enabled), add the following configuration to your `vars.yml` file:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:130
#: ../../../docs/configuring-playbook-turn.md:146
msgid "Installing"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:132
#: ../../../docs/configuring-playbook-turn.md:148
msgid "After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:139
#: ../../../docs/configuring-playbook-turn.md:155
msgid "The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:141
#: ../../../docs/configuring-playbook-turn.md:157
msgid "`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too."
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:143
#: ../../../docs/configuring-playbook-turn.md:159
msgid "Troubleshooting"
msgstr ""
#: ../../../docs/configuring-playbook-turn.md:145
#: ../../../docs/configuring-playbook-turn.md:161
msgid "As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-coturn`."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -169,155 +169,155 @@ msgid "[Setting up Cinny](configuring-playbook-client-cinny.md), if you've enabl
msgstr ""
#: ../../../docs/configuring-playbook.md:90
msgid "[Setting up SchildiChat Web](configuring-playbook-client-schildichat-web.md), if you've enabled [SchildiChat Web](https://schildi.chat/), a web client based on [Element Web](https://element.io/) with some extras and tweaks"
msgid "[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"
msgstr ""
#: ../../../docs/configuring-playbook.md:92
msgid "[Setting up SchildiChat Web](configuring-playbook-client-schildichat-web.md), if you've enabled [SchildiChat Web](https://schildi.chat/), a web client based on [Element Web](https://element.io/) with some extras and tweaks"
msgstr ""
#: ../../../docs/configuring-playbook.md:94
msgid "[Setting up FluffyChat Web](configuring-playbook-client-fluffychat-web.md), if you've enabled [FluffyChat Web](https://github.com/krille-chan/fluffychat), a cute cross-platform messenger (web, iOS, Android) for Matrix written in [Flutter](https://flutter.dev/)"
msgstr ""
#: ../../../docs/configuring-playbook.md:95
#: ../../../docs/configuring-playbook.md:97
msgid "Authentication and user-related"
msgstr ""
#: ../../../docs/configuring-playbook.md:97
#: ../../../docs/configuring-playbook.md:99
msgid "Extend and modify how users are authenticated on your homeserver."
msgstr ""
#: ../../../docs/configuring-playbook.md:99
#: ../../../docs/configuring-playbook.md:101
msgid "[Setting up Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) (Next-generation auth for Matrix, based on OAuth 2.0/OIDC)"
msgstr ""
#: ../../../docs/configuring-playbook.md:101
#: ../../../docs/configuring-playbook.md:103
msgid "[Setting up Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:103
#: ../../../docs/configuring-playbook.md:105
msgid "[Setting up Synapse Admin](configuring-playbook-synapse-admin.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:105
#: ../../../docs/configuring-playbook.md:107
msgid "[Setting up matrix-registration](configuring-playbook-matrix-registration.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:107
#: ../../../docs/configuring-playbook.md:109
msgid "[Setting up the REST authentication password provider module](configuring-playbook-rest-auth.md) (advanced)"
msgstr ""
#: ../../../docs/configuring-playbook.md:109
#: ../../../docs/configuring-playbook.md:111
msgid "[Setting up the Shared Secret Auth password provider module](configuring-playbook-shared-secret-auth.md) (advanced)"
msgstr ""
#: ../../../docs/configuring-playbook.md:111
#: ../../../docs/configuring-playbook.md:113
msgid "[Setting up the LDAP authentication password provider module](configuring-playbook-ldap-auth.md) (advanced)"
msgstr ""
#: ../../../docs/configuring-playbook.md:113
#: ../../../docs/configuring-playbook.md:115
msgid "[Setting up matrix-ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md) (advanced)"
msgstr ""
#: ../../../docs/configuring-playbook.md:115
#: ../../../docs/configuring-playbook.md:117
msgid "[Setting up Synapse Simple Antispam](configuring-playbook-synapse-simple-antispam.md) (advanced)"
msgstr ""
#: ../../../docs/configuring-playbook.md:117
#: ../../../docs/configuring-playbook.md:119
msgid "[Setting up Matrix User Verification Service](configuring-playbook-user-verification-service.md) (advanced)"
msgstr ""
#: ../../../docs/configuring-playbook.md:119
#: ../../../docs/configuring-playbook.md:121
msgid "File Storage"
msgstr ""
#: ../../../docs/configuring-playbook.md:121
#: ../../../docs/configuring-playbook.md:123
msgid "Use alternative file storage to the default `media_store` folder."
msgstr ""
#: ../../../docs/configuring-playbook.md:123
#: ../../../docs/configuring-playbook.md:125
msgid "[Storing Matrix media files using matrix-media-repo](configuring-playbook-matrix-media-repo.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:125
#: ../../../docs/configuring-playbook.md:127
msgid "[Storing Synapse media files on Amazon S3 or another compatible Object Storage](configuring-playbook-s3.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:127
#: ../../../docs/configuring-playbook.md:129
msgid "[Storing Synapse media files on Amazon S3 with Goofys](configuring-playbook-s3-goofys.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:129
#: ../../../docs/configuring-playbook.md:131
msgid "[Storing Synapse media files on Amazon S3 with synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:131
#: ../../../docs/configuring-playbook.md:133
msgid "Bridging other networks"
msgstr ""
#: ../../../docs/configuring-playbook.md:133
#: ../../../docs/configuring-playbook.md:135
msgid "Bridges can be used to connect your Matrix installation with third-party communication networks."
msgstr ""
#: ../../../docs/configuring-playbook.md:135
#: ../../../docs/configuring-playbook.md:137
msgid "[Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md) — a common guide for configuring mautrix bridges"
msgstr ""
#: ../../../docs/configuring-playbook.md:137
#: ../../../docs/configuring-playbook.md:139
msgid "[Setting up Mautrix Bluesky bridging](configuring-playbook-bridge-mautrix-bluesky.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:139
#: ../../../docs/configuring-playbook.md:141
msgid "[Setting up Mautrix Discord bridging](configuring-playbook-bridge-mautrix-discord.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:141
#: ../../../docs/configuring-playbook.md:143
msgid "[Setting up Mautrix Telegram bridging](configuring-playbook-bridge-mautrix-telegram.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:143
#: ../../../docs/configuring-playbook.md:145
msgid "[Setting up Mautrix Slack bridging](configuring-playbook-bridge-mautrix-slack.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:145
#: ../../../docs/configuring-playbook.md:147
msgid "[Setting up Mautrix Google Messages bridging](configuring-playbook-bridge-mautrix-gmessages.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:147
#: ../../../docs/configuring-playbook.md:149
msgid "[Setting up Mautrix Whatsapp bridging](configuring-playbook-bridge-mautrix-whatsapp.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:149
#: ../../../docs/configuring-playbook.md:151
msgid "[Setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:151
#: ../../../docs/configuring-playbook.md:153
msgid "[Setting up Messenger bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-messenger.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:153
#: ../../../docs/configuring-playbook.md:155
msgid "[Setting up Mautrix Google Chat bridging](configuring-playbook-bridge-mautrix-googlechat.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:155
#: ../../../docs/configuring-playbook.md:157
msgid "[Setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:157
#: ../../../docs/configuring-playbook.md:159
msgid "[Setting up Mautrix Signal bridging](configuring-playbook-bridge-mautrix-signal.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:159
#: ../../../docs/configuring-playbook.md:161
msgid "[Setting up Mautrix wsproxy for bridging Android SMS or Apple iMessage](configuring-playbook-bridge-mautrix-wsproxy.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:161
#: ../../../docs/configuring-playbook.md:163
msgid "[Setting up Appservice IRC bridging](configuring-playbook-bridge-appservice-irc.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:163
msgid "[Setting up Appservice Discord bridging](configuring-playbook-bridge-appservice-discord.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:165
msgid "[Setting up Appservice Slack bridging](configuring-playbook-bridge-appservice-slack.md)"
msgid "[Setting up Appservice Discord bridging](configuring-playbook-bridge-appservice-discord.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:167
@@ -465,61 +465,61 @@ msgid "[Setting up Matrix RTC](configuring-playbook-matrix-rtc.md) (optional)"
msgstr ""
#: ../../../docs/configuring-playbook.md:238
msgid "[Setting up Synapse Auto Invite Accept](configuring-playbook-synapse-auto-accept-invite.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:240
msgid "[Setting up synapse-auto-compressor](configuring-playbook-synapse-auto-compressor.md) for compressing the database on Synapse homeservers"
msgstr ""
#: ../../../docs/configuring-playbook.md:242
#: ../../../docs/configuring-playbook.md:240
msgid "[Setting up Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced)"
msgstr ""
#: ../../../docs/configuring-playbook.md:244
#: ../../../docs/configuring-playbook.md:242
msgid "[Setting up Matrix.to](configuring-playbook-matrixto.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:246
#: ../../../docs/configuring-playbook.md:244
msgid "[Setting up Etherpad](configuring-playbook-etherpad.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:248
#: ../../../docs/configuring-playbook.md:246
msgid "[Setting up the Jitsi video-conferencing platform](configuring-playbook-jitsi.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:250
#: ../../../docs/configuring-playbook.md:248
msgid "[Setting up Cactus Comments](configuring-playbook-cactus-comments.md) — a federated comment system built on Matrix"
msgstr ""
#: ../../../docs/configuring-playbook.md:252
#: ../../../docs/configuring-playbook.md:250
msgid "[Setting up Pantalaimon (E2EE aware proxy daemon)](configuring-playbook-pantalaimon.md) (advanced)"
msgstr ""
#: ../../../docs/configuring-playbook.md:254
#: ../../../docs/configuring-playbook.md:252
msgid "[Setting up the Sygnal push gateway](configuring-playbook-sygnal.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:256
#: ../../../docs/configuring-playbook.md:254
msgid "[Setting up the ntfy push notifications server](configuring-playbook-ntfy.md)"
msgstr ""
#: ../../../docs/configuring-playbook.md:258
#: ../../../docs/configuring-playbook.md:256
msgid "Deprecated / unmaintained / removed services"
msgstr ""
#: ../../../docs/configuring-playbook.md:260
#: ../../../docs/configuring-playbook.md:258
msgid "**Note**: since a deprecated or unmaintained service will not be updated, its bug or vulnerability will be unlikely to get patched. It is recommended to migrate from the service to an alternative if any, and make sure to do your own research before you decide to keep it running nonetheless."
msgstr ""
#: ../../../docs/configuring-playbook.md:262
#: ../../../docs/configuring-playbook.md:260
msgid "[Configuring conduwuit](configuring-playbook-conduwuit.md) (removed; this component has been abandoned and unmaintained)"
msgstr ""
#: ../../../docs/configuring-playbook.md:264
#: ../../../docs/configuring-playbook.md:262
msgid "[Setting up the Sliding Sync proxy](configuring-playbook-sliding-sync-proxy.md) for clients which require Sliding Sync support (like old Element X versions, before it got switched to Simplified Sliding Sync)"
msgstr ""
#: ../../../docs/configuring-playbook.md:264
msgid "[Setting up Appservice Slack bridging](configuring-playbook-bridge-appservice-slack.md) (removed; this component has been discontinued)"
msgstr ""
#: ../../../docs/configuring-playbook.md:266
msgid "[Setting up Appservice Webhooks bridging](configuring-playbook-bridge-appservice-webhooks.md) (deprecated; the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bridge-hookshot.md))"
msgstr ""
@@ -575,3 +575,7 @@ msgstr ""
#: ../../../docs/configuring-playbook.md:292
msgid "[Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md))"
msgstr ""
#: ../../../docs/configuring-playbook.md:294
msgid "[Setting up Synapse Auto Invite Accept](configuring-playbook-synapse-auto-accept-invite.md) (removed; since Synapse [v1.109.0](https://github.com/element-hq/synapse/releases/tag/v1.109.0) the same feature is available natively.)"
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -148,6 +148,14 @@ msgstr ""
msgid "Simple, elegant and secure web client"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[Sable](configuring-playbook-client-sable.md)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[7w1/sable](https://ghcr.io/7w1/sable)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[SchildiChat Web](configuring-playbook-client-schildichat-web.md)"
msgstr ""
@@ -160,11 +168,11 @@ msgstr ""
msgid "Based on Element Web, with a more traditional instant messaging experience"
msgstr ""
#: ../../../docs/container-images.md:44
#: ../../../docs/container-images.md:45
msgid "Server Components"
msgstr ""
#: ../../../docs/container-images.md:46
#: ../../../docs/container-images.md:47
msgid "Services that run on the server to make the various parts of your installation work."
msgstr ""
@@ -264,11 +272,11 @@ msgstr ""
msgid "JWT service for integrating [Element Call](./configuring-playbook-element-call.md) with [LiveKit Server](./configuring-playbook-livekit-server.md)"
msgstr ""
#: ../../../docs/container-images.md:59
#: ../../../docs/container-images.md:60
msgid "Authentication"
msgstr ""
#: ../../../docs/container-images.md:61
#: ../../../docs/container-images.md:62
msgid "Extend and modify how users are authenticated on your homeserver."
msgstr ""
@@ -344,11 +352,11 @@ msgstr ""
msgid "Spam checker module"
msgstr ""
#: ../../../docs/container-images.md:73
#: ../../../docs/container-images.md:74
msgid "File Storage"
msgstr ""
#: ../../../docs/container-images.md:75
#: ../../../docs/container-images.md:76
msgid "Use alternative file storage to the default `media_store` folder."
msgstr ""
@@ -380,11 +388,11 @@ msgstr ""
msgid "Highly customizable multi-domain media repository for Matrix. Intended for medium to large deployments, this media repo de-duplicates media while being fully compliant with the specification."
msgstr ""
#: ../../../docs/container-images.md:83
#: ../../../docs/container-images.md:84
msgid "Bridges"
msgstr ""
#: ../../../docs/container-images.md:85
#: ../../../docs/container-images.md:86
msgid "Bridges can be used to connect your Matrix installation with third-party communication networks."
msgstr ""
@@ -568,14 +576,6 @@ msgstr ""
msgid "Bridge to [Discord](https://discordapp.com/)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[matrixdotorg/matrix-appservice-slack](https://hub.docker.com/r/matrixdotorg/matrix-appservice-slack)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[matrix-hookshot](configuring-playbook-bridge-hookshot.md)"
msgstr ""
@@ -908,14 +908,6 @@ msgstr ""
msgid "Various services that don't fit any other categories."
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[synapse_auto_accept_invite](configuring-playbook-synapse-auto-accept-invite.md)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "Synapse module to automatically accept invites"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[synapse_auto_compressor](configuring-playbook-synapse-auto-compressor.md)"
msgstr ""
@@ -1052,11 +1044,11 @@ msgstr ""
msgid "A native Matrix video conferencing application"
msgstr ""
#: ../../../docs/container-images.md:168
#: ../../../docs/container-images.md:167
msgid "Container images of deprecated / unmaintained services"
msgstr ""
#: ../../../docs/container-images.md:170
#: ../../../docs/container-images.md:169
msgid "The list of the deprecated or unmaintained services is available [here](configuring-playbook.md#deprecated--unmaintained--removed-services)."
msgstr ""
@@ -1120,6 +1112,14 @@ msgstr ""
msgid "Matrix Identity Server"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[matrixdotorg/matrix-appservice-slack](https://hub.docker.com/r/matrixdotorg/matrix-appservice-slack)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md)"
msgstr ""
@@ -1223,3 +1223,11 @@ msgstr ""
#: ../../../docs/container-images.md:0
msgid "Sliding Sync support for clients which require it (like old Element X versions, before it got switched to Simplified Sliding Sync)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "[synapse_auto_accept_invite](configuring-playbook-synapse-auto-accept-invite.md)"
msgstr ""
#: ../../../docs/container-images.md:0
msgid "Synapse module to automatically accept invites"
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -573,254 +573,266 @@ msgid "How do I optimize this setup for a low-power server?"
msgstr ""
#: ../../../docs/faq.md:308
msgid "For a low-power server, it's best to use an alternative homeserver implementation (other than [Synapse](configuring-playbook-synapse.md))."
msgstr ""
#: ../../../docs/faq.md:310
msgid "You can disable some not-so-important services to save on memory."
msgstr ""
#: ../../../docs/faq.md:327
msgid "You can also consider implementing a restriction on room complexity, in order to prevent users from joining very heavy rooms:"
msgstr ""
#: ../../../docs/faq.md:337
#: ../../../docs/faq.md:317
msgid "If you've installed [Jitsi](configuring-playbook-jitsi.md) (not installed by default), there are additional optimizations listed on its documentation page that you can perform."
msgstr ""
#: ../../../docs/faq.md:339
#: ../../../docs/faq.md:320
msgid "Synapse-specific optimizations"
msgstr ""
#: ../../../docs/faq.md:322
msgid "If you're using [Synapse](configuring-playbook-synapse.md), you can also consider the following optimizations:"
msgstr ""
#: ../../../docs/faq.md:332
msgid "You can also consider [implementing a restriction on room complexity](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts), in order to prevent users from joining very heavy rooms:"
msgstr ""
#: ../../../docs/faq.md:340
msgid "I already have Docker on my server. Can you stop installing Docker via the playbook?"
msgstr ""
#: ../../../docs/faq.md:341
#: ../../../docs/faq.md:342
msgid "Yes, we can stop installing Docker ourselves. Just use this in your `vars.yml` file:"
msgstr ""
#: ../../../docs/faq.md:347
#: ../../../docs/faq.md:348
msgid "I run another webserver on the same server where I wish to install Matrix. What now?"
msgstr ""
#: ../../../docs/faq.md:349
#: ../../../docs/faq.md:350
msgid "By default, we install a webserver for you ([Traefik](https://doc.traefik.io/traefik/)), but you can also use [your own webserver](configuring-playbook-own-webserver.md)."
msgstr ""
#: ../../../docs/faq.md:351
#: ../../../docs/faq.md:352
msgid "How is the effective configuration determined?"
msgstr ""
#: ../../../docs/faq.md:353
#: ../../../docs/faq.md:354
msgid "Configuration variables are defined in multiple places in this playbook and are considered in this order:"
msgstr ""
#: ../../../docs/faq.md:355
#: ../../../docs/faq.md:356
msgid "there are defaults coming from each role's defaults file (`role/matrix*/defaults/main.yml`). These variable values aim to be good defaults for when the role is used standalone (outside of this collection of roles, also called playbook)."
msgstr ""
#: ../../../docs/faq.md:357
#: ../../../docs/faq.md:358
msgid "then, there are overrides in `group_vars/matrix_servers`, which aim to adjust these \"standalone role defaults\" to something which better fits the playbook in its entirety."
msgstr ""
#: ../../../docs/faq.md:359
#: ../../../docs/faq.md:360
msgid "finally, there's your `inventory/host_vars/matrix.example.com/vars.yml` file, which is the ultimate override"
msgstr ""
#: ../../../docs/faq.md:361
#: ../../../docs/faq.md:362
msgid "What configuration variables are available?"
msgstr ""
#: ../../../docs/faq.md:363
#: ../../../docs/faq.md:364
msgid "You can discover the variables you can override in each role (`roles/*/*/defaults/main.yml`)."
msgstr ""
#: ../../../docs/faq.md:365
#: ../../../docs/faq.md:366
msgid "As described in [How is the effective configuration determined?](#how-is-the-effective-configuration-determined), these role-defaults may be overridden by values defined in `group_vars/matrix_servers`."
msgstr ""
#: ../../../docs/faq.md:367
#: ../../../docs/faq.md:368
msgid "Refer to both of these for inspiration. Still, as mentioned in [Configuring the playbook](configuring-playbook.md), you're only ever supposed to edit your own `inventory/host_vars/matrix.example.com/vars.yml` file and nothing else inside the playbook (unless you're meaning to contribute new features)."
msgstr ""
#: ../../../docs/faq.md:369
#: ../../../docs/faq.md:381
#: ../../../docs/faq.md:370
#: ../../../docs/faq.md:382
msgid "**Note**: some of the roles (`roles/galaxy/*`) live in separate repositories and are only installed after your run `just roles` (or `make roles`) or `just update` (which automatically does `git pull` and `just roles`)."
msgstr ""
#: ../../../docs/faq.md:371
#: ../../../docs/faq.md:372
msgid "I'd like to adjust some configuration which doesn't have a corresponding variable. How do I do it?"
msgstr ""
#: ../../../docs/faq.md:373
#: ../../../docs/faq.md:374
msgid "The playbook doesn't aim to expose all configuration settings for all services using variables. Doing so would amount to hundreds of variables that we have to create and maintain."
msgstr ""
#: ../../../docs/faq.md:375
#: ../../../docs/faq.md:376
msgid "Instead, we only try to make some important basics configurable using dedicated variables you can see in each role. See [What configuration variables are available?](#what-configuration-variables-are-available)."
msgstr ""
#: ../../../docs/faq.md:377
#: ../../../docs/faq.md:378
msgid "Besides that, each role (component) aims to provide a `matrix_SOME_COMPONENT_configuration_extension_yaml` (or `matrix_SOME_COMPONENT_configuration_extension_json`) variable, which can be used to override the configuration."
msgstr ""
#: ../../../docs/faq.md:379
#: ../../../docs/faq.md:380
msgid "Check each role's `roles/*/*/defaults/main.yml` for the corresponding variable and an example for how use it."
msgstr ""
#: ../../../docs/faq.md:383
#: ../../../docs/faq.md:384
msgid "Installation"
msgstr ""
#: ../../../docs/faq.md:385
#: ../../../docs/faq.md:386
msgid "How do I run the installation?"
msgstr ""
#: ../../../docs/faq.md:387
#: ../../../docs/faq.md:388
msgid "See [Installing](installing.md) to learn how to use Ansible to install Matrix services."
msgstr ""
#: ../../../docs/faq.md:389
#: ../../../docs/faq.md:390
msgid "However, we recommend you to follow our installation guide, instead of jumping straight to installing."
msgstr ""
#: ../../../docs/faq.md:391
#: ../../../docs/faq.md:392
msgid "There are two guides available:"
msgstr ""
#: ../../../docs/faq.md:393
#: ../../../docs/faq.md:394
msgid "⚡ **[Quick start](quick-start.md)** (for beginners): this is recommended for those who do not have an existing Matrix server and want to start quickly with \"opinionated defaults\"."
msgstr ""
#: ../../../docs/faq.md:395
#: ../../../docs/faq.md:396
msgid "**Full installation guide (for advanced users)**: if you need to import an existing Matrix server's data into the new server or want to learn more while setting up the server, follow this guide by starting with the **[Prerequisites](prerequisites.md)** documentation page."
msgstr ""
#: ../../../docs/faq.md:397
#: ../../../docs/faq.md:398
msgid "I installed Synapse some other way. Can I migrate such a setup to the playbook?"
msgstr ""
#: ../../../docs/faq.md:399
#: ../../../docs/faq.md:400
msgid "Yes, you can."
msgstr ""
#: ../../../docs/faq.md:401
#: ../../../docs/faq.md:402
msgid "You generally need to do a playbook installation. It's recommended to follow the full installation guide (starting at the [Prerequisites](prerequisites.md) page), not the [Quick start](quick-start.md) guide. The full installation guide will tell you when it's time to import your existing data into the newly-prepared server."
msgstr ""
#: ../../../docs/faq.md:403
#: ../../../docs/faq.md:404
msgid "This Ansible playbook guides you into installing a server for `example.com` (user IDs are like this: `@alice:example.com`), while the server is at `matrix.example.com`. If your existing setup has a server name (`server_name` configuration setting in Synapse's `homeserver.yaml` file) other than the base `example.com`, you may need to tweak some additional variables. This FAQ entry may be of use if you're dealing with a more complicated setup — [How do I install on matrix.example.com without involving the base domain?](#how-do-i-install-on-matrixexamplecom-without-involving-the-base-domain)"
msgstr ""
#: ../../../docs/faq.md:405
#: ../../../docs/faq.md:406
msgid "After configuring the playbook and installing and **before starting** services (done with `ansible-playbook … --tags=start`) you'd import [your SQLite](importing-synapse-sqlite.md) (or [Postgres](importing-postgres.md)) database and also [import your media store](importing-synapse-media-store.md)."
msgstr ""
#: ../../../docs/faq.md:407
#: ../../../docs/faq.md:408
msgid "I've downloaded Ansible and the playbook on the server. It can't connect using SSH."
msgstr ""
#: ../../../docs/faq.md:409
#: ../../../docs/faq.md:410
msgid "If you're using the playbook directly on the server, then Ansible doesn't need to connect using SSH."
msgstr ""
#: ../../../docs/faq.md:411
#: ../../../docs/faq.md:412
msgid "It can perform a local connection instead. Just set `ansible_connection=local` at the end of the server line in `inventory/hosts` and re-run the playbook."
msgstr ""
#: ../../../docs/faq.md:413
#: ../../../docs/faq.md:414
msgid "If you're running Ansible from within a container (one of the possibilities we list on our [dedicated Ansible documentation page](ansible.md)), then using `ansible_connection=local` is not possible."
msgstr ""
#: ../../../docs/faq.md:415
#: ../../../docs/faq.md:416
msgid "Maintenance and Troubleshooting"
msgstr ""
#: ../../../docs/faq.md:417
#: ../../../docs/faq.md:418
msgid "💡 Also see this page for generic information about maintaining the services and troubleshooting: [Maintenance and Troubleshooting](maintenance-and-troubleshooting.md)"
msgstr ""
#: ../../../docs/faq.md:419
#: ../../../docs/faq.md:420
msgid "Do I need to do anything to keep my Matrix server updated?"
msgstr ""
#: ../../../docs/faq.md:421
#: ../../../docs/faq.md:422
msgid "Yes. We don't update anything for you automatically."
msgstr ""
#: ../../../docs/faq.md:423
#: ../../../docs/faq.md:424
msgid "See our [documentation page about upgrading services](maintenance-upgrading-services.md)."
msgstr ""
#: ../../../docs/faq.md:425
#: ../../../docs/faq.md:426
msgid "How do I move my existing installation to another (VM) server?"
msgstr ""
#: ../../../docs/faq.md:427
#: ../../../docs/faq.md:428
msgid "If you have an existing installation done using this Ansible playbook, you can easily migrate that to another server following [our dedicated server migration guide](maintenance-migrating.md)."
msgstr ""
#: ../../../docs/faq.md:429
#: ../../../docs/faq.md:430
msgid "If your previous installation is done in some other way (not using this Ansible playbook), see [I installed Synapse some other way. Can I migrate such a setup to the playbook?](#i-installed-synapse-some-other-way-can-i-migrate-such-a-setup-to-the-playbook)."
msgstr ""
#: ../../../docs/faq.md:431
#: ../../../docs/faq.md:432
msgid "What is this `/matrix/postgres/data-auto-upgrade-backup` directory that is taking up so much space?"
msgstr ""
#: ../../../docs/faq.md:433
#: ../../../docs/faq.md:434
msgid "When you [perform a major Postgres upgrade](maintenance-postgres.md#upgrading-postgresql), we save the the old data files in `/matrix/postgres/data-auto-upgrade-backup`, just so you could easily restore them should something have gone wrong."
msgstr ""
#: ../../../docs/faq.md:435
#: ../../../docs/faq.md:436
msgid "After verifying that everything still works after the Postgres upgrade, you can safely delete `/matrix/postgres/data-auto-upgrade-backup`"
msgstr ""
#: ../../../docs/faq.md:437
#: ../../../docs/faq.md:438
msgid "I get \"Error response from daemon: configured logging driver does not support reading\" when I run `docker logs matrix-synapse`. Why?"
msgstr ""
#: ../../../docs/faq.md:439
#: ../../../docs/faq.md:440
msgid "To prevent double-logging, Docker logging is disabled by explicitly passing `--log-driver=none` to all containers. Due to this, you cannot view logs using `docker logs matrix-*`."
msgstr ""
#: ../../../docs/faq.md:441
#: ../../../docs/faq.md:442
msgid "See [this section](maintenance-and-troubleshooting.md#how-to-see-the-logs) on the page for maintenance and troubleshooting for more details to see the logs."
msgstr ""
#: ../../../docs/faq.md:443
#: ../../../docs/faq.md:444
msgid "The server fails to start due to the `Unable to start service matrix-coturn.service` error. Why and how to solve it?"
msgstr ""
#: ../../../docs/faq.md:445
#: ../../../docs/faq.md:446
msgid "The error is most likely because Traefik cannot obtain SSL certificates due to certain reasons such as wrong domain name configuration or port 80 being unavailable due to other services."
msgstr ""
#: ../../../docs/faq.md:447
#: ../../../docs/faq.md:448
msgid "If Traefik fails to obtain an SSL certificate for domain names such as `matrix.`, Traefik Certs Dumper cannot extract the SSL certificate out of there, and coturn cannot be started and the error occurs. Refer to these comments for details:"
msgstr ""
#: ../../../docs/faq.md:449
#: ../../../docs/faq.md:450
msgid "<https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3957#issuecomment-2599590441>"
msgstr ""
#: ../../../docs/faq.md:450
#: ../../../docs/faq.md:451
msgid "<https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4570#issuecomment-3364111466>"
msgstr ""
#: ../../../docs/faq.md:452
#: ../../../docs/faq.md:453
msgid "If you are not sure what the problem is, at first make sure that you have set the \"base domain\" (`example.com`, **not `matrix.example.com`**) to `matrix_domain`. You should be able to find it at the top of your `vars.yml`."
msgstr ""
#: ../../../docs/faq.md:454
#: ../../../docs/faq.md:455
msgid "If it is correctly specified, look Traefik's logs (`journalctl -fu matrix-traefik.service`) for errors by Let's Encrypt for troubleshooting."
msgstr ""
#: ../../../docs/faq.md:456
#: ../../../docs/faq.md:457
msgid "Miscellaneous"
msgstr ""
#: ../../../docs/faq.md:458
#: ../../../docs/faq.md:459
msgid "I would like to see this favorite service of mine integrated and become available on my Matrix server. How can I request it?"
msgstr ""
#: ../../../docs/faq.md:460
#: ../../../docs/faq.md:461
msgid "You can freely create an issue for feature request on the repository at GitHub [here](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/new/choose). Note this is a community project with no financial backing, and there is not assurance that your request would be eventually picked up by others and the requested feature would become available. The easiest way to get a feature into this project is to just develop it yourself."
msgstr ""
#: ../../../docs/faq.md:462
#: ../../../docs/faq.md:463
msgid "Also, please note that this playbook intends to focus solely on Matrix and Matrix-related services. If your request is not specific to Matrix, you may as well to consider to submit it to the [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook), maintained by the members behind this matrix-docker-ansible-deploy project. [This document on the interoperability](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/interoperability.md) describes how to deploy services along with the Matrix services easily."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -249,61 +249,61 @@ msgid "or join some Matrix rooms:"
msgstr ""
#: ../../../docs/installing.md:148
msgid "via the *Explore rooms* feature in Element Web or some other clients, or by discovering them using this [matrix-static list](https://view.matrix.org). **Note**: joining large rooms may overload small servers."
msgstr ""
#: ../../../docs/installing.md:149
msgid "or come say Hi in our support room — [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com). You might learn something or get to help someone else new to Matrix hosting."
msgid "via the *Explore rooms* feature in Element Web or some other clients, or by discovering them using this [matrix-static list](https://view.matrix.org). **Note**: joining large rooms may overload small servers. For tuning guidance on constrained hosts, see [Limit joining heavy rooms on constrained hosts](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts)."
msgstr ""
#: ../../../docs/installing.md:150
msgid "or come say Hi in our support room — [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com). You might learn something or get to help someone else new to Matrix hosting."
msgstr ""
#: ../../../docs/installing.md:151
msgid "or help make this playbook better by contributing (code, documentation, or [coffee/beer](https://liberapay.com/s.pantaleev/donate))"
msgstr ""
#: ../../../docs/installing.md:152
#: ../../../docs/installing.md:153
msgid "⚠️ Keep the playbook and services up-to-date"
msgstr ""
#: ../../../docs/installing.md:154
#: ../../../docs/installing.md:155
msgid "While this playbook helps you to set up Matrix services and maintain them, it will **not** automatically run the maintenance task for you. You will need to update the playbook and re-run it **manually**."
msgstr ""
#: ../../../docs/installing.md:156
#: ../../../docs/installing.md:157
msgid "The upstream projects, which this playbook makes use of, occasionally if not often suffer from security vulnerabilities."
msgstr ""
#: ../../../docs/installing.md:158
#: ../../../docs/installing.md:159
msgid "Since it is unsafe to keep outdated services running on the server connected to the internet, please consider to update the playbook and re-run it periodically, in order to keep the services up-to-date."
msgstr ""
#: ../../../docs/installing.md:160
#: ../../../docs/installing.md:161
msgid "Also, do not forget to update your system regularly. While this playbook may install basic services, such as Docker, it will not interfere further with system maintenance. Keeping the system itself up-to-date is out of scope for this playbook."
msgstr ""
#: ../../../docs/installing.md:162
#: ../../../docs/installing.md:163
msgid "For more information about upgrading or maintaining services with the playbook, take a look at this page: [Upgrading the Matrix services](maintenance-upgrading-services.md)"
msgstr ""
#: ../../../docs/installing.md:164
#: ../../../docs/installing.md:165
msgid "Feel free to **re-run the setup command any time** you think something is wrong with the server configuration. Ansible will take your configuration and update your server to match."
msgstr ""
#: ../../../docs/installing.md:170
#: ../../../docs/installing.md:171
msgid "**Note**: see [this page on the playbook tags](playbook-tags.md) for more information about those tags."
msgstr ""
#: ../../../docs/installing.md:172
#: ../../../docs/installing.md:173
msgid "Make full use of `just` shortcut commands"
msgstr ""
#: ../../../docs/installing.md:174
#: ../../../docs/installing.md:175
msgid "After you get familiar with reconfiguring and re-running the playbook to maintain the server, upgrade its services, etc., you probably would like to make use of `just` shortcut commands for faster input."
msgstr ""
#: ../../../docs/installing.md:176
#: ../../../docs/installing.md:177
msgid "For example, `just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed."
msgstr ""
#: ../../../docs/installing.md:178
#: ../../../docs/installing.md:179
msgid "You can learn about the shortcut commands on this page: [Running `just` commands](just.md)"
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -162,17 +162,17 @@ msgid "Conditional service restart"
msgstr ""
#: ../../../docs/just.md:49
msgid "When using `just install-all` or `just install-service`, only services whose configuration or container image actually changed during the playbook run will be restarted. Unchanged services are left running (or get started if they were stopped). This reduces unnecessary downtime."
msgid "When running `install-all` or `install-service` (whether via `just` or raw `ansible-playbook`), only services whose configuration or container image actually changed during the playbook run will be restarted. Unchanged services are left running (or get started if they were stopped). This reduces unnecessary downtime."
msgstr ""
#: ../../../docs/just.md:51
msgid "When using `just setup-all`, all services are unconditionally restarted regardless of whether changes were detected. This is appropriate for `setup-all`'s thorough \"full setup\" semantics."
msgid "When running with `setup-*` tags (e.g. `setup-all`, `setup-synapse`), all services are unconditionally restarted regardless of whether changes were detected. This is appropriate for setup's thorough \"full setup\" semantics."
msgstr ""
#: ../../../docs/just.md:53
msgid "`just start-all` and `just start-group` always restart all targeted services, since no installation tasks run during these commands."
msgid "`start-all` and `start-group` always restart all targeted services, since no installation tasks run during these commands."
msgstr ""
#: ../../../docs/just.md:55
msgid "This behavior is controlled by the `devture_systemd_service_manager_conditional_restart_enabled` variable (default: `true`). To force unconditional restarts during installation, pass: `just install-all --extra-vars='devture_systemd_service_manager_conditional_restart_enabled=false'`"
msgid "This behavior is automatically determined based on the playbook tags in use. It can be overridden with the `devture_systemd_service_manager_conditional_restart_enabled` variable. For example, to force unconditional restarts during installation: `just install-all --extra-vars='devture_systemd_service_manager_conditional_restart_enabled=false'`"
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -145,57 +145,61 @@ msgid "Synapse's presence feature which tracks which users are online and which
msgstr ""
#: ../../../docs/maintenance-synapse.md:86
msgid "If you have enough compute resources (CPU & RAM), you can make Synapse better use of them by [enabling load-balancing with workers](configuring-playbook-synapse.md#load-balancing-with-workers)."
msgid "On smaller servers, consider limiting joins to very complex rooms with [the room complexity guard](configuring-playbook-synapse.md#limit-joining-heavy-rooms-on-constrained-hosts)."
msgstr ""
#: ../../../docs/maintenance-synapse.md:88
msgid "[Tuning your PostgreSQL database](maintenance-postgres.md#tuning-postgresql) could also improve Synapse performance. The playbook tunes the integrated Postgres database automatically, but based on your needs you may wish to adjust tuning variables manually. If you're using an [external Postgres database](configuring-playbook-external-postgres.md), you will also need to tune Postgres manually."
msgid "If you have enough compute resources (CPU & RAM), you can make Synapse better use of them by [enabling load-balancing with workers](configuring-playbook-synapse.md#load-balancing-with-workers)."
msgstr ""
#: ../../../docs/maintenance-synapse.md:90
msgid "Tuning caches and cache autotuning"
msgid "[Tuning your PostgreSQL database](maintenance-postgres.md#tuning-postgresql) could also improve Synapse performance. The playbook tunes the integrated Postgres database automatically, but based on your needs you may wish to adjust tuning variables manually. If you're using an [external Postgres database](configuring-playbook-external-postgres.md), you will also need to tune Postgres manually."
msgstr ""
#: ../../../docs/maintenance-synapse.md:92
msgid "Tuning Synapse's cache factor is useful for performance increases but also as part of controlling Synapse's memory use. Use the variable `matrix_synapse_caches_global_factor` to set the cache factor as part of this process."
msgid "Tuning caches and cache autotuning"
msgstr ""
#: ../../../docs/maintenance-synapse.md:94
msgid "**The playbook defaults the global cache factor to a large value** (e.g. `10`). A smaller value (e.g. `0.5`) will decrease the amount used for caches, but will [not necessarily decrease RAM usage as a whole](https://github.com/matrix-org/synapse/issues/3939)."
msgid "Tuning Synapse's cache factor is useful for performance increases but also as part of controlling Synapse's memory use. Use the variable `matrix_synapse_caches_global_factor` to set the cache factor as part of this process."
msgstr ""
#: ../../../docs/maintenance-synapse.md:96
msgid "Tuning the cache factor is useful only to a limited degree (as its crude to do in isolation) and therefore users who are tuning their cache factor should likely look into tuning autotune variables as well (see below)."
msgid "**The playbook defaults the global cache factor to a large value** (e.g. `10`). A smaller value (e.g. `0.5`) will decrease the amount used for caches, but will [not necessarily decrease RAM usage as a whole](https://github.com/matrix-org/synapse/issues/3939)."
msgstr ""
#: ../../../docs/maintenance-synapse.md:98
msgid "Cache autotuning is **enabled by default** and controlled via the following variables:"
msgid "Tuning the cache factor is useful only to a limited degree (as its crude to do in isolation) and therefore users who are tuning their cache factor should likely look into tuning autotune variables as well (see below)."
msgstr ""
#: ../../../docs/maintenance-synapse.md:100
msgid "`matrix_synapse_cache_autotuning_max_cache_memory_usage` — defaults to 1/8 of total RAM with a cap of 2GB; values are specified in bytes"
msgstr ""
#: ../../../docs/maintenance-synapse.md:101
msgid "`matrix_synapse_cache_autotuning_target_cache_memory_usage` — defaults to 1/16 of total RAM with a cap of 1GB; values are specified in bytes"
msgid "Cache autotuning is **enabled by default** and controlled via the following variables:"
msgstr ""
#: ../../../docs/maintenance-synapse.md:102
msgid "`matrix_synapse_cache_autotuning_min_cache_ttl` — defaults to `30s`"
msgid "`matrix_synapse_cache_autotuning_max_cache_memory_usage` — defaults to 1/8 of total RAM with a cap of 2GB; values are specified in bytes"
msgstr ""
#: ../../../docs/maintenance-synapse.md:103
msgid "`matrix_synapse_cache_autotuning_target_cache_memory_usage` — defaults to 1/16 of total RAM with a cap of 1GB; values are specified in bytes"
msgstr ""
#: ../../../docs/maintenance-synapse.md:104
msgid "You can **learn more about cache-autotuning and the global cache factor settings** in the [Synapse's documentation on caches and associated values](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#caches-and-associated-values)."
msgid "`matrix_synapse_cache_autotuning_min_cache_ttl` — defaults to `30s`"
msgstr ""
#: ../../../docs/maintenance-synapse.md:106
msgid "You can **learn more about cache-autotuning and the global cache factor settings** in the [Synapse's documentation on caches and associated values](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#caches-and-associated-values)."
msgstr ""
#: ../../../docs/maintenance-synapse.md:108
msgid "To **disable cache auto-tuning**, unset all values:"
msgstr ""
#: ../../../docs/maintenance-synapse.md:114
#: ../../../docs/maintenance-synapse.md:116
msgid "Users who wish to lower Synapse's RAM footprint should look into lowering the global cache factor and tweaking the autotune variables (or disabling auto-tuning). If your cache factor is too low for a given auto tune setting your caches will not reach autotune thresholds and autotune won't be able to do its job. Therefore, when auto-tuning is enabled (which it is by default), it's recommended to have your cache factor be large."
msgstr ""
#: ../../../docs/maintenance-synapse.md:116
#: ../../../docs/maintenance-synapse.md:118
msgid "See also [How do I optimize this setup for a low-power server?](faq.md#how-do-i-optimize-this-setup-for-a-low-power-server)."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -125,33 +125,13 @@ msgid "`443/tcp` and `443/udp`: HTTPS webserver"
msgstr ""
#: ../../../docs/prerequisites.md:60
msgid "`3478/tcp`: STUN/TURN over TCP (used by [coturn](./configuring-playbook-turn.md))"
msgstr ""
#: ../../../docs/prerequisites.md:61
msgid "`3478/udp`: STUN/TURN over UDP (used by [coturn](./configuring-playbook-turn.md))"
msgstr ""
#: ../../../docs/prerequisites.md:62
msgid "`5349/tcp`: TURN over TCP (used by [coturn](./configuring-playbook-turn.md))"
msgstr ""
#: ../../../docs/prerequisites.md:63
msgid "`5349/udp`: TURN over UDP (used by [coturn](./configuring-playbook-turn.md))"
msgstr ""
#: ../../../docs/prerequisites.md:64
msgid "`8448/tcp` and `8448/udp`: Matrix Federation API HTTPS webserver. Some components like [Matrix User Verification Service](configuring-playbook-user-verification-service.md#open-matrix-federation-port) require this port to be opened **even with federation disabled**."
msgstr ""
#: ../../../docs/prerequisites.md:65
msgid "the range `49152-49172/udp`: TURN over UDP"
msgstr ""
#: ../../../docs/prerequisites.md:66
#: ../../../docs/prerequisites.md:61
msgid "potentially some other ports, depending on the additional (non-default) services that you enable in the **configuring the playbook** step (later on). Consult each service's documentation page in `docs/` for that."
msgstr ""
#: ../../../docs/prerequisites.md:70
#: ../../../docs/prerequisites.md:65
msgid "[▶️](configuring-dns.md) When ready to proceed, continue with [Configuring DNS](configuring-dns.md)."
msgstr ""

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-02-13 10:32+0000\n"
"POT-Creation-Date: 2026-03-23 07:10+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"
@@ -65,31 +65,31 @@ msgid "`cinny`"
msgstr ""
#: ../../../docs/self-building.md:33
msgid "`matrix-registration`"
msgid "`sable`"
msgstr ""
#: ../../../docs/self-building.md:34
msgid "`coturn`"
msgid "`matrix-registration`"
msgstr ""
#: ../../../docs/self-building.md:35
msgid "`matrix-corporal`"
msgid "`coturn`"
msgstr ""
#: ../../../docs/self-building.md:36
msgid "`exim-relay`"
msgid "`matrix-corporal`"
msgstr ""
#: ../../../docs/self-building.md:37
msgid "`matrix-bridge-hookshot`"
msgid "`exim-relay`"
msgstr ""
#: ../../../docs/self-building.md:38
msgid "`matrix-bridge-appservice-irc`"
msgid "`matrix-bridge-hookshot`"
msgstr ""
#: ../../../docs/self-building.md:39
msgid "`matrix-bridge-appservice-slack`"
msgid "`matrix-bridge-appservice-irc`"
msgstr ""
#: ../../../docs/self-building.md:40

View File

@@ -4,6 +4,11 @@
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# mise (dev tool version manager)
mise_data_dir := env("MISE_DATA_DIR", justfile_directory() / "var/mise")
mise_trusted_config_paths := justfile_directory() / "mise.toml"
prek_home := env("PREK_HOME", justfile_directory() / "var/prek")
# Shows help
default:
@{{ just_executable() }} --list --justfile "{{ justfile() }}"
@@ -39,9 +44,39 @@ update-playbook-only:
@git pull -q
@-git stash pop -q
# Runs ansible-lint against all roles in the playbook
lint:
ansible-lint
# Invokes mise with the project-local data directory
mise *args: _ensure_mise_data_directory
#!/bin/sh
export MISE_DATA_DIR="{{ mise_data_dir }}"
export MISE_TRUSTED_CONFIG_PATHS="{{ mise_trusted_config_paths }}"
export MISE_YES=1
export PREK_HOME="{{ prek_home }}"
mise {{ args }}
# Runs prek (pre-commit hooks manager) with the given arguments
prek *args: _ensure_mise_tools_installed
@{{ just_executable() }} --justfile "{{ justfile() }}" mise exec -- prek {{ args }}
# Runs pre-commit hooks on staged files
prek-run-on-staged *args: _ensure_mise_tools_installed
@{{ just_executable() }} --justfile "{{ justfile() }}" prek run {{ args }}
# Runs pre-commit hooks on all files
prek-run-on-all *args: _ensure_mise_tools_installed
@{{ just_executable() }} --justfile "{{ justfile() }}" prek run --all-files {{ args }}
# Installs the git pre-commit hook
prek-install-git-pre-commit-hook: _ensure_mise_tools_installed
#!/usr/bin/env sh
set -eu
{{ just_executable() }} --justfile "{{ justfile() }}" mise exec -- prek install
hook="{{ justfile_directory() }}/.git/hooks/pre-commit"
# The installed git hook runs later under Git, outside this just/mise environment.
# Injecting PREK_HOME keeps prek's cache under var/prek instead of a global home dir,
# which is more predictable and works better in sandboxed tools like Codex/OpenCode.
if [ -f "$hook" ] && ! grep -q '^export PREK_HOME=' "$hook"; then
sed -i '2iexport PREK_HOME="{{ prek_home }}"' "$hook"
fi
# Runs the playbook with --tags=install-all,ensure-matrix-users-created,start and optional arguments
install-all *extra_args: (run-tags "install-all,ensure-matrix-users-created,start" extra_args)
@@ -84,3 +119,12 @@ stop-group group *extra_args:
# Rebuilds the mautrix-meta-instagram Ansible role using the mautrix-meta-messenger role as a source
rebuild-mautrix-meta-instagram:
/bin/bash "{{ justfile_directory() }}/bin/rebuild-mautrix-meta-instagram.sh" "{{ justfile_directory() }}/roles/custom"
# Internal - ensures var/mise and var/prek directories exist
_ensure_mise_data_directory:
@mkdir -p "{{ mise_data_dir }}"
@mkdir -p "{{ prek_home }}"
# Internal - ensures mise tools are installed
_ensure_mise_tools_installed: _ensure_mise_data_directory
@{{ just_executable() }} --justfile "{{ justfile() }}" mise install --quiet

9
mise.toml Normal file
View File

@@ -0,0 +1,9 @@
# SPDX-FileCopyrightText: 2026 Slavi Pantaleev
#
# SPDX-License-Identifier: AGPL-3.0-or-later
[tools]
prek = "0.3.2"
[settings]
yes = true

View File

@@ -4,20 +4,20 @@
version: v1.0.0-6
name: auxiliary
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg.git
version: v1.4.3-2.1.1-0
version: v1.4.3-2.1.3-2
name: backup_borg
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-cinny.git
version: v4.10.3-0
version: v4.11.1-1
name: cinny
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-container-socket-proxy.git
version: v0.4.2-3
version: v0.4.2-4
name: container_socket_proxy
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-coturn.git
version: v4.8.0-1
version: v4.9.0-1
name: coturn
activation_prefix: coturn_
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-ddclient.git
version: v4.0.0-0
version: v4.0.0-2
name: ddclient
activation_prefix: ddclient_
- src: git+https://github.com/geerlingguy/ansible-role-docker
@@ -27,25 +27,25 @@
version: 542a2d68db4e9a8e9bb4b508052760b900c7dce6
name: docker_sdk_for_python
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-etherpad.git
version: v2.6.1-0
version: v2.6.1-3
name: etherpad
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay.git
version: v4.98.1-r0-2-3
version: v4.99.1-r0-0-1
name: exim_relay
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-grafana.git
version: v11.6.5-6
version: v11.6.5-9
name: grafana
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-hydrogen.git
version: v0.5.1-0
version: v0.5.1-2
name: hydrogen
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-jitsi.git
version: v10741-0
version: v10741-2
name: jitsi
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server.git
version: v1.9.11-1
version: v1.9.12-1
name: livekit_server
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-ntfy.git
version: v2.17.0-0
version: v2.19.2-1
name: ntfy
- src: git+https://github.com/devture/com.devture.ansible.role.playbook_help.git
version: 8630e4f1749bcb659c412820f754473f09055052
@@ -57,35 +57,41 @@
version: dd6e15246b7a9a2d921e0b3f9cd8a4a917a1bb2f
name: playbook_state_preserver
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres.git
version: v18.2-1
version: v18.3-1
name: postgres
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup.git
version: v18-0
version: v18-2
name: postgres_backup
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus.git
version: v3.9.1-0
version: v3.10.0-1
name: prometheus
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-nginxlog-exporter.git
version: v1.10.0-2
name: prometheus_nginxlog_exporter
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter.git
version: v1.9.1-13
version: v1.10.2-0
name: prometheus_node_exporter
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter.git
version: v0.19.0-0
version: v0.19.1-3
name: prometheus_postgres_exporter
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-sable.git
version: v1.6.0-2
name: sable
- src: git+https://github.com/devture/com.devture.ansible.role.systemd_docker_base.git
version: v1.4.1-0
version: v1.5.0-0
name: systemd_docker_base
- src: git+https://github.com/devture/com.devture.ansible.role.systemd_service_manager.git
version: v3.0.0-1
version: v3.2.0-0
name: systemd_service_manager
- src: git+https://github.com/devture/com.devture.ansible.role.timesync.git
version: v1.1.0-1
name: timesync
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik.git
version: v3.6.8-4
version: v3.6.11-2
name: traefik
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik-certs-dumper.git
version: v2.10.0-5
name: traefik_certs_dumper
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-valkey.git
version: v9.0.2-0
version: v9.0.3-3
name: valkey

View File

@@ -11,7 +11,7 @@
matrix_alertmanager_receiver_enabled: true
# renovate: datasource=docker depName=docker.io/metio/matrix-alertmanager-receiver
matrix_alertmanager_receiver_version: 2026.2.11
matrix_alertmanager_receiver_version: 2026.3.18
matrix_alertmanager_receiver_scheme: https

View File

@@ -1,5 +1,5 @@
# SPDX-FileCopyrightText: 2024 MDAD project contributors
# SPDX-FileCopyrightText: 2024 - 2025 Catalan Lover <catalanlover@protonmail.com>
# SPDX-FileCopyrightText: 2024 - 2026 Catalan Lover <catalanlover@protonmail.com>
# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
#
@@ -17,16 +17,17 @@ matrix_appservice_draupnir_for_all_version: "v2.9.0"
matrix_appservice_draupnir_for_all_container_image_self_build: false
matrix_appservice_draupnir_for_all_container_image_self_build_repo: "https://github.com/the-draupnir-project/Draupnir.git"
matrix_appservice_draupnir_for_all_docker_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_draupnir_for_all_container_image_self_build else matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream }}"
matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream: "{{ matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream_default }}"
matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream_default: "docker.io/"
matrix_appservice_draupnir_for_all_docker_image: "{{ matrix_appservice_draupnir_for_all_docker_image_registry_prefix }}gnuxie/draupnir:{{ matrix_appservice_draupnir_for_all_version }}"
matrix_appservice_draupnir_for_all_docker_image_force_pull: "{{ matrix_appservice_draupnir_for_all_docker_image.endswith(':latest') }}"
matrix_appservice_draupnir_for_all_container_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_draupnir_for_all_container_image_self_build else matrix_appservice_draupnir_for_all_container_image_registry_prefix_upstream }}"
matrix_appservice_draupnir_for_all_container_image_registry_prefix_upstream: "{{ matrix_appservice_draupnir_for_all_container_image_registry_prefix_upstream_default }}"
matrix_appservice_draupnir_for_all_container_image_registry_prefix_upstream_default: "docker.io/"
matrix_appservice_draupnir_for_all_container_image: "{{ matrix_appservice_draupnir_for_all_container_image_registry_prefix }}{{ matrix_appservice_draupnir_for_all_container_image_registry_namespace_identifier }}:{{ matrix_appservice_draupnir_for_all_version }}"
matrix_appservice_draupnir_for_all_container_image_registry_namespace_identifier: "gnuxie/draupnir"
matrix_appservice_draupnir_for_all_container_image_force_pull: "{{ matrix_appservice_draupnir_for_all_container_image.endswith(':latest') }}"
matrix_appservice_draupnir_for_all_base_path: "{{ matrix_base_data_path }}/draupnir-for-all"
matrix_appservice_draupnir_for_all_config_path: "{{ matrix_appservice_draupnir_for_all_base_path }}/config"
matrix_appservice_draupnir_for_all_data_path: "{{ matrix_appservice_draupnir_for_all_base_path }}/data"
matrix_appservice_draupnir_for_all_docker_src_files_path: "{{ matrix_appservice_draupnir_for_all_base_path }}/docker-src"
matrix_appservice_draupnir_for_all_container_src_files_path: "{{ matrix_appservice_draupnir_for_all_base_path }}/docker-src"
matrix_appservice_draupnir_for_all_container_network: ""

View File

@@ -22,15 +22,15 @@
- {path: "{{ matrix_appservice_draupnir_for_all_base_path }}", when: true}
- {path: "{{ matrix_appservice_draupnir_for_all_config_path }}", when: true}
- {path: "{{ matrix_appservice_draupnir_for_all_data_path }}", when: true}
- {path: "{{ matrix_appservice_draupnir_for_all_docker_src_files_path }}", when: "{{ matrix_appservice_draupnir_for_all_container_image_self_build }}"}
- {path: "{{ matrix_appservice_draupnir_for_all_container_src_files_path }}", when: "{{ matrix_appservice_draupnir_for_all_container_image_self_build }}"}
when: "item.when | bool"
- name: Ensure Draupnir Docker image is pulled
community.docker.docker_image:
name: "{{ matrix_appservice_draupnir_for_all_docker_image }}"
name: "{{ matrix_appservice_draupnir_for_all_container_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_appservice_draupnir_for_all_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_appservice_draupnir_for_all_docker_image_force_pull }}"
force_source: "{{ matrix_appservice_draupnir_for_all_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_appservice_draupnir_for_all_container_image_force_pull }}"
when: "not matrix_appservice_draupnir_for_all_container_image_self_build | bool"
register: matrix_appservice_draupnir_for_all_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}"
@@ -40,8 +40,8 @@
- name: Ensure Draupnir repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_appservice_draupnir_for_all_container_image_self_build_repo }}"
dest: "{{ matrix_appservice_draupnir_for_all_docker_src_files_path }}"
version: "{{ matrix_appservice_draupnir_for_all_docker_image.split(':')[1] }}"
dest: "{{ matrix_appservice_draupnir_for_all_container_src_files_path }}"
version: "{{ matrix_appservice_draupnir_for_all_container_image.split(':')[1] }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
@@ -50,12 +50,12 @@
- name: Ensure Draupnir Docker image is built
community.docker.docker_image:
name: "{{ matrix_appservice_draupnir_for_all_docker_image }}"
name: "{{ matrix_appservice_draupnir_for_all_container_image }}"
source: build
force_source: "{{ matrix_appservice_draupnir_for_all_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_appservice_draupnir_for_all_docker_src_files_path }}"
path: "{{ matrix_appservice_draupnir_for_all_container_src_files_path }}"
pull: true
when: "matrix_appservice_draupnir_for_all_container_image_self_build | bool"

View File

@@ -7,14 +7,6 @@
---
- name: Fail if required matrix-bot-draupnir variables are undefined
ansible.builtin.fail:
msg: "The `{{ item }}` variable must be defined and have a non-null value."
with_items:
- "matrix_appservice_draupnir_for_all_config_adminRoom"
- "matrix_bot_draupnir_container_network"
when: "lookup('vars', item, default='') == '' or lookup('vars', item, default='') is none"
- name: (Deprecation) Catch and report renamed matrix-appservice-draupnir-for-all settings
ansible.builtin.fail:
msg: >-
@@ -22,6 +14,20 @@
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_appservice_draupnir_for_all_docker_image_name_prefix', 'new': 'matrix_appservice_draupnir_for_all_docker_image_registry_prefix'}
- {'old': 'matrix_appservice_draupnir_for_all_docker_image_name_prefix', 'new': 'matrix_appservice_draupnir_for_all_container_image_registry_prefix'}
- {'old': 'matrix_appservice_draupnir_for_all_enable_room_state_backing_store', 'new': 'matrix_appservice_draupnir_for_all_config_roomStateBackingStore_enabled'}
- {'old': 'matrix_appservice_draupnir_for_all_master_control_room_alias', 'new': 'matrix_appservice_draupnir_for_all_config_adminRoom'}
- {'old': 'matrix_appservice_draupnir_for_all_docker_image', 'new': 'matrix_appservice_draupnir_for_all_container_image'}
- {'old': 'matrix_appservice_draupnir_for_all_docker_image_force_pull', 'new': 'matrix_appservice_draupnir_for_all_container_image_force_pull'}
- {'old': 'matrix_appservice_draupnir_for_all_docker_image_registry_prefix', 'new': 'matrix_appservice_draupnir_for_all_container_image_registry_prefix'}
- {'old': 'matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream', 'new': 'matrix_appservice_draupnir_for_all_container_image_registry_prefix_upstream'}
- {'old': 'matrix_appservice_draupnir_for_all_docker_image_registry_prefix_upstream_default', 'new': 'matrix_appservice_draupnir_for_all_container_image_registry_prefix_upstream_default'}
- {'old': 'matrix_appservice_draupnir_for_all_docker_src_files_path', 'new': 'matrix_appservice_draupnir_for_all_container_src_files_path'}
- name: Fail if required matrix-bot-draupnir variables are undefined
ansible.builtin.fail:
msg: "The `{{ item }}` variable must be defined and have a non-null value."
with_items:
- "matrix_appservice_draupnir_for_all_config_adminRoom"
- "matrix_bot_draupnir_container_network"
when: "lookup('vars', item, default='') == '' or lookup('vars', item, default='') is none"

View File

@@ -29,7 +29,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% for arg in matrix_appservice_draupnir_for_all_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_appservice_draupnir_for_all_docker_image }} \
{{ matrix_appservice_draupnir_for_all_container_image }} \
appservice -c /data/config/production-appservice.yaml -f /data/config/draupnir-for-all-registration.yaml -p {{ matrix_appservice_draupnir_for_all_appservice_port }} --draupnir-config /data/config/production-bots.yaml
{% for network in matrix_appservice_draupnir_for_all_container_additional_networks %}

View File

@@ -22,7 +22,7 @@ matrix_authentication_service_container_repo_version: "{{ 'main' if matrix_authe
matrix_authentication_service_container_src_files_path: "{{ matrix_base_data_path }}/matrix-authentication-service/container-src"
# renovate: datasource=docker depName=ghcr.io/element-hq/matrix-authentication-service
matrix_authentication_service_version: 1.11.0
matrix_authentication_service_version: 1.13.0
matrix_authentication_service_container_image_registry_prefix: "{{ 'localhost/' if matrix_authentication_service_container_image_self_build else matrix_authentication_service_container_image_registry_prefix_upstream }}"
matrix_authentication_service_container_image_registry_prefix_upstream: "{{ matrix_authentication_service_container_image_registry_prefix_upstream_default }}"
matrix_authentication_service_container_image_registry_prefix_upstream_default: "ghcr.io/"
@@ -300,6 +300,15 @@ matrix_authentication_service_config_database_idle_timeout: 600
# Controls the `database.max_lifetime` configuration setting.
matrix_authentication_service_config_database_max_lifetime: 1800
# Controls whether the database connection is made via a UNIX socket.
matrix_authentication_service_config_database_socket_enabled: false
# The path to the Postgres socket's parent directory inside the MAS container.
matrix_authentication_service_config_database_socket_path: "/run-postgres"
# The path to the Postgres socket directory on the host (bind-mount source).
matrix_authentication_service_config_database_socket_path_host: ""
########################################################################################
# #
# /Database configuration #
@@ -613,6 +622,10 @@ matrix_authentication_service_syn2mas_synapse_homeserver_config_path: ""
matrix_authentication_service_syn2mas_container_network: "{{ matrix_authentication_service_container_network }}"
matrix_authentication_service_syn2mas_synapse_database_socket_enabled: false
matrix_authentication_service_syn2mas_synapse_database_socket_path: ""
matrix_authentication_service_syn2mas_synapse_database_socket_path_host: ""
# Additional options passed to the syn2mas sub-command (e.g. `mas-cli syn2mas [OPTIONS] migrate|check`).
# Also see: `matrix_authentication_service_syn2mas_subcommand_extra_options`
#

View File

@@ -33,6 +33,25 @@
loop_control:
loop_var: private_key_definition
# We intentionally do a single fixup pass here (instead of in `prepare_key.yml`)
# so that we reconcile both newly generated keys and any pre-existing keys with
# incorrect ownership/mode in one place.
#
# This primarily protects against setups where `become_user` is effectively not
# honored (for example due to inventory misconfiguration such as `ansible_become=false`),
# which can lead to host-side key generation creating root-owned files.
#
# See: https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/5033
- name: Ensure Matrix Authentication Service private keys have correct ownership and mode
ansible.builtin.file:
path: "{{ matrix_authentication_service_data_keys_path }}/{{ item.key_file }}"
state: file
mode: '0600'
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items: "{{ matrix_authentication_service_key_management_list }}"
register: matrix_authentication_service_private_keys_result
- name: Ensure Matrix Authentication Service configuration installed
ansible.builtin.copy:
content: "{{ matrix_authentication_service_configuration | to_nice_yaml(indent=2, width=999999) }}"
@@ -117,4 +136,5 @@
or matrix_authentication_service_support_files_result.changed | default(false)
or matrix_authentication_service_systemd_service_result.changed | default(false)
or matrix_authentication_service_container_image_pull_result.changed | default(false)
or matrix_authentication_service_private_keys_result.changed | default(false)
}}

View File

@@ -71,6 +71,12 @@
--mount type=bind,src={{ matrix_authentication_service_config_path }}/config.yaml,dst=/config.yaml,ro
--mount type=bind,src={{ matrix_authentication_service_data_keys_path }},dst=/keys,ro
--mount type=bind,src={{ matrix_authentication_service_syn2mas_synapse_homeserver_config_path }},dst=/homeserver.yaml,ro
{% if matrix_authentication_service_config_database_socket_enabled %}
--mount type=bind,src={{ matrix_authentication_service_config_database_socket_path_host }},dst={{ matrix_authentication_service_config_database_socket_path }}
{% endif %}
{% if matrix_authentication_service_syn2mas_synapse_database_socket_enabled and (not matrix_authentication_service_config_database_socket_enabled or matrix_authentication_service_syn2mas_synapse_database_socket_path != matrix_authentication_service_config_database_socket_path) %}
--mount type=bind,src={{ matrix_authentication_service_syn2mas_synapse_database_socket_path_host }},dst={{ matrix_authentication_service_syn2mas_synapse_database_socket_path }}
{% endif %}
{{ matrix_authentication_service_container_image }}
syn2mas
--synapse-config=/homeserver.yaml

View File

@@ -14,7 +14,8 @@
- {'name': 'matrix_authentication_service_hostname', when: true}
- {'name': 'matrix_authentication_service_config_database_username', when: true}
- {'name': 'matrix_authentication_service_config_database_password', when: true}
- {'name': 'matrix_authentication_service_config_database_host', when: true}
- {'name': 'matrix_authentication_service_config_database_host', when: "{{ not matrix_authentication_service_config_database_socket_enabled }}"}
- {'name': 'matrix_authentication_service_config_database_socket_path_host', when: "{{ matrix_authentication_service_config_database_socket_enabled }}"}
- {'name': 'matrix_authentication_service_config_database_database', when: true}
- {'name': 'matrix_authentication_service_config_secrets_encryption', when: true}
- {'name': 'matrix_authentication_service_config_matrix_homeserver', when: true}

View File

@@ -28,6 +28,9 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--label-file={{ matrix_authentication_service_config_path }}/labels \
--mount type=bind,src={{ matrix_authentication_service_config_path }}/config.yaml,dst=/config.yaml,ro \
--mount type=bind,src={{ matrix_authentication_service_data_keys_path }},dst=/keys,ro \
{% if matrix_authentication_service_config_database_socket_enabled %}
--mount type=bind,src={{ matrix_authentication_service_config_database_socket_path_host }},dst={{ matrix_authentication_service_config_database_socket_path }} \
{% endif %}
{% for arg in matrix_authentication_service_container_extra_arguments %}
{{ arg }} \
{% endfor %}

View File

@@ -92,6 +92,10 @@ matrix_homeserver_enabled: true
# Note that the homeserver implementation of a server will not be able to be changed without data loss.
matrix_homeserver_implementation: synapse
# The priority that the homeserver starts with (lower = starts earlier).
# Related to the systemd_service_manager role and `devture_systemd_service_manager_services_list*` variables.
matrix_homeserver_systemd_service_manager_priority: 1000
# This contains a secret, which is used for generating various other secrets later on.
matrix_homeserver_generic_secret_key: ''
@@ -112,6 +116,9 @@ matrix_server_fqn_hydrogen: "hydrogen.{{ matrix_domain }}"
# This is where you access the Cinny web client from (if enabled via cinny_enabled; disabled by default).
matrix_server_fqn_cinny: "cinny.{{ matrix_domain }}"
# This is where you access the Sable web client from (if enabled via sable_enabled; disabled by default).
matrix_server_fqn_sable: "sable.{{ matrix_domain }}"
# This is where you access the SchildiChat Web from (if enabled via matrix_client_schildichat_enabled; disabled by default).
matrix_server_fqn_schildichat: "schildichat.{{ matrix_domain }}"
@@ -239,6 +246,21 @@ matrix_integration_manager_ui_url: ~
matrix_homeserver_container_extra_arguments_auto: []
matrix_homeserver_app_service_config_files_auto: []
# These playbook-level helpers describe which managed services Synapse should be wired to.
# They are meant for orchestration concerns like container networking and systemd ordering,
# while `matrix_synapse_*` variables stay focused on actual connection parameters.
# These likely get overridden elsewhere.
matrix_playbook_synapse_uses_managed_postgres: false
matrix_playbook_synapse_uses_managed_valkey: false
matrix_playbook_synapse_auto_compressor_uses_managed_postgres: false
# This playbook-level helper describes whether Matrix Authentication Service should be wired
# to the playbook-managed Postgres instance.
# It is meant for orchestration concerns like container networking, systemd ordering, and database creation,
# while `matrix_authentication_service_*` variables stay focused on actual connection parameters.
# This likely gets overridden elsewhere.
matrix_playbook_matrix_authentication_service_uses_managed_postgres: false
# Controls whether various services should expose metrics publicly.
# If Prometheus is operating on the same machine, exposing metrics publicly is not necessary.
matrix_metrics_exposure_enabled: false
@@ -393,6 +415,22 @@ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_definition:
host_bind_port: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_host_bind_port }}"
config: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config }}"
# Controls whether to enable an additional Traefik entrypoint for LiveKit TURN/TLS (TCP) traffic.
matrix_playbook_livekit_turn_traefik_entrypoint_enabled: false
matrix_playbook_livekit_turn_traefik_entrypoint_name: matrix-livekit-turn
matrix_playbook_livekit_turn_traefik_entrypoint_port: 5350
matrix_playbook_livekit_turn_traefik_entrypoint_host_bind_port: "{{ matrix_playbook_livekit_turn_traefik_entrypoint_port }}"
matrix_playbook_livekit_turn_traefik_entrypoint_config: "{{ (matrix_playbook_livekit_turn_traefik_entrypoint_config_default | combine(matrix_playbook_livekit_turn_traefik_entrypoint_config_auto)) | combine(matrix_playbook_livekit_turn_traefik_entrypoint_config_custom, recursive=True) }}"
matrix_playbook_livekit_turn_traefik_entrypoint_config_default: {}
matrix_playbook_livekit_turn_traefik_entrypoint_config_auto: {}
matrix_playbook_livekit_turn_traefik_entrypoint_config_custom: {}
matrix_playbook_livekit_turn_traefik_entrypoint_definition:
name: "{{ matrix_playbook_livekit_turn_traefik_entrypoint_name }}"
port: "{{ matrix_playbook_livekit_turn_traefik_entrypoint_port }}"
host_bind_port: "{{ matrix_playbook_livekit_turn_traefik_entrypoint_host_bind_port }}"
config: "{{ matrix_playbook_livekit_turn_traefik_entrypoint_config }}"
# Variables to Control which parts of our roles run.
run_postgres_import: true
run_postgres_upgrade: true

View File

@@ -17,7 +17,7 @@ matrix_bot_baibot_container_repo_version: "{{ 'main' if matrix_bot_baibot_versio
matrix_bot_baibot_container_src_files_path: "{{ matrix_base_data_path }}/baibot/container-src"
# renovate: datasource=docker depName=ghcr.io/etkecc/baibot
matrix_bot_baibot_version: v1.14.1
matrix_bot_baibot_version: v1.16.0
matrix_bot_baibot_container_image: "{{ matrix_bot_baibot_container_image_registry_prefix }}etkecc/baibot:{{ matrix_bot_baibot_version }}"
matrix_bot_baibot_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_baibot_container_image_self_build else matrix_bot_baibot_container_image_registry_prefix_upstream }}"
matrix_bot_baibot_container_image_registry_prefix_upstream: "{{ matrix_bot_baibot_container_image_registry_prefix_upstream_default }}"
@@ -59,8 +59,28 @@ matrix_bot_baibot_config_homeserver_url: ""
# so it can start fresh.
matrix_bot_baibot_config_user_mxid_localpart: baibot
# Authentication settings (`user.*` configuration keys).
#
# baibot supports 2 mutually-exclusive authentication modes.
# Set EITHER:
# - password authentication: `matrix_bot_baibot_config_user_password`
# OR:
# - access-token authentication: `matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id`
#
# Password authentication is recommended for most playbook-managed deployments,
# because it integrates with the `matrix-user-creator` role and can auto-create
# the bot account (via the `ensure-matrix-users-created` playbook tag).
# This remains true even on many MAS-enabled deployments where the bot account
# is local and playbook-managed.
# Controls the `user.password` configuration setting.
matrix_bot_baibot_config_user_password: ''
matrix_bot_baibot_config_user_password: null
# Controls the `user.access_token` configuration setting.
matrix_bot_baibot_config_user_access_token: null
# Controls the `user.device_id` configuration setting.
matrix_bot_baibot_config_user_device_id: null
# Controls the `user.name` configuration setting.
#
@@ -385,7 +405,7 @@ matrix_bot_baibot_config_agents_static_definitions_openai_config_api_key: ""
matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_enabled: true
# For valid model choices, see: https://platform.openai.com/docs/models
matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-5.2
matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-5.4
# The prompt text to use (can be null or empty to not use a prompt).
# See: https://huggingface.co/docs/transformers/en/tasks/prompting
matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"

View File

@@ -12,7 +12,6 @@
when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items:
- {'name': 'matrix_bot_baibot_config_user_mxid_localpart', when: true}
- {'name': 'matrix_bot_baibot_config_user_password', when: true}
- {'name': 'matrix_bot_baibot_container_network', when: true}
- {'name': 'matrix_bot_baibot_config_homeserver_url', when: true}
@@ -26,6 +25,58 @@
- {'name': 'matrix_bot_baibot_config_agents_static_definitions_openai_config_api_key', when: "{{ matrix_bot_baibot_config_agents_static_definitions_openai_enabled }}"}
- name: Fail if baibot authentication mode is not configured
ansible.builtin.fail:
msg: >-
You need to configure one baibot authentication mode:
either `matrix_bot_baibot_config_user_password`
or (`matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id`).
when: >-
(
matrix_bot_baibot_config_user_password | default('', true) | string | length == 0
)
and
(
matrix_bot_baibot_config_user_access_token | default('', true) | string | length == 0
and matrix_bot_baibot_config_user_device_id | default('', true) | string | length == 0
)
- name: Fail if baibot authentication mode is configured ambiguously
ansible.builtin.fail:
msg: >-
You need to configure exactly one baibot authentication mode.
Set either `matrix_bot_baibot_config_user_password`,
or (`matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id`) but not both.
when: >-
(
matrix_bot_baibot_config_user_password | default('', true) | string | length > 0
)
and
(
matrix_bot_baibot_config_user_access_token | default('', true) | string | length > 0
or matrix_bot_baibot_config_user_device_id | default('', true) | string | length > 0
)
- name: Fail if baibot access token authentication is incomplete
ansible.builtin.fail:
msg: >-
Access-token authentication requires both
`matrix_bot_baibot_config_user_access_token` and `matrix_bot_baibot_config_user_device_id`.
when: >-
(
matrix_bot_baibot_config_user_password | default('', true) | string | length == 0
)
and
(
matrix_bot_baibot_config_user_access_token | default('', true) | string | length > 0
or matrix_bot_baibot_config_user_device_id | default('', true) | string | length > 0
)
and
(
matrix_bot_baibot_config_user_access_token | default('', true) | string | length == 0
or matrix_bot_baibot_config_user_device_id | default('', true) | string | length == 0
)
- name: Fail if admin patterns list is empty
ansible.builtin.fail:
msg: >-

View File

@@ -15,7 +15,11 @@ homeserver:
user:
mxid_localpart: {{ matrix_bot_baibot_config_user_mxid_localpart | to_json }}
# Authentication: set EITHER password OR access_token + device_id.
password: {{ matrix_bot_baibot_config_user_password | to_json }}
access_token: {{ matrix_bot_baibot_config_user_access_token | to_json }}
device_id: {{ matrix_bot_baibot_config_user_device_id | to_json }}
# The name the bot uses as a display name and when it refers to itself.
# Leave empty to use the default (baibot).

View File

@@ -32,15 +32,15 @@ matrix_bot_buscarron_data_path: "{{ matrix_bot_buscarron_base_path }}/data"
matrix_bot_buscarron_data_store_path: "{{ matrix_bot_buscarron_data_path }}/store"
matrix_bot_buscarron_container_image_self_build: false
matrix_bot_buscarron_docker_repo: "https://github.com/etkecc/buscarron.git"
matrix_bot_buscarron_docker_repo_version: "{{ matrix_bot_buscarron_version }}"
matrix_bot_buscarron_docker_src_files_path: "{{ matrix_base_data_path }}/buscarron/docker-src"
matrix_bot_buscarron_container_repo: "https://github.com/etkecc/buscarron.git"
matrix_bot_buscarron_container_repo_version: "{{ matrix_bot_buscarron_version }}"
matrix_bot_buscarron_container_src_files_path: "{{ matrix_base_data_path }}/buscarron/docker-src"
matrix_bot_buscarron_docker_image: "{{ matrix_bot_buscarron_docker_image_registry_prefix }}etkecc/buscarron:{{ matrix_bot_buscarron_version }}"
matrix_bot_buscarron_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_buscarron_container_image_self_build else matrix_bot_buscarron_docker_image_registry_prefix_upstream }}"
matrix_bot_buscarron_docker_image_registry_prefix_upstream: "{{ matrix_bot_buscarron_docker_image_registry_prefix_upstream_default }}"
matrix_bot_buscarron_docker_image_registry_prefix_upstream_default: "ghcr.io/"
matrix_bot_buscarron_docker_image_force_pull: "{{ matrix_bot_buscarron_docker_image.endswith(':latest') }}"
matrix_bot_buscarron_container_image: "{{ matrix_bot_buscarron_container_image_registry_prefix }}etkecc/buscarron:{{ matrix_bot_buscarron_version }}"
matrix_bot_buscarron_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_buscarron_container_image_self_build else matrix_bot_buscarron_container_image_registry_prefix_upstream }}"
matrix_bot_buscarron_container_image_registry_prefix_upstream: "{{ matrix_bot_buscarron_container_image_registry_prefix_upstream_default }}"
matrix_bot_buscarron_container_image_registry_prefix_upstream_default: "ghcr.io/"
matrix_bot_buscarron_container_image_force_pull: "{{ matrix_bot_buscarron_container_image.endswith(':latest') }}"
# The base container network. It will be auto-created by this role if it doesn't exist already.
matrix_bot_buscarron_container_network: matrix-bot-buscarron

View File

@@ -45,7 +45,7 @@
- {path: "{{ matrix_bot_buscarron_config_path }}", when: true}
- {path: "{{ matrix_bot_buscarron_data_path }}", when: true}
- {path: "{{ matrix_bot_buscarron_data_store_path }}", when: true}
- {path: "{{ matrix_bot_buscarron_docker_src_files_path }}", when: true}
- {path: "{{ matrix_bot_buscarron_container_src_files_path }}", when: true}
when: "item.when | bool"
- name: Ensure Buscarron support files installed
@@ -62,10 +62,10 @@
- name: Ensure Buscarron image is pulled
community.docker.docker_image:
name: "{{ matrix_bot_buscarron_docker_image }}"
name: "{{ matrix_bot_buscarron_container_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_bot_buscarron_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_buscarron_docker_image_force_pull }}"
force_source: "{{ matrix_bot_buscarron_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_buscarron_container_image_force_pull }}"
when: "not matrix_bot_buscarron_container_image_self_build | bool"
register: matrix_bot_buscarron_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}"
@@ -74,9 +74,9 @@
- name: Ensure Buscarron repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_bot_buscarron_docker_repo }}"
version: "{{ matrix_bot_buscarron_docker_repo_version }}"
dest: "{{ matrix_bot_buscarron_docker_src_files_path }}"
repo: "{{ matrix_bot_buscarron_container_repo }}"
version: "{{ matrix_bot_buscarron_container_repo_version }}"
dest: "{{ matrix_bot_buscarron_container_src_files_path }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
@@ -85,13 +85,13 @@
- name: Ensure Buscarron image is built
community.docker.docker_image:
name: "{{ matrix_bot_buscarron_docker_image }}"
name: "{{ matrix_bot_buscarron_container_image }}"
source: build
force_source: "{{ matrix_bot_buscarron_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_buscarron_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_bot_buscarron_docker_src_files_path }}"
path: "{{ matrix_bot_buscarron_container_src_files_path }}"
pull: true
when: "matrix_bot_buscarron_container_image_self_build | bool"

View File

@@ -17,6 +17,14 @@
- {'old': 'matrix_bot_buscarron_spam_emails', 'new': '<superseded by matrix_bot_buscarron_spamlist>'}
- {'old': 'matrix_bot_buscarron_spam_localparts', 'new': '<superseded by matrix_bot_buscarron_spamlist>'}
- {'old': 'matrix_bot_buscarron_container_image_name_prefix', 'new': 'matrix_bot_buscarron_container_image_registry_prefix'}
- {'old': 'matrix_bot_buscarron_docker_image', 'new': 'matrix_bot_buscarron_container_image'}
- {'old': 'matrix_bot_buscarron_docker_image_force_pull', 'new': 'matrix_bot_buscarron_container_image_force_pull'}
- {'old': 'matrix_bot_buscarron_docker_image_registry_prefix', 'new': 'matrix_bot_buscarron_container_image_registry_prefix'}
- {'old': 'matrix_bot_buscarron_docker_image_registry_prefix_upstream', 'new': 'matrix_bot_buscarron_container_image_registry_prefix_upstream'}
- {'old': 'matrix_bot_buscarron_docker_image_registry_prefix_upstream_default', 'new': 'matrix_bot_buscarron_container_image_registry_prefix_upstream_default'}
- {'old': 'matrix_bot_buscarron_docker_repo', 'new': 'matrix_bot_buscarron_container_repo'}
- {'old': 'matrix_bot_buscarron_docker_repo_version', 'new': 'matrix_bot_buscarron_container_repo_version'}
- {'old': 'matrix_bot_buscarron_docker_src_files_path', 'new': 'matrix_bot_buscarron_container_src_files_path'}
- name: Fail if required Buscarron settings not defined
ansible.builtin.fail:

View File

@@ -30,7 +30,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% for arg in matrix_bot_buscarron_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_bot_buscarron_docker_image }}
{{ matrix_bot_buscarron_container_image }}
{% for network in matrix_bot_buscarron_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-bot-buscarron

View File

@@ -1,5 +1,5 @@
# SPDX-FileCopyrightText: 2023 - 2024 MDAD project contributors
# SPDX-FileCopyrightText: 2023 - 2025 Catalan Lover <catalanlover@protonmail.com>
# SPDX-FileCopyrightText: 2023 - 2026 Catalan Lover <catalanlover@protonmail.com>
# SPDX-FileCopyrightText: 2023 Samuel Meenzen
# SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev
#
@@ -17,16 +17,17 @@ matrix_bot_draupnir_version: "v2.9.0"
matrix_bot_draupnir_container_image_self_build: false
matrix_bot_draupnir_container_image_self_build_repo: "https://github.com/the-draupnir-project/Draupnir.git"
matrix_bot_draupnir_docker_image: "{{ matrix_bot_draupnir_docker_image_registry_prefix }}gnuxie/draupnir:{{ matrix_bot_draupnir_version }}"
matrix_bot_draupnir_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_draupnir_container_image_self_build else matrix_bot_draupnir_docker_image_registry_prefix_upstream }}"
matrix_bot_draupnir_docker_image_registry_prefix_upstream: "{{ matrix_bot_draupnir_docker_image_registry_prefix_upstream_default }}"
matrix_bot_draupnir_docker_image_registry_prefix_upstream_default: "docker.io/"
matrix_bot_draupnir_docker_image_force_pull: "{{ matrix_bot_draupnir_docker_image.endswith(':latest') }}"
matrix_bot_draupnir_container_image: "{{ matrix_bot_draupnir_container_image_registry_prefix }}{{ matrix_bot_draupnir_container_image_registry_namespace_identifier }}:{{ matrix_bot_draupnir_version }}"
matrix_bot_draupnir_container_image_registry_namespace_identifier: "gnuxie/draupnir"
matrix_bot_draupnir_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_draupnir_container_image_self_build else matrix_bot_draupnir_container_image_registry_prefix_upstream }}"
matrix_bot_draupnir_container_image_registry_prefix_upstream: "{{ matrix_bot_draupnir_container_image_registry_prefix_upstream_default }}"
matrix_bot_draupnir_container_image_registry_prefix_upstream_default: "docker.io/"
matrix_bot_draupnir_container_image_force_pull: "{{ matrix_bot_draupnir_container_image.endswith(':latest') }}"
matrix_bot_draupnir_base_path: "{{ matrix_base_data_path }}/draupnir"
matrix_bot_draupnir_config_path: "{{ matrix_bot_draupnir_base_path }}/config"
matrix_bot_draupnir_data_path: "{{ matrix_bot_draupnir_base_path }}/data"
matrix_bot_draupnir_docker_src_files_path: "{{ matrix_bot_draupnir_base_path }}/docker-src"
matrix_bot_draupnir_container_src_files_path: "{{ matrix_bot_draupnir_base_path }}/docker-src"
matrix_bot_draupnir_config_web_enabled: "{{ matrix_bot_draupnir_config_web_abuseReporting or matrix_bot_draupnir_config_web_synapseHTTPAntispam_enabled }}" # noqa var-naming

View File

@@ -22,7 +22,7 @@
- {path: "{{ matrix_bot_draupnir_base_path }}", when: true}
- {path: "{{ matrix_bot_draupnir_config_path }}", when: true}
- {path: "{{ matrix_bot_draupnir_data_path }}", when: true}
- {path: "{{ matrix_bot_draupnir_docker_src_files_path }}", when: "{{ matrix_bot_draupnir_container_image_self_build }}"}
- {path: "{{ matrix_bot_draupnir_container_src_files_path }}", when: "{{ matrix_bot_draupnir_container_image_self_build }}"}
when: "item.when | bool"
- name: Ensure matrix-bot-draupnir support files installed
@@ -39,10 +39,10 @@
- name: Ensure Draupnir Docker image is pulled
community.docker.docker_image:
name: "{{ matrix_bot_draupnir_docker_image }}"
name: "{{ matrix_bot_draupnir_container_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_bot_draupnir_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_draupnir_docker_image_force_pull }}"
force_source: "{{ matrix_bot_draupnir_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_draupnir_container_image_force_pull }}"
when: "not matrix_bot_draupnir_container_image_self_build | bool"
register: matrix_bot_draupnir_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}"
@@ -52,8 +52,8 @@
- name: Ensure Draupnir repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_bot_draupnir_container_image_self_build_repo }}"
dest: "{{ matrix_bot_draupnir_docker_src_files_path }}"
version: "{{ matrix_bot_draupnir_docker_image.split(':')[1] }}"
dest: "{{ matrix_bot_draupnir_container_src_files_path }}"
version: "{{ matrix_bot_draupnir_container_image.split(':')[1] }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
@@ -62,12 +62,12 @@
- name: Ensure Draupnir Docker image is built
community.docker.docker_image:
name: "{{ matrix_bot_draupnir_docker_image }}"
name: "{{ matrix_bot_draupnir_container_image }}"
source: build
force_source: "{{ matrix_bot_draupnir_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_bot_draupnir_docker_src_files_path }}"
path: "{{ matrix_bot_draupnir_container_src_files_path }}"
pull: true
when: "matrix_bot_draupnir_container_image_self_build | bool"

View File

@@ -31,6 +31,12 @@
- {'old': 'matrix_bot_draupnir_container_labels_traefik_entrypoints', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_entrypoints'}
- {'old': 'matrix_bot_draupnir_container_labels_traefik_tls', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls'}
- {'old': 'matrix_bot_draupnir_container_labels_traefik_tls_certResolver', 'new': 'matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls_certResolver'}
- {'old': 'matrix_bot_draupnir_docker_image', 'new': 'matrix_bot_draupnir_container_image'}
- {'old': 'matrix_bot_draupnir_docker_image_force_pull', 'new': 'matrix_bot_draupnir_container_image_force_pull'}
- {'old': 'matrix_bot_draupnir_docker_image_registry_prefix', 'new': 'matrix_bot_draupnir_container_image_registry_prefix'}
- {'old': 'matrix_bot_draupnir_docker_image_registry_prefix_upstream', 'new': 'matrix_bot_draupnir_container_image_registry_prefix_upstream'}
- {'old': 'matrix_bot_draupnir_docker_image_registry_prefix_upstream_default', 'new': 'matrix_bot_draupnir_container_image_registry_prefix_upstream_default'}
- {'old': 'matrix_bot_draupnir_docker_src_files_path', 'new': 'matrix_bot_draupnir_container_src_files_path'}
- name: Fail if required matrix-bot-draupnir variables are undefined
ansible.builtin.fail:

View File

@@ -33,7 +33,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% for arg in matrix_bot_draupnir_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_bot_draupnir_docker_image }} \
{{ matrix_bot_draupnir_container_image }} \
bot --draupnir-config /data/config/production.yaml
{% for network in matrix_bot_draupnir_container_additional_networks %}

View File

@@ -25,17 +25,17 @@ matrix_bot_honoroit_path_prefix: /
matrix_bot_honoroit_metrics_path: /metrics
matrix_bot_honoroit_container_image_self_build: false
matrix_bot_honoroit_docker_repo: "https://github.com/etkecc/honoroit.git"
matrix_bot_honoroit_docker_repo_version: "{{ matrix_bot_honoroit_version }}"
matrix_bot_honoroit_docker_src_files_path: "{{ matrix_base_data_path }}/honoroit/docker-src"
matrix_bot_honoroit_container_repo: "https://github.com/etkecc/honoroit.git"
matrix_bot_honoroit_container_repo_version: "{{ matrix_bot_honoroit_version }}"
matrix_bot_honoroit_container_src_files_path: "{{ matrix_base_data_path }}/honoroit/docker-src"
# renovate: datasource=docker depName=ghcr.io/etkecc/honoroit
matrix_bot_honoroit_version: v0.9.29
matrix_bot_honoroit_docker_image: "{{ matrix_bot_honoroit_docker_image_registry_prefix }}etkecc/honoroit:{{ matrix_bot_honoroit_version }}"
matrix_bot_honoroit_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_honoroit_container_image_self_build else matrix_bot_honoroit_docker_image_registry_prefix_upstream }}"
matrix_bot_honoroit_docker_image_registry_prefix_upstream: "{{ matrix_bot_honoroit_docker_image_registry_prefix_upstream_default }}"
matrix_bot_honoroit_docker_image_registry_prefix_upstream_default: "ghcr.io/"
matrix_bot_honoroit_docker_image_force_pull: "{{ matrix_bot_honoroit_docker_image.endswith(':latest') }}"
matrix_bot_honoroit_version: v0.9.30
matrix_bot_honoroit_container_image: "{{ matrix_bot_honoroit_container_image_registry_prefix }}etkecc/honoroit:{{ matrix_bot_honoroit_version }}"
matrix_bot_honoroit_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_honoroit_container_image_self_build else matrix_bot_honoroit_container_image_registry_prefix_upstream }}"
matrix_bot_honoroit_container_image_registry_prefix_upstream: "{{ matrix_bot_honoroit_container_image_registry_prefix_upstream_default }}"
matrix_bot_honoroit_container_image_registry_prefix_upstream_default: "ghcr.io/"
matrix_bot_honoroit_container_image_force_pull: "{{ matrix_bot_honoroit_container_image.endswith(':latest') }}"
matrix_bot_honoroit_base_path: "{{ matrix_base_data_path }}/honoroit"
matrix_bot_honoroit_config_path: "{{ matrix_bot_honoroit_base_path }}/config"

View File

@@ -47,7 +47,7 @@
- {path: "{{ matrix_bot_honoroit_config_path }}", when: true}
- {path: "{{ matrix_bot_honoroit_data_path }}", when: true}
- {path: "{{ matrix_bot_honoroit_data_store_path }}", when: true}
- {path: "{{ matrix_bot_honoroit_docker_src_files_path }}", when: true}
- {path: "{{ matrix_bot_honoroit_container_src_files_path }}", when: true}
when: "item.when | bool"
- name: Ensure Honoroit support files installed
@@ -64,10 +64,10 @@
- name: Ensure Honoroit image is pulled
community.docker.docker_image:
name: "{{ matrix_bot_honoroit_docker_image }}"
name: "{{ matrix_bot_honoroit_container_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_bot_honoroit_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_honoroit_docker_image_force_pull }}"
force_source: "{{ matrix_bot_honoroit_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_honoroit_container_image_force_pull }}"
when: "not matrix_bot_honoroit_container_image_self_build | bool"
register: matrix_bot_honoroit_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}"
@@ -76,9 +76,9 @@
- name: Ensure Honoroit repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_bot_honoroit_docker_repo }}"
version: "{{ matrix_bot_honoroit_docker_repo_version }}"
dest: "{{ matrix_bot_honoroit_docker_src_files_path }}"
repo: "{{ matrix_bot_honoroit_container_repo }}"
version: "{{ matrix_bot_honoroit_container_repo_version }}"
dest: "{{ matrix_bot_honoroit_container_src_files_path }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
@@ -87,13 +87,13 @@
- name: Ensure Honoroit image is built
community.docker.docker_image:
name: "{{ matrix_bot_honoroit_docker_image }}"
name: "{{ matrix_bot_honoroit_container_image }}"
source: build
force_source: "{{ matrix_bot_honoroit_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_honoroit_container_image_self_build.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_bot_honoroit_docker_src_files_path }}"
path: "{{ matrix_bot_honoroit_container_src_files_path }}"
pull: true
when: "matrix_bot_honoroit_container_image_self_build | bool"

View File

@@ -6,6 +6,23 @@
---
- name: (Deprecation) Catch and report renamed Honoroit settings
ansible.builtin.fail:
msg: >-
Your configuration contains a variable, which now has a different name.
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_bot_honoroit_container_image_name_prefix', 'new': 'matrix_bot_honoroit_container_image_registry_prefix'}
- {'old': 'matrix_bot_honoroit_docker_image', 'new': 'matrix_bot_honoroit_container_image'}
- {'old': 'matrix_bot_honoroit_docker_image_force_pull', 'new': 'matrix_bot_honoroit_container_image_force_pull'}
- {'old': 'matrix_bot_honoroit_docker_image_registry_prefix', 'new': 'matrix_bot_honoroit_container_image_registry_prefix'}
- {'old': 'matrix_bot_honoroit_docker_image_registry_prefix_upstream', 'new': 'matrix_bot_honoroit_container_image_registry_prefix_upstream'}
- {'old': 'matrix_bot_honoroit_docker_image_registry_prefix_upstream_default', 'new': 'matrix_bot_honoroit_container_image_registry_prefix_upstream_default'}
- {'old': 'matrix_bot_honoroit_docker_repo', 'new': 'matrix_bot_honoroit_container_repo'}
- {'old': 'matrix_bot_honoroit_docker_repo_version', 'new': 'matrix_bot_honoroit_container_repo_version'}
- {'old': 'matrix_bot_honoroit_docker_src_files_path', 'new': 'matrix_bot_honoroit_container_src_files_path'}
- name: Fail if required Honoroit settings not defined
ansible.builtin.fail:
msg: >-
@@ -16,12 +33,3 @@
- {'name': 'matrix_bot_honoroit_password', when: true}
- {'name': 'matrix_bot_honoroit_roomid', when: true}
- {'name': 'matrix_bot_honoroit_database_hostname', when: "{{ matrix_bot_honoroit_database_engine == 'postgres' }}"}
- name: (Deprecation) Catch and report renamed Honoroit settings
ansible.builtin.fail:
msg: >-
Your configuration contains a variable, which now has a different name.
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_bot_honoroit_container_image_name_prefix', 'new': 'matrix_bot_honoroit_container_image_registry_prefix'}

View File

@@ -30,7 +30,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% for arg in matrix_bot_honoroit_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_bot_honoroit_docker_image }}
{{ matrix_bot_honoroit_container_image }}
{% for network in matrix_bot_honoroit_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-bot-honoroit

View File

@@ -14,19 +14,19 @@
matrix_bot_matrix_registration_bot_enabled: true
matrix_bot_matrix_registration_bot_container_image_self_build: false
matrix_bot_matrix_registration_bot_docker_repo: "https://github.com/moan0s/matrix-registration-bot.git"
matrix_bot_matrix_registration_bot_docker_repo_version: "{{ 'main' if matrix_bot_matrix_registration_bot_version == 'latest' else ('v' + matrix_bot_matrix_registration_bot_version) }}"
matrix_bot_matrix_registration_bot_docker_src_files_path: "{{ matrix_bot_matrix_registration_bot_base_path }}/docker-src"
matrix_bot_matrix_registration_bot_container_repo: "https://github.com/moan0s/matrix-registration-bot.git"
matrix_bot_matrix_registration_bot_container_repo_version: "{{ 'main' if matrix_bot_matrix_registration_bot_version == 'latest' else ('v' + matrix_bot_matrix_registration_bot_version) }}"
matrix_bot_matrix_registration_bot_container_src_files_path: "{{ matrix_bot_matrix_registration_bot_base_path }}/docker-src"
# renovate: datasource=docker depName=moanos/matrix-registration-bot
matrix_bot_matrix_registration_bot_version: 1.3.0
matrix_bot_matrix_registration_bot_docker_iteration: 0
matrix_bot_matrix_registration_bot_docker_tag: "{{ matrix_bot_matrix_registration_bot_version }}-{{ matrix_bot_matrix_registration_bot_docker_iteration }}"
matrix_bot_matrix_registration_bot_docker_image: "{{ matrix_bot_matrix_registration_bot_docker_image_registry_prefix }}moanos/matrix-registration-bot:{{ matrix_bot_matrix_registration_bot_docker_tag }}"
matrix_bot_matrix_registration_bot_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_matrix_registration_bot_container_image_self_build else matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream }}"
matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream: "{{ matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream_default }}"
matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream_default: "docker.io/"
matrix_bot_matrix_registration_bot_docker_image_force_pull: "{{ matrix_bot_matrix_registration_bot_docker_image.endswith(':latest') }}"
matrix_bot_matrix_registration_bot_container_iteration: 0
matrix_bot_matrix_registration_bot_container_tag: "{{ matrix_bot_matrix_registration_bot_version }}-{{ matrix_bot_matrix_registration_bot_container_iteration }}"
matrix_bot_matrix_registration_bot_container_image: "{{ matrix_bot_matrix_registration_bot_container_image_registry_prefix }}moanos/matrix-registration-bot:{{ matrix_bot_matrix_registration_bot_container_tag }}"
matrix_bot_matrix_registration_bot_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_matrix_registration_bot_container_image_self_build else matrix_bot_matrix_registration_bot_container_image_registry_prefix_upstream }}"
matrix_bot_matrix_registration_bot_container_image_registry_prefix_upstream: "{{ matrix_bot_matrix_registration_bot_container_image_registry_prefix_upstream_default }}"
matrix_bot_matrix_registration_bot_container_image_registry_prefix_upstream_default: "docker.io/"
matrix_bot_matrix_registration_bot_container_image_force_pull: "{{ matrix_bot_matrix_registration_bot_container_image.endswith(':latest') }}"
matrix_bot_matrix_registration_bot_base_path: "{{ matrix_base_data_path }}/matrix-registration-bot"
matrix_bot_matrix_registration_bot_config_path: "{{ matrix_bot_matrix_registration_bot_base_path }}/config"

View File

@@ -18,7 +18,7 @@
with_items:
- {path: "{{ matrix_bot_matrix_registration_bot_config_path }}", when: true}
- {path: "{{ matrix_bot_matrix_registration_bot_data_path }}", when: true}
- {path: "{{ matrix_bot_matrix_registration_bot_docker_src_files_path }}", when: "{{ matrix_bot_matrix_registration_bot_container_image_self_build }}"}
- {path: "{{ matrix_bot_matrix_registration_bot_container_src_files_path }}", when: "{{ matrix_bot_matrix_registration_bot_container_image_self_build }}"}
when: "item.when | bool"
- name: Ensure matrix-registration-bot configuration file created
@@ -32,10 +32,10 @@
- name: Ensure matrix-registration-bot image is pulled
community.docker.docker_image:
name: "{{ matrix_bot_matrix_registration_bot_docker_image }}"
name: "{{ matrix_bot_matrix_registration_bot_container_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_bot_matrix_registration_bot_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_matrix_registration_bot_docker_image_force_pull }}"
force_source: "{{ matrix_bot_matrix_registration_bot_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_matrix_registration_bot_container_image_force_pull }}"
when: "not matrix_bot_matrix_registration_bot_container_image_self_build | bool"
register: matrix_bot_matrix_registration_bot_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}"
@@ -46,9 +46,9 @@
block:
- name: Ensure matrix-registration-bot repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_bot_matrix_registration_bot_docker_repo }}"
version: "{{ matrix_bot_matrix_registration_bot_docker_repo_version }}"
dest: "{{ matrix_bot_matrix_registration_bot_docker_src_files_path }}"
repo: "{{ matrix_bot_matrix_registration_bot_container_repo }}"
version: "{{ matrix_bot_matrix_registration_bot_container_repo_version }}"
dest: "{{ matrix_bot_matrix_registration_bot_container_src_files_path }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
@@ -56,13 +56,13 @@
- name: Ensure matrix-registration-bot image is built
community.docker.docker_image:
name: "{{ matrix_bot_matrix_registration_bot_docker_image }}"
name: "{{ matrix_bot_matrix_registration_bot_container_image }}"
source: build
force_source: "{{ matrix_bot_matrix_registration_bot_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_matrix_registration_bot_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_bot_matrix_registration_bot_docker_src_files_path }}"
path: "{{ matrix_bot_matrix_registration_bot_container_src_files_path }}"
pull: true
- name: Ensure matrix-registration-bot container network is created

View File

@@ -6,15 +6,6 @@
---
- name: Fail if required settings not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item }}`).
when: "lookup('vars', item, default='') == ''"
with_items:
- "matrix_bot_matrix_registration_bot_bot_password"
- "matrix_bot_matrix_registration_bot_api_base_url"
- name: (Deprecation) Catch and report renamed settings
ansible.builtin.fail:
msg: >-
@@ -24,3 +15,22 @@
with_items:
- {'old': 'matrix_bot_matrix_registration_bot_bot_access_token', 'new': '<removed>'}
- {'old': 'matrix_bot_matrix_registration_bot_matrix_homeserver_url', 'new': 'matrix_bot_matrix_registration_bot_api_base_url'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_image', 'new': 'matrix_bot_matrix_registration_bot_container_image'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_image_force_pull', 'new': 'matrix_bot_matrix_registration_bot_container_image_force_pull'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_image_registry_prefix', 'new': 'matrix_bot_matrix_registration_bot_container_image_registry_prefix'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream', 'new': 'matrix_bot_matrix_registration_bot_container_image_registry_prefix_upstream'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_image_registry_prefix_upstream_default', 'new': 'matrix_bot_matrix_registration_bot_container_image_registry_prefix_upstream_default'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_iteration', 'new': 'matrix_bot_matrix_registration_bot_container_iteration'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_repo', 'new': 'matrix_bot_matrix_registration_bot_container_repo'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_repo_version', 'new': 'matrix_bot_matrix_registration_bot_container_repo_version'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_src_files_path', 'new': 'matrix_bot_matrix_registration_bot_container_src_files_path'}
- {'old': 'matrix_bot_matrix_registration_bot_docker_tag', 'new': 'matrix_bot_matrix_registration_bot_container_tag'}
- name: Fail if required settings not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item }}`).
when: "lookup('vars', item, default='') == ''"
with_items:
- "matrix_bot_matrix_registration_bot_bot_password"
- "matrix_bot_matrix_registration_bot_api_base_url"

View File

@@ -27,7 +27,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--mount type=bind,src={{ matrix_bot_matrix_registration_bot_config_path }},dst=/config,ro \
--mount type=bind,src={{ matrix_bot_matrix_registration_bot_data_path }},dst=/data \
--network={{ matrix_bot_matrix_registration_bot_container_network }} \
{{ matrix_bot_matrix_registration_bot_docker_image }}
{{ matrix_bot_matrix_registration_bot_container_image }}
{% for network in matrix_bot_matrix_registration_bot_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-bot-matrix-registration-bot

View File

@@ -15,17 +15,17 @@
matrix_bot_matrix_reminder_bot_enabled: true
matrix_bot_matrix_reminder_bot_container_image_self_build: false
matrix_bot_matrix_reminder_bot_docker_repo: "https://github.com/anoadragon453/matrix-reminder-bot.git"
matrix_bot_matrix_reminder_bot_docker_repo_version: "{{ 'master' if matrix_bot_matrix_reminder_bot_version == 'latest' else matrix_bot_matrix_reminder_bot_version }}"
matrix_bot_matrix_reminder_bot_docker_src_files_path: "{{ matrix_base_data_path }}/matrix-reminder-bot/docker-src"
matrix_bot_matrix_reminder_bot_container_repo: "https://github.com/anoadragon453/matrix-reminder-bot.git"
matrix_bot_matrix_reminder_bot_container_repo_version: "{{ 'master' if matrix_bot_matrix_reminder_bot_version == 'latest' else matrix_bot_matrix_reminder_bot_version }}"
matrix_bot_matrix_reminder_bot_container_src_files_path: "{{ matrix_base_data_path }}/matrix-reminder-bot/docker-src"
# renovate: datasource=docker depName=ghcr.io/anoadragon453/matrix-reminder-bot
matrix_bot_matrix_reminder_bot_version: v0.4.0
matrix_bot_matrix_reminder_bot_docker_image: "{{ matrix_bot_matrix_reminder_bot_docker_image_registry_prefix }}anoadragon453/matrix-reminder-bot:{{ matrix_bot_matrix_reminder_bot_version }}"
matrix_bot_matrix_reminder_bot_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_matrix_reminder_bot_container_image_self_build else matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream }}"
matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream: "{{ matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream_default }}"
matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream_default: "ghcr.io/"
matrix_bot_matrix_reminder_bot_docker_image_force_pull: "{{ matrix_bot_matrix_reminder_bot_docker_image.endswith(':latest') }}"
matrix_bot_matrix_reminder_bot_container_image: "{{ matrix_bot_matrix_reminder_bot_container_image_registry_prefix }}anoadragon453/matrix-reminder-bot:{{ matrix_bot_matrix_reminder_bot_version }}"
matrix_bot_matrix_reminder_bot_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_matrix_reminder_bot_container_image_self_build else matrix_bot_matrix_reminder_bot_container_image_registry_prefix_upstream }}"
matrix_bot_matrix_reminder_bot_container_image_registry_prefix_upstream: "{{ matrix_bot_matrix_reminder_bot_container_image_registry_prefix_upstream_default }}"
matrix_bot_matrix_reminder_bot_container_image_registry_prefix_upstream_default: "ghcr.io/"
matrix_bot_matrix_reminder_bot_container_image_force_pull: "{{ matrix_bot_matrix_reminder_bot_container_image.endswith(':latest') }}"
matrix_bot_matrix_reminder_bot_base_path: "{{ matrix_base_data_path }}/matrix-reminder-bot"
matrix_bot_matrix_reminder_bot_config_path: "{{ matrix_bot_matrix_reminder_bot_base_path }}/config"

View File

@@ -49,15 +49,15 @@
- {path: "{{ matrix_bot_matrix_reminder_bot_config_path }}", when: true}
- {path: "{{ matrix_bot_matrix_reminder_bot_data_path }}", when: true}
- {path: "{{ matrix_bot_matrix_reminder_bot_data_store_path }}", when: true}
- {path: "{{ matrix_bot_matrix_reminder_bot_docker_src_files_path }}", when: true}
- {path: "{{ matrix_bot_matrix_reminder_bot_container_src_files_path }}", when: true}
when: "item.when | bool"
- name: Ensure matrix-reminder-bot image is pulled
community.docker.docker_image:
name: "{{ matrix_bot_matrix_reminder_bot_docker_image }}"
name: "{{ matrix_bot_matrix_reminder_bot_container_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_bot_matrix_reminder_bot_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_matrix_reminder_bot_docker_image_force_pull }}"
force_source: "{{ matrix_bot_matrix_reminder_bot_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_matrix_reminder_bot_container_image_force_pull }}"
when: "not matrix_bot_matrix_reminder_bot_container_image_self_build | bool"
register: matrix_bot_matrix_reminder_bot_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}"
@@ -66,9 +66,9 @@
- name: Ensure matrix-reminder-bot repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_bot_matrix_reminder_bot_docker_repo }}"
version: "{{ matrix_bot_matrix_reminder_bot_docker_repo_version }}"
dest: "{{ matrix_bot_matrix_reminder_bot_docker_src_files_path }}"
repo: "{{ matrix_bot_matrix_reminder_bot_container_repo }}"
version: "{{ matrix_bot_matrix_reminder_bot_container_repo_version }}"
dest: "{{ matrix_bot_matrix_reminder_bot_container_src_files_path }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
@@ -77,13 +77,13 @@
- name: Ensure matrix-reminder-bot image is built
community.docker.docker_image:
name: "{{ matrix_bot_matrix_reminder_bot_docker_image }}"
name: "{{ matrix_bot_matrix_reminder_bot_container_image }}"
source: build
force_source: "{{ matrix_bot_matrix_reminder_bot_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_matrix_reminder_bot_git_pull_results.changed }}"
build:
dockerfile: docker/Dockerfile
path: "{{ matrix_bot_matrix_reminder_bot_docker_src_files_path }}"
path: "{{ matrix_bot_matrix_reminder_bot_container_src_files_path }}"
pull: true
when: "matrix_bot_matrix_reminder_bot_container_image_self_build | bool"

View File

@@ -6,6 +6,24 @@
---
- name: (Deprecation) Catch and report renamed matrix-reminder-bot settings
ansible.builtin.fail:
msg: >-
Your configuration contains a variable, which now has a different name.
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_bot_matrix_reminder_bot_container_self_build', 'new': 'matrix_bot_matrix_reminder_bot_container_image_self_build'}
- {'old': 'matrix_bot_matrix_reminder_bot_container_image_name_prefix', 'new': 'matrix_bot_matrix_reminder_bot_container_image_registry_prefix'}
- {'old': 'matrix_bot_matrix_reminder_bot_docker_image', 'new': 'matrix_bot_matrix_reminder_bot_container_image'}
- {'old': 'matrix_bot_matrix_reminder_bot_docker_image_force_pull', 'new': 'matrix_bot_matrix_reminder_bot_container_image_force_pull'}
- {'old': 'matrix_bot_matrix_reminder_bot_docker_image_registry_prefix', 'new': 'matrix_bot_matrix_reminder_bot_container_image_registry_prefix'}
- {'old': 'matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream', 'new': 'matrix_bot_matrix_reminder_bot_container_image_registry_prefix_upstream'}
- {'old': 'matrix_bot_matrix_reminder_bot_docker_image_registry_prefix_upstream_default', 'new': 'matrix_bot_matrix_reminder_bot_container_image_registry_prefix_upstream_default'}
- {'old': 'matrix_bot_matrix_reminder_bot_docker_repo', 'new': 'matrix_bot_matrix_reminder_bot_container_repo'}
- {'old': 'matrix_bot_matrix_reminder_bot_docker_repo_version', 'new': 'matrix_bot_matrix_reminder_bot_container_repo_version'}
- {'old': 'matrix_bot_matrix_reminder_bot_docker_src_files_path', 'new': 'matrix_bot_matrix_reminder_bot_container_src_files_path'}
- name: Fail if required matrix-reminder-bot settings not defined
ansible.builtin.fail:
msg: >-
@@ -17,13 +35,3 @@
- {'name': 'matrix_bot_matrix_reminder_bot_container_network', when: true}
- {'name': 'matrix_bot_matrix_reminder_bot_matrix_homeserver_url', when: true}
- {'name': 'matrix_bot_matrix_reminder_bot_database_hostname', when: "{{ matrix_bot_matrix_reminder_bot_database_engine == 'postgres' }}"}
- name: (Deprecation) Catch and report renamed matrix-reminder-bot settings
ansible.builtin.fail:
msg: >-
Your configuration contains a variable, which now has a different name.
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_bot_matrix_reminder_bot_container_self_build', 'new': 'matrix_bot_matrix_reminder_bot_container_image_self_build'}
- {'old': 'matrix_bot_matrix_reminder_bot_container_image_name_prefix', 'new': 'matrix_bot_matrix_reminder_bot_container_image_registry_prefix'}

View File

@@ -31,7 +31,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% for arg in matrix_bot_matrix_reminder_bot_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_bot_matrix_reminder_bot_docker_image }} \
{{ matrix_bot_matrix_reminder_bot_container_image }} \
-c "matrix-reminder-bot /config/config.yaml"
{% for network in matrix_bot_matrix_reminder_bot_container_additional_networks %}

View File

@@ -26,37 +26,37 @@ matrix_bot_maubot_hostname: ''
matrix_bot_maubot_path_prefix: /_matrix/maubot
matrix_bot_maubot_container_image_self_build: false
matrix_bot_maubot_docker_repo: "https://mau.dev/maubot/maubot.git"
matrix_bot_maubot_docker_repo_version: "{{ 'master' if matrix_bot_maubot_version == 'latest' else matrix_bot_maubot_version }}"
matrix_bot_maubot_container_repo: "https://mau.dev/maubot/maubot.git"
matrix_bot_maubot_container_repo_version: "{{ 'master' if matrix_bot_maubot_version == 'latest' else matrix_bot_maubot_version }}"
# renovate: datasource=docker depName=dock.mau.dev/maubot/maubot
matrix_bot_maubot_version: v0.6.0
matrix_bot_maubot_docker_image: "{{ matrix_bot_maubot_docker_image_registry_prefix }}maubot/maubot:{{ matrix_bot_maubot_version }}"
matrix_bot_maubot_docker_image_registry_prefix: "{{ 'localhost/' if matrix_bot_maubot_container_image_self_build else matrix_bot_maubot_docker_image_registry_prefix_upstream }}"
matrix_bot_maubot_docker_image_registry_prefix_upstream: "{{ matrix_bot_maubot_docker_image_registry_prefix_upstream_default }}"
matrix_bot_maubot_docker_image_registry_prefix_upstream_default: "dock.mau.dev/"
matrix_bot_maubot_docker_image_force_pull: "{{ matrix_bot_maubot_docker_image.endswith(':latest') }}"
matrix_bot_maubot_container_image: "{{ matrix_bot_maubot_container_image_registry_prefix }}maubot/maubot:{{ matrix_bot_maubot_version }}"
matrix_bot_maubot_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_maubot_container_image_self_build else matrix_bot_maubot_container_image_registry_prefix_upstream }}"
matrix_bot_maubot_container_image_registry_prefix_upstream: "{{ matrix_bot_maubot_container_image_registry_prefix_upstream_default }}"
matrix_bot_maubot_container_image_registry_prefix_upstream_default: "dock.mau.dev/"
matrix_bot_maubot_container_image_force_pull: "{{ matrix_bot_maubot_container_image.endswith(':latest') }}"
# matrix_bot_maubot_docker_image_customized is the name of the locally built maubot image
# matrix_bot_maubot_container_image_customized is the name of the locally built maubot image
# which adds various customizations on top of the original (upstream) maubot image.
# This image will be based on the upstream `matrix_bot_maubot_docker_image` image, only if `matrix_bot_maubot_container_image_customizations_enabled: true`.
matrix_bot_maubot_docker_image_customized: "localhost/maubot/maubot:{{ matrix_bot_maubot_version }}-customized"
# This image will be based on the upstream `matrix_bot_maubot_container_image` image, only if `matrix_bot_maubot_container_image_customizations_enabled: true`.
matrix_bot_maubot_container_image_customized: "localhost/maubot/maubot:{{ matrix_bot_maubot_version }}-customized"
# Controls whether the customized image (`matrix_bot_maubot_docker_image_customized`) is to be force-built without layer caching enabled.
matrix_bot_maubot_docker_image_customized_build_nocache: false
# Controls whether the customized image (`matrix_bot_maubot_container_image_customized`) is to be force-built without layer caching enabled.
matrix_bot_maubot_container_image_customized_build_nocache: false
# Controls whether the customized image (`matrix_bot_maubot_docker_image_customized`) is to be built, even if it already exists.
# Related to: matrix_bot_maubot_docker_image_customized_build_nocache
matrix_bot_maubot_docker_image_customized_force_source: "{{ matrix_bot_maubot_docker_image_customized_build_nocache }}"
# Controls whether the customized image (`matrix_bot_maubot_container_image_customized`) is to be built, even if it already exists.
# Related to: matrix_bot_maubot_container_image_customized_build_nocache
matrix_bot_maubot_container_image_customized_force_source: "{{ matrix_bot_maubot_container_image_customized_build_nocache }}"
# matrix_bot_maubot_docker_image_final holds the name of the maubot image to run depending on whether or not customizations are enabled.
matrix_bot_maubot_docker_image_final: "{{ matrix_bot_maubot_docker_image_customized if matrix_bot_maubot_container_image_customizations_enabled else matrix_bot_maubot_docker_image }} "
# matrix_bot_maubot_container_image_final holds the name of the maubot image to run depending on whether or not customizations are enabled.
matrix_bot_maubot_container_image_final: "{{ matrix_bot_maubot_container_image_customized if matrix_bot_maubot_container_image_customizations_enabled else matrix_bot_maubot_container_image }} "
matrix_bot_maubot_base_path: "{{ matrix_base_data_path }}/maubot"
matrix_bot_maubot_data_path: "{{ matrix_bot_maubot_base_path }}/data"
matrix_bot_maubot_config_path: "{{ matrix_bot_maubot_base_path }}/config"
matrix_bot_maubot_docker_src_files_path: "{{ matrix_bot_maubot_base_path }}/docker-src"
matrix_bot_maubot_customized_docker_src_files_path: "{{ matrix_bot_maubot_base_path }}/customized-docker-src"
matrix_bot_maubot_container_src_files_path: "{{ matrix_bot_maubot_base_path }}/docker-src"
matrix_bot_maubot_customized_container_src_files_path: "{{ matrix_bot_maubot_base_path }}/customized-docker-src"
matrix_bot_maubot_bot_server_public_url: "{{ matrix_bot_maubot_scheme }}://{{ matrix_bot_maubot_hostname }}"
matrix_bot_maubot_bot_server_base_path: "{{ matrix_bot_maubot_path_prefix }}/v1"
@@ -124,12 +124,12 @@ matrix_bot_maubot_container_additional_networks_custom: []
# See:
# - `roles/custom/matrix-bot-maubot/templates/maubot/customizations/Dockerfile.j2`
# - `matrix_bot_maubot_container_image_customizations_dockerfile_body_custom`
# - `matrix_bot_maubot_docker_image_customized`
# - `matrix_bot_maubot_docker_image_final`
# - `matrix_bot_maubot_container_image_customized`
# - `matrix_bot_maubot_container_image_final`
matrix_bot_maubot_container_image_customizations_enabled: false
# matrix_bot_maubot_container_image_customizations_dockerfile_body contains your custom Dockerfile steps
# for building your customized maubot image based on the original (upstream) image (`matrix_bot_maubot_docker_image`).
# for building your customized maubot image based on the original (upstream) image (`matrix_bot_maubot_container_image`).
# A `FROM …` clause is included automatically so you don't have to.
#
# For this to take effect, you need to enable customizations (`matrix_bot_maubot_container_image_customizations_enabled: true`).

View File

@@ -23,8 +23,8 @@
- {path: "{{ matrix_bot_maubot_data_path }}/plugins", when: true}
- {path: "{{ matrix_bot_maubot_data_path }}/dbs", when: true}
- {path: "{{ matrix_bot_maubot_data_path }}/trash", when: true}
- {path: "{{ matrix_bot_maubot_docker_src_files_path }}", when: "{{ matrix_bot_maubot_container_image_self_build }}"}
- {path: "{{ matrix_bot_maubot_customized_docker_src_files_path }}", when: "{{ matrix_bot_maubot_container_image_customizations_enabled }}"}
- {path: "{{ matrix_bot_maubot_container_src_files_path }}", when: "{{ matrix_bot_maubot_container_image_self_build }}"}
- {path: "{{ matrix_bot_maubot_customized_container_src_files_path }}", when: "{{ matrix_bot_maubot_container_image_customizations_enabled }}"}
when: "item.when|bool"
- name: Ensure maubot configuration file created
@@ -38,10 +38,10 @@
- name: Ensure maubot image is pulled
community.docker.docker_image:
name: "{{ matrix_bot_maubot_docker_image }}"
name: "{{ matrix_bot_maubot_container_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_bot_maubot_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_maubot_docker_image_force_pull }}"
force_source: "{{ matrix_bot_maubot_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_maubot_container_image_force_pull }}"
when: "not matrix_bot_maubot_container_image_self_build|bool"
register: matrix_bot_maubot_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}"
@@ -52,9 +52,9 @@
block:
- name: Ensure maubot repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_bot_maubot_docker_repo }}"
version: "{{ matrix_bot_maubot_docker_repo_version }}"
dest: "{{ matrix_bot_maubot_docker_src_files_path }}"
repo: "{{ matrix_bot_maubot_container_repo }}"
version: "{{ matrix_bot_maubot_container_repo_version }}"
dest: "{{ matrix_bot_maubot_container_src_files_path }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
@@ -62,13 +62,13 @@
- name: Ensure maubot image is built
community.docker.docker_image:
name: "{{ matrix_bot_maubot_docker_image }}"
name: "{{ matrix_bot_maubot_container_image }}"
source: build
force_source: "{{ matrix_bot_maubot_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_maubot_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_bot_maubot_docker_src_files_path }}"
path: "{{ matrix_bot_maubot_container_src_files_path }}"
pull: true
- when: "matrix_bot_maubot_container_image_customizations_enabled | bool"
@@ -76,7 +76,7 @@
- name: Ensure customizations Dockerfile is created
ansible.builtin.template:
src: "{{ role_path }}/templates/customizations/Dockerfile.j2"
dest: "{{ matrix_bot_maubot_customized_docker_src_files_path }}/Dockerfile"
dest: "{{ matrix_bot_maubot_customized_container_src_files_path }}/Dockerfile"
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
mode: '0640'
@@ -84,13 +84,13 @@
- name: Ensure customized Docker image for maubot is built
community.docker.docker_image:
name: "{{ matrix_bot_maubot_docker_image_customized }}"
name: "{{ matrix_bot_maubot_container_image_customized }}"
source: build
force_source: "{{ matrix_bot_maubot_container_image_customizations_dockerfile_result.changed or matrix_bot_maubot_docker_image_customized_force_source }}"
force_source: "{{ matrix_bot_maubot_container_image_customizations_dockerfile_result.changed or matrix_bot_maubot_container_image_customized_force_source }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_bot_maubot_customized_docker_src_files_path }}"
nocache: "{{ matrix_bot_maubot_docker_image_customized_build_nocache }}"
path: "{{ matrix_bot_maubot_customized_container_src_files_path }}"
nocache: "{{ matrix_bot_maubot_container_image_customized_build_nocache }}"
- name: Ensure maubot support files installed
ansible.builtin.template:

View File

@@ -18,6 +18,19 @@
- {'old': 'matrix_bot_maubot_management_interface_http_bind_port', 'new': 'matrix_bot_maubot_container_management_interface_http_bind_port'}
- {'old': 'matrix_bot_maubot_registration_shared_secret', 'new': 'matrix_bot_maubot_homeserver_secret'}
- {'old': 'matrix_bot_maubot_container_image_name_prefix', 'new': 'matrix_bot_maubot_container_image_registry_prefix'}
- {'old': 'matrix_bot_maubot_docker_image', 'new': 'matrix_bot_maubot_container_image'}
- {'old': 'matrix_bot_maubot_docker_image_customized', 'new': 'matrix_bot_maubot_container_image_customized'}
- {'old': 'matrix_bot_maubot_docker_image_customized_build_nocache', 'new': 'matrix_bot_maubot_container_image_customized_build_nocache'}
- {'old': 'matrix_bot_maubot_docker_image_customized_force_source', 'new': 'matrix_bot_maubot_container_image_customized_force_source'}
- {'old': 'matrix_bot_maubot_docker_image_final', 'new': 'matrix_bot_maubot_container_image_final'}
- {'old': 'matrix_bot_maubot_docker_image_force_pull', 'new': 'matrix_bot_maubot_container_image_force_pull'}
- {'old': 'matrix_bot_maubot_docker_image_registry_prefix', 'new': 'matrix_bot_maubot_container_image_registry_prefix'}
- {'old': 'matrix_bot_maubot_docker_image_registry_prefix_upstream', 'new': 'matrix_bot_maubot_container_image_registry_prefix_upstream'}
- {'old': 'matrix_bot_maubot_docker_image_registry_prefix_upstream_default', 'new': 'matrix_bot_maubot_container_image_registry_prefix_upstream_default'}
- {'old': 'matrix_bot_maubot_docker_repo', 'new': 'matrix_bot_maubot_container_repo'}
- {'old': 'matrix_bot_maubot_docker_repo_version', 'new': 'matrix_bot_maubot_container_repo_version'}
- {'old': 'matrix_bot_maubot_docker_src_files_path', 'new': 'matrix_bot_maubot_container_src_files_path'}
- {'old': 'matrix_bot_maubot_customized_docker_src_files_path', 'new': 'matrix_bot_maubot_customized_container_src_files_path'}
- name: Fail if required maubot settings not defined
ansible.builtin.fail:

View File

@@ -1,4 +1,4 @@
#jinja2: lstrip_blocks: True
FROM {{ matrix_bot_maubot_docker_image }}
FROM {{ matrix_bot_maubot_container_image }}
{{ matrix_bot_maubot_container_image_customizations_dockerfile_body_custom }}

View File

@@ -38,7 +38,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% if matrix_bot_maubot_container_management_interface_http_bind_port %}
-p {{ matrix_bot_maubot_container_management_interface_http_bind_port }}:{{ matrix_bot_maubot_server_port }} \
{% endif %}
{{ matrix_bot_maubot_docker_image_final }} \
{{ matrix_bot_maubot_container_image_final }} \
python3 -m maubot -c /config/config.yaml --no-update
{% for network in matrix_bot_maubot_container_additional_networks %}

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