Commit graph

1026 commits

Author SHA1 Message Date
Slavi Pantaleev 6db3c8f2ad Announce Matrix Authentication Support for Jitsi
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2375
2023-02-10 14:26:41 +02:00
Slavi Pantaleev 01ccec2dbe Merge branch 'master' into pr-jitsi-matrix-authentication 2023-02-10 14:12:47 +02:00
Slavi Pantaleev 600aaa0bc7 Announce Draupnir support
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2451
2023-02-10 11:52:31 +02:00
Slavi Pantaleev 7cdf59d79b
Merge pull request #2451 from FSG-Cat/draupnir
Add Draupnir support to the project.
2023-02-10 11:43:30 +02:00
Slavi Pantaleev 0a15e56641
Fix typo 2023-02-10 11:41:44 +02:00
ntallasv 4221b64a98 update configuring-playbook-bot-chatgpt.md 2023-02-10 00:14:09 +02:00
Catalan Lover 79a4e57fbd
Add draupnir docs. 2023-02-08 18:55:27 +01:00
Paul N 70bea81df7 Introduced flags to (1) enable/disable Auth (2) enable/disable openid_server_name pinning. Updated validate_config.yml and added new checks to verify. 2023-02-06 15:59:32 +01:00
Paul N 96dd86d33b Set default values where sensible and remove unnecessary conditionals in .env.j2.
Check for empty string instead of Null to verify if an openid_server_name is pinned.
2023-02-06 15:26:08 +01:00
Paul N 1d99f17b4a Disable matrix-user-verification-service in group_vars and update docs accordingly. 2023-02-06 13:23:11 +01:00
Paul N 50c1e9d695 Set matrix_user_verification_service_uvs_homeserver_url in the role defaults and updated docs accordingly. 2023-02-06 13:14:34 +01:00
Paul N 07d9ea5e87 Stick to port 3003 instead of changing the port based on the status of grafana. 2023-02-06 13:06:35 +01:00
jakicoll 94830b582b Wording: change collection -> playbook 2023-02-06 11:58:50 +01:00
Slavi Pantaleev be78b74fbd Switch from matrix-prometheus-postgres-exporter to an external prometheus_postgres_exporter role 2023-02-05 10:32:09 +02:00
Slavi Pantaleev 9ed2e04d80 Switch from matrix-prometheus-node-exporter to an external prometheus_node_exporter role 2023-01-21 11:07:04 +02:00
Slavi Pantaleev b7b5c7edb7 Improve s3-storage-provider migration steps visibility 2023-01-19 17:16:21 +02:00
Slavi Pantaleev 4ec602983f Remove scary synapse-s3-storage-provider warning 2023-01-19 17:14:02 +02:00
Slavi Pantaleev 910c99d03d Improve "Copying data to Amazon S3" documentation for synapse-s3-storage-provider 2023-01-19 17:14:02 +02:00
Slavi Pantaleev 36ef2c6131 Do not recommend SSE-C in default s3-storage-provider config
This is an advanced feature with dubious usefulness.
Putting it in the default config just confuses people.

Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2220
2023-01-19 17:14:02 +02:00
Array in a Matrix ecb173c8d4
Update installing.md 2023-01-18 10:30:09 -05:00
Slavi Pantaleev a529bca756 Add justfile
We keep the Makefile for now, but don't mention it to new
users anymore.
2023-01-11 15:12:05 +02:00
Slavi Pantaleev 275a739b22 Announce maurtix-slack
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2227
2023-01-11 10:38:54 +02:00
Slavi Pantaleev 4e40ac5ad8
Merge pull request #2227 from xangelix/add-matrix-mautrix-slack-role
Add matrix-bridge-mautrix-slack role
2023-01-11 10:35:45 +02:00
Slavi Pantaleev 20558589cb Announce matrix-bot-chatgpt
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2386
2023-01-10 17:31:21 +02:00
Slavi Pantaleev 226d81318a Merge branch 'bertybuttface-master' 2023-01-10 17:27:42 +02:00
Slavi Pantaleev a96a22c925 chatgpt docs updates 2023-01-10 17:26:59 +02:00
Slavi Pantaleev 9ecca2cbb9 Update documentation with more chatgpt mentions 2023-01-10 17:22:54 +02:00
bertybuttface 0ec1868b95 Add matrix-bot-chatgpt.
Co-Authored-By: Slavi Pantaleev <slavi@devture.com>
2023-01-10 13:57:38 +00:00
Slavi Pantaleev d2416365d2
Merge pull request #2220 from xangelix/synapse-s3-sse-c
Add S3 SSE-C config support for synapse-s3-storage-provider
2023-01-10 09:25:11 +02:00
Cody Wyatt Neiman fc9eaa6ec5
Remove git version for s3 storage provider 2023-01-09 15:52:38 -05:00
James Collier 36d8ea281c
Allow the mautrix whatsapp relaybot to be enabled with a variable (#2381)
* Allow the mautrix whatsapp relaybot to be enable with a variable

This allows a user to enable the relaybot by setting a variable in
`vars.yml` in the same way that the mautrix signal relaybot is
configured.

* Correct default values for mautrix whatsapp relaybot variables

* Add documentation for using the relaybot with mautrix whatsapp

* Adjust variable names to better reflect what they do

* Set default variables properly and use to_json in template
2023-01-06 11:09:07 +02:00
jakicoll 42e4e50f5b Matrix Authentication Support for Jitsi
This extends the collection with support for seamless authentication at the Jitsi server using Matrix OpenID.

1. New role for installing the [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service)
2. Changes to Jitsi role: Installing Jitsi Prosody Mods and configuring Jitsi Auth
3. Changes to Jitsi and nginx-proxy roles: Serving .well-known/element/jitsi from jitsi.DOMAIN
4. We updated the Jitsi documentation on authentication and added documentation for the user verification service.
2023-01-04 14:27:16 +01:00
Cody Wyatt Neiman 3a28b7e332
Specify version requirement for sse-c in s3 storage provider 2023-01-03 18:01:15 -05:00
Cody Wyatt Neiman 7e5e1712f5
Encode s3 sse-c key for utf-8 2023-01-03 17:53:33 -05:00
Cody Wyatt Neiman b9604da9d9
Add note on using synapse s3 provider git version for sse-c support 2023-01-03 15:26:06 -05:00
Cody Wyatt Neiman 533e47e9b9
Add documentation on using s3 sse-c 2023-01-03 15:16:55 -05:00
Cody Wyatt Neiman 94474e387a
Fix mautrix slack doc typos and clarifications 2023-01-03 12:53:57 -05:00
Cody Wyatt Neiman 1c6ab4a1bc
Update documentation for mautrix slack 2023-01-03 12:33:09 -05:00
Cody Wyatt Neiman 784e5492d5
Add matrix-bridge-mautrix-slack role 2023-01-02 19:13:17 -05:00
Slavi Pantaleev 77bb386adc Upgrade devture/ansible (2.13.6-r0 -> 2.13.6-r0-1)
This is a rebuild on Alpinelinux 3.17.0 (previously 3.16.2).
The new container image tag was pushed for arm32 and arm64 architectures
as well (2.13.6-r0 was `amd64`-only due to CI trouble in the past).

Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2353
2022-12-21 18:47:38 +02:00
Slavi Pantaleev 362954aeab Remove warning which no longer applies
This warning was added because of:
https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2090

The problem has since been fixed by:
e9e84341a9

This current patch was provoked by:
https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2352
2022-12-20 11:24:20 +02:00
Slavi Pantaleev d4a8435fa2 Try to improve own-webserver docs a bit
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2351
2022-12-20 10:32:14 +02:00
Fanch a3ec2f3215
Specify relation between matrix-registration and matrix-registration-bot 2022-12-12 15:18:05 +01:00
Slavi Pantaleev d81e7d6328 Make matrix_synapse_ext_synapse_s3_storage_provider_config_endpoint_url required
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2330
2022-12-10 10:37:01 +02:00
Slavi Pantaleev 6a5a09ba9b Remove matrix-change-user-admin-status mentions and provide an alternative 2022-12-07 20:36:28 +02:00
Rhys fd79140201
Changes to allow a user to set the max participants on a jitsi conference (#2323)
* Changes to allow a user to set the max participants on a jitsi
conference

* changed var name from jitsi_max_participants to matrix_prosody_jitsi_max_participants
2022-12-07 17:54:58 +02:00
ikkemaniac 8ebf18a885
add prometheus-nginxlog-exporter role (#2315)
* add prometheus-nginxlog-exporter role

* Rename matrix_prometheus_nginxlog_exporter_container_url to matrix_prometheus_nginxlog_exporter_container_hostname

* avoid referencing variables from other roles, handover info using group_vars/matrix_servers

* fix: stop service when uninstalling

fix: typo

move available arch's into a var

fix: text

* fix: prometheus enabled condition

Co-authored-by: ikkemaniac <ikkemaniac@localhost>
2022-12-07 16:58:36 +02:00
Slavi Pantaleev 9ab2a72e86 More matrix_postgres -> devture_postgres changes
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2319
2022-12-06 10:12:31 +02:00
Slavi Pantaleev 86b436792d
Merge pull request #2319 from felixx9/master
matrix_ to devture_
2022-12-06 10:11:53 +02:00
felixx9 7f2cdd9889
matrix_ to devture_
I'm not sure, but this should be changed to devture_postgres_... !?
https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/CHANGELOG.md#2022-11-28

```yaml
matrix_postgres_process_extra_arguments: [
  "-c 'max_connections=200'"
]
```
2022-12-06 08:47:54 +01:00
Slavi Pantaleev 7b123907e0 Fix borg repository URL format
Reference: https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls

Otherwise, we'd get:

> /etc/borgmatic.d/config.yaml: Remote repository paths without ssh:// syntax are deprecated. Interpreting "user@hostname:matrix" as "ssh://user@hostname/./matrix"
2022-12-05 15:15:47 +02:00
Slavi Pantaleev 4eed49f931 Replace custom/matrix-postgres-backup role with galaxy/com.devture.ansible.role.postgres_backup
This role is usable on its own and it's not tied to Matrix, so
extracting it out into an independent role that we install via
ansible-galaxy makes sense.

This also fixes the confusion from the other day, where
`matrix_postgres_*` had to be renamed to `devture_postgres_*`
(unless it was about `matrix_postgres_backup_*`).
We now can safely say that ALL `matrix_postgres_*` variables need to be
renamed.

Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2305
2022-11-30 11:01:19 +02:00
Slavi Pantaleev 7e2e2626a0 Make hookshot variable names consistent with the rest of the playbook
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2256
2022-11-30 08:13:39 +02:00
László Várady 3424a1169d Fix Docker installation typo in FAQ 2022-11-30 02:45:00 +01:00
Slavi Pantaleev fb86f6d5e7 /usr/local/bin/matrix-remove-all -> /matrix/bin/remove-all 2022-11-27 09:47:02 +02:00
Slavi Pantaleev 7c5c3aedc4 Put s3-storage-provider scripts under /matrix/synapse/ext/s3-storage-provider/bin, not /usr/local/bin 2022-11-27 09:38:34 +02:00
Slavi Pantaleev 72744f9db9 /usr/local/bin/matrix-synapse-register-user -> /matrix/synapse/bin/register-user 2022-11-27 09:26:18 +02:00
Slavi Pantaleev 7b43ef34b7 Remove more hardcoded matrix-postgres references 2022-11-27 09:16:18 +02:00
Slavi Pantaleev 04b9483f0d Switch from matrix-postgres to com.devture.ansible.role.postgres 2022-11-27 08:04:31 +02:00
Slavi Pantaleev 9427f9408d
Merge pull request #2298 from pub-solar/docs/synapse-oidc-keycloak
Update docs on how to use synapse & keycloak OIDC
2022-11-26 17:23:31 +02:00
teutat3s e9765ae4a5
Update docs on how to use synapse & keycloak OIDC
Use up-to-date example from synapse docs

Add link to keycloak website

Add link to synapse docs on OIDC
2022-11-26 16:16:56 +01:00
Slavi Pantaleev fe4c2d73f4 Update Ansible version requirements
Tests were carried out like this:

- `virtualenv3 env`
- `./env/bin/pip install ansible==4.10.0 ansible-core==2.11.7`
- `./env/bin/ansible-playbook .....`

The lowest version of `ansible-core` available on PyPI right now is
2.11.0. That version has trouble with `ansible==4.0.0` though.
The errors we were hitting seemed to be resolved by others online by
using `ansible==4.10.0` instead, which has a minimum `ansible-core`
requirement of `2.11.7`, so that's what we went with.

Older versions of Ansible may work, but.. I'm having trouble
installing them and don't want to spend too much time on digging through
ancient versions and testing them out. People should just learn to run
up-to-date software.
2022-11-26 16:45:07 +02:00
Array in a Matrix 504d4a4134
Add dendrite captcha config to doc and hCaptcha (#2290)
* added dendrite captcha options

* added hcaptcha doc

* proper url

* Apply suggestions from code review

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update main.yml

* renamed captcha vars to new naming scheme

* change vars to new format

* Rename back some incorrect renamed variables

These variables are either not just part of the `client_api` subsection,
or are not even part of that section at all. They shouldn't have been
renamed in baaef2ed616e2645550d9

* Fix up naming inconsistencies

Some of these variables had been renamed in one place,
but not in other places, so it couldn't have worked that way.

* Add validation/deprecation for renamed Dendrite variables

Related to 4097898f885cf4c73, baaef2ed616e2645550, 68f4418092fa8ad
and a0b4a0ae6b2f1f18

Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2022-11-26 09:27:43 +02:00
Slavi Pantaleev 8456657f21 Announce install-* tags 2022-11-25 16:15:19 +02:00
Jaden Down 86f495f461
Add service declaration to sample traefik config 2022-11-23 19:08:52 -06:00
Slavi Pantaleev 735bacca89 Do not run matrix-nginx-proxy config injection tasks unless necessary
These `init.yml` (now `inject_into_nginx_proxy.yml`) tasks do not need
to `always` run. They only need to run for `setup-all` and
`setup-nginx-proxy`. Unless we're dealing with these 2 tags, we can
spare ourselves a lot of work.

This patch also moves the `when` statement from `init.yml` into
`main.yml` in an effort to further optimize things by potentially
avoiding the extra file include.
2022-11-23 15:52:58 +02:00
Array in a Matrix 3505f62f02
Update configuring-playbook-telemetry.md 2022-11-22 11:37:46 -05:00
Array in a Matrix 6c39413e79
Update configuring-playbook-telemetry.md 2022-11-22 11:32:03 -05:00
Array in a Matrix 26c219e1cc
Update configuring-playbook-telemetry.md 2022-11-22 11:30:19 -05:00
Slavi Pantaleev 2ad6bd87c7 Determine matrix_architecture automatically 2022-11-22 09:22:56 +02:00
Slavi Pantaleev d8f2141eb0 Install Docker via geerlingguy.docker Galaxy role 2022-11-22 09:01:26 +02:00
Slavi Pantaleev 377e703746 Fixup Traefik example configuration
Related to e9e84341a9
2022-11-20 18:01:44 +02:00
Slavi Pantaleev e9e84341a9 Reverse-proxy to Synapse via matrix-synapse-reverse-proxy-companion
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2090
2022-11-20 16:43:33 +02:00
Array in a Matrix 7cc668489b
add auto join option to dendrite config (#2255)
* add auto join option to dendrite config

* added   auto_join_rooms: variable

* added "configuring dendrite" entry

* created dendite configuration documentation

* fixed config path

* Update docs/configuring-playbook-dendrite.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-dendrite.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-dendrite.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-dendrite.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-dendrite.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update roles/custom/matrix-dendrite/defaults/main.yml

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* correction

Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2022-11-20 10:11:21 +02:00
Warren Bailey 84c74136ea
Provision extra Jitsi JVB services on additional hosts (#2166)
* Add task to configure a standalone JVB on a different server

* add missing file

* set nginx config

* update prosody file and expose port 5222

* change variable name to server id

* formatting change

* use server id of jvb-1 for the main server

* adding documentation

* adding more jvbs

* rename variable

* revert file

* fix yaml error

* minor doc fixes

* renaming tags and introducing a common tag

* remove duplicates

* add mapping for jvb to hostname/ip

* missed a jvb_server

* Update roles/matrix-nginx-proxy/templates/nginx/conf.d/matrix-jitsi.conf.j2

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* PR review comments and additional documentation

* iterate on dict items

* Update docs/configuring-playbook-jitsi.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-jitsi.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-jitsi.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-jitsi.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-jitsi.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-jitsi.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* Update docs/configuring-playbook-jitsi.md

Co-authored-by: Slavi Pantaleev <slavi@devture.com>

* adding documentation around the xmpp setting

* add common after

* reduce the number of services during init of the additional jvb

* remove rogue i

* revert change to jitsi init as it's needed

* only run the jvb service on the additional jvb host

* updating docs

* reset default and add documentation about the websocket port

* fix issue rather merge with master

* add missing role introduced in master

* this role is required too

* Adding new jitsi jvb playbook, moving setup.yml to matrix.yml and creating soft link

* updating documentation

* revert accidental change to file

* add symlink back to roles to aid running of the jitsi playbook

* Remove extra space

* Delete useless playbooks/roles symlink

* Remove blank lines

Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2022-11-18 14:00:27 +02:00
Slavi Pantaleev 494d015e82
Merge pull request #2250 from felixx9/patch-4
add how to integrate
2022-11-16 11:56:34 +02:00
Slavi Pantaleev 9c2dedfdeb
Reorganize a bit 2022-11-16 11:56:22 +02:00
Slavi Pantaleev 40e8ef0c70 Do not tell people to use latest Borgmatic - it won't help with Postgres v15
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2259#issuecomment-1312737960
2022-11-16 11:50:05 +02:00
throny f5a09f30b7
Update maintenance-postgres.md 2022-11-12 23:48:57 +01:00
throny b12cdbd99d
Update maintenance-postgres.md 2022-11-12 23:40:46 +01:00
throny adbc09f152
warn users about upgrading to pg15 when using borg 2022-11-12 11:20:43 +01:00
felixx9 98d2df5fcf
more details,
hopefully better understandable wording. To write docs I need to learn a new language (feels like it)
2022-11-12 00:31:39 +01:00
felixx9 707fb564de
add how to integrate
describe, how to integrate a pad
2022-11-09 12:49:20 +01:00
Slavi Pantaleev fa11d5af2b
Merge pull request #2222 from array-in-a-matrix/master
Document login to Discord using token
2022-11-09 09:10:04 +02:00
Slavi Pantaleev 06df2df9e9 Mention playbook ownership issues when running Ansible in a container and potential workarounds
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2248
2022-11-09 09:01:58 +02:00
Slavi Pantaleev 32e5c814e4 Update containerized Ansible tag and make documentation about "make roles" clearer
`devture/ansible:2.13.6-r0` contains the `make` utility.
(8597fd8272)

Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2248
2022-11-09 08:46:49 +02:00
Abílio Costa a93d733bd3
Remove repeated quote in mautrix-discord docs 2022-11-06 21:38:27 +00:00
Slavi Pantaleev 13b63eabf0
Merge pull request #2229 from etkecc/make-etherpad-great-again
standalone etherpad
2022-11-05 11:54:51 +02:00
Slavi Pantaleev 805b70bfa3 Announce standalone Etherpad 2022-11-05 11:47:47 +02:00
Aine 06eb186729
add matrix_etherpad_mode 2022-11-05 09:17:47 +02:00
Slavi Pantaleev 7289992dba Document make roles some more
Improves:

- https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2232
- https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/2217#issuecomment-1304366791
2022-11-05 07:10:04 +02:00
Aine 9b97957022
Merge branch 'master' into make-etherpad-great-again 2022-11-04 17:36:15 +02:00
Slavi Pantaleev c3a7237de7 Initial work on using externally defined roles 2022-11-04 14:58:28 +02:00
Aine 83c40fce15
standalone etherpad 2022-11-04 11:36:10 +02:00
Slavi Pantaleev 410a915a8a Move roles/matrix* to roles/custom/matrix*
This paves the way for installing other roles into `roles/galaxy` using `ansible-galaxy`,
similar to how it's done in:

- https://github.com/spantaleev/gitea-docker-ansible-deploy
- https://github.com/spantaleev/nextcloud-docker-ansible-deploy

In the near future, we'll be removing a lot of the shared role code from here
and using upstream roles for it. Some of the core `matrix-*` roles have
already been extracted out into other reusable roles:

- https://github.com/devture/com.devture.ansible.role.postgres
- https://github.com/devture/com.devture.ansible.role.systemd_docker_base
- https://github.com/devture/com.devture.ansible.role.timesync
- https://github.com/devture/com.devture.ansible.role.vars_preserver
- https://github.com/devture/com.devture.ansible.role.playbook_runtime_messages
- https://github.com/devture/com.devture.ansible.role.playbook_help

We just need to migrate to those.
2022-11-03 09:11:29 +02:00
array-in-a-matrix fe360d7f99 added missing comma 2022-11-01 11:08:10 -04:00
Slavi Pantaleev eaa9b7cfc4 Add automatic user account creation support to Buscarron
Continuation of c3dc64b1d5
2022-11-01 17:03:53 +02:00
array-in-a-matrix 34873da3fd moved login instructions to useage 2022-11-01 10:58:05 -04:00
Slavi Pantaleev c3dc64b1d5 Add matrix-user-creator role - automatic user account creation support
We no longer ask users to create Matrix user accounts for these bots:

- Postmoogle
- Honoroit
- Reminder Bot

Other bots and services (matrix-registration-bot, maubot, mjolnir,
Dimension, etc.) require an Access Token to run (not a password),
so this new role doesn't help for them.

It does help for the above bots though, and for defining your own
"initial user accounts" in the `matrix_user_creator_users_additional`
variable.
2022-11-01 16:22:58 +02:00
array-in-a-matrix 96b923e3aa typo 2022-10-31 14:19:20 -04:00