Skip to content

Commit f6fb517

Browse files
Merge branch 'master' into add-docker-userns-support
2 parents f825370 + 9e205d5 commit f6fb517

File tree

251 files changed

+4226
-1047
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

251 files changed

+4226
-1047
lines changed

.codespellrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[codespell]
2+
ignore-words-list = aNULL,brose,doub,Udo,re-use,re-used,registr

.envrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
use flake
1+
use flake

.github/renovate.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
"customManagers": [
1010
{
1111
"customType": "regex",
12-
"fileMatch": [
13-
"defaults/main.yml$"
12+
"managerFilePatterns": [
13+
"/defaults/main.yml$/"
1414
],
1515
"matchStrings": [
1616
"# renovate: datasource=(?<datasource>[a-z-.]+?) depName=(?<depName>[^\\s]+?)(?: (?:lookupName|packageName)=(?<packageName>[^\\s]+?))?(?: versioning=(?<versioning>[a-z-0-9]+?))?\\s+[A-Za-z0-9_]+?(?:_version|_tag)\\s*:\\s*[\"']?(?<currentValue>.+?)[\"']?\\s"
@@ -20,6 +20,7 @@
2020
"packageRules": [
2121
{
2222
"ignoreUnstable": false,
23+
"versioning": "loose",
2324
"matchSourceUrls": [
2425
"https://github.com/devture/com.devture.ansible.role{/,}**",
2526
"https://github.com/mother-of-all-self-hosting{/,}**"
@@ -28,5 +29,8 @@
2829
],
2930
"ignoreDeps": [
3031
"ghcr.io/matrixgpt/matrix-chatgpt-bot"
31-
]
32+
],
33+
"pre-commit": {
34+
"enabled": true
35+
}
3236
}

.github/workflows/matrix.yml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
---
88
name: Matrix CI
99

10-
on: # yamllint disable-line rule:truthy
11-
push:
12-
pull_request:
10+
on: [push, pull_request] # yamllint disable-line rule:truthy
1311

1412
jobs:
1513
yamllint:
@@ -26,7 +24,19 @@ jobs:
2624
steps:
2725
- name: Check out
2826
uses: actions/checkout@v4
27+
2928
- name: Run ansible-lint
30-
uses: ansible-community/ansible-lint[email protected]
29+
uses: ansible/ansible-lint@v25.6.1
3130
with:
32-
path: roles/custom
31+
args: "roles/custom"
32+
setup_python: "true"
33+
working_directory: ""
34+
requirements_file: requirements.yml
35+
precommit:
36+
name: Run pre-commit
37+
runs-on: ubuntu-latest
38+
steps:
39+
- name: Checkout code
40+
uses: actions/checkout@v4
41+
- name: Run pre-commit
42+
uses: pre-commit/[email protected]

.github/workflows/reuse.yml

Lines changed: 0 additions & 20 deletions
This file was deleted.

.pre-commit-config.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
default_install_hook_types: [pre-push]
3+
4+
exclude: "LICENSES/"
5+
6+
# See: https://pre-commit.com/hooks.html
7+
repos:
8+
- repo: https://github.com/pre-commit/pre-commit-hooks
9+
rev: v5.0.0
10+
hooks:
11+
# - id: check-executables-have-shebangs
12+
- id: check-added-large-files
13+
- id: check-case-conflict
14+
- id: check-json
15+
- id: check-toml
16+
- id: trailing-whitespace
17+
- id: end-of-file-fixer
18+
- repo: https://github.com/codespell-project/codespell
19+
rev: v2.4.1
20+
hooks:
21+
- id: codespell
22+
args: ["--skip=*.po,*.pot,i18n/"]
23+
- repo: https://github.com/fsfe/reuse-tool # https://reuse.software/dev/#pre-commit-hook
24+
rev: v5.0.2
25+
hooks:
26+
- id: reuse

CHANGELOG.md

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
# 2025-04-26
2+
3+
## Continuwuity support
4+
5+
Thanks to [Virkkunen](https://github.com/Virkkunen), we now have optional experimental [Continuwuity](./docs/configuring-playbook-continuwuity.md) homeserver support.
6+
7+
Continuwuity is a fork of [conduwuit](./docs/configuring-playbook-conduwuit.md), which the playbook also supports. It appears that conduwuit has been abandoned and various forks (like Continuwuity, [Tuwunel](https://github.com/matrix-construct/tuwunel) and possibly others) are continuing in its path.
8+
9+
Existing installations do **not** need to be updated. **Synapse is still the default homeserver implementation** installed by the playbook.
10+
11+
People that used to run conduwuit, may wish to:
12+
13+
- either [migrate from conduwuit to Continuwuity](./docs/configuring-playbook-continuwuity.md#migrating-from-conduwuit)
14+
- or wait for some of the other forks to progress and for support for them to get added to the playbook
15+
16+
**The homeserver implementation of an existing server cannot be changed** (e.g. from Synapse/Conduit/Dendrite to Continuwuity) without data loss.
17+
18+
119
# 2025-04-09
220

321
## Element Call frontend installation is now optional
@@ -138,7 +156,7 @@ To **completely eliminate the problem** of DDoS amplification attacks done throu
138156

139157
The playbook now **only exposes the Coturn STUN port (`3478`) over TCP by default**.
140158

141-
💡 Users may wish to further remove the (now unnnecessary) firewall rule allowing access to `3478/udp`.
159+
💡 Users may wish to further remove the (now unnecessary) firewall rule allowing access to `3478/udp`.
142160

143161
If you'd like the Coturn STUN port to be exposed over UDP like before, you can revert to the previous behavior by using the following configuration in your `vars.yml` file:
144162

@@ -152,7 +170,7 @@ matrix_coturn_container_stun_plain_host_bind_port_udp: "3478"
152170

153171
# 2025-02-17
154172

155-
## FluffyChat Web suport
173+
## FluffyChat Web support
156174

157175
Thanks to [Aine](https://gitlab.com/etke.cc) of [etke.cc](https://etke.cc/), the playbook now supports [FluffyChat Web](https://github.com/krille-chan/fluffychat) as an additional Matrix client you can self-host.
158176

@@ -174,7 +192,7 @@ The playbook will let you know if you're using any `matrix_mautrix_hangouts_*` v
174192

175193
## Redis and KeyDB are no longer part of the playbook
176194

177-
**TLDR**: The playbook now exclusively uses Valkey as its Redis-compatible memorystore implementation, removing support for Redis and KeyDB. Most users are unaffected by this change unless they explicitly configured Redis or KeyDB variables. Only users that were explicitly definining `redis_*` or `keydb_*` variables will need to update their configuration to use `valkey_*` variables instead.
195+
**TLDR**: The playbook now exclusively uses Valkey as its Redis-compatible memorystore implementation, removing support for Redis and KeyDB. Most users are unaffected by this change unless they explicitly configured Redis or KeyDB variables. Only users that were explicitly defining `redis_*` or `keydb_*` variables will need to update their configuration to use `valkey_*` variables instead.
178196

179197
The playbook has gone through several iterations of memorystore implementations:
180198

@@ -727,7 +745,7 @@ For people building commercial products on top of Synapse, they may have to eith
727745

728746
We're no lawyers and this changelog entry does not aim to give you the best legal advice, so please research on your own!
729747

730-
If you'd like to continue using the old Apache-2.0-licensed Synapse (for a while longer anyway), the playbook makes it possible by intruducing a new Ansible variable. You can do it like this:
748+
If you'd like to continue using the old Apache-2.0-licensed Synapse (for a while longer anyway), the playbook makes it possible by introducing a new Ansible variable. You can do it like this:
731749

732750
```yaml
733751
# Switch the organization that Synapse container images (or source code for self-building) are pulled from.
@@ -810,7 +828,7 @@ Despite these downsides (which the playbook manages automatically), we believe i
810828

811829
People running the default Traefik setup do not need to do anything to make Traefik take on this extra job. Your Traefik configuration will be updated automatically.
812830

813-
**People runnning their own Traefik reverse-proxy need to do [minor adjustments](#people-managing-their-own-traefik-instance-need-to-do-minor-changes)**, as described in the section below.
831+
**People running their own Traefik reverse-proxy need to do [minor adjustments](#people-managing-their-own-traefik-instance-need-to-do-minor-changes)**, as described in the section below.
814832

815833
You may disable Traefik acting as an intermediary by explicitly setting `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_enabled` to `false`. Services would then be configured to talk to the homeserver directly, giving you a slight performance boost and a "simpler" Traefik setup. However, such a configuration is less tested and will cause troubles, especially if you enable more services (like `matrix-media-repo`, etc.) in the future. As such, it's not recommended.
816834

@@ -2833,7 +2851,7 @@ As always, re-running the playbook is enough to get the updated bits.
28332851

28342852
## SMS bridging requires db reset
28352853

2836-
The current version of [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) needs you to delete the database to work as expected. Just remove `/matrix/matrix-sms-bridge/database/*`. It also adds a new requried var `matrix_sms_bridge_default_region`.
2854+
The current version of [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) needs you to delete the database to work as expected. Just remove `/matrix/matrix-sms-bridge/database/*`. It also adds a new required var `matrix_sms_bridge_default_region`.
28372855

28382856
To reuse your existing rooms, invite `@smsbot:yourServer` to the room or write a message. You are also able to use automated room creation with telephonenumers by writing `sms send -t 01749292923 "Hello World"` in a room with `@smsbot:yourServer`. See [the docs](https://github.com/benkuly/matrix-sms-bridge) for more information.
28392857

@@ -2865,7 +2883,7 @@ Until the issue gets fixed, we're making User Directory search not go to ma1sd b
28652883

28662884
This upgrades matrix-appservice-irc from 0.14.1 to 0.16.0. Upstream
28672885
made a change to how you define manual mappings. If you added a
2868-
`mapping` to your configuration, you will need to update it accoring
2886+
`mapping` to your configuration, you will need to update it according
28692887
to the [upstream
28702888
instructions](https://github.com/matrix-org/matrix-appservice-irc/blob/master/CHANGELOG.md#0150-2020-02-05). If you did not include `mappings` in your configuration for IRC, no
28712889
change is necessary. `mappings` is not part of the default
@@ -3028,7 +3046,7 @@ As per this [advisory blog post](https://matrix.org/blog/2019/11/09/avoiding-unw
30283046

30293047
Our general goal is to favor privacy and security when running personal (family & friends) and corporate homeservers. Both of these likely benefit from having a more secure default of **not showing the room directory without authentication** and **not publishing the room directory over federation**.
30303048

3031-
As with anything else, these new defaults can be overriden by changing the `matrix_synapse_allow_public_rooms_without_auth` and `matrix_synapse_allow_public_rooms_over_federation` variables, respectively.
3049+
As with anything else, these new defaults can be overridden by changing the `matrix_synapse_allow_public_rooms_without_auth` and `matrix_synapse_allow_public_rooms_over_federation` variables, respectively.
30323050

30333051

30343052
# 2019-10-05
@@ -3582,7 +3600,7 @@ The following changes had to be done:
35823600

35833601
- glue variables had to be introduced to the playbook, so it can wire together the various components. Those glue vars are stored in the [`group_vars/matrix-servers`](group_vars/matrix-servers) file. When overriding variables for a given component (role), you need to be aware of both the role defaults (`role/ROLE/defaults/main.yml`) and the role's corresponding section in the [`group_vars/matrix-servers`](group_vars/matrix-servers) file.
35843602

3585-
- `matrix_postgres_use_external` has been superceeded by the more consistently named `matrix_postgres_enabled` variable and a few other `matrix_synapse_database_` variables. See the [Using an external PostgreSQL server (optional)](docs/configuring-playbook-external-postgres.md) documentation page for an up-to-date replacement.
3603+
- `matrix_postgres_use_external` has been superseded by the more consistently named `matrix_postgres_enabled` variable and a few other `matrix_synapse_database_` variables. See the [Using an external PostgreSQL server (optional)](docs/configuring-playbook-external-postgres.md) documentation page for an up-to-date replacement.
35863604

35873605
- Postgres tools (`matrix-postgres-cli` and `matrix-make-user-admin`) are no longer installed if you're not enabling the `matrix-postgres` role (`matrix_postgres_enabled: false`)
35883606

@@ -3771,7 +3789,7 @@ matrix_riot_web_integrations_jitsi_widget_url: "https://dimension.t2bot.io/widge
37713789

37723790
There's now a new `matrix_nginx_proxy_ssl_protocols` playbook variable, which controls the SSL protocols used to serve Riot and Synapse. Its default value is `TLSv1.1 TLSv1.2`. This playbook previously used `TLSv1 TLSv1.1 TLSv1.2` to serve Riot and Synapse.
37733791

3774-
You may wish to reenable TLSv1 if you need to access Riot in older browsers.
3792+
You may wish to re-enable TLSv1 if you need to access Riot in older browsers.
37753793

37763794
Note: Currently the dockerized nginx doesn't support TLSv1.3. See https://github.com/nginxinc/docker-nginx/issues/190 for more details.
37773795

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![Support room on Matrix](https://img.shields.io/matrix/matrix-docker-ansible-deploy:devture.com.svg?label=%23matrix-docker-ansible-deploy%3Adevture.com&logo=matrix&style=for-the-badge&server_fqdn=matrix.devture.com)](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) [![donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/s.pantaleev/donate) [![REUSE status](https://api.reuse.software/badge/github.com/spantaleev/matrix-docker-ansible-deploy)](https://api.reuse.software/info/github.com/spantaleev/matrix-docker-ansible-deploy)
1+
[![Support room on Matrix](https://img.shields.io/matrix/matrix-docker-ansible-deploy:devture.com.svg?label=%23matrix-docker-ansible-deploy%3Adevture.com&logo=matrix&style=for-the-badge&server_fqdn=matrix.devture.com&fetchMode=summary)](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) [![donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/s.pantaleev/donate) [![REUSE status](https://api.reuse.software/badge/github.com/spantaleev/matrix-docker-ansible-deploy)](https://api.reuse.software/info/github.com/spantaleev/matrix-docker-ansible-deploy)
22

33
# Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker
44

@@ -53,6 +53,7 @@ The homeserver is the backbone of your Matrix system. Choose one from the follow
5353
| [Synapse](https://github.com/element-hq/synapse) || Storing your data and managing your presence in the [Matrix](http://matrix.org/) network | [Link](docs/configuring-playbook-synapse.md) |
5454
| [Conduit](https://conduit.rs) || Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Conduit is a lightweight open-source server implementation of the Matrix Specification with a focus on easy setup and low system requirements | [Link](docs/configuring-playbook-conduit.md) |
5555
| [conduwuit](https://conduwuit.puppyirl.gay/) || Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit is a fork of Conduit. | [Link](docs/configuring-playbook-conduwuit.md) |
56+
| [continuwuity](https://continuwuity.org) || Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. continuwuity is a continuation of conduwuit. | [Link](docs/configuring-playbook-continuwuity.md) |
5657
| [Dendrite](https://github.com/element-hq/dendrite) || Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Dendrite is a second-generation Matrix homeserver written in Go, an alternative to Synapse. | [Link](docs/configuring-playbook-dendrite.md) |
5758

5859
### Clients

REUSE.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ path = [
1313
"i18n/PUBLISHED_LANGUAGES",
1414
"i18n/requirements.txt",
1515
"roles/custom/**/*.repo",
16+
".codespellrc",
1617
".editorconfig",
1718
".envrc",
1819
".gitattributes",
1920
".gitignore",
21+
".pre-commit-config.yaml",
2022
".yamllint",
2123
"ansible.cfg",
2224
"flake.lock",

YEAR-IN-REVIEW.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
1111

1212
2023 is probably [the year of AI](https://journal.everypixel.com/2023-the-year-of-ai), with millions of people jumping aboard [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/chatgpt) train. matrix-docker-ansible-deploy is no stranger to this and 2023 began with a PR from [bertybuttface](https://github.com/bertybuttface) who added support for [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#chatgpt-support)). While OpenAI's chat GPT website was frequently overloaded in the past, their API was up which made using this bot both convenient and more reliable.
1313

14-
AI aside, with the playbook's focus being containers, we're **doubling down on being "container native"** and becoming more interoperable for people hosting other containers on the Matrix server. In [2022](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/YEAR-IN-REVIEW.md#2022), we've announced a few sibling Ansible playbooks, their use of [Traefik](https://doc.traefik.io/traefik/) and the possiblity of matrix-docker-ansible-deploy also switching to this reverse-proxy. This prediction materialized quickly. The **largest change** in the playbook in 2023 happened way back in February - matrix-docker-ansible-deploy [starting the switch from nginx to Traefik](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-reverse-proxy-configuration-changes-and-initial-traefik-support) and then quickly [making Treafik the default reverse-proxy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#traefik-is-the-default-reverse-proxy-now). As noted in the changelog entries, we envisioned a quick and complete elimination of `matrix-nginx-proxy`, but at the end of 2023, it hasn't happened yet. The playbook is already using Traefik as the front-most reverse-proxy, but nginx (via `matrix-nginx-proxy`) is still around - it has taken a step back and is only used internally for new setups. Work got to a stall due to:
14+
AI aside, with the playbook's focus being containers, we're **doubling down on being "container native"** and becoming more interoperable for people hosting other containers on the Matrix server. In [2022](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/YEAR-IN-REVIEW.md#2022), we've announced a few sibling Ansible playbooks, their use of [Traefik](https://doc.traefik.io/traefik/) and the possibility of matrix-docker-ansible-deploy also switching to this reverse-proxy. This prediction materialized quickly. The **largest change** in the playbook in 2023 happened way back in February - matrix-docker-ansible-deploy [starting the switch from nginx to Traefik](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#backward-compatibility-reverse-proxy-configuration-changes-and-initial-traefik-support) and then quickly [making Treafik the default reverse-proxy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#traefik-is-the-default-reverse-proxy-now). As noted in the changelog entries, we envisioned a quick and complete elimination of `matrix-nginx-proxy`, but at the end of 2023, it hasn't happened yet. The playbook is already using Traefik as the front-most reverse-proxy, but nginx (via `matrix-nginx-proxy`) is still around - it has taken a step back and is only used internally for new setups. Work got to a stall due to:
1515

1616
* complexity: untangling the overly large and messy `matrix-nginx-proxy` component is difficult
1717
* the current setup became "good enough" because nginx has become an internal implementation detail for those who have migrated to Traefik. Traefik is already the default public reverse-proxy and gives better possibilities to people wishing to run other web-exposed containers on their Matrix server via [Docker Compose](https://docs.docker.com/compose/), other Ansible playbooks like [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) (more about this one, below) or any other way.

0 commit comments

Comments
 (0)