168 Commits

Author SHA1 Message Date
Thom Wiggers
b1ff71266b Update matrix-appservice-irc to 4.0.0 with authenticated media proxy support
- Upgrade from 1.0.1 to 4.0.0
- Add ircService.mediaProxy configuration for authenticated Matrix media
- Add Traefik integration for media proxy endpoint
- Generate signing key for authenticated media

Closes #3512

Co-authored-by: Jade Ellis <jade@ellis.link>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2026-01-29 12:08:59 +02:00
renovate[bot]
72d522b9f1 chore(deps): update dependency backup_borg to v1.4.3-2.1.1-0 2026-01-29 05:26:29 +02:00
renovate[bot]
67e650b5f9 chore(deps): update coturn/coturn docker tag to v4.8.0 2026-01-27 22:46:31 +02:00
Slavi Pantaleev
18b11eea3b Try versioning=loose for the Coturn container image definition for Renovate
Ref: https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4880#issuecomment-3807433691
2026-01-27 22:40:47 +02:00
Sid Manat
fd6f72382d Upgrade Coturn (4.6.2-r11 -> 4.8.0-r0) 2026-01-27 22:24:54 +02:00
Slavi Pantaleev
460d46999f Make Synapse's enable_local_media_storage configurable
Ref:
- https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4882
- https://github.com/element-hq/synapse/pull/19204
- https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#enable_local_media_storage

We default it to `true`, keeping up with upstream and the old behavior.

s3-storage-provider users may set `matrix_synapse_enable_local_media_storage` to `false`
to disable local file caching.
This likely comes at the expense of some performance.

For matrix-media-repo users, it likely doesn't matter what this is set to,
as for a matrix-media-repo setup, all media-related API endpoints are
captured and forwarded to matrix-media-repo (before reaching Synapse).
2026-01-27 22:11:06 +02:00
renovate[bot]
93d110e61e chore(deps): update ghcr.io/element-hq/synapse docker tag to v1.146.0 2026-01-27 22:10:25 +02:00
renovate[bot]
6629867235 chore(deps): update ghcr.io/element-hq/matrix-authentication-service docker tag to v1.10.0 2026-01-27 21:18:40 +02:00
renovate[bot]
8a3c75b7bd chore(deps): update ghcr.io/element-hq/element-web docker tag to v1.12.9 2026-01-27 16:55:38 +02:00
renovate[bot]
b6bf91c150 chore(deps): update dependency etherpad to v2.6.1-0 2026-01-27 12:53:38 +02:00
renovate[bot]
b0e70f419f chore(deps): update dependency setuptools to v80.10.2 2026-01-26 08:15:49 +02:00
renovate[bot]
692c34ad9b chore(deps): update halfshot/matrix-hookshot docker tag to v7.3.1 2026-01-24 20:07:34 +02:00
Slavi Pantaleev
97c2915034 Upgrade baibot (v1.12.0 -> v1.13.0) 2026-01-23 00:52:36 +02:00
renovate[bot]
292397234a chore(deps): update dependency packaging to v26 2026-01-22 07:52:37 +02:00
renovate[bot]
82d6f3de2c chore(deps): update dependency setuptools to v80.10.1 2026-01-21 15:49:57 +02:00
renovate[bot]
cc9234d3ba chore(deps): update ghcr.io/etkecc/fluffychat-web docker tag to v2.4.0 2026-01-21 15:49:48 +02:00
renovate[bot]
47322a8d52 chore(deps): update docker.io/metio/matrix-alertmanager-receiver docker tag to v2026.1.21 2026-01-21 08:35:31 +02:00
Slavi Pantaleev
911031e2cf Add support for Hookshot static connections (new in v7.3.0)
This adds the matrix_hookshot_connections variable for configuring
static webhook connections via the config file.

See: https://github.com/matrix-org/matrix-hookshot/pull/1102
2026-01-20 16:10:30 +02:00
renovate[bot]
e01a79865c chore(deps): update halfshot/matrix-hookshot docker tag to v7.3.0 2026-01-20 15:38:23 +02:00
renovate[bot]
ab97b94245 chore(deps): update dependency ntfy to v2.16.0-0 2026-01-20 11:56:58 +02:00
renovate[bot]
c8fc504470 chore(deps): update dock.mau.dev/mautrix/whatsapp docker tag to v0.2601.0 2026-01-16 22:28:12 +02:00
renovate[bot]
a6c447ade3 chore(deps): update dock.mau.dev/mautrix/gmessages docker tag to v0.2601.0 2026-01-16 22:26:58 +02:00
renovate[bot]
aa69069627 chore(deps): update dock.mau.dev/mautrix/signal docker tag to v0.2601.0 2026-01-16 22:26:48 +02:00
renovate[bot]
fa22053bf1 chore(deps): update ansible/ansible-lint action to v26.1.1 2026-01-16 14:32:56 +02:00
renovate[bot]
a3ef7109b6 chore(deps): update dependency docker to v8 2026-01-15 21:29:26 +02:00
renovate[bot]
7c8a28d590 chore(deps): update ghcr.io/element-hq/lk-jwt-service docker tag to v0.4.1 2026-01-15 20:30:02 +02:00
renovate[bot]
28af19a1a7 chore(deps): update dependency myst-parser to v5 2026-01-15 14:44:50 +02:00
renovate[bot]
ea4b467cd3 chore(deps): update dependency livekit_server to v1.9.11-0 2026-01-15 14:43:30 +02:00
Slavi Pantaleev
bd6202eb65 Upgrade Traefik (v3.6.6-0 -> v3.6.7-1) and remove all (now-unnecessary) encodedCharacters_* setting overrides
All these `encodedCharacters_*` settings default to `true` in Traefik v3.6.7,
so we don't need to override their values.

Ref: https://doc.traefik.io/traefik/v3.6/migrate/v3/#v367

Closes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4835
2026-01-15 14:40:38 +02:00
Aine
4d0cf32151 grafana: add /tmp tmpfs 2026-01-15 09:12:17 +00:00
renovate[bot]
1890f3a01a chore(deps): update dependency jitsi to v10710 2026-01-14 16:52:49 +02:00
Slavi Pantaleev
ac5dc5d44f Pull in some additional Synapse workers routing configuration
Provoked by https://github.com/element-hq/synapse/pull/19281
which landed in Synapse v1.145.0, but we pull in a few other routes
that I noticed to be missing.
2026-01-14 12:07:09 +02:00
renovate[bot]
a050107e0f chore(deps): update ghcr.io/element-hq/synapse docker tag to v1.145.0 2026-01-14 12:06:41 +02:00
renovate[bot]
41108b57e3 chore(deps): update docker.io/metio/matrix-alertmanager-receiver docker tag to v2026 2026-01-14 11:55:53 +02:00
renovate[bot]
78c7b61af8 chore(deps): update ghcr.io/element-hq/matrix-authentication-service docker tag to v1.9.0 2026-01-13 19:47:45 +02:00
renovate[bot]
b5c5f34ca4 chore(deps): update ghcr.io/element-hq/element-web docker tag to v1.12.8 2026-01-13 19:46:26 +02:00
Slavi Pantaleev
e1bf0aebd2 Upgrade LiveKit (v1.9.10-0 -> v1.9.10-1) 2026-01-12 10:10:14 +02:00
Slavi Pantaleev
8a02d791ea Add missing : to matrix_media_repo_redis_shards entry
Ref: https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4851#issuecomment-3732696383
2026-01-10 15:10:09 +02:00
akdk7
dd54691137 Automatically integate matrix-media-repo with Valkey (if enabled) (#4851)
* This push request is about handling Traefik ipallowlist to synapse-admin application.

It's my first push request. If I forgot something please let me know. :-)

* Changed position of variable and naming for better expandebility of traefik options

* Remove useless `noqa var-naming` comment and too many blank lines at the end of the file

* If redis ist enabled for matrix media repo it failes to connect to valkey due to inproper configuration.

* Updated solution for fixing MMR redis connection

* Clean up

* Update valkey_container_network condition

---------

Co-authored-by: AkDk7 <joerg@pannbacker.email>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2026-01-10 15:07:12 +02:00
renovate[bot]
a3a2c568d0 chore(deps): update dependency prometheus_node_exporter to v1.9.1-13 2026-01-09 15:12:53 +02:00
renovate[bot]
0bc84a7129 chore(deps): update dependency prometheus_postgres_exporter to v0.18.1-2 2026-01-09 15:12:45 +02:00
Aine
afe5b06771 Synapse Admin v0.11.1-etke52 2026-01-09 08:43:28 +00:00
renovate[bot]
e4d0d42f04 chore(deps): update dependency traefik_certs_dumper to v2.10.0-4 2026-01-09 08:50:29 +02:00
dependabot[bot]
91711669c6 Bump ansible/ansible-lint from 25.12.2 to 26.1.0
Bumps [ansible/ansible-lint](https://github.com/ansible/ansible-lint) from 25.12.2 to 26.1.0.
- [Release notes](https://github.com/ansible/ansible-lint/releases)
- [Commits](https://github.com/ansible/ansible-lint/compare/v25.12.2...v26.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 18:43:23 +02:00
renovate[bot]
5fe789cd96 chore(deps): update dependency etherpad to v2.6.0-1 2026-01-08 18:43:00 +02:00
renovate[bot]
e4abe50daf chore(deps): update dependency grafana to v11.6.5-5 2026-01-08 18:42:38 +02:00
renovate[bot]
e70d0d7673 chore(deps): update dependency auxiliary to v1.0.0-6 2026-01-08 15:12:39 +02:00
renovate[bot]
ae88c51dd7 chore(deps): update dependency container_socket_proxy to v0.4.2-1 2026-01-08 15:12:21 +02:00
renovate[bot]
9d7c224021 chore(deps): update dependency prometheus to v3.9.1-0 2026-01-08 12:07:41 +02:00
renovate[bot]
65213ff497 chore(deps): update ghcr.io/jasonlaguidice/matrix-steam-bridge docker tag to v1.1.0 2026-01-08 06:56:55 +02:00
renovate[bot]
13727bc0a2 chore(deps): update dependency urllib3 to v2.6.3 2026-01-07 21:23:23 +02:00
renovate[bot]
ed87ef7e50 chore(deps): update dependency prometheus to v3.9.0-0 2026-01-07 11:09:11 +02:00
Aine
858a4ab555 Synapse Admin v0.11.1-etke51 2026-01-06 09:47:01 +00:00
Slavi Pantaleev
5f3f57197e Revert "Remove outdated warning about Postmoogle not working well with Matrix Authentication Service"
This reverts commit 81b371e690.

Ref: 81b371e690 (commitcomment-173871096)
2026-01-06 09:28:28 +02:00
renovate[bot]
4f00bb4789 chore(deps): update dependency certifi to v2026 2026-01-04 08:58:47 +02:00
renovate[bot]
5e558aab55 chore(deps): update dependency livekit_server to v1.9.10-0 2026-01-01 16:34:15 +02:00
renovate[bot]
e09d10419c chore(deps): update dependency sphinx to v9.1.0 2025-12-31 19:29:23 +02:00
Mark Monteiro
e60ef27bb8 update instructions for user admin management with MAS
This is now supported via the mas-cli management tool
2025-12-31 08:51:11 +02:00
Mark Monteiro
be7536390d improve notes about configuring hookshot encryption
- clarify that Redis is configured automatically
- add note indicating that encryption is not currently supported when using MAS
2025-12-31 08:50:36 +02:00
renovate[bot]
e7612dc0ce chore(deps): update matrixconduit/matrix-conduit docker tag to v0.10.11 2025-12-31 06:34:57 +02:00
renovate[bot]
6f736653e9 chore(deps): update dependency traefik to v3.6.6-0 2025-12-30 12:39:28 +02:00
Aine
1ca3c91fd7 etherpad v2.6.0 2025-12-28 23:27:56 +00:00
Slavi Pantaleev
edf833627e Add matrix_coturn_hostname to allow for the Coturn domain to be different than matrix_server_fqn_matrix 2025-12-25 10:03:39 +02:00
Slavi Pantaleev
ed20b65912 Upgrade Traefik (v3.6.5-0 -> v3.6.5-1) 2025-12-25 09:57:33 +02:00
renovate[bot]
9cbc9c6b06 chore(deps): update docker.io/metio/matrix-alertmanager-receiver docker tag to v2025.12.24 2025-12-24 11:13:33 +02:00
Aine
484e94d493 add matrix_synapse_ext_s3_storage_provider_container_arguments var 2025-12-23 15:34:32 +00:00
renovate[bot]
b0f73f7966 chore(deps): update matrixconduit/matrix-conduit docker tag to v0.10.10 2025-12-23 05:38:22 +02:00
renovate[bot]
3c64fe6eb5 chore(deps): update ansible/ansible-lint action to v25.12.2 2025-12-23 05:36:44 +02:00
Aine
048ce7503d borg v1.4.3 2025-12-22 12:37:51 +00:00
Aine
2161500e60 Merge pull request #4823 from spantaleev/renovate/backup_borg-1.x
chore(deps): update dependency backup_borg to v1.4.2-2.0.13-0
2025-12-22 08:23:38 +00:00
renovate[bot]
927f6fa2e3 chore(deps): update dependency backup_borg to v1.4.2-2.0.13-0 2025-12-22 08:23:04 +00:00
Slavi Pantaleev
66c85f63e6 Update default OpenAI image generation model for baibot (gpt-image-1 -> gpt-image-1.5) 2025-12-21 23:28:36 +02:00
Slavi Pantaleev
9ea18d6f2d Upgrade baibot (v1.11.0 -> v1.12.0) 2025-12-21 23:28:12 +02:00
Aine
a073f21a8f Postmoogle v0.9.28 2025-12-21 17:07:14 +00:00
Suguru Hirahara
68337b6f45 Remove the tasks to retrieve a nonexistent container image for Matrix.to
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2025-12-19 19:17:18 +02:00
QEDeD
a8ef76735d Narrow var-naming noqa to pattern 2025-12-19 15:01:39 +02:00
QEDeD
df6ac15324 Fix var-naming for encodedCharacters vars 2025-12-19 15:01:39 +02:00
renovate[bot]
ce14e60a02 chore(deps): update dependency docutils to v0.22.4 2025-12-18 23:17:22 +02:00
renovate[bot]
16bec7bfbb chore(deps): update gnuxie/draupnir docker tag to v2.9.0 2025-12-18 16:48:46 +02:00
renovate[bot]
91e9d0b227 chore(deps): update dependency livekit_server to v1.9.9-0 2025-12-18 10:32:41 +02:00
renovate[bot]
c05849920d chore(deps): update dependency traefik to v3.6.5-0 2025-12-17 08:00:51 +02:00
renovate[bot]
2e313f6c38 chore(deps): update dock.mau.dev/mautrix/whatsapp docker tag to v0.2512.0 2025-12-17 05:47:06 +02:00
renovate[bot]
6d202a30fc chore(deps): update ghcr.io/element-hq/element-web docker tag to v1.12.7 2025-12-16 17:58:36 +02:00
renovate[bot]
42cfbc06cc chore(deps): update dependency prometheus to v3.8.1-0 2025-12-16 17:03:19 +02:00
renovate[bot]
17898f6be2 chore(deps): update dock.mau.dev/mautrix/meta docker tag to v0.2512.0 2025-12-16 17:01:19 +02:00
renovate[bot]
a1df76f9d4 chore(deps): update dock.mau.dev/mautrix/signal docker tag to v0.2512.0 2025-12-16 17:00:44 +02:00
renovate[bot]
f2242246ec chore(deps): update dependency container_socket_proxy to v0.4.2-0 2025-12-16 13:09:57 +02:00
Slavi Pantaleev
12bee503e0 Configure encodedCharacters for the web Traefik entrypoint (if matrix_playbook_ssl_enabled is false) to fix Traefik 3.6.3+ regression in those cases
Continuation of e7cb9eee79

Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4798
2025-12-15 17:00:49 +02:00
Slavi Pantaleev
e7cb9eee79 Configure encodedCharacters for various Traefik entrypoints to fix Traefik 3.6.3+ regression
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4798

Ref: https://doc.traefik.io/traefik/migrate/v3/#v364
2025-12-15 13:00:53 +02:00
Slavi Pantaleev
e813932240 Upgrade Traefik (v3.6.4-0 -> v3.6.4-1) 2025-12-15 12:34:43 +02:00
Slavi Pantaleev
98331ae970 Upgrade baibot (v1.10.0 -> v1.11.0) and add support for configuring a custom avatar 2025-12-15 10:27:44 +02:00
Aine
5612af92e8 FluffyChat v2.3.0 2025-12-14 12:30:14 +00:00
renovate[bot]
1f31975aef chore(deps): update dessant/lock-threads action to v6 2025-12-12 18:54:31 +02:00
Slavi Pantaleev
fa3d05ea81 Bump OpenAI text-generation model for baibot (gpt-5.1 -> gpt-5.2) 2025-12-12 16:03:40 +02:00
renovate[bot]
5c0c03893f chore(deps): update dependency urllib3 to v2.6.2 2025-12-12 05:29:55 +02:00
renovate[bot]
f7a3bde4a7 chore(deps): update oci.element.io/element-admin docker tag to v0.1.10 2025-12-10 21:59:48 +02:00
renovate[bot]
52278a8108 chore(deps): update dependency livekit_server to v1.9.8-0 2025-12-10 21:59:17 +02:00
renovate[bot]
3a12aa7682 chore(deps): update ansible/ansible-lint action to v25.12.1 2025-12-10 16:39:34 +02:00
renovate[bot]
6a8a1dfa24 chore(deps): update dependency valkey to v9.0.1-0 2025-12-10 13:05:33 +02:00
renovate[bot]
aec4185135 chore(deps): update ghcr.io/element-hq/synapse docker tag to v1.144.0 2025-12-10 06:47:15 +02:00
renovate[bot]
fd612f99fd chore(deps): update nginx docker tag to v1.29.4 2025-12-10 06:42:59 +02:00
renovate[bot]
ddc5e094a3 chore(deps): update ghcr.io/element-hq/matrix-authentication-service docker tag to v1.8.0 2025-12-10 06:42:37 +02:00
renovate[bot]
c14d1bd1f4 chore(deps): update dependency sphinx to v9.0.4 2025-12-09 09:31:34 +02:00
The one with the braid
fe9f70517e fix: migrate Traefik Cert Dumper configuration
Relates to 904a98d56c.

Signed-off-by: The one with the braid <info@braid.business>
2025-12-09 09:30:53 +02:00
renovate[bot]
59ab28cab2 chore(deps): update dependency urllib3 to v2.6.1 2025-12-09 01:17:49 +02:00
renovate[bot]
904a98d56c chore(deps): update dependency traefik_certs_dumper to v2.10.0-3 2025-12-08 20:33:46 +02:00
renovate[bot]
f36983bfdb chore(deps): update joseluisq/static-web-server docker tag to v2.40.1 2025-12-08 11:25:51 +02:00
Slavi Pantaleev
88dcfbdaa7 Override matrix_matrixto_base_path in terms of matrix_base_data_path in group_vars/matrix_servers
Closes https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4787
2025-12-08 05:39:14 +02:00
renovate[bot]
d5580ea322 chore(deps): update dependency sphinx-markdown-builder to v0.6.9 2025-12-07 21:29:59 +02:00
Slavi Pantaleev
95884479c3 Fix tag name typo (setup-jwt-service -> setup-livekit-jwt-service) for the livekit-jwt-service role 2025-12-06 08:35:33 +02:00
Slavi Pantaleev
64fc64921c Upgrade livekit-jwt-service (v0.3.0 -> v0.4.0) and adapt configuration
Ref: https://github.com/element-hq/lk-jwt-service/releases/tag/v0.4.0

Supersedes https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4784
2025-12-06 08:34:33 +02:00
Slavi Pantaleev
4238ec6e86 Upgrade baibot (v1.9.0 -> v1.10.0) 2025-12-06 07:12:48 +02:00
renovate[bot]
940dcb0162 chore(deps): update dependency traefik to v3.6.4-0 2025-12-06 07:04:50 +02:00
renovate[bot]
98663a8386 chore(deps): update dependency urllib3 to v2.6.0 2025-12-05 18:28:01 +02:00
Suguru Hirahara
bbfe345758 Update faq.md: add the section about coturn errors
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2025-12-05 17:37:50 +02:00
renovate[bot]
c7ed2deb22 chore(deps): update dependency livekit_server to v1.9.7-0 2025-12-05 14:56:06 +02:00
Aine
1bc70935a0 Synapse Admin v0.11.1-etke50 2025-12-04 18:55:40 +00:00
renovate[bot]
472bf1c58c chore(deps): update dependency sphinx to v9.0.3 2025-12-04 06:29:36 +02:00
renovate[bot]
717c9bfd7d chore(deps): update ghcr.io/element-hq/element-web docker tag to v1.12.6 2025-12-03 21:15:42 +02:00
Slavi Pantaleev
325b22a302 Stop using deprecated vars variable in all other custom roles
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4776

Supersedes https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4777
2025-12-02 21:32:15 +02:00
Kim Brose
f8f7406c51 Stop using deprecated vars variable for matrix-element-call 2025-12-02 20:10:35 +02:00
Kim Brose
caa2e338bc Stop using deprecated vars variable for matrix-dimension 2025-12-02 20:10:35 +02:00
renovate[bot]
585d606856 chore(deps): update dependency prometheus to v3.8.0-0 2025-12-02 18:07:36 +02:00
dependabot[bot]
cf97144ed8 Bump ansible/ansible-lint from 25.11.1 to 25.12.0
Bumps [ansible/ansible-lint](https://github.com/ansible/ansible-lint) from 25.11.1 to 25.12.0.
- [Release notes](https://github.com/ansible/ansible-lint/releases)
- [Commits](https://github.com/ansible/ansible-lint/compare/v25.11.1...v25.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 18:07:25 +02:00
renovate[bot]
d5709e4596 chore(deps): update ghcr.io/element-hq/element-call docker tag to v0.16.3 2025-12-02 18:07:14 +02:00
renovate[bot]
1838840f65 chore(deps): update ghcr.io/element-hq/element-web docker tag to v1.12.5 2025-12-02 18:06:41 +02:00
Slavi Pantaleev
0041bd01c3 Upgrade Postgres (v18.1-2 -> v18.1-3) 2025-12-02 07:38:38 +02:00
renovate[bot]
aea799260f chore(deps): update dependency docker to v7.9.0 2025-12-02 06:31:45 +02:00
renovate[bot]
1ee83861c3 chore(deps): update dependency sphinx to v9.0.1 2025-12-01 20:10:45 +02:00
renovate[bot]
db793428a1 chore(deps): update dependency livekit_server to v1.9.6-0 2025-12-01 16:57:40 +02:00
Slavi Pantaleev
f31be1a725 Adapt to static-webserver v2.40.0 changes to the public directory
Ref:

- https://github.com/static-web-server/static-web-server/releases/tag/v2.40.0
- https://github.com/static-web-server/static-web-server/pull/567
- https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/4767

Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4768

Regression since a451f1fcb1
2025-12-01 13:50:06 +02:00
renovate[bot]
a451f1fcb1 chore(deps): update joseluisq/static-web-server docker tag to v2.40.0 2025-12-01 08:31:47 +02:00
Slavi Pantaleev
64d890300b Upgrade docker-sdk-for-python (c38854e4c8451520e20163af1dd5f657790332da -> 542a2d68db4e9a8e9bb4b508052760b900c7dce6) 2025-11-30 17:50:05 +02:00
renovate[bot]
7e0815c5ea chore(deps): update dependency sphinx to v9 2025-11-30 16:12:43 +02:00
Slavi Pantaleev
fb0a1bd489 Upgrade baibot (v1.8.3 -> v1.9.0) 2025-11-30 12:37:57 +02:00
Aine
bab3a47c50 fix zulip bridge service name on removal 2025-11-28 18:48:24 +00:00
renovate[bot]
a88c394ae0 chore(deps): update ghcr.io/matrix-org/rageshake docker tag to v1.17.1 2025-11-28 17:54:12 +02:00
Slavi Pantaleev
eda41e89c1 Upgrade baibot (v1.8.2 -> v1.8.3) 2025-11-28 14:53:31 +02:00
renovate[bot]
d1b480de65 chore(deps): update dependency backup_borg to v1.4.2-2.0.12-0
Some checks failed
Matrix CI / yamllint (push) Successful in 9s
Matrix CI / Run pre-commit (push) Failing after 58s
Matrix CI / ansible-lint (push) Successful in 11m4s
2025-11-28 05:23:51 +02:00
renovate[bot]
2821774fca chore(deps): update ghcr.io/element-hq/matrix-authentication-service docker tag to v1.7.0
Some checks failed
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been skipped
Lock Threads / action (push) Has been skipped
2025-11-27 03:22:44 +02:00
renovate[bot]
77a173f8b2 chore(deps): update oci.element.io/element-admin docker tag to v0.1.9
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
2025-11-26 18:03:26 +02:00
Slavi Pantaleev
ebdb2cc827 Use a proper (bool) value for the matrix_bot_draupnir_login_native variable
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Otherwise Ansible casts the "" string to a bool.
This works, but it's deprecated and a bad idea anyway.
2025-11-26 13:20:20 +02:00
Slavi Pantaleev
9b7767f451 Upgrade Postgres (v18.1-1 -> v18.1-2) 2025-11-26 13:17:04 +02:00
Slavi Pantaleev
201d3ea087 Upgrade Postgres (v18.1-0 -> v18.1-1) 2025-11-26 12:02:48 +02:00
Slavi Pantaleev
bf3f4a9059 Upgrade timesync (v1.1.0-0 -> v1.1.0-1) 2025-11-26 12:01:47 +02:00
Slavi Pantaleev
cbf8a2e7e9 Upgrade docker-sdk-for-python (129c8590e106b83e6f4c259649a613c6279e937a -> c38854e4c8451520e20163af1dd5f657790332da) 2025-11-26 11:59:38 +02:00
Slavi Pantaleev
ddf0fe7167 Fix Ansible inject_facts_as_vars deprecation warning 2025-11-26 11:56:57 +02:00
Slavi Pantaleev
07423d3dd4 Upgrade playbook-help (7663e3114513e56f28d3ed762059b445c678a71a -> 8630e4f1749bcb659c412820f754473f09055052) 2025-11-26 11:35:28 +02:00
Slavi Pantaleev
430f350733 Stop using deprecated vars variable 2025-11-26 11:35:09 +02:00
renovate[bot]
889970314a chore(deps): update docker.io/metio/matrix-alertmanager-receiver docker tag to v2025.11.26 2025-11-26 09:22:30 +02:00
renovate[bot]
1f2f7e468e chore(deps): update ghcr.io/element-hq/synapse docker tag to v1.143.0
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
2025-11-26 06:12:17 +02:00
Michael Hoang
6865a59e88 Document using Signal nicknames
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
2025-11-25 05:51:43 +02:00
renovate[bot]
e128c761ba chore(deps): update dependency jitsi to v10655 2025-11-25 05:02:56 +02:00
renovate[bot]
4caf38e682 chore(deps): update ansible/ansible-lint action to v25.11.1 2025-11-25 05:02:30 +02:00
renovate[bot]
2eadddcde9 chore(deps): update gnuxie/draupnir docker tag to v2.8.0
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
2025-11-23 15:57:05 +02:00
Suguru Hirahara
6cc837600a Add Matrix.to (#4750)
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
2025-11-23 06:53:37 +02:00
renovate[bot]
7181131967 chore(deps): update actions/checkout action to v6
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
2025-11-20 21:41:59 +02:00
Suguru Hirahara
a116620238 Update the link to the FluffyChat website
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Signed-off-by: Suguru Hirahara <did:key:z6MkvVZk1A3KBApWJXv2Ju4H14ErDfRGxh8zxdXSZ4vACDg5>
2025-11-20 17:16:05 +09:00
Slavi Pantaleev
b464f3cc55 Upgrade baibot (v1.8.1 -> v1.8.2)
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
2025-11-20 06:14:56 +02:00
Slavi Pantaleev
fb2d7481dc Upgrade playbook-state-preserver (ff2fd42e1c1a9e28e3312bbd725395f9c2fc7f16 -> dd6e15246b7a9a2d921e0b3f9cd8a4a917a1bb2f)
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
2025-11-19 06:50:55 +02:00
renovate[bot]
388e79ea5a chore(deps): update dependency traefik to v3.6.2-0 2025-11-19 06:16:35 +02:00
Richard Meyer
0ab40bbd9c Update synapse to v1.142.1 2025-11-19 06:15:06 +02:00
renovate[bot]
9582f6a565 chore(deps): update ghcr.io/element-hq/element-web docker tag to v1.12.4
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
2025-11-18 17:08:43 +02:00
Slavi Pantaleev
4b2919b538 Bump OpenAI text-generation model for baibot (gpt-5 -> gpt-5.1)
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
2025-11-18 06:24:08 +02:00
Slavi Pantaleev
d05c83d0d5 Bump Anthropic text-generation model for baibot (claude-3-7-sonnet-20250219 -> claude-sonnet-4-5-20250929) 2025-11-18 06:23:47 +02:00
renovate[bot]
97a1562942 chore(deps): update dock.mau.dev/maubot/maubot docker tag to v0.6.0
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled
2025-11-17 18:24:25 +02:00
Benjamin Blacher
346dfbbc07 Add support for signal polls 2025-11-17 18:18:16 +02:00
renovate[bot]
7520469644 chore(deps): update dependency ntfy to v2.15.0-0
Some checks failed
Lock Threads / action (push) Has been cancelled
Matrix CI / yamllint (push) Has been cancelled
Matrix CI / ansible-lint (push) Has been cancelled
Matrix CI / Run pre-commit (push) Has been cancelled
2025-11-17 07:09:53 +02:00
107 changed files with 1261 additions and 225 deletions

View File

@@ -23,7 +23,7 @@ jobs:
if: github.repository == 'spantaleev/matrix-docker-ansible-deploy' if: github.repository == 'spantaleev/matrix-docker-ansible-deploy'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: dessant/lock-threads@v5 - uses: dessant/lock-threads@v6
with: with:
add-issue-labels: 'outdated' add-issue-labels: 'outdated'
process-only: 'issues, prs' process-only: 'issues, prs'

View File

@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out - name: Check out
uses: actions/checkout@v5 uses: actions/checkout@v6
- name: Run yamllint - name: Run yamllint
uses: frenck/action-yamllint@v1.5.0 uses: frenck/action-yamllint@v1.5.0
ansible-lint: ansible-lint:
@@ -23,10 +23,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out - name: Check out
uses: actions/checkout@v5 uses: actions/checkout@v6
- name: Run ansible-lint - name: Run ansible-lint
uses: ansible/ansible-lint@v25.11.0 uses: ansible/ansible-lint@v26.1.1
with: with:
args: "roles/custom" args: "roles/custom"
setup_python: "true" setup_python: "true"
@@ -37,6 +37,6 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v5 uses: actions/checkout@v6
- name: Run pre-commit - name: Run pre-commit
uses: pre-commit/action@v3.0.1 uses: pre-commit/action@v3.0.1

View File

@@ -1,3 +1,19 @@
# 2025-12-09
## Traefik Cert Dumper upgrade
The variable `traefik_certs_dumper_ssl_dir_path` was renamed to `traefik_certs_dumper_ssl_path`. Users who use [their own webserver with Traefik](docs/configuring-playbook-own-webserver.md) may need to adjust their configuration.
The variable `traefik_certs_dumper_dumped_certificates_dir_path` was renamed to `traefik_certs_dumper_dumped_certificates_path`. Users who use [SRV Server Delegation](docs/howto-srv-server-delegation.md) may need to adjust their configuration.
# 2025-11-23
## Matrix.to support
The playbook now supports [Matrix.to](https://github.com/matrix-org/matrix.to) — a simple URL redirection service which powers [matrix.to](https://matrix.to).
To learn more, see our [Setting up Matrix.to](docs/configuring-playbook-matrixto.md) documentation page.
# 2025-11-09 # 2025-11-09
## matrix-appservice-webhooks has been removed from the playbook ## matrix-appservice-webhooks has been removed from the playbook

View File

@@ -179,6 +179,7 @@ Various services that don't fit any other categories.
| [synapse_auto_accept_invite](https://github.com/matrix-org/synapse-auto-accept-invite) | ❌ | Synapse module to automatically accept invites | [Link](docs/configuring-playbook-synapse-auto-accept-invite.md) | | [synapse_auto_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) | | [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 Corporal](https://github.com/devture/matrix-corporal) (advanced) | ❌ | Reconciliator and gateway for a managed Matrix server | [Link](docs/configuring-playbook-matrix-corporal.md) |
| [Matrix.to](https://github.com/matrix-org/matrix.to) | ❌ | Simple URL redirection service for the Matrix ecosystem | [Link](docs/configuring-playbook-matrixto.md) |
| [Etherpad](https://etherpad.org) | ❌ | Open source collaborative text editor | [Link](docs/configuring-playbook-etherpad.md) | | [Etherpad](https://etherpad.org) | ❌ | Open source collaborative text editor | [Link](docs/configuring-playbook-etherpad.md) |
| [Jitsi](https://jitsi.org/) | ❌ | Open source video-conferencing platform | [Link](docs/configuring-playbook-jitsi.md) | | [Jitsi](https://jitsi.org/) | ❌ | Open source video-conferencing platform | [Link](docs/configuring-playbook-jitsi.md) |
| [Cactus Comments](https://cactus.chat) | ❌ | Federated comment system built on Matrix | [Link](docs/configuring-playbook-cactus-comments.md) | | [Cactus Comments](https://cactus.chat) | ❌ | Federated comment system built on Matrix | [Link](docs/configuring-playbook-cactus-comments.md) |

View File

@@ -13,7 +13,7 @@ FluffyChat Web is a cute cross-platform (web, iOS, Android) messenger for Matrix
💡 **Note**: the latest version of FluffyChat Web is also available on the web, hosted by 3rd parties. If you trust giving your credentials to the following 3rd party Single Page Application, you can consider using it from there: 💡 **Note**: the latest version of FluffyChat Web is also available on the web, hosted by 3rd parties. If you trust giving your credentials to the following 3rd party Single Page Application, you can consider using it from there:
- [fluffychat.im](https://fluffychat.im/web), hosted by the [FluffyChat](https://fluffychat.im/) developers - [fluffychat.im](https://fluffychat.im/web), hosted by the [FluffyChat](https://fluffy.chat/) developers
## Adjusting DNS records ## Adjusting DNS records

View File

@@ -57,6 +57,10 @@ This section details what you can expect when switching to the Matrix Authentica
- [Reminder bot](configuring-playbook-bot-matrix-reminder-bot.md) seems to be losing some of its state on each restart and may reschedule old reminders once again - [Reminder bot](configuring-playbook-bot-matrix-reminder-bot.md) seems to be losing some of its state on each restart and may reschedule old reminders once again
- [Postmoogle](./configuring-playbook-bridge-postmoogle.md) works the first time around, but it consistently fails after restarting:
> cannot initialize matrix bot error="olm account is marked as shared, keys seem to have disappeared from the server"
-**Encrypted appservices** do not work yet (related to [MSC4190](https://github.com/matrix-org/matrix-spec-proposals/pull/4190) and [PR 17705 for Synapse](https://github.com/element-hq/synapse/pull/17705)), so all bridges/bots that rely on encryption will fail to start (see [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3658) for Hookshot). You can use these bridges/bots only if you **keep end-to-bridge encryption disabled** (which is the default setting). -**Encrypted appservices** do not work yet (related to [MSC4190](https://github.com/matrix-org/matrix-spec-proposals/pull/4190) and [PR 17705 for Synapse](https://github.com/element-hq/synapse/pull/17705)), so all bridges/bots that rely on encryption will fail to start (see [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3658) for Hookshot). You can use these bridges/bots only if you **keep end-to-bridge encryption disabled** (which is the default setting).
- ⚠️ [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) is **possible**, but requires **some playbook-assisted manual work**. Migration is **reversible with no or minor issues if done quickly enough**, but as users start logging in (creating new login sessions) via the new MAS setup, disabling MAS and reverting back to the Synapse user database will cause these new sessions to break. - ⚠️ [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) is **possible**, but requires **some playbook-assisted manual work**. Migration is **reversible with no or minor issues if done quickly enough**, but as users start logging in (creating new login sessions) via the new MAS setup, disabling MAS and reverting back to the Synapse user database will cause these new sessions to break.

View File

@@ -0,0 +1,68 @@
<!--
SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
SPDX-License-Identifier: AGPL-3.0-or-later
-->
# Setting up Matrix.to (optional)
The playbook can install and configure the [Matrix.to](https://github.com/matrix-org/matrix.to) URL redirection service for you.
See the project's [documentation](https://github.com/matrix-org/matrix.to/blob/main/README.md) to learn what it does and why it might be useful to you.
## Adjusting DNS records
By default, this playbook installs Matrix.to on the `mt.` subdomain (`mt.example.com`) and requires you to create a CNAME record for `mt`, which targets `matrix.example.com`.
When setting, replace `example.com` with your own.
## Adjusting the playbook configuration
To enable Matrix.to, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_matrixto_enabled: true
```
### Adjusting the Matrix.to URL (optional)
By tweaking the `matrix_matrixto_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
Example additional configuration for your `vars.yml` file:
```yaml
# Change the default hostname
matrix_matrixto_hostname: t.example.com
```
After changing the domain, **you may need to adjust your DNS** records to point the Matrix.to domain to the Matrix server.
### Extending the configuration
There are some additional things you may wish to configure about the server.
Take a look at:
- `roles/custom/matrix-matrixto/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
## Installing
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
## Usage
Refer to the project's [documentation](https://github.com/matrix-org/matrix.to/blob/main/README.md) for available parameters, etc.
## Troubleshooting
As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-matrixto`.

View File

@@ -51,7 +51,7 @@ matrix_playbook_reverse_proxy_type: other-traefik-container
# Adjust to point to your Traefik container # Adjust to point to your Traefik container
matrix_playbook_reverse_proxy_hostname: name-of-your-traefik-container matrix_playbook_reverse_proxy_hostname: name-of-your-traefik-container
traefik_certs_dumper_ssl_dir_path: "/path/to/your/traefiks/acme.json/directory" traefik_certs_dumper_ssl_path: "/path/to/your/traefiks/acme.json/directory"
# Uncomment and adjust the variable below if the name of your federation entrypoint is different # Uncomment and adjust the variable below if the name of your federation entrypoint is different
# than the default value (matrix-federation). # than the default value (matrix-federation).

View File

@@ -49,6 +49,23 @@ Regardless of the selected authentication method, the playbook generates secrets
If [Jitsi](configuring-playbook-jitsi.md) is installed, note that switching to `lt-cred-mech` will disable the integration between Jitsi and your coturn server, as Jitsi seems to support the `auth-secret` authentication method only. If [Jitsi](configuring-playbook-jitsi.md) is installed, note that switching to `lt-cred-mech` will disable the integration between Jitsi and your coturn server, as Jitsi seems to support the `auth-secret` authentication method only.
### Customize the Coturn hostname (optional)
By default, Coturn uses the same hostname as your Matrix homeserver (the value of `matrix_server_fqn_matrix`, which is typically `matrix.example.com`).
If you'd like to use a custom subdomain for Coturn (e.g., `turn.example.com` or `t.matrix.example.com`), add the following configuration to your `vars.yml` file:
```yaml
matrix_coturn_hostname: turn.example.com
```
The playbook will automatically:
- Configure Coturn to use this hostname
- Obtain an SSL certificate for the custom domain via Traefik
- Update all TURN URIs to point to the custom domain
**Note**: Make sure the custom hostname resolves to your server's IP address via DNS before running the playbook.
### Use your own external coturn server (optional) ### Use your own external coturn server (optional)
If you'd like to use another TURN server (be it coturn or some other one), add the following configuration to your `vars.yml` file. Make sure to replace `HOSTNAME_OR_IP` with your own. 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.

View File

@@ -247,6 +247,8 @@ Various services that don't fit any other categories.
- [Setting up Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced) - [Setting up Matrix Corporal](configuring-playbook-matrix-corporal.md) (advanced)
- [Setting up Matrix.to](configuring-playbook-matrixto.md)
- [Setting up Etherpad](configuring-playbook-etherpad.md) - [Setting up Etherpad](configuring-playbook-etherpad.md)
- [Setting up the Jitsi video-conferencing platform](configuring-playbook-jitsi.md) - [Setting up the Jitsi video-conferencing platform](configuring-playbook-jitsi.md)

View File

@@ -440,6 +440,19 @@ To prevent double-logging, Docker logging is disabled by explicitly passing `--l
See [this section](maintenance-and-troubleshooting.md#how-to-see-the-logs) on the page for maintenance and troubleshooting for more details to see the logs. See [this section](maintenance-and-troubleshooting.md#how-to-see-the-logs) on the page for maintenance and troubleshooting for more details to see the logs.
### The server fails to start due to the `Unable to start service matrix-coturn.service` error. Why and how to solve it?
The error is most likely because Traefik cannot obtain SSL certificates due to certain reasons such as wrong domain name configuration or port 80 being unavailable due to other services.
If Traefik fails to obtain an SSL certificate for domain names such as `matrix.`, Traefik Certs Dumper cannot extract the SSL certificate out of there, and coturn cannot be started and the error occurs. Refer to these comments for details:
- <https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3957#issuecomment-2599590441>
- <https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4570#issuecomment-3364111466>
If you are not sure what the problem is, at first make sure that you have set the "base domain" (`example.com`, **not `matrix.example.com`**) to `matrix_domain`. You should be able to find it at the top of your `vars.yml`.
If it is correctly specified, look Traefik's logs (`journalctl -fu matrix-traefik.service`) for errors by Let's Encrypt for troubleshooting.
## Miscellaneous ## Miscellaneous
### I would like to see this favorite service of mine integrated and become available on my Matrix server. How can I request it? ### I would like to see this favorite service of mine integrated and become available on my Matrix server. How can I request it?

View File

@@ -112,12 +112,12 @@ matrix_coturn_container_additional_volumes: |
( (
[ [
{ {
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/certificate.crt'), 'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/certificate.crt'),
'dst': '/certificate.crt', 'dst': '/certificate.crt',
'options': 'ro', 'options': 'ro',
}, },
{ {
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/privatekey.key'), 'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/privatekey.key'),
'dst': '/privatekey.key', 'dst': '/privatekey.key',
'options': 'ro', 'options': 'ro',
}, },
@@ -173,12 +173,12 @@ matrix_coturn_container_additional_volumes: |
( (
[ [
{ {
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/certificate.crt'), 'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/certificate.crt'),
'dst': '/certificate.crt', 'dst': '/certificate.crt',
'options': 'ro', 'options': 'ro',
}, },
{ {
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/*.' + matrix_domain + '/privatekey.key'), 'src': (traefik_certs_dumper_dumped_certificates_path + '/*.' + matrix_domain + '/privatekey.key'),
'dst': '/privatekey.key', 'dst': '/privatekey.key',
'options': 'ro', 'options': 'ro',
}, },

View File

@@ -161,6 +161,6 @@ You can then proceed to run the query above.
### Adding/Removing Administrator privileges to an existing user in Matrix Authentication Service ### Adding/Removing Administrator privileges to an existing user in Matrix Authentication Service
Promoting/demoting a user in Matrix Authentication Service cannot currently (2024-10-19) be done via the [`mas-cli` Management tool](./configuring-playbook-matrix-authentication-service.md#management). Promoting/demoting a user in Matrix Authentication Service can be done using the [`mas-cli`](./configuring-playbook-matrix-authentication-service.md#management) management tool's [`manage promote-admin`](https://element-hq.github.io/matrix-authentication-service/reference/cli/manage.html#manage-promote-admin) and [`manage demote-admin`](https://element-hq.github.io/matrix-authentication-service/reference/cli/manage.html#manage-demote-admin) commands. For example: `/matrix/matrix-authentication-service/bin/mas-cli manage promote-admin some.username`.
You can do it via the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html)'s `POST /api/admin/v1/users/{id}/set-admin` endpoint. You can also do it via the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html)'s `POST /api/admin/v1/users/{id}/set-admin` endpoint.

View File

@@ -363,6 +363,8 @@ devture_systemd_service_manager_services_list_auto: |
+ +
([{'name': 'matrix-coturn.service', 'priority': (900 if devture_systemd_service_manager_service_restart_mode == 'clean-stop-start' else 1500), 'groups': ['matrix', 'coturn']}] if matrix_coturn_enabled else []) ([{'name': 'matrix-coturn.service', 'priority': (900 if devture_systemd_service_manager_service_restart_mode == 'clean-stop-start' else 1500), 'groups': ['matrix', 'coturn']}] if matrix_coturn_enabled else [])
+ +
([{'name': 'matrix-matrixto.service', 'priority': 4000, 'groups': ['matrix', 'matrixto']}] if matrix_matrixto_enabled else [])
+
([{'name': 'matrix-rageshake.service', 'priority': 4000, 'groups': ['matrix', 'rageshake']}] if matrix_rageshake_enabled else []) ([{'name': 'matrix-rageshake.service', 'priority': 4000, 'groups': ['matrix', 'rageshake']}] if matrix_rageshake_enabled else [])
+ +
([{'name': 'matrix-coturn-reload.timer', 'priority': 5000, 'groups': ['matrix', 'coturn']}] if (matrix_coturn_enabled and matrix_coturn_tls_enabled) else []) ([{'name': 'matrix-coturn-reload.timer', 'priority': 5000, 'groups': ['matrix', 'coturn']}] if (matrix_coturn_enabled and matrix_coturn_tls_enabled) else [])
@@ -841,6 +843,8 @@ matrix_appservice_irc_container_additional_networks_auto: |-
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network]) ([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
+ +
([postgres_container_network] if (postgres_enabled and matrix_appservice_irc_database_hostname == postgres_connection_hostname and matrix_appservice_irc_container_network != postgres_container_network) else []) ([postgres_container_network] if (postgres_enabled and matrix_appservice_irc_database_hostname == postgres_connection_hostname and matrix_appservice_irc_container_network != postgres_container_network) else [])
+
[matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_appservice_irc_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else []
) | unique ) | unique
}} }}
@@ -858,6 +862,13 @@ matrix_appservice_irc_database_hostname: "{{ postgres_connection_hostname if pos
matrix_appservice_irc_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'as.irc.db', rounds=655555) | to_uuid }}" matrix_appservice_irc_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'as.irc.db', rounds=655555) | to_uuid }}"
matrix_appservice_irc_database_container_network: "{{ postgres_container_network if postgres_enabled else '' }}" matrix_appservice_irc_database_container_network: "{{ postgres_container_network if postgres_enabled else '' }}"
matrix_appservice_irc_ircService_mediaProxy_publicUrl_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" # noqa var-naming
matrix_appservice_irc_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}"
matrix_appservice_irc_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
matrix_appservice_irc_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
matrix_appservice_irc_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" # noqa var-naming
###################################################################### ######################################################################
# #
# /matrix-bridge-appservice-irc # /matrix-bridge-appservice-irc
@@ -2240,8 +2251,8 @@ matrix_postmoogle_container_image_self_build: "{{ matrix_architecture not in ['a
matrix_postmoogle_ssl_path: |- matrix_postmoogle_ssl_path: |-
{{ {{
{ {
'playbook-managed-traefik': (traefik_certs_dumper_dumped_certificates_dir_path if traefik_certs_dumper_enabled else ''), 'playbook-managed-traefik': (traefik_certs_dumper_dumped_certificates_path if traefik_certs_dumper_enabled else ''),
'other-traefik-container': (traefik_certs_dumper_dumped_certificates_dir_path if traefik_certs_dumper_enabled else ''), 'other-traefik-container': (traefik_certs_dumper_dumped_certificates_path if traefik_certs_dumper_enabled else ''),
'none': '', 'none': '',
}[matrix_playbook_reverse_proxy_type] }[matrix_playbook_reverse_proxy_type]
}} }}
@@ -3077,6 +3088,38 @@ matrix_corporal_matrix_registration_shared_secret: "{{ matrix_synapse_registrati
# #
###################################################################### ######################################################################
######################################################################
#
# matrix-matrixto
#
######################################################################
# We don't enable matrixto by default.
matrix_matrixto_enabled: false
matrix_matrixto_base_path: "{{ matrix_base_data_path }}/matrixto"
# The container image is not provided at https://github.com/matrix-org/matrix.to
matrix_matrixto_container_image_self_build: true
matrix_matrixto_hostname: "{{ matrix_server_fqn_matrixto }}"
matrix_matrixto_container_network: matrix-matrixto
matrix_matrixto_container_additional_networks: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if matrix_playbook_reverse_proxyable_services_additional_network else [] }}"
matrix_matrixto_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '5000') if matrix_playbook_service_host_bind_interface_prefix else '' }}"
matrix_matrixto_container_labels_traefik_enabled: "{{ matrix_playbook_traefik_labels_enabled }}"
matrix_matrixto_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
matrix_matrixto_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
matrix_matrixto_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}"
######################################################################
#
# /matrix-matrixto
#
######################################################################
###################################################################### ######################################################################
# #
@@ -3118,6 +3161,8 @@ matrix_rageshake_container_labels_traefik_tls_certResolver: "{{ traefik_certReso
matrix_coturn_enabled: true matrix_coturn_enabled: true
matrix_coturn_hostname: "{{ matrix_server_fqn_matrix }}"
matrix_coturn_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_coturn_docker_image_registry_prefix_upstream_default }}" matrix_coturn_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_coturn_docker_image_registry_prefix_upstream_default }}"
matrix_coturn_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm32', 'arm64'] }}" matrix_coturn_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm32', 'arm64'] }}"
@@ -3157,12 +3202,12 @@ matrix_coturn_container_additional_volumes: |
( (
[ [
{ {
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + matrix_server_fqn_matrix + '/certificate.crt'), 'src': (traefik_certs_dumper_dumped_certificates_path + '/' + matrix_coturn_hostname + '/certificate.crt'),
'dst': '/certificate.crt', 'dst': '/certificate.crt',
'options': 'ro', 'options': 'ro',
}, },
{ {
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + matrix_server_fqn_matrix + '/privatekey.key'), 'src': (traefik_certs_dumper_dumped_certificates_path + '/' + matrix_coturn_hostname + '/privatekey.key'),
'dst': '/privatekey.key', 'dst': '/privatekey.key',
'options': 'ro', 'options': 'ro',
}, },
@@ -3172,7 +3217,7 @@ matrix_coturn_container_additional_volumes: |
matrix_coturn_systemd_required_services_list_auto: | matrix_coturn_systemd_required_services_list_auto: |
{{ {{
([traefik_certs_dumper_identifier + '-wait-for-domain@' + matrix_server_fqn_matrix + '.service'] if matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and matrix_coturn_tls_enabled else []) ([traefik_certs_dumper_identifier + '-wait-for-domain@' + matrix_coturn_hostname + '.service'] if matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and traefik_certs_dumper_enabled and matrix_coturn_tls_enabled else [])
}} }}
###################################################################### ######################################################################
@@ -3612,6 +3657,8 @@ matrix_media_repo_container_additional_networks: |
([postgres_container_network] if (postgres_enabled and matrix_media_repo_database_hostname == postgres_connection_hostname and postgres_container_network != matrix_media_repo_container_network) else []) ([postgres_container_network] if (postgres_enabled and matrix_media_repo_database_hostname == postgres_connection_hostname and postgres_container_network != matrix_media_repo_container_network) else [])
+ +
([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_media_repo_container_labels_traefik_enabled) else []) ([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_media_repo_container_labels_traefik_enabled) else [])
+
([valkey_container_network] if valkey_enabled and matrix_media_repo_redis_enabled else [])
) | unique ) | unique
}} }}
@@ -3677,6 +3724,21 @@ matrix_media_repo_homeservers_auto:
matrix_media_repo_homeserver_federation_enabled: "{{ matrix_homeserver_federation_enabled }}" matrix_media_repo_homeserver_federation_enabled: "{{ matrix_homeserver_federation_enabled }}"
matrix_media_repo_redis_enabled: "{{ valkey_enabled }}"
# Use next redis index since Synapse is on 0. You can chose between index 0 and 15.
matrix_media_repo_redis_database_number: 1
matrix_media_repo_redis_shards: |
{{
([{
'name': 'valkey',
'addr': (valkey_identifier + ':' + valkey_container_http_port | string),
}])
if valkey_enabled and matrix_media_repo_redis_enabled
else []
}}
###################################################################### ######################################################################
# #
# /matrix-media-repo # /matrix-media-repo
@@ -5825,6 +5887,11 @@ traefik_systemd_required_services_list: |
([container_socket_proxy_identifier + '.service'] if container_socket_proxy_enabled else []) ([container_socket_proxy_identifier + '.service'] if container_socket_proxy_enabled else [])
}} }}
traefik_additional_domains_to_obtain_certificates_for_auto: |
{{
([matrix_coturn_hostname] if (matrix_coturn_enabled and matrix_coturn_tls_enabled and matrix_coturn_hostname != matrix_server_fqn_matrix) else [])
}}
######################################################################## ########################################################################
# # # #
# /traefik # # /traefik #
@@ -5847,7 +5914,7 @@ traefik_certs_dumper_base_path: "{{ matrix_base_data_path }}/traefik-certs-dumpe
traefik_certs_dumper_uid: "{{ matrix_user_uid }}" traefik_certs_dumper_uid: "{{ matrix_user_uid }}"
traefik_certs_dumper_gid: "{{ matrix_user_gid }}" traefik_certs_dumper_gid: "{{ matrix_user_gid }}"
traefik_certs_dumper_ssl_dir_path: "{{ traefik_ssl_dir_path if traefik_enabled else '' }}" traefik_certs_dumper_ssl_path: "{{ traefik_ssl_dir_path if traefik_enabled else '' }}"
traefik_certs_dumper_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else traefik_certs_dumper_container_image_registry_prefix_upstream_default }}" traefik_certs_dumper_container_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else traefik_certs_dumper_container_image_registry_prefix_upstream_default }}"
@@ -5956,12 +6023,12 @@ livekit_server_container_additional_volumes_auto: |
( (
[ [
{ {
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + livekit_server_config_turn_domain + '/certificate.crt'), 'src': (traefik_certs_dumper_dumped_certificates_path + '/' + livekit_server_config_turn_domain + '/certificate.crt'),
'dst': livekit_server_config_turn_cert_file, 'dst': livekit_server_config_turn_cert_file,
'options': 'ro', 'options': 'ro',
}, },
{ {
'src': (traefik_certs_dumper_dumped_certificates_dir_path + '/' + livekit_server_config_turn_domain + '/privatekey.key'), 'src': (traefik_certs_dumper_dumped_certificates_path + '/' + livekit_server_config_turn_domain + '/privatekey.key'),
'dst': livekit_server_config_turn_key_file, 'dst': livekit_server_config_turn_key_file,
'options': 'ro', 'options': 'ro',
}, },

View File

@@ -1,9 +1,9 @@
alabaster==1.0.0 alabaster==1.0.0
babel==2.17.0 babel==2.17.0
certifi==2025.11.12 certifi==2026.1.4
charset-normalizer==3.4.4 charset-normalizer==3.4.4
click==8.3.1 click==8.3.1
docutils==0.22.3 docutils==0.22.4
idna==3.11 idna==3.11
imagesize==1.4.1 imagesize==1.4.1
Jinja2==3.1.6 Jinja2==3.1.6
@@ -12,16 +12,16 @@ markdown-it-py==4.0.0
MarkupSafe==3.0.3 MarkupSafe==3.0.3
mdit-py-plugins==0.5.0 mdit-py-plugins==0.5.0
mdurl==0.1.2 mdurl==0.1.2
myst-parser==4.0.1 myst-parser==5.0.0
packaging==25.0 packaging==26.0
Pygments==2.19.2 Pygments==2.19.2
PyYAML==6.0.3 PyYAML==6.0.3
requests==2.32.5 requests==2.32.5
setuptools==80.9.0 setuptools==80.10.2
snowballstemmer==3.0.1 snowballstemmer==3.0.1
Sphinx==8.2.3 Sphinx==9.1.0
sphinx-intl==2.3.2 sphinx-intl==2.3.2
sphinx-markdown-builder==0.6.8 sphinx-markdown-builder==0.6.9
sphinxcontrib-applehelp==2.0.0 sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0 sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0 sphinxcontrib-htmlhelp==2.1.0
@@ -30,4 +30,4 @@ sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0 sphinxcontrib-serializinghtml==2.0.0
tabulate==0.9.0 tabulate==0.9.0
uc-micro-py==1.0.3 uc-micro-py==1.0.3
urllib3==2.5.0 urllib3==2.6.3

View File

@@ -1,61 +1,61 @@
--- ---
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-aux.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-aux.git
version: v1.0.0-5 version: v1.0.0-6
name: auxiliary name: auxiliary
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg.git
version: v1.4.2-2.0.11-1 version: v1.4.3-2.1.1-0
name: backup_borg name: backup_borg
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-container-socket-proxy.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-container-socket-proxy.git
version: v0.4.1-2 version: v0.4.2-1
name: container_socket_proxy name: container_socket_proxy
- src: git+https://github.com/geerlingguy/ansible-role-docker - src: git+https://github.com/geerlingguy/ansible-role-docker
version: 7.8.0 version: 8.0.0
name: docker name: docker
- src: git+https://github.com/devture/com.devture.ansible.role.docker_sdk_for_python.git - src: git+https://github.com/devture/com.devture.ansible.role.docker_sdk_for_python.git
version: 129c8590e106b83e6f4c259649a613c6279e937a version: 542a2d68db4e9a8e9bb4b508052760b900c7dce6
name: docker_sdk_for_python name: docker_sdk_for_python
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-etherpad.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-etherpad.git
version: v2.5.2-2 version: v2.6.1-0
name: etherpad name: etherpad
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay.git
version: v4.98.1-r0-2-2 version: v4.98.1-r0-2-2
name: exim_relay name: exim_relay
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-grafana.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-grafana.git
version: v11.6.5-4 version: v11.6.5-6
name: grafana name: grafana
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-jitsi.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-jitsi.git
version: v10590-0 version: v10710-0
name: jitsi name: jitsi
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server.git
version: v1.9.4-0 version: v1.9.11-0
name: livekit_server name: livekit_server
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-ntfy.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-ntfy.git
version: v2.14.0-3 version: v2.16.0-0
name: ntfy name: ntfy
- src: git+https://github.com/devture/com.devture.ansible.role.playbook_help.git - src: git+https://github.com/devture/com.devture.ansible.role.playbook_help.git
version: 7663e3114513e56f28d3ed762059b445c678a71a version: 8630e4f1749bcb659c412820f754473f09055052
name: playbook_help name: playbook_help
- src: git+https://github.com/devture/com.devture.ansible.role.playbook_runtime_messages.git - src: git+https://github.com/devture/com.devture.ansible.role.playbook_runtime_messages.git
version: 9b4b088c62b528b73a9a7c93d3109b091dd42ec6 version: 9b4b088c62b528b73a9a7c93d3109b091dd42ec6
name: playbook_runtime_messages name: playbook_runtime_messages
- src: git+https://github.com/devture/com.devture.ansible.role.playbook_state_preserver.git - src: git+https://github.com/devture/com.devture.ansible.role.playbook_state_preserver.git
version: ff2fd42e1c1a9e28e3312bbd725395f9c2fc7f16 version: dd6e15246b7a9a2d921e0b3f9cd8a4a917a1bb2f
name: playbook_state_preserver name: playbook_state_preserver
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres.git
version: v18.1-0 version: v18.1-3
name: postgres name: postgres
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup.git
version: v18-0 version: v18-0
name: postgres_backup name: postgres_backup
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus.git
version: v3.7.3-1 version: v3.9.1-0
name: prometheus name: prometheus
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter.git
version: v1.9.1-12 version: v1.9.1-13
name: prometheus_node_exporter name: prometheus_node_exporter
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter.git
version: v0.18.1-1 version: v0.18.1-2
name: prometheus_postgres_exporter name: prometheus_postgres_exporter
- src: git+https://github.com/devture/com.devture.ansible.role.systemd_docker_base.git - src: git+https://github.com/devture/com.devture.ansible.role.systemd_docker_base.git
version: v1.4.1-0 version: v1.4.1-0
@@ -64,14 +64,14 @@
version: v1.0.0-4 version: v1.0.0-4
name: systemd_service_manager name: systemd_service_manager
- src: git+https://github.com/devture/com.devture.ansible.role.timesync.git - src: git+https://github.com/devture/com.devture.ansible.role.timesync.git
version: v1.1.0-0 version: v1.1.0-1
name: timesync name: timesync
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik.git
version: v3.6.1-0 version: v3.6.7-1
name: traefik name: traefik
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik-certs-dumper.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik-certs-dumper.git
version: v2.10.0-2 version: v2.10.0-4
name: traefik_certs_dumper name: traefik_certs_dumper
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-valkey.git - src: git+https://github.com/mother-of-all-self-hosting/ansible-role-valkey.git
version: v9-0 version: v9.0.1-0
name: valkey name: valkey

View File

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

View File

@@ -12,7 +12,7 @@
matrix_appservice_draupnir_for_all_enabled: true matrix_appservice_draupnir_for_all_enabled: true
# renovate: datasource=docker depName=gnuxie/draupnir # renovate: datasource=docker depName=gnuxie/draupnir
matrix_appservice_draupnir_for_all_version: "v2.7.1" 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: false
matrix_appservice_draupnir_for_all_container_image_self_build_repo: "https://github.com/the-draupnir-project/Draupnir.git" matrix_appservice_draupnir_for_all_container_image_self_build_repo: "https://github.com/the-draupnir-project/Draupnir.git"

View File

@@ -13,7 +13,7 @@
with_items: with_items:
- "matrix_appservice_draupnir_for_all_config_adminRoom" - "matrix_appservice_draupnir_for_all_config_adminRoom"
- "matrix_bot_draupnir_container_network" - "matrix_bot_draupnir_container_network"
when: "vars[item] == '' or vars[item] is none" when: "lookup('vars', item, default='') == '' or lookup('vars', item, default='') is none"
- name: (Deprecation) Catch and report renamed matrix-appservice-draupnir-for-all settings - name: (Deprecation) Catch and report renamed matrix-appservice-draupnir-for-all settings
ansible.builtin.fail: ansible.builtin.fail:

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" 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 # renovate: datasource=docker depName=ghcr.io/element-hq/matrix-authentication-service
matrix_authentication_service_version: 1.6.0 matrix_authentication_service_version: 1.10.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: "{{ '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: "{{ matrix_authentication_service_container_image_registry_prefix_upstream_default }}"
matrix_authentication_service_container_image_registry_prefix_upstream_default: "ghcr.io/" matrix_authentication_service_container_image_registry_prefix_upstream_default: "ghcr.io/"

View File

@@ -19,7 +19,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item.name }}`). You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and vars[item.name] | string | length == 0" when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items: with_items:
- {'name': 'matrix_authentication_service_syn2mas_synapse_homeserver_config_path', when: true} - {'name': 'matrix_authentication_service_syn2mas_synapse_homeserver_config_path', when: true}

View File

@@ -9,7 +9,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item.name }}`). You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and vars[item.name] | string | length == 0" when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items: with_items:
- {'name': 'matrix_authentication_service_hostname', when: true} - {'name': 'matrix_authentication_service_hostname', when: true}
- {'name': 'matrix_authentication_service_config_database_username', when: true} - {'name': 'matrix_authentication_service_config_database_username', when: true}

View File

@@ -148,6 +148,9 @@ matrix_server_fqn_ntfy: "ntfy.{{ matrix_domain }}"
# This is where you access rageshake. # This is where you access rageshake.
matrix_server_fqn_rageshake: "rageshake.{{ matrix_domain }}" matrix_server_fqn_rageshake: "rageshake.{{ matrix_domain }}"
# This is where you access Matrix.to.
matrix_server_fqn_matrixto: "mt.{{ matrix_domain }}"
matrix_federation_public_port: 8448 matrix_federation_public_port: 8448
# The name of the Traefik entrypoint for handling Matrix Federation # The name of the Traefik entrypoint for handling Matrix Federation
@@ -270,7 +273,7 @@ matrix_metrics_exposure_http_basic_auth_users: ''
# - nevertheless, the playbook expects that you would install Traefik yourself via other means # - nevertheless, the playbook expects that you would install Traefik yourself via other means
# - you should make sure your Traefik configuration is compatible with what the playbook would have configured (web, web-secure, matrix-federation entrypoints, etc.) # - you should make sure your Traefik configuration is compatible with what the playbook would have configured (web, web-secure, matrix-federation entrypoints, etc.)
# - you need to set `matrix_playbook_reverse_proxyable_services_additional_network` to the name of your Traefik network # - you need to set `matrix_playbook_reverse_proxyable_services_additional_network` to the name of your Traefik network
# - Traefik certs dumper will be enabled by default (`traefik_certs_dumper_enabled`). You need to point it to your Traefik's SSL certificates (`traefik_certs_dumper_ssl_dir_path`) # - Traefik certs dumper will be enabled by default (`traefik_certs_dumper_enabled`). You need to point it to your Traefik's SSL certificates (`traefik_certs_dumper_ssl_path`)
# #
# - `none` # - `none`
# - no reverse-proxy will be installed # - no reverse-proxy will be installed
@@ -388,7 +391,8 @@ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled: "{{ matri
matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name: matrix-internal-matrix-client-api matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name: matrix-internal-matrix-client-api
matrix_playbook_internal_matrix_client_api_traefik_entrypoint_port: 8008 matrix_playbook_internal_matrix_client_api_traefik_entrypoint_port: 8008
matrix_playbook_internal_matrix_client_api_traefik_entrypoint_host_bind_port: '' matrix_playbook_internal_matrix_client_api_traefik_entrypoint_host_bind_port: ''
matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_auto | combine(matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_custom, recursive=True) }}" matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config: "{{ (matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_default | combine(matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_auto)) | combine(matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_custom, recursive=True) }}"
matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_default: {}
matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_auto: {} matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_auto: {}
matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_custom: {} matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_custom: {}

View File

@@ -36,6 +36,11 @@
- {'old': 'matrix_container_global_registry_prefix', 'new': '<no global variable anymore; you need to override the `_registry_prefix` variable in each component separately>'} - {'old': 'matrix_container_global_registry_prefix', 'new': '<no global variable anymore; you need to override the `_registry_prefix` variable in each component separately>'}
- {'old': 'matrix_user_username', 'new': 'matrix_user_name'} - {'old': 'matrix_user_username', 'new': 'matrix_user_name'}
- {'old': 'matrix_user_groupname', 'new': 'matrix_group_name'} - {'old': 'matrix_user_groupname', 'new': 'matrix_group_name'}
- {'old': 'matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedSlash', 'new': '<removed>'}
- {'old': 'matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedHash', 'new': '<removed>'}
- {'old': 'matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedSlash', 'new': '<removed>'}
- {'old': 'matrix_playbook_internal_matrix_client_api_traefik_entrypoint_config_http_encodedCharacters_allowEncodedHash', 'new': '<removed>'}
# We have a dedicated check for this variable, because we'd like to have a custom (friendlier) message. # We have a dedicated check for this variable, because we'd like to have a custom (friendlier) message.
- name: Fail if matrix_homeserver_generic_secret_key is undefined - name: Fail if matrix_homeserver_generic_secret_key is undefined

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" matrix_bot_baibot_container_src_files_path: "{{ matrix_base_data_path }}/baibot/container-src"
# renovate: datasource=docker depName=ghcr.io/etkecc/baibot # renovate: datasource=docker depName=ghcr.io/etkecc/baibot
matrix_bot_baibot_version: v1.8.1 matrix_bot_baibot_version: v1.13.0
matrix_bot_baibot_container_image: "{{ matrix_bot_baibot_container_image_registry_prefix }}etkecc/baibot:{{ matrix_bot_baibot_version }}" 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: "{{ 'localhost/' if matrix_bot_baibot_container_image_self_build else matrix_bot_baibot_container_image_registry_prefix_upstream }}"
matrix_bot_baibot_container_image_registry_prefix_upstream: "{{ matrix_bot_baibot_container_image_registry_prefix_upstream_default }}" matrix_bot_baibot_container_image_registry_prefix_upstream: "{{ matrix_bot_baibot_container_image_registry_prefix_upstream_default }}"
@@ -70,6 +70,23 @@ matrix_bot_baibot_config_user_password: ''
# Also see: `matrix_bot_baibot_config_user_mxid_localpart` # Also see: `matrix_bot_baibot_config_user_mxid_localpart`
matrix_bot_baibot_config_user_name: baibot matrix_bot_baibot_config_user_name: baibot
# Controls the `user.avatar` configuration setting.
#
# An optional path to an image file to be used as a custom avatar image.
# This path should be an in-container path (e.g., `/data/avatar.png`).
# Any type of content type is supported, but stick to common image formats (PNG, JPG, ..) for better compatibility with various Matrix clients.
#
# To use a custom avatar:
# - Use the auxiliary role (`aux_` variables) to upload your avatar file to the server (e.g. to {{ matrix_bot_baibot_data_path }}/avatar.png on the host),
# or do it any other way (without Ansible) you prefer
# - Set this variable to something like `/data/avatar.png` (the in-container path)
#
# Possible values:
# - null or empty string: use the default baibot avatar
# - "keep": don't touch the avatar, keep whatever is already set (useful if you manage the avatar via other means)
# - any other value: path to a custom avatar image file (must be an in-container path like `/data/avatar.png`)
matrix_bot_baibot_config_user_avatar: null
# Controls the `user.encryption.recovery_passphrase` configuration setting. # Controls the `user.encryption.recovery_passphrase` configuration setting.
# #
# An optional passphrase to use for backing up and recovering the bot's encryption keys. # An optional passphrase to use for backing up and recovering the bot's encryption keys.
@@ -204,8 +221,8 @@ matrix_bot_baibot_config_agents_static_definitions_anthropic_config_base_url: ht
matrix_bot_baibot_config_agents_static_definitions_anthropic_config_api_key: "" matrix_bot_baibot_config_agents_static_definitions_anthropic_config_api_key: ""
matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_enabled: true matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_enabled: true
# For valid model choices, see: https://platform.anthropic.com/docs/models # For valid model choices, see: https://docs.claude.com/en/docs/about-claude/models/overview
matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_model_id: claude-3-7-sonnet-20250219 matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_model_id: claude-sonnet-4-5-20250929
# The prompt text to use (can be null or empty to not use a prompt). # The prompt text to use (can be null or empty to not use a prompt).
# See: https://huggingface.co/docs/transformers/en/tasks/prompting # See: https://huggingface.co/docs/transformers/en/tasks/prompting
matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}" matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
@@ -368,7 +385,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 matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_enabled: true
# For valid model choices, see: https://platform.openai.com/docs/models # 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 matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-5.2
# The prompt text to use (can be null or empty to not use a prompt). # The prompt text to use (can be null or empty to not use a prompt).
# See: https://huggingface.co/docs/transformers/en/tasks/prompting # 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 }}" matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
@@ -389,7 +406,7 @@ matrix_bot_baibot_config_agents_static_definitions_openai_config_text_to_speech_
matrix_bot_baibot_config_agents_static_definitions_openai_config_text_to_speech_response_format: opus matrix_bot_baibot_config_agents_static_definitions_openai_config_text_to_speech_response_format: opus
matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_enabled: true matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_enabled: true
matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_model_id: gpt-image-1 matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_model_id: gpt-image-1.5
matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_style: null matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_style: null
matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_size: null matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_size: null
matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_quality: null matrix_bot_baibot_config_agents_static_definitions_openai_config_image_generation_quality: null

View File

@@ -21,6 +21,12 @@ user:
# Leave empty to use the default (baibot). # Leave empty to use the default (baibot).
name: {{ matrix_bot_baibot_config_user_name | to_json }} name: {{ matrix_bot_baibot_config_user_name | to_json }}
# An optional path to an image file to be used as a custom avatar image.
# - null or empty string: use the default avatar
# - "keep": don't touch the avatar, keep whatever is already set
# - any other value: path to a custom avatar image file
avatar: {{ matrix_bot_baibot_config_user_avatar | to_json }}
encryption: encryption:
# An optional passphrase to use for backing up and recovering the bot's encryption keys. # An optional passphrase to use for backing up and recovering the bot's encryption keys.
# You can use any string here. # You can use any string here.

View File

@@ -12,7 +12,7 @@
matrix_bot_draupnir_enabled: true matrix_bot_draupnir_enabled: true
# renovate: datasource=docker depName=gnuxie/draupnir # renovate: datasource=docker depName=gnuxie/draupnir
matrix_bot_draupnir_version: "v2.7.1" matrix_bot_draupnir_version: "v2.9.0"
matrix_bot_draupnir_container_image_self_build: false 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_container_image_self_build_repo: "https://github.com/the-draupnir-project/Draupnir.git"
@@ -101,7 +101,7 @@ matrix_bot_draupnir_password: "{{ matrix_bot_draupnir_pantalaimon_password }}"
# Controls if we activate the config block for Pantalaimon for now. Its name will # Controls if we activate the config block for Pantalaimon for now. Its name will
# probably be changed for our usecase due to Draupnir's push to scrub Pantalaimon from the codebase. # probably be changed for our usecase due to Draupnir's push to scrub Pantalaimon from the codebase.
# This configuration option does not follow the common naming schema as its not controlling a config key directly. # This configuration option does not follow the common naming schema as its not controlling a config key directly.
matrix_bot_draupnir_login_native: "" matrix_bot_draupnir_login_native: false
# The room ID where people can use the bot. The bot has no access controls, so # The room ID where people can use the bot. The bot has no access controls, so
# anyone in this room can use the bot - secure your room! # anyone in this room can use the bot - secure your room!

View File

@@ -44,7 +44,7 @@
- {'name': 'matrix_bot_draupnir_config_rawHomeserverUrl', when: true} - {'name': 'matrix_bot_draupnir_config_rawHomeserverUrl', when: true}
- {'name': 'matrix_bot_draupnir_pantalaimon_username', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"} - {'name': 'matrix_bot_draupnir_pantalaimon_username', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"}
- {'name': 'matrix_bot_draupnir_pantalaimon_password', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"} - {'name': 'matrix_bot_draupnir_pantalaimon_password', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"}
when: "item.when | bool and (vars[item.name] == '' or vars[item.name] is none)" when: "item.when | bool and (lookup('vars', item.name, default='') == '' or lookup('vars', item.name, default='') is none)"
- name: Fail if Draupnir room hijacking enabled without enabling the Synapse Admin API - name: Fail if Draupnir room hijacking enabled without enabling the Synapse Admin API
ansible.builtin.fail: ansible.builtin.fail:
@@ -57,7 +57,7 @@
with_items: with_items:
- {'name': 'matrix_bot_draupnir_config_accessToken', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"} - {'name': 'matrix_bot_draupnir_config_accessToken', when: "{{ matrix_bot_draupnir_pantalaimon_use }}"}
- {'name': 'matrix_bot_draupnir_config_accessToken', when: "{{ matrix_bot_draupnir_login_native }}"} - {'name': 'matrix_bot_draupnir_config_accessToken', when: "{{ matrix_bot_draupnir_login_native }}"}
when: "item.when | bool and not (vars[item.name] == '' or vars[item.name] is none)" when: "item.when | bool and not (lookup('vars', item.name, default='') == '' or lookup('vars', item.name, default='') is none)"
- name: Fail when matrix_bot_draupnir_config_experimentalRustCrypto is enabled together with matrix_bot_draupnir_pantalaimon_use - name: Fail when matrix_bot_draupnir_config_experimentalRustCrypto is enabled together with matrix_bot_draupnir_pantalaimon_use
ansible.builtin.fail: ansible.builtin.fail:

View File

@@ -10,7 +10,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_bot_matrix_registration_bot_bot_password" - "matrix_bot_matrix_registration_bot_bot_password"
- "matrix_bot_matrix_registration_bot_api_base_url" - "matrix_bot_matrix_registration_bot_api_base_url"

View File

@@ -30,7 +30,7 @@ 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_docker_repo_version: "{{ 'master' if matrix_bot_maubot_version == 'latest' else matrix_bot_maubot_version }}"
# renovate: datasource=docker depName=dock.mau.dev/maubot/maubot # renovate: datasource=docker depName=dock.mau.dev/maubot/maubot
matrix_bot_maubot_version: v0.5.2 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: "{{ 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: "{{ '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: "{{ matrix_bot_maubot_docker_image_registry_prefix_upstream_default }}"

View File

@@ -18,14 +18,14 @@
- {'name': 'matrix_bot_mjolnir_raw_homeserver_url', when: true} - {'name': 'matrix_bot_mjolnir_raw_homeserver_url', when: true}
- {'name': 'matrix_bot_mjolnir_pantalaimon_username', when: "{{ matrix_bot_mjolnir_pantalaimon_use }}"} - {'name': 'matrix_bot_mjolnir_pantalaimon_username', when: "{{ matrix_bot_mjolnir_pantalaimon_use }}"}
- {'name': 'matrix_bot_mjolnir_pantalaimon_password', when: "{{ matrix_bot_mjolnir_pantalaimon_use }}"} - {'name': 'matrix_bot_mjolnir_pantalaimon_password', when: "{{ matrix_bot_mjolnir_pantalaimon_use }}"}
when: "item.when | bool and (vars[item.name] == '' or vars[item.name] is none)" when: "item.when | bool and (lookup('vars', item.name, default='') == '' or lookup('vars', item.name, default='') is none)"
- name: Fail if inappropriate variables are defined - name: Fail if inappropriate variables are defined
ansible.builtin.fail: ansible.builtin.fail:
msg: "The `{{ item.name }}` variable must be undefined or have a null value." msg: "The `{{ item.name }}` variable must be undefined or have a null value."
with_items: with_items:
- {'name': 'matrix_bot_mjolnir_access_token', when: "{{ matrix_bot_mjolnir_pantalaimon_use }}"} - {'name': 'matrix_bot_mjolnir_access_token', when: "{{ matrix_bot_mjolnir_pantalaimon_use }}"}
when: "item.when | bool and not (vars[item.name] == '' or vars[item.name] is none)" when: "item.when | bool and not (lookup('vars', item.name, default='') == '' or lookup('vars', item.name, default='') is none)"
- name: (Deprecation) Catch and report renamed Mjolnir settings - name: (Deprecation) Catch and report renamed Mjolnir settings
ansible.builtin.fail: ansible.builtin.fail:

View File

@@ -8,7 +8,7 @@
# SPDX-FileCopyrightText: 2019 Lyubomir Popov # SPDX-FileCopyrightText: 2019 Lyubomir Popov
# SPDX-FileCopyrightText: 2019 Sylvia van Os # SPDX-FileCopyrightText: 2019 Sylvia van Os
# SPDX-FileCopyrightText: 2020 John Goerzen # SPDX-FileCopyrightText: 2020 John Goerzen
# SPDX-FileCopyrightText: 2021 - 2023 Thom Wiggers # SPDX-FileCopyrightText: 2021 - 2026 Thom Wiggers
# SPDX-FileCopyrightText: 2021 Ahmad Haghighi # SPDX-FileCopyrightText: 2021 Ahmad Haghighi
# SPDX-FileCopyrightText: 2021 Joseph Walton-Rivers # SPDX-FileCopyrightText: 2021 Joseph Walton-Rivers
# SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis # SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis
@@ -33,7 +33,7 @@ matrix_appservice_irc_docker_src_files_path: "{{ matrix_base_data_path }}/appser
# matrix_appservice_irc_version used to contain the full Docker image tag (e.g. `release-X.X.X`). # matrix_appservice_irc_version used to contain the full Docker image tag (e.g. `release-X.X.X`).
# It's a bare version number now. We try to somewhat retain compatibility below. # It's a bare version number now. We try to somewhat retain compatibility below.
# renovate: datasource=docker depName=docker.io/matrixdotorg/matrix-appservice-irc # renovate: datasource=docker depName=docker.io/matrixdotorg/matrix-appservice-irc
matrix_appservice_irc_version: 1.0.1 matrix_appservice_irc_version: 4.0.0
matrix_appservice_irc_docker_image: "{{ matrix_appservice_irc_docker_image_registry_prefix }}matrixdotorg/matrix-appservice-irc:{{ matrix_appservice_irc_docker_image_tag }}" matrix_appservice_irc_docker_image: "{{ matrix_appservice_irc_docker_image_registry_prefix }}matrixdotorg/matrix-appservice-irc:{{ matrix_appservice_irc_docker_image_tag }}"
matrix_appservice_irc_docker_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_irc_container_image_self_build else matrix_appservice_irc_docker_image_registry_prefix_upstream }}" matrix_appservice_irc_docker_image_registry_prefix: "{{ 'localhost/' if matrix_appservice_irc_container_image_self_build else matrix_appservice_irc_docker_image_registry_prefix_upstream }}"
matrix_appservice_irc_docker_image_registry_prefix_upstream: "{{ matrix_appservice_irc_docker_image_registry_prefix_upstream_default }}" matrix_appservice_irc_docker_image_registry_prefix_upstream: "{{ matrix_appservice_irc_docker_image_registry_prefix_upstream_default }}"
@@ -46,8 +46,15 @@ matrix_appservice_irc_config_path: "{{ matrix_appservice_irc_base_path }}/config
matrix_appservice_irc_data_path: "{{ matrix_appservice_irc_base_path }}/data" matrix_appservice_irc_data_path: "{{ matrix_appservice_irc_base_path }}/data"
matrix_appservice_irc_homeserver_url: "" matrix_appservice_irc_homeserver_url: ""
matrix_appservice_irc_homeserver_media_url: '{{ matrix_homeserver_url }}'
matrix_appservice_irc_homeserver_domain: '{{ matrix_domain }}' matrix_appservice_irc_homeserver_domain: '{{ matrix_domain }}'
# ircService.mediaProxy configuration for serving publicly accessible URLs to authenticated Matrix media
matrix_appservice_irc_ircService_mediaProxy_bindPort: 11111 # noqa var-naming
matrix_appservice_irc_ircService_mediaProxy_publicUrl_scheme: https # noqa var-naming
matrix_appservice_irc_ircService_mediaProxy_publicUrl_hostname: '{{ matrix_server_fqn_matrix }}' # noqa var-naming
matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix: '/irc/' # noqa var-naming
matrix_appservice_irc_ircService_mediaProxy_publicUrl: "{{ matrix_appservice_irc_ircService_mediaProxy_publicUrl_scheme }}://{{ matrix_appservice_irc_ircService_mediaProxy_publicUrl_hostname }}{{ matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix }}" # noqa var-naming
matrix_appservice_irc_homeserver_enablePresence: true # noqa var-naming matrix_appservice_irc_homeserver_enablePresence: true # noqa var-naming
matrix_appservice_irc_appservice_address: 'http://matrix-appservice-irc:9999' matrix_appservice_irc_appservice_address: 'http://matrix-appservice-irc:9999'
@@ -89,20 +96,25 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # It is also used in the Third Party Lookup API as the instance `desc` # # It is also used in the Third Party Lookup API as the instance `desc`
# # property, where each server is an instance. # # property, where each server is an instance.
# name: "ExampleNet" # name: "ExampleNet"
# # Additional addresses to connect to, used for load balancing between IRCDs.
# additionalAddresses: [ "irc2.example.com" ] # additionalAddresses: [ "irc2.example.com" ]
# # Typically additionalAddresses would be in addition to the address key given above,
# # but some configurations wish to exclusively use additional addresses while reserving
# # the top key for identification purposes. Set this to true to exclusively use the
# # additionalAddresses array when connecting to servers.
# onlyAdditionalAddresses: false
# # # #
# # [DEPRECATED] Use `name`, above, instead. # # [DEPRECATED] Use `name`, above, instead.
# # A human-readable description string # # A human-readable description string
# # description: "Example.com IRC network" # # description: "Example.com IRC network"
#
# # An ID for uniquely identifying this server amongst other servers being bridged. # # An ID for uniquely identifying this server amongst other servers being bridged.
# # networkId: "example" # # networkId: "example"
#
# # URL to an icon used as the network icon whenever this network appear in # # MXC URL to an icon used as the network icon whenever this network appear in
# # a network list. (Like in the Riot room directory, for instance.) # # a network list. (Like in the Element room directory, for instance.)
# # icon: https://example.com/images/hash.png # # icon: mxc://matrix.org/LpsSLrbANVrEIEOgEaVteItf
#
# # The port to connect to. Optional. # # The port to connect to. Optional.
# port: 6697 # port: 6697
# # Whether to use SSL or not. Default: false. # # Whether to use SSL or not. Default: false.
@@ -115,19 +127,26 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # Whether to allow expired certs when connecting to the IRC server. # # Whether to allow expired certs when connecting to the IRC server.
# # Usually this should be off. Default: false. # # Usually this should be off. Default: false.
# allowExpiredCerts: false # allowExpiredCerts: false
# # A specific CA to trust instead of the default CAs. Optional. #
# #ca: | # # Set additional TLS options for the connections to the IRC server.
# # -----BEGIN CERTIFICATE----- # #tlsOptions:
# # … # # A specific CA to trust instead of the default CAs. Optional.
# # -----END CERTIFICATE----- # #ca: |
# # -----BEGIN CERTIFICATE-----
# # ...
# # -----END CERTIFICATE-----
# # Server name for the SNI (Server Name Indication) TLS extension. If the address you
# # are using does not report the correct certificate name, you can override it here.
# # servername: real.server.name
# # ...or any options in https://nodejs.org/api/tls.html#tls_tls_connect_options_callback
#
# # # #
# # The connection password to send for all clients as a PASS (or SASL, if enabled above) command. Optional. # # The connection password to send for all clients as a PASS (or SASL, if enabled above) command. Optional.
# # password: 'pa$$w0rd' # # password: 'pa$$w0rd'
# # # #
# # Whether or not to send connection/error notices to real Matrix users. Default: true. # # Whether or not to send connection/error notices to real Matrix users. Default: true.
# sendConnectionMessages: true # sendConnectionMessages: true
#
# quitDebounce: # quitDebounce:
# # Whether parts due to net-splits are debounced for delayMs, to allow # # Whether parts due to net-splits are debounced for delayMs, to allow
# # time for the netsplit to resolve itself. A netsplit is detected as being # # time for the netsplit to resolve itself. A netsplit is detected as being
@@ -147,13 +166,13 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# delayMinMs: 3600000 # 1h # delayMinMs: 3600000 # 1h
# # Default: 7200000, = 2h # # Default: 7200000, = 2h
# delayMaxMs: 7200000 # 2h # delayMaxMs: 7200000 # 2h
#
# # A map for conversion of IRC user modes to Matrix power levels. This enables bridging # # A map for conversion of IRC user modes to Matrix power levels. This enables bridging
# # of IRC ops to Matrix power levels only, it does not enable the reverse. If a user has # # of IRC ops to Matrix power levels only, it does not enable the reverse. If a user has
# # been given multiple modes, the one that maps to the highest power level will be used. # # been given multiple modes, the one that maps to the highest power level will be used.
# modePowerMap: # modePowerMap:
# o: 50 # o: 50
# v: 1
# botConfig: # botConfig:
# # Enable the presence of the bot in IRC channels. The bot serves as the entity # # Enable the presence of the bot in IRC channels. The bot serves as the entity
# # which maps from IRC -> Matrix. You can disable the bot entirely which # # which maps from IRC -> Matrix. You can disable the bot entirely which
@@ -176,6 +195,8 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# enabled: true # enabled: true
# # The nickname to give the AS bot. # # The nickname to give the AS bot.
# nick: "MatrixBot" # nick: "MatrixBot"
# # The username to give to the AS bot. Defaults to "matrixbot"
# username: "matrixbot"
# # The password to give to NickServ or IRC Server for this nick. Optional. # # The password to give to NickServ or IRC Server for this nick. Optional.
# # password: "helloworld" # # password: "helloworld"
# # # #
@@ -184,7 +205,7 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # real Matrix users in them, even if there is a mapping for the channel. # # real Matrix users in them, even if there is a mapping for the channel.
# # Default: true # # Default: true
# joinChannelsIfNoUsers: true # joinChannelsIfNoUsers: true
#
# # Configuration for PMs / private 1:1 communications between users. # # Configuration for PMs / private 1:1 communications between users.
# privateMessages: # privateMessages:
# # Enable the ability for PMs to be sent to/from IRC/Matrix. # # Enable the ability for PMs to be sent to/from IRC/Matrix.
@@ -193,12 +214,12 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # Prevent Matrix users from sending PMs to the following IRC nicks. # # Prevent Matrix users from sending PMs to the following IRC nicks.
# # Optional. Default: []. # # Optional. Default: [].
# # exclude: ["Alice", "Bob"] # NOT YET IMPLEMENTED # # exclude: ["Alice", "Bob"] # NOT YET IMPLEMENTED
#
# # Should created Matrix PM rooms be federated? If false, only users on the # # Should created Matrix PM rooms be federated? If false, only users on the
# # HS attached to this AS will be able to interact with this room. # # HS attached to this AS will be able to interact with this room.
# # Optional. Default: true. # # Optional. Default: true.
# federate: true # federate: true
#
# # Configuration for mappings not explicitly listed in the 'mappings' # # Configuration for mappings not explicitly listed in the 'mappings'
# # section. # # section.
# dynamicChannels: # dynamicChannels:
@@ -212,27 +233,34 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # Should the AS publish the new Matrix room to the public room list so # # Should the AS publish the new Matrix room to the public room list so
# # anyone can see it? Default: true. # # anyone can see it? Default: true.
# published: true # published: true
# # Publish the rooms to the homeserver directory, as oppose to the appservice
# # room directory. Only used if `published` is on.
# # Default: false
# useHomeserverDirectory: true
# # What should the join_rule be for the new Matrix room? If 'public', # # What should the join_rule be for the new Matrix room? If 'public',
# # anyone can join the room. If 'invite', only users with an invite can # # anyone can join the room. If 'invite', only users with an invite can
# # join the room. Note that if an IRC channel has +k or +i set on it, # # join the room. Note that if an IRC channel has +k or +i set on it,
# # join_rules will be set to 'invite' until these modes are removed. # # join_rules will be set to 'invite' until these modes are removed.
# # Default: "public". # # Default: "public".
# joinRule: public # joinRule: public
# # This will set the m.room.related_groups state event in newly created rooms
# # with the given groupId. This means flares will show up on IRC users in those rooms.
# # This should be set to the same thing as namespaces.users.group_id in irc_registration.
# # This does not alter existing rooms.
# # Leaving this option empty will not set the event.
# groupId: +myircnetwork:localhost
# # Should created Matrix rooms be federated? If false, only users on the # # Should created Matrix rooms be federated? If false, only users on the
# # HS attached to this AS will be able to interact with this room. # # HS attached to this AS will be able to interact with this room.
# # Default: true. # # Default: true.
# federate: true # federate: true
# # Force this room version when creating IRC channels. Beware if the homeserver doesn't
# # support the room version then the request will fail. By default, no version is requested.
# # roomVersion: "1"
# # The room alias template to apply when creating new aliases. This only # # The room alias template to apply when creating new aliases. This only
# # applies if createAlias is 'true'. The following variables are exposed: # # applies if createAlias is 'true'. The following variables are exposed:
# # $SERVER => The IRC server address (e.g. "irc.example.com") # # $SERVER => The IRC server address (e.g. "irc.example.com")
# # $CHANNEL => The IRC channel (e.g. "#python") # # $CHANNEL => The IRC channel (e.g. "#python")
# # This MUST have $CHANNEL somewhere in it. # # This MUST have $CHANNEL somewhere in it.
# #
# # In certain circumstances you might want to bridge your whole IRC network as a
# # homeserver (e.g. #matrix:libera.chat). For these use cases, you can set the
# # template to just be $CHANNEL. Doing so will preclude you from supporting
# # other prefix characters though.
# #
# # Default: '#irc_$SERVER_$CHANNEL' # # Default: '#irc_$SERVER_$CHANNEL'
# aliasTemplate: "#irc_$CHANNEL" # aliasTemplate: "#irc_$CHANNEL"
# # A list of user IDs which the AS bot will send invites to in response # # A list of user IDs which the AS bot will send invites to in response
@@ -244,7 +272,11 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # Prevent the given list of channels from being mapped under any # # Prevent the given list of channels from being mapped under any
# # circumstances. # # circumstances.
# # exclude: ["#foo", "#bar"] # # exclude: ["#foo", "#bar"]
#
# # excludedUsers:
# # - regex: "@.*:evilcorp.com"
# # kickReason: "We don't like Evilcorp"
#
# # Configuration for controlling how Matrix and IRC membership lists are # # Configuration for controlling how Matrix and IRC membership lists are
# # synced. # # synced.
# membershipLists: # membershipLists:
@@ -253,12 +285,12 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # synced. This must be enabled for anything else in this section to take # # synced. This must be enabled for anything else in this section to take
# # effect. Default: false. # # effect. Default: false.
# enabled: false # enabled: false
#
# # Syncing membership lists at startup can result in hundreds of members to # # Syncing membership lists at startup can result in hundreds of members to
# # process all at once. This timer drip feeds membership entries at the # # process all at once. This timer drip feeds membership entries at the
# # specified rate. Default: 10000. (10s) # # specified rate. Default: 10000. (10s)
# floodDelayMs: 10000 # floodDelayMs: 10000
#
# global: # global:
# ircToMatrix: # ircToMatrix:
# # Get a snapshot of all real IRC users on a channel (via NAMES) and # # Get a snapshot of all real IRC users on a channel (via NAMES) and
@@ -267,7 +299,14 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # Make virtual Matrix clients join and leave rooms as their real IRC # # Make virtual Matrix clients join and leave rooms as their real IRC
# # counterparts join/part channels. Default: false. # # counterparts join/part channels. Default: false.
# incremental: false # incremental: false
# # Should the bridge check if all Matrix users are connected to IRC and
# # joined to the channel before relaying messages into the room.
# #
# # This is considered a safety net to avoid any leakages by the bridge to
# # unconnected users, but given it ignores all IRC messages while users
# # are still connecting it may be overkill.
# requireMatrixJoined: false
#
# matrixToIrc: # matrixToIrc:
# # Get a snapshot of all real Matrix users in the room and join all of # # Get a snapshot of all real Matrix users in the room and join all of
# # them to the mapped IRC channel on startup. Default: false. # # them to the mapped IRC channel on startup. Default: false.
@@ -276,21 +315,32 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # counterparts join/leave rooms. Make sure your 'maxClients' value is # # counterparts join/leave rooms. Make sure your 'maxClients' value is
# # high enough! Default: false. # # high enough! Default: false.
# incremental: false # incremental: false
#
# # Apply specific rules to Matrix rooms. Only matrix-to-IRC takes effect. # # Apply specific rules to Matrix rooms. Only matrix-to-IRC takes effect.
# rooms: # rooms:
# - room: "!qporfwt:localhost" # - room: "!qporfwt:localhost"
# matrixToIrc: # matrixToIrc:
# initial: false # initial: false
# incremental: false # incremental: false
#
# # Apply specific rules to IRC channels. Only IRC-to-matrix takes effect. # # Apply specific rules to IRC channels. Only IRC-to-matrix takes effect.
# channels: # channels:
# - channel: "#foo" # - channel: "#foo"
# ircToMatrix: # ircToMatrix:
# initial: false # initial: false
# incremental: false # incremental: false
# requireMatrixJoined: false
#
# # Should the bridge ignore users which are not considered active on the bridge
# # during startup
# ignoreIdleUsersOnStartup:
# enabled: true
# # How many hours can a user be considered idle for before they are considered
# # ignoreable
# idleForHours: 720
# # A regex which will exclude matching MXIDs from this check.
# exclude: "foobar"
#
# mappings: # mappings:
# # 1:many mappings from IRC channels to room IDs on this IRC server. # # 1:many mappings from IRC channels to room IDs on this IRC server.
# # The Matrix room must already exist. Your Matrix client should expose # # The Matrix room must already exist. Your Matrix client should expose
@@ -300,27 +350,27 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # Channel key/password to use. Optional. If provided, Matrix users do # # Channel key/password to use. Optional. If provided, Matrix users do
# # not need to know the channel key in order to join the channel. # # not need to know the channel key in order to join the channel.
# # key: "secret" # # key: "secret"
#
# # Configuration for virtual Matrix users. The following variables are # # Configuration for virtual Matrix users. The following variables are
# # exposed: # # exposed:
# # $NICK => The IRC nick # # $NICK => The IRC nick
# # $SERVER => The IRC server address (e.g. "irc.example.com") # # $SERVER => The IRC server address (e.g. "irc.example.com")
# matrixClients: # matrixClients:
# # The user ID template to use when creating virtual Matrix users. This # # The user ID template to use when creating virtual Matrix users. This
# # MUST have $NICK somewhere in it. # # MUST start with an @ and have $NICK somewhere in it.
# # Optional. Default: "@$SERVER_$NICK". # # Optional. Default: "@$SERVER_$NICK".
# # Example: "@irc.example.com_Alice:example.com" # # Example: "@irc.example.com_Alice:example.com"
# userTemplate: "@irc_$NICK" # userTemplate: "@irc_$NICK"
# # The display name to use for created Matrix clients. This should have # # The display name to use for created Matrix clients. This should have
# # $NICK somewhere in it if it is specified. Can also use $SERVER to # # $NICK somewhere in it if it is specified. Can also use $SERVER to
# # insert the IRC domain. # # insert the IRC domain.
# # Optional. Default: "$NICK (IRC)". Example: "Alice (IRC)" # # Optional. Default: "$NICK". Example: "Alice"
# displayName: "$NICK (IRC)" # displayName: "$NICK"
# # Number of tries a client can attempt to join a room before the request # # Number of tries a client can attempt to join a room before the request
# # is discarded. You can also use -1 to never retry or 0 to never give up. # # is discarded. You can also use -1 to never retry or 0 to never give up.
# # Optional. Default: -1 # # Optional. Default: -1
# joinAttempts: -1 # joinAttempts: -1
#
# # Configuration for virtual IRC users. The following variables are exposed: # # Configuration for virtual IRC users. The following variables are exposed:
# # $LOCALPART => The user ID localpart ("alice" in @alice:localhost) # # $LOCALPART => The user ID localpart ("alice" in @alice:localhost)
# # $USERID => The user ID # # $USERID => The user ID
@@ -349,9 +399,20 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # connected user. If not specified, all users will connect from the same # # connected user. If not specified, all users will connect from the same
# # (default) address. This may require additional OS-specific work to allow # # (default) address. This may require additional OS-specific work to allow
# # for the node process to bind to multiple different source addresses # # for the node process to bind to multiple different source addresses
# # e.g IP_FREEBIND on Linux, which requires an LD_PRELOAD with the library # # Linux kernels 4.3+ support sysctl net.ipv6.ip_nonlocal_bind=1
# # Older kernels will need IP_FREEBIND, which requires an LD_PRELOAD with the library
# # https://github.com/matrix-org/freebindfree as Node does not expose setsockopt. # # https://github.com/matrix-org/freebindfree as Node does not expose setsockopt.
# # prefix: "2001:0db8:85a3::" # modify appropriately # # prefix: "2001:0db8:85a3::" # modify appropriately
#
# # Optional. Define blocks of IPv6 addresses for different homeservers
# # which can be used to restrict users of those homeservers to a given
# # IP. These blocks should be considered immutable once set, as changing
# # the startFrom value will NOT adjust existing IP addresses.
# # Changing the startFrom value to a lower value may conflict with existing clients.
# # Multiple homeservers may NOT share blocks.
# blocks:
# - homeserver: another-server.org
# startFrom: '10:0000'
# # # #
# # The maximum amount of time in seconds that the client can exist # # The maximum amount of time in seconds that the client can exist
# # without sending another message before being disconnected. Use 0 to # # without sending another message before being disconnected. Use 0 to
@@ -388,12 +449,36 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
# # through the bridge e.g. caller ID as there is no way to /ACCEPT. # # through the bridge e.g. caller ID as there is no way to /ACCEPT.
# # Default: "" (no user modes) # # Default: "" (no user modes)
# # userModes: "R" # # userModes: "R"
# # The format of the realname defined for users, either mxid or reverse-mxid
# realnameFormat: "mxid"
# # The minimum time to wait between connection attempts if we were disconnected
# # due to throttling.
# # pingTimeoutMs: 600000
# # The rate at which to send pings to the IRCd if the client is being quiet for a while.
# # Whilst the IRCd *should* be sending pings to us to keep the connection alive, it appears
# # that sometimes they don't get around to it and end up ping timing us out.
# # pingRateMs: 60000
# # Choose which conditions the IRC bridge should kick Matrix users for. Decisions to this from
# # defaults should be taken with care as it may dishonestly represent Matrix users on the IRC
# # network, and cause your bridge to be banned.
# kickOn:
# # Kick a Matrix user from a bridged room if they fail to join the IRC channel.
# channelJoinFailure: true
# # Kick a Matrix user from ALL rooms if they are unable to get connected to IRC.
# ircConnectionFailure: true
# # Kick a Matrix user from ALL rooms if they choose to QUIT the IRC network.
# userQuit: true
# Controls whether the matrix-appservice-discord container exposes its HTTP port (tcp/9999 in the container). # Controls whether the matrix-appservice-irc container exposes its HTTP port (tcp/9999 in the container).
# #
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:9999"), or empty string to not expose. # Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:9999"), or empty string to not expose.
matrix_appservice_irc_container_http_host_bind_port: '' matrix_appservice_irc_container_http_host_bind_port: ''
# Controls whether the matrix-appservice-irc container exposes its media proxy HTTP port.
#
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:11111"), or empty string to not expose.
matrix_appservice_irc_container_media_proxy_host_bind_port: ''
matrix_appservice_irc_container_network: "" matrix_appservice_irc_container_network: ""
matrix_appservice_irc_container_additional_networks: "{{ matrix_appservice_irc_container_additional_networks_auto + matrix_appservice_irc_container_additional_networks_custom }}" matrix_appservice_irc_container_additional_networks: "{{ matrix_appservice_irc_container_additional_networks_auto + matrix_appservice_irc_container_additional_networks_custom }}"
@@ -403,6 +488,26 @@ matrix_appservice_irc_container_additional_networks_custom: []
# A list of extra arguments to pass to the container # A list of extra arguments to pass to the container
matrix_appservice_irc_container_extra_arguments: [] matrix_appservice_irc_container_extra_arguments: []
# matrix_appservice_irc_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
# To inject your own other container labels, see `matrix_appservice_irc_container_labels_additional_labels`.
matrix_appservice_irc_container_labels_traefik_enabled: true
matrix_appservice_irc_container_labels_traefik_docker_network: "{{ matrix_appservice_irc_container_network }}"
matrix_appservice_irc_container_labels_traefik_entrypoints: web-secure
matrix_appservice_irc_container_labels_traefik_tls_certResolver: default # noqa var-naming
# Controls whether Traefik labels for the media proxy will be applied
matrix_appservice_irc_container_labels_media_proxy_enabled: true
# Derived from publicUrl_pathPrefix, stripping any trailing slash (unless it's just "/")
matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix: "{{ '/' if matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix == '/' else matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix.rstrip('/') }}"
matrix_appservice_irc_container_labels_media_proxy_traefik_rule: "Host(`{{ matrix_appservice_irc_ircService_mediaProxy_publicUrl_hostname }}`) && PathPrefix(`{{ matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix }}`)"
matrix_appservice_irc_container_labels_media_proxy_traefik_priority: 2000
matrix_appservice_irc_container_labels_media_proxy_traefik_entrypoints: "{{ matrix_appservice_irc_container_labels_traefik_entrypoints }}"
matrix_appservice_irc_container_labels_media_proxy_traefik_tls: "{{ matrix_appservice_irc_container_labels_media_proxy_traefik_entrypoints != 'web' }}"
matrix_appservice_irc_container_labels_media_proxy_traefik_tls_certResolver: "{{ matrix_appservice_irc_container_labels_traefik_tls_certResolver }}" # noqa var-naming
# matrix-appservice-irc container additional labels
matrix_appservice_irc_container_labels_additional_labels: ''
# List of systemd services that matrix-appservice-irc.service depends on. # List of systemd services that matrix-appservice-irc.service depends on.
matrix_appservice_irc_systemd_required_services_list: "{{ matrix_appservice_irc_systemd_required_services_list_default + matrix_appservice_irc_systemd_required_services_list_auto + matrix_appservice_irc_systemd_required_services_list_custom }}" matrix_appservice_irc_systemd_required_services_list: "{{ matrix_appservice_irc_systemd_required_services_list_default + matrix_appservice_irc_systemd_required_services_list_auto + matrix_appservice_irc_systemd_required_services_list_custom }}"
matrix_appservice_irc_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" matrix_appservice_irc_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"

View File

@@ -1,5 +1,6 @@
# SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors # SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors
# SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev # SPDX-FileCopyrightText: 2019 - 2026 Slavi Pantaleev
# SPDX-FileCopyrightText: 2025 - 2026 Thom Wiggers
# SPDX-FileCopyrightText: 2019 Dan Arnfield # SPDX-FileCopyrightText: 2019 Dan Arnfield
# SPDX-FileCopyrightText: 2020 Chris van Dijk # SPDX-FileCopyrightText: 2020 Chris van Dijk
# SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis # SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis
@@ -121,6 +122,14 @@
owner: "{{ matrix_user_name }}" owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}" group: "{{ matrix_group_name }}"
- name: Ensure Matrix Appservice IRC labels file installed
ansible.builtin.template:
src: "{{ role_path }}/templates/labels.j2"
dest: "{{ matrix_appservice_irc_base_path }}/labels"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
- name: Generate Appservice IRC passkey if it doesn't exist - name: Generate Appservice IRC passkey if it doesn't exist
ansible.builtin.shell: ansible.builtin.shell:
cmd: "{{ matrix_host_command_openssl }} genpkey -out {{ matrix_appservice_irc_data_path }}/passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048" cmd: "{{ matrix_host_command_openssl }} genpkey -out {{ matrix_appservice_irc_data_path }}/passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048"
@@ -128,6 +137,41 @@
become: true become: true
become_user: "{{ matrix_user_name }}" become_user: "{{ matrix_user_name }}"
- name: Check if an authenticated media signing key exists
ansible.builtin.stat:
path: "{{ matrix_appservice_irc_data_path }}/auth-media.jwk"
register: matrix_appservice_irc_stat_auth_media_key
- when: not matrix_appservice_irc_stat_auth_media_key.stat.exists
block:
- name: Generate IRC appservice signing key for authenticated media
community.docker.docker_container:
name: "create-auth-media-jwk-key"
image: "{{ matrix_appservice_irc_docker_image }}"
cleanup: true
network_mode: none
entrypoint: "/usr/local/bin/node"
command: >
-e "const webcrypto = require('node:crypto');
async function main() {
const key = await webcrypto.subtle.generateKey({
name: 'HMAC',
hash: 'SHA-512',
}, true, ['sign', 'verify']);
console.log(JSON.stringify(await webcrypto.subtle.exportKey('jwk', key), undefined, 4));
}
main().then(() => process.exit(0)).catch(err => { throw err });"
detach: false
register: matrix_appservice_irc_jwk_result
- name: Write auth media signing key to file
ansible.builtin.copy:
content: "{{ matrix_appservice_irc_jwk_result.container.Output }}"
dest: "{{ matrix_appservice_irc_data_path }}/auth-media.jwk"
mode: "0644"
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
# In the past, we used to generate the passkey.pem file with root, so permissions may not be okay. # In the past, we used to generate the passkey.pem file with root, so permissions may not be okay.
# Fix it. # Fix it.
- name: (Migration) Ensure Appservice IRC passkey permissions are okay - name: (Migration) Ensure Appservice IRC passkey permissions are okay

View File

@@ -44,3 +44,27 @@
- {'old': 'matrix_appservice_irc_container_expose_client_server_api_port', 'new': '<superseded by matrix_appservice_irc_container_http_host_bind_port>'} - {'old': 'matrix_appservice_irc_container_expose_client_server_api_port', 'new': '<superseded by matrix_appservice_irc_container_http_host_bind_port>'}
- {'old': 'matrix_appservice_irc_container_self_build', 'new': 'matrix_appservice_irc_container_image_self_build'} - {'old': 'matrix_appservice_irc_container_self_build', 'new': 'matrix_appservice_irc_container_image_self_build'}
- {'old': 'matrix_appservice_irc_docker_image_name_prefix', 'new': 'matrix_appservice_irc_docker_image_registry_prefix'} - {'old': 'matrix_appservice_irc_docker_image_name_prefix', 'new': 'matrix_appservice_irc_docker_image_registry_prefix'}
- {'old': 'matrix_appservice_irc_homeserver_media_url', 'new': '<removed; media proxying now uses matrix_appservice_irc_ircService_mediaProxy_publicUrl>'}
- name: Fail if matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix does not start with a slash
ansible.builtin.fail:
msg: >-
matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix (`{{ matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix }}`) must start with a slash (e.g. `/` or `/irc/`).
when: "matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix[0] != '/'"
- name: Fail if matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix does not end with a slash
ansible.builtin.fail:
msg: >-
matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix (`{{ matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix }}`) must end with a slash (e.g. `/` or `/irc/`).
when: "matrix_appservice_irc_ircService_mediaProxy_publicUrl_pathPrefix[-1] != '/'"
- when: matrix_appservice_irc_container_labels_traefik_enabled | bool
block:
# We ensure it doesn't end with a slash, because we handle both (slash and no-slash).
# Knowing that the path_prefix does not end with a slash ensures we know how to set these routes up
# without having to do "does it end with a slash" checks elsewhere.
- name: Fail if matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix ends with a slash
ansible.builtin.fail:
msg: >-
matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix (`{{ matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix }}`) must either be `/` or not end with a slash (e.g. `/irc`).
when: "matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix != '/' and matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix[-1] == '/'"

View File

@@ -1,14 +1,13 @@
#jinja2: lstrip_blocks: True #jinja2: lstrip_blocks: True
#
# Based on https://github.com/matrix-org/matrix-appservice-irc/blob/8daebec7779a2480180cbc4c293838de649aab36/config.sample.yaml
#
# Configuration specific to AS registration. Unless other marked, all fields
# are *REQUIRED*.
# Unless otherwise specified, these keys CANNOT be hot-reloaded.
homeserver: homeserver:
# The URL to the home server for client-server API calls, also used to form the # The URL to the home server for client-server API calls
# media URLs as displayed in bridged IRC channels: url: "{{ matrix_appservice_irc_homeserver_url }}"
url: {{ matrix_appservice_irc_homeserver_url }}
#
# The URL of the homeserver hosting media files. This is only used to transform
# mxc URIs to http URIs when bridging m.room.[file|image] events. Optional. By
# default, this is the homeserver URL, specified above.
#
media_url: {{ matrix_appservice_irc_homeserver_media_url }}
# Drop Matrix messages which are older than this number of seconds, according to # Drop Matrix messages which are older than this number of seconds, according to
# the event's origin_server_ts. # the event's origin_server_ts.
@@ -20,18 +19,29 @@ homeserver:
# clock times and hence produce different origin_server_ts values, which may be old # clock times and hence produce different origin_server_ts values, which may be old
# enough to cause *all* events from the homeserver to be dropped. # enough to cause *all* events from the homeserver to be dropped.
# Default: 0 (don't ever drop) # Default: 0 (don't ever drop)
# This key CAN be hot-reloaded.
# dropMatrixMessagesAfterSecs: 300 # 5 minutes # dropMatrixMessagesAfterSecs: 300 # 5 minutes
# The 'domain' part for user IDs on this home server. Usually (but not always) # The 'domain' part for user IDs on this home server. Usually (but not always)
# is the "domain name" part of the HS URL. # is the "domain name" part of the HS URL.
domain: {{ matrix_appservice_irc_homeserver_domain }} domain: "{{ matrix_appservice_irc_homeserver_domain }}"
# Should presence be enabled for Matrix clients on this bridge. If disabled on the # Should presence be enabled for Matrix clients on this bridge. If disabled on the
# homeserver then it should also be disabled here to avoid excess traffic. # homeserver then it should also be disabled here to avoid excess traffic.
# Default: true # Default: true
enablePresence: {{ matrix_appservice_irc_homeserver_enablePresence|to_json }} enablePresence: {{ matrix_appservice_irc_homeserver_enablePresence|to_json }}
# Which port should the appservice bind to. Can be overridden by the one provided in the
# command line! Optional.
# bindPort: 8090
# Use this option to force the appservice to listen on another hostname for transactions.
# This is NOT your synapse hostname. E.g. use 127.0.0.1 to only listen locally. Optional.
# bindHostname: 0.0.0.0
# Configuration specific to the IRC service
ircService: ircService:
# WARNING: The bridge needs to send plaintext passwords to the IRC server, it cannot # WARNING: The bridge needs to send plaintext passwords to the IRC server, it cannot
# send a password hash. As a result, passwords (NOT hashes) are stored encrypted in # send a password hash. As a result, passwords (NOT hashes) are stored encrypted in
# the database. # the database.
@@ -50,11 +60,18 @@ ircService:
# Cache this many Matrix events in memory to be used for m.relates_to messages (usually replies). # Cache this many Matrix events in memory to be used for m.relates_to messages (usually replies).
eventCacheSize: 4096 eventCacheSize: 4096
# All server keys can be hot-reloaded, however existing IRC connections
# will not have changes applied to them.
servers: {{ matrix_appservice_irc_ircService_servers|to_json }} servers: {{ matrix_appservice_irc_ircService_servers|to_json }}
# present relevant UI to the user. MSC2346
bridgeInfoState:
enabled: false
initial: false
# Configuration for an ident server. If you are running a public bridge it is # Configuration for an ident server. If you are running a public bridge it is
# advised you setup an ident server so IRC mods can ban specific Matrix users # advised you setup an ident server so IRC mods can ban specific Matrix users
# rather than the application service itself. # rather than the application service itself.
# This key CANNOT be hot-reloaded
ident: ident:
# True to listen for Ident requests and respond with the # True to listen for Ident requests and respond with the
# Matrix user's user_id (converted to ASCII, respecting RFC 1413). # Matrix user's user_id (converted to ASCII, respecting RFC 1413).
@@ -71,6 +88,10 @@ ircService:
# Default: 0.0.0.0 # Default: 0.0.0.0
address: "::" address: "::"
# Encoding fallback - which text encoding to try if text is not UTF-8. Default: not set.
# List of supported encodings: https://www.npmjs.com/package/iconv#supported-encodings
# encodingFallback: "ISO-8859-15"
# Configuration for logging. Optional. Default: console debug level logging # Configuration for logging. Optional. Default: console debug level logging
# only. # only.
logging: logging:
@@ -87,33 +108,42 @@ ircService:
# to rotations. # to rotations.
maxFiles: 5 maxFiles: 5
# Optional. Enable Prometheus metrics. If this is enabled, you MUST install `prom-client`:
# $ npm install prom-client@6.3.0
# Metrics will then be available via GET /metrics on the bridge listening port (-p). # Metrics will then be available via GET /metrics on the bridge listening port (-p).
# This key CANNOT be hot-reloaded
metrics: metrics:
# Whether to actually enable the metric endpoint. Default: false # Whether to actually enable the metric endpoint. Default: false
enabled: true enabled: true
# Which port to listen on (omit to listen on the bindPort)
#port: 7001
# Which hostname to listen on (omit to listen on 127.0.0.1), requires port to be set
host: 127.0.0.1
# When determining activeness of remote and matrix users, cut off at this number of hours.
userActivityThresholdHours: 72 # 3 days
# When collecting remote user active times, which "buckets" should be used. Defaults are given below. # When collecting remote user active times, which "buckets" should be used. Defaults are given below.
# The bucket name is formed of a duration and a period. (h=hours,d=days,w=weeks). # The bucket name is formed of a duration and a period. (h=hours,d=days,w=weeks).
remoteUserAgeBuckets: remoteUserAgeBuckets:
- "1h" - "1h"
- "1d" - "1d"
- "1w" - "1w"
# Configuration for the provisioning API. # Configuration for the provisioning API.
# # This key CANNOT be hot-reloaded
# GET /_matrix/provision/link
# GET /_matrix/provision/unlink
# GET /_matrix/provision/listlinks
#
provisioning: provisioning:
# True to enable the provisioning HTTP endpoint. Default: false. # True to enable the provisioning HTTP endpoint. Default: false.
enabled: false enabled: false
# The number of seconds to wait before giving up on getting a response from # Whether to enable hosting the setup widget page. Default: false.
# an IRC channel operator. If the channel operator does not respond within the widget: false
# allotted time period, the provisioning request will fail.
# Default: 300 seconds (5 mins) # Config for the media proxy, required to serve publicly accessible URLs to authenticated Matrix media
requestTimeoutSeconds: 300 mediaProxy:
# To generate a .jwk file:
# $ node src/generate-signing-key.js > signingkey.jwk
signingKeyPath: "/data/auth-media.jwk"
# How long should the generated URLs be valid for
ttlSeconds: 604800
# The port for the media proxy to listen on
bindPort: {{ matrix_appservice_irc_ircService_mediaProxy_bindPort | to_json }}
# The publicly accessible URL to the media proxy
publicUrl: {{ matrix_appservice_irc_ircService_mediaProxy_publicUrl | to_json }}
# Options here are generally only applicable to large-scale bridges and may have # Options here are generally only applicable to large-scale bridges and may have
# consequences greater than other options in this configuration file. # consequences greater than other options in this configuration file.
@@ -122,13 +152,18 @@ advanced:
# however for large bridges it is important to rate limit the bridge to avoid # however for large bridges it is important to rate limit the bridge to avoid
# accidentally overloading the homeserver. Defaults to 1000, which should be # accidentally overloading the homeserver. Defaults to 1000, which should be
# enough for the vast majority of use cases. # enough for the vast majority of use cases.
# This key CAN be hot-reloaded
maxHttpSockets: 1000 maxHttpSockets: 1000
# Max size of an appservice transaction payload, in bytes. Defaults to 10Mb
# This key CANNOT be hot-reloaded.
maxTxnSize: 10000000
# Use an external database to store bridge state. # Use an external database to store bridge state.
# This key CANNOT be hot-reloaded.
database: database:
# database engine (must be 'postgres' or 'nedb'). Default: nedb # database engine (must be 'postgres' or 'nedb'). Default: nedb
engine: {{ matrix_appservice_irc_database_engine|to_json }} engine: {{ matrix_appservice_irc_database_engine|to_json }}
# Either a PostgreSQL connection string, or a path to the NeDB storage directory. # Either a PostgreSQL connection string, or a path to the NeDB storage directory.
# For postgres, it must start with postgres:// # For postgres, it must start with postgres://
# For NeDB, it must start with nedb://. The path is relative to the project directory. # For NeDB, it must start with nedb://. The path is relative to the project directory.
connectionString: {{ matrix_appservice_irc_database_connectionString|to_json }} connectionString: {{ matrix_appservice_irc_database_connectionString | to_json }}

View File

@@ -0,0 +1,63 @@
{#
SPDX-FileCopyrightText: 2025 Jade Ellis
SPDX-FileCopyrightText: 2025 - 2026 Thom Wiggers
SPDX-FileCopyrightText: 2026 Slavi Pantaleev
SPDX-License-Identifier: AGPL-3.0-or-later
#}
{% if matrix_appservice_irc_container_labels_traefik_enabled and matrix_appservice_irc_container_labels_media_proxy_enabled %}
traefik.enable=true
{% if matrix_appservice_irc_container_labels_traefik_docker_network %}
traefik.docker.network={{ matrix_appservice_irc_container_labels_traefik_docker_network }}
{% endif %}
traefik.http.services.matrix-appservice-irc-media-proxy.loadbalancer.server.port={{ matrix_appservice_irc_ircService_mediaProxy_bindPort }}
############################################################
# #
# IRC Bridge Media Proxy #
# #
############################################################
{% set middlewares = [] %}
traefik.http.routers.matrix-appservice-irc-media-proxy.rule={{ matrix_appservice_irc_container_labels_media_proxy_traefik_rule }}
{% if matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix != '/' %}
traefik.http.middlewares.matrix-appservice-irc-media-proxy-slashless-redirect.redirectregex.regex=({{ matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix | quote }})$
traefik.http.middlewares.matrix-appservice-irc-media-proxy-slashless-redirect.redirectregex.replacement=${1}/
{% set middlewares = middlewares + ['matrix-appservice-irc-media-proxy-slashless-redirect'] %}
{% endif %}
{% if matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix != '/' %}
traefik.http.middlewares.matrix-appservice-irc-media-proxy-strip-prefix.stripprefix.prefixes={{ matrix_appservice_irc_container_labels_media_proxy_traefik_path_prefix }}
{% set middlewares = middlewares + ['matrix-appservice-irc-media-proxy-strip-prefix'] %}
{% endif %}
{% if matrix_appservice_irc_container_labels_media_proxy_traefik_priority | int > 0 %}
traefik.http.routers.matrix-appservice-irc-media-proxy.priority={{ matrix_appservice_irc_container_labels_media_proxy_traefik_priority }}
{% endif %}
traefik.http.routers.matrix-appservice-irc-media-proxy.service=matrix-appservice-irc-media-proxy
traefik.http.routers.matrix-appservice-irc-media-proxy.entrypoints={{ matrix_appservice_irc_container_labels_media_proxy_traefik_entrypoints }}
{% if middlewares | length > 0 %}
traefik.http.routers.matrix-appservice-irc-media-proxy.middlewares={{ middlewares | join(',') }}
{% endif %}
traefik.http.routers.matrix-appservice-irc-media-proxy.tls={{ matrix_appservice_irc_container_labels_media_proxy_traefik_tls | to_json }}
{% if matrix_appservice_irc_container_labels_media_proxy_traefik_tls %}
traefik.http.routers.matrix-appservice-irc-media-proxy.tls.certResolver={{ matrix_appservice_irc_container_labels_media_proxy_traefik_tls_certResolver }}
{% endif %}
############################################################
# #
# /IRC Bridge Media Proxy #
# #
############################################################
{% endif %}
{{ matrix_appservice_irc_container_labels_additional_labels }}

View File

@@ -26,8 +26,12 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% if matrix_appservice_irc_container_http_host_bind_port %} {% if matrix_appservice_irc_container_http_host_bind_port %}
-p {{ matrix_appservice_irc_container_http_host_bind_port }}:9999 \ -p {{ matrix_appservice_irc_container_http_host_bind_port }}:9999 \
{% endif %} {% endif %}
{% if matrix_appservice_irc_container_media_proxy_host_bind_port %}
-p {{ matrix_appservice_irc_container_media_proxy_host_bind_port }}:{{ matrix_appservice_irc_ircService_mediaProxy_bindPort }} \
{% endif %}
--mount type=bind,src={{ matrix_appservice_irc_config_path }},dst=/config \ --mount type=bind,src={{ matrix_appservice_irc_config_path }},dst=/config \
--mount type=bind,src={{ matrix_appservice_irc_data_path }},dst=/data \ --mount type=bind,src={{ matrix_appservice_irc_data_path }},dst=/data \
--label-file={{ matrix_appservice_irc_base_path }}/labels \
{% for arg in matrix_appservice_irc_container_extra_arguments %} {% for arg in matrix_appservice_irc_container_extra_arguments %}
{{ arg }} \ {{ arg }} \
{% endfor %} {% endfor %}

View File

@@ -29,7 +29,7 @@ matrix_hookshot_container_additional_networks_auto: []
matrix_hookshot_container_additional_networks_custom: [] matrix_hookshot_container_additional_networks_custom: []
# renovate: datasource=docker depName=halfshot/matrix-hookshot # renovate: datasource=docker depName=halfshot/matrix-hookshot
matrix_hookshot_version: 7.2.0 matrix_hookshot_version: 7.3.1
matrix_hookshot_docker_image: "{{ matrix_hookshot_docker_image_registry_prefix }}matrix-org/matrix-hookshot:{{ matrix_hookshot_version }}" matrix_hookshot_docker_image: "{{ matrix_hookshot_docker_image_registry_prefix }}matrix-org/matrix-hookshot:{{ matrix_hookshot_version }}"
matrix_hookshot_docker_image_registry_prefix: "{{ 'localhost/' if matrix_hookshot_container_image_self_build else matrix_hookshot_docker_image_registry_prefix_upstream }}" matrix_hookshot_docker_image_registry_prefix: "{{ 'localhost/' if matrix_hookshot_container_image_self_build else matrix_hookshot_docker_image_registry_prefix_upstream }}"
@@ -72,8 +72,9 @@ matrix_hookshot_cache_redisUri: "{{ ('redis://' + matrix_hookshot_cache_redis_ho
# Controls whether the end-to-bridge encryption support is enabled. # Controls whether the end-to-bridge encryption support is enabled.
# This requires that: # This requires that:
# - support to also be enabled in the homeserver, see the documentation of Hookshot. # - support to also be enabled in the homeserver, see the documentation of Hookshot.
# - Hookshot to be pointed at a Redis instance via the `matrix_hookshot_cache_redis*` variables. # - Hookshot to be pointed at a Redis instance via the `matrix_hookshot_cache_redis*` variables. Note that this is configured automatically by the playbook when encryption is enabled.
# See: https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html # See: https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html
# NOTE: Encryption is not currently (2025-12-30) supported when using MAS (https://github.com/matrix-org/matrix-hookshot/issues/1084)
matrix_hookshot_encryption_enabled: "{{ matrix_bridges_encryption_enabled }}" matrix_hookshot_encryption_enabled: "{{ matrix_bridges_encryption_enabled }}"
# Controls whether metrics are enabled in the bridge configuration. # Controls whether metrics are enabled in the bridge configuration.
@@ -241,6 +242,18 @@ matrix_hookshot_widgets_branding_widgetTitle: "Hookshot Configuration" # noqa
# level: admin # level: admin
matrix_hookshot_permissions: [] matrix_hookshot_permissions: []
# Static connections that can be configured by an administrator, as documented here:
# https://matrix-org.github.io/matrix-hookshot/latest/usage/static_connections.html
# Currently only generic webhooks are supported.
# Example:
# matrix_hookshot_connections:
# - connectionType: uk.half-shot.matrix-hookshot.generic.hook
# stateKey: my-unique-webhook-id
# roomId: "!room-id"
# state:
# name: My Static Webhook
matrix_hookshot_connections: []
matrix_hookshot_bot_displayname: Hookshot Bot matrix_hookshot_bot_displayname: Hookshot Bot
matrix_hookshot_bot_avatar: 'mxc://half-shot.uk/2876e89ccade4cb615e210c458e2a7a6883fe17d' matrix_hookshot_bot_avatar: 'mxc://half-shot.uk/2876e89ccade4cb615e210c458e2a7a6883fe17d'

View File

@@ -51,7 +51,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_hookshot_appservice_token" - "matrix_hookshot_appservice_token"
- "matrix_hookshot_homeserver_address" - "matrix_hookshot_homeserver_address"
@@ -62,7 +62,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`) to enable GitHub. You need to define a required configuration setting (`{{ item }}`) to enable GitHub.
when: "matrix_hookshot_github_enabled and vars[item] == ''" when: "matrix_hookshot_github_enabled and lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_hookshot_github_auth_id" - "matrix_hookshot_github_auth_id"
- "matrix_hookshot_github_webhook_secret" - "matrix_hookshot_github_webhook_secret"
@@ -71,7 +71,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`) to enable GitHub OAuth. You need to define a required configuration setting (`{{ item }}`) to enable GitHub OAuth.
when: "matrix_hookshot_github_oauth_enabled and vars[item] == ''" when: "matrix_hookshot_github_oauth_enabled and lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_hookshot_github_oauth_client_id" - "matrix_hookshot_github_oauth_client_id"
- "matrix_hookshot_github_oauth_client_secret" - "matrix_hookshot_github_oauth_client_secret"
@@ -80,7 +80,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`) to enable Jira. You need to define a required configuration setting (`{{ item }}`) to enable Jira.
when: "matrix_hookshot_jira_enabled and vars[item] == ''" when: "matrix_hookshot_jira_enabled and lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_hookshot_jira_webhook_secret" - "matrix_hookshot_jira_webhook_secret"
@@ -88,7 +88,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`) to enable Jira OAuth. You need to define a required configuration setting (`{{ item }}`) to enable Jira OAuth.
when: "matrix_hookshot_jira_oauth_enabled and vars[item] == ''" when: "matrix_hookshot_jira_oauth_enabled and lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_hookshot_jira_oauth_client_id" - "matrix_hookshot_jira_oauth_client_id"
- "matrix_hookshot_jira_oauth_client_secret" - "matrix_hookshot_jira_oauth_client_secret"

View File

@@ -137,6 +137,7 @@ widgets:
{% if matrix_hookshot_permissions %} {% if matrix_hookshot_permissions %}
permissions: {{ matrix_hookshot_permissions | to_json }} permissions: {{ matrix_hookshot_permissions | to_json }}
{% endif %} {% endif %}
connections: {{ matrix_hookshot_connections | to_json }}
listeners: listeners:
# (Optional) HTTP Listener configuration. # (Optional) HTTP Listener configuration.
# Bind resource endpoints to ports and addresses. # Bind resource endpoints to ports and addresses.

View File

@@ -18,7 +18,7 @@ matrix_mautrix_gmessages_container_image_self_build_repo: "https://github.com/ma
matrix_mautrix_gmessages_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_gmessages_version == 'latest' else matrix_mautrix_gmessages_version }}" matrix_mautrix_gmessages_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_gmessages_version == 'latest' else matrix_mautrix_gmessages_version }}"
# renovate: datasource=docker depName=dock.mau.dev/mautrix/gmessages # renovate: datasource=docker depName=dock.mau.dev/mautrix/gmessages
matrix_mautrix_gmessages_version: v0.2511.0 matrix_mautrix_gmessages_version: v0.2601.0
# See: https://mau.dev/mautrix/gmessages/container_registry # See: https://mau.dev/mautrix/gmessages/container_registry
matrix_mautrix_gmessages_docker_image: "{{ matrix_mautrix_gmessages_docker_image_registry_prefix }}mautrix/gmessages:{{ matrix_mautrix_gmessages_version }}" matrix_mautrix_gmessages_docker_image: "{{ matrix_mautrix_gmessages_docker_image_registry_prefix }}mautrix/gmessages:{{ matrix_mautrix_gmessages_version }}"

View File

@@ -20,7 +20,7 @@ matrix_mautrix_meta_instagram_enabled: true
matrix_mautrix_meta_instagram_identifier: matrix-mautrix-meta-instagram matrix_mautrix_meta_instagram_identifier: matrix-mautrix-meta-instagram
# renovate: datasource=docker depName=dock.mau.dev/mautrix/meta # renovate: datasource=docker depName=dock.mau.dev/mautrix/meta
matrix_mautrix_meta_instagram_version: v0.2511.0 matrix_mautrix_meta_instagram_version: v0.2512.0
matrix_mautrix_meta_instagram_base_path: "{{ matrix_base_data_path }}/mautrix-meta-instagram" matrix_mautrix_meta_instagram_base_path: "{{ matrix_base_data_path }}/mautrix-meta-instagram"
matrix_mautrix_meta_instagram_config_path: "{{ matrix_mautrix_meta_instagram_base_path }}/config" matrix_mautrix_meta_instagram_config_path: "{{ matrix_mautrix_meta_instagram_base_path }}/config"

View File

@@ -20,7 +20,7 @@ matrix_mautrix_meta_messenger_enabled: true
matrix_mautrix_meta_messenger_identifier: matrix-mautrix-meta-messenger matrix_mautrix_meta_messenger_identifier: matrix-mautrix-meta-messenger
# renovate: datasource=docker depName=dock.mau.dev/mautrix/meta # renovate: datasource=docker depName=dock.mau.dev/mautrix/meta
matrix_mautrix_meta_messenger_version: v0.2511.0 matrix_mautrix_meta_messenger_version: v0.2512.0
matrix_mautrix_meta_messenger_base_path: "{{ matrix_base_data_path }}/mautrix-meta-messenger" matrix_mautrix_meta_messenger_base_path: "{{ matrix_base_data_path }}/mautrix-meta-messenger"
matrix_mautrix_meta_messenger_config_path: "{{ matrix_mautrix_meta_messenger_base_path }}/config" matrix_mautrix_meta_messenger_config_path: "{{ matrix_mautrix_meta_messenger_base_path }}/config"

View File

@@ -25,7 +25,7 @@ matrix_mautrix_signal_container_image_self_build_repo: "https://mau.dev/mautrix/
matrix_mautrix_signal_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_signal_version == 'latest' else matrix_mautrix_signal_version }}" matrix_mautrix_signal_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_signal_version == 'latest' else matrix_mautrix_signal_version }}"
# renovate: datasource=docker depName=dock.mau.dev/mautrix/signal # renovate: datasource=docker depName=dock.mau.dev/mautrix/signal
matrix_mautrix_signal_version: v0.2511.0 matrix_mautrix_signal_version: v0.2601.0
# See: https://mau.dev/mautrix/signal/container_registry # See: https://mau.dev/mautrix/signal/container_registry
matrix_mautrix_signal_docker_image: "{{ matrix_mautrix_signal_docker_image_registry_prefix }}mautrix/signal:{{ matrix_mautrix_signal_docker_image_tag }}" matrix_mautrix_signal_docker_image: "{{ matrix_mautrix_signal_docker_image_registry_prefix }}mautrix/signal:{{ matrix_mautrix_signal_docker_image_tag }}"
@@ -50,11 +50,14 @@ matrix_mautrix_signal_appservice_address: "http://matrix-mautrix-signal:8080"
matrix_mautrix_signal_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}" matrix_mautrix_signal_msc4190_enabled: "{{ matrix_bridges_msc4190_enabled }}"
matrix_mautrix_signal_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}" matrix_mautrix_signal_self_sign_enabled: "{{ matrix_bridges_self_sign_enabled }}"
matrix_mautrix_signal_extev_polls: false
matrix_mautrix_signal_command_prefix: "!signal" matrix_mautrix_signal_command_prefix: "!signal"
# Displayname template for Signal users. # Displayname template for Signal users.
# {{.ProfileName}} - The Signal profile name set by the user. # {{.ProfileName}} - The Signal profile name set by the user.
# {{.ContactName}} - The name for the user from your phone's contact list. This is not safe on multi-user instances. # {{.ContactName}} - The name for the user from your phone's contact list. This is not safe on multi-user instances.
# {{.Nickname}} - The nickname set for the user in the native Signal app. This is not safe on multi-user instances.
# {{.PhoneNumber}} - The phone number of the user. # {{.PhoneNumber}} - The phone number of the user.
# {{.UUID}} - The UUID of the Signal user. # {{.UUID}} - The UUID of the Signal user.
# {{.AboutEmoji}} - The emoji set by the user in their profile. # {{.AboutEmoji}} - The emoji set by the user in their profile.

View File

@@ -19,6 +19,8 @@ network:
# Google Maps: 'https://www.google.com/maps/place/%[1]s,%[2]s' # Google Maps: 'https://www.google.com/maps/place/%[1]s,%[2]s'
# OpenStreetMap: 'https://www.openstreetmap.org/?mlat=%[1]s&mlon=%[2]s' # OpenStreetMap: 'https://www.openstreetmap.org/?mlat=%[1]s&mlon=%[2]s'
location_format: 'https://www.google.com/maps/place/%[1]s,%[2]s' location_format: 'https://www.google.com/maps/place/%[1]s,%[2]s'
# Should polls be sent using unstable MSC3381 event types?
extev_polls: {{ matrix_mautrix_signal_extev_polls | to_json }}
# Config options that affect the central bridge module. # Config options that affect the central bridge module.
bridge: bridge:

View File

@@ -28,7 +28,7 @@ matrix_mautrix_whatsapp_container_image_self_build_repo: "https://mau.dev/mautri
matrix_mautrix_whatsapp_container_image_self_build_branch: "{{ 'master' if matrix_mautrix_whatsapp_version == 'latest' else matrix_mautrix_whatsapp_version }}" matrix_mautrix_whatsapp_container_image_self_build_branch: "{{ 'master' if matrix_mautrix_whatsapp_version == 'latest' else matrix_mautrix_whatsapp_version }}"
# renovate: datasource=docker depName=dock.mau.dev/mautrix/whatsapp # renovate: datasource=docker depName=dock.mau.dev/mautrix/whatsapp
matrix_mautrix_whatsapp_version: v0.2511.0 matrix_mautrix_whatsapp_version: v0.2601.0
# See: https://mau.dev/mautrix/whatsapp/container_registry # See: https://mau.dev/mautrix/whatsapp/container_registry
matrix_mautrix_whatsapp_docker_image: "{{ matrix_mautrix_whatsapp_docker_image_registry_prefix }}mautrix/whatsapp:{{ matrix_mautrix_whatsapp_version }}" matrix_mautrix_whatsapp_docker_image: "{{ matrix_mautrix_whatsapp_docker_image_registry_prefix }}mautrix/whatsapp:{{ matrix_mautrix_whatsapp_version }}"

View File

@@ -9,7 +9,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_mautrix_androidsms_appservice_token" - "matrix_mautrix_androidsms_appservice_token"
- "matrix_mautrix_androidsms_homeserver_token" - "matrix_mautrix_androidsms_homeserver_token"

View File

@@ -18,7 +18,7 @@ matrix_postmoogle_docker_repo_version: "{{ 'main' if matrix_postmoogle_version =
matrix_postmoogle_docker_src_files_path: "{{ matrix_base_data_path }}/postmoogle/docker-src" matrix_postmoogle_docker_src_files_path: "{{ matrix_base_data_path }}/postmoogle/docker-src"
# renovate: datasource=docker depName=ghcr.io/etkecc/postmoogle # renovate: datasource=docker depName=ghcr.io/etkecc/postmoogle
matrix_postmoogle_version: v0.9.27 matrix_postmoogle_version: v0.9.28
matrix_postmoogle_docker_image: "{{ matrix_postmoogle_docker_image_registry_prefix }}etkecc/postmoogle:{{ matrix_postmoogle_version }}" matrix_postmoogle_docker_image: "{{ matrix_postmoogle_docker_image_registry_prefix }}etkecc/postmoogle:{{ matrix_postmoogle_version }}"
matrix_postmoogle_docker_image_registry_prefix: "{{ 'localhost/' if matrix_postmoogle_container_image_self_build else matrix_postmoogle_docker_image_registry_prefix_upstream }}" matrix_postmoogle_docker_image_registry_prefix: "{{ 'localhost/' if matrix_postmoogle_container_image_self_build else matrix_postmoogle_docker_image_registry_prefix_upstream }}"
matrix_postmoogle_docker_image_registry_prefix_upstream: "{{ matrix_postmoogle_docker_image_registry_prefix_upstream_default }}" matrix_postmoogle_docker_image_registry_prefix_upstream: "{{ matrix_postmoogle_docker_image_registry_prefix_upstream_default }}"

View File

@@ -11,7 +11,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_sms_bridge_appservice_token" - "matrix_sms_bridge_appservice_token"
- "matrix_sms_bridge_homeserver_hostname" - "matrix_sms_bridge_homeserver_hostname"

View File

@@ -13,7 +13,7 @@ matrix_steam_bridge_container_image_self_build_repo: "https://github.com/jasonla
matrix_steam_bridge_container_image_self_build_repo_version: "{{ 'main' if matrix_steam_bridge_version == 'latest' else matrix_steam_bridge_version }}" matrix_steam_bridge_container_image_self_build_repo_version: "{{ 'main' if matrix_steam_bridge_version == 'latest' else matrix_steam_bridge_version }}"
# renovate: datasource=docker depName=ghcr.io/jasonlaguidice/matrix-steam-bridge # renovate: datasource=docker depName=ghcr.io/jasonlaguidice/matrix-steam-bridge
matrix_steam_bridge_version: 1.0.8 matrix_steam_bridge_version: 1.1.0
matrix_steam_bridge_docker_image: "{{ matrix_steam_bridge_docker_image_registry_prefix }}jasonlaguidice/matrix-steam-bridge:{{ matrix_steam_bridge_version }}" matrix_steam_bridge_docker_image: "{{ matrix_steam_bridge_docker_image_registry_prefix }}jasonlaguidice/matrix-steam-bridge:{{ matrix_steam_bridge_version }}"
matrix_steam_bridge_docker_image_registry_prefix: "{{ 'localhost/' if matrix_steam_bridge_container_image_self_build else matrix_steam_bridge_docker_image_registry_prefix_upstream }}" matrix_steam_bridge_docker_image_registry_prefix: "{{ 'localhost/' if matrix_steam_bridge_container_image_self_build else matrix_steam_bridge_docker_image_registry_prefix_upstream }}"
matrix_steam_bridge_docker_image_registry_prefix_upstream: "{{ matrix_steam_bridge_docker_image_registry_prefix_upstream_default }}" matrix_steam_bridge_docker_image_registry_prefix_upstream: "{{ matrix_steam_bridge_docker_image_registry_prefix_upstream_default }}"

View File

@@ -15,7 +15,7 @@
block: block:
- name: Ensure matrix-bridge-zulip is stopped - name: Ensure matrix-bridge-zulip is stopped
ansible.builtin.service: ansible.builtin.service:
name: matrix-bridge-zulip name: matrix-zulip-bridge
state: stopped state: stopped
enabled: false enabled: false
daemon_reload: true daemon_reload: true

View File

@@ -18,7 +18,7 @@ matrix_cactus_comments_client_public_path: "{{ matrix_cactus_comments_client_bas
matrix_cactus_comments_client_public_path_file_permissions: "0644" matrix_cactus_comments_client_public_path_file_permissions: "0644"
# renovate: datasource=docker depName=joseluisq/static-web-server # renovate: datasource=docker depName=joseluisq/static-web-server
matrix_cactus_comments_client_version: 2.39.0 matrix_cactus_comments_client_version: 2.40.1
matrix_cactus_comments_client_container_image: "{{ matrix_cactus_comments_client_container_image_registry_prefix }}joseluisq/static-web-server:{{ matrix_cactus_comments_client_container_image_tag }}" matrix_cactus_comments_client_container_image: "{{ matrix_cactus_comments_client_container_image_registry_prefix }}joseluisq/static-web-server:{{ matrix_cactus_comments_client_container_image_tag }}"
matrix_cactus_comments_client_container_image_registry_prefix: "{{ matrix_cactus_comments_client_container_image_registry_prefix_upstream }}" matrix_cactus_comments_client_container_image_registry_prefix: "{{ matrix_cactus_comments_client_container_image_registry_prefix_upstream }}"

View File

@@ -8,7 +8,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_cactus_comments_client_hostname - matrix_cactus_comments_client_hostname
- matrix_cactus_comments_client_path_prefix - matrix_cactus_comments_client_path_prefix

View File

@@ -29,7 +29,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% endif %} {% endif %}
--env-file={{ matrix_cactus_comments_client_base_path }}/env \ --env-file={{ matrix_cactus_comments_client_base_path }}/env \
--label-file={{ matrix_cactus_comments_client_base_path }}/labels \ --label-file={{ matrix_cactus_comments_client_base_path }}/labels \
--mount type=bind,src={{ matrix_cactus_comments_client_public_path }},dst=/public,ro \ --mount type=bind,src={{ matrix_cactus_comments_client_public_path }},dst=/var/public,ro \
{{ matrix_cactus_comments_client_container_image }} {{ matrix_cactus_comments_client_container_image }}
{% for network in matrix_cactus_comments_client_container_additional_networks %} {% for network in matrix_cactus_comments_client_container_additional_networks %}

View File

@@ -24,7 +24,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_cactus_comments_as_token" - "matrix_cactus_comments_as_token"
- "matrix_cactus_comments_hs_token" - "matrix_cactus_comments_hs_token"

View File

@@ -36,7 +36,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_client_cinny_container_labels_traefik_hostname - matrix_client_cinny_container_labels_traefik_hostname
- matrix_client_cinny_container_labels_traefik_path_prefix - matrix_client_cinny_container_labels_traefik_path_prefix

View File

@@ -26,10 +26,10 @@ matrix_client_element_container_image_self_build_repo: "https://github.com/eleme
# Controls whether to patch webpack.config.js when self-building, so that building can pass on low-memory systems (< 4 GB RAM): # Controls whether to patch webpack.config.js when self-building, so that building can pass on low-memory systems (< 4 GB RAM):
# - https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1357 # - https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1357
# - https://github.com/element-hq/element-web/issues/19544 # - https://github.com/element-hq/element-web/issues/19544
matrix_client_element_container_image_self_build_low_memory_system_patch_enabled: "{{ ansible_memtotal_mb < 4096 }}" matrix_client_element_container_image_self_build_low_memory_system_patch_enabled: "{{ ansible_facts['memtotal_mb'] < 4096 }}"
# renovate: datasource=docker depName=ghcr.io/element-hq/element-web # renovate: datasource=docker depName=ghcr.io/element-hq/element-web
matrix_client_element_version: v1.12.3 matrix_client_element_version: v1.12.9
matrix_client_element_docker_image: "{{ matrix_client_element_docker_image_registry_prefix }}element-hq/element-web:{{ matrix_client_element_version }}" matrix_client_element_docker_image: "{{ matrix_client_element_docker_image_registry_prefix }}element-hq/element-web:{{ matrix_client_element_version }}"
matrix_client_element_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_element_container_image_self_build else matrix_client_element_docker_image_registry_prefix_upstream }}" matrix_client_element_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_element_container_image_self_build else matrix_client_element_docker_image_registry_prefix_upstream }}"

View File

@@ -13,7 +13,7 @@ matrix_client_fluffychat_container_image_self_build_repo: "https://github.com/et
matrix_client_fluffychat_container_image_self_build_version: "{{ 'main' if matrix_client_fluffychat_version == 'latest' else matrix_client_fluffychat_version }}" matrix_client_fluffychat_container_image_self_build_version: "{{ 'main' if matrix_client_fluffychat_version == 'latest' else matrix_client_fluffychat_version }}"
# renovate: datasource=docker depName=ghcr.io/etkecc/fluffychat-web # renovate: datasource=docker depName=ghcr.io/etkecc/fluffychat-web
matrix_client_fluffychat_version: v2.2.0 matrix_client_fluffychat_version: v2.4.0
matrix_client_fluffychat_docker_image: "{{ matrix_client_fluffychat_docker_image_registry_prefix }}etkecc/fluffychat-web:{{ matrix_client_fluffychat_version }}" matrix_client_fluffychat_docker_image: "{{ matrix_client_fluffychat_docker_image_registry_prefix }}etkecc/fluffychat-web:{{ matrix_client_fluffychat_version }}"
matrix_client_fluffychat_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_fluffychat_container_image_self_build else matrix_client_fluffychat_docker_image_registry_prefix_upstream }}" matrix_client_fluffychat_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_fluffychat_container_image_self_build else matrix_client_fluffychat_docker_image_registry_prefix_upstream }}"
matrix_client_fluffychat_docker_image_registry_prefix_upstream: "{{ matrix_client_fluffychat_docker_image_registry_prefix_upstream_default }}" matrix_client_fluffychat_docker_image_registry_prefix_upstream: "{{ matrix_client_fluffychat_docker_image_registry_prefix_upstream_default }}"

View File

@@ -9,7 +9,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: > msg: >
You need to define a required configuration setting (`{{ item }}`) for using FluffyChat Web. You need to define a required configuration setting (`{{ item }}`) for using FluffyChat Web.
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_client_fluffychat_container_network - matrix_client_fluffychat_container_network
@@ -27,7 +27,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_client_fluffychat_container_labels_traefik_hostname - matrix_client_fluffychat_container_labels_traefik_hostname
- matrix_client_fluffychat_container_labels_traefik_path_prefix - matrix_client_fluffychat_container_labels_traefik_path_prefix

View File

@@ -30,7 +30,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_client_hydrogen_container_labels_traefik_hostname - matrix_client_hydrogen_container_labels_traefik_hostname
- matrix_client_hydrogen_container_labels_traefik_path_prefix - matrix_client_hydrogen_container_labels_traefik_path_prefix

View File

@@ -20,7 +20,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: > msg: >
You need to define a required configuration setting (`{{ item }}`) for using SchildiChat Web. You need to define a required configuration setting (`{{ item }}`) for using SchildiChat Web.
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_client_schildichat_default_hs_url - matrix_client_schildichat_default_hs_url
- matrix_client_schildichat_container_network - matrix_client_schildichat_container_network
@@ -39,7 +39,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_client_schildichat_container_labels_traefik_hostname - matrix_client_schildichat_container_labels_traefik_hostname
- matrix_client_schildichat_container_labels_traefik_path_prefix - matrix_client_schildichat_container_labels_traefik_path_prefix

View File

@@ -19,7 +19,7 @@ matrix_conduit_docker_image_registry_prefix: "{{ matrix_conduit_docker_image_reg
matrix_conduit_docker_image_registry_prefix_upstream: "{{ matrix_conduit_docker_image_registry_prefix_upstream_default }}" matrix_conduit_docker_image_registry_prefix_upstream: "{{ matrix_conduit_docker_image_registry_prefix_upstream_default }}"
matrix_conduit_docker_image_registry_prefix_upstream_default: docker.io/ matrix_conduit_docker_image_registry_prefix_upstream_default: docker.io/
# renovate: datasource=docker depName=matrixconduit/matrix-conduit # renovate: datasource=docker depName=matrixconduit/matrix-conduit
matrix_conduit_docker_image_tag: "v0.10.9" matrix_conduit_docker_image_tag: "v0.10.11"
matrix_conduit_docker_image_force_pull: "{{ matrix_conduit_docker_image.endswith(':latest') }}" matrix_conduit_docker_image_force_pull: "{{ matrix_conduit_docker_image.endswith(':latest') }}"
matrix_conduit_base_path: "{{ matrix_base_data_path }}/conduit" matrix_conduit_base_path: "{{ matrix_base_data_path }}/conduit"

View File

@@ -10,7 +10,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`) for using matrix-corporal. You need to define a required configuration setting (`{{ item }}`) for using matrix-corporal.
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_corporal_container_network" - "matrix_corporal_container_network"
- "matrix_corporal_matrix_homeserver_api_endpoint" - "matrix_corporal_matrix_homeserver_api_endpoint"

View File

@@ -18,13 +18,15 @@
matrix_coturn_enabled: true matrix_coturn_enabled: true
matrix_coturn_hostname: ""
matrix_coturn_container_image_self_build: false matrix_coturn_container_image_self_build: false
matrix_coturn_container_image_self_build_repo: "https://github.com/coturn/coturn" matrix_coturn_container_image_self_build_repo: "https://github.com/coturn/coturn"
matrix_coturn_container_image_self_build_repo_version: "docker/{{ matrix_coturn_version }}" matrix_coturn_container_image_self_build_repo_version: "docker/{{ matrix_coturn_version }}"
matrix_coturn_container_image_self_build_repo_dockerfile_path: "docker/coturn/alpine/Dockerfile" matrix_coturn_container_image_self_build_repo_dockerfile_path: "docker/coturn/alpine/Dockerfile"
# renovate: datasource=docker depName=coturn/coturn # renovate: datasource=docker depName=coturn/coturn versioning=loose
matrix_coturn_version: 4.6.2-r11 matrix_coturn_version: 4.8.0
matrix_coturn_docker_image: "{{ matrix_coturn_docker_image_registry_prefix }}coturn/coturn:{{ matrix_coturn_version }}-alpine" matrix_coturn_docker_image: "{{ matrix_coturn_docker_image_registry_prefix }}coturn/coturn:{{ matrix_coturn_version }}-alpine"
matrix_coturn_docker_image_registry_prefix: "{{ 'localhost/' if matrix_coturn_container_image_self_build else matrix_coturn_docker_image_registry_prefix_upstream }}" matrix_coturn_docker_image_registry_prefix: "{{ 'localhost/' if matrix_coturn_container_image_self_build else matrix_coturn_docker_image_registry_prefix_upstream }}"
matrix_coturn_docker_image_registry_prefix_upstream: "{{ matrix_coturn_docker_image_registry_prefix_upstream_default }}" matrix_coturn_docker_image_registry_prefix_upstream: "{{ matrix_coturn_docker_image_registry_prefix_upstream_default }}"
@@ -111,6 +113,9 @@ matrix_coturn_container_turn_range_listen_interface: "{{ '' if matrix_coturn_con
matrix_coturn_turn_udp_min_port: 49152 matrix_coturn_turn_udp_min_port: 49152
matrix_coturn_turn_udp_max_port: 49172 matrix_coturn_turn_udp_max_port: 49172
# Controls the `realm` configuration option
matrix_coturn_realm: "turn.{{ matrix_coturn_hostname }}"
# Controls which authentication method to enable. # Controls which authentication method to enable.
# #
# lt-cred-mech likely provides better compatibility, # lt-cred-mech likely provides better compatibility,
@@ -134,7 +139,7 @@ matrix_coturn_lt_cred_mech_password: ""
# The external IP address of the machine where coturn is. # The external IP address of the machine where coturn is.
# If do not define an IP address here or in `matrix_coturn_turn_external_ip_addresses`, auto-detection via an EchoIP service will be done. # If do not define an IP address here or in `matrix_coturn_turn_external_ip_addresses`, auto-detection via an EchoIP service will be done.
# See `matrix_coturn_turn_external_ip_address_auto_detection_enabled` # See `matrix_coturn_turn_external_ip_address_auto_detection_enabled`
matrix_coturn_turn_external_ip_address: '' matrix_coturn_turn_external_ip_address: ""
matrix_coturn_turn_external_ip_addresses: "{{ [matrix_coturn_turn_external_ip_address] if matrix_coturn_turn_external_ip_address != '' else [] }}" matrix_coturn_turn_external_ip_addresses: "{{ [matrix_coturn_turn_external_ip_address] if matrix_coturn_turn_external_ip_address != '' else [] }}"
# Controls whether external IP address auto-detection should be attempted. # Controls whether external IP address auto-detection should be attempted.
@@ -213,7 +218,7 @@ matrix_coturn_response_origin_only_with_rfc5780_enabled: true
# simple-log # simple-log
# aux-server=1.2.3.4 # aux-server=1.2.3.4
# relay-ip=4.3.2.1 # relay-ip=4.3.2.1
matrix_coturn_additional_configuration: '' matrix_coturn_additional_configuration: ""
# To enable TLS, you need to provide paths to certificates. # To enable TLS, you need to provide paths to certificates.
# Paths defined in `matrix_coturn_tls_cert_path` and `matrix_coturn_tls_key_path` are in-container paths. # Paths defined in `matrix_coturn_tls_cert_path` and `matrix_coturn_tls_key_path` are in-container paths.

View File

@@ -29,6 +29,7 @@
You need to define a required configuration setting (`{{ item.name }}`). You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items: with_items:
- {'name': 'matrix_coturn_hostname', when: true}
- {'name': 'matrix_coturn_turn_static_auth_secret', when: "{{ matrix_coturn_authentication_method == 'auth-secret' }}"} - {'name': 'matrix_coturn_turn_static_auth_secret', when: "{{ matrix_coturn_authentication_method == 'auth-secret' }}"}
- {'name': 'matrix_coturn_lt_cred_mech_username', when: "{{ matrix_coturn_authentication_method == 'lt-cred-mech' }}"} - {'name': 'matrix_coturn_lt_cred_mech_username', when: "{{ matrix_coturn_authentication_method == 'lt-cred-mech' }}"}
- {'name': 'matrix_coturn_lt_cred_mech_password', when: "{{ matrix_coturn_authentication_method == 'lt-cred-mech' }}"} - {'name': 'matrix_coturn_lt_cred_mech_password', when: "{{ matrix_coturn_authentication_method == 'lt-cred-mech' }}"}

View File

@@ -11,7 +11,7 @@ lt-cred-mech
user={{ matrix_coturn_lt_cred_mech_username }}:{{ matrix_coturn_lt_cred_mech_password }} user={{ matrix_coturn_lt_cred_mech_username }}:{{ matrix_coturn_lt_cred_mech_password }}
{% endif %} {% endif %}
realm=turn.{{ matrix_server_fqn_matrix }} realm={{ matrix_coturn_realm }}
min-port={{ matrix_coturn_turn_udp_min_port }} min-port={{ matrix_coturn_turn_udp_min_port }}
max-port={{ matrix_coturn_turn_udp_max_port }} max-port={{ matrix_coturn_turn_udp_max_port }}

View File

@@ -7,15 +7,15 @@
matrix_coturn_turn_uris: |- matrix_coturn_turn_uris: |-
{{ {{
([ ([
'turns:' + matrix_server_fqn_matrix + '?transport=udp', 'turns:' + matrix_coturn_hostname + '?transport=udp',
'turns:' + matrix_server_fqn_matrix + '?transport=tcp', 'turns:' + matrix_coturn_hostname + '?transport=tcp',
] if matrix_coturn_tls_enabled else []) ] if matrix_coturn_tls_enabled else [])
+ +
([ ([
'turn:' + matrix_server_fqn_matrix + '?transport=udp', 'turn:' + matrix_coturn_hostname + '?transport=udp',
] if (matrix_coturn_container_stun_plain_host_bind_port_udp != '' or matrix_coturn_container_network == 'host') else []) ] if (matrix_coturn_container_stun_plain_host_bind_port_udp != '' or matrix_coturn_container_network == 'host') else [])
+ +
([ ([
'turn:' + matrix_server_fqn_matrix + '?transport=tcp', 'turn:' + matrix_coturn_hostname + '?transport=tcp',
] if (matrix_coturn_container_stun_plain_host_bind_port_tcp != '' or matrix_coturn_container_network == 'host') else []) ] if (matrix_coturn_container_stun_plain_host_bind_port_tcp != '' or matrix_coturn_container_network == 'host') else [])
}} }}

View File

@@ -39,7 +39,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_dimension_container_labels_traefik_hostname - matrix_dimension_container_labels_traefik_hostname
- matrix_dimension_container_labels_traefik_path_prefix - matrix_dimension_container_labels_traefik_path_prefix

View File

@@ -11,7 +11,7 @@
matrix_element_admin_enabled: true matrix_element_admin_enabled: true
# renovate: datasource=docker depName=oci.element.io/element-admin # renovate: datasource=docker depName=oci.element.io/element-admin
matrix_element_admin_version: 0.1.8 matrix_element_admin_version: 0.1.10
matrix_element_admin_scheme: https matrix_element_admin_scheme: https

View File

@@ -21,7 +21,7 @@ matrix_element_call_enabled: false
matrix_rtc_enabled: "{{ matrix_element_call_enabled }}" matrix_rtc_enabled: "{{ matrix_element_call_enabled }}"
# renovate: datasource=docker depName=ghcr.io/element-hq/element-call # renovate: datasource=docker depName=ghcr.io/element-hq/element-call
matrix_element_call_version: v0.16.1 matrix_element_call_version: v0.16.3
matrix_element_call_scheme: https matrix_element_call_scheme: https

View File

@@ -17,7 +17,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: > msg: >
You need to define a required configuration setting (`{{ item.name }}`). You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and vars[item.name] | string | length == 0" when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items: with_items:
- {'name': 'matrix_element_call_container_network', when: true} - {'name': 'matrix_element_call_container_network', when: true}
- {'name': 'matrix_element_call_hostname', when: true} - {'name': 'matrix_element_call_hostname', when: true}

View File

@@ -11,7 +11,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_ldap_registration_proxy_hostname" - "matrix_ldap_registration_proxy_hostname"
- "matrix_ldap_registration_proxy_ldap_uri" - "matrix_ldap_registration_proxy_ldap_uri"

View File

@@ -25,7 +25,7 @@ matrix_livekit_jwt_service_container_additional_networks_auto: []
matrix_livekit_jwt_service_container_additional_networks_custom: [] matrix_livekit_jwt_service_container_additional_networks_custom: []
# renovate: datasource=docker depName=ghcr.io/element-hq/lk-jwt-service # renovate: datasource=docker depName=ghcr.io/element-hq/lk-jwt-service
matrix_livekit_jwt_service_version: 0.3.0 matrix_livekit_jwt_service_version: 0.4.1
matrix_livekit_jwt_service_container_image_self_build: false matrix_livekit_jwt_service_container_image_self_build: false
matrix_livekit_jwt_service_container_repo: "https://github.com/element-hq/lk-jwt-service.git" matrix_livekit_jwt_service_container_repo: "https://github.com/element-hq/lk-jwt-service.git"
@@ -68,8 +68,15 @@ matrix_livekit_jwt_service_container_labels_additional_labels: ''
# A list of extra arguments to pass to the container # A list of extra arguments to pass to the container
matrix_livekit_jwt_service_container_extra_arguments: [] matrix_livekit_jwt_service_container_extra_arguments: []
# Controls the LK_JWT_PORT environment variable # Controls the port that the service listens on internally in the container.
matrix_livekit_jwt_service_environment_variable_livekit_jwt_port: 8080 # This is still used for Traefik configuration and container port binding.
matrix_livekit_jwt_service_container_port: 8080
# Controls the LIVEKIT_JWT_BIND environment variable.
# This is the preferred method in v0.4.0+, replacing the deprecated LIVEKIT_JWT_PORT.
# Format: "host:port" or ":port" (to bind to all interfaces).
# The default ":8080" binds to all interfaces on port 8080.
matrix_livekit_jwt_service_environment_variable_livekit_jwt_bind: ":{{ matrix_livekit_jwt_service_container_port }}"
# Controls the LIVEKIT_KEY environment variable # Controls the LIVEKIT_KEY environment variable
matrix_livekit_jwt_service_environment_variable_livekit_key: "" matrix_livekit_jwt_service_environment_variable_livekit_key: ""

View File

@@ -8,7 +8,7 @@
- tags: - tags:
- setup-all - setup-all
- setup-jwt-service - setup-livekit-jwt-service
- install-all - install-all
- install-livekit-jwt-service - install-livekit-jwt-service
block: block:

View File

@@ -6,11 +6,20 @@
--- ---
- name: (Deprecation) Catch and report renamed LiveKit JWT Service settings
ansible.builtin.fail:
msg: >-
Your configuration contains a variable, which now has a different name.
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_livekit_jwt_service_environment_variable_livekit_jwt_port', 'new': 'matrix_livekit_jwt_service_container_port'}
- name: Fail if required LiveKit JWT Service settings are not defined - name: Fail if required LiveKit JWT Service settings are not defined
ansible.builtin.fail: ansible.builtin.fail:
msg: > msg: >
You need to define a required configuration setting (`{{ item.name }}`). You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and vars[item.name] | string | length == 0" when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items: with_items:
- {'name': 'matrix_livekit_jwt_service_hostname', when: true} - {'name': 'matrix_livekit_jwt_service_hostname', when: true}
- {'name': 'matrix_livekit_jwt_service_container_network', when: true} - {'name': 'matrix_livekit_jwt_service_container_network', when: true}

View File

@@ -5,7 +5,7 @@ SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev
SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: AGPL-3.0-or-later
#} #}
LIVEKIT_JWT_PORT={{ matrix_livekit_jwt_service_environment_variable_livekit_jwt_port | int | to_json }} LIVEKIT_JWT_BIND={{ matrix_livekit_jwt_service_environment_variable_livekit_jwt_bind }}
LIVEKIT_KEY={{ matrix_livekit_jwt_service_environment_variable_livekit_key }} LIVEKIT_KEY={{ matrix_livekit_jwt_service_environment_variable_livekit_key }}
LIVEKIT_URL={{ matrix_livekit_jwt_service_environment_variable_livekit_url }} LIVEKIT_URL={{ matrix_livekit_jwt_service_environment_variable_livekit_url }}

View File

@@ -10,7 +10,7 @@ traefik.enable=true
traefik.docker.network={{ matrix_livekit_jwt_service_container_labels_traefik_docker_network }} traefik.docker.network={{ matrix_livekit_jwt_service_container_labels_traefik_docker_network }}
traefik.http.services.matrix-livekit-jwt-service.loadbalancer.server.port={{ matrix_livekit_jwt_service_environment_variable_livekit_jwt_port }} traefik.http.services.matrix-livekit-jwt-service.loadbalancer.server.port={{ matrix_livekit_jwt_service_container_port }}
{% set middlewares = [] %} {% set middlewares = [] %}

View File

@@ -20,7 +20,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--cap-drop=ALL \ --cap-drop=ALL \
--network={{ matrix_livekit_jwt_service_container_network }} \ --network={{ matrix_livekit_jwt_service_container_network }} \
{% if matrix_livekit_jwt_service_container_http_host_bind_port %} {% if matrix_livekit_jwt_service_container_http_host_bind_port %}
-p {{ matrix_livekit_jwt_service_container_http_host_bind_port }}:{{ matrix_livekit_jwt_service_environment_variable_livekit_jwt_port }} \ -p {{ matrix_livekit_jwt_service_container_http_host_bind_port }}:{{ matrix_livekit_jwt_service_container_port }} \
{% endif %} {% endif %}
--env-file={{ matrix_livekit_jwt_service_base_path }}/env \ --env-file={{ matrix_livekit_jwt_service_base_path }}/env \
--label-file={{ matrix_livekit_jwt_service_base_path }}/labels \ --label-file={{ matrix_livekit_jwt_service_base_path }}/labels \

View File

@@ -0,0 +1,172 @@
# SPDX-FileCopyrightText: 2023 - 2024 Nikita Chernyi
# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev
# SPDX-FileCopyrightText: 2024 Sergio Durigan Junior
# SPDX-FileCopyrightText: 2025 MASH project contributors
# SPDX-FileCopyrightText: 2025 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later
---
# Project source code URL: https://app.radicle.xyz/nodes/seed.radicle.garden/rad%3Az3Re1EQbd186vUQDwHByYiLadsVWY
matrix_matrixto_enabled: true
matrix_matrixto_identifier: matrix-matrixto
matrix_matrixto_base_path: "/{{ matrix_matrixto_identifier }}"
matrix_matrixto_version: 1.2.17-1
matrix_matrixto_scheme: https
# The hostname at which Matrix.to is served.
matrix_matrixto_hostname: ""
# The path at which Matrix.to is exposed.
# This value must either be `/` or not end with a slash (e.g. `/matrixto`).
#
# Hosting Matrix.to under a subpath does not seem to be possible due to Matrix.to's
# technical limitations.
matrix_matrixto_path_prefix: /
# There does not exist a known pre-built container image. It needs to be built locally.
matrix_matrixto_container_image_self_build: true
matrix_matrixto_container_image_self_build_name: "shirahara/matrixto:{{ matrix_matrixto_container_image_self_build_repo_version }}"
matrix_matrixto_container_image_self_build_repo: "https://seed.radicle.garden/z3Re1EQbd186vUQDwHByYiLadsVWY.git"
matrix_matrixto_container_image_self_build_repo_version: "{{ matrix_matrixto_version if matrix_matrixto_version != 'latest' else 'main' }}"
matrix_matrixto_container_image_self_build_src_files_path: "{{ matrix_matrixto_base_path }}/docker-src"
# Controls whether the container exposes its HTTP port (tcp/8080 in the container).
#
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:2586"), or empty string to not expose.
matrix_matrixto_container_http_host_bind_port: ""
# The base container network. It will be auto-created by this role if it doesn't exist already.
matrix_matrixto_container_network: "{{ matrix_matrixto_identifier }}"
# The port number in the container
matrix_matrixto_container_http_port: 5000
# A list of additional container networks that the container would be connected to.
# The role does not create these networks, so make sure they already exist.
# Use this to expose this container to another reverse proxy, which runs in a different container network.
matrix_matrixto_container_additional_networks: "{{ matrix_matrixto_container_additional_networks_auto + matrix_matrixto_container_additional_networks_custom }}"
matrix_matrixto_container_additional_networks_auto: []
matrix_matrixto_container_additional_networks_custom: []
# A list of additional "volumes" to mount in the container.
# This list gets populated dynamically at runtime. You can provide a different default value,
# if you wish to mount your own files into the container.
# Contains definition objects like this: `{"type": "bind", "src": "/outside", "dst": "/inside", "options": "readonly"}.
# See the `--mount` documentation for the `docker run` command.
matrix_matrixto_container_additional_volumes: "{{ matrix_matrixto_container_additional_volumes_auto + matrix_matrixto_container_additional_volumes_custom }}"
matrix_matrixto_container_additional_volumes_auto: []
matrix_matrixto_container_additional_volumes_custom: []
# matrix_matrixto_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
# See `../templates/labels.j2` for details.
#
# To inject your own other container labels, see `matrix_matrixto_container_labels_additional_labels`.
matrix_matrixto_container_labels_traefik_enabled: true
matrix_matrixto_container_labels_traefik_docker_network: "{{ matrix_matrixto_container_network }}"
matrix_matrixto_container_labels_traefik_hostname: "{{ matrix_matrixto_hostname }}"
# The path prefix must either be `/` or not end with a slash (e.g. `/matrixto`).
matrix_matrixto_container_labels_traefik_path_prefix: "{{ matrix_matrixto_path_prefix }}"
matrix_matrixto_container_labels_traefik_rule: "Host(`{{ matrix_matrixto_container_labels_traefik_hostname }}`){% if matrix_matrixto_container_labels_traefik_path_prefix != '/' %} && PathPrefix(`{{ matrix_matrixto_container_labels_traefik_path_prefix }}`){% endif %}"
matrix_matrixto_container_labels_traefik_priority: 0
matrix_matrixto_container_labels_traefik_entrypoints: web-secure
matrix_matrixto_container_labels_traefik_tls: "{{ matrix_matrixto_container_labels_traefik_entrypoints != 'web' }}"
matrix_matrixto_container_labels_traefik_tls_certResolver: default # noqa var-naming
# Controls which additional headers to attach to all HTTP requests.
# To add your own custom request headers, use `matrix_matrixto_container_labels_traefik_additional_request_headers_custom`
matrix_matrixto_container_labels_traefik_additional_request_headers: "{{ matrix_matrixto_container_labels_traefik_additional_request_headers_auto | combine(matrix_matrixto_container_labels_traefik_additional_request_headers_custom) }}"
matrix_matrixto_container_labels_traefik_additional_request_headers_auto: {}
matrix_matrixto_container_labels_traefik_additional_request_headers_custom: {}
# Controls which additional headers to attach to all HTTP responses.
# To add your own custom response headers, use `matrix_matrixto_container_labels_traefik_additional_response_headers_custom`
matrix_matrixto_container_labels_traefik_additional_response_headers: "{{ matrix_matrixto_container_labels_traefik_additional_response_headers_auto | combine(matrix_matrixto_container_labels_traefik_additional_response_headers_custom) }}"
matrix_matrixto_container_labels_traefik_additional_response_headers_auto: |
{{
{}
| combine ({'X-XSS-Protection': matrix_matrixto_http_header_xss_protection} if matrix_matrixto_http_header_xss_protection else {})
| combine ({'X-Content-Type-Options': matrix_matrixto_http_header_content_type_options} if matrix_matrixto_http_header_content_type_options else {})
| combine ({'Content-Security-Policy': matrix_matrixto_http_header_content_security_policy} if matrix_matrixto_http_header_content_security_policy else {})
| combine ({'Permissions-Policy': matrix_matrixto_http_header_permissions_policy} if matrix_matrixto_http_header_permissions_policy else {})
| combine ({'Strict-Transport-Security': matrix_matrixto_http_header_strict_transport_security} if matrix_matrixto_http_header_strict_transport_security and matrix_matrixto_container_labels_traefik_tls else {})
}}
matrix_matrixto_container_labels_traefik_additional_response_headers_custom: {}
# matrix_matrixto_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file.
# See `../templates/labels.j2` for details.
#
# Example:
# matrix_matrixto_container_labels_additional_labels: |
# my.label=1
# another.label="here"
matrix_matrixto_container_labels_additional_labels: ""
# A list of extra arguments to pass to the container (`docker run` command)
matrix_matrixto_container_extra_arguments: []
# Specifies the value of the `X-XSS-Protection` header
# Stops pages from loading when they detect reflected cross-site scripting (XSS) attacks.
#
# Learn more about it is here:
# - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
# - https://portswigger.net/web-security/cross-site-scripting/reflected
matrix_matrixto_http_header_xss_protection: "1; mode=block"
# Specifies the value of the `X-Content-Type-Options` header.
# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
matrix_matrixto_http_header_content_type_options: nosniff
# Specifies the value of the `Content-Security-Policy` header.
# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
matrix_matrixto_http_header_content_security_policy: frame-ancestors 'self'
# Specifies the value of the `Permissions-Policy` header.
# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Permissions-Policy
matrix_matrixto_http_header_permissions_policy: "{{ 'interest-cohort=()' if matrix_matrixto_floc_optout_enabled else '' }}"
# Specifies the value of the `Strict-Transport-Security` header.
# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
matrix_matrixto_http_header_strict_transport_security: "max-age=31536000; includeSubDomains{{ '; preload' if matrix_matrixto_hsts_preload_enabled else '' }}"
# Controls whether to send a "Permissions-Policy interest-cohort=();" header along with all responses
#
# Learn more about what it is here:
# - https://www.eff.org/deeplinks/2021/03/googles-floc-terrible-idea
# - https://paramdeo.com/blog/opting-your-website-out-of-googles-floc-network
# - https://amifloced.org/
#
# Of course, a better solution is to just stop using browsers (like Chrome), which participate in such tracking practices.
# See: `matrix_matrixto_http_header_permissions_policy`
matrix_matrixto_floc_optout_enabled: true
# Controls if HSTS preloading is enabled
#
# In its strongest and recommended form, the [HSTS policy](https://www.chromium.org/hsts) includes all subdomains, and
# indicates a willingness to be "preloaded" into browsers:
# `Strict-Transport-Security: max-age=31536000; includeSubDomains; preload`
# For more information visit:
# - https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
# - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
# - https://hstspreload.org/#opt-in
# See: `matrix_matrixto_http_header_strict_transport_security`
matrix_matrixto_hsts_preload_enabled: false
# List of systemd services that the Matrix.to systemd service depends on
matrix_matrixto_systemd_required_services_list: "{{ matrix_matrixto_systemd_required_services_list_default + matrix_matrixto_systemd_required_services_list_auto + matrix_matrixto_systemd_required_services_list_custom }}"
matrix_matrixto_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_matrixto_systemd_required_services_list_auto: []
matrix_matrixto_systemd_required_services_list_custom: []
# List of systemd services that the Matrix.to systemd service wants
matrix_matrixto_systemd_wanted_services_list: "{{ matrix_matrixto_systemd_wanted_services_list_default + matrix_matrixto_systemd_wanted_services_list_auto + matrix_matrixto_systemd_wanted_services_list_custom }}"
matrix_matrixto_systemd_wanted_services_list_default: []
matrix_matrixto_systemd_wanted_services_list_auto: []
matrix_matrixto_systemd_wanted_services_list_custom: []
# Additional environment variables.
matrix_matrixto_environment_variables_additional_variables: ""

View File

@@ -0,0 +1,72 @@
# SPDX-FileCopyrightText: 2023 - 2025 Slavi Pantaleev
# SPDX-FileCopyrightText: 2025 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later
---
- name: Ensure Matrix.to path exists
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: "0750"
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- "{{ matrix_matrixto_base_path }}"
- name: Ensure Matrix.to support files installed
ansible.builtin.template:
src: "{{ role_path }}/templates/{{ item }}.j2"
dest: "{{ matrix_matrixto_base_path }}/{{ item }}"
mode: "0640"
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- env
- labels
- name: Ensure Matrix.to repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_matrixto_container_image_self_build_repo }}"
version: "{{ matrix_matrixto_container_image_self_build_repo_version }}"
dest: "{{ matrix_matrixto_container_image_self_build_src_files_path }}"
force: "yes"
register: matrix_matrixto_git_pull_results
- name: Ensure Matrix.to container image is built
community.docker.docker_image:
name: "{{ matrix_matrixto_container_image_self_build_name }}"
source: build
force_source: "{{ matrix_matrixto_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_matrixto_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_matrixto_container_image_self_build_src_files_path }}"
pull: true
args:
- name: Ensure Matrix.to container network is created via community.docker.docker_network
when: devture_systemd_docker_base_container_network_creation_method == 'ansible-module'
community.docker.docker_network:
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
name: "{{ matrix_matrixto_container_network }}"
driver: bridge
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"
- name: Ensure Matrix.to container network is created via ansible.builtin.command
when: devture_systemd_docker_base_container_network_creation_method == 'command'
ansible.builtin.command:
cmd: >-
{{ devture_systemd_docker_base_host_command_docker }} network create
{% if devture_systemd_docker_base_ipv6_enabled %}--ipv6{% endif %}
{{ devture_systemd_docker_base_container_networks_driver_options_string }}
{{ matrix_matrixto_container_network }}
register: network_creation_result
changed_when: network_creation_result.rc == 0
failed_when: network_creation_result.rc != 0 and 'already exists' not in network_creation_result.stderr
- name: Ensure Matrix.to systemd service is present
ansible.builtin.template:
src: "{{ role_path }}/templates/systemd/matrix-matrixto.service.j2"
dest: "{{ devture_systemd_docker_base_systemd_path }}/{{ matrix_matrixto_identifier }}.service"
mode: "0644"

View File

@@ -0,0 +1,27 @@
# SPDX-FileCopyrightText: 2023 Slavi Pantaleev
# SPDX-FileCopyrightText: 2025 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later
---
- name: Perform Matrix.to installation tasks
when: matrix_matrixto_enabled | bool
tags:
- setup-all
- setup-matrixto
- install-all
- install-matrixto
block:
- name: Validate Matrix.to configuration
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"
- name: Install Matrix.to
ansible.builtin.include_tasks: "{{ role_path }}/tasks/install.yml"
- name: Perform Matrix.to uninstallation tasks
when: not matrix_matrixto_enabled | bool
tags:
- setup-all
- setup-matrixto
block:
- name: Uninstall Matrix.to
ansible.builtin.include_tasks: "{{ role_path }}/tasks/uninstall.yml"

View File

@@ -0,0 +1,45 @@
# SPDX-FileCopyrightText: 2023 Slavi Pantaleev
# SPDX-FileCopyrightText: 2025 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later
---
- name: Check existence of Matrix.to systemd service
ansible.builtin.stat:
path: "{{ devture_systemd_docker_base_systemd_path }}/{{ matrix_matrixto_identifier }}.service"
register: matrix_matrixto_service_stat
- name: Uninstall Matrix.to systemd services and files
when: matrix_matrixto_service_stat.stat.exists | bool
block:
- name: Ensure Matrix.to systemd service is stopped
ansible.builtin.service:
name: "{{ matrix_matrixto_identifier }}"
state: stopped
enabled: false
daemon_reload: true
- name: Ensure Matrix.to systemd service does not exist
ansible.builtin.file:
path: "{{ devture_systemd_docker_base_systemd_path }}/{{ matrix_matrixto_identifier }}.service"
state: absent
- name: Ensure Matrix.to container network does not exist via community.docker.docker_network
when: devture_systemd_docker_base_container_network_creation_method == 'ansible-module'
community.docker.docker_network:
name: "{{ matrix_matrixto_container_network }}"
state: absent
- name: Ensure Matrix.to container network does not exist via ansible.builtin.command
when: devture_systemd_docker_base_container_network_creation_method == 'command'
ansible.builtin.command:
cmd: >-
{{ devture_systemd_docker_base_host_command_docker }} network rm
{{ matrix_matrixto_container_network }}
register: network_deletion_result
changed_when: matrix_matrixto_container_network in network_deletion_result.stdout
- name: Ensure Matrix.to path does not exist
ansible.builtin.file:
path: "{{ matrix_matrixto_base_path }}"
state: absent

View File

@@ -0,0 +1,43 @@
# SPDX-FileCopyrightText: 2023 Slavi Pantaleev
# SPDX-FileCopyrightText: 2025 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later
---
- name: Fail if required Matrix.to settings not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item }}`).
when: "lookup('vars', item, default='') | string | length == 0"
with_items:
- matrix_matrixto_hostname
- matrix_matrixto_path_prefix
- matrix_matrixto_container_network
- name: Run if Traefik is enabled
when: matrix_matrixto_container_labels_traefik_enabled | bool
block:
- name: Fail if Traefik settings required for Matrix.to are not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item }}`).
when: "lookup('vars', item, default='') | string | length == 0"
with_items:
- matrix_matrixto_container_labels_traefik_hostname
- matrix_matrixto_container_labels_traefik_path_prefix
- name: Fail if matrix_matrixto_container_labels_traefik_path_prefix is different than /
ansible.builtin.fail:
msg: >-
matrix_matrixto_container_labels_traefik_path_prefix (`{{ matrix_matrixto_container_labels_traefik_path_prefix }}`) must be `/`.
Matrix.to does not support hosting under a subpath yet.
when: "matrix_matrixto_container_labels_traefik_path_prefix != '/'"
# We ensure it doesn't end with a slash, because we handle both (slash and no-slash).
# Knowing that `matrix_matrixto_container_labels_traefik_path_prefix` does not end with a slash
# ensures we know how to set these routes up without having to do "does it end with a slash" checks elsewhere.
- name: Fail if matrix_matrixto_container_labels_traefik_path_prefix ends with a slash
ansible.builtin.fail:
msg: >-
matrix_matrixto_container_labels_traefik_path_prefix (`{{ matrix_matrixto_container_labels_traefik_path_prefix }}`) must either be `/` or not end with a slash (e.g. `/matrixto`).
when: "matrix_matrixto_container_labels_traefik_path_prefix != '/' and matrix_matrixto_container_labels_traefik_path_prefix[-1] == '/'"

View File

@@ -0,0 +1,7 @@
{#
SPDX-FileCopyrightText: 2025 Suguru Hirahara
SPDX-License-Identifier: AGPL-3.0-or-later
#}
{{ matrix_matrixto_environment_variables_additional_variables }}

View File

@@ -0,0 +1,59 @@
{#
SPDX-FileCopyrightText: 2023 Slavi Pantaleev
SPDX-FileCopyrightText: 2025 Suguru Hirahara
SPDX-License-Identifier: AGPL-3.0-or-later
#}
{% if matrix_matrixto_container_labels_traefik_enabled %}
traefik.enable=true
{% if matrix_matrixto_container_labels_traefik_docker_network %}
traefik.docker.network={{ matrix_matrixto_container_labels_traefik_docker_network }}
{% endif %}
{% set middlewares = [] %}
{% if matrix_matrixto_container_labels_traefik_path_prefix != '/' %}
traefik.http.middlewares.{{ matrix_matrixto_identifier }}-slashless-redirect.redirectregex.regex=^({{ matrix_matrixto_container_labels_traefik_path_prefix | quote }})$
traefik.http.middlewares.{{ matrix_matrixto_identifier }}-slashless-redirect.redirectregex.replacement=${1}/
{% set middlewares = middlewares + [matrix_matrixto_identifier + '-slashless-redirect'] %}
{% endif %}
{% if matrix_matrixto_container_labels_traefik_path_prefix != '/' %}
traefik.http.middlewares.{{ matrix_matrixto_identifier }}-strip-prefix.stripprefix.prefixes={{ matrix_matrixto_container_labels_traefik_path_prefix }}
{% set middlewares = middlewares + [matrix_matrixto_identifier + '-strip-prefix'] %}
{% endif %}
{% if matrix_matrixto_container_labels_traefik_additional_request_headers.keys() | length > 0 %}
{% for name, value in matrix_matrixto_container_labels_traefik_additional_request_headers.items() %}
traefik.http.middlewares.{{ matrix_matrixto_identifier }}-add-request-headers.headers.customrequestheaders.{{ name }}={{ value }}
{% endfor %}
{% set middlewares = middlewares + [matrix_matrixto_identifier + '-add-request-headers'] %}
{% endif %}
{% if matrix_matrixto_container_labels_traefik_additional_response_headers.keys() | length > 0 %}
{% for name, value in matrix_matrixto_container_labels_traefik_additional_response_headers.items() %}
traefik.http.middlewares.{{ matrix_matrixto_identifier }}-add-response-headers.headers.customresponseheaders.{{ name }}={{ value }}
{% endfor %}
{% set middlewares = middlewares + [matrix_matrixto_identifier + '-add-response-headers'] %}
{% endif %}
traefik.http.routers.{{ matrix_matrixto_identifier }}.rule={{ matrix_matrixto_container_labels_traefik_rule }}
{% if matrix_matrixto_container_labels_traefik_priority | int > 0 %}
traefik.http.routers.{{ matrix_matrixto_identifier }}.priority={{ matrix_matrixto_container_labels_traefik_priority }}
{% endif %}
traefik.http.routers.{{ matrix_matrixto_identifier }}.service={{ matrix_matrixto_identifier }}
{% if middlewares | length > 0 %}
traefik.http.routers.{{ matrix_matrixto_identifier }}.middlewares={{ middlewares | join(',') }}
{% endif %}
traefik.http.routers.{{ matrix_matrixto_identifier }}.entrypoints={{ matrix_matrixto_container_labels_traefik_entrypoints }}
traefik.http.routers.{{ matrix_matrixto_identifier }}.tls={{ matrix_matrixto_container_labels_traefik_tls | to_json }}
{% if matrix_matrixto_container_labels_traefik_tls %}
traefik.http.routers.{{ matrix_matrixto_identifier }}.tls.certResolver={{ matrix_matrixto_container_labels_traefik_tls_certResolver }}
{% endif %}
traefik.http.services.{{ matrix_matrixto_identifier }}.loadbalancer.server.port={{ matrix_matrixto_container_http_port }}
{% endif %}
{{ matrix_matrixto_container_labels_additional_labels }}

View File

@@ -0,0 +1,59 @@
{#
SPDX-FileCopyrightText: 2023 Slavi Pantaleev
SPDX-FileCopyrightText: 2024 Nikita Chernyi
SPDX-FileCopyrightText: 2025 Suguru Hirahara
SPDX-License-Identifier: AGPL-3.0-or-later
#}
[Unit]
Description=Matrix.to ({{ matrix_matrixto_identifier }})
{% for service in matrix_matrixto_systemd_required_services_list %}
Requires={{ service }}
After={{ service }}
{% endfor %}
{% for service in matrix_matrixto_systemd_wanted_services_list %}
Wants={{ service }}
{% endfor %}
DefaultDependencies=no
[Service]
Type=simple
Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}"
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_matrixto_identifier }} 2>/dev/null || true'
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_matrixto_identifier }} 2>/dev/null || true'
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--rm \
--name={{ matrix_matrixto_identifier }} \
--log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \
--read-only \
--network={{ matrix_matrixto_container_network }} \
{% if matrix_matrixto_container_http_host_bind_port %}
-p {{ matrix_matrixto_container_http_host_bind_port }}:{{ matrix_matrixto_container_http_port }} \
{% endif %}
--env-file={{ matrix_matrixto_base_path }}/env \
--label-file={{ matrix_matrixto_base_path }}/labels \
--tmpfs=/tmp:rw,noexec,nosuid,size=128m \
{% for arg in matrix_matrixto_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_matrixto_container_image_self_build_name }}
{% for network in matrix_matrixto_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} {{ matrix_matrixto_identifier }}
{% endfor %}
ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach {{ matrix_matrixto_identifier }}
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} {{ matrix_matrixto_identifier }} 2>/dev/null || true'
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm {{ matrix_matrixto_identifier }} 2>/dev/null || true'
Restart=always
RestartSec=30
SyslogIdentifier={{ matrix_matrixto_identifier }}
[Install]
WantedBy=multi-user.target

View File

@@ -895,13 +895,7 @@ matrix_media_repo_redis_database_number: 0
# The Redis shards that should be used by the media repo in the ring. The names of the # The Redis shards that should be used by the media repo in the ring. The names of the
# shards are for your reference and have no bearing on the connection, but must be unique. # shards are for your reference and have no bearing on the connection, but must be unique.
matrix_media_repo_redis_shards: matrix_media_repo_redis_shards: []
- name: "server1"
addr: ":7000"
- name: "server2"
addr: ":7001"
- name: "server3"
addr: ":7002"
# Optional sentry (https://sentry.io/) configuration for the media repo # Optional sentry (https://sentry.io/) configuration for the media repo

View File

@@ -9,7 +9,7 @@
msg: "The `{{ item }}` variable must be defined and have a non-null value." msg: "The `{{ item }}` variable must be defined and have a non-null value."
with_items: with_items:
- "matrix_pantalaimon_homeserver_url" - "matrix_pantalaimon_homeserver_url"
when: "vars[item] == '' or vars[item] is none" when: "lookup('vars', item, default='') == '' or lookup('vars', item, default='') is none"
- name: (Deprecation) Catch and report renamed Pantalaimon variables - name: (Deprecation) Catch and report renamed Pantalaimon variables
ansible.builtin.fail: ansible.builtin.fail:

View File

@@ -24,7 +24,7 @@ matrix_rageshake_path_prefix: /
# There are no stable container image tags yet. # There are no stable container image tags yet.
# See: https://github.com/matrix-org/rageshake/issues/69 # See: https://github.com/matrix-org/rageshake/issues/69
# renovate: datasource=docker depName=ghcr.io/matrix-org/rageshake # renovate: datasource=docker depName=ghcr.io/matrix-org/rageshake
matrix_rageshake_version: 1.17.0 matrix_rageshake_version: 1.17.1
matrix_rageshake_base_path: "{{ matrix_base_data_path }}/rageshake" matrix_rageshake_base_path: "{{ matrix_base_data_path }}/rageshake"
matrix_rageshake_config_path: "{{ matrix_rageshake_base_path }}/config" matrix_rageshake_config_path: "{{ matrix_rageshake_base_path }}/config"

View File

@@ -9,7 +9,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: > msg: >
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_rageshake_hostname - matrix_rageshake_hostname
- matrix_rageshake_path_prefix - matrix_rageshake_path_prefix
@@ -29,7 +29,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_rageshake_container_labels_traefik_hostname - matrix_rageshake_container_labels_traefik_hostname
- matrix_rageshake_container_labels_traefik_path_prefix - matrix_rageshake_container_labels_traefik_path_prefix

View File

@@ -13,7 +13,7 @@ matrix_static_files_enabled: true
matrix_static_files_identifier: matrix-static-files matrix_static_files_identifier: matrix-static-files
# renovate: datasource=docker depName=joseluisq/static-web-server # renovate: datasource=docker depName=joseluisq/static-web-server
matrix_static_files_version: 2.39.0 matrix_static_files_version: 2.40.1
matrix_static_files_base_path: "{{ matrix_base_data_path }}/{{ 'static-files' if matrix_static_files_identifier == 'matrix-static-files' else matrix_static_files_identifier }}" matrix_static_files_base_path: "{{ matrix_base_data_path }}/{{ 'static-files' if matrix_static_files_identifier == 'matrix-static-files' else matrix_static_files_identifier }}"
matrix_static_files_config_path: "{{ matrix_static_files_base_path }}/config" matrix_static_files_config_path: "{{ matrix_static_files_base_path }}/config"

View File

@@ -8,7 +8,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item.name }}`). You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and vars[item.name] | string | length == 0" when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items: with_items:
- {'name': 'matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_hostname', when: "{{ matrix_static_files_container_labels_well_known_matrix_endpoint_enabled }}"} - {'name': 'matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_hostname', when: "{{ matrix_static_files_container_labels_well_known_matrix_endpoint_enabled }}"}
- {'name': 'matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_path_prefix', when: "{{ matrix_static_files_container_labels_well_known_matrix_endpoint_enabled }}"} - {'name': 'matrix_static_files_container_labels_well_known_matrix_endpoint_traefik_path_prefix', when: "{{ matrix_static_files_container_labels_well_known_matrix_endpoint_enabled }}"}

View File

@@ -29,7 +29,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
{% endif %} {% endif %}
--env-file={{ matrix_static_files_base_path }}/env \ --env-file={{ matrix_static_files_base_path }}/env \
--label-file={{ matrix_static_files_base_path }}/labels \ --label-file={{ matrix_static_files_base_path }}/labels \
--mount type=bind,src={{ matrix_static_files_public_path }},dst=/public,ro \ --mount type=bind,src={{ matrix_static_files_public_path }},dst=/var/public,ro \
--mount type=bind,src={{ matrix_static_files_config_path }},dst=/config,ro \ --mount type=bind,src={{ matrix_static_files_config_path }},dst=/config,ro \
{{ matrix_static_files_container_image }} {{ matrix_static_files_container_image }}

View File

@@ -9,7 +9,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: > msg: >
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_sygnal_hostname - matrix_sygnal_hostname
- matrix_sygnal_path_prefix - matrix_sygnal_path_prefix
@@ -21,7 +21,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_sygnal_container_labels_traefik_hostname - matrix_sygnal_container_labels_traefik_hostname
- matrix_sygnal_container_labels_traefik_path_prefix - matrix_sygnal_container_labels_traefik_path_prefix

View File

@@ -25,7 +25,7 @@ matrix_synapse_admin_container_image_self_build: false
matrix_synapse_admin_container_image_self_build_repo: "https://github.com/etkecc/synapse-admin.git" matrix_synapse_admin_container_image_self_build_repo: "https://github.com/etkecc/synapse-admin.git"
# renovate: datasource=docker depName=ghcr.io/etkecc/synapse-admin # renovate: datasource=docker depName=ghcr.io/etkecc/synapse-admin
matrix_synapse_admin_version: v0.11.1-etke49 matrix_synapse_admin_version: v0.11.1-etke52
matrix_synapse_admin_docker_image: "{{ matrix_synapse_admin_docker_image_registry_prefix }}etkecc/synapse-admin:{{ matrix_synapse_admin_version }}" matrix_synapse_admin_docker_image: "{{ matrix_synapse_admin_docker_image_registry_prefix }}etkecc/synapse-admin:{{ matrix_synapse_admin_version }}"
matrix_synapse_admin_docker_image_registry_prefix: "{{ 'localhost/' if matrix_synapse_admin_container_image_self_build else matrix_synapse_admin_docker_image_registry_prefix_upstream }}" matrix_synapse_admin_docker_image_registry_prefix: "{{ 'localhost/' if matrix_synapse_admin_container_image_self_build else matrix_synapse_admin_docker_image_registry_prefix_upstream }}"
matrix_synapse_admin_docker_image_registry_prefix_upstream: "{{ matrix_synapse_admin_docker_image_registry_prefix_upstream_default }}" matrix_synapse_admin_docker_image_registry_prefix_upstream: "{{ matrix_synapse_admin_docker_image_registry_prefix_upstream_default }}"

View File

@@ -26,7 +26,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_synapse_admin_container_labels_traefik_hostname - matrix_synapse_admin_container_labels_traefik_hostname
- matrix_synapse_admin_container_labels_traefik_path_prefix - matrix_synapse_admin_container_labels_traefik_path_prefix

View File

@@ -20,7 +20,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: > msg: >
You need to define a required configuration setting (`{{ item }}`). You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- matrix_synapse_auto_compressor_database_hostname - matrix_synapse_auto_compressor_database_hostname
- matrix_synapse_auto_compressor_database_password - matrix_synapse_auto_compressor_database_password

View File

@@ -24,7 +24,7 @@
matrix_synapse_reverse_proxy_companion_enabled: true matrix_synapse_reverse_proxy_companion_enabled: true
# renovate: datasource=docker depName=nginx # renovate: datasource=docker depName=nginx
matrix_synapse_reverse_proxy_companion_version: 1.29.3-alpine matrix_synapse_reverse_proxy_companion_version: 1.29.4-alpine
matrix_synapse_reverse_proxy_companion_base_path: "{{ matrix_synapse_base_path }}/reverse-proxy-companion" matrix_synapse_reverse_proxy_companion_base_path: "{{ matrix_synapse_base_path }}/reverse-proxy-companion"
matrix_synapse_reverse_proxy_companion_confd_path: "{{ matrix_synapse_reverse_proxy_companion_base_path }}/conf.d" matrix_synapse_reverse_proxy_companion_confd_path: "{{ matrix_synapse_reverse_proxy_companion_base_path }}/conf.d"

View File

@@ -16,7 +16,7 @@ matrix_synapse_enabled: true
matrix_synapse_github_org_and_repo: element-hq/synapse matrix_synapse_github_org_and_repo: element-hq/synapse
# renovate: datasource=docker depName=ghcr.io/element-hq/synapse # renovate: datasource=docker depName=ghcr.io/element-hq/synapse
matrix_synapse_version: v1.141.0 matrix_synapse_version: v1.146.0
matrix_synapse_username: '' matrix_synapse_username: ''
matrix_synapse_uid: '' matrix_synapse_uid: ''
@@ -128,6 +128,8 @@ matrix_synapse_ext_path: "{{ matrix_synapse_base_path }}/ext"
matrix_synapse_ext_s3_storage_provider_base_path: "{{ matrix_synapse_base_path }}/ext/s3-storage-provider" matrix_synapse_ext_s3_storage_provider_base_path: "{{ matrix_synapse_base_path }}/ext/s3-storage-provider"
matrix_synapse_ext_s3_storage_provider_bin_path: "{{ matrix_synapse_ext_s3_storage_provider_base_path }}/bin" matrix_synapse_ext_s3_storage_provider_bin_path: "{{ matrix_synapse_ext_s3_storage_provider_base_path }}/bin"
matrix_synapse_ext_s3_storage_provider_data_path: "{{ matrix_synapse_ext_s3_storage_provider_base_path }}/data" matrix_synapse_ext_s3_storage_provider_data_path: "{{ matrix_synapse_ext_s3_storage_provider_base_path }}/data"
# extra arguments to pass to s3-storage-provider script when starting Synapse container
matrix_synapse_ext_s3_storage_provider_container_arguments: []
matrix_synapse_container_client_api_port: 8008 matrix_synapse_container_client_api_port: 8008
@@ -675,7 +677,7 @@ matrix_synapse_caches_sync_response_cache_duration: "2m"
# Controls how much memory this role thinks is available for cache-size-related calculations. # Controls how much memory this role thinks is available for cache-size-related calculations.
# By default, all of the server's memory is taken into account, but you can adjust this. # By default, all of the server's memory is taken into account, but you can adjust this.
# You can also go for directly adjusting cache-sizes (matrix_synapse_cache_autotuning_max_cache_memory_usage, matrix_synapse_cache_autotuning_target_cache_memory_usage) instead of adjusting this. # You can also go for directly adjusting cache-sizes (matrix_synapse_cache_autotuning_max_cache_memory_usage, matrix_synapse_cache_autotuning_target_cache_memory_usage) instead of adjusting this.
matrix_synapse_cache_size_calculations_memtotal_bytes: "{{ (ansible_memtotal_mb * 1024 * 1024) | int }}" matrix_synapse_cache_size_calculations_memtotal_bytes: "{{ (ansible_facts['memtotal_mb'] * 1024 * 1024) | int }}"
# Controls the cap to use for matrix_synapse_cache_autotuning_max_cache_memory_usage. # Controls the cap to use for matrix_synapse_cache_autotuning_max_cache_memory_usage.
matrix_synapse_cache_size_calculations_max_cache_memory_usage_cap_bytes: "{{ (2 * 1024 * 1024 * 1024) }}" # 2GB matrix_synapse_cache_size_calculations_max_cache_memory_usage_cap_bytes: "{{ (2 * 1024 * 1024 * 1024) }}" # 2GB
@@ -1090,6 +1092,11 @@ matrix_synapse_workers_media_repository_workers_container_arguments: []
# Adjusting this value manually is generally not necessary. # Adjusting this value manually is generally not necessary.
matrix_synapse_enable_media_repo: "{{ not matrix_synapse_ext_media_repo_enabled and (not matrix_synapse_workers_enabled or (matrix_synapse_workers_enabled_list | selectattr('type', 'equalto', 'media_repository') | list | length == 0)) }}" matrix_synapse_enable_media_repo: "{{ not matrix_synapse_ext_media_repo_enabled and (not matrix_synapse_workers_enabled or (matrix_synapse_workers_enabled_list | selectattr('type', 'equalto', 'media_repository') | list | length == 0)) }}"
# matrix_synapse_enable_local_media_storage controls whether the local on-disk media storage provider is enabled in Synapse.
# When disabled, media is stored only in configured `media_storage_providers` and temporary files are used for processing (no local caching).
# Warning: If this option is set to false and no `media_storage_providers` are configured, all media requests will return 404 errors as there will be no storage backend available.
matrix_synapse_enable_local_media_storage: true
# matrix_synapse_enable_authenticated_media controls if authenticated media is enabled. # matrix_synapse_enable_authenticated_media controls if authenticated media is enabled.
# If enabled all "old" media remains accessible over the legacy endpoints but new media is blocked. # If enabled all "old" media remains accessible over the legacy endpoints but new media is blocked.
# while this option is enabled all media access and downloads have to be done via authenticated endpoints. # while this option is enabled all media access and downloads have to be done via authenticated endpoints.

View File

@@ -9,7 +9,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`) for using s3-storage-provider. You need to define a required configuration setting (`{{ item }}`) for using s3-storage-provider.
when: "vars[item] == ''" when: "lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_synapse_ext_synapse_s3_storage_provider_config_bucket" - "matrix_synapse_ext_synapse_s3_storage_provider_config_bucket"
- "matrix_synapse_ext_synapse_s3_storage_provider_config_region_name" - "matrix_synapse_ext_synapse_s3_storage_provider_config_region_name"
@@ -19,7 +19,7 @@
ansible.builtin.fail: ansible.builtin.fail:
msg: >- msg: >-
You need to define a required configuration setting (`{{ item }}`) for using s3-storage-provider. You need to define a required configuration setting (`{{ item }}`) for using s3-storage-provider.
when: "not matrix_synapse_ext_synapse_s3_storage_provider_config_ec2_instance_profile | bool and vars[item] == ''" when: "not matrix_synapse_ext_synapse_s3_storage_provider_config_ec2_instance_profile | bool and lookup('vars', item, default='') == ''"
with_items: with_items:
- "matrix_synapse_ext_synapse_s3_storage_provider_config_access_key_id" - "matrix_synapse_ext_synapse_s3_storage_provider_config_access_key_id"
- "matrix_synapse_ext_synapse_s3_storage_provider_config_secret_access_key" - "matrix_synapse_ext_synapse_s3_storage_provider_config_secret_access_key"

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